@malloydata/db-snowflake 0.0.376 → 0.0.378

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.
@@ -77,15 +77,15 @@ export declare class SnowflakeConnection extends BaseConnection implements Conne
77
77
  /**
78
78
  * Cheap metadata probe: ask INFORMATION_SCHEMA.TABLES for the row count
79
79
  * and byte size of tablePath. Returns undefined when the name doesn't
80
- * parse as a two- or three-part identifier (temp views, exotic quoted
81
- * names), when the probe query fails, or when the row has no numeric
82
- * BYTES (views and external tables typically report NULL).
80
+ * parse as a two- or three-part identifier, when the probe query fails,
81
+ * or when the row has no numeric BYTES (views and external tables
82
+ * typically report NULL).
83
83
  *
84
84
  * Two-part `schema.table` names use the current database's
85
85
  * INFORMATION_SCHEMA; three-part `db.schema.table` names address
86
- * INFORMATION_SCHEMA in the named database. Identifier parts are
87
- * validated against a strict regex before interpolation; values that
88
- * don't match cause the probe to skip.
86
+ * INFORMATION_SCHEMA in the named database. Identifiers are parsed
87
+ * with Snowflake's quoting rules so bare parts case-fold to upper and
88
+ * quoted parts are compared verbatim against the catalog.
89
89
  */
90
90
  private probeTableSize;
91
91
  /**
@@ -28,6 +28,7 @@ const malloy_1 = require("@malloydata/malloy");
28
28
  const connection_1 = require("@malloydata/malloy/connection");
29
29
  const snowflake_executor_1 = require("./snowflake_executor");
30
30
  const snowflake_variant_schema_1 = require("./snowflake_variant_schema");
31
+ const snowflake_table_name_1 = require("./snowflake_table_name");
31
32
  function pickSampleStrategy(probe, fullScanMaxBytes) {
32
33
  if (probe === undefined)
33
34
  return 'tablesample-then-limit';
@@ -243,30 +244,27 @@ class SnowflakeConnection extends connection_1.BaseConnection {
243
244
  /**
244
245
  * Cheap metadata probe: ask INFORMATION_SCHEMA.TABLES for the row count
245
246
  * and byte size of tablePath. Returns undefined when the name doesn't
246
- * parse as a two- or three-part identifier (temp views, exotic quoted
247
- * names), when the probe query fails, or when the row has no numeric
248
- * BYTES (views and external tables typically report NULL).
247
+ * parse as a two- or three-part identifier, when the probe query fails,
248
+ * or when the row has no numeric BYTES (views and external tables
249
+ * typically report NULL).
249
250
  *
250
251
  * Two-part `schema.table` names use the current database's
251
252
  * INFORMATION_SCHEMA; three-part `db.schema.table` names address
252
- * INFORMATION_SCHEMA in the named database. Identifier parts are
253
- * validated against a strict regex before interpolation; values that
254
- * don't match cause the probe to skip.
253
+ * INFORMATION_SCHEMA in the named database. Identifiers are parsed
254
+ * with Snowflake's quoting rules so bare parts case-fold to upper and
255
+ * quoted parts are compared verbatim against the catalog.
255
256
  */
256
257
  async probeTableSize(tablePath) {
257
258
  var _a, _b;
258
- const parts = tablePath.split('.');
259
- if (parts.length !== 2 && parts.length !== 3)
259
+ const parsed = (0, snowflake_table_name_1.parseSnowflakeTableName)(tablePath);
260
+ if (parsed === undefined || parsed.schema === undefined)
260
261
  return undefined;
261
- const identifier = /^[A-Za-z_][A-Za-z0-9_$]*$/;
262
- if (!parts.every(p => identifier.test(p)))
263
- return undefined;
264
- const [db, schema, table] = parts.length === 3 ? parts : [undefined, parts[0], parts[1]];
265
- const dbQualifier = db !== undefined ? `${db}.` : '';
262
+ const quoteLit = (s) => s.replace(/'/g, "''");
263
+ const dbQualifier = parsed.database ? `${parsed.database.sql}.` : '';
266
264
  const rows = await this.executor.tryBatch(`select row_count as rc, bytes as by
267
265
  from ${dbQualifier}information_schema.tables
268
- where upper(table_schema) = upper('${schema}')
269
- and upper(table_name) = upper('${table}')
266
+ where table_schema = '${quoteLit(parsed.schema.literal)}'
267
+ and table_name = '${quoteLit(parsed.table.literal)}'
270
268
  limit 1`, {}, this.schemaSampleTimeoutMs);
271
269
  if (!rows || rows.length === 0)
272
270
  return undefined;
@@ -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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"}
@@ -54,12 +54,17 @@ var __importStar = (this && this.__importStar) || (function () {
54
54
  return result;
55
55
  };
56
56
  })();
57
+ var __importDefault = (this && this.__importDefault) || function (mod) {
58
+ return (mod && mod.__esModule) ? mod : { "default": mod };
59
+ };
57
60
  Object.defineProperty(exports, "__esModule", { value: true });
58
61
  const malloy = __importStar(require("@malloydata/malloy"));
59
62
  const test_1 = require("@malloydata/malloy/test");
60
63
  require("@malloydata/malloy/test/matchers");
64
+ const crypto_1 = __importDefault(require("crypto"));
61
65
  const snowflake_connection_1 = require("./snowflake_connection");
62
66
  const snowflake_executor_1 = require("./snowflake_executor");
67
+ const [describeSnowflakeExecutor] = (0, test_1.describeIfDatabaseAvailable)(['snowflake']);
63
68
  describe('db:Snowflake', () => {
64
69
  const connOptions = snowflake_executor_1.SnowflakeExecutor.getConnectionOptionsFromEnv() ||
65
70
  snowflake_executor_1.SnowflakeExecutor.getConnectionOptionsFromToml();
@@ -412,4 +417,94 @@ describe('numeric value reading', () => {
412
417
  });
413
418
  });
414
419
  });
