From 76889c1a69687c56df3f10a5193f0b554e81b87b Mon Sep 17 00:00:00 2001 From: Evan Rusackas Date: Tue, 3 Feb 2026 15:29:19 -0500 Subject: [PATCH] feat(db_engine_specs): add Apache Phoenix and Apache IoTDB engine specs (#37590) Co-authored-by: Claude Opus 4.5 --- docs/static/img/databases/apache-iotdb.svg | 57 ++++++++++++ docs/static/img/databases/apache-phoenix.png | Bin 0 -> 29188 bytes superset/db_engine_specs/iotdb.py | 59 +++++++++++++ superset/db_engine_specs/phoenix.py | 86 +++++++++++++++++++ 4 files changed, 202 insertions(+) create mode 100644 docs/static/img/databases/apache-iotdb.svg create mode 100644 docs/static/img/databases/apache-phoenix.png create mode 100644 superset/db_engine_specs/iotdb.py create mode 100644 superset/db_engine_specs/phoenix.py diff --git a/docs/static/img/databases/apache-iotdb.svg b/docs/static/img/databases/apache-iotdb.svg new file mode 100644 index 00000000000..d7426307378 --- /dev/null +++ b/docs/static/img/databases/apache-iotdb.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/static/img/databases/apache-phoenix.png b/docs/static/img/databases/apache-phoenix.png new file mode 100644 index 0000000000000000000000000000000000000000..9a1e8ca51da8f9a838f6341c16321c0a3eb0438d GIT binary patch literal 29188 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 Optional[str]: + sqla_type = cls.get_sqla_column_type(target_type) + + if isinstance(sqla_type, types.Date): + return f"TO_DATE('{dttm.date().isoformat()}', 'yyyy-MM-dd')" + if isinstance(sqla_type, (types.DateTime, types.TIMESTAMP)): + datetime_formatted = dttm.isoformat(sep=" ", timespec="seconds") + return f"TO_TIMESTAMP('{datetime_formatted}', 'yyyy-MM-dd HH:mm:ss')" + return None