Skip to content

Commit c43340d

Browse files
KSDaemonkorowatimbrownls20Rogerenhanse
authored
feat(vertica-driver): Introduce VerticaDriver (#9081)
* feat(vertica-driver): VerticaDriver * fixed linter error * fix dependencies versions * driver & smoke tests * vertica driver added to integration tests * add vertica to smoke test * update packages * vertica driver published * vertica driver * update README.md * docker installation instruction * up version * update README and package refs * add cube build pipeline * remove * Added Query Implementation (#2) * Added custom dialect for CubeDriver * Sql fixes (#5) * Additional sql fixes (#6) * draft * update test * fix build * update vertica driver dependencies * vertica documentation * add vertica to data sources * fix lint errors * update jest * include vertica tests * update wait strategy and test shared package * change version of vertica driver * some ci-related fixes * fix version, names, refs to align with the Cube repo * update yarn.lock * fix old refs --------- Co-authored-by: Eduard Karacharov <[email protected]> Co-authored-by: timbrownls20 <[email protected]> Co-authored-by: Roger <[email protected]> Co-authored-by: David O'Bryen <[email protected]>
1 parent cd91f7d commit c43340d

File tree

34 files changed

+11508
-19
lines changed

34 files changed

+11508
-19
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/bin/bash
2+
set -eo pipefail
3+
4+
# Debug log for test containers
5+
export DEBUG=testcontainers
6+
7+
export TEST_VERTICA_VERSION=12.0.4-0
8+
9+
echo "::group::Vertica ${TEST_VERTICA_VERSION}"
10+
docker pull vertica/vertica-ce:${TEST_VERTICA_VERSION}
11+
yarn lerna run --concurrency 1 --stream --no-prefix integration:vertica
12+
echo "::endgroup::"

.github/actions/smoke.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ echo "::group::MongoBI"
5757
yarn lerna run --concurrency 1 --stream --no-prefix smoke:mongobi
5858
echo "::endgroup::"
5959

60+
echo "::group::Vertica"
61+
yarn lerna run --concurrency 1 --stream --no-prefix smoke:vertica
62+
echo "::endgroup::"
63+
6064
echo "::group::RBAC"
6165
yarn lerna run --concurrency 1 --stream --no-prefix smoke:rbac
6266
echo "::endgroup::"

.github/workflows/drivers-tests.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ on:
2424
- 'packages/cubejs-mysql-driver/**'
2525
- 'packages/cubejs-postgres-driver/**'
2626
- 'packages/cubejs-snowflake-driver/**'
27+
- 'packages/cubejs-vertica-driver/**'
2728

2829
# To test SQL API Push down
2930
- 'packages/cubejs-backend-native/**'
@@ -49,6 +50,7 @@ on:
4950
- 'packages/cubejs-mysql-driver/**'
5051
- 'packages/cubejs-postgres-driver/**'
5152
- 'packages/cubejs-snowflake-driver/**'
53+
- 'packages/cubejs-vertica-driver/**'
5254

5355
# To test SQL API Push down
5456
- 'packages/cubejs-backend-native/**'

.github/workflows/push.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,7 @@ jobs:
336336
node-version: [20.x]
337337
db: [
338338
'clickhouse', 'druid', 'elasticsearch', 'mssql', 'mysql', 'postgres', 'prestodb',
339-
'mysql-aurora-serverless', 'crate', 'mongobi', 'firebolt', 'dremio'
339+
'mysql-aurora-serverless', 'crate', 'mongobi', 'firebolt', 'dremio', 'vertica'
340340
]
341341
fail-fast: false
342342

.yarnrc.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
nodeLinker: node-modules

docs/pages/product/configuration/data-sources.mdx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ sources][ref-config-multi-data-src] out of the box.
5959
imageUrl="https://static.cube.dev/icons/firebolt.svg"
6060
title="Firebolt"
6161
/>
62+
<GridItem
63+
url="data-sources/vertica"
64+
imageUrl="https://static.cube.dev/icons/vertica.svg"
65+
title="Vertica"
66+
/>
6267
</Grid>
6368

6469
## Query engines
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Vertica
2+
3+
## Prerequisites
4+
5+
- The hostname for the [Vertica][vertica] database server
6+
- The username/password for the [Vertica][vertica] database server
7+
- The name of the database to use within the [Vertica][vertica] database server
8+
9+
## Setup
10+
11+
### Manual
12+
13+
Add the following to a `.env` file in your Cube project:
14+
15+
```dotenv
16+
CUBEJS_DB_TYPE=vertica
17+
CUBEJS_DB_HOST=my.vertica.host
18+
CUBEJS_DB_USER=vertica_user
19+
CUBEJS_DB_PASS=**********
20+
CUBEJS_DB_SCHEMA=my_vertica_schema
21+
```
22+
23+
## Environment Variables
24+
25+
| Environment Variable | Description | Possible Values | Required |
26+
| -------------------------- | ----------------------------------------------------------------------------------- | --------------------------------------------- | :------: |
27+
| `CUBEJS_DB_HOST` | The host URL for a database | A valid database host URL ||
28+
| `CUBEJS_DB_PORT` | The port for the database connection | A valid port number ||
29+
| `CUBEJS_DB_USER` | The username used to connect to the database | A valid database username ||
30+
| `CUBEJS_DB_PASS` | The password used to connect to the database | A valid database password ||
31+
| `CUBEJS_DB_SCHEMA` | The schema within the database to connect to | A valid schema name within a Presto database ||
32+
| `CUBEJS_DB_SSL` | If `true`, enables SSL encryption for database connections from Cube | `true`, `false` ||
33+
| `CUBEJS_CONCURRENCY` | The number of concurrent connections each queue has to the database. Default is `2` | A valid number ||
34+
| `CUBEJS_DB_MAX_POOL` | The maximum number of concurrent database connections to pool. Default is `8` | A valid number ||
35+
36+
37+
## SSL
38+
39+
To enable SSL-encrypted connections between Cube and Verica, set the
40+
`CUBEJS_DB_SSL` environment variable to `true`. For more information on how to
41+
configure custom certificates, please check out [Enable SSL Connections to the
42+
Database][ref-recipe-enable-ssl].
43+
44+
[vertica]: https://www.vertica.com/documentation/vertica/all/
45+
[ref-recipe-enable-ssl]:/guides/recipes/data-sources/using-ssl-connections-to-data-source
46+

packages/cubejs-docker/dev.Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ COPY packages/cubejs-sqlite-driver/package.json packages/cubejs-sqlite-driver/pa
7373
COPY packages/cubejs-ksql-driver/package.json packages/cubejs-ksql-driver/package.json
7474
COPY packages/cubejs-dbt-schema-extension/package.json packages/cubejs-dbt-schema-extension/package.json
7575
COPY packages/cubejs-jdbc-driver/package.json packages/cubejs-jdbc-driver/package.json
76+
COPY packages/cubejs-vertica-driver/package.json packages/cubejs-vertica-driver/package.json
7677
# Skip
7778
# COPY packages/cubejs-testing/package.json packages/cubejs-testing/package.json
7879
# COPY packages/cubejs-docker/package.json packages/cubejs-docker/package.json
@@ -150,6 +151,7 @@ COPY packages/cubejs-ksql-driver/ packages/cubejs-ksql-driver/
150151
COPY packages/cubejs-dbt-schema-extension/ packages/cubejs-dbt-schema-extension/
151152
COPY packages/cubejs-jdbc-driver/ packages/cubejs-jdbc-driver/
152153
COPY packages/cubejs-databricks-jdbc-driver/ packages/cubejs-databricks-jdbc-driver/
154+
COPY packages/cubejs-vertica-driver/ packages/cubejs-vertica-driver/
153155
# Skip
154156
# COPY packages/cubejs-testing/ packages/cubejs-testing/
155157
# COPY packages/cubejs-docker/ packages/cubejs-docker/

packages/cubejs-docker/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
"@cubejs-backend/snowflake-driver": "1.1.10",
3737
"@cubejs-backend/sqlite-driver": "1.1.10",
3838
"@cubejs-backend/trino-driver": "1.1.11",
39+
"@cubejs-backend/vertica-driver": "1.1.11",
3940
"cubejs-cli": "1.1.11",
4041
"typescript": "~5.2.2"
4142
},

packages/cubejs-server-core/src/core/DriverDependencies.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ module.exports = {
2626
ksql: '@cubejs-backend/ksql-driver',
2727
questdb: '@cubejs-backend/questdb-driver',
2828
materialize: '@cubejs-backend/materialize-driver',
29+
vertica: '@cubejs-backend/vertica-driver',
2930
pinot: '@cubejs-backend/pinot-driver',
3031
// List for JDBC drivers
3132
'databricks-jdbc': '@cubejs-backend/databricks-jdbc-driver',

0 commit comments

Comments
 (0)