From d2e9401b18925b5702c5c758af7d4f5b61deb493 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 10 May 2023 08:44:54 +0200 Subject: Adding upstream version 12.2.0. Signed-off-by: Daniel Baumann --- tests/test_build.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'tests/test_build.py') diff --git a/tests/test_build.py b/tests/test_build.py index c4b97ce..509b857 100644 --- a/tests/test_build.py +++ b/tests/test_build.py @@ -19,6 +19,11 @@ from sqlglot import ( class TestBuild(unittest.TestCase): def test_build(self): x = condition("x") + x_plus_one = x + 1 + + # Make sure we're not mutating x by changing its parent to be x_plus_one + self.assertIsNone(x.parent) + self.assertNotEqual(id(x_plus_one.this), id(x)) for expression, sql, *dialect in [ (lambda: x + 1, "x + 1"), @@ -51,6 +56,7 @@ class TestBuild(unittest.TestCase): (lambda: x.neq(1), "x <> 1"), (lambda: x.isin(1, "2"), "x IN (1, '2')"), (lambda: x.isin(query="select 1"), "x IN (SELECT 1)"), + (lambda: x.between(1, 2), "x BETWEEN 1 AND 2"), (lambda: 1 + x + 2 + 3, "1 + x + 2 + 3"), (lambda: 1 + x * 2 + 3, "1 + (x * 2) + 3"), (lambda: x * 1 * 2 + 3, "(x * 1 * 2) + 3"), @@ -137,10 +143,14 @@ class TestBuild(unittest.TestCase): "SELECT x, y, z, a FROM tbl GROUP BY x, y, z, a", ), ( - lambda: select("x").distinct(True).from_("tbl"), + lambda: select("x").distinct("a", "b").from_("tbl"), + "SELECT DISTINCT ON (a, b) x FROM tbl", + ), + ( + lambda: select("x").distinct(distinct=True).from_("tbl"), "SELECT DISTINCT x FROM tbl", ), - (lambda: select("x").distinct(False).from_("tbl"), "SELECT x FROM tbl"), + (lambda: select("x").distinct(distinct=False).from_("tbl"), "SELECT x FROM tbl"), ( lambda: select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl"), "SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z", @@ -583,6 +593,11 @@ class TestBuild(unittest.TestCase): "DELETE FROM tbl WHERE x = 1 RETURNING *", "postgres", ), + ( + lambda: exp.convert((exp.column("x"), exp.column("y"))).isin((1, 2), (3, 4)), + "(x, y) IN ((1, 2), (3, 4))", + "postgres", + ), ]: with self.subTest(sql): self.assertEqual(expression().sql(dialect[0] if dialect else None), sql) -- cgit v1.2.3