Skip to content

[FLINK-35230][table] Split FlinkSqlParserImplTest into smaller test classes#28387

Open
Au-Miner wants to merge 1 commit into
apache:masterfrom
Au-Miner:FLINK-35230
Open

[FLINK-35230][table] Split FlinkSqlParserImplTest into smaller test classes#28387
Au-Miner wants to merge 1 commit into
apache:masterfrom
Au-Miner:FLINK-35230

Conversation

@Au-Miner

Copy link
Copy Markdown
Contributor

What is the purpose of the change

Split the monolithic FlinkSqlParserImplTest (4000+ lines) into smaller, focused test classes to improve maintainability and eliminate the Checkstyle FileLength suppression.

Brief change log

  • Extract FlinkSqlParserTestBase as a shared base class providing fixture(), sql(), expr(), validated() methods
  • Split into 10 domain-specific parser test classes: CatalogTest, MetadataTest, CreateTableTest, AlterTableTest, CtasTest, ViewTest, ModelTest, ConnectionTest, ExecuteTest, MiscTest
  • Add FlinkSqlParserCalciteTest extending SqlParserTest to restore Calcite standard SQL test coverage (472 inherited tests)
  • Consolidate 10 UnParser test files into a single FlinkSqlParserUnParserTest using JUnit 5 @Nested inner classes
  • Remove FlinkSqlParserImplTest FileLength suppression from suppressions.xml

Verifying this change

This is a pure refactoring — 248 Flink-specific test methods before and after, verified via diff on extracted method names. The 472 inherited Calcite tests are now covered by FlinkSqlParserCalciteTest.

Does this pull request potentially affect one of the following parts

  • Dependencies: no
  • The public API, i.e., is any changed class annotated with @Public(Evolving): no
  • The serializers: no
  • The runtime per-record code paths (performance sensitive): no
  • Anything that affects deployment or recovery: JobManager (and its components), Currentpoints, Savepoints: no
  • The S3 file system connector: no

Documentation

  • Does this pull request introduce a new feature? no
  • If yes, how is the feature documented? not applicable

@Au-Miner Au-Miner changed the title [FLINK-35230][sql-parser] Split FlinkSqlParserImplTest into smaller test classes [FLINK-35230][table] Split FlinkSqlParserImplTest into smaller test classes Jun 11, 2026
@flinkbot

flinkbot commented Jun 11, 2026

Copy link
Copy Markdown
Collaborator

CI report:

Bot commands The @flinkbot bot supports the following commands:
  • @flinkbot run azure re-run the last Azure build

@raminqaf raminqaf left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@github-actions github-actions Bot added the community-reviewed PR has been reviewed by the community. label Jun 12, 2026
Comment on lines +87 to +121
/*
* This test was backported from Calcite 1.38 (CALCITE-6266).
* Remove it together with upgrade to Calcite 1.38.
*/
@Test
void testFromValuesWithoutParens() {
sql("select 1 from ^values^('x')")
.fails(
"(?s)Encountered \"values\" at line 1, column 15\\.\n"
+ "Was expecting one of:\n"
+ " \"LATERAL\" \\.\\.\\.\n"
+ " \"TABLE\" \\.\\.\\.\n"
+ " <IDENTIFIER> \\.\\.\\.\n"
+ " <HYPHENATED_IDENTIFIER> \\.\\.\\.\n"
+ " <QUOTED_IDENTIFIER> \\.\\.\\.\n"
+ " <BACK_QUOTED_IDENTIFIER> \\.\\.\\.\n"
+ " <BIG_QUERY_BACK_QUOTED_IDENTIFIER> \\.\\.\\.\n"
+ " <BRACKET_QUOTED_IDENTIFIER> \\.\\.\\.\n"
+ " <UNICODE_QUOTED_IDENTIFIER> \\.\\.\\.\n"
+ " \"\\(\" \\.\\.\\.\n.*"
+ " \"UNNEST\" \\.\\.\\.\n.*");
}

/*
* This test was backported from Calcite 1.38 (CALCITE-6266).
* Remove it together with upgrade to Calcite 1.38.
*/
@Test
void testUnnest() {
sql("select*from unnest(x)").ok("SELECT *\n" + "FROM UNNEST(`X`)");
sql("select*from unnest(x) AS T").ok("SELECT *\n" + "FROM UNNEST(`X`) AS `T`");
// UNNEST cannot be first word in query
sql("^unnest^(x)").fails("(?s)Encountered \"unnest\" at.*");
// UNNEST with more than one argument
final String sql = "select * from dept,\n" + "unnest(dept.employees, dept.managers)";

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you explain why do we need it given the fact you stopped extending SqlParserTest?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

especially comments about 1.38


/** Base class providing shared parser test utilities for Flink SQL parser tests. */
@Execution(CONCURRENT)
abstract class FlinkSqlParserTestBase {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what made you stopped extending SqlParserTest?

sql("alter catalog a comment 'comment1'").ok("ALTER CATALOG `A` COMMENT 'comment1'");
}

// END

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is this about?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

community-reviewed PR has been reviewed by the community.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants