Skip to content

arun-k-bharathan/ibis_issue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ibis: steps to reproduce timestamp issue

Please run below commands

docker compose up -d

poetry install

poetry run python runme.py

Error log

Traceback (most recent call last):
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/trino/sqlalchemy/dialect.py", line 365, in do_execute
    cursor.execute(statement, parameters)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/trino/dbapi.py", line 439, in execute
    result = self._query.execute()
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/trino/client.py", line 765, in execute
    self._result.rows += self.fetch()
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/trino/client.py", line 780, in fetch
    status = self._request.process(response)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/trino/client.py", line 581, in process
    raise self._process_error(response["error"], response.get("id"))
trino.exceptions.TrinoUserError: TrinoUserError(type=USER_ERROR, name=NOT_SUPPORTED, message="Timestamp precision (3) not supported for Iceberg. Use "timestamp(6)" instead.", query_id=20230105_111531_00005_593ik)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/arun/Documents/python/ibis_issue/runme.py", line 23, in <module>
    connection.create_table("iceberg_table", schema=first)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/src/ibis/ibis/backends/base/sql/alchemy/__init__.py", line 218, in create_table
    table.create(bind=bind, checkfirst=force)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/sqlalchemy/sql/schema.py", line 962, in create
    bind._run_ddl_visitor(ddl.SchemaGenerator, self, checkfirst=checkfirst)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2211, in _run_ddl_visitor
    visitorcallable(self.dialect, self, **kwargs).traverse_single(element)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/sqlalchemy/sql/visitors.py", line 524, in traverse_single
    return meth(obj, **kw)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/sqlalchemy/sql/ddl.py", line 895, in visit_table
    self.connection.execute(
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1380, in execute
    return meth(self, multiparams, params, _EMPTY_EXECUTION_OPTS)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/sqlalchemy/sql/ddl.py", line 80, in _execute_on_connection
    return connection._execute_ddl(
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1472, in _execute_ddl
    ret = self._execute_context(
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1943, in _execute_context
    self._handle_dbapi_exception(
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2124, in _handle_dbapi_exception
    util.raise_(
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
    raise exception
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/trino/sqlalchemy/dialect.py", line 365, in do_execute
    cursor.execute(statement, parameters)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/trino/dbapi.py", line 439, in execute
    result = self._query.execute()
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/trino/client.py", line 765, in execute
    self._result.rows += self.fetch()
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/trino/client.py", line 780, in fetch
    status = self._request.process(response)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/trino/client.py", line 581, in process
    raise self._process_error(response["error"], response.get("id"))
sqlalchemy.exc.ProgrammingError: (trino.exceptions.TrinoUserError) TrinoUserError(type=USER_ERROR, name=NOT_SUPPORTED, message="Timestamp precision (3) not supported for Iceberg. Use "timestamp(6)" instead.", query_id=20230105_111531_00005_593ik)
[SQL: 
CREATE TABLE iceberg_table (
        a TIMESTAMP
)

]
(Background on this error at: https://sqlalche.me/e/14/f405) 

Now change timestamp here to timestamp(6) in runme.py

then run

poetry run python runme.py

Error log

Traceback (most recent call last):
  File "/home/arun/Documents/python/ibis_issue/runme.py", line 22, in <module>
    first = ibis.schema({"a": "timestamp(6)"})
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/src/ibis/ibis/expr/api.py", line 277, in schema
    return sch.schema(pairs)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/multipledispatch/dispatcher.py", line 278, in __call__
    return func(*args, **kwargs)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/src/ibis/ibis/expr/schema.py", line 408, in schema_from_mapping
    return Schema.from_dict(d)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/src/ibis/ibis/expr/schema.py", line 204, in from_dict
    return cls(names, types)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/src/ibis/ibis/common/grounds.py", line 23, in __call__
    return cls.__create__(*args, **kwargs)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/src/ibis/ibis/common/grounds.py", line 99, in __create__
    kwargs = cls.__signature__.validate(*args, **kwargs)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/src/ibis/ibis/common/annotations.py", line 261, in validate
    this[name] = param.validate(value, this=this)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/src/ibis/ibis/common/annotations.py", line 115, in validate
    return self.annotation(arg, this=this)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/toolz/functoolz.py", line 304, in __call__
    return self._partial(*args, **kwargs)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/src/ibis/ibis/common/validators.py", line 193, in container_of
    return type(inner(item, **kwargs) for item in arg)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/src/ibis/ibis/common/validators.py", line 193, in <genexpr>
    return type(inner(item, **kwargs) for item in arg)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/toolz/functoolz.py", line 304, in __call__
    return self._partial(*args, **kwargs)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/src/ibis/ibis/expr/schema.py", line 43, in datatype
    return dt.dtype(arg)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/multipledispatch/dispatcher.py", line 278, in __call__
    return func(*args, **kwargs)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/src/ibis/ibis/expr/datatypes/parse.py", line 249, in from_string
    return parse(value)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/src/ibis/ibis/expr/datatypes/parse.py", line 243, in parse
    return ty.parse(text)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/parsy/__init__.py", line 87, in parse
    (result, _) = (self << eof).parse_partial(stream)
  File "/home/arun/.cache/pypoetry/virtualenvs/ibis-trino-iceberg-issue-JyJ77i8h-py3.10/lib/python3.10/site-packages/parsy/__init__.py", line 101, in parse_partial
    raise ParseError(result.expected, stream, result.furthest)
parsy.ParseError: expected '(\'[^\n\'\\\\]*(?:\\\\.[^\n\'\\\\]*)*\'|"[^\n"\\\\"]*(?:\\\\.[^\n"\\\\]*)*")' at 0:10

If we try to cast timestamp to timestamp(6) same issue as above this will happen.

About

Setup to reproduce timestamp(6) ibis issue

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages