diff --git a/README.md b/README.md index 63b78b1c9d..15c09ee0f7 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,7 @@ Redash supports more than 35 SQL and NoSQL [data sources](https://redash.io/help - Python - Qubole - Rockset +- RisingWave - Salesforce - ScyllaDB - Shell Scripts diff --git a/client/app/assets/images/db-logos/risingwave.png b/client/app/assets/images/db-logos/risingwave.png new file mode 100644 index 0000000000..ae4a13f129 Binary files /dev/null and b/client/app/assets/images/db-logos/risingwave.png differ diff --git a/redash/query_runner/risingwave.py b/redash/query_runner/risingwave.py new file mode 100644 index 0000000000..2cc241d095 --- /dev/null +++ b/redash/query_runner/risingwave.py @@ -0,0 +1,45 @@ +from redash.query_runner import register +from redash.query_runner.pg import PostgreSQL + + +class RisingWave(PostgreSQL): + @classmethod + def type(cls): + return "risingwave" + + @classmethod + def name(cls): + return "RisingWave" + + def _get_tables(self, schema): + query = """ + SELECT s.nspname as table_schema, + c.relname as table_name, + a.attname as column_name, + null as data_type + FROM pg_class c + JOIN pg_namespace s + ON c.relnamespace = s.oid + AND s.nspname NOT IN ('pg_catalog', 'information_schema', 'rw_catalog') + JOIN pg_attribute a + ON a.attrelid = c.oid + AND a.attnum > 0 + AND NOT a.attisdropped + WHERE c.relkind IN ('m', 'f', 'p') + + UNION + + SELECT table_schema, + table_name, + column_name, + data_type + FROM information_schema.columns + WHERE table_schema NOT IN ('pg_catalog', 'information_schema', 'rw_catalog'); + """ + + self._get_definitions(schema, query) + + return list(schema.values()) + + +register(RisingWave) diff --git a/redash/settings/__init__.py b/redash/settings/__init__.py index b7d30c693d..f62ba611e0 100644 --- a/redash/settings/__init__.py +++ b/redash/settings/__init__.py @@ -339,6 +339,7 @@ def email_server_is_configured(): "redash.query_runner.ignite", "redash.query_runner.oracle", "redash.query_runner.e6data", + "redash.query_runner.risingwave", ] enabled_query_runners = array_from_string(