Skip to content
This repository was archived by the owner on Mar 26, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ ClientSideStatement getClientSideStatement() {
}

private final Set<String> ddlStatements = ImmutableSet.of("CREATE", "DROP", "ALTER");
private final Set<String> selectStatements = ImmutableSet.of("SELECT");
private final Set<String> selectStatements = ImmutableSet.of("SELECT", "WITH");
private final Set<String> dmlStatements = ImmutableSet.of("INSERT", "UPDATE", "DELETE");
private final Set<ClientSideStatementImpl> statements;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,27 @@ public void testIsQuery() {
assertTrue(parser.isQuery("select * from foo"));
assertFalse(parser.isQuery("INSERT INTO FOO (ID, NAME) SELECT ID+1, NAME FROM FOO"));

assertTrue(
parser.isQuery(
"WITH subQ1 AS (SELECT SchoolID FROM Roster),\n"
+ " subQ2 AS (SELECT OpponentID FROM PlayerStats)\n"
+ "SELECT * FROM subQ1\n"
+ "UNION ALL\n"
+ "SELECT * FROM subQ2"));
assertTrue(
parser.isQuery(
"with subQ1 AS (SELECT SchoolID FROM Roster),\n"
+ " subQ2 AS (SELECT OpponentID FROM PlayerStats)\n"
+ "select * FROM subQ1\n"
+ "UNION ALL\n"
+ "SELECT * FROM subQ2"));
assertTrue(
parser
.parse(
Statement.of(
"-- this is a comment\nwith foo as (select * from bar)\nselect * from foo"))
.isQuery());

assertTrue(parser.parse(Statement.of("-- this is a comment\nselect * from foo")).isQuery());
assertTrue(
parser
Expand Down Expand Up @@ -310,6 +331,13 @@ public void testQueryHints() {
assertTrue(
parser.isQuery(
"@{JOIN_METHOD=HASH_JOIN}\n /* Multi line comment\n with more comments\n */SELECT * FROM PersonsTable"));
assertTrue(
parser.isQuery(
"@{JOIN_METHOD=HASH_JOIN} WITH subQ1 AS (SELECT SchoolID FROM Roster),\n"
+ " subQ2 AS (SELECT OpponentID FROM PlayerStats)\n"
+ "SELECT * FROM subQ1\n"
+ "UNION ALL\n"
+ "SELECT * FROM subQ2"));

// Invalid query hints.
assertFalse(parser.isQuery("@{JOIN_METHOD=HASH_JOIN SELECT * FROM PersonsTable"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -668,3 +668,8 @@ WHERE SingerId=2;
SELECT COUNT(*) AS ACTUAL, 0 AS EXPECTED
FROM Songs
WHERE SingerId=2;

@EXPECT RESULT_SET
WITH Song2 AS (SELECT * FROM Songs WHERE SingerId=2)
SELECT COUNT(*) AS ACTUAL, 0 AS EXPECTED
FROM Song2;