diff options
Diffstat (limited to 'sqlglot/optimizer/annotate_types.py')
-rw-r--r-- | sqlglot/optimizer/annotate_types.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sqlglot/optimizer/annotate_types.py b/sqlglot/optimizer/annotate_types.py index 99888c6..6238759 100644 --- a/sqlglot/optimizer/annotate_types.py +++ b/sqlglot/optimizer/annotate_types.py @@ -116,6 +116,9 @@ class TypeAnnotator: exp.ArrayConcat: lambda self, expr: self._annotate_with_type( expr, exp.DataType.Type.VARCHAR ), + exp.ArraySize: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.BIGINT), + exp.Map: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.MAP), + exp.VarMap: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.MAP), exp.Initcap: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), exp.Interval: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INTERVAL), exp.Least: lambda self, expr: self._annotate_by_args(expr, "expressions"), @@ -335,7 +338,7 @@ class TypeAnnotator: left_type = expression.left.type.this right_type = expression.right.type.this - if isinstance(expression, (exp.And, exp.Or)): + if isinstance(expression, exp.Connector): if left_type == exp.DataType.Type.NULL and right_type == exp.DataType.Type.NULL: expression.type = exp.DataType.Type.NULL elif exp.DataType.Type.NULL in (left_type, right_type): @@ -344,7 +347,7 @@ class TypeAnnotator: ) else: expression.type = exp.DataType.Type.BOOLEAN - elif isinstance(expression, (exp.Condition, exp.Predicate)): + elif isinstance(expression, exp.Predicate): expression.type = exp.DataType.Type.BOOLEAN else: expression.type = self._maybe_coerce(left_type, right_type) |