Repository navigation
Conversation
Use SQLAlchemy executable metadata queries with bound values, quote Drill identifiers, render compatible column qualifiers, and fix transport-local DBAPI hooks. Harden REST qmark substitution without reinterpreting literals or comments. Preserve invalidated-connection errors during has_table. Prepare unreleased version 1.1.11 from one source; exclude runtime test packages, complete the sdist, and reject every unexpected artifact or mismatched metadata before clean-install tests and OIDC publication. Preserve upstream trusted publishing. JDBC/ODBC, TLS, and downstream production images remain unqualified.
Do not infer table absence from opaque dynamic-query failures. Preserve SQLAlchemy schema translation quote flags, require sdist compliance dependencies, assert every executemany call, and describe upstream rather than intermediate-candidate behavior in the changelog.
|
@cgivre greetings from Superset-land! Would you be able to approve CI and/or review? Many thanks in advance. TL;DR, if it helps: Fixes SQLAlchemy 2 compatibility bugs in the Drill dialect.
The latest commit closes two HIGH findings from an independent review:
Tested across SQLAlchemy 1.4/2.0/2.1rc1 with fresh wheel/sdist installs and negative controls, but explicitly not merged or released |
|
CI follow-up for exact head I reran the fork workflow, attempt 2 and monitored all five jobs to SUCCESS:
This supersedes the earlier “no live Drill / CI provisioning evidence at this corrective head” limitation, but does not make the upstream PR green. @cgivre could an upstream administrator:
Both approval and workflow-enable API attempts returned HTTP 403 (“Must have admin rights to Repository”) for my account. The PR has no review threads/formal reviews; independent human code review is still requested. It is mergeable and already contains current master, so no rebase or code-only CI-trigger commit was warranted. No draft conversion, merge, tag or release performed. |
|
@JohnOmernik — adding you as repository owner, since this needs an action only an upstream admin can take (apologies for the second ping; previous requests only reached @cgivre). Upstream CI for this PR has never executed. Run 34273491893 is sitting at I re-attempted every available API route just now, and all are denied for my account (
The three things that need a human with admin:
The branch is To be explicit about what my own testing does and does not prove: I can only run CI in my fork, and fork CI is not upstream CI — it does not satisfy this PR's checks, and I am not asking anyone to treat it as if it did. It is offered only so the approval click is low-risk. At the identical head No merge, tag, release, or draft conversion has been performed, and none will be from my side. |
…n-security Fix SQLAlchemy 2 reflection and validate release artifacts (Workflow A fallback for upstream JohnOmernik#100)
|
@rusackas @aminghadersohi Thanks for this. I'll push this to Pypi as well today. |
Reviewed correction — September 8, 2026
Current head:
ca7ace9eebe769bea3e620db60ba32906b67f95a.Fixes both independent-review HIGH findings: Drill
//and formal-comment lexical handling in single-pass REST binding; and trailing REST failures missed/cached by bounded reflection. New regressions use real REST cursor/SQLAlchemy with synthetic HTTP responses.Independent review approved the exact
1366b76..ca7ace9correction, confirming both findings closed. Not human approval, whole-PR approval or release qualification.Current-head CI is action_required, not green. Maintainer workflow approval required.
September 15 CI follow-up: Fork workflow attempt 2 passed all five jobs on this exact head: source matrix 112 passed + 1 skipped / 113 passed / 113 passed; real testcontainers-provisioned Drill REST integration 137 passed + 4 existing unsupported DB-API skips; artifact validation and clean wheel/sdist installs 88 passed each. Upstream PR CI remains action_required with zero jobs, not green. Upstream CodeQL is disabled due to inactivity and needs maintainer attention. Live JDBC/ODBC, validated TLS and exact production Shell image remain unqualified. Shell remains plan-only pending reviewed immutable upstream artifact and provenance/install gates. No tag, release, draft conversion or merge.
Summary
Fix SQLAlchemy 2 compilation/reflection failures in the dialect itself, and prepare a verifiable unreleased 1.1.11 distribution. Based on current upstream master
632c44b4de4c32e1080b224df4636aae712e1e9d, not a downstream reflection proxy.:or?in identifiers.has_table.import_dbapi()hooks on their subclasses, avoiding the deprecated legacy-hook fallback while retaining compatibility aliases. REST already has its native hook./*/comment ambiguity and reject unsupported literals rather than emitting invalid SQL.testpackage from wheels, and include source-test fixtures/requirements in sdists.release/v1action revision.Historical verification at
1366b76Python 3.11.2, freshly rerun September 8, 2026:
The local REST run used image
apache/drill:1.21.2@sha256:8d572b93e2676155acfbf426e8ea18e7ce3827c9fec8f3df81d1f88729cfa293, loopback-only port publication, anddocker cpfor the existing fixtures. A local pytest provisioning override supplied that running container; product code and assertions were unchanged. The CI testcontainers provisioning path was not exercised in that historical local run. It subsequently passed in the September 15 exact-head fork workflow above; upstream PR CI still awaits approval. Integration is explicitly opted in and cannot silently skip when its dependency is missing.Compatibility and release boundaries
format_drill_tabletakes separate schema/table identifiers; callers passing a query or the legacyisFilesignature must migrate. Reflection no longer accepts arbitrary SELECT expressions as table names.has_table=FalseorNoSuchTableError.driver == "rest"metadata is deliberately unchanged pending a separate compatibility/security review.verify_ssl=Falsedefault is unchanged. This is not TLS qualification; use validated TLS for deployment. No new complex-type support is claimed.v1.1.11were absent when checked on September 8.Tracking