420
+ class SnowflakeExecutorTestSetup {
421
+ constructor(executor) {
422
+ this.executor_ = executor;
423
+ }
424
+ async runBatch(sqlText) {
425
+ let ret = [];
426
+ await (async () => {
427
+ const rows = await this.executor_.batch(sqlText);
428
+ return rows;
429
+ })().then((rows) => {
430
+ ret = rows;
431
+ });
432
+ return ret;
433
+ }
434
+ async runStreaming(sqlText, queryOptions) {
435
+ const rows = [];
436
+ await (async () => {
437
+ for await (const row of await this.executor_.stream(sqlText, queryOptions)) {
438
+ rows.push(row);
439
+ }
440
+ })();
441
+ return rows;
442
+ }
443
+ async done() {
444
+ await this.executor_.done();
445
+ }
446
+ }
447
+ describeSnowflakeExecutor('db:SnowflakeExecutor', () => {
448
+ let db;
449
+ let query;
450
+ beforeAll(() => {
451
+ const connOptions = snowflake_executor_1.SnowflakeExecutor.getConnectionOptionsFromEnv() ||
452
+ snowflake_executor_1.SnowflakeExecutor.getConnectionOptionsFromToml();
453
+ const executor = new snowflake_executor_1.SnowflakeExecutor(connOptions);
454
+ db = new SnowflakeExecutorTestSetup(executor);
455
+ query = `
456
+ select
457
+ *
458
+ from
459
+ (
460
+ values
461
+ (1, 'one'),
462
+ (2, 'two'),
463
+ (3, 'three'),
464
+ (4, 'four'),
465
+ (5, 'five')
466
+ );
467
+ `;
468
+ });
469
+ afterAll(async () => {
470
+ await db.done();
471
+ });
472
+ it('verifies batch execute', async () => {
473
+ const rows = await db.runBatch(query);
474
+ expect(rows.length).toBe(5);
475
+ });
476
+ it('verifies stream iterable', async () => {
477
+ const rows = await db.runStreaming(query, { rowLimit: 2 });
478
+ expect(rows.length).toBe(2);
479
+ });
480
+ });
481
+ describe('setupSQL', () => {
482
+ const connOptions = snowflake_executor_1.SnowflakeExecutor.getConnectionOptionsFromEnv() ||
483
+ snowflake_executor_1.SnowflakeExecutor.getConnectionOptionsFromToml();
484
+ const uid = crypto_1.default.randomBytes(4).toString('hex');
485
+ const connections = [];
486
+ function makeConn(name, setupSQL) {
487
+ const conn = new snowflake_connection_1.SnowflakeConnection(name, { connOptions, setupSQL });
488
+ connections.push(conn);
489
+ return conn;
490
+ }
491
+ afterAll(async () => {
492
+ await Promise.all(connections.map(c => c.close()));
493
+ });
494
+ it('runs a single setup statement', async () => {
495
+ const conn = makeConn('snowflake_setup_single', `SET setup_test_${uid} = 42`);
496
+ const result = await conn.runSQL(`SELECT $setup_test_${uid} AS V`);
497
+ expect(malloy.API.rowDataToNumber(result.rows[0]['V'])).toBe(42);
498
+ });
499
+ it('runs multiple semicolon-newline-separated statements', async () => {
500
+ const conn = makeConn('snowflake_setup_multi', [`SET setup_a_${uid} = 10`, `SET setup_b_${uid} = 20`].join(';\n'));
501
+ const result = await conn.runSQL(`SELECT $setup_a_${uid} + $setup_b_${uid} AS V`);
502
+ expect(malloy.API.rowDataToNumber(result.rows[0]['V'])).toBe(30);
503
+ });
504
+ it('handles multi-line statements', async () => {
505
+ const conn = makeConn('snowflake_setup_multiline', `SET\n setup_ml_${uid} = 99`);
506
+ const result = await conn.runSQL(`SELECT $setup_ml_${uid} AS V`);
507
+ expect(malloy.API.rowDataToNumber(result.rows[0]['V'])).toBe(99);
508
+ });
509
+ });
415
510
  //# sourceMappingURL=snowflake_connection.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"snowflake_connection.spec.js","sourceRoot":"","sources":["../src/snowflake_connection.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snowflake_connection.spec.js","sourceRoot":"","sources":["../src/snowflake_connection.spec.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  const snowflake_connection_1 = require("./snowflake_connection");
