diff --git a/oceanbase-sqlalchemy-plugin/oceanbase_sqlalchemy/cx_oracle.py b/oceanbase-sqlalchemy-plugin/oceanbase_sqlalchemy/cx_oracle.py index 3be9e408..69846ed8 100644 --- a/oceanbase-sqlalchemy-plugin/oceanbase_sqlalchemy/cx_oracle.py +++ b/oceanbase-sqlalchemy-plugin/oceanbase_sqlalchemy/cx_oracle.py @@ -22,6 +22,12 @@ if SA_20_PLUS: from sqlalchemy.dialects.oracle import dictionary + _dictionary_has_ind_expressions = ( + getattr(dictionary, "all_ind_expressions", None) is not None + ) +else: + _dictionary_has_ind_expressions = False + class OceanBaseCompiler_cx_oracle(OracleCompiler_cx_oracle): """ @@ -239,6 +245,8 @@ def _index_query(self, owner): Only for sqlalchemy 2.x compatibility. """ + if not _dictionary_has_ind_expressions: + return super()._index_query(owner) return ( select( dictionary.all_ind_columns.c.table_name, diff --git a/oceanbase-sqlalchemy-plugin/setup.py b/oceanbase-sqlalchemy-plugin/setup.py index e92d8bc4..6750071d 100644 --- a/oceanbase-sqlalchemy-plugin/setup.py +++ b/oceanbase-sqlalchemy-plugin/setup.py @@ -18,7 +18,6 @@ keywords="sqlalchemy oceanbase oracle dialect database", install_requires=[ "sqlalchemy>=1.3.0", - "cx_oracle>=8.0.0", ], entry_points={ "sqlalchemy.dialects": [