From 43a52bccf5bf17217a2734f4680c00a102f82cac Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 24 Dec 2023 08:49:59 +0100 Subject: Merging upstream version 20.4.0. Signed-off-by: Daniel Baumann --- sqlglot/dialects/bigquery.py | 3 ++- sqlglot/dialects/clickhouse.py | 7 +++++-- sqlglot/dialects/duckdb.py | 1 + sqlglot/dialects/postgres.py | 1 + sqlglot/dialects/snowflake.py | 1 + sqlglot/dialects/sqlite.py | 1 + 6 files changed, 11 insertions(+), 3 deletions(-) (limited to 'sqlglot/dialects') diff --git a/sqlglot/dialects/bigquery.py b/sqlglot/dialects/bigquery.py index 1b06cbf..7a573e7 100644 --- a/sqlglot/dialects/bigquery.py +++ b/sqlglot/dialects/bigquery.py @@ -727,7 +727,8 @@ class BigQuery(Dialect): def eq_sql(self, expression: exp.EQ) -> str: # Operands of = cannot be NULL in BigQuery if isinstance(expression.left, exp.Null) or isinstance(expression.right, exp.Null): - return "NULL" + if not isinstance(expression.parent, exp.Update): + return "NULL" return self.binary(expression, "=") diff --git a/sqlglot/dialects/clickhouse.py b/sqlglot/dialects/clickhouse.py index 7a3f897..870f402 100644 --- a/sqlglot/dialects/clickhouse.py +++ b/sqlglot/dialects/clickhouse.py @@ -105,6 +105,7 @@ class ClickHouse(Dialect): ), "MAP": parse_var_map, "MATCH": exp.RegexpLike.from_arg_list, + "RANDCANONICAL": exp.Rand.from_arg_list, "UNIQ": exp.ApproxDistinct.from_arg_list, "XOR": lambda args: exp.Xor(expressions=args), } @@ -142,9 +143,10 @@ class ClickHouse(Dialect): TABLE_ALIAS_TOKENS = parser.Parser.TABLE_ALIAS_TOKENS - { TokenType.ANY, - TokenType.SETTINGS, - TokenType.FORMAT, TokenType.ARRAY, + TokenType.FINAL, + TokenType.FORMAT, + TokenType.SETTINGS, } LOG_DEFAULTS_TO_LN = True @@ -397,6 +399,7 @@ class ClickHouse(Dialect): exp.Pivot: no_pivot_sql, exp.Quantile: _quantile_sql, exp.RegexpLike: lambda self, e: f"match({self.format_args(e.this, e.expression)})", + exp.Rand: rename_func("randCanonical"), exp.StartsWith: rename_func("startsWith"), exp.StrPosition: lambda self, e: f"position({self.format_args(e.this, e.args.get('substr'), e.args.get('position'))})", exp.VarMap: lambda self, e: _lower_func(var_map_sql(self, e)), diff --git a/sqlglot/dialects/duckdb.py b/sqlglot/dialects/duckdb.py index 41afad8..cd9d529 100644 --- a/sqlglot/dialects/duckdb.py +++ b/sqlglot/dialects/duckdb.py @@ -352,6 +352,7 @@ class DuckDB(Dialect): ), exp.RegexpLike: rename_func("REGEXP_MATCHES"), exp.RegexpSplit: rename_func("STR_SPLIT_REGEX"), + exp.Rand: rename_func("RANDOM"), exp.SafeDivide: no_safe_divide_sql, exp.Split: rename_func("STR_SPLIT"), exp.SortArray: _sort_array_sql, diff --git a/sqlglot/dialects/postgres.py b/sqlglot/dialects/postgres.py index bf65edf..e274877 100644 --- a/sqlglot/dialects/postgres.py +++ b/sqlglot/dialects/postgres.py @@ -445,6 +445,7 @@ class Postgres(Dialect): ), exp.Pivot: no_pivot_sql, exp.Pow: lambda self, e: self.binary(e, "^"), + exp.Rand: rename_func("RANDOM"), exp.RegexpLike: lambda self, e: self.binary(e, "~"), exp.RegexpILike: lambda self, e: self.binary(e, "~*"), exp.Select: transforms.preprocess( diff --git a/sqlglot/dialects/snowflake.py b/sqlglot/dialects/snowflake.py index f09a990..8925181 100644 --- a/sqlglot/dialects/snowflake.py +++ b/sqlglot/dialects/snowflake.py @@ -558,6 +558,7 @@ class Snowflake(Dialect): [transforms.add_within_group_for_percentiles] ), exp.RegexpILike: _regexpilike_sql, + exp.Rand: rename_func("RANDOM"), exp.Select: transforms.preprocess( [ transforms.eliminate_distinct_on, diff --git a/sqlglot/dialects/sqlite.py b/sqlglot/dialects/sqlite.py index e55a3b8..9bac51c 100644 --- a/sqlglot/dialects/sqlite.py +++ b/sqlglot/dialects/sqlite.py @@ -127,6 +127,7 @@ class SQLite(Dialect): exp.LogicalOr: rename_func("MAX"), exp.LogicalAnd: rename_func("MIN"), exp.Pivot: no_pivot_sql, + exp.Rand: rename_func("RANDOM"), exp.Select: transforms.preprocess( [ transforms.eliminate_distinct_on, -- cgit v1.2.3