This is an automated email from the ASF dual-hosted git repository. michaelsmolina pushed a commit to branch 3.0 in repository https://gitbox.apache.org/repos/asf/superset.git
commit dd0475d63c1eaf10c0aba5ae9d999ae8e7e7c153 Author: Ethan M Lewis <[email protected]> AuthorDate: Thu Aug 31 10:23:32 2023 -0700 fix: add format for timestamp in crdb to correctly use times values (#24711) Co-authored-by: John Bodley <[email protected]> (cherry picked from commit 321d968504e8320070b1663fdbfc1f927014f788) --- superset/db_engine_specs/cockroachdb.py | 17 +++++++++++++- .../unit_tests/db_engine_specs/test_crdb.py | 27 ++++++++++++++++++---- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/superset/db_engine_specs/cockroachdb.py b/superset/db_engine_specs/cockroachdb.py index 8c83bd793d..4486c569dd 100644 --- a/superset/db_engine_specs/cockroachdb.py +++ b/superset/db_engine_specs/cockroachdb.py @@ -14,10 +14,25 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. +from datetime import datetime +from typing import Any, Optional + +from sqlalchemy import types + from superset.db_engine_specs.postgres import PostgresEngineSpec class CockroachDbEngineSpec(PostgresEngineSpec): engine = "cockroachdb" engine_name = "CockroachDB" - default_driver = "" + + @classmethod + def convert_dttm( + cls, target_type: str, dttm: datetime, db_extra: Optional[dict[str, Any]] = None + ) -> Optional[str]: + sqla_type = cls.get_sqla_column_type(target_type) + if isinstance(sqla_type, types.Date): + return f"'{dttm.date().isoformat()}'" + if isinstance(sqla_type, (types.String, types.DateTime)): + return f"""'{dttm.isoformat(sep=" ", timespec="seconds")}'""" + return None diff --git a/superset/db_engine_specs/cockroachdb.py b/tests/unit_tests/db_engine_specs/test_crdb.py similarity index 52% copy from superset/db_engine_specs/cockroachdb.py copy to tests/unit_tests/db_engine_specs/test_crdb.py index 8c83bd793d..e2067d3c9d 100644 --- a/superset/db_engine_specs/cockroachdb.py +++ b/tests/unit_tests/db_engine_specs/test_crdb.py @@ -14,10 +14,27 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -from superset.db_engine_specs.postgres import PostgresEngineSpec +# pylint: disable=unused-argument, import-outside-toplevel, protected-access +from datetime import datetime +from typing import Optional +import pytest -class CockroachDbEngineSpec(PostgresEngineSpec): - engine = "cockroachdb" - engine_name = "CockroachDB" - default_driver = "" +from tests.unit_tests.db_engine_specs.utils import assert_convert_dttm +from tests.unit_tests.fixtures.common import dttm + + [email protected]( + "target_type,expected_result", + [ + ("Date", "'2019-01-02'"), + ("TimeStamp", "'2019-01-02 03:04:05'"), + ("UnknownType", None), + ], +) +def test_convert_dttm( + target_type: str, expected_result: Optional[str], dttm: datetime +) -> None: + from superset.db_engine_specs.cockroachdb import CockroachDbEngineSpec as spec + + assert_convert_dttm(spec, target_type, expected_result, dttm)
