@malloydata/db-snowflake 0.0.337 → 0.0.338
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/snowflake_connection.d.ts +5 -2
- package/dist/snowflake_connection.js +7 -4
- package/dist/snowflake_connection.js.map +1 -1
- package/dist/snowflake_executor.d.ts +4 -3
- package/dist/snowflake_executor.js +12 -3
- package/dist/snowflake_executor.js.map +1 -1
- package/dist/snowflake_setup.spec.d.ts +1 -0
- package/dist/snowflake_setup.spec.js +76 -0
- package/dist/snowflake_setup.spec.js.map +1 -0
- package/package.json +2 -2
- package/src/index.ts +12 -2
- package/src/snowflake_connection.ts +26 -6
- package/src/snowflake_executor.ts +22 -8
- package/src/snowflake_setup.spec.ts +56 -0
package/dist/index.js
CHANGED
|
@@ -29,14 +29,17 @@ const malloy_1 = require("@malloydata/malloy");
|
|
|
29
29
|
const snowflake_connection_2 = require("./snowflake_connection");
|
|
30
30
|
(0, malloy_1.registerConnectionType)('snowflake', {
|
|
31
31
|
factory: (config) => {
|
|
32
|
-
const { name, ...props } = config;
|
|
32
|
+
const { name, setupSQL, ...props } = config;
|
|
33
33
|
// ConnectionConfig values are trusted to match ConnectionOptions fields
|
|
34
34
|
// because the property definitions below declare matching names/types.
|
|
35
35
|
// The double cast bridges Malloy's generic config to snowflake-sdk's
|
|
36
36
|
// external typed interface — unavoidable without enumerating every
|
|
37
37
|
// ConnectionOptions field.
|
|
38
38
|
const connOptions = props;
|
|
39
|
-
return new snowflake_connection_2.SnowflakeConnection(name, {
|
|
39
|
+
return new snowflake_connection_2.SnowflakeConnection(name, {
|
|
40
|
+
connOptions,
|
|
41
|
+
setupSQL: typeof setupSQL === 'string' ? setupSQL : undefined,
|
|
42
|
+
});
|
|
40
43
|
},
|
|
41
44
|
properties: [
|
|
42
45
|
{ name: 'account', displayName: 'Account', type: 'string' },
|
|
@@ -78,6 +81,13 @@ const snowflake_connection_2 = require("./snowflake_connection");
|
|
|
78
81
|
type: 'number',
|
|
79
82
|
optional: true,
|
|
80
83
|
},
|
|
84
|
+
{
|
|
85
|
+
name: 'setupSQL',
|
|
86
|
+
displayName: 'Setup SQL',
|
|
87
|
+
type: 'text',
|
|
88
|
+
optional: true,
|
|
89
|
+
description: 'SQL statements to run when the connection is established',
|
|
90
|
+
},
|
|
81
91
|
],
|
|
82
92
|
});
|
|
83
93
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;AAEH,+DAA2D;AAAnD,2HAAA,mBAAmB,OAAA;AAE3B,+CAA0D;AAG1D,iEAA2D;AAE3D,IAAA,+BAAsB,EAAC,WAAW,EAAE;IAClC,OAAO,EAAE,CAAC,MAAwB,EAAE,EAAE;QACpC,MAAM,EAAC,IAAI,EAAE,GAAG,KAAK,EAAC,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;AAEH,+DAA2D;AAAnD,2HAAA,mBAAmB,OAAA;AAE3B,+CAA0D;AAG1D,iEAA2D;AAE3D,IAAA,+BAAsB,EAAC,WAAW,EAAE;IAClC,OAAO,EAAE,CAAC,MAAwB,EAAE,EAAE;QACpC,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAC,GAAG,MAAM,CAAC;QAC1C,wEAAwE;QACxE,uEAAuE;QACvE,qEAAqE;QACrE,mEAAmE;QACnE,2BAA2B;QAC3B,MAAM,WAAW,GAAG,KAAqC,CAAC;QAC1D,OAAO,IAAI,0CAAmB,CAAC,IAAI,EAAE;YACnC,WAAW;YACX,QAAQ,EAAE,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SAC9D,CAAC,CAAC;IACL,CAAC;IACD,UAAU,EAAE;QACV,EAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAC;QACzD,EAAC,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAC;QAC3E;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,UAAU;YACvB,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,IAAI;SACf;QACD,EAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAC;QACnE;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,WAAW;YACxB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;SACf;QACD,EAAC,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAC;QAC3E,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAC;QACvE;YACE,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE;gBACX,mBAAmB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;gBAC1C,WAAW,EAAE,CAAC,GAAG,CAAC;aACnB;SACF;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,wBAAwB;YACrC,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,cAAc;YAC3B,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,WAAW;YACxB,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,0DAA0D;SACxE;KACF;CACF,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RunSQLOptions, MalloyQueryData, QueryRunStats, Connection, PersistSQLResults, StreamingConnection, PooledConnection, SQLSourceDef, TableSourceDef,
|
|
1
|
+
import type { RunSQLOptions, MalloyQueryData, QueryRunStats, Connection, PersistSQLResults, StreamingConnection, PooledConnection, SQLSourceDef, TableSourceDef, QueryRecord, TestableConnection, SQLSourceRequest } from '@malloydata/malloy';
|
|
2
2
|
import { TinyParser } from '@malloydata/malloy';
|
|
3
3
|
import { BaseConnection } from '@malloydata/malloy/connection';
|
|
4
4
|
import type { ConnectionOptions } from 'snowflake-sdk';
|
|
@@ -13,6 +13,7 @@ export interface SnowflakeConnectionOptions {
|
|
|
13
13
|
scratchSpace?: namespace;
|
|
14
14
|
queryOptions?: RunSQLOptions;
|
|
15
15
|
timeoutMs?: number;
|
|
16
|
+
setupSQL?: string;
|
|
16
17
|
}
|
|
17
18
|
type PathChain = {
|
|
18
19
|
arrayRef: true;
|
|
@@ -25,9 +26,11 @@ export declare class SnowflakeConnection extends BaseConnection implements Conne
|
|
|
25
26
|
readonly name: string;
|
|
26
27
|
private readonly dialect;
|
|
27
28
|
private executor;
|
|
29
|
+
private connOptions;
|
|
28
30
|
private scratchSpace?;
|
|
29
31
|
private queryOptions;
|
|
30
32
|
private timeoutMs;
|
|
33
|
+
private setupSQL;
|
|
31
34
|
constructor(name: string, options?: SnowflakeConnectionOptions);
|
|
32
35
|
get dialectName(): string;
|
|
33
36
|
get supportsNesting(): boolean;
|
|
@@ -39,7 +42,7 @@ export declare class SnowflakeConnection extends BaseConnection implements Conne
|
|
|
39
42
|
close(): Promise<void>;
|
|
40
43
|
private getTempViewName;
|
|
41
44
|
runSQL(sql: string, options?: RunSQLOptions): Promise<MalloyQueryData>;
|
|
42
|
-
runSQLStream(sqlCommand: string, options?: RunSQLOptions): AsyncIterableIterator<
|
|
45
|
+
runSQLStream(sqlCommand: string, options?: RunSQLOptions): AsyncIterableIterator<QueryRecord>;
|
|
43
46
|
test(): Promise<void>;
|
|
44
47
|
private schemaFromTablePath;
|
|
45
48
|
fetchTableSchema(tableKey: string, tablePath: string): Promise<TableSourceDef>;
|
|
@@ -155,7 +155,9 @@ class SnowflakeConnection extends connection_1.BaseConnection {
|
|
|
155
155
|
// try to get connection options from ~/.snowflake/connections.toml
|
|
156
156
|
connOptions = snowflake_executor_1.SnowflakeExecutor.getConnectionOptionsFromToml();
|
|
157
157
|
}
|
|
158
|
-
this.
|
|
158
|
+
this.connOptions = connOptions !== null && connOptions !== void 0 ? connOptions : {};
|
|
159
|
+
this.setupSQL = options === null || options === void 0 ? void 0 : options.setupSQL;
|
|
160
|
+
this.executor = new snowflake_executor_1.SnowflakeExecutor(connOptions, options === null || options === void 0 ? void 0 : options.poolOptions, this.setupSQL);
|
|
159
161
|
this.scratchSpace = options === null || options === void 0 ? void 0 : options.scratchSpace;
|
|
160
162
|
this.queryOptions = (_a = options === null || options === void 0 ? void 0 : options.queryOptions) !== null && _a !== void 0 ? _a : {};
|
|
161
163
|
this.timeoutMs = (_b = options === null || options === void 0 ? void 0 : options.timeoutMs) !== null && _b !== void 0 ? _b : TIMEOUT_MS;
|
|
@@ -177,11 +179,11 @@ class SnowflakeConnection extends connection_1.BaseConnection {
|
|
|
177
179
|
return true;
|
|
178
180
|
}
|
|
179
181
|
getDigest() {
|
|
182
|
+
var _a, _b, _c, _d, _e, _f;
|
|
180
183
|
const scratch = this.scratchSpace
|
|
181
184
|
? `${this.scratchSpace.database}:${this.scratchSpace.schema}`
|
|
182
185
|
: '';
|
|
183
|
-
|
|
184
|
-
return (0, malloy_1.makeDigest)(data);
|
|
186
|
+
return (0, malloy_1.makeDigest)('snowflake', (_a = this.connOptions.account) !== null && _a !== void 0 ? _a : '', (_b = this.connOptions.username) !== null && _b !== void 0 ? _b : '', (_c = this.connOptions.warehouse) !== null && _c !== void 0 ? _c : '', (_d = this.connOptions.database) !== null && _d !== void 0 ? _d : '', (_e = this.connOptions.schema) !== null && _e !== void 0 ? _e : '', scratch, (_f = this.setupSQL) !== null && _f !== void 0 ? _f : '');
|
|
185
187
|
}
|
|
186
188
|
async estimateQueryCost(_sqlCommand) {
|
|
187
189
|
return {};
|
|
@@ -190,7 +192,8 @@ class SnowflakeConnection extends connection_1.BaseConnection {
|
|
|
190
192
|
await this.executor.done();
|
|
191
193
|
}
|
|
192
194
|
getTempViewName(sqlCommand) {
|
|
193
|
-
|
|
195
|
+
const hash = (0, malloy_1.makeDigest)(sqlCommand);
|
|
196
|
+
return `tt${hash.slice(0, this.dialect.maxIdentifierLength - 2)}`;
|
|
194
197
|
}
|
|
195
198
|
async runSQL(sql, options = {}) {
|
|
196
199
|
var _a, _b;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snowflake_connection.js","sourceRoot":"","sources":["../src/snowflake_connection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"snowflake_connection.js","sourceRoot":"","sources":["../src/snowflake_connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Connection, ConnectionOptions } from 'snowflake-sdk';
|
|
2
2
|
import type { Options as PoolOptions } from 'generic-pool';
|
|
3
|
-
import type { QueryData,
|
|
3
|
+
import type { QueryData, QueryRecord, RunSQLOptions } from '@malloydata/malloy';
|
|
4
4
|
export interface ConnectionConfigFile {
|
|
5
5
|
config_file_path?: string;
|
|
6
6
|
connection_name?: string;
|
|
@@ -9,12 +9,13 @@ export declare class SnowflakeExecutor {
|
|
|
9
9
|
private static defaultPoolOptions_;
|
|
10
10
|
private static defaultConnectionOptions;
|
|
11
11
|
private pool_;
|
|
12
|
-
|
|
12
|
+
private setupSQL;
|
|
13
|
+
constructor(connOptions: ConnectionOptions, poolOptions?: PoolOptions, setupSQL?: string);
|
|
13
14
|
static getConnectionOptionsFromEnv(): ConnectionOptions | undefined;
|
|
14
15
|
static getConnectionOptionsFromToml(options?: ConnectionConfigFile): ConnectionOptions;
|
|
15
16
|
done(): Promise<void>;
|
|
16
17
|
_execute(sqlText: string, conn: Connection, options?: RunSQLOptions, timeoutMs?: number): Promise<QueryData>;
|
|
17
18
|
private _setSessionParams;
|
|
18
19
|
batch(sqlText: string, options?: RunSQLOptions, timeoutMs?: number): Promise<QueryData>;
|
|
19
|
-
stream(sqlText: string, options?: RunSQLOptions): Promise<AsyncIterableIterator<
|
|
20
|
+
stream(sqlText: string, options?: RunSQLOptions): Promise<AsyncIterableIterator<QueryRecord>>;
|
|
20
21
|
}
|
|
@@ -66,15 +66,16 @@ const path = __importStar(require("path"));
|
|
|
66
66
|
const malloy_1 = require("@malloydata/malloy");
|
|
67
67
|
// Disable snowflake-sdk logging by default (issue #2565)
|
|
68
68
|
snowflake_sdk_1.default.configure({ logLevel: 'OFF' });
|
|
69
|
-
// function columnNameToLowerCase(row:
|
|
70
|
-
// const ret:
|
|
69
|
+
// function columnNameToLowerCase(row: QueryRecord): QueryRecord {
|
|
70
|
+
// const ret: QueryRecord = {};
|
|
71
71
|
// for (const key in row) {
|
|
72
72
|
// ret[key.toLowerCase()] = row[key];
|
|
73
73
|
// }
|
|
74
74
|
// return ret;
|
|
75
75
|
// }
|
|
76
76
|
class SnowflakeExecutor {
|
|
77
|
-
constructor(connOptions, poolOptions) {
|
|
77
|
+
constructor(connOptions, poolOptions, setupSQL) {
|
|
78
|
+
this.setupSQL = setupSQL;
|
|
78
79
|
this.pool_ = snowflake_sdk_1.default.createPool(connOptions, {
|
|
79
80
|
...SnowflakeExecutor.defaultPoolOptions_,
|
|
80
81
|
...(poolOptions !== null && poolOptions !== void 0 ? poolOptions : {}),
|
|
@@ -177,6 +178,14 @@ class SnowflakeExecutor {
|
|
|
177
178
|
await this._execute('ALTER SESSION SET WEEK_START = 7;', conn);
|
|
178
179
|
// so javascript can parse the dates
|
|
179
180
|
await this._execute("ALTER SESSION SET TIMESTAMP_NTZ_OUTPUT_FORMAT='YYYY-MM-DDTHH24:MI:SS.FF3TZH:TZM';", conn);
|
|
181
|
+
if (this.setupSQL) {
|
|
182
|
+
for (const stmt of this.setupSQL.split(';\n')) {
|
|
183
|
+
const trimmed = stmt.trim();
|
|
184
|
+
if (trimmed) {
|
|
185
|
+
await this._execute(trimmed, conn);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
180
189
|
}
|
|
181
190
|
async batch(sqlText, options, timeoutMs) {
|
|
182
191
|
return await this.pool_.use(async (conn) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snowflake_executor.js","sourceRoot":"","sources":["../src/snowflake_executor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQH,kEAAsC;AAEtC,2CAA6B;AAC7B,uCAAyB;AACzB,2CAA6B;AAG7B,+CAAoD;AAEpD,yDAAyD;AACzD,uBAAS,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC;AAWvC,
|
|
1
|
+
{"version":3,"file":"snowflake_executor.js","sourceRoot":"","sources":["../src/snowflake_executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright Contributors to the Malloy project
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
40
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
41
|
+
};
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
const malloy = __importStar(require("@malloydata/malloy"));
|
|
44
|
+
const snowflake_connection_1 = require("./snowflake_connection");
|
|
45
|
+
const snowflake_executor_1 = require("./snowflake_executor");
|
|
46
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
47
|
+
describe('setupSQL', () => {
|
|
48
|
+
const connOptions = snowflake_executor_1.SnowflakeExecutor.getConnectionOptionsFromEnv() ||
|
|
49
|
+
snowflake_executor_1.SnowflakeExecutor.getConnectionOptionsFromToml();
|
|
50
|
+
const uid = crypto_1.default.randomBytes(4).toString('hex');
|
|
51
|
+
const connections = [];
|
|
52
|
+
function makeConn(name, setupSQL) {
|
|
53
|
+
const conn = new snowflake_connection_1.SnowflakeConnection(name, { connOptions, setupSQL });
|
|
54
|
+
connections.push(conn);
|
|
55
|
+
return conn;
|
|
56
|
+
}
|
|
57
|
+
afterAll(async () => {
|
|
58
|
+
await Promise.all(connections.map(c => c.close()));
|
|
59
|
+
});
|
|
60
|
+
it('runs a single setup statement', async () => {
|
|
61
|
+
const conn = makeConn('snowflake_setup_single', `SET setup_test_${uid} = 42`);
|
|
62
|
+
const result = await conn.runSQL(`SELECT $setup_test_${uid} AS V`);
|
|
63
|
+
expect(malloy.API.rowDataToNumber(result.rows[0]['V'])).toBe(42);
|
|
64
|
+
});
|
|
65
|
+
it('runs multiple semicolon-newline-separated statements', async () => {
|
|
66
|
+
const conn = makeConn('snowflake_setup_multi', [`SET setup_a_${uid} = 10`, `SET setup_b_${uid} = 20`].join(';\n'));
|
|
67
|
+
const result = await conn.runSQL(`SELECT $setup_a_${uid} + $setup_b_${uid} AS V`);
|
|
68
|
+
expect(malloy.API.rowDataToNumber(result.rows[0]['V'])).toBe(30);
|
|
69
|
+
});
|
|
70
|
+
it('handles multi-line statements', async () => {
|
|
71
|
+
const conn = makeConn('snowflake_setup_multiline', `SET\n setup_ml_${uid} = 99`);
|
|
72
|
+
const result = await conn.runSQL(`SELECT $setup_ml_${uid} AS V`);
|
|
73
|
+
expect(malloy.API.rowDataToNumber(result.rows[0]['V'])).toBe(99);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
//# sourceMappingURL=snowflake_setup.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snowflake_setup.spec.js","sourceRoot":"","sources":["../src/snowflake_setup.spec.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,2DAA6C;AAC7C,iEAA2D;AAC3D,6DAAuD;AACvD,oDAA4B;AAE5B,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,MAAM,WAAW,GACf,sCAAiB,CAAC,2BAA2B,EAAE;QAC/C,sCAAiB,CAAC,4BAA4B,EAAE,CAAC;IACnD,MAAM,GAAG,GAAG,gBAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,WAAW,GAA0B,EAAE,CAAC;IAE9C,SAAS,QAAQ,CAAC,IAAY,EAAE,QAAgB;QAC9C,MAAM,IAAI,GAAG,IAAI,0CAAmB,CAAC,IAAI,EAAE,EAAC,WAAW,EAAE,QAAQ,EAAC,CAAC,CAAC;QACpE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,KAAK,IAAI,EAAE;QAClB,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,IAAI,GAAG,QAAQ,CACnB,wBAAwB,EACxB,kBAAkB,GAAG,OAAO,CAC7B,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,sBAAsB,GAAG,OAAO,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,IAAI,GAAG,QAAQ,CACnB,uBAAuB,EACvB,CAAC,eAAe,GAAG,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CACnE,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAC9B,mBAAmB,GAAG,eAAe,GAAG,OAAO,CAChD,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,IAAI,GAAG,QAAQ,CACnB,2BAA2B,EAC3B,mBAAmB,GAAG,OAAO,CAC9B,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,oBAAoB,GAAG,OAAO,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@malloydata/db-snowflake",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.338",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"prepublishOnly": "npm run build"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@malloydata/malloy": "0.0.
|
|
25
|
+
"@malloydata/malloy": "0.0.338",
|
|
26
26
|
"generic-pool": "^3.9.0",
|
|
27
27
|
"snowflake-sdk": "2.3.1",
|
|
28
28
|
"toml": "^3.0.0"
|
package/src/index.ts
CHANGED
|
@@ -30,14 +30,17 @@ import {SnowflakeConnection} from './snowflake_connection';
|
|
|
30
30
|
|
|
31
31
|
registerConnectionType('snowflake', {
|
|
32
32
|
factory: (config: ConnectionConfig) => {
|
|
33
|
-
const {name, ...props} = config;
|
|
33
|
+
const {name, setupSQL, ...props} = config;
|
|
34
34
|
// ConnectionConfig values are trusted to match ConnectionOptions fields
|
|
35
35
|
// because the property definitions below declare matching names/types.
|
|
36
36
|
// The double cast bridges Malloy's generic config to snowflake-sdk's
|
|
37
37
|
// external typed interface — unavoidable without enumerating every
|
|
38
38
|
// ConnectionOptions field.
|
|
39
39
|
const connOptions = props as unknown as ConnectionOptions;
|
|
40
|
-
return new SnowflakeConnection(name, {
|
|
40
|
+
return new SnowflakeConnection(name, {
|
|
41
|
+
connOptions,
|
|
42
|
+
setupSQL: typeof setupSQL === 'string' ? setupSQL : undefined,
|
|
43
|
+
});
|
|
41
44
|
},
|
|
42
45
|
properties: [
|
|
43
46
|
{name: 'account', displayName: 'Account', type: 'string'},
|
|
@@ -79,5 +82,12 @@ registerConnectionType('snowflake', {
|
|
|
79
82
|
type: 'number',
|
|
80
83
|
optional: true,
|
|
81
84
|
},
|
|
85
|
+
{
|
|
86
|
+
name: 'setupSQL',
|
|
87
|
+
displayName: 'Setup SQL',
|
|
88
|
+
type: 'text',
|
|
89
|
+
optional: true,
|
|
90
|
+
description: 'SQL statements to run when the connection is established',
|
|
91
|
+
},
|
|
82
92
|
],
|
|
83
93
|
});
|
|
@@ -32,7 +32,7 @@ import type {
|
|
|
32
32
|
SQLSourceDef,
|
|
33
33
|
TableSourceDef,
|
|
34
34
|
StructDef,
|
|
35
|
-
|
|
35
|
+
QueryRecord,
|
|
36
36
|
TestableConnection,
|
|
37
37
|
Dialect,
|
|
38
38
|
RecordDef,
|
|
@@ -70,6 +70,9 @@ export interface SnowflakeConnectionOptions {
|
|
|
70
70
|
|
|
71
71
|
// Timeout for the statement
|
|
72
72
|
timeoutMs?: number;
|
|
73
|
+
|
|
74
|
+
// SQL statements to run when a connection is acquired from the pool
|
|
75
|
+
setupSQL?: string;
|
|
73
76
|
}
|
|
74
77
|
|
|
75
78
|
type PathChain =
|
|
@@ -229,11 +232,13 @@ export class SnowflakeConnection
|
|
|
229
232
|
{
|
|
230
233
|
private readonly dialect = new SnowflakeDialect();
|
|
231
234
|
private executor: SnowflakeExecutor;
|
|
235
|
+
private connOptions: ConnectionOptions;
|
|
232
236
|
|
|
233
237
|
// the database & schema where we do temporary operations like creating a temp table
|
|
234
238
|
private scratchSpace?: namespace;
|
|
235
239
|
private queryOptions: RunSQLOptions;
|
|
236
240
|
private timeoutMs: number;
|
|
241
|
+
private setupSQL: string | undefined;
|
|
237
242
|
|
|
238
243
|
constructor(
|
|
239
244
|
public readonly name: string,
|
|
@@ -245,7 +250,13 @@ export class SnowflakeConnection
|
|
|
245
250
|
// try to get connection options from ~/.snowflake/connections.toml
|
|
246
251
|
connOptions = SnowflakeExecutor.getConnectionOptionsFromToml();
|
|
247
252
|
}
|
|
248
|
-
this.
|
|
253
|
+
this.connOptions = connOptions ?? {};
|
|
254
|
+
this.setupSQL = options?.setupSQL;
|
|
255
|
+
this.executor = new SnowflakeExecutor(
|
|
256
|
+
connOptions,
|
|
257
|
+
options?.poolOptions,
|
|
258
|
+
this.setupSQL
|
|
259
|
+
);
|
|
249
260
|
this.scratchSpace = options?.scratchSpace;
|
|
250
261
|
this.queryOptions = options?.queryOptions ?? {};
|
|
251
262
|
this.timeoutMs = options?.timeoutMs ?? TIMEOUT_MS;
|
|
@@ -276,8 +287,16 @@ export class SnowflakeConnection
|
|
|
276
287
|
const scratch = this.scratchSpace
|
|
277
288
|
? `${this.scratchSpace.database}:${this.scratchSpace.schema}`
|
|
278
289
|
: '';
|
|
279
|
-
|
|
280
|
-
|
|
290
|
+
return makeDigest(
|
|
291
|
+
'snowflake',
|
|
292
|
+
this.connOptions.account ?? '',
|
|
293
|
+
this.connOptions.username ?? '',
|
|
294
|
+
this.connOptions.warehouse ?? '',
|
|
295
|
+
this.connOptions.database ?? '',
|
|
296
|
+
this.connOptions.schema ?? '',
|
|
297
|
+
scratch,
|
|
298
|
+
this.setupSQL ?? ''
|
|
299
|
+
);
|
|
281
300
|
}
|
|
282
301
|
|
|
283
302
|
public async estimateQueryCost(_sqlCommand: string): Promise<QueryRunStats> {
|
|
@@ -289,7 +308,8 @@ export class SnowflakeConnection
|
|
|
289
308
|
}
|
|
290
309
|
|
|
291
310
|
private getTempViewName(sqlCommand: string): string {
|
|
292
|
-
|
|
311
|
+
const hash = makeDigest(sqlCommand);
|
|
312
|
+
return `tt${hash.slice(0, this.dialect.maxIdentifierLength - 2)}`;
|
|
293
313
|
}
|
|
294
314
|
|
|
295
315
|
public async runSQL(
|
|
@@ -307,7 +327,7 @@ export class SnowflakeConnection
|
|
|
307
327
|
public async *runSQLStream(
|
|
308
328
|
sqlCommand: string,
|
|
309
329
|
options: RunSQLOptions = {}
|
|
310
|
-
): AsyncIterableIterator<
|
|
330
|
+
): AsyncIterableIterator<QueryRecord> {
|
|
311
331
|
const streamQueryOptions = {
|
|
312
332
|
...this.queryOptions,
|
|
313
333
|
...options,
|
|
@@ -33,7 +33,7 @@ import * as toml from 'toml';
|
|
|
33
33
|
import * as fs from 'fs';
|
|
34
34
|
import * as path from 'path';
|
|
35
35
|
import type {Readable} from 'stream';
|
|
36
|
-
import type {QueryData,
|
|
36
|
+
import type {QueryData, QueryRecord, RunSQLOptions} from '@malloydata/malloy';
|
|
37
37
|
import {toAsyncGenerator} from '@malloydata/malloy';
|
|
38
38
|
|
|
39
39
|
// Disable snowflake-sdk logging by default (issue #2565)
|
|
@@ -48,8 +48,8 @@ export interface ConnectionConfigFile {
|
|
|
48
48
|
connection_name?: string;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
// function columnNameToLowerCase(row:
|
|
52
|
-
// const ret:
|
|
51
|
+
// function columnNameToLowerCase(row: QueryRecord): QueryRecord {
|
|
52
|
+
// const ret: QueryRecord = {};
|
|
53
53
|
// for (const key in row) {
|
|
54
54
|
// ret[key.toLowerCase()] = row[key];
|
|
55
55
|
// }
|
|
@@ -72,7 +72,13 @@ export class SnowflakeExecutor {
|
|
|
72
72
|
};
|
|
73
73
|
|
|
74
74
|
private pool_: Pool<Connection>;
|
|
75
|
-
|
|
75
|
+
private setupSQL: string | undefined;
|
|
76
|
+
constructor(
|
|
77
|
+
connOptions: ConnectionOptions,
|
|
78
|
+
poolOptions?: PoolOptions,
|
|
79
|
+
setupSQL?: string
|
|
80
|
+
) {
|
|
81
|
+
this.setupSQL = setupSQL;
|
|
76
82
|
this.pool_ = snowflake.createPool(connOptions, {
|
|
77
83
|
...SnowflakeExecutor.defaultPoolOptions_,
|
|
78
84
|
...(poolOptions ?? {}),
|
|
@@ -203,6 +209,14 @@ export class SnowflakeExecutor {
|
|
|
203
209
|
"ALTER SESSION SET TIMESTAMP_NTZ_OUTPUT_FORMAT='YYYY-MM-DDTHH24:MI:SS.FF3TZH:TZM';",
|
|
204
210
|
conn
|
|
205
211
|
);
|
|
212
|
+
if (this.setupSQL) {
|
|
213
|
+
for (const stmt of this.setupSQL.split(';\n')) {
|
|
214
|
+
const trimmed = stmt.trim();
|
|
215
|
+
if (trimmed) {
|
|
216
|
+
await this._execute(trimmed, conn);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
206
220
|
}
|
|
207
221
|
|
|
208
222
|
public async batch(
|
|
@@ -219,7 +233,7 @@ export class SnowflakeExecutor {
|
|
|
219
233
|
public async stream(
|
|
220
234
|
sqlText: string,
|
|
221
235
|
options?: RunSQLOptions
|
|
222
|
-
): Promise<AsyncIterableIterator<
|
|
236
|
+
): Promise<AsyncIterableIterator<QueryRecord>> {
|
|
223
237
|
const pool: Pool<Connection> = this.pool_;
|
|
224
238
|
return await pool.acquire().then(async (conn: Connection) => {
|
|
225
239
|
await this._setSessionParams(conn);
|
|
@@ -236,7 +250,7 @@ export class SnowflakeExecutor {
|
|
|
236
250
|
const stream: Readable = stmt.streamRows();
|
|
237
251
|
function streamSnowflake(
|
|
238
252
|
onError: (error: Error) => void,
|
|
239
|
-
onData: (data:
|
|
253
|
+
onData: (data: QueryRecord) => void,
|
|
240
254
|
onEnd: () => void
|
|
241
255
|
) {
|
|
242
256
|
function handleEnd() {
|
|
@@ -245,7 +259,7 @@ export class SnowflakeExecutor {
|
|
|
245
259
|
}
|
|
246
260
|
|
|
247
261
|
let index = 0;
|
|
248
|
-
function handleData(this: Readable, row:
|
|
262
|
+
function handleData(this: Readable, row: QueryRecord) {
|
|
249
263
|
onData(row);
|
|
250
264
|
index += 1;
|
|
251
265
|
if (
|
|
@@ -259,7 +273,7 @@ export class SnowflakeExecutor {
|
|
|
259
273
|
stream.on('data', handleData);
|
|
260
274
|
stream.on('end', handleEnd);
|
|
261
275
|
}
|
|
262
|
-
return resolve(toAsyncGenerator<
|
|
276
|
+
return resolve(toAsyncGenerator<QueryRecord>(streamSnowflake));
|
|
263
277
|
},
|
|
264
278
|
});
|
|
265
279
|
});
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright Contributors to the Malloy project
|
|
3
|
+
* SPDX-License-Identifier: MIT
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import * as malloy from '@malloydata/malloy';
|
|
7
|
+
import {SnowflakeConnection} from './snowflake_connection';
|
|
8
|
+
import {SnowflakeExecutor} from './snowflake_executor';
|
|
9
|
+
import crypto from 'crypto';
|
|
10
|
+
|
|
11
|
+
describe('setupSQL', () => {
|
|
12
|
+
const connOptions =
|
|
13
|
+
SnowflakeExecutor.getConnectionOptionsFromEnv() ||
|
|
14
|
+
SnowflakeExecutor.getConnectionOptionsFromToml();
|
|
15
|
+
const uid = crypto.randomBytes(4).toString('hex');
|
|
16
|
+
const connections: SnowflakeConnection[] = [];
|
|
17
|
+
|
|
18
|
+
function makeConn(name: string, setupSQL: string): SnowflakeConnection {
|
|
19
|
+
const conn = new SnowflakeConnection(name, {connOptions, setupSQL});
|
|
20
|
+
connections.push(conn);
|
|
21
|
+
return conn;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
afterAll(async () => {
|
|
25
|
+
await Promise.all(connections.map(c => c.close()));
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('runs a single setup statement', async () => {
|
|
29
|
+
const conn = makeConn(
|
|
30
|
+
'snowflake_setup_single',
|
|
31
|
+
`SET setup_test_${uid} = 42`
|
|
32
|
+
);
|
|
33
|
+
const result = await conn.runSQL(`SELECT $setup_test_${uid} AS V`);
|
|
34
|
+
expect(malloy.API.rowDataToNumber(result.rows[0]['V'])).toBe(42);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it('runs multiple semicolon-newline-separated statements', async () => {
|
|
38
|
+
const conn = makeConn(
|
|
39
|
+
'snowflake_setup_multi',
|
|
40
|
+
[`SET setup_a_${uid} = 10`, `SET setup_b_${uid} = 20`].join(';\n')
|
|
41
|
+
);
|
|
42
|
+
const result = await conn.runSQL(
|
|
43
|
+
`SELECT $setup_a_${uid} + $setup_b_${uid} AS V`
|
|
44
|
+
);
|
|
45
|
+
expect(malloy.API.rowDataToNumber(result.rows[0]['V'])).toBe(30);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it('handles multi-line statements', async () => {
|
|
49
|
+
const conn = makeConn(
|
|
50
|
+
'snowflake_setup_multiline',
|
|
51
|
+
`SET\n setup_ml_${uid} = 99`
|
|
52
|
+
);
|
|
53
|
+
const result = await conn.runSQL(`SELECT $setup_ml_${uid} AS V`);
|
|
54
|
+
expect(malloy.API.rowDataToNumber(result.rows[0]['V'])).toBe(99);
|
|
55
|
+
});
|
|
56
|
+
});
|