You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/SqlParserTest.java
+97-1Lines changed: 97 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -281,6 +281,7 @@ public Object[][] testMiscStmtDp() {
281
281
{"insert into `events` (s) values ('a')", 0},
282
282
{"SELECT COUNT(*) > 0 FROM system.databases WHERE name = ?", 1},
283
283
{"SELECT count(*) > 0 FROM system.databases WHERE c1 = ?", 1},
284
+
{"SELECT COUNT() FROM system.databases WHERE name = ?", 1},
284
285
{"alter table user delete where reg_time = ?", 1},
285
286
{"SELECT * FROM a,b WHERE id > ?", 1},
286
287
{"DROP USER IF EXISTS default_impersonation_user", 0},
@@ -304,13 +305,108 @@ public Object[][] testMiscStmtDp() {
304
305
{"GRANT ON CLUSTER '{cluster}' `metabase_test_role`, `metabase-test-role` TO `metabase_test_user`", 0},
305
306
{"SELECT * FROM `test_data`.`categories` WHERE id = 1::String or id = ?", 1},
306
307
{"SELECT * FROM `test_data`.`categories` WHERE id = cast(1 as String) or id = ?", 1},
308
+
{"select * from test_data.categories WHERE test_data.categories.name = ? limit 4", 1},
307
309
{INSERT_INLINE_DATA, 0},
308
-
{"select sum(value) from `uuid_filter_db`.`uuid_filter_table` WHERE `uuid_filter_db`.`uuid_filter_table`.`uuid` IN (CAST('36f7f85c-d7f4-49e2-af05-f45d5f6636ad' AS UUID))", 0},
310
+
{"select sum(value) from `uuid_filter_db`.`uuid_filter_table` WHERE `uuid_filter_db`.`uuid_filter_table`.`uuid` IN (CAST('36f7f85c-d7f4-49e2-af05-f45d5f6636ad' AS UUID))", 0},
311
+
{"SELECT DISTINCT ON (column) FROM table WHERE column > ?", 1},
312
+
{"SELECT * FROM test_table \nUNION\n DISTINCT SELECT * FROM test_table", 0},
313
+
{"SELECT * FROM test_table \nUNION\n ALL SELECT * FROM test_table", 0},
314
+
{"SELECT * FROM test_table1 \nUNION\n SELECT * FROM test_table2 WHERE test_table2.column1 = ?", 1},
315
+
{COMPLEX_CTE, 4},
316
+
{SIMPLE_CTE, 0},
317
+
{CTE_CONSTANT_AS_VARIABLE, 1},
318
+
{"select toYear(dt) year from test WHERE val=?", 1},
319
+
{"select 1 year, 2 hour, 3 minute, 4 second", 0},
320
+
{"select toYear(dt) AS year from test WHERE val=?", 1},
321
+
{"select toYear(dt) AS yearx from test WHERE val=?", 1},
322
+
{"SELECT v FROM t WHERE f in (?)", 1},
323
+
{"SELECT v FROM t WHERE a > 10 AND event NOT IN (?)", 1},
324
+
{"SELECT v FROM t WHERE f in (1, 2, 3)", 0},
325
+
{"with ? as val1, numz as (select val1, number from system.numbers limit 10) select * from numz", 1}
309
326
};
310
327
}
311
328
312
329
privatestaticfinalStringINSERT_INLINE_DATA =
313
330
"INSERT INTO `interval_15_XUTLZWBLKMNZZPRZSKRF`.`checkins` (`timestamp`, `id`) " +
privatestaticfinalStringCOMPLEX_CTE = "WITH ? AS starting_time, ? AS ending_time, 0 AS session_timeout, '{start}' AS starting_event, '{end}' AS ending_event, SessionData AS (\n" +
334
+
" WITH\n" +
335
+
" date,\n" +
336
+
" arraySort(\n" +
337
+
" groupArray(\n" +
338
+
" (\n" +
339
+
" tracking.event.time,\n" +
340
+
" tracking.event.event\n" +
341
+
" )\n" +
342
+
" )\n" +
343
+
" ) AS _sorted_events,\n" +
344
+
" arrayEnumerate(_sorted_events) AS _event_serial,\n" +
345
+
" arrayDifference(_sorted_events.1) AS _event_time_diff,\n" +
346
+
" \n" +
347
+
" arrayFilter(\n" +
348
+
" (x, y, z) -> y > session_timeout OR z.2 = starting_event,\n" +
349
+
" _event_serial,\n" +
350
+
" _event_time_diff,\n" +
351
+
" _sorted_events\n" +
352
+
" ) AS _gap_index_1,\n" +
353
+
"\n" +
354
+
" arrayFilter(\n" +
355
+
" (x, y) -> y.2 = ending_event,\n" +
356
+
" _event_serial,\n" +
357
+
" _sorted_events\n" +
358
+
" ) AS _gap_index_2_,\n" +
359
+
" arrayMap(\n" +
360
+
" x -> x + 1,\n" +
361
+
" _gap_index_2_\n" +
362
+
" ) AS _gap_index_2,\n" +
363
+
"\n" +
364
+
" arrayMap(x -> if (has(_gap_index_1,x) OR has(_gap_index_2,x), 1, 0), _event_serial) AS _session_splitter,\n" +
365
+
" arraySplit((x, y) -> y, _sorted_events, _session_splitter) AS _session_chain\n" +
366
+
" SELECT\n" +
367
+
" date,\n" +
368
+
" user_id AS user_id,\n" +
369
+
" arrayJoin(_session_chain) AS event_chain,\n" +
370
+
" \n" +
371
+
" arrayCompact(x -> x.2, event_chain) AS event_chain_dedup\n" +
372
+
" FROM tracking.event\n" +
373
+
" WHERE\n" +
374
+
" project=? AND time>=starting_time AND time<ending_time\n" +
375
+
" AND event NOT IN (?)\n" +
376
+
" GROUP BY\n" +
377
+
" date,\n" +
378
+
" user_id\n" +
379
+
"),\n" +
380
+
"SessionOverallInfo AS (\n" +
381
+
" SELECT\n" +
382
+
" date,\n" +
383
+
" COUNT(*) AS number_of_sessions\n" +
384
+
" FROM SessionData\n" +
385
+
" GROUP BY date\n" +
386
+
")\n" +
387
+
"SELECT\n" +
388
+
" SessionOverallInfo.date, SessionOverallInfo.number_of_sessions AS number_of_total_sessions\n" +
0 commit comments