From f5d614d80d560adacb35f171568115dfd082098c Mon Sep 17 00:00:00 2001 From: Ayush Tripathi <139324906+ayush-couchbase@users.noreply.github.com> Date: Tue, 13 Aug 2024 20:17:43 +0530 Subject: [PATCH] fix: Rename database from 'couchbasedb' to 'couchbase' in documentation and db_engine_specs (#29911) --- RESOURCES/INTHEWILD.md | 2 +- docs/docs/configuration/databases.mdx | 9 +++++---- .../{couchbasedb.py => couchbase.py} | 13 +++++++------ superset/sql_parse.py | 2 +- tests/unit_tests/db_engine_specs/test_couchbase.py | 12 ++++++------ 5 files changed, 20 insertions(+), 18 deletions(-) rename superset/db_engine_specs/{couchbasedb.py => couchbase.py} (96%) diff --git a/RESOURCES/INTHEWILD.md b/RESOURCES/INTHEWILD.md index 692ad130efc2c..ef1e1d7724b8d 100644 --- a/RESOURCES/INTHEWILD.md +++ b/RESOURCES/INTHEWILD.md @@ -80,7 +80,7 @@ Join our growing community! - [Caizin](https://caizin.com/) [@tejaskatariya] - [Careem](https://www.careem.com/) [@SamraHanifCareem] - [Cloudsmith](https://cloudsmith.io) [@alancarson] -- [CnOvit](http://www.cnovit.com/) [@xieshaohu] +- [CnOvit](https://www.cnovit.com/) [@xieshaohu] - [Cyberhaven](https://www.cyberhaven.com/) [@toliver-ch] - [Deepomatic](https://deepomatic.com/) [@Zanoellia] - [Dial Once](https://www.dial-once.com/) diff --git a/docs/docs/configuration/databases.mdx b/docs/docs/configuration/databases.mdx index 67734643b9b28..8bae5491b1662 100644 --- a/docs/docs/configuration/databases.mdx +++ b/docs/docs/configuration/databases.mdx @@ -54,7 +54,7 @@ are compatible with Superset. | [Azure MS SQL](/docs/configuration/databases#sql-server) | `pip install pymssql` | `mssql+pymssql://UserName@presetSQL:TestPassword@presetSQL.database.windows.net:1433/TestSchema` | | [ClickHouse](/docs/configuration/databases#clickhouse) | `pip install clickhouse-connect` | `clickhousedb://{username}:{password}@{hostname}:{port}/{database}` | | [CockroachDB](/docs/configuration/databases#cockroachdb) | `pip install cockroachdb` | `cockroachdb://root@{hostname}:{port}/{database}?sslmode=disable` | -| [CouchbaseDB](/docs/configuration/databases#couchbaseDB) | `pip install couchbase-sqlalchemy` | `couchbasedb://{username}:{password}@{hostname}:{port}?truststorepath={ssl certificate path}` | +| [Couchbase](/docs/configuration/databases#couchbase) | `pip install couchbase-sqlalchemy` | `couchbase://{username}:{password}@{hostname}:{port}?truststorepath={ssl certificate path}` | | [Dremio](/docs/configuration/databases#dremio) | `pip install sqlalchemy_dremio` | `dremio://user:pwd@host:31010/` | | [Elasticsearch](/docs/configuration/databases#elasticsearch) | `pip install elasticsearch-dbapi` | `elasticsearch+http://{user}:{password}@{host}:9200/` | | [Exasol](/docs/configuration/databases#exasol) | `pip install sqlalchemy-exasol` | `exa+pyodbc://{username}:{password}@{hostname}:{port}/my_schema?CONNECTIONLCALL=en_US.UTF-8&driver=EXAODBC` | @@ -375,9 +375,10 @@ cockroachdb://root@{hostname}:{port}/{database}?sslmode=disable -#### CouchbaseDB +#### Couchbase -The recommended connector library for CouchbaseDB is +The Couchbase's Superset connection is designed to support two services: Couchbase Analytics and Couchbase Columnar. +The recommended connector library for couchbase is [couchbase-sqlalchemy](https://github.com/couchbase/couchbase-sqlalchemy). ``` pip install couchbase-sqlalchemy @@ -386,7 +387,7 @@ pip install couchbase-sqlalchemy The expected connection string is formatted as follows: ``` -couchbasedb://{username}:{password}@{hostname}:{port}?truststorepath={certificate path}?ssl={true/false} +couchbase://{username}:{password}@{hostname}:{port}?truststorepath={certificate path}?ssl={true/false} ``` diff --git a/superset/db_engine_specs/couchbasedb.py b/superset/db_engine_specs/couchbase.py similarity index 96% rename from superset/db_engine_specs/couchbasedb.py rename to superset/db_engine_specs/couchbase.py index 71dc7276791a1..f42fb699bf90e 100644 --- a/superset/db_engine_specs/couchbasedb.py +++ b/superset/db_engine_specs/couchbase.py @@ -74,14 +74,15 @@ class CouchbaseParametersSchema(Schema): ) -class CouchbaseDbEngineSpec(BasicParametersMixin, BaseEngineSpec): - engine = "couchbasedb" +class CouchbaseEngineSpec(BasicParametersMixin, BaseEngineSpec): + engine = "couchbase" + engine_aliases = {"couchbasedb"} engine_name = "Couchbase" - default_driver = "couchbasedb" + default_driver = "couchbase" allows_joins = False allows_subqueries = False sqlalchemy_uri_placeholder = ( - "couchbasedb://user:password@host[:port]?truststorepath=value?ssl=value" + "couchbase://user:password@host[:port]?truststorepath=value?ssl=value" ) parameters_schema = CouchbaseParametersSchema() @@ -128,7 +129,7 @@ def build_sqlalchemy_uri( if parameters.get("port") is None: uri = URL.create( - "couchbasedb", + "couchbase", username=parameters.get("username"), password=parameters.get("password"), host=parameters["host"], @@ -137,7 +138,7 @@ def build_sqlalchemy_uri( ) else: uri = URL.create( - "couchbasedb", + "couchbase", username=parameters.get("username"), password=parameters.get("password"), host=parameters["host"], diff --git a/superset/sql_parse.py b/superset/sql_parse.py index 05bf9b19bb84a..cf78431753935 100644 --- a/superset/sql_parse.py +++ b/superset/sql_parse.py @@ -102,7 +102,7 @@ "clickhouse": Dialects.CLICKHOUSE, "clickhousedb": Dialects.CLICKHOUSE, "cockroachdb": Dialects.POSTGRES, - "couchbasedb": Dialects.MYSQL, + "couchbase": Dialects.MYSQL, # "crate": ??? # "databend": ??? "databricks": Dialects.DATABRICKS, diff --git a/tests/unit_tests/db_engine_specs/test_couchbase.py b/tests/unit_tests/db_engine_specs/test_couchbase.py index 06a0c9a03882b..99e509db3acc6 100644 --- a/tests/unit_tests/db_engine_specs/test_couchbase.py +++ b/tests/unit_tests/db_engine_specs/test_couchbase.py @@ -33,18 +33,18 @@ def test_epoch_to_dttm() -> None: """ DB Eng Specs (couchbase): Test epoch to dttm """ - from superset.db_engine_specs.couchbasedb import CouchbaseDbEngineSpec + from superset.db_engine_specs.couchbase import CouchbaseEngineSpec - assert CouchbaseDbEngineSpec.epoch_to_dttm() == "MILLIS_TO_STR({col} * 1000)" + assert CouchbaseEngineSpec.epoch_to_dttm() == "MILLIS_TO_STR({col} * 1000)" def test_epoch_ms_to_dttm() -> None: """ DB Eng Specs (couchbase): Test epoch ms to dttm """ - from superset.db_engine_specs.couchbasedb import CouchbaseDbEngineSpec + from superset.db_engine_specs.couchbase import CouchbaseEngineSpec - assert CouchbaseDbEngineSpec.epoch_ms_to_dttm() == "MILLIS_TO_STR({col})" + assert CouchbaseEngineSpec.epoch_ms_to_dttm() == "MILLIS_TO_STR({col})" @pytest.mark.parametrize( @@ -62,7 +62,7 @@ def test_convert_dttm( expected_result: Optional[str], dttm: datetime, # noqa: F811 ) -> None: - from superset.db_engine_specs.couchbasedb import CouchbaseDbEngineSpec as spec + from superset.db_engine_specs.couchbase import CouchbaseEngineSpec as spec assert_convert_dttm(spec, target_type, expected_result, dttm) @@ -88,6 +88,6 @@ def test_get_column_spec( generic_type: GenericDataType, is_dttm: bool, ) -> None: - from superset.db_engine_specs.couchbasedb import CouchbaseDbEngineSpec as spec + from superset.db_engine_specs.couchbase import CouchbaseEngineSpec as spec assert_column_spec(spec, native_type, sqla_type, attrs, generic_type, is_dttm)