diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/dialects/test_databricks.py | 1 | ||||
-rw-r--r-- | tests/dialects/test_snowflake.py | 9 | ||||
-rw-r--r-- | tests/fixtures/pretty.sql | 15 | ||||
-rw-r--r-- | tests/test_executor.py | 3 | ||||
-rw-r--r-- | tests/test_expressions.py | 4 |
5 files changed, 27 insertions, 5 deletions
diff --git a/tests/dialects/test_databricks.py b/tests/dialects/test_databricks.py index 8239dec..14f7cd0 100644 --- a/tests/dialects/test_databricks.py +++ b/tests/dialects/test_databricks.py @@ -5,6 +5,7 @@ class TestDatabricks(Validator): dialect = "databricks" def test_databricks(self): + self.validate_identity("INSERT INTO a REPLACE WHERE cond VALUES (1), (2)") self.validate_identity("SELECT c1 : price") self.validate_identity("CREATE FUNCTION a.b(x INT) RETURNS INT RETURN x + 1") self.validate_identity("CREATE FUNCTION a AS b") diff --git a/tests/dialects/test_snowflake.py b/tests/dialects/test_snowflake.py index 0514149..48bb2f7 100644 --- a/tests/dialects/test_snowflake.py +++ b/tests/dialects/test_snowflake.py @@ -23,19 +23,20 @@ class TestSnowflake(Validator): self.validate_identity("CREATE TABLE foo (bar FLOAT AUTOINCREMENT START 0 INCREMENT 1)") self.validate_identity("ALTER TABLE IF EXISTS foo SET TAG a = 'a', b = 'b', c = 'c'") self.validate_identity("ALTER TABLE foo UNSET TAG a, b, c") + self.validate_identity("COMMENT IF EXISTS ON TABLE foo IS 'bar'") + self.validate_identity("SELECT CONVERT_TIMEZONE('UTC', 'America/Los_Angeles', col)") self.validate_identity( 'COPY INTO NEW_TABLE ("foo", "bar") FROM (SELECT $1, $2, $3, $4 FROM @%old_table)' ) - self.validate_identity("COMMENT IF EXISTS ON TABLE foo IS 'bar'") - self.validate_identity("SELECT CONVERT_TIMEZONE('UTC', 'America/Los_Angeles', col)") + self.validate_all("CAST(x AS BYTEINT)", write={"snowflake": "CAST(x AS INT)"}) self.validate_all("CAST(x AS CHAR VARYING)", write={"snowflake": "CAST(x AS VARCHAR)"}) + self.validate_all("CAST(x AS CHARACTER VARYING)", write={"snowflake": "CAST(x AS VARCHAR)"}) + self.validate_all("CAST(x AS NCHAR VARYING)", write={"snowflake": "CAST(x AS VARCHAR)"}) self.validate_all( "SELECT * FROM (VALUES (0) foo(bar))", write={"snowflake": "SELECT * FROM (VALUES (0)) AS foo(bar)"}, ) - self.validate_all("CAST(x AS CHARACTER VARYING)", write={"snowflake": "CAST(x AS VARCHAR)"}) - self.validate_all("CAST(x AS NCHAR VARYING)", write={"snowflake": "CAST(x AS VARCHAR)"}) self.validate_all( "OBJECT_CONSTRUCT(a, b, c, d)", read={ diff --git a/tests/fixtures/pretty.sql b/tests/fixtures/pretty.sql index 8de9c85..46cd6d8 100644 --- a/tests/fixtures/pretty.sql +++ b/tests/fixtures/pretty.sql @@ -178,10 +178,23 @@ FROM ( ) AS x; INSERT OVERWRITE TABLE x VALUES (1, 2.0, '3.0'), (4, 5.0, '6.0'); -INSERT OVERWRITE TABLE x VALUES +INSERT OVERWRITE TABLE x +VALUES (1, 2.0, '3.0'), (4, 5.0, '6.0'); +INSERT INTO TABLE foo REPLACE WHERE cond SELECT * FROM bar; +INSERT INTO foo +REPLACE WHERE cond +SELECT + * +FROM bar; + +INSERT OVERWRITE TABLE zipcodes PARTITION(state = '0') VALUES (896, 'US', 'TAMPA', 33607); +INSERT OVERWRITE TABLE zipcodes PARTITION(state = '0') +VALUES + (896, 'US', 'TAMPA', 33607); + WITH regional_sales AS ( SELECT region, SUM(amount) AS total_sales FROM orders diff --git a/tests/test_executor.py b/tests/test_executor.py index bb01dee..3a37cd4 100644 --- a/tests/test_executor.py +++ b/tests/test_executor.py @@ -580,6 +580,7 @@ class TestExecutor(unittest.TestCase): ("INTERVAL '1' week", datetime.timedelta(weeks=1)), ("1 IN (1, 2, 3)", True), ("1 IN (2, 3)", False), + ("1 IN (1)", True), ("NULL IS NULL", True), ("NULL IS NOT NULL", False), ("NULL = NULL", None), @@ -612,6 +613,8 @@ class TestExecutor(unittest.TestCase): ("STRFTIME('%j', NULL)", None), ("DATESTRTODATE('2022-01-01')", date(2022, 1, 1)), ("TIMESTRTOTIME('2022-01-01')", datetime.datetime(2022, 1, 1)), + ("LEFT('12345', 3)", "123"), + ("RIGHT('12345', 3)", "345"), ]: with self.subTest(sql): result = execute(f"SELECT {sql}") diff --git a/tests/test_expressions.py b/tests/test_expressions.py index e7a37f3..f83addb 100644 --- a/tests/test_expressions.py +++ b/tests/test_expressions.py @@ -179,6 +179,10 @@ class TestExpressions(unittest.TestCase): self.assertEqual(exp.table_name(parse_one("a.b", into=exp.Table)), "a.b") self.assertEqual(exp.table_name(parse_one("a.b.c", into=exp.Table)), "a.b.c") self.assertEqual(exp.table_name("a.b.c"), "a.b.c") + self.assertEqual( + exp.table_name(parse_one("foo.`{bar,er}`", read="databricks"), dialect="databricks"), + "foo.`{bar,er}`", + ) def test_table(self): self.assertEqual(exp.table_("a", alias="b"), parse_one("select * from a b").find(exp.Table)) |