Skip to content

Support parsing Doris ADMIN SET TABLE STATUS syntax - #39588

Merged
terrymanu merged 2 commits into
apache:masterfrom
terrymanu:dev
Aug 23, 2026
Merged

Support parsing Doris ADMIN SET TABLE STATUS syntax#39588
terrymanu merged 2 commits into
apache:masterfrom
terrymanu:dev

Conversation

@terrymanu

Copy link
Copy Markdown
Member

Fixes #31501

  • Support ADMIN SET TABLE STATUS statement with table name and PROPERTIES clause for Doris
  • Add Doris parser IT cases for simple and qualified table names

Fixes apache#31501

- Support ADMIN SET TABLE STATUS statement with table name and PROPERTIES clause for Doris
- Add Doris parser IT cases for simple and qualified table names
@terrymanu

Copy link
Copy Markdown
Member Author

Result

Review Result: Mergeable

The last commit (900b910a672a, "Support parsing Doris ADMIN SET TABLE STATUS syntax") correctly adds Doris ADMIN SET TABLE STATUS parsing end to end with no behavioral or contract risk found. The grammar matches the official Doris syntax, the visitor and statement model follow the established DorisAdmin*Statement pattern, and the new parser IT cases protect the owned behavior. This result is code-scope only and covers only the last commit as requested.

Evidence

  • Official syntax: the Doris official statement reference (SET TABLE STATUS, sql-manual/sql-statements/table-and-view/data-and-status-management/SET-TABLE-STATUS) defines ADMIN SET TABLE <table_name> STATUS PROPERTIES ("key" = "value"). The new rule adminSetTableStatus : ADMIN SET TABLE tableName STATUS propertiesClause in parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DALStatement.g4:512 matches this form exactly, and IT case 1 reuses the documented example verbatim.
  • Grammar safety: the rule shares the ADMIN SET TABLE tableName prefix with the existing adminSetPartitionVersion but disambiguates on the following token (STATUS vs PARTITION), so no existing alternative (adminSetRepair, adminCleanTrash, adminSetReplica*) changes path. The STATUS token already exists in DorisKeyword.g4 and is reused by showTableStatus.
  • Dialect family: Doris is a branch dialect of the MySQL trunk; the statement is Doris-specific, so no trunk (MySQL) or sibling (MariaDB) grammar change is required. The Doris-only additions are marked with // DORIS ADDED BEGIN/END in DALStatement.g4 and DorisDALStatementVisitor.java:1427.
  • Model and dispatch: DorisAdminSetTableStatusStatement mirrors DorisAdminSetPartitionVersionStatement (final table + properties), SQLVisitorRule.ADMIN_SET_TABLE_STATUS follows the sibling enum convention, and propertiesClause is mandatory in the grammar, so the visitor never sees a null properties clause.
  • Test validity: test/it/parser/src/main/resources/sql/supported/dal/admin-set-table-status.xml plus the assertion XML cover a simple table (documented example) and a qualified table (example_db.tbl2) with two properties, asserting table name, owner, and property key/value with exact indices. No unsupported-case resource contains a conflicting ADMIN SET TABLE statement.
  • Verification at public head 900b910a672a (local HEAD equals PR head, clean tree, 11 files match the GitHub commit file list): module tests for parser/sql/engine/core, parser/sql/engine/dialect/doris, parser/sql/statement/dialect/doris — exit 0; InternalDorisParserIT — Tests run: 1379, Failures: 0, exit 0; spotless:apply -Pcheck and checkstyle:check -Pcheck — exit 0.

Coverage

  • Reviewed head: 900b910a672a (PR Support parsing Doris ADMIN SET TABLE STATUS syntax #39588 head). Per explicit request, only the last commit was reviewed; the first PR commit 0a0592ba638 (ADMIN CANCEL REBALANCE DISK, YEARWEEK, RTRIM) was out of scope for this review.
  • All 11 changed files are accounted for and map to three behavior clusters: grammar acceptance (2 g4 files), parse-result model and dispatch (visitor, SQLVisitorRule, new statement class), and IT/assert/JAXB wiring (2 new XML resources, new assert class, new JAXB test case, 3 registrations).
  • Discovery lenses completed: root cause and behavior, blast radius and contracts, tests and runtime. Two non-blocking candidates (a duplicated private assertProperty helper shared with sibling assert classes, and keyword-named edge tables such as a table literally named status) were classified as repo convention and pre-existing pattern respectively and are not published as required changes.
  • No unresolved evidence gap remains for this commit scope. CI was not reviewed; this verdict is code-scope only.

@terrymanu
terrymanu merged commit 965f3a9 into apache:master Aug 23, 2026
15 checks passed
@terrymanu
terrymanu deleted the dev branch August 23, 2026 16:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support parsing Doris sql

2 participants