It seems like SQLAlchemy auto index name resolver is duplicating the index name as following:
export SQLALCHEMY_DATABASE_URI="postgresql://postgres:postgres@localhost:5432/bdc"
bdc-db db init
bdc-db db create-namespaces
bdc-db db create-extension-postgis
bdc-db db create-schema
File "/tmp/bdc-catalog/venv/lib/python3.9/site-packages/bdc_db/cli.py", line 104, in create_schema
table.create(bind=_db.engine, checkfirst=True)
File "/tmp/bdc-catalog/venv/lib/python3.9/site-packages/sqlalchemy/sql/schema.py", line 962, in create
bind._run_ddl_visitor(ddl.SchemaGenerator, self, checkfirst=checkfirst)
File "/tmp/bdc-catalog/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3233, in _run_ddl_visitor
conn._run_ddl_visitor(visitorcallable, element, **kwargs)
File "/tmp/bdc-catalog/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2216, in _run_ddl_visitor
visitorcallable(self.dialect, self, **kwargs).traverse_single(element)
File "/tmp/bdc-catalog/venv/lib/python3.9/site-packages/sqlalchemy/sql/visitors.py", line 524, in traverse_single
return meth(obj, **kw)
File "/tmp/bdc-catalog/venv/lib/python3.9/site-packages/sqlalchemy/sql/ddl.py", line 911, in visit_table
self.traverse_single(index, create_ok=True)
File "/tmp/bdc-catalog/venv/lib/python3.9/site-packages/sqlalchemy/sql/visitors.py", line 524, in traverse_single
return meth(obj, **kw)
File "/tmp/bdc-catalog/venv/lib/python3.9/site-packages/sqlalchemy/sql/ddl.py", line 942, in visit_index
self.connection.execute(CreateIndex(index))
File "/tmp/bdc-catalog/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1385, in execute
return meth(self, multiparams, params, _EMPTY_EXECUTION_OPTS)
File "/tmp/bdc-catalog/venv/lib/python3.9/site-packages/sqlalchemy/sql/ddl.py", line 80, in _execute_on_connection
return connection._execute_ddl(
File "/tmp/bdc-catalog/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1477, in _execute_ddl
ret = self._execute_context(
File "/tmp/bdc-catalog/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1948, in _execute_context
self._handle_dbapi_exception(
File "/tmp/bdc-catalog/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2129, in _handle_dbapi_exception
util.raise_(
File "/tmp/bdc-catalog/venv/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
raise exception
File "/tmp/bdc-catalog/venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1905, in _execute_context
self.dialect.do_execute(
File "/tmp/bdc-catalog/venv/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.DuplicateTable) relation "idx_bdc_items_start_date" already exists
We should force a fixed name for bdc_catalog.models.item.Item
Index(None, start_date.desc(), id),
The alembic set up is working:
export SQLALCHEMY_DATABASE_URI="postgresql://postgres:postgres@localhost:5432/bdc"
bdc-db db init
bdc-db db create-namespaces
bdc-db db create-extension-postgis
bdc-db alembic upgrade
It seems like SQLAlchemy auto index name resolver is duplicating the index name as following:
We should force a fixed name for bdc_catalog.models.item.Item
The alembic set up is working:
https://github.com/brazil-data-cube/bdc-catalog/blob/07649a6f493567880ffbd841c0daeacb97e98d81/bdc_catalog/alembic/f3112636be24_remove_lccs_db.py#L41