We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
I think this is only an issue with sqlite, since it's untyped.
harlequin -a sqlite
then
select 1000 union all select 'hi'
Crashes with:
╭───────────────────────────────────────── Traceback (most recent call last) ──────────────────────────────────────────╮ │ /home/tco/open/harlequin/src/harlequin/app.py:479 in load_tables │ │ │ │ 476 │ @on(ResultsFetched) │ │ 477 │ async def load_tables(self, message: ResultsFetched) -> None: │ │ 478 │ │ for id_, (cols, data, query_text) in message.data.items(): │ │ ❱ 479 │ │ │ table = await self.results_viewer.push_table( │ │ 480 │ │ │ │ table_id=id_, │ │ 481 │ │ │ │ column_labels=cols, │ │ 482 │ │ │ │ data=data, # type: ignore │ │ │ │ ╭───────────────────────────── locals ──────────────────────────────╮ │ │ │ cols = [('1000', '##')] │ │ │ │ data = [(1000,), ('hi',)] │ │ │ │ id_ = 't8774243273668' │ │ │ │ message = ResultsFetched() │ │ │ │ query_text = "select 1000\nunion all select 'hi'" │ │ │ │ self = Harlequin(title='Harlequin', classes={'-dark-mode'}) │ │ │ ╰───────────────────────────────────────────────────────────────────╯ │ │ │ │ /home/tco/open/harlequin/src/harlequin/components/results_viewer.py:80 in push_table │ │ │ │ 77 │ │ │ self._format_column_label(col_name, col_type) │ │ 78 │ │ │ for col_name, col_type in column_labels │ │ 79 │ │ ] │ │ ❱ 80 │ │ table = ResultsTable( │ │ 81 │ │ │ id=table_id, │ │ 82 │ │ │ column_labels=formatted_labels, # type: ignore │ │ 83 │ │ │ data=data, │ │ │ │ ╭────────────────── locals ──────────────────╮ │ │ │ column_labels = [('1000', '##')] │ │ │ │ data = [(1000,), ('hi',)] │ │ │ │ formatted_labels = ['1000 [#777777]##[/]'] │ │ │ │ self = ResultsViewer() │ │ │ │ table_id = 't8774243273668' │ │ │ ╰────────────────────────────────────────────╯ │ │ │ │ /home/tco/open/textual-fastdatatable/src/textual_fastdatatable/data_table.py:559 in __init__ │ │ │ │ 556 │ │ │ self.backend: DataTableBackend | None = ( │ │ 557 │ │ │ │ backend │ │ 558 │ │ │ │ if backend is not None │ │ ❱ 559 │ │ │ │ else create_backend( │ │ 560 │ │ │ │ │ data, max_rows=max_rows, has_header=(column_labels is None) # type: │ │ 561 │ │ │ │ ) │ │ 562 │ │ │ ) │ │ │ │ ╭──────────────────────────── locals ────────────────────────────╮ │ │ │ backend = None │ │ │ │ classes = None │ │ │ │ column_labels = ['1000 [#777777]##[/]'] │ │ │ │ column_widths = None │ │ │ │ cursor_background_priority = 'renderable' │ │ │ │ cursor_foreground_priority = 'css' │ │ │ │ cursor_type = 'range' │ │ │ │ data = [(1000,), ('hi',)] │ │ │ │ disabled = False │ │ │ │ fixed_columns = 0 │ │ │ │ fixed_rows = 0 │ │ │ │ header_height = 1 │ │ │ │ id = 't8774243273668' │ │ │ │ max_column_content_width = 43 │ │ │ │ max_rows = 100000 │ │ │ │ name = None │ │ │ │ null_rep = '[dim]∅ null[/]' │ │ │ │ self = ResultsTable(id='t8774243273668') │ │ │ │ show_cursor = True │ │ │ │ show_header = True │ │ │ │ show_row_labels = True │ │ │ │ zebra_stripes = False │ │ │ ╰────────────────────────────────────────────────────────────────╯ │ │ │ │ /home/tco/open/textual-fastdatatable/src/textual_fastdatatable/backend.py:41 in create_backend │ │ │ │ 38 │ elif isinstance(data, Sequence) and not data: │ │ 39 │ │ return ArrowBackend(pa.table([]), max_rows=max_rows) │ │ 40 │ elif isinstance(data, Sequence) and _is_iterable(data[0]): │ │ ❱ 41 │ │ return ArrowBackend.from_records(data, max_rows=max_rows, has_header=has_header) │ │ 42 │ elif ( │ │ 43 │ │ isinstance(data, Mapping) │ │ 44 │ │ and isinstance(next(iter(data.keys())), str) │ │ │ │ ╭──────────── locals ─────────────╮ │ │ │ data = [(1000,), ('hi',)] │ │ │ │ has_header = False │ │ │ │ max_rows = 100000 │ │ │ ╰─────────────────────────────────╯ │ │ │ │ /home/tco/open/textual-fastdatatable/src/textual_fastdatatable/backend.py:218 in from_records │ │ │ │ 215 │ │ max_rows: int | None = None, │ │ 216 │ ) -> "ArrowBackend": │ │ 217 │ │ pydict = cls._pydict_from_records(records, has_header) │ │ ❱ 218 │ │ return cls.from_pydict(pydict, max_rows=max_rows) │ │ 219 │ │ │ 220 │ @property │ │ 221 │ def source_row_count(self) -> int: │ │ │ │ ╭───────────────────────────── locals ──────────────────────────────╮ │ │ │ cls = <class 'textual_fastdatatable.backend.ArrowBackend'> │ │ │ │ has_header = False │ │ │ │ max_rows = 100000 │ │ │ │ pydict = {'f0': [1000, 'hi']} │ │ │ │ records = [(1000,), ('hi',)] │ │ │ ╰───────────────────────────────────────────────────────────────────╯ │ │ │ │ /home/tco/open/textual-fastdatatable/src/textual_fastdatatable/backend.py:207 in from_pydict │ │ │ │ 204 │ def from_pydict( │ │ 205 │ │ cls, data: Mapping[str, Sequence[Any]], max_rows: int | None = None │ │ 206 │ ) -> "ArrowBackend": │ │ ❱ 207 │ │ tbl = pa.Table.from_pydict(dict(data)) │ │ 208 │ │ return cls(tbl, max_rows=max_rows) │ │ 209 │ │ │ 210 │ @classmethod │ │ │ │ ╭──────────────────────────── locals ─────────────────────────────╮ │ │ │ cls = <class 'textual_fastdatatable.backend.ArrowBackend'> │ │ │ │ data = {'f0': [1000, 'hi']} │ │ │ │ max_rows = 100000 │ │ │ ╰─────────────────────────────────────────────────────────────────╯ │ │ │ │ in pyarrow.lib._Tabular.from_pydict:1812 │ │ │ │ in pyarrow.lib._from_pydict:5275 │ │ │ │ in pyarrow.lib.asarray:374 │ │ │ │ in pyarrow.lib.array:344 │ │ │ │ in pyarrow.lib._sequence_to_array:42 │ │ │ │ in pyarrow.lib.pyarrow_internal_check_status:154 │ │ │ │ in pyarrow.lib.check_status:91 │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ArrowInvalid: Could not convert 'hi' with type str: tried to convert to int64
The text was updated successfully, but these errors were encountered:
Successfully merging a pull request may close this issue.
I think this is only an issue with sqlite, since it's untyped.
then
Crashes with:
The text was updated successfully, but these errors were encountered: