Skip to content

Commit 84bc8de

Browse files
authored
feat(snowflake-driver): Upgrade snowflake-sdk to 1.13.1 (fix Node.js 20+ crash) (#8713)
This upgrade is required to fix a compatibility issue for Snowflake SDK and Node.js 20+. References: - snowflakedb/snowflake-connector-nodejs#588 - snowflakedb/snowflake-connector-nodejs#703
1 parent 26a8fec commit 84bc8de

File tree

5 files changed

+13467
-6353
lines changed

5 files changed

+13467
-6353
lines changed

packages/cubejs-snowflake-driver/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"@cubejs-backend/shared": "^0.36.0",
3030
"@google-cloud/storage": "^5.8.5",
3131
"date-fns-timezone": "^0.1.4",
32-
"snowflake-sdk": "^1.8.0"
32+
"snowflake-sdk": "^1.13.1"
3333
},
3434
"license": "Apache-2.0",
3535
"publishConfig": {
@@ -40,7 +40,6 @@
4040
},
4141
"devDependencies": {
4242
"@cubejs-backend/linter": "^0.36.0",
43-
"@types/snowflake-sdk": "^1.6.8",
4443
"typescript": "~5.2.2"
4544
}
4645
}

packages/cubejs-snowflake-driver/src/SnowflakeDriver.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
getEnv,
99
assertDataSource,
1010
} from '@cubejs-backend/shared';
11-
import snowflake, { Column, Connection, Statement } from 'snowflake-sdk';
11+
import snowflake, { Column, Connection, RowStatement } from 'snowflake-sdk';
1212
import {
1313
BaseDriver,
1414
DownloadTableCSVData,
@@ -22,7 +22,6 @@ import {
2222
DownloadQueryResultsResult,
2323
DownloadQueryResultsOptions,
2424
DriverCapabilities,
25-
QueryTablesResult,
2625
} from '@cubejs-backend/base-driver';
2726
import { formatToTimeZone } from 'date-fns-timezone';
2827
import { Storage } from '@google-cloud/storage';
@@ -228,6 +227,11 @@ export class SnowflakeDriver extends BaseDriver implements DriverInterface {
228227
privateKey += '\n';
229228
}
230229

230+
snowflake.configure({
231+
// TODO: Remove after release of https://github.com/snowflakedb/snowflake-connector-nodejs/pull/912
232+
logLevel: 'OFF' as any
233+
});
234+
231235
this.config = {
232236
readOnly: false,
233237
account: getEnv('snowflakeAccount', { dataSource }),
@@ -700,7 +704,7 @@ export class SnowflakeDriver extends BaseDriver implements DriverInterface {
700704
_options: StreamOptions,
701705
): Promise<StreamTableDataWithTypes> {
702706
const connection = await this.getConnection();
703-
const stmt = await new Promise<Statement>((resolve, reject) => connection.execute({
707+
const stmt = await new Promise<RowStatement>((resolve, reject) => connection.execute({
704708
sqlText: query,
705709
binds: <string[] | undefined>values,
706710
fetchAsString: [
@@ -742,7 +746,7 @@ export class SnowflakeDriver extends BaseDriver implements DriverInterface {
742746
};
743747
}
744748

745-
private getTypes(stmt: Statement) {
749+
private getTypes(stmt: RowStatement) {
746750
return stmt.getColumns().map((column) => {
747751
const type = {
748752
name: column.getName().toLowerCase(),

packages/cubejs-testing-drivers/package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,10 @@
8989
"testMatch": [
9090
"<rootDir>/dist/test/**/*.(test|spec).(ts|js)"
9191
],
92-
"snapshotResolver": "<rootDir>/test/snapshotResolver.js"
92+
"snapshotResolver": "<rootDir>/test/snapshotResolver.js",
93+
"moduleNameMapper": {
94+
"^axios$": "axios/dist/node/axios.cjs"
95+
}
9396
},
9497
"eslintConfig": {
9598
"extends": "../cubejs-linter"

0 commit comments

Comments
 (0)