Repository navigation
test(plugins): run every listed column type through browse, edit and export - #3710
Merged
Merged
Conversation
…export Fixes the export and decode defects the corpus found in JSON export, DuckDB and SQL Server dumps, ClickHouse values and parameters, and SQL Server dates.
datlechin
enabled auto-merge (squash)
October 20, 2026 17:39
…-corpus # Conflicts: # apple/Plugins/JSONExportPlugin/JSONExportPlugin.swift
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
apple/Plugins/ColumnTypeCorpus/: one runner and one corpus per engine (PostgreSQL, MySQL, MariaDB, ClickHouse, DuckDB, SQL Server, Oracle, SQLite), a column per type the driver lists, with edge values and the cell each reads as.knownmarks a defect left for later with the failure it matches. Any other failure at that step fails the run, and so does a known step that passes.apple/scripts/probes/check-column-type-corpus.sh <engine>builds the harness from the driver's sources and runs it against a container it starts.SQLiteDriverTests;project.ymladds the runner and the CSV, JSON and SQL export plugins to that target.apple/scripts/ci/check-column-type-corpus.py(Repo Hygiene) fails a type a driver lists with no corpus column..claude/rules/plugin-system.md: when to run the probe.X'..', which DuckDB stores as the text's bytes. Nowfrom_hex('..').['it\'s']read as['it's'], and saving that row failed.C:\newbecameC:+ newline +ew, and a row holding a tab or newline could not be saved.dateread with a midnight time andtimewith1900-01-01.'...', so text outside the database's code page restored as??. NowN'...'.SQLExportBinaryLiteralTests.hexLiteralEnginesAreUnchangedno longer lists DuckDB.Not in this PR
Each is a
knownentry in its corpus.BIT: a typed number saves as its text's bytes (5 saves as 53); the dump writes BIT values as quoted text.SETTINGS mutations_syncneeds the server profile's limits and replica handling.Mapedit binds a String the server cannot cast (53); aJSONvalue never equals its read text, so a save changes nothing.VECTOR,XMLTYPEandSDO_GEOMETRYread as placeholders.geometry,geographyandhierarchyidread as CLR hex;sql_variantreads as NULL and refuses a save;floatreads with 17 digits; a column created without NULL or NOT NULL is NOT NULL on the driver's session.Test plan
all checks hold: PostgreSQL 17.11, MySQL 8.4.11, MariaDB 11.8.9, ClickHouse 25.8, DuckDB 1.5.2, SQL Server 2022 CU27, Oracle 23ai Free, SQLite 3.53.4.swift test: ClickHouse decoder and classifier, SQL Server date formatter.ColumnTypeCorpusTests,JSONExportBooleanTests,SQLExportNationalLiteralTests,SQLExportBinaryLiteralTests,ClickHouseParameterBindingTestsand the SQL export size and batch suites.test_check_column_type_corpus.py.Fixes #3667