diff --git a/src/languages/bigquery/bigquery.formatter.ts b/src/languages/bigquery/bigquery.formatter.ts index 833e635a3..10663428b 100644 --- a/src/languages/bigquery/bigquery.formatter.ts +++ b/src/languages/bigquery/bigquery.formatter.ts @@ -30,8 +30,6 @@ const reservedClauses = expandPhrases([ 'MERGE [INTO]', 'WHEN [NOT] MATCHED [BY SOURCE | BY TARGET] [THEN]', 'UPDATE SET', - // Data definition, https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language - 'CREATE [OR REPLACE] [MATERIALIZED] VIEW [IF NOT EXISTS]', 'CLUSTER BY', 'FOR SYSTEM_TIME AS OF', // CREATE SNAPSHOT TABLE @@ -42,7 +40,9 @@ const reservedClauses = expandPhrases([ const onelineClauses = expandPhrases([ // - create: + // https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language 'CREATE [OR REPLACE] [TEMP|TEMPORARY|SNAPSHOT|EXTERNAL] TABLE [IF NOT EXISTS]', + 'CREATE [OR REPLACE] [MATERIALIZED] VIEW [IF NOT EXISTS]', // - update: 'UPDATE', // - delete: diff --git a/src/languages/db2/db2.formatter.ts b/src/languages/db2/db2.formatter.ts index 2cbfd09e6..b420d18e5 100644 --- a/src/languages/db2/db2.formatter.ts +++ b/src/languages/db2/db2.formatter.ts @@ -34,13 +34,12 @@ const reservedClauses = expandPhrases([ 'WHEN [NOT] MATCHED [THEN]', 'UPDATE SET', 'INSERT', - // Data definition - 'CREATE [OR REPLACE] VIEW', ]); const onelineClauses = expandPhrases([ // - create: 'CREATE [GLOBAL TEMPORARY | EXTERNAL] TABLE [IF NOT EXISTS]', + 'CREATE [OR REPLACE] VIEW', // - update: 'UPDATE', 'WHERE CURRENT OF', diff --git a/src/languages/db2i/db2i.formatter.ts b/src/languages/db2i/db2i.formatter.ts index 04dd2b02a..51abe10c9 100644 --- a/src/languages/db2i/db2i.formatter.ts +++ b/src/languages/db2i/db2i.formatter.ts @@ -35,13 +35,12 @@ const reservedClauses = expandPhrases([ 'INSERT', // Data definition - table 'FOR SYSTEM NAME', - // Data definition - view - 'CREATE [OR REPLACE] [RECURSIVE] VIEW', ]); const onelineClauses = expandPhrases([ // - create: 'CREATE [OR REPLACE] TABLE', + 'CREATE [OR REPLACE] [RECURSIVE] VIEW', // - update: 'UPDATE', 'WHERE CURRENT OF', diff --git a/src/languages/hive/hive.formatter.ts b/src/languages/hive/hive.formatter.ts index ebb6f74cd..256f0cbfd 100644 --- a/src/languages/hive/hive.formatter.ts +++ b/src/languages/hive/hive.formatter.ts @@ -39,13 +39,12 @@ const reservedClauses = expandPhrases([ // https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-Loadingfilesintotables 'LOAD DATA [LOCAL] INPATH', '[OVERWRITE] INTO TABLE', - // Data definition - 'CREATE [MATERIALIZED] VIEW [IF NOT EXISTS]', ]); const onelineClauses = expandPhrases([ // - create: 'CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS]', + 'CREATE [MATERIALIZED] VIEW [IF NOT EXISTS]', // - update: 'UPDATE', // - delete: diff --git a/src/languages/mariadb/mariadb.formatter.ts b/src/languages/mariadb/mariadb.formatter.ts index 0215e6e81..d8832b217 100644 --- a/src/languages/mariadb/mariadb.formatter.ts +++ b/src/languages/mariadb/mariadb.formatter.ts @@ -26,8 +26,6 @@ const reservedClauses = expandPhrases([ 'ON DUPLICATE KEY UPDATE', // - update: 'SET', - // Data definition - 'CREATE [OR REPLACE] [SQL SECURITY DEFINER | SQL SECURITY INVOKER] VIEW [IF NOT EXISTS]', // other 'RETURNING', ]); @@ -35,6 +33,7 @@ const reservedClauses = expandPhrases([ const onelineClauses = expandPhrases([ // - create: 'CREATE [OR REPLACE] [TEMPORARY] TABLE [IF NOT EXISTS]', + 'CREATE [OR REPLACE] [SQL SECURITY DEFINER | SQL SECURITY INVOKER] VIEW [IF NOT EXISTS]', // - update: 'UPDATE [LOW_PRIORITY] [IGNORE]', // - delete: diff --git a/src/languages/mysql/mysql.formatter.ts b/src/languages/mysql/mysql.formatter.ts index 6b3f90c24..e1fdf63c2 100644 --- a/src/languages/mysql/mysql.formatter.ts +++ b/src/languages/mysql/mysql.formatter.ts @@ -26,13 +26,12 @@ const reservedClauses = expandPhrases([ 'ON DUPLICATE KEY UPDATE', // - update: 'SET', - // Data definition - 'CREATE [OR REPLACE] [SQL SECURITY DEFINER | SQL SECURITY INVOKER] VIEW [IF NOT EXISTS]', ]); const onelineClauses = expandPhrases([ // - create: 'CREATE [TEMPORARY] TABLE [IF NOT EXISTS]', + 'CREATE [OR REPLACE] [SQL SECURITY DEFINER | SQL SECURITY INVOKER] VIEW [IF NOT EXISTS]', // - update: 'UPDATE [LOW_PRIORITY] [IGNORE]', // - delete: diff --git a/src/languages/plsql/plsql.formatter.ts b/src/languages/plsql/plsql.formatter.ts index 0bb6a82d4..00927df9f 100644 --- a/src/languages/plsql/plsql.formatter.ts +++ b/src/languages/plsql/plsql.formatter.ts @@ -28,9 +28,6 @@ const reservedClauses = expandPhrases([ 'MERGE [INTO]', 'WHEN [NOT] MATCHED [THEN]', 'UPDATE SET', - // Data definition - 'CREATE [OR REPLACE] [NO FORCE | FORCE] [EDITIONING | EDITIONABLE | EDITIONABLE EDITIONING | NONEDITIONABLE] VIEW', - 'CREATE MATERIALIZED VIEW', // other 'RETURNING', ]); @@ -38,6 +35,8 @@ const reservedClauses = expandPhrases([ const onelineClauses = expandPhrases([ // - create: 'CREATE [GLOBAL TEMPORARY | PRIVATE TEMPORARY | SHARDED | DUPLICATED | IMMUTABLE BLOCKCHAIN | BLOCKCHAIN | IMMUTABLE] TABLE', + 'CREATE [OR REPLACE] [NO FORCE | FORCE] [EDITIONING | EDITIONABLE | EDITIONABLE EDITIONING | NONEDITIONABLE] VIEW', + 'CREATE MATERIALIZED VIEW', // - update: 'UPDATE [ONLY]', // - delete: diff --git a/src/languages/postgresql/postgresql.formatter.ts b/src/languages/postgresql/postgresql.formatter.ts index 695f11a3d..32821c9ec 100644 --- a/src/languages/postgresql/postgresql.formatter.ts +++ b/src/languages/postgresql/postgresql.formatter.ts @@ -25,9 +25,6 @@ const reservedClauses = expandPhrases([ 'VALUES', // - update: 'SET', - // Data definition - 'CREATE [OR REPLACE] [TEMP | TEMPORARY] [RECURSIVE] VIEW', - 'CREATE [MATERIALIZED] VIEW [IF NOT EXISTS]', // other 'RETURNING', ]); @@ -35,6 +32,8 @@ const reservedClauses = expandPhrases([ const onelineClauses = expandPhrases([ // - create 'CREATE [GLOBAL | LOCAL] [TEMPORARY | TEMP | UNLOGGED] TABLE [IF NOT EXISTS]', + 'CREATE [OR REPLACE] [TEMP | TEMPORARY] [RECURSIVE] VIEW', + 'CREATE [MATERIALIZED] VIEW [IF NOT EXISTS]', // - update: 'UPDATE [ONLY]', 'WHERE CURRENT OF', diff --git a/src/languages/redshift/redshift.formatter.ts b/src/languages/redshift/redshift.formatter.ts index f9d803f3f..83b83fd45 100644 --- a/src/languages/redshift/redshift.formatter.ts +++ b/src/languages/redshift/redshift.formatter.ts @@ -22,13 +22,12 @@ const reservedClauses = expandPhrases([ 'VALUES', // - update: 'SET', - // Data definition - 'CREATE [OR REPLACE | MATERIALIZED] VIEW', ]); const onelineClauses = expandPhrases([ // - create: 'CREATE [TEMPORARY | TEMP | LOCAL TEMPORARY | LOCAL TEMP] TABLE [IF NOT EXISTS]', + 'CREATE [OR REPLACE | MATERIALIZED] VIEW', // - update: 'UPDATE', // - delete: diff --git a/src/languages/singlestoredb/singlestoredb.formatter.ts b/src/languages/singlestoredb/singlestoredb.formatter.ts index f0294fd89..04227762a 100644 --- a/src/languages/singlestoredb/singlestoredb.formatter.ts +++ b/src/languages/singlestoredb/singlestoredb.formatter.ts @@ -26,7 +26,6 @@ const reservedClauses = expandPhrases([ // - update: 'SET', // Data definition - 'CREATE VIEW', 'CREATE [OR REPLACE] [TEMPORARY] PROCEDURE [IF NOT EXISTS]', 'CREATE [OR REPLACE] [EXTERNAL] FUNCTION', ]); @@ -34,6 +33,7 @@ const reservedClauses = expandPhrases([ const onelineClauses = expandPhrases([ // - create: 'CREATE [ROWSTORE] [REFERENCE | TEMPORARY | GLOBAL TEMPORARY] TABLE [IF NOT EXISTS]', + 'CREATE VIEW', // - update: 'UPDATE', // - delete: diff --git a/src/languages/snowflake/snowflake.formatter.ts b/src/languages/snowflake/snowflake.formatter.ts index 15c2e1b73..a8952c204 100644 --- a/src/languages/snowflake/snowflake.formatter.ts +++ b/src/languages/snowflake/snowflake.formatter.ts @@ -25,10 +25,7 @@ const reservedClauses = expandPhrases([ 'VALUES', // - update: 'SET', - // Data definition - // - view - 'CREATE [OR REPLACE] [SECURE] [RECURSIVE] VIEW [IF NOT EXISTS]', - // - create/drop/merge table + 'CLUSTER BY', '[WITH] {MASKING POLICY | TAG | ROW ACCESS POLICY}', 'COPY GRANTS', @@ -43,6 +40,7 @@ const onelineClauses = expandPhrases([ // - create: 'CREATE [OR REPLACE] [VOLATILE] TABLE [IF NOT EXISTS]', 'CREATE [OR REPLACE] [LOCAL | GLOBAL] {TEMP|TEMPORARY} TABLE [IF NOT EXISTS]', + 'CREATE [OR REPLACE] [SECURE] [RECURSIVE] VIEW [IF NOT EXISTS]', // - update: 'UPDATE', // - delete: diff --git a/src/languages/spark/spark.formatter.ts b/src/languages/spark/spark.formatter.ts index 3a856fb81..b241ef230 100644 --- a/src/languages/spark/spark.formatter.ts +++ b/src/languages/spark/spark.formatter.ts @@ -32,13 +32,12 @@ const reservedClauses = expandPhrases([ // https://spark.apache.org/docs/latest/sql-ref-syntax-dml-load.html 'LOAD DATA [LOCAL] INPATH', '[OVERWRITE] INTO TABLE', - // Data definition - 'CREATE [OR REPLACE] [GLOBAL TEMPORARY | TEMPORARY] VIEW [IF NOT EXISTS]', ]); const onelineClauses = expandPhrases([ // - create: 'CREATE [EXTERNAL] TABLE [IF NOT EXISTS]', + 'CREATE [OR REPLACE] [GLOBAL TEMPORARY | TEMPORARY] VIEW [IF NOT EXISTS]', // - drop table: 'DROP TABLE [IF EXISTS]', // - alter table: diff --git a/src/languages/sql/sql.formatter.ts b/src/languages/sql/sql.formatter.ts index f42506f84..1405e57db 100644 --- a/src/languages/sql/sql.formatter.ts +++ b/src/languages/sql/sql.formatter.ts @@ -24,13 +24,12 @@ const reservedClauses = expandPhrases([ 'VALUES', // - update: 'SET', - // Data definition - 'CREATE [RECURSIVE] VIEW', ]); const onelineClauses = expandPhrases([ // - create: 'CREATE [GLOBAL TEMPORARY | LOCAL TEMPORARY] TABLE', + 'CREATE [RECURSIVE] VIEW', // - update: 'UPDATE', 'WHERE CURRENT OF', diff --git a/src/languages/sqlite/sqlite.formatter.ts b/src/languages/sqlite/sqlite.formatter.ts index a66d38f25..46ac0fb5f 100644 --- a/src/languages/sqlite/sqlite.formatter.ts +++ b/src/languages/sqlite/sqlite.formatter.ts @@ -24,13 +24,12 @@ const reservedClauses = expandPhrases([ 'VALUES', // - update: 'SET', - // Data definition - 'CREATE [TEMPORARY | TEMP] VIEW [IF NOT EXISTS]', ]); const onelineClauses = expandPhrases([ // - create: 'CREATE [TEMPORARY | TEMP] TABLE [IF NOT EXISTS]', + 'CREATE [TEMPORARY | TEMP] VIEW [IF NOT EXISTS]', // - update: 'UPDATE [OR ABORT | OR FAIL | OR IGNORE | OR REPLACE | OR ROLLBACK]', // - insert: diff --git a/src/languages/transactsql/transactsql.formatter.ts b/src/languages/transactsql/transactsql.formatter.ts index 9ff558505..9f64a9e7e 100644 --- a/src/languages/transactsql/transactsql.formatter.ts +++ b/src/languages/transactsql/transactsql.formatter.ts @@ -29,13 +29,13 @@ const reservedClauses = expandPhrases([ 'WHEN [NOT] MATCHED [BY TARGET | BY SOURCE] [THEN]', 'UPDATE SET', // Data definition - 'CREATE [OR ALTER] [MATERIALIZED] VIEW', 'CREATE [OR ALTER] {PROC | PROCEDURE}', ]); const onelineClauses = expandPhrases([ // - create: 'CREATE TABLE', + 'CREATE [OR ALTER] [MATERIALIZED] VIEW', // - update: 'UPDATE', 'WHERE CURRENT OF', diff --git a/src/languages/trino/trino.formatter.ts b/src/languages/trino/trino.formatter.ts index e8240d4a9..ab67a59ec 100644 --- a/src/languages/trino/trino.formatter.ts +++ b/src/languages/trino/trino.formatter.ts @@ -25,8 +25,6 @@ const reservedClauses = expandPhrases([ 'VALUES', // - update: 'SET', - // Data definition - 'CREATE [OR REPLACE] [MATERIALIZED] VIEW', // MATCH_RECOGNIZE 'MATCH_RECOGNIZE', 'MEASURES', @@ -41,6 +39,7 @@ const reservedClauses = expandPhrases([ const onelineClauses = expandPhrases([ // - create: 'CREATE TABLE [IF NOT EXISTS]', + 'CREATE [OR REPLACE] [MATERIALIZED] VIEW', // - update: 'UPDATE', // - delete: diff --git a/test/features/createView.ts b/test/features/createView.ts index fcff8800a..293d042cf 100644 --- a/test/features/createView.ts +++ b/test/features/createView.ts @@ -14,8 +14,7 @@ export default function supportsCreateView( ) { it('formats CREATE VIEW', () => { expect(format('CREATE VIEW my_view AS SELECT id, fname, lname FROM tbl;')).toBe(dedent` - CREATE VIEW - my_view AS + CREATE VIEW my_view AS SELECT id, fname, @@ -27,8 +26,7 @@ export default function supportsCreateView( it('formats CREATE VIEW with columns', () => { expect(format('CREATE VIEW my_view (id, fname, lname) AS SELECT * FROM tbl;')).toBe(dedent` - CREATE VIEW - my_view (id, fname, lname) AS + CREATE VIEW my_view (id, fname, lname) AS SELECT * FROM @@ -39,8 +37,7 @@ export default function supportsCreateView( if (orReplace) { it('formats CREATE OR REPLACE VIEW', () => { expect(format('CREATE OR REPLACE VIEW v1 AS SELECT 42;')).toBe(dedent` - CREATE OR REPLACE VIEW - v1 AS + CREATE OR REPLACE VIEW v1 AS SELECT 42; `); @@ -50,8 +47,7 @@ export default function supportsCreateView( if (materialized) { it('formats CREATE MATERIALIZED VIEW', () => { expect(format('CREATE MATERIALIZED VIEW mat_view AS SELECT 42;')).toBe(dedent` - CREATE MATERIALIZED VIEW - mat_view AS + CREATE MATERIALIZED VIEW mat_view AS SELECT 42; `); @@ -61,8 +57,7 @@ export default function supportsCreateView( if (ifNotExists) { it('formats short CREATE VIEW IF NOT EXISTS', () => { expect(format('CREATE VIEW IF NOT EXISTS my_view AS SELECT 42;')).toBe(dedent` - CREATE VIEW IF NOT EXISTS - my_view AS + CREATE VIEW IF NOT EXISTS my_view AS SELECT 42; `);