Repository navigation
NEA compatibility mode, TAP_SCHEMA.db Oracle fix, deprecation path (3.1.0) - #30
Merged
Merged
Conversation
configparam always passes tap_schema_file='TAP_SCHEMA.db', SQLite's ATTACH name. Since 4b35392 TableValidator and dataDictionary preferred it for every DBMS, so Oracle got 'FROM TAP_SCHEMA.db.tables' (ORA-03048) on every query. Co-Authored-By: Claude Haiku 4.5 <[email protected]>
A 1.x TAP.conf ([webserver]/[<dbms>]/ADQL_*) is translated to the 3.x layout in memory and turns on every NEA compat behavior; a [WEB] config may list them in COMPAT. Unknown names fail at startup. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…t types) Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Co-Authored-By: Claude Haiku 4.5 <[email protected]>
Under nea-uws the 303 that starts a job carries no Content-Type, Content-Length or Connection line, as bbc1108 prints it; the response ends when the CGI exits. Default mode bytes are unchanged. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…T only in [WEB] - nea-uws accepts /async/<id>/executionDuration as bbc1108 did (compat.uws_url_key) - status.xml is read with either duration spelling, so jobs written under one mode survive a switch to the other (compat.duration_value, compat.uws_key) - COMPAT in any section but [WEB] (including 1.x [webserver]) is a config error Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
bjfultn
merged commit Oct 6, 2026
e58b9b1
into
fix/async-detach-without-killing-server
6 checks passed
This was referenced Oct 6, 2026
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.
Summary
This lets the Exoplanet Archive (NEA) deployment run this code line, the one NEID and KOA use, without changing its code or its
TAP.conf. NEID and KOA stay byte-identical, except for one Oracle fix every Oracle deployment needs.It adds a compatibility mode plus a planned path to remove it. Release target: 3.1.0 (minor, because default behavior is unchanged).
1. Fix:
TAP_SCHEMA.dbsent to Oracle (affects every Oracle deployment)configparam.pyalways passestap_schema_file='TAP_SCHEMA.db', which is SQLite's ATTACH name. Since 4b35392,TableValidatoranddataDictionaryprefer it overtap_schema. As a result, Oracle receivesSELECT … FROM TAP_SCHEMA.db.tablesand every query fails with ORA-03048.tap_schema_fileis now used only whendbms == 'sqlite3'.mainis not affected; every develop-based branch is.2. Compatibility mode (
TAP/compat.py)Compat mode turns on when
TAP.confuses the 1.x layout ([webserver], a[<dbms>]section, top-levelADQL_*). That layout is translated in memory to the 3.x[WEB]/[DBMS]layout and enables all five behaviors below. A 3.x config can also opt in per behavior withCOMPAT = …in[WEB]. Unknown names, orCOMPAToutside[WEB], fail at startup.nea-vosi-headers/availability,/capabilitiessend a status line and CRLF headersnea-errorsnea-tables/tableslayout (TAP/compat_vositables.py, the NEA module verbatim)nea-votableapplication/xml, no FIELD description/unit for non-char columnstext/xml, description and unitnea-uws<uws:executionDuration>,destructionwithoutZ,application/xml, a bare 303 on job runEach behavior is a single function in
compat.py. Call sites call it and contain noifof their own, so removing a behavior later means deleting one function and inlining the default.3. Deprecation path (
MIGRATING.md)While compat is active, a one-line warning goes to stderr at most once per day (via a stamp file under
<workdir>/TAP/; failure never affects a request).COMPATlist. Responses don't change.COMPATand the 1.x reader are deleted.Verification
TAP_SCHEMA.dbfix: 18/18 identical. This is the NEID/KOA no-change check.COMPATlist in a 3.x config, compared with NEA production: 18/18.Not changed here (for NEID/KOA to decide)
These default-mode gaps were found while measuring. They were left as-is because default mode must not change in this PR: VOSI responses without headers, plain-text errors that pyvo/astroquery can't parse,
<uws:executionduration>casing, aZon local-timedestruction, non-standard/tablescolumn elements, and CI that tests only SQLite (how 4b35392 reached develop).🤖 Generated with Claude Code