Merging upstream version 10.0.8.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
407314e8d2
commit
efc1e37108
67 changed files with 2461 additions and 840 deletions
|
@ -41,12 +41,41 @@ class TestParser(unittest.TestCase):
|
|||
)
|
||||
|
||||
def test_command(self):
|
||||
expressions = parse("SET x = 1; ADD JAR s3://a; SELECT 1")
|
||||
expressions = parse("SET x = 1; ADD JAR s3://a; SELECT 1", read="hive")
|
||||
self.assertEqual(len(expressions), 3)
|
||||
self.assertEqual(expressions[0].sql(), "SET x = 1")
|
||||
self.assertEqual(expressions[1].sql(), "ADD JAR s3://a")
|
||||
self.assertEqual(expressions[2].sql(), "SELECT 1")
|
||||
|
||||
def test_transactions(self):
|
||||
expression = parse_one("BEGIN TRANSACTION")
|
||||
self.assertIsNone(expression.this)
|
||||
self.assertEqual(expression.args["modes"], [])
|
||||
self.assertEqual(expression.sql(), "BEGIN")
|
||||
|
||||
expression = parse_one("START TRANSACTION", read="mysql")
|
||||
self.assertIsNone(expression.this)
|
||||
self.assertEqual(expression.args["modes"], [])
|
||||
self.assertEqual(expression.sql(), "BEGIN")
|
||||
|
||||
expression = parse_one("BEGIN DEFERRED TRANSACTION")
|
||||
self.assertEqual(expression.this, "DEFERRED")
|
||||
self.assertEqual(expression.args["modes"], [])
|
||||
self.assertEqual(expression.sql(), "BEGIN")
|
||||
|
||||
expression = parse_one(
|
||||
"START TRANSACTION READ WRITE, ISOLATION LEVEL SERIALIZABLE", read="presto"
|
||||
)
|
||||
self.assertIsNone(expression.this)
|
||||
self.assertEqual(expression.args["modes"][0], "READ WRITE")
|
||||
self.assertEqual(expression.args["modes"][1], "ISOLATION LEVEL SERIALIZABLE")
|
||||
self.assertEqual(expression.sql(), "BEGIN")
|
||||
|
||||
expression = parse_one("BEGIN", read="bigquery")
|
||||
self.assertNotIsInstance(expression, exp.Transaction)
|
||||
self.assertIsNone(expression.expression)
|
||||
self.assertEqual(expression.sql(), "BEGIN")
|
||||
|
||||
def test_identify(self):
|
||||
expression = parse_one(
|
||||
"""
|
||||
|
@ -55,14 +84,14 @@ class TestParser(unittest.TestCase):
|
|||
"""
|
||||
)
|
||||
|
||||
assert expression.expressions[0].text("this") == "a"
|
||||
assert expression.expressions[1].text("this") == "b"
|
||||
assert expression.expressions[2].text("alias") == "c"
|
||||
assert expression.expressions[3].text("alias") == "D"
|
||||
assert expression.expressions[4].text("alias") == "y|z'"
|
||||
assert expression.expressions[0].name == "a"
|
||||
assert expression.expressions[1].name == "b"
|
||||
assert expression.expressions[2].alias == "c"
|
||||
assert expression.expressions[3].alias == "D"
|
||||
assert expression.expressions[4].alias == "y|z'"
|
||||
table = expression.args["from"].expressions[0]
|
||||
assert table.args["this"].args["this"] == "z"
|
||||
assert table.args["db"].args["this"] == "y"
|
||||
assert table.this.name == "z"
|
||||
assert table.args["db"].name == "y"
|
||||
|
||||
def test_multi(self):
|
||||
expressions = parse(
|
||||
|
@ -72,8 +101,8 @@ class TestParser(unittest.TestCase):
|
|||
)
|
||||
|
||||
assert len(expressions) == 2
|
||||
assert expressions[0].args["from"].expressions[0].args["this"].args["this"] == "a"
|
||||
assert expressions[1].args["from"].expressions[0].args["this"].args["this"] == "b"
|
||||
assert expressions[0].args["from"].expressions[0].this.name == "a"
|
||||
assert expressions[1].args["from"].expressions[0].this.name == "b"
|
||||
|
||||
def test_expression(self):
|
||||
ignore = Parser(error_level=ErrorLevel.IGNORE)
|
||||
|
@ -200,7 +229,7 @@ class TestParser(unittest.TestCase):
|
|||
@patch("sqlglot.parser.logger")
|
||||
def test_comment_error_n(self, logger):
|
||||
parse_one(
|
||||
"""CREATE TABLE x
|
||||
"""SUM
|
||||
(
|
||||
-- test
|
||||
)""",
|
||||
|
@ -208,19 +237,19 @@ class TestParser(unittest.TestCase):
|
|||
)
|
||||
|
||||
assert_logger_contains(
|
||||
"Required keyword: 'expressions' missing for <class 'sqlglot.expressions.Schema'>. Line 4, Col: 1.",
|
||||
"Required keyword: 'this' missing for <class 'sqlglot.expressions.Sum'>. Line 4, Col: 1.",
|
||||
logger,
|
||||
)
|
||||
|
||||
@patch("sqlglot.parser.logger")
|
||||
def test_comment_error_r(self, logger):
|
||||
parse_one(
|
||||
"""CREATE TABLE x (-- test\r)""",
|
||||
"""SUM(-- test\r)""",
|
||||
error_level=ErrorLevel.WARN,
|
||||
)
|
||||
|
||||
assert_logger_contains(
|
||||
"Required keyword: 'expressions' missing for <class 'sqlglot.expressions.Schema'>. Line 2, Col: 1.",
|
||||
"Required keyword: 'this' missing for <class 'sqlglot.expressions.Sum'>. Line 2, Col: 1.",
|
||||
logger,
|
||||
)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue