feat: collect entity (#265)
* feat: add text and word utils * feat: add entity collector class * refactor: rename SyntaxContextType to EntityContextType * refactor: improve EntityCollector * feat: improve mysql parser grammar * feat: add mysql entity collector * test: mysql entity collector tests * feat: remove useless method * feat: improve spark grammar file * feat: add spark entity collector * test: spark entity collector unit tests * feat: remove useless code * feat: add queryStatement label * feat: add crateDatabaseStmt * feat: add trino entity collector * feat: rename trinosql to trino * test: trino collect entity unit tests * test: fix spark test * feat(impala): support impale entity collector (#256) * Feat/collect entity hive (#263) * feat(hive): support hive collect entity * feat(hive): update tableAllColumns * feat: replace antlr4ts with antlr4ng * feat(pgsql): pgsql collect entity (#268) * feat(pgsql): pgsql collect entity * feat(pgsql): optimize some name --------- Co-authored-by: zhaoge <> * feat: get word text by token.text * feat: supprt collect db/function and add splitListener (#270) * feat: supprt collect db/function and add splitListner * feat: remove SplitListener interface in baseParser to use SplitListener in root * fix(mysql): fix show create xxx not celloct as createXXXEntity type * test: fix pgsql unit tests * Feat/error recover predicate (#274) * feat: optimize pgsql grammar * feat: add sql parser base * feat: apply SQLParserBase * feat: add geAllEntities method * test: test collect table when missing column * feat: compose collect and suggestion (#276) * feat: mark stmt which contain caret * test: correct name of getAllEntities * test: remove misscolumn unit tests * test: add suggestionWithEntity tests * feat: flink collect entity (#277) * feat: improve flink sql parser * feat: support flink entity collector * test: flink entity collect unit test * feat: move combine entities to parent class --------- Co-authored-by: 霜序 <976060700@qq.com> Co-authored-by: XCynthia <942884029@qq.com>
This commit is contained in:
		@ -0,0 +1,5 @@
 | 
			
		||||
ALTER MATERIALIZED VIEW people RENAME TO users;
 | 
			
		||||
ALTER MATERIALIZED VIEW IF EXISTS people RENAME TO users;
 | 
			
		||||
ALTER MATERIALIZED VIEW people SET PROPERTIES x = 'y';
 | 
			
		||||
ALTER MATERIALIZED VIEW people SET PROPERTIES foo = 123, bar = 456;
 | 
			
		||||
ALTER MATERIALIZED VIEW people SET PROPERTIES x = DEFAULT;
 | 
			
		||||
							
								
								
									
										7
									
								
								test/parser/trino/syntax/fixtures/alter_schema.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								test/parser/trino/syntax/fixtures/alter_schema.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
			
		||||
ALTER SCHEMA foo RENAME TO bar;
 | 
			
		||||
ALTER SCHEMA foo.bar RENAME TO baz;
 | 
			
		||||
ALTER SCHEMA "awesome schema"."awesome table" RENAME TO "even more awesome table";
 | 
			
		||||
 | 
			
		||||
ALTER SCHEMA web SET AUTHORIZATION alice;
 | 
			
		||||
ALTER SCHEMA web SET AUTHORIZATION ROLE alice;
 | 
			
		||||
ALTER SCHEMA web SET AUTHORIZATION USER alice;
 | 
			
		||||
							
								
								
									
										15
									
								
								test/parser/trino/syntax/fixtures/alter_table.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								test/parser/trino/syntax/fixtures/alter_table.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,15 @@
 | 
			
		||||
ALTER TABLE users RENAME TO people;
 | 
			
		||||
ALTER TABLE IF EXISTS users RENAME TO people;
 | 
			
		||||
ALTER TABLE users ADD COLUMN zip varchar;
 | 
			
		||||
ALTER TABLE IF EXISTS users ADD COLUMN IF NOT EXISTS zip varchar;
 | 
			
		||||
ALTER TABLE users DROP COLUMN zip;
 | 
			
		||||
ALTER TABLE IF EXISTS users DROP COLUMN IF EXISTS zip;
 | 
			
		||||
ALTER TABLE users RENAME COLUMN id TO user_id;
 | 
			
		||||
ALTER TABLE IF EXISTS users RENAME column IF EXISTS id to user_id;
 | 
			
		||||
ALTER TABLE people SET AUTHORIZATION alice;
 | 
			
		||||
ALTER TABLE people SET AUTHORIZATION ROLE PUBLIC;
 | 
			
		||||
ALTER TABLE people SET PROPERTIES x = 'y';
 | 
			
		||||
ALTER TABLE people SET PROPERTIES foo = 123, "foo bar" = 456;
 | 
			
		||||
ALTER TABLE people SET PROPERTIES x = DEFAULT;
 | 
			
		||||
ALTER TABLE hive.schema.test_table EXECUTE optimize(file_size_threshold => '10MB');
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								test/parser/trino/syntax/fixtures/alter_view.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								test/parser/trino/syntax/fixtures/alter_view.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
ALTER VIEW people RENAME TO users;
 | 
			
		||||
ALTER VIEW people SET AUTHORIZATION alice;
 | 
			
		||||
ALTER VIEW people SET AUTHORIZATION USER alice;
 | 
			
		||||
ALTER VIEW people SET AUTHORIZATION ROLE alice;
 | 
			
		||||
							
								
								
									
										4
									
								
								test/parser/trino/syntax/fixtures/analyze.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								test/parser/trino/syntax/fixtures/analyze.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
ANALYZE foo;
 | 
			
		||||
ANALYZE foo WITH ( "string" = 'bar', "long" = 42, computed = concat('ban', 'ana'), a = ARRAY[ 'v1', 'v2' ] );
 | 
			
		||||
EXPLAIN ANALYZE foo;
 | 
			
		||||
EXPLAIN ANALYZE ANALYZE foo;
 | 
			
		||||
							
								
								
									
										3
									
								
								test/parser/trino/syntax/fixtures/call.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								test/parser/trino/syntax/fixtures/call.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
CALL foo();
 | 
			
		||||
CALL foo(123, a => 1, b => 'go', 456);
 | 
			
		||||
CALL catalog.schema.test();
 | 
			
		||||
							
								
								
									
										7
									
								
								test/parser/trino/syntax/fixtures/comment.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								test/parser/trino/syntax/fixtures/comment.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
			
		||||
COMMENT ON TABLE users IS 'master table';
 | 
			
		||||
 | 
			
		||||
COMMENT ON COLUMN users.name IS 'full name';
 | 
			
		||||
 | 
			
		||||
SHOW COMMENT ON COLUMN column1;
 | 
			
		||||
 | 
			
		||||
SHOW COMMENT ON TABLE table1;
 | 
			
		||||
							
								
								
									
										2
									
								
								test/parser/trino/syntax/fixtures/commit.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								test/parser/trino/syntax/fixtures/commit.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
COMMIT;
 | 
			
		||||
COMMIT WORK;
 | 
			
		||||
@ -0,0 +1,5 @@
 | 
			
		||||
CREATE MATERIALIZED VIEW a AS SELECT * FROM t;
 | 
			
		||||
CREATE OR REPLACE MATERIALIZED VIEW catalog.schema.matview COMMENT 'A simple materialized view' AS SELECT * FROM catalog2.schema2.tab;
 | 
			
		||||
CREATE OR REPLACE MATERIALIZED VIEW catalog.schema.matview COMMENT 'A simple materialized view' AS SELECT * FROM catalog2.schema2.tab;
 | 
			
		||||
CREATE OR REPLACE MATERIALIZED VIEW catalog.schema.matview COMMENT 'A simple materialized view'WITH (partitioned_by = ARRAY ['dateint']) AS SELECT * FROM catalog2.schema2.tab;
 | 
			
		||||
CREATE OR REPLACE MATERIALIZED VIEW catalog.schema.matview COMMENT 'A partitioned materialized view' WITH (partitioned_by = ARRAY ['dateint']) AS WITH a (t, u) AS (SELECT * FROM x), b AS (SELECT * FROM a) TABLE b;
 | 
			
		||||
							
								
								
									
										10
									
								
								test/parser/trino/syntax/fixtures/create_role.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								test/parser/trino/syntax/fixtures/create_role.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
			
		||||
CREATE ROLE role;
 | 
			
		||||
CREATE ROLE role1 WITH ADMIN admin;
 | 
			
		||||
CREATE ROLE "role" WITH ADMIN "admin";
 | 
			
		||||
CREATE ROLE "ro le" WITH ADMIN "ad min";
 | 
			
		||||
CREATE ROLE "!@#$%^&*'" WITH ADMIN "ад""мін";
 | 
			
		||||
CREATE ROLE role2 WITH ADMIN USER admin1;
 | 
			
		||||
CREATE ROLE role2 WITH ADMIN ROLE role1;
 | 
			
		||||
CREATE ROLE role2 WITH ADMIN CURRENT_USER;
 | 
			
		||||
CREATE ROLE role2 WITH ADMIN CURRENT_ROLE;
 | 
			
		||||
CREATE ROLE role WITH ADMIN CURRENT_ROLE IN my_catalog;
 | 
			
		||||
							
								
								
									
										4
									
								
								test/parser/trino/syntax/fixtures/create_schema.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								test/parser/trino/syntax/fixtures/create_schema.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
CREATE SCHEMA test;
 | 
			
		||||
CREATE SCHEMA IF NOT EXISTS test;
 | 
			
		||||
CREATE SCHEMA test WITH (a = 'apple', b = 123);
 | 
			
		||||
CREATE SCHEMA "some name that contains space";
 | 
			
		||||
							
								
								
									
										2
									
								
								test/parser/trino/syntax/fixtures/create_table.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								test/parser/trino/syntax/fixtures/create_table.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
CREATE TABLE IF NOT EXISTS bar (LIKE like_table);
 | 
			
		||||
CREATE TABLE IF NOT EXISTS bar (LIKE like_table INCLUDING PROPERTIES);
 | 
			
		||||
							
								
								
									
										19
									
								
								test/parser/trino/syntax/fixtures/create_table_as_select.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								test/parser/trino/syntax/fixtures/create_table_as_select.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
			
		||||
CREATE TABLE foo AS SELECT * FROM t;
 | 
			
		||||
CREATE TABLE foo(x) AS SELECT a FROM t;
 | 
			
		||||
CREATE TABLE foo(x,y) AS SELECT a,b FROM t;
 | 
			
		||||
CREATE TABLE IF NOT EXISTS foo AS SELECT * FROM t;
 | 
			
		||||
CREATE TABLE IF NOT EXISTS foo(x) AS SELECT a FROM t;
 | 
			
		||||
CREATE TABLE IF NOT EXISTS foo(x,y) AS SELECT a,b FROM t;
 | 
			
		||||
CREATE TABLE foo AS SELECT * FROM t WITH NO DATA;
 | 
			
		||||
CREATE TABLE foo(x) AS SELECT a FROM t WITH NO DATA;
 | 
			
		||||
CREATE TABLE foo(x,y) AS SELECT a,b FROM t WITH NO DATA;
 | 
			
		||||
CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a  = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t;
 | 
			
		||||
CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a  = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t;
 | 
			
		||||
CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a  = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t;
 | 
			
		||||
CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a  = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA;
 | 
			
		||||
CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a  = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA;
 | 
			
		||||
CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a  = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA;
 | 
			
		||||
CREATE TABLE foo COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a  = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA;
 | 
			
		||||
CREATE TABLE foo(x) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a  = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA;
 | 
			
		||||
CREATE TABLE foo(x,y) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a  = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA;
 | 
			
		||||
CREATE TABLE foo(x,y) COMMENT 'test'WITH ( "string" = 'bar', "long" = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA;
 | 
			
		||||
							
								
								
									
										11
									
								
								test/parser/trino/syntax/fixtures/create_view.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								test/parser/trino/syntax/fixtures/create_view.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
			
		||||
CREATE VIEW a AS SELECT * FROM t;
 | 
			
		||||
CREATE OR REPLACE VIEW a AS SELECT * FROM t;
 | 
			
		||||
CREATE VIEW a SECURITY DEFINER AS SELECT * FROM t;
 | 
			
		||||
CREATE VIEW a SECURITY INVOKER AS SELECT * FROM t;
 | 
			
		||||
CREATE VIEW a COMMENT 'comment' SECURITY DEFINER AS SELECT * FROM t;
 | 
			
		||||
CREATE VIEW a COMMENT '' SECURITY INVOKER AS SELECT * FROM t;
 | 
			
		||||
CREATE VIEW a COMMENT 'comment' AS SELECT * FROM t;
 | 
			
		||||
CREATE VIEW a COMMENT '' AS SELECT * FROM t;
 | 
			
		||||
CREATE VIEW bar.foo AS SELECT * FROM t;
 | 
			
		||||
CREATE VIEW "awesome view" AS SELECT * FROM t;
 | 
			
		||||
CREATE VIEW "awesome schema"."awesome view" AS SELECT * FROM t;
 | 
			
		||||
							
								
								
									
										1
									
								
								test/parser/trino/syntax/fixtures/deallocate_prepare.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								test/parser/trino/syntax/fixtures/deallocate_prepare.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
DEALLOCATE PREPARE my_query;
 | 
			
		||||
							
								
								
									
										5
									
								
								test/parser/trino/syntax/fixtures/delete.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								test/parser/trino/syntax/fixtures/delete.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
DELETE FROM t;
 | 
			
		||||
DELETE FROM "awesome table";
 | 
			
		||||
DELETE FROM t WHERE a = b;
 | 
			
		||||
DELETE FROM lineitem
 | 
			
		||||
WHERE orderkey IN (SELECT orderkey FROM orders WHERE priority = 'LOW');
 | 
			
		||||
							
								
								
									
										4
									
								
								test/parser/trino/syntax/fixtures/deny.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								test/parser/trino/syntax/fixtures/deny.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
DENY INSERT, DELETE ON t TO u;
 | 
			
		||||
DENY UPDATE ON t TO u;
 | 
			
		||||
DENY ALL PRIVILEGES ON TABLE t TO USER u;
 | 
			
		||||
DENY SELECT ON SCHEMA s TO USER u;
 | 
			
		||||
							
								
								
									
										6
									
								
								test/parser/trino/syntax/fixtures/describe.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								test/parser/trino/syntax/fixtures/describe.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
			
		||||
-- DESCRIBE INPUT
 | 
			
		||||
DESCRIBE INPUT myquery;
 | 
			
		||||
-- DESCRIBE OUTPUT
 | 
			
		||||
DESCRIBE OUTPUT myquery;
 | 
			
		||||
-- DESCRIBLE  table_name
 | 
			
		||||
DESCRIBE table_name;
 | 
			
		||||
							
								
								
									
										5
									
								
								test/parser/trino/syntax/fixtures/drop_column.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								test/parser/trino/syntax/fixtures/drop_column.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
ALTER TABLE foo.t DROP COLUMN c;
 | 
			
		||||
ALTER TABLE "t x" DROP COLUMN "c d";
 | 
			
		||||
ALTER TABLE IF EXISTS foo.t DROP COLUMN c;
 | 
			
		||||
ALTER TABLE foo.t DROP COLUMN IF EXISTS c;
 | 
			
		||||
ALTER TABLE IF EXISTS foo.t DROP COLUMN IF EXISTS c;
 | 
			
		||||
@ -0,0 +1,6 @@
 | 
			
		||||
DROP MATERIALIZED VIEW a;
 | 
			
		||||
DROP MATERIALIZED VIEW a.b;
 | 
			
		||||
DROP MATERIALIZED VIEW a.b.c;
 | 
			
		||||
DROP MATERIALIZED VIEW IF EXISTS a;
 | 
			
		||||
DROP MATERIALIZED VIEW IF EXISTS a.b;
 | 
			
		||||
DROP MATERIALIZED VIEW IF EXISTS a.b.c;
 | 
			
		||||
							
								
								
									
										4
									
								
								test/parser/trino/syntax/fixtures/drop_role.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								test/parser/trino/syntax/fixtures/drop_role.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
DROP ROLE role;
 | 
			
		||||
DROP ROLE "role";
 | 
			
		||||
DROP ROLE "ro le";
 | 
			
		||||
DROP ROLE "!@#$%^&*'ад""мін";
 | 
			
		||||
							
								
								
									
										5
									
								
								test/parser/trino/syntax/fixtures/drop_schema.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								test/parser/trino/syntax/fixtures/drop_schema.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
DROP SCHEMA test;
 | 
			
		||||
DROP SCHEMA test CASCADE;
 | 
			
		||||
DROP SCHEMA IF EXISTS test;
 | 
			
		||||
DROP SCHEMA IF EXISTS test RESTRICT;
 | 
			
		||||
DROP SCHEMA "some schema that contains space";
 | 
			
		||||
							
								
								
									
										8
									
								
								test/parser/trino/syntax/fixtures/drop_table.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								test/parser/trino/syntax/fixtures/drop_table.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,8 @@
 | 
			
		||||
DROP TABLE a;
 | 
			
		||||
DROP TABLE a.b;
 | 
			
		||||
DROP TABLE a.b.c;
 | 
			
		||||
DROP TABLE a."b/y".c;
 | 
			
		||||
DROP TABLE IF EXISTS a;
 | 
			
		||||
DROP TABLE IF EXISTS a.b;
 | 
			
		||||
DROP TABLE IF EXISTS a.b.c;
 | 
			
		||||
DROP TABLE IF EXISTS a."b/y".c;
 | 
			
		||||
							
								
								
									
										6
									
								
								test/parser/trino/syntax/fixtures/drop_view.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								test/parser/trino/syntax/fixtures/drop_view.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
			
		||||
DROP VIEW a;
 | 
			
		||||
DROP VIEW a.b;
 | 
			
		||||
DROP VIEW a.b.c;
 | 
			
		||||
DROP VIEW IF EXISTS a;
 | 
			
		||||
DROP VIEW IF EXISTS a.b;
 | 
			
		||||
DROP VIEW IF EXISTS a.b.c;
 | 
			
		||||
							
								
								
									
										11
									
								
								test/parser/trino/syntax/fixtures/execute.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								test/parser/trino/syntax/fixtures/execute.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
			
		||||
PREPARE my_select1 FROM
 | 
			
		||||
SELECT name FROM nation;
 | 
			
		||||
 | 
			
		||||
EXECUTE my_select1;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- execute with using
 | 
			
		||||
PREPARE my_select2 FROM
 | 
			
		||||
SELECT name FROM nation WHERE regionkey = ? and nationkey < ?;
 | 
			
		||||
 | 
			
		||||
EXECUTE my_select2 USING 1, 3;
 | 
			
		||||
							
								
								
									
										6
									
								
								test/parser/trino/syntax/fixtures/explain.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								test/parser/trino/syntax/fixtures/explain.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
			
		||||
EXPLAIN SELECT * FROM t;
 | 
			
		||||
EXPLAIN (TYPE LOGICAL) SELECT * FROM t;
 | 
			
		||||
EXPLAIN (TYPE LOGICAL, FORMAT TEXT) SELECT * FROM t;
 | 
			
		||||
-- EXPLAIN ANALYZE
 | 
			
		||||
EXPLAIN ANALYZE SELECT * FROM t;
 | 
			
		||||
EXPLAIN ANALYZE VERBOSE SELECT * FROM t;
 | 
			
		||||
							
								
								
									
										15
									
								
								test/parser/trino/syntax/fixtures/grant.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								test/parser/trino/syntax/fixtures/grant.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,15 @@
 | 
			
		||||
GRANT INSERT, DELETE ON t TO u;
 | 
			
		||||
GRANT UPDATE ON t TO u;
 | 
			
		||||
GRANT SELECT ON t TO ROLE PUBLIC WITH GRANT OPTION;
 | 
			
		||||
GRANT ALL PRIVILEGES ON TABLE t TO USER u;
 | 
			
		||||
GRANT DELETE ON "t" TO ROLE "public" WITH GRANT OPTION;
 | 
			
		||||
GRANT SELECT ON SCHEMA s TO USER u;
 | 
			
		||||
-- GRANT role
 | 
			
		||||
GRANT role1 TO user1;
 | 
			
		||||
GRANT role1, role2, role3 TO user1, USER user2, ROLE role4 WITH ADMIN OPTION;
 | 
			
		||||
GRANT role1 TO user1 WITH ADMIN OPTION GRANTED BY admin;
 | 
			
		||||
GRANT role1 TO USER user1 WITH ADMIN OPTION GRANTED BY USER admin;
 | 
			
		||||
GRANT role1 TO ROLE role2 WITH ADMIN OPTION GRANTED BY ROLE admin;
 | 
			
		||||
GRANT role1 TO ROLE role2 GRANTED BY ROLE admin;
 | 
			
		||||
GRANT "role1" TO ROLE "role2" GRANTED BY ROLE "admin";
 | 
			
		||||
GRANT role1 TO user1 IN my_catalog;
 | 
			
		||||
							
								
								
									
										1
									
								
								test/parser/trino/syntax/fixtures/implicit_join.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								test/parser/trino/syntax/fixtures/implicit_join.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
SELECT * FROM a, b;
 | 
			
		||||
							
								
								
									
										12
									
								
								test/parser/trino/syntax/fixtures/insert_into.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								test/parser/trino/syntax/fixtures/insert_into.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
			
		||||
INSERT INTO orders
 | 
			
		||||
SELECT * FROM new_orders;
 | 
			
		||||
 | 
			
		||||
INSERT INTO cities VALUES (1, 'San Francisco');
 | 
			
		||||
 | 
			
		||||
INSERT INTO cities VALUES (2, 'San Jose'), (3, 'Oakland');
 | 
			
		||||
 | 
			
		||||
INSERT INTO nation (nationkey, name, regionkey, comment)
 | 
			
		||||
VALUES (26, 'POLAND', 3, 'no comment');
 | 
			
		||||
 | 
			
		||||
INSERT INTO nation (nationkey, name, regionkey)
 | 
			
		||||
VALUES (26, 'POLAND', 3);
 | 
			
		||||
							
								
								
									
										16
									
								
								test/parser/trino/syntax/fixtures/match_recognize.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								test/parser/trino/syntax/fixtures/match_recognize.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
			
		||||
SELECT * FROM orders MATCH_RECOGNIZE(
 | 
			
		||||
     PARTITION BY custkey
 | 
			
		||||
     ORDER BY orderdate
 | 
			
		||||
     MEASURES
 | 
			
		||||
              A.totalprice AS starting_price,
 | 
			
		||||
              LAST(B.totalprice) AS bottom_price,
 | 
			
		||||
              LAST(U.totalprice) AS top_price
 | 
			
		||||
     ONE ROW PER MATCH
 | 
			
		||||
     AFTER MATCH SKIP PAST LAST ROW
 | 
			
		||||
     PATTERN (A B+ C+ D+)
 | 
			
		||||
     SUBSET U = (C, D)
 | 
			
		||||
     DEFINE
 | 
			
		||||
              B AS totalprice < PREV(totalprice),
 | 
			
		||||
              C AS totalprice > PREV(totalprice) AND totalprice <= A.totalprice,
 | 
			
		||||
              D AS totalprice > PREV(totalprice)
 | 
			
		||||
     );
 | 
			
		||||
							
								
								
									
										1
									
								
								test/parser/trino/syntax/fixtures/merge.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								test/parser/trino/syntax/fixtures/merge.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
MERGE INTO inventory AS i   USING changes AS c   ON i.part = c.part WHEN MATCHED AND c.action = 'mod'   THEN UPDATE SET     qty = qty + c.qty   , ts = CURRENT_TIMESTAMP WHEN MATCHED AND c.action = 'del'   THEN DELETE WHEN NOT MATCHED AND c.action = 'new'   THEN INSERT (part, qty) VALUES (c.part, c.qty);
 | 
			
		||||
							
								
								
									
										9
									
								
								test/parser/trino/syntax/fixtures/prepare.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								test/parser/trino/syntax/fixtures/prepare.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
			
		||||
PREPARE myquery FROM select * from foo;
 | 
			
		||||
PREPARE myquery FROM SELECT ?, ? FROM foo;
 | 
			
		||||
PREPARE myquery FROM SELECT * FROM foo LIMIT ?;
 | 
			
		||||
PREPARE myquery FROM SELECT ?, ? FROM foo LIMIT ?;
 | 
			
		||||
PREPARE myquery FROM SELECT ? FROM foo FETCH FIRST ? ROWS ONLY;
 | 
			
		||||
PREPARE myquery FROM SELECT ?, ? FROM foo FETCH NEXT ? ROWS WITH TIES;
 | 
			
		||||
PREPARE myquery FROM SELECT ?, ? FROM foo OFFSET ? ROWS;
 | 
			
		||||
PREPARE myquery FROM SELECT ? FROM foo OFFSET ? ROWS LIMIT ?;
 | 
			
		||||
PREPARE myquery FROM SELECT ? FROM foo OFFSET ? ROWS FETCH FIRST ? ROWS WITH TIES;
 | 
			
		||||
@ -0,0 +1,2 @@
 | 
			
		||||
REFRESH MATERIALIZED VIEW test;
 | 
			
		||||
REFRESH MATERIALIZED VIEW "some name that contains space";
 | 
			
		||||
							
								
								
									
										2
									
								
								test/parser/trino/syntax/fixtures/reset_session.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								test/parser/trino/syntax/fixtures/reset_session.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
RESET SESSION foo.bar;
 | 
			
		||||
RESET SESSION foo;
 | 
			
		||||
							
								
								
									
										6
									
								
								test/parser/trino/syntax/fixtures/revoke.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								test/parser/trino/syntax/fixtures/revoke.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
			
		||||
REVOKE INSERT, DELETE ON t FROM u;
 | 
			
		||||
REVOKE UPDATE ON t FROM u;
 | 
			
		||||
REVOKE GRANT OPTION FOR SELECT ON t FROM ROLE PUBLIC;
 | 
			
		||||
REVOKE ALL PRIVILEGES ON TABLE t FROM USER u;
 | 
			
		||||
REVOKE DELETE ON TABLE "t" FROM "u";
 | 
			
		||||
REVOKE SELECT ON SCHEMA s FROM USER u;
 | 
			
		||||
							
								
								
									
										7
									
								
								test/parser/trino/syntax/fixtures/revoke_roles.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								test/parser/trino/syntax/fixtures/revoke_roles.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
			
		||||
REVOKE role1 FROM user1;
 | 
			
		||||
REVOKE ADMIN OPTION FOR role1, role2, role3 FROM user1, USER user2, ROLE role4;
 | 
			
		||||
REVOKE ADMIN OPTION FOR role1 FROM user1 GRANTED BY admin;
 | 
			
		||||
REVOKE ADMIN OPTION FOR role1 FROM USER user1 GRANTED BY USER admin;
 | 
			
		||||
REVOKE role1 FROM ROLE role2 GRANTED BY ROLE admin;
 | 
			
		||||
REVOKE "role1" FROM ROLE "role2" GRANTED BY ROLE "admin";
 | 
			
		||||
REVOKE role1 FROM user1 IN my_catalog;
 | 
			
		||||
@ -0,0 +1,2 @@
 | 
			
		||||
ROLLBACK;
 | 
			
		||||
ROLLBACK WORK;
 | 
			
		||||
							
								
								
									
										117
									
								
								test/parser/trino/syntax/fixtures/select.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								test/parser/trino/syntax/fixtures/select.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,117 @@
 | 
			
		||||
-- DOUBLE IN Query
 | 
			
		||||
SELECT 123.456E7 FROM DUAL;
 | 
			
		||||
-- GROUP BY 
 | 
			
		||||
SELECT * FROM table1 GROUP BY a;
 | 
			
		||||
SELECT * FROM table1 GROUP BY a, b;
 | 
			
		||||
SELECT * FROM table1 GROUP BY ();
 | 
			
		||||
-- GROUP BY GROUPING SETS
 | 
			
		||||
SELECT * FROM table1 GROUP BY GROUPING SETS (a);
 | 
			
		||||
SELECT a, b, GROUPING(a, b) FROM table1 GROUP BY GROUPING SETS ((a), (b));
 | 
			
		||||
-- GROUP BY ROLLUP
 | 
			
		||||
SELECT * FROM table1 GROUP BY ALL GROUPING SETS ((a, b), (a), ()), CUBE (c), ROLLUP (d);
 | 
			
		||||
SELECT * FROM table1 GROUP BY DISTINCT GROUPING SETS ((a, b), (a), ()), CUBE (c), ROLLUP (d);
 | 
			
		||||
-- GROUP BY CUBE
 | 
			
		||||
SELECT origin_state, destination_state, sum(package_weight)
 | 
			
		||||
FROM shipping
 | 
			
		||||
GROUP BY CUBE (origin_state, destination_state);
 | 
			
		||||
-- GROUP BY Combining multiple grouping expressions
 | 
			
		||||
SELECT origin_state, destination_state, origin_zip, sum(package_weight)
 | 
			
		||||
FROM shipping
 | 
			
		||||
GROUP BY
 | 
			
		||||
    GROUPING SETS ((origin_state, destination_state)),
 | 
			
		||||
    ROLLUP (origin_zip);
 | 
			
		||||
 | 
			
		||||
SELECT origin_state, destination_state, origin_zip, sum(package_weight)
 | 
			
		||||
FROM shipping
 | 
			
		||||
GROUP BY GROUPING SETS (
 | 
			
		||||
    (origin_state, destination_state, origin_zip),
 | 
			
		||||
    (origin_state, destination_state)
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
SELECT origin_state, destination_state, origin_zip, sum(package_weight)
 | 
			
		||||
FROM shipping
 | 
			
		||||
GROUP BY
 | 
			
		||||
    GROUPING SETS ((origin_state, destination_state)),
 | 
			
		||||
    GROUPING SETS ((origin_zip), ());
 | 
			
		||||
-- GROUP BY ALL and DISTINCT quantifiers 
 | 
			
		||||
SELECT origin_state, destination_state, origin_zip, sum(package_weight)
 | 
			
		||||
FROM shipping
 | 
			
		||||
GROUP BY ALL
 | 
			
		||||
    CUBE (origin_state, destination_state),
 | 
			
		||||
    ROLLUP (origin_state, origin_zip);
 | 
			
		||||
 | 
			
		||||
SELECT origin_state, destination_state, origin_zip, sum(package_weight)
 | 
			
		||||
FROM shipping
 | 
			
		||||
GROUP BY GROUPING SETS (
 | 
			
		||||
    (origin_state, destination_state, origin_zip),
 | 
			
		||||
    (origin_state, origin_zip),
 | 
			
		||||
    (origin_state, destination_state, origin_zip),
 | 
			
		||||
    (origin_state, origin_zip),
 | 
			
		||||
    (origin_state, destination_state),
 | 
			
		||||
    (origin_state),
 | 
			
		||||
    (origin_state, destination_state),
 | 
			
		||||
    (origin_state),
 | 
			
		||||
    (origin_state, destination_state),
 | 
			
		||||
    (origin_state),
 | 
			
		||||
    (destination_state),
 | 
			
		||||
    ()
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
SELECT origin_state, destination_state, origin_zip, sum(package_weight)
 | 
			
		||||
FROM shipping
 | 
			
		||||
GROUP BY DISTINCT
 | 
			
		||||
    CUBE (origin_state, destination_state),
 | 
			
		||||
    ROLLUP (origin_state, origin_zip);
 | 
			
		||||
 | 
			
		||||
SELECT origin_state, destination_state, origin_zip, sum(package_weight)
 | 
			
		||||
FROM shipping
 | 
			
		||||
GROUP BY GROUPING SETS (
 | 
			
		||||
    (origin_state, destination_state, origin_zip),
 | 
			
		||||
    (origin_state, origin_zip),
 | 
			
		||||
    (origin_state, destination_state),
 | 
			
		||||
    (origin_state),
 | 
			
		||||
    (destination_state),
 | 
			
		||||
    ()
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
-- GROUP BY GROUPING operation
 | 
			
		||||
SELECT origin_state, origin_zip, destination_state, sum(package_weight),
 | 
			
		||||
       grouping(origin_state, origin_zip, destination_state)
 | 
			
		||||
FROM shipping
 | 
			
		||||
GROUP BY GROUPING SETS (
 | 
			
		||||
    (origin_state),
 | 
			
		||||
    (origin_state, origin_zip),
 | 
			
		||||
    (destination_state)
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
-- ORDER BY 
 | 
			
		||||
SELECT * FROM table1 ORDER BY a;
 | 
			
		||||
-- Select expressions
 | 
			
		||||
SELECT (CAST(ROW(1, true) AS ROW(field1 bigint, field2 boolean))).* AS (alias1, alias2);
 | 
			
		||||
SELECT (CAST(ROW(1, true) AS ROW(field1 bigint, field2 boolean))).*;
 | 
			
		||||
SELECT (ROW(1, true)).*;
 | 
			
		||||
-- LIMIT
 | 
			
		||||
SELECT * FROM table1 LIMIT 2;
 | 
			
		||||
SELECT * FROM table1 LIMIT ALL;
 | 
			
		||||
SELECT * FROM (VALUES (1, '1'), (2, '2')) LIMIT ALL;
 | 
			
		||||
-- HAVING
 | 
			
		||||
SELECT count(*), mktsegment, nationkey,
 | 
			
		||||
       CAST(sum(acctbal) AS bigint) AS totalbal
 | 
			
		||||
FROM customer
 | 
			
		||||
GROUP BY mktsegment, nationkey
 | 
			
		||||
HAVING sum(acctbal) > 5700000
 | 
			
		||||
ORDER BY totalbal DESC;
 | 
			
		||||
-- WINDOW
 | 
			
		||||
SELECT orderkey, clerk, totalprice,
 | 
			
		||||
      rank() OVER w AS rnk
 | 
			
		||||
FROM orders
 | 
			
		||||
WINDOW w AS (PARTITION BY clerk ORDER BY totalprice DESC)
 | 
			
		||||
ORDER BY count() OVER w, clerk, rnk
 | 
			
		||||
-- AGGREGATION FILTER/ ORDER BY
 | 
			
		||||
SELECT SUM(x) FILTER (WHERE x > 4);
 | 
			
		||||
SELECT array_agg(x ORDER BY t.y) FROM t;
 | 
			
		||||
-- INTERSECT
 | 
			
		||||
SELECT 123 INTERSECT DISTINCT SELECT 123 INTERSECT ALL SELECT 123;
 | 
			
		||||
-- substring_built_in_function
 | 
			
		||||
SELECT substring('string' FROM 2);
 | 
			
		||||
SELECT substring('string' FROM 2 FOR 3);
 | 
			
		||||
							
								
								
									
										56
									
								
								test/parser/trino/syntax/fixtures/select_with_ unnest.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								test/parser/trino/syntax/fixtures/select_with_ unnest.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,56 @@
 | 
			
		||||
SELECT * FROM UNNEST(ARRAY[1,2]) AS t(number);
 | 
			
		||||
 | 
			
		||||
SELECT * FROM UNNEST(
 | 
			
		||||
        map_from_entries(
 | 
			
		||||
            ARRAY[
 | 
			
		||||
                ('SQL',1974),
 | 
			
		||||
                ('Java', 1995)
 | 
			
		||||
            ]
 | 
			
		||||
        )
 | 
			
		||||
) AS t(language, first_appeared_year);
 | 
			
		||||
 | 
			
		||||
SELECT *
 | 
			
		||||
FROM UNNEST(
 | 
			
		||||
        ARRAY[
 | 
			
		||||
            ROW('Java',  1995),
 | 
			
		||||
            ROW('SQL' , 1974)],
 | 
			
		||||
        ARRAY[
 | 
			
		||||
            ROW(false),
 | 
			
		||||
            ROW(true)]
 | 
			
		||||
) as t(language,first_appeared_year,declarative);
 | 
			
		||||
 | 
			
		||||
SELECT a, b, rownumber
 | 
			
		||||
FROM UNNEST (
 | 
			
		||||
    ARRAY[2, 5],
 | 
			
		||||
    ARRAY[7, 8, 9]
 | 
			
		||||
     ) WITH ORDINALITY AS t(a, b, rownumber);
 | 
			
		||||
 | 
			
		||||
SELECT * FROM UNNEST (ARRAY[]) AS t(value);
 | 
			
		||||
 | 
			
		||||
SELECT * FROM UNNEST (CAST(null AS ARRAY(integer))) AS t(number);
 | 
			
		||||
 | 
			
		||||
SELECT student, score
 | 
			
		||||
FROM (
 | 
			
		||||
   VALUES
 | 
			
		||||
      ('John', ARRAY[7, 10, 9]),
 | 
			
		||||
      ('Mary', ARRAY[4, 8, 9])
 | 
			
		||||
) AS tests (student, scores)
 | 
			
		||||
CROSS JOIN UNNEST(scores) AS t(score);
 | 
			
		||||
 | 
			
		||||
SELECT numbers, animals, n, a
 | 
			
		||||
FROM (
 | 
			
		||||
  VALUES
 | 
			
		||||
    (ARRAY[2, 5], ARRAY['dog', 'cat', 'bird']),
 | 
			
		||||
    (ARRAY[7, 8, 9], ARRAY['cow', 'pig'])
 | 
			
		||||
) AS x (numbers, animals)
 | 
			
		||||
CROSS JOIN UNNEST(numbers, animals) AS t (n, a);
 | 
			
		||||
 | 
			
		||||
SELECT runner, checkpoint
 | 
			
		||||
FROM (
 | 
			
		||||
   VALUES
 | 
			
		||||
      ('Joe', ARRAY[10, 20, 30, 42]),
 | 
			
		||||
      ('Roger', ARRAY[10]),
 | 
			
		||||
      ('Dave', ARRAY[]),
 | 
			
		||||
      ('Levi', NULL)
 | 
			
		||||
) AS marathon (runner, checkpoints)
 | 
			
		||||
LEFT JOIN UNNEST(checkpoints) AS t(checkpoint) ON TRUE;
 | 
			
		||||
							
								
								
									
										28
									
								
								test/parser/trino/syntax/fixtures/select_with_clause.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								test/parser/trino/syntax/fixtures/select_with_clause.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
			
		||||
SELECT a, b
 | 
			
		||||
FROM (
 | 
			
		||||
  SELECT a, MAX(b) AS b FROM t GROUP BY a
 | 
			
		||||
) AS x;
 | 
			
		||||
 | 
			
		||||
WITH x AS (SELECT a, MAX(b) AS b FROM t GROUP BY a)
 | 
			
		||||
SELECT a, b FROM x;
 | 
			
		||||
 | 
			
		||||
WITH
 | 
			
		||||
  t1 AS (SELECT a, MAX(b) AS b FROM x GROUP BY a),
 | 
			
		||||
  t2 AS (SELECT a, AVG(d) AS d FROM y GROUP BY a)
 | 
			
		||||
SELECT t1.*, t2.*
 | 
			
		||||
FROM t1
 | 
			
		||||
JOIN t2 ON t1.a = t2.a;
 | 
			
		||||
 | 
			
		||||
WITH
 | 
			
		||||
  x AS (SELECT a FROM t),
 | 
			
		||||
  y AS (SELECT a AS b FROM x),
 | 
			
		||||
  z AS (SELECT b AS c FROM y)
 | 
			
		||||
SELECT c FROM z;
 | 
			
		||||
 | 
			
		||||
WITH RECURSIVE t(n) AS (
 | 
			
		||||
    VALUES (1)
 | 
			
		||||
    UNION ALL
 | 
			
		||||
    SELECT n + 1 FROM t WHERE n < 4
 | 
			
		||||
)
 | 
			
		||||
SELECT sum(n) FROM t;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								test/parser/trino/syntax/fixtures/select_with_exists.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								test/parser/trino/syntax/fixtures/select_with_exists.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
SELECT EXISTS(SELECT 1);
 | 
			
		||||
SELECT EXISTS(SELECT 1) = EXISTS(SELECT 2);
 | 
			
		||||
SELECT NOT EXISTS(SELECT 1) = EXISTS(SELECT 2);
 | 
			
		||||
SELECT (NOT EXISTS(SELECT 1)) = EXISTS(SELECT 2);
 | 
			
		||||
							
								
								
									
										6
									
								
								test/parser/trino/syntax/fixtures/select_with_fetch.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								test/parser/trino/syntax/fixtures/select_with_fetch.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
			
		||||
SELECT * FROM table1 FETCH FIRST 2 ROWS ONLY;
 | 
			
		||||
SELECT * FROM table1 FETCH NEXT ROW ONLY;
 | 
			
		||||
SELECT * FROM (VALUES (1, '1'), (2, '2')) FETCH FIRST ROW ONLY;
 | 
			
		||||
SELECT * FROM (VALUES (1, '1'), (2, '2')) FETCH FIRST ROW WITH TIES;
 | 
			
		||||
SELECT * FROM table1 FETCH FIRST 2 ROWS WITH TIES;
 | 
			
		||||
SELECT * FROM table1 FETCH NEXT ROW WITH TIES;
 | 
			
		||||
							
								
								
									
										23
									
								
								test/parser/trino/syntax/fixtures/select_with_join.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								test/parser/trino/syntax/fixtures/select_with_join.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,23 @@
 | 
			
		||||
SELECT * FROM users CROSS JOIN UNNEST(friends) WITH ordinality;
 | 
			
		||||
-- LATERAL
 | 
			
		||||
SELECT name, x, y
 | 
			
		||||
FROM nation
 | 
			
		||||
CROSS JOIN LATERAL (SELECT name || ' :-' AS x)
 | 
			
		||||
CROSS JOIN LATERAL (SELECT x || ')' AS y);
 | 
			
		||||
 | 
			
		||||
-- Qualifying column names#
 | 
			
		||||
 | 
			
		||||
SELECT nation.name, region.name
 | 
			
		||||
FROM nation
 | 
			
		||||
CROSS JOIN region;
 | 
			
		||||
 | 
			
		||||
SELECT n.name, r.name
 | 
			
		||||
FROM nation AS n
 | 
			
		||||
CROSS JOIN region AS r;
 | 
			
		||||
 | 
			
		||||
SELECT n.name, r.name
 | 
			
		||||
FROM nation n
 | 
			
		||||
CROSS JOIN region r;
 | 
			
		||||
 | 
			
		||||
SELECT * FROM a CROSS JOIN b LEFT JOIN c ON true;
 | 
			
		||||
SELECT * FROM a CROSS JOIN b NATURAL JOIN c CROSS JOIN d NATURAL JOIN e;
 | 
			
		||||
							
								
								
									
										4
									
								
								test/parser/trino/syntax/fixtures/select_with_offset.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								test/parser/trino/syntax/fixtures/select_with_offset.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
SELECT * FROM table1 OFFSET 2 ROWS;
 | 
			
		||||
SELECT * FROM table1 OFFSET 2;
 | 
			
		||||
SELECT * FROM (VALUES (1, '1'), (2, '2')) OFFSET 2 ROWS;
 | 
			
		||||
SELECT * FROM (VALUES (1, '1'), (2, '2')) OFFSET 2;
 | 
			
		||||
@ -0,0 +1,6 @@
 | 
			
		||||
SELECT col1.f1, col2, col3.f1.f2.f3 FROM table1;
 | 
			
		||||
SELECT col1.f1[0], col2, col3[2].f2.f3, col4[4] FROM table1;
 | 
			
		||||
SELECT CAST(ROW(11, 12) AS ROW(COL0 INTEGER, COL1 INTEGER)).col0;
 | 
			
		||||
-- ALL COLUMNS
 | 
			
		||||
SELECT ROW (1, 'a', true).*;
 | 
			
		||||
SELECT ROW (1, 'a', true).* AS (f1, f2, f3);
 | 
			
		||||
@ -0,0 +1,16 @@
 | 
			
		||||
-- UNION
 | 
			
		||||
SELECT 13
 | 
			
		||||
UNION
 | 
			
		||||
SELECT 42;
 | 
			
		||||
 | 
			
		||||
SELECT 13
 | 
			
		||||
UNION
 | 
			
		||||
SELECT * FROM (VALUES 42, 13);
 | 
			
		||||
-- INTERSECT
 | 
			
		||||
SELECT * FROM (VALUES 13, 42)
 | 
			
		||||
INTERSECT
 | 
			
		||||
SELECT 13;
 | 
			
		||||
--EXCEPT
 | 
			
		||||
SELECT * FROM (VALUES 13, 42)
 | 
			
		||||
EXCEPT
 | 
			
		||||
SELECT 13;
 | 
			
		||||
@ -0,0 +1,20 @@
 | 
			
		||||
-- EXISTS
 | 
			
		||||
SELECT name
 | 
			
		||||
FROM nation
 | 
			
		||||
WHERE EXISTS (
 | 
			
		||||
     SELECT *
 | 
			
		||||
     FROM region
 | 
			
		||||
     WHERE region.regionkey = nation.regionkey
 | 
			
		||||
);
 | 
			
		||||
-- IN
 | 
			
		||||
SELECT name
 | 
			
		||||
FROM nation
 | 
			
		||||
WHERE regionkey IN (
 | 
			
		||||
     SELECT regionkey
 | 
			
		||||
     FROM region
 | 
			
		||||
     WHERE name = 'AMERICA' OR name = 'AFRICA'
 | 
			
		||||
);
 | 
			
		||||
-- Scalar subquery
 | 
			
		||||
SELECT name
 | 
			
		||||
FROM nation
 | 
			
		||||
WHERE regionkey = (SELECT max(regionkey) FROM region);
 | 
			
		||||
@ -0,0 +1,10 @@
 | 
			
		||||
SELECT *
 | 
			
		||||
FROM users TABLESAMPLE BERNOULLI (50);
 | 
			
		||||
 | 
			
		||||
SELECT *
 | 
			
		||||
FROM users TABLESAMPLE SYSTEM (75);
 | 
			
		||||
 | 
			
		||||
SELECT o.*, i.*
 | 
			
		||||
FROM orders o TABLESAMPLE SYSTEM (10)
 | 
			
		||||
JOIN lineitem i TABLESAMPLE BERNOULLI (40)
 | 
			
		||||
  ON o.orderkey = i.orderkey;
 | 
			
		||||
							
								
								
									
										2
									
								
								test/parser/trino/syntax/fixtures/select_with_union.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								test/parser/trino/syntax/fixtures/select_with_union.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
SELECT 123 UNION DISTINCT
 | 
			
		||||
SELECT 123 UNION ALL SELECT 123;
 | 
			
		||||
							
								
								
									
										2
									
								
								test/parser/trino/syntax/fixtures/set_path.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								test/parser/trino/syntax/fixtures/set_path.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
SET PATH iLikeToEat.apples, andBananas;
 | 
			
		||||
SET PATH "schemas,with"."grammar.in", "their!names";
 | 
			
		||||
							
								
								
									
										5
									
								
								test/parser/trino/syntax/fixtures/set_role.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								test/parser/trino/syntax/fixtures/set_role.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
SET ROLE ALL;
 | 
			
		||||
SET ROLE NONE;
 | 
			
		||||
SET ROLE role;
 | 
			
		||||
SET ROLE "role";
 | 
			
		||||
SET ROLE role IN my_catalog;
 | 
			
		||||
							
								
								
									
										4
									
								
								test/parser/trino/syntax/fixtures/set_session.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								test/parser/trino/syntax/fixtures/set_session.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
SET SESSION foo = 'bar';
 | 
			
		||||
SET SESSION foo.bar = 'baz';
 | 
			
		||||
SET SESSION foo.bar.boo = 'baz';
 | 
			
		||||
SET SESSION foo.bar = 'ban' || 'ana';
 | 
			
		||||
							
								
								
									
										10
									
								
								test/parser/trino/syntax/fixtures/set_time_zone.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								test/parser/trino/syntax/fixtures/set_time_zone.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
			
		||||
SET TIME ZONE LOCAL;
 | 
			
		||||
 | 
			
		||||
SET TIME ZONE '-08:00';
 | 
			
		||||
 | 
			
		||||
SET TIME ZONE INTERVAL '10' HOUR;
 | 
			
		||||
SET TIME ZONE INTERVAL -'08:00' HOUR TO MINUTE;
 | 
			
		||||
 | 
			
		||||
SET TIME ZONE 'America/Los_Angeles';
 | 
			
		||||
 | 
			
		||||
SET TIME ZONE concat_ws('/', 'America', 'Los_Angeles');
 | 
			
		||||
							
								
								
									
										3
									
								
								test/parser/trino/syntax/fixtures/show_catalogs.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								test/parser/trino/syntax/fixtures/show_catalogs.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
SHOW CATALOGS;
 | 
			
		||||
SHOW CATALOGS LIKE '%';
 | 
			
		||||
SHOW CATALOGS LIKE '%$_%' ESCAPE '$';
 | 
			
		||||
							
								
								
									
										5
									
								
								test/parser/trino/syntax/fixtures/show_columns.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								test/parser/trino/syntax/fixtures/show_columns.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
SHOW COLUMNS FROM a;
 | 
			
		||||
SHOW COLUMNS FROM a.b;
 | 
			
		||||
SHOW COLUMNS FROM "awesome table";
 | 
			
		||||
SHOW COLUMNS FROM "awesome schema"."awesome table";
 | 
			
		||||
SHOW COLUMNS FROM a.b LIKE '%$_%' ESCAPE '$';
 | 
			
		||||
							
								
								
									
										16
									
								
								test/parser/trino/syntax/fixtures/show_create.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								test/parser/trino/syntax/fixtures/show_create.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
			
		||||
SHOW CREATE TABLE sf1.orders;
 | 
			
		||||
 | 
			
		||||
SHOW CREATE SCHEMA IF NOT EXISTS traffic;
 | 
			
		||||
 | 
			
		||||
SHOW CREATE VIEW test AS
 | 
			
		||||
SELECT orderkey, orderstatus, totalprice / 2 AS half
 | 
			
		||||
FROM orders;
 | 
			
		||||
 | 
			
		||||
SHOW CREATE MATERIALIZED VIEW cancelled_orders
 | 
			
		||||
AS
 | 
			
		||||
    SELECT orderkey, totalprice
 | 
			
		||||
    FROM orders
 | 
			
		||||
    WHERE orderstatus = 3;
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										3
									
								
								test/parser/trino/syntax/fixtures/show_functions.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								test/parser/trino/syntax/fixtures/show_functions.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
SHOW FUNCTIONS;
 | 
			
		||||
SHOW FUNCTIONS LIKE '%';
 | 
			
		||||
SHOW FUNCTIONS LIKE '%' ESCAPE '$';
 | 
			
		||||
							
								
								
									
										3
									
								
								test/parser/trino/syntax/fixtures/show_grants.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								test/parser/trino/syntax/fixtures/show_grants.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
SHOW GRANTS ON TABLE t;
 | 
			
		||||
SHOW GRANTS ON t;
 | 
			
		||||
SHOW GRANTS;
 | 
			
		||||
							
								
								
									
										2
									
								
								test/parser/trino/syntax/fixtures/show_role_grants.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								test/parser/trino/syntax/fixtures/show_role_grants.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
SHOW ROLE GRANTS;
 | 
			
		||||
SHOW ROLE GRANTS FROM catalog;
 | 
			
		||||
							
								
								
									
										6
									
								
								test/parser/trino/syntax/fixtures/show_roles.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								test/parser/trino/syntax/fixtures/show_roles.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
			
		||||
SHOW ROLES;
 | 
			
		||||
SHOW ROLES FROM foo;
 | 
			
		||||
SHOW ROLES IN foo;
 | 
			
		||||
SHOW CURRENT ROLES;
 | 
			
		||||
SHOW CURRENT ROLES FROM foo;
 | 
			
		||||
SHOW CURRENT ROLES IN foo;
 | 
			
		||||
							
								
								
									
										4
									
								
								test/parser/trino/syntax/fixtures/show_schemas.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								test/parser/trino/syntax/fixtures/show_schemas.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
SHOW SCHEMAS;
 | 
			
		||||
SHOW SCHEMAS FROM foo;
 | 
			
		||||
SHOW SCHEMAS IN foo LIKE '%';
 | 
			
		||||
SHOW SCHEMAS IN foo LIKE '%$_%' ESCAPE '$';
 | 
			
		||||
							
								
								
									
										3
									
								
								test/parser/trino/syntax/fixtures/show_session.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								test/parser/trino/syntax/fixtures/show_session.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
SHOW SESSION;
 | 
			
		||||
SHOW SESSION LIKE '%';
 | 
			
		||||
SHOW SESSION LIKE '%' ESCAPE '$';
 | 
			
		||||
							
								
								
									
										1
									
								
								test/parser/trino/syntax/fixtures/show_stats.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								test/parser/trino/syntax/fixtures/show_stats.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
SHOW STATS FOR a;
 | 
			
		||||
@ -0,0 +1,3 @@
 | 
			
		||||
SHOW STATS FOR (SELECT * FROM a);
 | 
			
		||||
SHOW STATS FOR (SELECT * FROM a WHERE field > 0);
 | 
			
		||||
SHOW STATS FOR (SELECT * FROM a WHERE field > 0 or field < 0);
 | 
			
		||||
							
								
								
									
										4
									
								
								test/parser/trino/syntax/fixtures/show_tables.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								test/parser/trino/syntax/fixtures/show_tables.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
SHOW TABLES;
 | 
			
		||||
SHOW TABLES FROM a;
 | 
			
		||||
SHOW TABLES FROM "awesome schema";
 | 
			
		||||
SHOW TABLES IN a LIKE '%$_%' ESCAPE '$';
 | 
			
		||||
							
								
								
									
										10
									
								
								test/parser/trino/syntax/fixtures/start_transaction.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								test/parser/trino/syntax/fixtures/start_transaction.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
			
		||||
START TRANSACTION;
 | 
			
		||||
START TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
 | 
			
		||||
START TRANSACTION ISOLATION LEVEL READ COMMITTED;
 | 
			
		||||
START TRANSACTION ISOLATION LEVEL REPEATABLE READ;
 | 
			
		||||
START TRANSACTION ISOLATION LEVEL SERIALIZABLE;
 | 
			
		||||
START TRANSACTION READ ONLY;
 | 
			
		||||
START TRANSACTION READ WRITE;
 | 
			
		||||
START TRANSACTION ISOLATION LEVEL READ COMMITTED, READ ONLY;
 | 
			
		||||
START TRANSACTION READ ONLY, ISOLATION LEVEL READ COMMITTED;
 | 
			
		||||
START TRANSACTION READ WRITE, ISOLATION LEVEL SERIALIZABLE;
 | 
			
		||||
@ -0,0 +1,2 @@
 | 
			
		||||
SELECT substring('string' FROM 2);
 | 
			
		||||
SELECT substring('string' FROM 2 FOR 3);
 | 
			
		||||
							
								
								
									
										3
									
								
								test/parser/trino/syntax/fixtures/truncate_table.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								test/parser/trino/syntax/fixtures/truncate_table.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
TRUNCATE TABLE a;
 | 
			
		||||
TRUNCATE TABLE a.b;
 | 
			
		||||
TRUNCATE TABLE a.b.c;
 | 
			
		||||
							
								
								
									
										10
									
								
								test/parser/trino/syntax/fixtures/update.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								test/parser/trino/syntax/fixtures/update.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
			
		||||
UPDATE foo_tablen  SET bar = 23, baz = 3.1415E0, bletch = 'barf' WHERE (nothing = 'fun');
 | 
			
		||||
 | 
			
		||||
UPDATE new_hires SET manager = (
 | 
			
		||||
    SELECT
 | 
			
		||||
      e.name
 | 
			
		||||
    FROM
 | 
			
		||||
      employees e
 | 
			
		||||
    WHERE
 | 
			
		||||
      e.employee_id = new_hires.manager_id
 | 
			
		||||
);
 | 
			
		||||
							
								
								
									
										2
									
								
								test/parser/trino/syntax/fixtures/use.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								test/parser/trino/syntax/fixtures/use.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
USE hive.finance;
 | 
			
		||||
USE information_schema;
 | 
			
		||||
							
								
								
									
										2
									
								
								test/parser/trino/syntax/fixtures/values.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								test/parser/trino/syntax/fixtures/values.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
VALUES ('a', 1, 2.2e0), ('b', 2, 3.3e0);
 | 
			
		||||
SELECT * FROM (VALUES ('a', 1, 2.2e0), ('b', 2, 3.3e0));
 | 
			
		||||
@ -0,0 +1,14 @@
 | 
			
		||||
SELECT cust_key, value OVER w, label OVER w
 | 
			
		||||
    FROM orders
 | 
			
		||||
    WINDOW w AS (
 | 
			
		||||
                 PARTITION BY cust_key
 | 
			
		||||
                 ORDER BY order_date
 | 
			
		||||
                 MEASURES
 | 
			
		||||
                        RUNNING LAST(total_price) AS value,
 | 
			
		||||
                        CLASSIFIER() AS label
 | 
			
		||||
                 ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
 | 
			
		||||
                 PATTERN (A B+ C+)
 | 
			
		||||
                 DEFINE
 | 
			
		||||
                        B AS B.value < PREV (B.value),
 | 
			
		||||
                        C AS C.value > PREV (C.value)
 | 
			
		||||
                );
 | 
			
		||||
		Reference in New Issue
	
	Block a user