Skip to content

Suggested merge order for rc2 #312

Description

@fdcastel

The open PRs for an rc2 and the order in which they merge cleanly, smallest and most isolated first. This list used to live in a comment on #302; it is kept up to date here as PRs open and merge.

  1. Fix SQLPrepare discarding SQL_ATTR_ROWS_FETCHED_PTR and SQL_ATTR_ROW_STATUS_PTR (#301) #303 — two lines in OdbcDesc.cpp (setDefaultImplDesc), plus a regression test. Fixes SQLPrepare discards SQL_ATTR_ROWS_FETCHED_PTR and SQL_ATTR_ROW_STATUS_PTR set before it, so block cursors never learn how many rows a fetch returned #301.
  2. Return the settable pointer attributes and SQL_ATTR_CURSOR_SCROLLABLE from SQLGetStmtAttr #304 — eight case lines in sqlGetStmtAttr (OdbcStatement.cpp), plus a round-trip test.
  3. tests: rowset fetches on every fetch path and binding layout #305 — tests only, stacked on Fix SQLPrepare discarding SQL_ATTR_ROWS_FETCHED_PTR and SQL_ATTR_ROW_STATUS_PTR (#301) #303; one commit once Fix SQLPrepare discarding SQL_ATTR_ROWS_FETCHED_PTR and SQL_ATTR_ROW_STATUS_PTR (#301) #303 is in.
  4. Apply the bind offset to column-wise rowsets instead of taking the row-wise path (#306) #315 — column-wise rowsets with a bind offset, stacked on tests: rowset fetches on every fetch path and binding layout #305; two commits in fetchData, its static-cursor twin and returnDataFromExtendedFetch. Fixes Column-wise binding with SQL_ATTR_ROW_BIND_OFFSET_PTR writes every row of a rowset to the same address #306.
  5. Keep SQL_ATTR_KEYSET_SIZE apart from the rowset size; HY007 for an unprepared IRD (#307) #314 — SQL_ATTR_KEYSET_SIZE kept apart from the rowset size, HY007 for an unprepared IRD; three commits on master. Fixes SQL_ATTR_KEYSET_SIZE overwrites the rowset size; SQLGetDescField on an unprepared IRD answers HY091 instead of HY007 #307.
  6. Implementation descriptors and SQLColAttribute report the columns and parameters they describe (#316) #317 — implementation descriptors and SQLColAttribute report what they describe, stacked on Keep SQL_ATTR_KEYSET_SIZE apart from the rowset size; HY007 for an unprepared IRD (#307) #314; ten commits, tests first, in OdbcDesc.cpp, OdbcDesc.h, sqlColAttribute in OdbcStatement.cpp and the two SQLColAttribute entry points in Main.cpp and MainUnicode.cpp. Fixes Implementation descriptors: records empty until the first bind or execute, raw type fields, 32-bit length writes; SQLColAttribute type fields #316.
  7. Fix numeric parameters silently sent as NULL after a character-typed bind (#300) #302 — one commit: describe an INPUT parameter's precision from the prepare-time snapshot. Fixes SQL_BIGINT parameter: once a NULL has been bound with a character C type (SQL_C_DEFAULT or SQL_C_CHAR), later SQL_C_SBIGINT rebinds on that parameter write NULL #300.
  8. Fix column-wise parameter arrays reading element 0 for fixed-length C types (#299) #308 — parameter arrays: three commits, tests first; 22 driver lines in bindInputOutputParam, sqlExecute / sqlExecDirect and getConciseSize. Fixes Parameter arrays: fixed-length C types use BufferLength as the element stride, so every row receives element 0 (silent data corruption) #299.
  9. Honour SQL_ATTR_PARAM_OPERATION_PTR in parameter-array execution #310 — SQL_ATTR_PARAM_OPERATION_PTR, stacked on Fix column-wise parameter arrays reading element 0 for fixed-length C types (#299) #308; two commits, one function.
  10. Return the cumulative row count after a parameter-array execute #311 — cumulative SQLRowCount after an array execute, stacked on Honour SQL_ATTR_PARAM_OPERATION_PTR in parameter-array execution #310; two commits.
  11. Restore the bind-offset pointer when a parameter-array execute throws (#309) #313 — bind-offset pointer restored when an array execute throws, stacked on Return the cumulative row count after a parameter-array execute #311; two commits, same function. Fixes Statement handle crashes on reuse after a server error inside a parameter-array execute #309.
  12. Fix SQL_C_GUID parameter binding sending corrupted data on the wire (#295) #296 — SQL_C_GUID parameter binding, all review notes addressed. Fixes SQL_C_GUID parameter binding sends corrupted data on the wire (Phase 8 / T5-5) #295.
  13. Fix silent data loss binding numeric to VARCHAR via stored procedure #292 — numeric to VARCHAR through stored procedures, three small commits.

All thirteen are green on the full matrix.

Driver-code hunks do not overlap between independent PRs, with one adjacent-line exception: #314 and #311 each add a member after rowNumberParamArray in OdbcStatement.h, so whichever lands second needs a one-line rebase. Otherwise: #308 shares OdbcDesc.cpp with #303 and OdbcStatement.cpp with #304, in different functions; #310, #311 and #313 change executeStatementParamArray in sequence, which nothing else touches; #315 changes the fetch path, which nothing else touches; #314 adds a case fifty lines from the block #304 adds; #314 and #317 change sqlGetDescField in sequence; #317's sqlColAttribute hunk is in a function nothing else touches. Shared files on the test side: #292 and #302 both add helpers to test_param_conversions.cpp; #303, #304 and #305 each add a line to tests/CMakeLists.txt; #303, #305 and #315 extend test_block_cursor.cpp in sequence; #308, #310, #311 and #313 extend test_array_binding.cpp in sequence; #314 and #317 extend test_descriptor.cpp in sequence, and #314 alone touches test_scrollable_cursor.cpp. Whichever lands later gets a rebase from me the same day.

Every open issue reported this month has a PR above.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions