Merging upstream version 26.16.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
c0dccc98e9
commit
542c175872
57 changed files with 54950 additions and 53265 deletions
|
@ -11,6 +11,7 @@ class TestSnowflake(Validator):
|
|||
dialect = "snowflake"
|
||||
|
||||
def test_snowflake(self):
|
||||
self.validate_identity("SELECT GET(a, b)")
|
||||
self.assertEqual(
|
||||
# Ensures we don't fail when generating ParseJSON with the `safe` arg set to `True`
|
||||
self.validate_identity("""SELECT TRY_PARSE_JSON('{"x: 1}')""").sql(),
|
||||
|
@ -22,7 +23,7 @@ class TestSnowflake(Validator):
|
|||
self.assertEqual(expr.sql(dialect="snowflake"), "SELECT APPROX_TOP_K(C4, 3, 5) FROM t")
|
||||
|
||||
self.validate_identity("INSERT INTO test VALUES (x'48FAF43B0AFCEF9B63EE3A93EE2AC2')")
|
||||
self.validate_identity("exclude := [foo]")
|
||||
self.validate_identity("SELECT STAR(tbl, exclude := [foo])")
|
||||
self.validate_identity("SELECT CAST([1, 2, 3] AS VECTOR(FLOAT, 3))")
|
||||
self.validate_identity("SELECT CONNECT_BY_ROOT test AS test_column_alias")
|
||||
self.validate_identity("SELECT number").selects[0].assert_is(exp.Column)
|
||||
|
@ -110,6 +111,10 @@ class TestSnowflake(Validator):
|
|||
"SELECT 1 put",
|
||||
"SELECT 1 AS put",
|
||||
)
|
||||
self.validate_identity(
|
||||
"SELECT 1 get",
|
||||
"SELECT 1 AS get",
|
||||
)
|
||||
self.validate_identity(
|
||||
"WITH t (SELECT 1 AS c) SELECT c FROM t",
|
||||
"WITH t AS (SELECT 1 AS c) SELECT c FROM t",
|
||||
|
@ -2465,6 +2470,33 @@ SINGLE = TRUE""",
|
|||
check_command_warning=True,
|
||||
)
|
||||
|
||||
def test_get_from_stage(self):
|
||||
self.validate_identity('GET @"my_DB"."schEMA1"."MYstage" \'file:///dir/tmp.csv\'')
|
||||
self.validate_identity("GET @s1/test 'file:///dir/tmp.csv'")
|
||||
|
||||
# GET with file path and stage ref containing spaces (wrapped in single quotes)
|
||||
ast = parse_one("GET '@s1/my folder' 'file://my file.txt'", read="snowflake")
|
||||
self.assertIsInstance(ast, exp.Get)
|
||||
self.assertEqual(ast.args["target"], exp.Var(this="'@s1/my folder'"))
|
||||
self.assertEqual(ast.this, exp.Literal(this="file://my file.txt", is_string=True))
|
||||
self.assertEqual(ast.sql("snowflake"), "GET '@s1/my folder' 'file://my file.txt'")
|
||||
|
||||
# expression with additional properties
|
||||
ast = parse_one("GET @stage1/folder 'file:///tmp/my.txt' PARALLEL = 1", read="snowflake")
|
||||
self.assertIsInstance(ast, exp.Get)
|
||||
self.assertEqual(ast.args["target"], exp.Var(this="@stage1/folder"))
|
||||
self.assertEqual(ast.this, exp.Literal(this="file:///tmp/my.txt", is_string=True))
|
||||
properties = ast.args.get("properties")
|
||||
props_dict = {prop.this.this: prop.args["value"].this for prop in properties.expressions}
|
||||
self.assertEqual(props_dict, {"PARALLEL": "1"})
|
||||
|
||||
# the unquoted URI variant is not fully supported yet
|
||||
self.validate_identity("GET @%table file:///dir/tmp.csv", check_command_warning=True)
|
||||
self.validate_identity(
|
||||
"GET @s1/test file:///dir/tmp.csv PARALLEL=1",
|
||||
check_command_warning=True,
|
||||
)
|
||||
|
||||
def test_querying_semi_structured_data(self):
|
||||
self.validate_identity("SELECT $1")
|
||||
self.validate_identity("SELECT $1.elem")
|
||||
|
@ -2578,3 +2610,11 @@ SINGLE = TRUE""",
|
|||
self.assertEqual(expr.find(exp.Placeholder), exp.Placeholder(this="1"))
|
||||
self.validate_identity("SELECT :1, :2")
|
||||
self.validate_identity("SELECT :1 + :2")
|
||||
|
||||
def test_max_by_min_by(self):
|
||||
max_by = self.validate_identity("MAX_BY(DISTINCT selected_col, filtered_col)")
|
||||
min_by = self.validate_identity("MIN_BY(DISTINCT selected_col, filtered_col)")
|
||||
|
||||
for node in (max_by, min_by):
|
||||
self.assertEqual(len(node.this.expressions), 1)
|
||||
self.assertIsInstance(node.expression, exp.Column)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue