summaryrefslogtreecommitdiffstats
path: root/sqlglot/executor
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-03-03 14:11:07 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-03-03 14:11:07 +0000
commit42a1548cecf48d18233f56e3385cf9c89abcb9c2 (patch)
tree5e0fff4ecbd1fd7dd1022a7580139038df2a824c /sqlglot/executor
parentReleasing debian version 21.1.2-1. (diff)
downloadsqlglot-42a1548cecf48d18233f56e3385cf9c89abcb9c2.tar.xz
sqlglot-42a1548cecf48d18233f56e3385cf9c89abcb9c2.zip
Merging upstream version 22.2.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'sqlglot/executor')
-rw-r--r--sqlglot/executor/context.py2
-rw-r--r--sqlglot/executor/python.py7
2 files changed, 6 insertions, 3 deletions
diff --git a/sqlglot/executor/context.py b/sqlglot/executor/context.py
index e4c4040..a411c18 100644
--- a/sqlglot/executor/context.py
+++ b/sqlglot/executor/context.py
@@ -78,7 +78,7 @@ class Context:
def sort(self, key) -> None:
def sort_key(row: t.Tuple) -> t.Tuple:
self.set_row(row)
- return self.eval_tuple(key)
+ return tuple((t is None, t) for t in self.eval_tuple(key))
self.table.rows.sort(key=sort_key)
diff --git a/sqlglot/executor/python.py b/sqlglot/executor/python.py
index c0becbe..a2b23d4 100644
--- a/sqlglot/executor/python.py
+++ b/sqlglot/executor/python.py
@@ -142,7 +142,6 @@ class PythonExecutor:
context = self.context({alias: table})
yield context
types = []
-
for row in reader:
if not types:
for v in row:
@@ -150,7 +149,11 @@ class PythonExecutor:
types.append(type(ast.literal_eval(v)))
except (ValueError, SyntaxError):
types.append(str)
- context.set_row(tuple(t(v) for t, v in zip(types, row)))
+
+ # We can't cast empty values ('') to non-string types, so we convert them to None instead
+ context.set_row(
+ tuple(None if (t is not str and v == "") else t(v) for t, v in zip(types, row))
+ )
yield context.table.reader
def join(self, step, context):