Skip to content

docs: plain-ODBC re-verification of seven more entries (PostgreSQL, SQLite, SQL Server, Oracle, Dolt, InfluxDB 3, MongoDB BI) - #17

Merged
singhpratech merged 1 commit into
mainfrom
docs/batch5-reverified
Aug 30, 2026
Merged

docs: plain-ODBC re-verification of seven more entries (PostgreSQL, SQLite, SQL Server, Oracle, Dolt, InfluxDB 3, MongoDB BI)#17
singhpratech merged 1 commit into
mainfrom
docs/batch5-reverified

Conversation

@singhpratech

Copy link
Copy Markdown
Owner

Batch 5 of the entry-by-entry re-verification: every driver/server claim re-run with standalone unixODBC C programs, then adversarially re-checked; wording follows what the probes showed. Docs, comments and matrix flags only; the SQLite entry was re-run with its new flags (PASS).

Oracle — 23.26 accepts the standard multi-row VALUES form, so INSERT ALL is only for older releases; a mid-cursor rowset change crashes or loses rows on any cursor (LOB or not; survival depends on cursor depth; raising can rewind), lowering strides the result set; truncated bound values are repairable only at a one-row rowset; NCLOB is SQL_WLONGVARCHAR; NLS_LANG before the first connection, not the process; CLOB ORDER BY is ORA-22848; SQL_C_SBIGINT refused on reads too; bare NUMBER read through a double.
SQLite — astral emoji round-trips on Linux (astral=False dropped); dead ts_precision key → ts_us=(123000,) with the real cause; default cursor is SQL_CURSOR_STATIC; null-fill cost is 20×.
PostgreSQLSHOW server_version carries the packager suffix; psqlodbc never fails at SQLPrepare (the cast fallback can't fire on prepare); partitioned parents do carry a PK.
InfluxDB 3SQLColumns crash is per table (schemas without per-field metadata: system/information_schema; iox tables fine), root cause named; exact DDL/DML texts.
SQL ServerSQL_GETDATA_EXTENSIONS = SQL_GD_BLOCK only; NVARCHAR(MAX) = SQL_WVARCHAR size 0; 01S02 on rowsets > 1.
Dolt — the DATETIME(6) truncation is Connector/ODBC + pyodbc, not Dolt; {plugin_dir} placeholder.
MongoDB BI — exact DDL/DML refusals; a DATE type exists (our DRDL maps d as timestamp); binData sampling by subtype; SET SESSION accepted and ignored; auth-switch handshake.
UPSTREAM.md — four new not-yet-reported rows (sqliteodbc, Connector/ODBC vs mongosqld ×2 segfaults, Flight SQL SQLColumns root cause, SQORA rowset).

…QLite, SQL Server, Oracle, Dolt, InfluxDB 3, MongoDB BI)

Every driver and server claim in these entries was re-run with standalone
unixODBC C programs and adversarially re-checked; wording follows the probes.

Oracle 23.26 / SQORA 23.9: the multi-row VALUES form is accepted (prepared or
direct), so the INSERT ALL fallback is never reached there -- the quirk stays
for older releases; a mid-cursor rowset change crashes or loses rows on any
cursor, LOB or not, at switch points that depend on cursor depth (raising can
also rewind), and lowering strides the result set (13,440-14,336 of 100,000);
a truncated bound value is repairable only at a one-row rowset; NCLOB is
SQL_WLONGVARCHAR; NLS_LANG needs to be set before the first connection, not
before the process; ORDER BY on a CLOB is ORA-22848; SQL_C_SBIGINT is refused
on the read side too; a bare NUMBER is read through a double.

SQLite: the astral emoji round-trips on Linux (astral=False dropped); the
dead ts_precision key becomes ts_us=(123000,) with the real mechanism (bound
timestamp parameters keep three fractional digits); sqliteodbc's default
cursor is SQL_CURSOR_STATIC, which is what makes the refetch repair work; the
null-fill cost is 20x, not 4x.

PostgreSQL: SHOW server_version carries a packager suffix; psqlodbc never
reports a parse error at SQLPrepare, so the array-ingest cast fallback cannot
fire on prepare; a partitioned parent does carry a primary key of its own.

InfluxDB 3: the SQLColumns crash is per table -- Flight SQL schemas without
per-field metadata (system/information_schema), iox tables fetch cleanly --
with the null-pointer root cause; DDL/DML error texts as the server spells
them. SQL Server: SQL_GETDATA_EXTENSIONS is SQL_GD_BLOCK only, NVARCHAR(MAX)
described as SQL_WVARCHAR size 0, 01S02 on any rowset above 1. Dolt: the
DATETIME(6) truncation is Connector/ODBC + pyodbc, not Dolt; the entry's
placeholder is {plugin_dir}. MongoDB BI: exact DDL/DML refusals, a DATE type
exists (the entry's DRDL maps d as timestamp), binData sampling depends on
subtype, SET SESSION is accepted and ignored, mongosqld answers every
handshake with an AuthSwitchRequest for mysql_native_password.

UPSTREAM.md gains not-yet-reported rows for sqliteodbc, MySQL Connector/ODBC
against mongosqld (two segfaults), the Flight SQL driver's SQLColumns root
cause, and SQORA's rowset behaviour.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@singhpratech
singhpratech merged commit 78d89bb into main Aug 30, 2026
4 checks passed
@singhpratech
singhpratech deleted the docs/batch5-reverified branch August 30, 2026 16:12
singhpratech added a commit that referenced this pull request Aug 30, 2026
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant