You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by jo...@apache.org on 2023/08/31 17:23:39 UTC
[superset] branch master updated: fix: add format for timestamp in crdb to correctly use times values (#24711)
This is an automated email from the ASF dual-hosted git repository.
johnbodley pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new 321d968504 fix: add format for timestamp in crdb to correctly use times values (#24711)
321d968504 is described below
commit 321d968504e8320070b1663fdbfc1f927014f788
Author: Ethan M Lewis <et...@gmail.com>
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 <45...@users.noreply.github.com>
---
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
+
+
+@pytest.mark.parametrize(
+ "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)