Skip to content

Commit 9f4aa7a

Browse files
committed
Added more tests
1 parent e9fe471 commit 9f4aa7a

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/SqlParserTest.java

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,4 +418,67 @@ public Object[][] testMiscStmtDp() {
418418
"WHERE\n" +
419419
" EventDate = toDate(?) AND\n" +
420420
" EventTime <= ts_upper_bound;";
421+
422+
423+
@Test(dataProvider = "testStatementWithoutResultSetDP")
424+
public void testStatementWithoutResultSet(String sql, int args, boolean hasResultSet) {
425+
SqlParser parser = new SqlParser();
426+
{
427+
ParsedPreparedStatement stmt = parser.parsePreparedStatement(sql);
428+
Assert.assertEquals(stmt.getArgCount(), args);
429+
assertEquals(stmt.isHasResultSet(), hasResultSet, "Statement result set expectation does not match");
430+
Assert.assertFalse(stmt.isHasErrors(), "Statement has errors");
431+
}
432+
433+
{
434+
ParsedStatement stmt = parser.parsedStatement(sql);
435+
assertEquals(stmt.isHasResultSet(), hasResultSet, "Statement result set expectation does not match");
436+
Assert.assertFalse(stmt.isHasErrors(), "Statement has errors");
437+
}
438+
}
439+
440+
@DataProvider
441+
public static Object[][] testStatementWithoutResultSetDP() {
442+
return new Object[][]{
443+
{"INSERT INTO test_table VALUES (1, ?)", 1, false},
444+
{"SELECT * FROM test_table", 0, true},
445+
{"CREATE DATABASE `test_db`", 0, false},
446+
{"CREATE DATABASE `test_db` COMMENT 'for tests'", 0, false},
447+
{"CREATE DATABASE IF NOT EXISTS `test_db`", 0, false},
448+
{"CREATE DATABASE IF NOT EXISTS `test_db` ON CLUSTER `cluster`", 0, false},
449+
{"CREATE DATABASE IF NOT EXISTS `test_db` ON CLUSTER `cluster` ENGINE = Replicated('clickhouse1:9000', 'test_db')", 0, false},
450+
{"CREATE TABLE `test_table` (id UInt64)", 0, false},
451+
{"CREATE TABLE IF NOT EXISTS `test_table` (id UInt64)", 0, false},
452+
{"CREATE TABLE `test_table` (id UInt64) ENGINE = MergeTree() ORDER BY id", 0, false},
453+
{"CREATE TABLE `test_table` (id UInt64) ENGINE = MergeTree() ORDER BY id ON CLUSTER `cluster`", 0, false},
454+
{"CREATE TABLE `test_table` (id UInt64) ENGINE = MergeTree() ORDER BY id ON CLUSTER `cluster` ENGINE = Replicated('clickhouse1:9000', 'test_db')", 0, false},
455+
{"CREATE TABLE `test_table` (id UInt64) ENGINE = MergeTree() ORDER BY id ON CLUSTER `cluster` ENGINE = Replicated('clickhouse1:9000', 'test_db') COMMENT 'for tests'", 0, false},
456+
{"CREATE VIEW `test_db`.`source_table` source AS ( SELECT * FROM source_a UNION SELECT * FROM source_b)", 0, false},
457+
{"CREATE OR REPLACE VIEW `test_db`.`source_table` source AS ( SELECT * FROM source_a UNION SELECT * FROM source_b)", 0, false},
458+
{"CREATE OR REPLACE VIEW `test_db`.`source_table` source ON CLUSTER `cluster` AS ( SELECT * FROM source_a UNION SELECT * FROM source_b)", 0, false},
459+
{"CREATE VIEW `test_db`.`source_table` source AS ( SELECT * FROM source_a UNION SELECT * FROM source_b) ENGINE = MaterializedView", 0, false},
460+
{"CREATE VIEW `test_db`.`source_table` source AS ( SELECT * FROM source_a UNION SELECT * FROM source_b) ENGINE = MaterializedView()", 0, false},
461+
{"CREATE VIEW `test_db`.`source_table` source AS ( SELECT * FROM source_a UNION SELECT * FROM source_b) ENGINE = MaterializedView() COMMENT 'for tests'", 0, false},
462+
{"CREATE DICTIONARY `test_db`.dict1 (k1 UInt64 EXPRESSION(k1 + 1), k2 String DEFAULT 'default', a1 Array(UInt64) DEFAULT []) PRIMARY KEY k1 SOURCE(CLICKHOUSE(db='test_db', table='dict1')) LAYOUT(FLAT()) LIFETIME(MIN 1000 MAX 2000)", 0, false},
463+
{"CREATE DICTIONARY `test_db`.dict1 (k1 UInt64 (k1 + 1), k2 String DEFAULT 'default', a1 Array(UInt64) DEFAULT []) PRIMARY KEY k1 SOURCE(CLICKHOUSE(db='test_db', table='dict1')) LAYOUT(FLAT()) LIFETIME(MIN 1000 MAX 2000) SETTINGS cache_size = 1000 COMMENT 'for tests'", 0, false},
464+
{"CREATE OR REPLACE DICTIONARY IF NOT EXISTS `test_db`.dict1 (k1 UInt64 (k1 + 1), k2 String DEFAULT 'default', a1 Array(UInt64) DEFAULT []) PRIMARY KEY k1 SOURCE(CLICKHOUSE(db='test_db', table='dict1')) LAYOUT(FLAT()) LIFETIME(MIN 1000 MAX 2000) SETTINGS cache_size = 1000 COMMENT 'for tests'", 0, false},
465+
{"CREATE OR REPLACE DICTIONARY IF NOT EXISTS `dict1` (k1 UInt64 (k1 + 1), k2 String DEFAULT 'default', a1 Array(UInt64) DEFAULT []) PRIMARY KEY k1 SOURCE(CLICKHOUSE(db='test_db', table='dict1')) LAYOUT(FLAT()) LIFETIME(MIN 1000 MAX 2000) SETTINGS cache_size = 1000 COMMENT 'for tests'", 0, false},
466+
{"CREATE FUNCTION test_func AS () -> 10", 0, false},
467+
{"CREATE FUNCTION test_func AS (x) -> 10 * x", 0, false},
468+
{"CREATE FUNCTION test_func AS (x, y) -> y * x", 0, false},
469+
{"CREATE FUNCTION test_func ON CLUSTER `cluster` AS (x, y) -> y * x", 0, false},
470+
{"CREATE USER IF NOT EXISTS `user`", 0, false},
471+
{"CREATE USER IF NOT EXISTS `user` ON CLUSTER `cluster`", 0, false},
472+
{"CREATE ROLE IF NOT EXISTS `role1` ON CLUSTER", 0, false},
473+
{"CREATE ROW POLICY pol1 ON mydb.table1 USING b=1 TO mira, peter", 0, false},
474+
{"CREATE ROW POLICY pol2 ON mydb.table1 USING c=2 TO peter, antonio", 0, false},
475+
{"CREATE ROW POLICY pol2 ON mydb.table1 USING c=2 AS RESTRICTIVE TO peter, antonio", 0, false},
476+
{"CREATE QUOTA qA FOR INTERVAL 15 month MAX queries = 123 TO CURRENT_USER", 0, false},
477+
{"CREATE QUOTA qB FOR INTERVAL 30 minute MAX execution_time = 0.5, FOR INTERVAL 5 quarter MAX queries = 321, errors = 10 TO default", 0, false},
478+
{"CREATE SETTINGS PROFILE max_memory_usage_profile SETTINGS max_memory_usage = 100000001 MIN 90000000 MAX 110000000 TO robin", 0, false},
479+
{"CREATE NAMED COLLECTION foobar AS a = '1', b = '2' OVERRIDABLE", 0, false},
480+
481+
482+
};
483+
}
421484
}

0 commit comments

Comments
 (0)