diff options
Diffstat (limited to 'tests/test_parser.py')
-rw-r--r-- | tests/test_parser.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/test_parser.py b/tests/test_parser.py index 027a9ca..e7b0ca9 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -219,6 +219,9 @@ class TestParser(unittest.TestCase): with self.assertRaises(ParseError): parse_one("WITH cte AS (SELECT * FROM x)") + with self.assertRaises(ParseError): + parse_one("SELECT foo( FROM bar") + self.assertEqual( parse_one( "CREATE TABLE t (i UInt8) ENGINE = AggregatingMergeTree() ORDER BY tuple()", @@ -694,3 +697,14 @@ class TestParser(unittest.TestCase): def test_parse_floats(self): self.assertTrue(parse_one("1. ").is_number) + + def test_parse_terse_coalesce(self): + self.assertIsNotNone(parse_one("SELECT x ?? y FROM z").find(exp.Coalesce)) + self.assertEqual( + parse_one("SELECT a, b ?? 'No Data' FROM z").sql(), + "SELECT a, COALESCE(b, 'No Data') FROM z", + ) + self.assertEqual( + parse_one("SELECT a, b ?? c ?? 'No Data' FROM z").sql(), + "SELECT a, COALESCE(COALESCE(b, c), 'No Data') FROM z", + ) |