8
+ const snowflake_table_name_1 = require("./snowflake_table_name");
8
9
  describe('pickSampleStrategy', () => {
9
10
  const threshold = 100000000;
10
11
  test('no probe → best-effort tablesample-then-limit', () => {
@@ -22,4 +23,75 @@ describe('pickSampleStrategy', () => {
22
23
  expect((0, snowflake_connection_1.pickSampleStrategy)({ bytes: 1, rowCount: 1 }, 0)).toBe('tablesample-only');
23
24
  });
24
25
  });
26
+ describe('parseSnowflakeTableName', () => {
27
+ test('single bare identifier', () => {
28
+ expect((0, snowflake_table_name_1.parseSnowflakeTableName)('aircraft')).toEqual({
29
+ table: { literal: 'AIRCRAFT', sql: 'AIRCRAFT', quoted: false },
30
+ });
31
+ });
32
+ test('two-part bare name uppercases both parts', () => {
33
+ expect((0, snowflake_table_name_1.parseSnowflakeTableName)('malloytest.aircraft')).toEqual({
34
+ schema: { literal: 'MALLOYTEST', sql: 'MALLOYTEST', quoted: false },
35
+ table: { literal: 'AIRCRAFT', sql: 'AIRCRAFT', quoted: false },
36
+ });
37
+ });
38
+ test('three-part bare name', () => {
39
+ expect((0, snowflake_table_name_1.parseSnowflakeTableName)('db.sch.t')).toEqual({
40
+ database: { literal: 'DB', sql: 'DB', quoted: false },
41
+ schema: { literal: 'SCH', sql: 'SCH', quoted: false },
42
+ table: { literal: 'T', sql: 'T', quoted: false },
43
+ });
44
+ });
45
+ test('quoted identifier preserves case', () => {
46
+ expect((0, snowflake_table_name_1.parseSnowflakeTableName)('"MyDb"."schema"."t"')).toEqual({
47
+ database: { literal: 'MyDb', sql: '"MyDb"', quoted: true },
48
+ schema: { literal: 'schema', sql: '"schema"', quoted: true },
49
+ table: { literal: 't', sql: '"t"', quoted: true },
50
+ });
51
+ });
52
+ test('quoted identifier allows embedded dots', () => {
53
+ expect((0, snowflake_table_name_1.parseSnowflakeTableName)('"a.b"."c.d"')).toEqual({
54
+ schema: { literal: 'a.b', sql: '"a.b"', quoted: true },
55
+ table: { literal: 'c.d', sql: '"c.d"', quoted: true },
56
+ });
57
+ });
58
+ test('doubled double-quote is a literal quote', () => {
59
+ expect((0, snowflake_table_name_1.parseSnowflakeTableName)('"a""b"')).toEqual({
60
+ table: { literal: 'a"b', sql: '"a""b"', quoted: true },
61
+ });
62
+ });
63
+ test('mixes quoted and bare parts', () => {
64
+ expect((0, snowflake_table_name_1.parseSnowflakeTableName)('MYDB."mixed"')).toEqual({
65
+ schema: { literal: 'MYDB', sql: 'MYDB', quoted: false },
66
+ table: { literal: 'mixed', sql: '"mixed"', quoted: true },
67
+ });
68
+ });
69
+ test('tolerates surrounding whitespace and whitespace around dots', () => {
70
+ expect((0, snowflake_table_name_1.parseSnowflakeTableName)(' sch . t ')).toEqual({
71
+ schema: { literal: 'SCH', sql: 'SCH', quoted: false },
72
+ table: { literal: 'T', sql: 'T', quoted: false },
73
+ });
74
+ });
75
+ test('returns undefined for empty input', () => {
76
+ expect((0, snowflake_table_name_1.parseSnowflakeTableName)('')).toBeUndefined();
77
+ });
78
+ test('returns undefined for four-part name', () => {
79
+ expect((0, snowflake_table_name_1.parseSnowflakeTableName)('a.b.c.d')).toBeUndefined();
80
+ });
81
+ test('returns undefined for trailing dot', () => {
82
+ expect((0, snowflake_table_name_1.parseSnowflakeTableName)('sch.')).toBeUndefined();
83
+ });
84
+ test('returns undefined for leading dot', () => {
85
+ expect((0, snowflake_table_name_1.parseSnowflakeTableName)('.t')).toBeUndefined();
86
+ });
87
+ test('returns undefined for unterminated quoted identifier', () => {
88
+ expect((0, snowflake_table_name_1.parseSnowflakeTableName)('"oops')).toBeUndefined();
89
+ });
90
+ test('returns undefined for identifier starting with a digit', () => {
91
+ expect((0, snowflake_table_name_1.parseSnowflakeTableName)('1foo')).toBeUndefined();
92
+ });
93
+ test('returns undefined for identifier containing a dash', () => {
94
+ expect((0, snowflake_table_name_1.parseSnowflakeTableName)('foo-bar')).toBeUndefined();
95
+ });
96
+ });
25
97
  //# sourceMappingURL=snowflake_sample_strategy.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"snowflake_sample_strategy.spec.js","sourceRoot":"","sources":["../src/snowflake_sample_strategy.spec.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAEH,iEAA0D;AAE1D,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,MAAM,SAAS,GAAG,SAAW,CAAC;IAE9B,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,IAAA,yCAAkB,EAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CACnD,wBAAwB,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,IAAA,yCAAkB,EAAC,EAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CACjE,uBAAuB,CACxB,CAAC;QACF,MAAM,CAAC,IAAA,yCAAkB,EAAC,EAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CACzE,uBAAuB,CACxB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC/E,MAAM,CACJ,IAAA,yCAAkB,EAAC,EAAC,KAAK,EAAE,SAAS,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAC,EAAE,SAAS,CAAC,CACnE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3B,MAAM,CACJ,IAAA,yCAAkB,EAChB,EAAC,KAAK,EAAE,WAAc,EAAE,QAAQ,EAAE,UAAa,EAAC,EAChD,SAAS,CACV,CACF,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,IAAA,yCAAkB,EAAC,EAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CACzD,kBAAkB,CACnB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"snowflake_sample_strategy.spec.js","sourceRoot":"","sources":["../src/snowflake_sample_strategy.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export interface SnowflakeIdentPart {
2
+ /** Normalized catalog value — suitable for a SQL string literal. */
3
+ literal: string;
4
+ /** Re-emission form — suitable for a SQL identifier position. */
5
+ sql: string;
6
+ quoted: boolean;
7
+ }
8
+ export interface ParsedSnowflakeTableName {
9
+ database?: SnowflakeIdentPart;
10
+ schema?: SnowflakeIdentPart;
11
+ table: SnowflakeIdentPart;
12
+ }
13
+ /**
14
+ * Parse a Snowflake table reference into 1-3 identifier parts. Returns
15
+ * undefined when the input is not a well-formed `[db.][schema.]table`
16
+ * reference — callers should treat that as "unknown shape" and skip
17
+ * metadata-driven optimizations rather than guessing.
18
+ */
19
+ export declare function parseSnowflakeTableName(src: string): ParsedSnowflakeTableName | undefined;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright Contributors to the Malloy project
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.parseSnowflakeTableName = parseSnowflakeTableName;
8
+ // Parses Snowflake table references of the form
9
+ // [database.][schema.]table
10
+ // where each part is either a bare identifier (case-insensitive, stored
11
+ // upper-cased in Snowflake's catalog) or a double-quoted identifier
12
+ // (case-sensitive, with `""` as the in-string escape for a literal `"`).
13
+ //
14
+ // The parser exists so the INFORMATION_SCHEMA.TABLES size probe can compare
15
+ // `table_schema` / `table_name` against the correct catalog value:
16
+ // bare names must be upper-cased, quoted names must be passed through
17
+ // verbatim. The old `split('.')` + regex approach got this wrong for
18
+ // quoted names and names with embedded dots.
19
+ const internal_1 = require("@malloydata/malloy/internal");
20
+ class SnowflakeTableNameParser extends internal_1.TinyParser {
21
+ constructor(input) {
22
+ super(input, {
23
+ space: /^\s+/,
24
+ char: /^\./,
25
+ qstr: /^"(?:[^"]|"")*"/,
26
+ ident: /^[A-Za-z_][A-Za-z0-9_$]*/,
27
+ });
28
+ }
29
+ parts() {
30
+ const out = [this.readPart()];
31
+ while (this.match('.')) {
32
+ out.push(this.readPart());
33
+ }
34
+ if (!this.eof()) {
35
+ throw this.parseError(`Unexpected ${this.peek().type}`);
36
+ }
37
+ return out;
38
+ }
39
+ readPart() {
40
+ const quoted = this.match('qstr');
41
+ if (quoted) {
42
+ // qstr strips outer quotes; `""` inside is the Snowflake escape.
43
+ const literal = quoted.text.replace(/""/g, '"');
44
+ return {
45
+ literal,
46
+ sql: `"${literal.replace(/"/g, '""')}"`,
47
+ quoted: true,
48
+ };
49
+ }
50
+ const ident = this.match('ident');
51
+ if (ident) {
52
+ const literal = ident.text.toUpperCase();
53
+ return { literal, sql: literal, quoted: false };
54
+ }
55
+ throw this.parseError('Expected identifier');
56
+ }
57
+ }
58
+ /**
59
+ * Parse a Snowflake table reference into 1-3 identifier parts. Returns
60
+ * undefined when the input is not a well-formed `[db.][schema.]table`
61
+ * reference — callers should treat that as "unknown shape" and skip
62
+ * metadata-driven optimizations rather than guessing.
63
+ */
64
+ function parseSnowflakeTableName(src) {
65
+ try {
66
+ const parts = new SnowflakeTableNameParser(src).parts();
67
+ if (parts.length < 1 || parts.length > 3)
68
+ return undefined;
69
+ if (parts.length === 1)
70
+ return { table: parts[0] };
71
+ if (parts.length === 2)
72
+ return { schema: parts[0], table: parts[1] };
73
+ return { database: parts[0], schema: parts[1], table: parts[2] };
74
+ }
75
+ catch {
76
+ return undefined;
77
+ }
78
+ }
79
+ //# sourceMappingURL=snowflake_table_name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snowflake_table_name.js","sourceRoot":"","sources":["../src/snowflake_table_name.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA6EH,0DAYC;AAvFD,gDAAgD;AAChD,8BAA8B;AAC9B,wEAAwE;AACxE,oEAAoE;AACpE,yEAAyE;AACzE,EAAE;AACF,4EAA4E;AAC5E,mEAAmE;AACnE,sEAAsE;AACtE,qEAAqE;AACrE,6CAA6C;AAE7C,0DAAuD;AAgBvD,MAAM,wBAAyB,SAAQ,qBAAU;IAC/C,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,EAAE;YACX,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,0BAA0B;SAClC,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,MAAM,GAAG,GAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,QAAQ;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,iEAAiE;YACjE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAChD,OAAO;gBACL,OAAO;gBACP,GAAG,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG;gBACvC,MAAM,EAAE,IAAI;aACb,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,OAAO,EAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;QAChD,CAAC;QACD,MAAM,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAC/C,CAAC;CACF;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CACrC,GAAW;IAEX,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,wBAAwB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QACxD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAC3D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAC,CAAC;QACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAC,CAAC;QACnE,OAAO,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@malloydata/db-snowflake",
3
- "version": "0.0.376",
3
+ "version": "0.0.378",
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.376",
25
+ "@malloydata/malloy": "0.0.378",
26
26
  "generic-pool": "^3.9.0",
