docs: plain-ODBC re-verification of seven more entries (PostgreSQL, SQLite, SQL Server, Oracle, Dolt, InfluxDB 3, MongoDB BI) - #17
Merged
Conversation
…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
added a commit
that referenced
this pull request
Aug 30, 2026
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
VALUESform, soINSERT ALLis 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 isSQL_WLONGVARCHAR;NLS_LANGbefore the first connection, not the process; CLOBORDER BYis ORA-22848;SQL_C_SBIGINTrefused on reads too; bareNUMBERread through a double.SQLite — astral emoji round-trips on Linux (
astral=Falsedropped); deadts_precisionkey →ts_us=(123000,)with the real cause; default cursor isSQL_CURSOR_STATIC; null-fill cost is 20×.PostgreSQL —
SHOW server_versioncarries the packager suffix; psqlodbc never fails atSQLPrepare(the cast fallback can't fire on prepare); partitioned parents do carry a PK.InfluxDB 3 —
SQLColumnscrash is per table (schemas without per-field metadata:system/information_schema;ioxtables fine), root cause named; exact DDL/DML texts.SQL Server —
SQL_GETDATA_EXTENSIONS=SQL_GD_BLOCKonly;NVARCHAR(MAX)=SQL_WVARCHARsize 0;01S02on 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
das timestamp); binData sampling by subtype;SET SESSIONaccepted and ignored; auth-switch handshake.UPSTREAM.md — four new not-yet-reported rows (sqliteodbc, Connector/ODBC vs mongosqld ×2 segfaults, Flight SQL
SQLColumnsroot cause, SQORA rowset).