diff options
| -rw-r--r-- | sqlparse/engine/grouping.py | 2 | ||||
| -rw-r--r-- | tests/test_grouping.py | 13 |
2 files changed, 13 insertions, 2 deletions
diff --git a/sqlparse/engine/grouping.py b/sqlparse/engine/grouping.py index daaffb0..e7a4211 100644 --- a/sqlparse/engine/grouping.py +++ b/sqlparse/engine/grouping.py @@ -192,7 +192,7 @@ def group_assignment(tlist): def group_comparison(tlist): sqlcls = (sql.Parenthesis, sql.Function, sql.Identifier, - sql.Operation) + sql.Operation, sql.TypedLiteral) ttypes = T_NUMERICAL + T_STRING + T_NAME def match(token): diff --git a/tests/test_grouping.py b/tests/test_grouping.py index a147063..87dcf11 100644 --- a/tests/test_grouping.py +++ b/tests/test_grouping.py @@ -36,7 +36,7 @@ def test_grouping_assignment(s): @pytest.mark.parametrize('s', ["x > DATE '2020-01-01'", "x > TIMESTAMP '2020-01-01 00:00:00'"]) def test_grouping_typed_literal(s): parsed = sqlparse.parse(s)[0] - assert isinstance(parsed[4], sql.TypedLiteral) + assert isinstance(parsed[0][4], sql.TypedLiteral) @pytest.mark.parametrize('s, a, b', [ @@ -550,6 +550,17 @@ def test_comparison_with_functions(): assert p.tokens[0].right.value == 'bar.baz' +def test_comparison_with_typed_literal(): + p = sqlparse.parse("foo = DATE 'bar.baz'")[0] + assert len(p.tokens) == 1 + comp = p.tokens[0] + assert isinstance(comp, sql.Comparison) + assert len(comp.tokens) == 5 + assert comp.left.value == 'foo' + assert isinstance(comp.right, sql.TypedLiteral) + assert comp.right.value == "DATE 'bar.baz'" + + @pytest.mark.parametrize('start', ['FOR', 'FOREACH']) def test_forloops(start): p = sqlparse.parse('{0} foo in bar LOOP foobar END LOOP'.format(start))[0] |
