pgsync icon indicating copy to clipboard operation
pgsync copied to clipboard

Incompatibility with timescale

Open gabrielpra1 opened this issue 4 years ago • 1 comments

  • PGSync version: 2.1.1
  • Postgres version: 13
  • Elasticsearch version: 7
  • Redis version: 6.2
  • Python version: 3.7

Problem Description:

It seems pgsync does not work with TimescaleDB, throwing the following error during bootstrap:

Traceback (most recent call last):,
  File "/usr/local/bin/bootstrap", line 66, in <module>,
    main(),
  File "/usr/local/lib/python3.7/site-packages/click/core.py", line 1137, in __call__,
    return self.main(*args, **kwargs),
  File "/usr/local/lib/python3.7/site-packages/click/core.py", line 1062, in main,
    rv = self.invoke(ctx),
  File "/usr/local/lib/python3.7/site-packages/click/core.py", line 1404, in invoke,
    return ctx.invoke(self.callback, **ctx.params),
  File "/usr/local/lib/python3.7/site-packages/click/core.py", line 763, in invoke,
    return __callback(*args, **kwargs),
  File "/usr/local/bin/bootstrap", line 61, in main,
    sync.setup(),
  File "/usr/local/lib/python3.7/site-packages/pgsync/sync.py", line 166, in setup,
    self.teardown(drop_view=False),
  File "/usr/local/lib/python3.7/site-packages/pgsync/sync.py", line 210, in teardown,
    self.drop_triggers(schema=schema, tables=tables),
  File "/usr/local/lib/python3.7/site-packages/pgsync/base.py", line 649, in drop_triggers,
    for table in self.tables(schema):,
  File "/usr/local/lib/python3.7/site-packages/pgsync/base.py", line 181, in tables,
    metadata.reflect(self.__engine),
  File "/usr/local/lib/python3.7/site-packages/sqlalchemy/sql/schema.py", line 4710, in reflect,
    Table(name, self, **reflect_opts),
  File "<string>", line 2, in __new__,
  File "/usr/local/lib/python3.7/site-packages/sqlalchemy/util/deprecations.py", line 298, in warned,
    return fn(*args, **kwargs),
  File "/usr/local/lib/python3.7/site-packages/sqlalchemy/sql/schema.py", line 600, in __new__,
    metadata._remove_table(name, schema),
  File "/usr/local/lib/python3.7/site-packages/sqlalchemy/util/langhelpers.py", line 72, in __exit__,
    with_traceback=exc_tb,,
  File "/usr/local/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 207, in raise_,
    raise exception,
  File "/usr/local/lib/python3.7/site-packages/sqlalchemy/sql/schema.py", line 595, in __new__,
    table._init(name, metadata, *args, **kw),
  File "/usr/local/lib/python3.7/site-packages/sqlalchemy/sql/schema.py", line 675, in _init,
    resolve_fks=resolve_fks,,
  File "/usr/local/lib/python3.7/site-packages/sqlalchemy/sql/schema.py", line 710, in _autoload,
    _extend_on=_extend_on,,
  File "/usr/local/lib/python3.7/site-packages/sqlalchemy/engine/reflection.py", line 788, in reflect_table,
    raise exc.NoSuchTableError(table.name),
sqlalchemy.exc.NoSuchTableError: cache_inval_hypertable

This was briefly discussed at https://github.com/toluaina/pgsync/issues/43, but the discussion went another direction.

I also found a similar issue on alembic, also coming from the same underlying problem in SQLAlchemy: https://github.com/sqlalchemy/alembic/issues/733

Is there a workaround for this, or is it not possible to use PGSync with TimescaleDB at the moment?

gabrielpra1 avatar Sep 04 '21 19:09 gabrielpra1

Sorry about the delay. Yes I intend to do this. I haven't had the time for new features. This is still in the backlog. Feel free to leave this open. I will take a look at the thread in https://github.com/sqlalchemy/alembic/issues/733

toluaina avatar Sep 09 '21 15:09 toluaina