27
27
  "snowflake-sdk": "2.3.1",
28
28
  "toml": "^3.0.0"
@@ -22,11 +22,19 @@
22
22
  */
23
23
 
24
24
  import * as malloy from '@malloydata/malloy';
25
- import {createTestRuntime, mkTestModel} from '@malloydata/malloy/test';
25
+ import type {QueryData, RunSQLOptions} from '@malloydata/malloy';
26
+ import {
27
+ createTestRuntime,
28
+ describeIfDatabaseAvailable,
29
+ mkTestModel,
30
+ } from '@malloydata/malloy/test';
26
31
  import '@malloydata/malloy/test/matchers';
32
+ import crypto from 'crypto';
27
33
  import {SnowflakeConnection} from './snowflake_connection';
28
34
  import {SnowflakeExecutor} from './snowflake_executor';
29
35
 
36
+ const [describeSnowflakeExecutor] = describeIfDatabaseAvailable(['snowflake']);
37
+
30
38
  describe('db:Snowflake', () => {
31
39
  const connOptions =
32
40
  SnowflakeExecutor.getConnectionOptionsFromEnv() ||
@@ -422,3 +430,125 @@ describe('numeric value reading', () => {
422
430
  );
423
431
  });
424
432
  });
433
+
434
+ class SnowflakeExecutorTestSetup {
435
+ private executor_: SnowflakeExecutor;
436
+ constructor(executor: SnowflakeExecutor) {
437
+ this.executor_ = executor;
438
+ }
439
+
440
+ async runBatch(sqlText: string): Promise<QueryData> {
441
+ let ret: QueryData = [];
442
+ await (async () => {
443
+ const rows = await this.executor_.batch(sqlText);
444
+ return rows;
445
+ })().then((rows: QueryData) => {
446
+ ret = rows;
447
+ });
448
+ return ret;
449
+ }
450
+
451
+ async runStreaming(sqlText: string, queryOptions?: RunSQLOptions) {
452
+ const rows: QueryData = [];
453
+ await (async () => {
454
+ for await (const row of await this.executor_.stream(
455
+ sqlText,
456
+ queryOptions
457
+ )) {
458
+ rows.push(row);
459
+ }
460
+ })();
461
+ return rows;
462
+ }
463
+
464
+ async done() {
465
+ await this.executor_.done();
466
+ }
467
+ }
468
+
469
+ describeSnowflakeExecutor('db:SnowflakeExecutor', () => {
470
+ let db: SnowflakeExecutorTestSetup;
471
+ let query: string;
472
+
473
+ beforeAll(() => {
474
+ const connOptions =
475
+ SnowflakeExecutor.getConnectionOptionsFromEnv() ||
476
+ SnowflakeExecutor.getConnectionOptionsFromToml();
477
+ const executor = new SnowflakeExecutor(connOptions);
478
+ db = new SnowflakeExecutorTestSetup(executor);
479
+ query = `
480
+ select
481
+ *
482
+ from
483
+ (
484
+ values
485
+ (1, 'one'),
486
+ (2, 'two'),
487
+ (3, 'three'),
488
+ (4, 'four'),
489
+ (5, 'five')
490
+ );
491
+ `;
492
+ });
493
+
494
+ afterAll(async () => {
495
+ await db.done();
496
+ });
497
+
498
+ it('verifies batch execute', async () => {
499
+ const rows = await db.runBatch(query);
500
+ expect(rows.length).toBe(5);
501
+ });
502
+
503
+ it('verifies stream iterable', async () => {
504
+ const rows = await db.runStreaming(query, {rowLimit: 2});
505
+ expect(rows.length).toBe(2);
506
+ });
507
+ });
508
+
509
+ describe('setupSQL', () => {
510
+ const connOptions =
511
+ SnowflakeExecutor.getConnectionOptionsFromEnv() ||
512
+ SnowflakeExecutor.getConnectionOptionsFromToml();
513
+ const uid = crypto.randomBytes(4).toString('hex');
514
+ const connections: SnowflakeConnection[] = [];
515
+
516
+ function makeConn(name: string, setupSQL: string): SnowflakeConnection {
517
+ const conn = new SnowflakeConnection(name, {connOptions, setupSQL});
518
+ connections.push(conn);
519
+ return conn;
520
+ }
521
+
522
+ afterAll(async () => {
523
+ await Promise.all(connections.map(c => c.close()));
524
+ });
525
+
526
+ it('runs a single setup statement', async () => {
527
+ const conn = makeConn(
528
+ 'snowflake_setup_single',
529
+ `SET setup_test_${uid} = 42`
530
+ );
531
+ const result = await conn.runSQL(`SELECT $setup_test_${uid} AS V`);
532
+ expect(malloy.API.rowDataToNumber(result.rows[0]['V'])).toBe(42);
533
+ });
534
+
535
+ it('runs multiple semicolon-newline-separated statements', async () => {
536
+ const conn = makeConn(
537
+ 'snowflake_setup_multi',
538
+ [`SET setup_a_${uid} = 10`, `SET setup_b_${uid} = 20`].join(';\n')
539
+ );
540
+ const result = await conn.runSQL(
541
+ `SELECT $setup_a_${uid} + $setup_b_${uid} AS V`
542
+ );
543
+ expect(malloy.API.rowDataToNumber(result.rows[0]['V'])).toBe(30);
544
+ });
545
+
546
+ it('handles multi-line statements', async () => {
547
+ const conn = makeConn(
548
+ 'snowflake_setup_multiline',
549
+ `SET\n setup_ml_${uid} = 99`
550
+ );
551
+ const result = await conn.runSQL(`SELECT $setup_ml_${uid} AS V`);
552
+ expect(malloy.API.rowDataToNumber(result.rows[0]['V'])).toBe(99);
553
+ });
554
+ });
@@ -48,6 +48,7 @@ import {
48
48
  seedTopLevelShape,
49
49
  } from './snowflake_variant_schema';
