feat: support complex types and use get_columns implementation of starrrocks python client (#24237)

This commit is contained in:
miomiocat
2023-06-09 01:08:37 +08:00
committed by GitHub
parent 69c2cd5f40
commit fd3effe712
3 changed files with 62 additions and 67 deletions

View File

@@ -18,10 +18,20 @@
from typing import Any, Optional
import pytest
from sqlalchemy import types
from sqlalchemy import JSON, types
from sqlalchemy.engine.url import make_url
from superset.db_engine_specs.starrocks import ARRAY, DOUBLE, MAP, STRUCT, TINYINT
from superset.db_engine_specs.starrocks import (
ARRAY,
BITMAP,
DOUBLE,
HLL,
LARGEINT,
MAP,
PERCENTILE,
STRUCT,
TINYINT,
)
from superset.utils.core import GenericDataType
from tests.unit_tests.db_engine_specs.utils import assert_column_spec
@@ -30,17 +40,22 @@ from tests.unit_tests.db_engine_specs.utils import assert_column_spec
"native_type,sqla_type,attrs,generic_type,is_dttm",
[
# Numeric
("TINYINT", TINYINT, None, GenericDataType.NUMERIC, False),
("DECIMAL", types.DECIMAL, None, GenericDataType.NUMERIC, False),
("DOUBLE", DOUBLE, None, GenericDataType.NUMERIC, False),
("tinyint", TINYINT, None, GenericDataType.NUMERIC, False),
("largeint", LARGEINT, None, GenericDataType.NUMERIC, False),
("decimal(38,18)", types.DECIMAL, None, GenericDataType.NUMERIC, False),
("double", DOUBLE, None, GenericDataType.NUMERIC, False),
# String
("CHAR", types.CHAR, None, GenericDataType.STRING, False),
("VARCHAR", types.VARCHAR, None, GenericDataType.STRING, False),
("BINARY", types.String, None, GenericDataType.STRING, False),
("char(10)", types.CHAR, None, GenericDataType.STRING, False),
("varchar(65533)", types.VARCHAR, None, GenericDataType.STRING, False),
("binary", types.String, None, GenericDataType.STRING, False),
# Complex type
("ARRAY", ARRAY, None, GenericDataType.STRING, False),
("MAP", MAP, None, GenericDataType.STRING, False),
("STRUCT", STRUCT, None, GenericDataType.STRING, False),
("array<varchar(65533)>", ARRAY, None, GenericDataType.STRING, False),
("map<string,int>", MAP, None, GenericDataType.STRING, False),
("struct<int,string>", STRUCT, None, GenericDataType.STRING, False),
("json", JSON, None, GenericDataType.STRING, False),
("bitmap", BITMAP, None, GenericDataType.STRING, False),
("hll", HLL, None, GenericDataType.STRING, False),
("percentile", PERCENTILE, None, GenericDataType.STRING, False),
],
)
def test_get_column_spec(