summaryrefslogtreecommitdiffstats
path: root/sqlglot/expressions.py
diff options
context:
space:
mode:
Diffstat (limited to 'sqlglot/expressions.py')
-rw-r--r--sqlglot/expressions.py70
1 files changed, 68 insertions, 2 deletions
diff --git a/sqlglot/expressions.py b/sqlglot/expressions.py
index 11ebbaf..8ef750e 100644
--- a/sqlglot/expressions.py
+++ b/sqlglot/expressions.py
@@ -1090,6 +1090,11 @@ class Create(DDL):
"clone": False,
}
+ @property
+ def kind(self) -> t.Optional[str]:
+ kind = self.args.get("kind")
+ return kind and kind.upper()
+
# https://docs.snowflake.com/en/sql-reference/sql/create-clone
# https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language#create_table_clone_statement
@@ -4626,6 +4631,11 @@ class CountIf(AggFunc):
_sql_names = ["COUNT_IF", "COUNTIF"]
+# cube root
+class Cbrt(Func):
+ pass
+
+
class CurrentDate(Func):
arg_types = {"this": False}
@@ -4728,7 +4738,7 @@ class Extract(Func):
class Timestamp(Func):
- arg_types = {"this": False, "expression": False}
+ arg_types = {"this": False, "expression": False, "with_tz": False}
class TimestampAdd(Func, TimeUnit):
@@ -4833,7 +4843,7 @@ class Posexplode(Explode):
pass
-class PosexplodeOuter(Posexplode):
+class PosexplodeOuter(Posexplode, ExplodeOuter):
pass
@@ -4868,6 +4878,7 @@ class Xor(Connector, Func):
class If(Func):
arg_types = {"this": True, "true": True, "false": False}
+ _sql_names = ["IF", "IIF"]
class Nullif(Func):
@@ -6883,6 +6894,7 @@ def replace_tables(
table = to_table(
new_name,
**{k: v for k, v in node.args.items() if k not in TABLE_PARTS},
+ dialect=dialect,
)
table.add_comments([original])
return table
@@ -7072,6 +7084,60 @@ def cast_unless(
return cast(expr, to, **opts)
+def array(
+ *expressions: ExpOrStr, copy: bool = True, dialect: DialectType = None, **kwargs
+) -> Array:
+ """
+ Returns an array.
+
+ Examples:
+ >>> array(1, 'x').sql()
+ 'ARRAY(1, x)'
+
+ Args:
+ expressions: the expressions to add to the array.
+ copy: whether or not to copy the argument expressions.
+ dialect: the source dialect.
+ kwargs: the kwargs used to instantiate the function of interest.
+
+ Returns:
+ An array expression.
+ """
+ return Array(
+ expressions=[
+ maybe_parse(expression, copy=copy, dialect=dialect, **kwargs)
+ for expression in expressions
+ ]
+ )
+
+
+def tuple_(
+ *expressions: ExpOrStr, copy: bool = True, dialect: DialectType = None, **kwargs
+) -> Tuple:
+ """
+ Returns an tuple.
+
+ Examples:
+ >>> tuple_(1, 'x').sql()
+ '(1, x)'
+
+ Args:
+ expressions: the expressions to add to the tuple.
+ copy: whether or not to copy the argument expressions.
+ dialect: the source dialect.
+ kwargs: the kwargs used to instantiate the function of interest.
+
+ Returns:
+ A tuple expression.
+ """
+ return Tuple(
+ expressions=[
+ maybe_parse(expression, copy=copy, dialect=dialect, **kwargs)
+ for expression in expressions
+ ]
+ )
+
+
def true() -> Boolean:
"""
Returns a true Boolean expression.