50
50
  import type {NestedColumn} from './snowflake_variant_schema';
51
+ import {parseSnowflakeTableName} from './snowflake_table_name';
51
52
  import type {ConnectionOptions} from 'snowflake-sdk';
52
53
  import type {Options as PoolOptions} from 'generic-pool';
53
54
 
@@ -423,31 +424,28 @@ export class SnowflakeConnection
423
424
  /**
424
425
  * Cheap metadata probe: ask INFORMATION_SCHEMA.TABLES for the row count
425
426
  * and byte size of tablePath. Returns undefined when the name doesn't
426
- * parse as a two- or three-part identifier (temp views, exotic quoted
427
- * names), when the probe query fails, or when the row has no numeric
428
- * BYTES (views and external tables typically report NULL).
427
+ * parse as a two- or three-part identifier, when the probe query fails,
428
+ * or when the row has no numeric BYTES (views and external tables
429
+ * typically report NULL).
429
430
  *
430
431
  * Two-part `schema.table` names use the current database's
431
432
  * INFORMATION_SCHEMA; three-part `db.schema.table` names address
432
- * INFORMATION_SCHEMA in the named database. Identifier parts are
433
- * validated against a strict regex before interpolation; values that
434
- * don't match cause the probe to skip.
433
+ * INFORMATION_SCHEMA in the named database. Identifiers are parsed
434
+ * with Snowflake's quoting rules so bare parts case-fold to upper and
435
+ * quoted parts are compared verbatim against the catalog.
435
436
  */
