Skip to content

Commit d28546d

Browse files
authored
Merge pull request #7 from datafuselabs/fix/get-indexs
fix: get_indexs bug
2 parents 85e4055 + b4fc192 commit d28546d

File tree

3 files changed

+23
-38
lines changed

3 files changed

+23
-38
lines changed

Diff for: databend_sqlalchemy/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33

44
from databend_sqlalchemy.entry_points import validate_entrypoints # noqa
55

6-
VERSION = (0, 3, 1)
6+
VERSION = (0, 3, 2)
77
__version__ = ".".join(str(x) for x in VERSION)

Diff for: databend_sqlalchemy/databend_dialect.py

+1-21
Original file line numberDiff line numberDiff line change
@@ -338,27 +338,7 @@ def get_pk_constraint(self, connection, table_name, schema=None, **kw):
338338

339339
@reflection.cache
340340
def get_indexes(self, connection, table_name, schema=None, **kw):
341-
full_table = table_name
342-
if schema:
343-
full_table = schema + "." + table_name
344-
# We must get the full table creation STMT to parse engine and partitions
345-
rows = [
346-
r for r in connection.execute("SHOW CREATE TABLE {}".format(full_table))
347-
]
348-
if len(rows) < 1:
349-
return []
350-
# VIEWs are not going to have ENGINE associated, there is no good way how to
351-
# determine partitioning columns (or indexes)
352-
engine_spec = re.search(r"ENGINE = (\w+)\((.+)\)", rows[0].statement)
353-
if not engine_spec:
354-
return []
355-
engine, params = engine_spec.group(1, 2)
356-
# Handle partition columns
357-
cols = re.search(r"\((.+)\)", params)
358-
if not cols:
359-
return []
360-
col_names = [c.strip() for c in cols.group(1).split(",")]
361-
return [{"name": "partition", "column_names": col_names, "unique": False}]
341+
return []
362342

363343
# @reflection.cache
364344
def get_table_names(self, connection, schema=None, **kw):

Diff for: tests/unit/test_databend_dialect.py

+21-16
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,15 @@ def test_create_dialect(self, dialect: DatabendDialect):
4141
# assert result_dict["username"] == "user"
4242

4343
def test_do_execute(
44-
self, dialect: DatabendDialect, cursor: mock.Mock(spec=MockCursor)
44+
self, dialect: DatabendDialect, cursor: mock.Mock(spec=MockCursor)
4545
):
4646
dialect.do_execute(cursor, "SELECT *", None)
4747
cursor.execute.assert_called_once_with("SELECT *", None)
4848
cursor.execute.reset_mock()
4949
dialect.do_execute(cursor, "SELECT *", (1, 22), None)
5050

5151
def test_table_names(
52-
self, dialect: DatabendDialect, connection: mock.Mock(spec=MockDBApi)
52+
self, dialect: DatabendDialect, connection: mock.Mock(spec=MockDBApi)
5353
):
5454
connection.execute.return_value = [
5555
("table1",),
@@ -74,13 +74,18 @@ def test_table_names(
7474
)
7575

7676
def test_view_names(
77-
self, dialect: DatabendDialect, connection: mock.Mock(spec=MockDBApi)
77+
self, dialect: DatabendDialect, connection: mock.Mock(spec=MockDBApi)
7878
):
7979
connection.execute.return_value = []
8080
assert dialect.get_view_names(connection) == []
8181

82+
def test_indexes(
83+
self, dialect: DatabendDialect, connection: mock.Mock(spec=MockDBApi)
84+
):
85+
assert dialect.get_indexes(connection, "table") == []
86+
8287
def test_columns(
83-
self, dialect: DatabendDialect, connection: mock.Mock(spec=MockDBApi)
88+
self, dialect: DatabendDialect, connection: mock.Mock(spec=MockDBApi)
8489
):
8590
def multi_column_row(columns):
8691
def getitem(self, idx):
@@ -104,11 +109,11 @@ def getitem(self, idx):
104109
expected_query_schema = expected_query + " and table_schema = 'schema'"
105110

106111
for call, expected_query in (
107-
(lambda: dialect.get_columns(connection, "table"), expected_query),
108-
(
109-
lambda: dialect.get_columns(connection, "table", "schema"),
110-
expected_query_schema,
111-
),
112+
(lambda: dialect.get_columns(connection, "table"), expected_query),
113+
(
114+
lambda: dialect.get_columns(connection, "table", "schema"),
115+
expected_query_schema,
116+
),
112117
):
113118
assert call() == [
114119
{
@@ -140,22 +145,22 @@ def test_types():
140145
assert databend_sqlalchemy.databend_dialect.CHAR is sqlalchemy.sql.sqltypes.CHAR
141146
assert databend_sqlalchemy.databend_dialect.DATE is sqlalchemy.sql.sqltypes.DATE
142147
assert (
143-
databend_sqlalchemy.databend_dialect.DATETIME
144-
is sqlalchemy.sql.sqltypes.DATETIME
148+
databend_sqlalchemy.databend_dialect.DATETIME
149+
is sqlalchemy.sql.sqltypes.DATETIME
145150
)
146151
assert (
147-
databend_sqlalchemy.databend_dialect.INTEGER is sqlalchemy.sql.sqltypes.INTEGER
152+
databend_sqlalchemy.databend_dialect.INTEGER is sqlalchemy.sql.sqltypes.INTEGER
148153
)
149154
assert databend_sqlalchemy.databend_dialect.BIGINT is sqlalchemy.sql.sqltypes.BIGINT
150155
assert (
151-
databend_sqlalchemy.databend_dialect.TIMESTAMP
152-
is sqlalchemy.sql.sqltypes.TIMESTAMP
156+
databend_sqlalchemy.databend_dialect.TIMESTAMP
157+
is sqlalchemy.sql.sqltypes.TIMESTAMP
153158
)
154159
assert (
155-
databend_sqlalchemy.databend_dialect.VARCHAR is sqlalchemy.sql.sqltypes.VARCHAR
160+
databend_sqlalchemy.databend_dialect.VARCHAR is sqlalchemy.sql.sqltypes.VARCHAR
156161
)
157162
assert (
158-
databend_sqlalchemy.databend_dialect.BOOLEAN is sqlalchemy.sql.sqltypes.BOOLEAN
163+
databend_sqlalchemy.databend_dialect.BOOLEAN is sqlalchemy.sql.sqltypes.BOOLEAN
159164
)
160165
assert databend_sqlalchemy.databend_dialect.FLOAT is sqlalchemy.sql.sqltypes.FLOAT
161166
assert issubclass(

0 commit comments

Comments
 (0)