Commit 084d34d
feat(query): paimon catalog support read and distributed write (#20132)
* feat(meta): add Paimon catalog metadata
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat(query): parse Paimon catalogs
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat(storage): implement read-only Paimon storage
Add the Paimon storage crate with catalog and table scans, split
serialization, predicate pushdown, Arrow sources, and integration tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat(query): register Paimon catalog and engine
Integrate CatalogCreator, the storage factory, query context, and
system.tables display.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(storage): finalize the Paimon core read plan
Fix timestamp and predicate pushdown, reuse the catalog in sources, add
pipeline and stateful tests, and reject CREATE TABLE for read-only catalogs.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(paimon): move read tests to service integration tests
- Load each table only once per source and preserve LIMIT and residual filters.
- Move pipeline and read tests to the databend-query service integration suite.
- Add split round-trip serialization and credential redaction tests.
- Use a local filesystem fixture for stateful tests.
- Give each thread its own TestFixture, remove the paimon_it_lock deadlock,
and execute DDL through execute_command.
- Verify 8 service, 3 partition, and 2 security tests with UNIT_TEST=TRUE;
formatting and clippy are clean.
* fix(paimon): repair the local filesystem fixture
The fixture had never completed successfully:
- Configure PaimonSparkSessionExtensions as required by paimon-spark.
- Provide only non-partition columns for the append_t static partition insert.
- Define the pk_t primary key with the primary-key table property because
Spark cannot parse inline PRIMARY KEY syntax.
* test(paimon): make the stateful read test pass
The suite had not been exercised successfully before this fix:
- Make every shell script executable.
- Redirect fixture output so Spark logs do not pollute stdout.
- Use fully qualified paimon_fs.regression names because USE CATALOG does not
persist across bendsql sessions.
- Regenerate the 01_read result to match actual output.
The official databend-test runner now verifies 01_0000_append_pk, including
append scans, primary-key deduplication, projection/filter/limit pushdown, and
read-only DDL rejection. The 00_catalog case still depends on a SHOW DATABASES
bug, while 02_cluster requires a multi-node cluster.
* fix(paimon): fix catalog SHOW DATABASES e2e test
* style(paimon): format the catalog adapter
* test(paimon): cover catalog SHOW TABLES
* test(paimon): add stateful SHOW TABLES coverage
* feat(storage): parse Paimon system tables
* feat(storage): read basic Paimon system tables
* feat(storage): read Paimon file metadata system tables
* feat(storage): decode Paimon stats and keys as typed JSON
* fix(storage): scan all partition files through the catalog
* feat(storage): read Paimon size and index system tables
* fix(storage): remove location conversion clippy warning
* test(paimon): validate every system table column count
* fix(storage): enable SQL reads from Paimon system tables
Rebuild PaimonSystemTable from the system table name in get_table_by_info,
lazily load the catalog and table from the TableInfo descriptor, and project
blocks in the source according to the plan to fix ORDER BY column mismatches.
* test(paimon): cover SQL reads from 11 system tables
* style(paimon): format physical_files_size
* test(paimon): fix multi-node cluster scan e2e test
* feat(paimon): add fixed-bucket write routing
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat(paimon): transmit commit messages across nodes
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat(paimon): implement parallel writers and centralized commit
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(paimon): skip centralized commit after failures
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat(paimon): integrate table writes and snapshot commits
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(paimon): improve unsupported write configuration errors
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat(paimon): redistribute writes by partition and bucket
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(paimon): preserve Merge Exchange for centralized commit
Co-authored-by: Cursor <cursoragent@cursor.com>
* test(paimon): cover the preserved SELECT Merge path
Co-authored-by: Cursor <cursoragent@cursor.com>
* test(paimon): cover local filesystem writes
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(paimon): use a portable warehouse path
Co-authored-by: Cursor <cursoragent@cursor.com>
* test(paimon): cover parallel cluster writes
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(paimon): finalize distributed write validation
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(paimon): correct distributed write routing and validation
* fix(paimon): address meta version, REST, and branch review issues
- Add v180 to META_CHANGE_LOG and cover CatalogMeta compatibility.
- Open tables through CatalogFactory to preserve rest_env.
- Resolve system tables against branch metadata paths.
* fix(paimon): strip quotes from dotted CONNECTION keys
Quoted identifiers such as "s3.region" retained their quotes in option keys,
preventing S3 FileIO from reading the region. Match Iceberg by stripping quotes
while building catalogs and tables, and add an offline regression test.
* ci: add Paimon MinIO integration validation
* fix: correct the Paimon S3 warehouse path
* fix: correct local Paimon MinIO validation
* fix(query): resolve Paimon CI failures
* fix(ci): isolate Paimon test dependencies
* fix(ci): stabilize Paimon cluster tests
* fix(query): harden Paimon system tables
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: sundyli <543950155@qq.com>1 parent cd4d095 commit 084d34d
107 files changed
Lines changed: 10662 additions & 64 deletions
File tree
- .github
- actions
- test_sqllogic_paimon
- test_stateful_paimon_cluster_linux
- workflows
- scripts/ci
- src
- meta
- app/src/schema
- proto-conv
- src
- impls
- tests/it
- protos/proto
- query
- ast/src
- ast/statements
- parser
- catalog/src
- service
- src
- catalogs
- paimon
- interpreters
- common
- physical_plans
- format
- servers/flight/v1/exchange
- sessions
- tests/it
- sql/exec
- storages
- paimon
- testdata
- sql
- src/planner/binder/ddl
- tests/it
- storages
- factory
- src
- paimon
- src
- system
- write
- tests
- common
- system/src
- tests
- sqllogictests
- scripts
- suites
- base/06_show
- query/case_sensitivity
- stateful/paimon
- suites/3_stateful_paimon
- 00_catalog
- 01_read
- 02_cluster
- 02_system
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
Lines changed: 27 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
349 | 349 | | |
350 | 350 | | |
351 | 351 | | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
352 | 369 | | |
353 | 370 | | |
354 | 371 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
244 | 244 | | |
245 | 245 | | |
246 | 246 | | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
247 | 268 | | |
248 | 269 | | |
249 | 270 | | |
| |||
0 commit comments