summaryrefslogtreecommitdiffstats
path: root/sqlglot/dialects/prql.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 02:50:25 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 02:50:25 +0000
commitcf49728f719975144a958f23ba5f3336fb81ae55 (patch)
tree78aa5446e86cc5623808508ee167c9a476754939 /sqlglot/dialects/prql.py
parentReleasing debian version 23.10.0-1. (diff)
downloadsqlglot-cf49728f719975144a958f23ba5f3336fb81ae55.tar.xz
sqlglot-cf49728f719975144a958f23ba5f3336fb81ae55.zip
Merging upstream version 23.12.1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'sqlglot/dialects/prql.py')
-rw-r--r--sqlglot/dialects/prql.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/sqlglot/dialects/prql.py b/sqlglot/dialects/prql.py
index 3ee91a8..028c309 100644
--- a/sqlglot/dialects/prql.py
+++ b/sqlglot/dialects/prql.py
@@ -55,6 +55,20 @@ class PRQL(Dialect):
"SORT": lambda self, query: self._parse_order_by(query),
}
+ def _parse_equality(self) -> t.Optional[exp.Expression]:
+ eq = self._parse_tokens(self._parse_comparison, self.EQUALITY)
+ if not isinstance(eq, (exp.EQ, exp.NEQ)):
+ return eq
+
+ # https://prql-lang.org/book/reference/spec/null.html
+ if isinstance(eq.expression, exp.Null):
+ is_exp = exp.Is(this=eq.this, expression=eq.expression)
+ return is_exp if isinstance(eq, exp.EQ) else exp.Not(this=is_exp)
+ if isinstance(eq.this, exp.Null):
+ is_exp = exp.Is(this=eq.expression, expression=eq.this)
+ return is_exp if isinstance(eq, exp.EQ) else exp.Not(this=is_exp)
+ return eq
+
def _parse_statement(self) -> t.Optional[exp.Expression]:
expression = self._parse_expression()
expression = expression if expression else self._parse_query()
@@ -136,6 +150,7 @@ class PRQL(Dialect):
alias_tokens: t.Optional[t.Collection[TokenType]] = None,
parse_bracket: bool = False,
is_db_reference: bool = False,
+ parse_partition: bool = False,
) -> t.Optional[exp.Expression]:
return self._parse_table_parts()