436
437
  private async probeTableSize(
437
438
  tablePath: string
438
439
  ): Promise<TableSizeProbe | undefined> {
439
- const parts = tablePath.split('.');
440
- if (parts.length !== 2 && parts.length !== 3) return undefined;
441
- const identifier = /^[A-Za-z_][A-Za-z0-9_$]*$/;
442
- if (!parts.every(p => identifier.test(p))) return undefined;
443
- const [db, schema, table] =
444
- parts.length === 3 ? parts : [undefined, parts[0], parts[1]];
445
- const dbQualifier = db !== undefined ? `${db}.` : '';
440
+ const parsed = parseSnowflakeTableName(tablePath);
441
+ if (parsed === undefined || parsed.schema === undefined) return undefined;
442
+ const quoteLit = (s: string) => s.replace(/'/g, "''");
443
+ const dbQualifier = parsed.database ? `${parsed.database.sql}.` : '';
446
444
  const rows = await this.executor.tryBatch(
447
445
  `select row_count as rc, bytes as by
448
446
  from ${dbQualifier}information_schema.tables
449
- where upper(table_schema) = upper('${schema}')
450
- and upper(table_name) = upper('${table}')
447
+ where table_schema = '${quoteLit(parsed.schema.literal)}'
448
+ and table_name = '${quoteLit(parsed.table.literal)}'
451
449
  limit 1`,
452
450
  {},
453
451
  this.schemaSampleTimeoutMs
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import {pickSampleStrategy} from './snowflake_connection';
7
+ import {parseSnowflakeTableName} from './snowflake_table_name';
7
8
 
8
9
  describe('pickSampleStrategy', () => {
9
10
  const threshold = 100_000_000;
@@ -41,3 +42,89 @@ describe('pickSampleStrategy', () => {
41
42
  );
42
43
  });
43
44
  });
45
+
46
+ describe('parseSnowflakeTableName', () => {
47
+ test('single bare identifier', () => {
48
+ expect(parseSnowflakeTableName('aircraft')).toEqual({
49
+ table: {literal: 'AIRCRAFT', sql: 'AIRCRAFT', quoted: false},
50
+ });
51
+ });
52
+
53
+ test('two-part bare name uppercases both parts', () => {
54
+ expect(parseSnowflakeTableName('malloytest.aircraft')).toEqual({
55
+ schema: {literal: 'MALLOYTEST', sql: 'MALLOYTEST', quoted: false},
56
+ table: {literal: 'AIRCRAFT', sql: 'AIRCRAFT', quoted: false},
57
+ });
58
+ });
59
+
60
+ test('three-part bare name', () => {
61
+ expect(parseSnowflakeTableName('db.sch.t')).toEqual({
62
+ database: {literal: 'DB', sql: 'DB', quoted: false},
63
+ schema: {literal: 'SCH', sql: 'SCH', quoted: false},
64
+ table: {literal: 'T', sql: 'T', quoted: false},
65
+ });
66
+ });
67
+
68
+ test('quoted identifier preserves case', () => {
69
+ expect(parseSnowflakeTableName('"MyDb"."schema"."t"')).toEqual({
70
+ database: {literal: 'MyDb', sql: '"MyDb"', quoted: true},
71
+ schema: {literal: 'schema', sql: '"schema"', quoted: true},
72
+ table: {literal: 't', sql: '"t"', quoted: true},
73
+ });
74
+ });
75
+
76
+ test('quoted identifier allows embedded dots', () => {
77
+ expect(parseSnowflakeTableName('"a.b"."c.d"')).toEqual({
78
+ schema: {literal: 'a.b', sql: '"a.b"', quoted: true},
79
+ table: {literal: 'c.d', sql: '"c.d"', quoted: true},
80
+ });
81
+ });
82
+
83
+ test('doubled double-quote is a literal quote', () => {
84
+ expect(parseSnowflakeTableName('"a""b"')).toEqual({
85
+ table: {literal: 'a"b', sql: '"a""b"', quoted: true},
86
+ });
87
+ });
88
+
89
+ test('mixes quoted and bare parts', () => {
90
+ expect(parseSnowflakeTableName('MYDB."mixed"')).toEqual({
91
+ schema: {literal: 'MYDB', sql: 'MYDB', quoted: false},
92
+ table: {literal: 'mixed', sql: '"mixed"', quoted: true},
93
+ });
94
+ });
95
+
96
+ test('tolerates surrounding whitespace and whitespace around dots', () => {
97
+ expect(parseSnowflakeTableName(' sch . t ')).toEqual({
98
+ schema: {literal: 'SCH', sql: 'SCH', quoted: false},
99
+ table: {literal: 'T', sql: 'T', quoted: false},
100
+ });
101
+ });
102
+
103
+ test('returns undefined for empty input', () => {
104
+ expect(parseSnowflakeTableName('')).toBeUndefined();
105
+ });
106
+
107
+ test('returns undefined for four-part name', () => {
108
+ expect(parseSnowflakeTableName('a.b.c.d')).toBeUndefined();
109
+ });
110
+
111
+ test('returns undefined for trailing dot', () => {
112
+ expect(parseSnowflakeTableName('sch.')).toBeUndefined();
113
+ });
114
+
115
+ test('returns undefined for leading dot', () => {
116
+ expect(parseSnowflakeTableName('.t')).toBeUndefined();
117
+ });
118
+
119
+ test('returns undefined for unterminated quoted identifier', () => {
120
+ expect(parseSnowflakeTableName('"oops')).toBeUndefined();
121
+ });
122
+
123
+ test('returns undefined for identifier starting with a digit', () => {
124
+ expect(parseSnowflakeTableName('1foo')).toBeUndefined();
125
+ });
126
+
127
+ test('returns undefined for identifier containing a dash', () => {
128
+ expect(parseSnowflakeTableName('foo-bar')).toBeUndefined();
129
+ });
130
+ });
@@ -0,0 +1,93 @@
1
+ /*
2
+ * Copyright Contributors to the Malloy project
3
+ * SPDX-License-Identifier: MIT
4
+ */
5
+
6
+ // Parses Snowflake table references of the form
7
+ // [database.][schema.]table
8
+ // where each part is either a bare identifier (case-insensitive, stored
9
+ // upper-cased in Snowflake's catalog) or a double-quoted identifier
10
+ // (case-sensitive, with `""` as the in-string escape for a literal `"`).
11
+ //
12
+ // The parser exists so the INFORMATION_SCHEMA.TABLES size probe can compare
13
+ // `table_schema` / `table_name` against the correct catalog value:
14
+ // bare names must be upper-cased, quoted names must be passed through
15
+ // verbatim. The old `split('.')` + regex approach got this wrong for
16
+ // quoted names and names with embedded dots.
17
+
18
+ import {TinyParser} from '@malloydata/malloy/internal';
19
+
20
+ export interface SnowflakeIdentPart {
21
+ /** Normalized catalog value — suitable for a SQL string literal. */
22
+ literal: string;
23
+ /** Re-emission form — suitable for a SQL identifier position. */
24
+ sql: string;
25
+ quoted: boolean;
26
+ }
27
+
28
+ export interface ParsedSnowflakeTableName {
29
+ database?: SnowflakeIdentPart;
30
+ schema?: SnowflakeIdentPart;
31
+ table: SnowflakeIdentPart;
32
+ }
33
+
34
+ class SnowflakeTableNameParser extends TinyParser {
35
+ constructor(input: string) {
36
+ super(input, {
37
+ space: /^\s+/,
38
+ char: /^\./,
39
+ qstr: /^"(?:[^"]|"")*"/,
40
+ ident: /^[A-Za-z_][A-Za-z0-9_$]*/,
41
+ });
42
+ }
43
+
44
+ parts(): SnowflakeIdentPart[] {
45
+ const out: SnowflakeIdentPart[] = [this.readPart()];
46
+ while (this.match('.')) {
47
+ out.push(this.readPart());
48
+ }
49
+ if (!this.eof()) {
50
+ throw this.parseError(`Unexpected ${this.peek().type}`);
51
+ }
52
+ return out;
53
+ }
54
+
55
+ private readPart(): SnowflakeIdentPart {
56
+ const quoted = this.match('qstr');
57
+ if (quoted) {
58
+ // qstr strips outer quotes; `""` inside is the Snowflake escape.
59
+ const literal = quoted.text.replace(/""/g, '"');
60
+ return {
61
+ literal,
62
+ sql: `"${literal.replace(/"/g, '""')}"`,
63
+ quoted: true,
64
+ };
65
+ }
66
+ const ident = this.match('ident');
67
+ if (ident) {
68
+ const literal = ident.text.toUpperCase();
69
+ return {literal, sql: literal, quoted: false};
70
+ }
71
+ throw this.parseError('Expected identifier');
72
+ }
73
+ }
74
+
75
+ /**
76
+ * Parse a Snowflake table reference into 1-3 identifier parts. Returns
77
+ * undefined when the input is not a well-formed `[db.][schema.]table`
78
+ * reference — callers should treat that as "unknown shape" and skip
79
+ * metadata-driven optimizations rather than guessing.
80
+ */
81
+ export function parseSnowflakeTableName(
82
+ src: string
83
+ ): ParsedSnowflakeTableName | undefined {
84
+ try {
85
+ const parts = new SnowflakeTableNameParser(src).parts();
86
+ if (parts.length < 1 || parts.length > 3) return undefined;
87
+ if (parts.length === 1) return {table: parts[0]};
88
+ if (parts.length === 2) return {schema: parts[0], table: parts[1]};
89
+ return {database: parts[0], schema: parts[1], table: parts[2]};
90
+ } catch {
91
+ return undefined;
92
+ }
93
+ }
@@ -1 +0,0 @@
1
- export {};
@@ -1,89 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright 2023 Google LLC
4
- *
5
- * Permission is hereby granted, free of charge, to any person obtaining
6
- * a copy of this software and associated documentation files
7
- * (the "Software"), to deal in the Software without restriction,
8
- * including without limitation the rights to use, copy, modify, merge,
9
- * publish, distribute, sublicense, and/or sell copies of the Software,
10
- * and to permit persons to whom the Software is furnished to do so,
11
- * subject to the following conditions:
12
- *
13
- * The above copyright notice and this permission notice shall be
14
- * included in all copies or substantial portions of the Software.
15
- *
16
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
- */
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- const snowflake_executor_1 = require("./snowflake_executor");
26
- const test_1 = require("@malloydata/malloy/test");
27
- const [describe] = (0, test_1.describeIfDatabaseAvailable)(['snowflake']);
28
- class SnowflakeExecutorTestSetup {
29
- constructor(executor) {
30
- this.executor_ = executor;
31
- }
32
- async runBatch(sqlText) {
33
- let ret = [];
34
- await (async () => {
35
- const rows = await this.executor_.batch(sqlText);
36
- return rows;
37
- })().then((rows) => {
38
- ret = rows;
39
- });
40
- return ret;
41
- }
42
- async runStreaming(sqlText, queryOptions) {
43
- const rows = [];
44
- await (async () => {
45
- for await (const row of await this.executor_.stream(sqlText, queryOptions)) {
46
- rows.push(row);
47
- }
48
- })();
49
- return rows;
50
- }
51
- async done() {
52
- await this.executor_.done();
53
- }
54
- }
55
- describe('db:SnowflakeExecutor', () => {
56
- let db;
57
- let query;
58
- beforeAll(() => {
59
- const connOptions = snowflake_executor_1.SnowflakeExecutor.getConnectionOptionsFromEnv() ||
60
- snowflake_executor_1.SnowflakeExecutor.getConnectionOptionsFromToml();
61
- const executor = new snowflake_executor_1.SnowflakeExecutor(connOptions);
62
- db = new SnowflakeExecutorTestSetup(executor);
63
- query = `
64
- select
65
- *
66
- from
67
- (
68
- values
69
- (1, 'one'),
70
- (2, 'two'),
71
- (3, 'three'),
72
- (4, 'four'),
73
- (5, 'five')
74
- );
75
- `;
76
- });
77
- afterAll(async () => {
78
- await db.done();
79
- });
80
- it('verifies batch execute', async () => {
81
- const rows = await db.runBatch(query);
82
- expect(rows.length).toBe(5);
83
- });
84
- it('verifies stream iterable', async () => {
85
- const rows = await db.runStreaming(query, { rowLimit: 2 });
86
- expect(rows.length).toBe(2);
87
- });
88
- });
89
- //# sourceMappingURL=snowflake_executor.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snowflake_executor.spec.js","sourceRoot":"","sources":["../src/snowflake_executor.spec.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;AAEH,6DAAuD;AAEvD,kDAAoE;AAEpE,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAA,kCAA2B,EAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAE9D,MAAM,0BAA0B;IAE9B,YAAY,QAA2B;QACrC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,IAAI,GAAG,GAAc,EAAE,CAAC;QACxB,MAAM,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAe,EAAE,EAAE;YAC5B,GAAG,GAAG,IAAI,CAAC;QACb,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,YAA4B;QAC9D,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,IAAI,EAAE;YAChB,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CACjD,OAAO,EACP,YAAY,CACb,EAAE,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;CACF;AAED,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,EAA8B,CAAC;IACnC,IAAI,KAAa,CAAC;IAElB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,WAAW,GACf,sCAAiB,CAAC,2BAA2B,EAAE;YAC/C,sCAAiB,CAAC,4BAA4B,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,sCAAiB,CAAC,WAAW,CAAC,CAAC;QACpD,EAAE,GAAG,IAAI,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QAC9C,KAAK,GAAG;;;;;;;;;;;;KAYP,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,IAAI,EAAE;QAClB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,CAAC,EAAC,CAAC,CAAC;QACzD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,76 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,103 +0,0 @@
1
- /*
2
- * Copyright 2023 Google LLC
3
- *
4
- * Permission is hereby granted, free of charge, to any person obtaining
5
- * a copy of this software and associated documentation files
6
- * (the "Software"), to deal in the Software without restriction,
7
- * including without limitation the rights to use, copy, modify, merge,
8
- * publish, distribute, sublicense, and/or sell copies of the Software,
9
- * and to permit persons to whom the Software is furnished to do so,
10
- * subject to the following conditions:
11
- *
12
- * The above copyright notice and this permission notice shall be
13
- * included in all copies or substantial portions of the Software.
14
- *
15
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
- */
23
-
24
- import {SnowflakeExecutor} from './snowflake_executor';
25
- import type {QueryData, RunSQLOptions} from '@malloydata/malloy';
26
- import {describeIfDatabaseAvailable} from '@malloydata/malloy/test';
27
-
28
- const [describe] = describeIfDatabaseAvailable(['snowflake']);
29
-
30
- class SnowflakeExecutorTestSetup {
31
- private executor_: SnowflakeExecutor;
32
- constructor(executor: SnowflakeExecutor) {
33
- this.executor_ = executor;
34
- }
35
-
36
- async runBatch(sqlText: string): Promise<QueryData> {
37
- let ret: QueryData = [];
38
- await (async () => {
39
- const rows = await this.executor_.batch(sqlText);
40
- return rows;
41
- })().then((rows: QueryData) => {
42
- ret = rows;
43
- });
44
- return ret;
45
- }
46
-
47
- async runStreaming(sqlText: string, queryOptions?: RunSQLOptions) {
48
- const rows: QueryData = [];
49
- await (async () => {
50
- for await (const row of await this.executor_.stream(
51
- sqlText,
52
- queryOptions
53
- )) {
54
- rows.push(row);
55
- }
56
- })();
57
- return rows;
58
- }
59
-
60
- async done() {
61
- await this.executor_.done();
62
- }
63
- }
64
-
65
- describe('db:SnowflakeExecutor', () => {
66
- let db: SnowflakeExecutorTestSetup;
67
- let query: string;
68
-
69
- beforeAll(() => {
70
- const connOptions =
71
- SnowflakeExecutor.getConnectionOptionsFromEnv() ||
72
- SnowflakeExecutor.getConnectionOptionsFromToml();
73
- const executor = new SnowflakeExecutor(connOptions);
74
- db = new SnowflakeExecutorTestSetup(executor);
75
- query = `
76
- select
77
- *
78
- from
79
- (
80
- values
81
- (1, 'one'),
82
- (2, 'two'),
83
- (3, 'three'),
84
- (4, 'four'),
85
- (5, 'five')
86
- );
87
- `;
88
- });
89
-
90
- afterAll(async () => {
91
- await db.done();
92
- });
93
-
94
- it('verifies batch execute', async () => {
95
- const rows = await db.runBatch(query);
96
- expect(rows.length).toBe(5);
97
- });
98
-
99
- it('verifies stream iterable', async () => {
100
- const rows = await db.runStreaming(query, {rowLimit: 2});
101
- expect(rows.length).toBe(2);
102
- });
103
- });
@@ -1,56 +0,0 @@
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
- });