Tests write-then-read compatibility of fuse-table format across databend-query versions.
- Backward compat: old writer → current reader
- Forward compat: current writer → old reader
All test cases are defined in test_cases.yaml. Each entry specifies:
| Field | Description |
|---|---|
writer |
Query version that writes data ("current" = latest build) |
reader |
Query version that reads data ("current" = latest build) |
meta |
Meta-service versions to run in order (upgrades on-disk meta data) |
suite |
sqllogictest sub-directory under compat-logictest/ |
To add a test case, append an entry to test_cases.yaml.
Run all cases (CI mode):
python3 tests/compat_fuse/test_compat_fuse.py --run-allDry run (print cases without executing):
python3 tests/compat_fuse/test_compat_fuse.py --run-all --dry-runRun a single case (local debugging):
python3 tests/compat_fuse/test_compat_fuse.py \
--writer-version 1.2.46 \
--reader-version current \
--meta-versions 1.2.527 1.2.677 1.2.833 \
--logictest-path baseCurrent version binaries must reside in ./bins/current/bin/:
databend-querydatabend-metadatabend-sqllogictests
This is handled by the CI setup action. Old version binaries are downloaded automatically.
For each case, the script runs three phases:
- Write — start meta (first version) + query (writer version), run
fuse_compat_write.test - Meta upgrade — cycle through all meta versions to upgrade on-disk data
- Read — start meta (last version) + query (reader version), run
fuse_compat_read.test
Each suite under compat-logictest/ contains two sqllogictest files:
fuse_compat_write.test— creates tables and writes datafuse_compat_read.test— reads and verifies the data