summaryrefslogtreecommitdiffstats
path: root/sqlglot/executor/table.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2022-11-11 08:54:35 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2022-11-11 08:54:35 +0000
commitd1f00706bff58b863b0a1c5bf4adf39d36049d4c (patch)
tree3a8ecc5d1509d655d5df6b1455bc1e309da2c02c /sqlglot/executor/table.py
parentReleasing debian version 9.0.6-1. (diff)
downloadsqlglot-d1f00706bff58b863b0a1c5bf4adf39d36049d4c.tar.xz
sqlglot-d1f00706bff58b863b0a1c5bf4adf39d36049d4c.zip
Merging upstream version 10.0.1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'sqlglot/executor/table.py')
-rw-r--r--sqlglot/executor/table.py27
1 files changed, 19 insertions, 8 deletions
diff --git a/sqlglot/executor/table.py b/sqlglot/executor/table.py
index 80674cb..6796740 100644
--- a/sqlglot/executor/table.py
+++ b/sqlglot/executor/table.py
@@ -1,10 +1,12 @@
class Table:
- def __init__(self, *columns, rows=None):
- self.columns = tuple(columns if isinstance(columns[0], str) else columns[0])
+ def __init__(self, columns, rows=None, column_range=None):
+ self.columns = tuple(columns)
+ self.column_range = column_range
+ self.reader = RowReader(self.columns, self.column_range)
+
self.rows = rows or []
if rows:
assert len(rows[0]) == len(self.columns)
- self.reader = RowReader(self.columns)
self.range_reader = RangeReader(self)
def append(self, row):
@@ -29,15 +31,22 @@ class Table:
return self.reader
def __repr__(self):
- widths = {column: len(column) for column in self.columns}
- lines = [" ".join(column for column in self.columns)]
+ columns = tuple(
+ column
+ for i, column in enumerate(self.columns)
+ if not self.column_range or i in self.column_range
+ )
+ widths = {column: len(column) for column in columns}
+ lines = [" ".join(column for column in columns)]
for i, row in enumerate(self):
if i > 10:
break
lines.append(
- " ".join(str(row[column]).rjust(widths[column])[0 : widths[column]] for column in self.columns)
+ " ".join(
+ str(row[column]).rjust(widths[column])[0 : widths[column]] for column in columns
+ )
)
return "\n".join(lines)
@@ -70,8 +79,10 @@ class RangeReader:
class RowReader:
- def __init__(self, columns):
- self.columns = {column: i for i, column in enumerate(columns)}
+ def __init__(self, columns, column_range=None):
+ self.columns = {
+ column: i for i, column in enumerate(columns) if not column_range or i in column_range
+ }
self.row = None
def __getitem__(self, column):