@malloydata/db-snowflake 0.0.127-dev240308180053 → 0.0.127

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.
@@ -28,7 +28,7 @@ export declare class SnowflakeConnection implements Connection, PersistSQLResult
28
28
  canStream(): this is StreamingConnection;
29
29
  estimateQueryCost(_sqlCommand: string): Promise<QueryRunStats>;
30
30
  close(): Promise<void>;
31
- private getTempTableName;
31
+ private getTempViewName;
32
32
  runSQL(sql: string, options?: RunSQLOptions): Promise<MalloyQueryData>;
33
33
  runSQLStream(sqlCommand: string, options?: RunSQLOptions): AsyncIterableIterator<QueryDataRow>;
34
34
  test(): Promise<void>;
@@ -87,13 +87,9 @@ class SnowflakeConnection {
87
87
  async close() {
88
88
  await this.executor.done();
89
89
  }
90
- getTempTableName(sqlCommand) {
90
+ getTempViewName(sqlCommand) {
91
91
  const hash = crypto.createHash('md5').update(sqlCommand).digest('hex');
92
- let tableName = `tt${hash}`;
93
- if (this.scratchSpace) {
94
- tableName = `${this.scratchSpace.database}.${this.scratchSpace.schema}.${tableName}`;
95
- }
96
- return tableName;
92
+ return `tt${hash}`;
97
93
  }
98
94
  async runSQL(sql, options) {
99
95
  var _a, _b;
@@ -119,10 +115,12 @@ class SnowflakeConnection {
119
115
  async schemaFromQuery(infoQuery, structDef) {
120
116
  const rows = await this.executor.batch(infoQuery);
121
117
  for (const row of rows) {
122
- const snowflakeDataType = row['DATA_TYPE'];
118
+ // data types look like `VARCHAR(1234)`
119
+ let snowflakeDataType = row['type'];
120
+ snowflakeDataType = snowflakeDataType.toLocaleLowerCase().split('(')[0];
123
121
  const s = structDef;
124
122
  const malloyType = this.dialect.sqlTypeToMalloyType(snowflakeDataType);
125
- const name = row['COLUMN_NAME'];
123
+ const name = row['name'];
126
124
  if (malloyType) {
127
125
  s.fields.push({ ...malloyType, name });
128
126
  }
@@ -136,13 +134,6 @@ class SnowflakeConnection {
136
134
  }
137
135
  }
138
136
  async getTableSchema(tableKey, tablePath) {
139
- // looks like snowflake:schemaName.tableName
140
- tableKey = tableKey.toLowerCase();
141
- let [schema, tableName] = ['', tablePath];
142
- const schema_and_table = tablePath.split('.');
143
- if (schema_and_table.length === 2) {
144
- [schema, tableName] = schema_and_table;
145
- }
146
137
  const structDef = {
147
138
  type: 'struct',
148
139
  dialect: 'snowflake',
@@ -164,16 +155,7 @@ class SnowflakeConnection {
164
155
  // WHERE lower(TYPEOF(value)) <> 'array'
165
156
  // GROUP BY 1,2
166
157
  // ORDER BY PATH
167
- const infoQuery = `
168
- SELECT
169
- column_name, -- LOWER(COLUMN_NAME) AS column_name,
170
- LOWER(DATA_TYPE) as data_type
171
- FROM
172
- INFORMATION_SCHEMA.COLUMNS
173
- WHERE
174
- table_schema = UPPER('${schema}')
175
- AND table_name = UPPER('${tableName}');
176
- `;
158
+ const infoQuery = `DESCRIBE TABLE ${tablePath}`;
177
159
  await this.schemaFromQuery(infoQuery, structDef);
178
160
  return structDef;
179
161
  }
@@ -223,21 +205,11 @@ class SnowflakeConnection {
223
205
  fields: [],
224
206
  };
225
207
  // create temp table with same schema as the query
226
- const tempTableName = this.getTempTableName(sqlRef.selectStr);
208
+ const tempTableName = this.getTempViewName(sqlRef.selectStr);
227
209
  this.runSQL(`
228
- CREATE OR REPLACE TEMP TABLE ${tempTableName} as SELECT * FROM (
229
- ${sqlRef.selectStr}
230
- ) as x WHERE false;
210
+ CREATE OR REPLACE TEMP VIEW ${tempTableName} as ${sqlRef.selectStr};
231
211
  `);
232
- const infoQuery = `
233
- SELECT
234
- column_name, -- LOWER(column_name) as column_name,
235
- LOWER(data_type) as data_type
236
- FROM
237
- INFORMATION_SCHEMA.COLUMNS
238
- WHERE
239
- table_name = UPPER('${tempTableName}');
240
- `;
212
+ const infoQuery = `DESCRIBE TABLE ${tempTableName}`;
241
213
  await this.schemaFromQuery(infoQuery, structDef);
242
214
  return structDef;
243
215
  }
@@ -261,7 +233,7 @@ class SnowflakeConnection {
261
233
  return inCache;
262
234
  }
263
235
  async manifestTemporaryTable(sqlCommand) {
264
- const tableName = this.getTempTableName(sqlCommand);
236
+ const tableName = this.getTempViewName(sqlCommand);
265
237
  const cmd = `CREATE OR REPLACE TEMP TABLE ${tableName} AS (${sqlCommand});`;
266
238
  await this.runSQL(cmd);
267
239
  return tableName;
@@ -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":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,+CAAiC;AACjC,+CAa4B;AAC5B,6DAAuD;AAwBvD,MAAa,mBAAmB;IA4B9B,YACkB,IAAY,EAC5B,OAAoC;;QADpB,SAAI,GAAJ,IAAI,CAAQ;QAtBb,YAAO,GAAG,IAAI,yBAAgB,EAAE,CAAC;QAE1C,gBAAW,GAAG,IAAI,GAAG,EAI1B,CAAC;QACI,mBAAc,GAAG,IAAI,GAAG,EAQ7B,CAAC;QAUF,IAAI,WAAW,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAC;QACvC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,mEAAmE;YACnE,WAAW,GAAG,sCAAiB,CAAC,4BAA4B,EAAE,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,sCAAiB,CAAC,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAC,CAAC;QACzE,IAAI,CAAC,YAAY,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAC;QAC1C,IAAI,CAAC,YAAY,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,mCAAI,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,WAAW;QACb,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,qCAAqC;IACrC,IAAW,eAAe;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,WAAmB;QAChD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAEO,eAAe,CAAC,UAAkB;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,KAAK,IAAI,EAAE,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,GAAW,EACX,OAAuB;;QAEvB,MAAM,QAAQ,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,mCAAI,MAAA,IAAI,CAAC,YAAY,0CAAE,QAAQ,CAAC;QAClE,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YACrD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,EAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,CAAC,YAAY,CACxB,UAAkB,EAClB,UAAyB,EAAE;QAE3B,MAAM,kBAAkB,GAAG;YACzB,GAAG,IAAI,CAAC,YAAY;YACpB,GAAG,OAAO;SACX,CAAC;QAEF,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAChD,UAAU,EACV,kBAAkB,CACnB,EAAE,CAAC;YACF,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,SAAiB,EACjB,SAAoB;QAEpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAClD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,uCAAuC;YACvC,IAAI,iBAAiB,GAAG,GAAG,CAAC,MAAM,CAAW,CAAC;YAC9C,iBAAiB,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,MAAM,CAAC,GAAG,SAAS,CAAC;YACpB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;YACvE,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAW,CAAC;YACnC,IAAI,UAAU,EAAE,CAAC;gBACf,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC,GAAG,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,iBAAiB;oBAC1B,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,QAAgB,EAChB,SAAiB;QAEjB,MAAM,SAAS,GAAc;YAC3B,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,WAAW;YACpB,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAC;YACxC,kBAAkB,EAAE;gBAClB,IAAI,EAAE,WAAW;gBACjB,cAAc,EAAE,IAAI,CAAC,IAAI;aAC1B;YACD,MAAM,EAAE,EAAE;SACX,CAAC;QACF,yCAAyC;QAEzC,gBAAgB;QAChB,uCAAuC;QACvC,KAAK;QACL,uFAAuF;QACvF,2DAA2D;QAC3D,8DAA8D;QAC9D,yCAAyC;QACzC,gBAAgB;QAChB,iBAAiB;QAEjB,MAAM,SAAS,GAAG,kBAAkB,SAAS,EAAE,CAAC;QAEhD,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACjD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAC/B,OAA+B,EAC/B,EAAC,gBAAgB,EAAqB;QAKtC,MAAM,OAAO,GAAoB,EAAE,CAAC;QACpC,MAAM,MAAM,GAA6B,EAAE,CAAC;QAE5C,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;YAC/B,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7C,IACE,CAAC,OAAO;gBACR,CAAC,gBAAgB,IAAI,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,EAC1D,CAAC;gBACD,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpC,MAAM,SAAS,GAAG,gBAAgB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACjD,IAAI,CAAC;oBACH,OAAO,GAAG;wBACR,MAAM,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC;wBACtD,SAAS;qBACV,CAAC;oBACF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC1C,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,GAAG,EAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,4BAA4B,CAAC;YACnE,CAAC;QACH,CAAC;QACD,OAAO,EAAC,OAAO,EAAE,MAAM,EAAC,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,MAAgB;QAC9C,MAAM,SAAS,GAAc;YAC3B,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,WAAW;YACpB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,YAAY,EAAE;gBACZ,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,MAAM;aACjB;YACD,kBAAkB,EAAE;gBAClB,IAAI,EAAE,WAAW;gBACjB,cAAc,EAAE,IAAI,CAAC,IAAI;aAC1B;YACD,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,kDAAkD;QAClD,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CACT;oCAC8B,aAAa,OAAO,MAAM,CAAC,SAAS;OACjE,CACF,CAAC;QAEF,MAAM,SAAS,GAAG,kBAAkB,aAAa,EAAE,CAAC;QACpD,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACjD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,sBAAsB,CACjC,MAAgB,EAChB,EAAC,gBAAgB,EAAqB;QAKtC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,IACE,CAAC,OAAO;YACR,CAAC,gBAAgB,IAAI,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,EAC1D,CAAC;YACD,MAAM,SAAS,GAAG,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACjD,IAAI,CAAC;gBACH,OAAO,GAAG;oBACR,SAAS,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;oBAC/C,SAAS;iBACV,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,GAAG,EAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAC,CAAC;YAC9C,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,UAAkB;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,gCAAgC,SAAS,QAAQ,UAAU,IAAI,CAAC;QAC5E,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AA1QD,kDA0QC"}
@@ -143,16 +143,12 @@ class SnowflakeExecutor {
143
143
  }
144
144
  async _setSessionParams(conn) {
145
145
  // set some default session parameters
146
- // this is quite imporant for snowflake because malloy tends to add quotes to all database identifiers
147
- // and snowflake is case sensitive by with quotes but matches against all caps identifiers without quotes
148
- // await this._execute(
149
- // 'ALTER SESSION SET QUOTED_IDENTIFIERS_IGNORE_CASE = true;',
150
- // conn
151
- // );
152
146
  // set utc as the default timezone which is the malloy convention
153
147
  await this._execute("ALTER SESSION SET TIMEZONE = 'UTC';", conn);
154
148
  // ensure week starts on Sunday which is the malloy convention
155
149
  await this._execute('ALTER SESSION SET WEEK_START = 7;', conn);
150
+ // so javascript can parse the dates
151
+ await this._execute("ALTER SESSION SET TIMESTAMP_NTZ_OUTPUT_FORMAT='YYYY-MM-DDTHH24:MI:SS.FF3TZH:TZM';", conn);
156
152
  }
157
153
  async batch(sqlText) {
158
154
  return await this.pool_.use(async (conn) => {
@@ -1 +1 @@
1
- {"version":3,"file":"snowflake_executor.js","sourceRoot":"","sources":["../src/snowflake_executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snowflake_executor.js","sourceRoot":"","sources":["../src/snowflake_executor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@malloydata/db-snowflake",
3
- "version": "0.0.127-dev240308180053",
3
+ "version": "0.0.127",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -21,7 +21,7 @@
21
21
  "prepublishOnly": "npm run build"
22
22
  },
23
23
  "dependencies": {
24
- "@malloydata/malloy": "^0.0.127-dev240308180053",
24
+ "@malloydata/malloy": "^0.0.127",
25
25
  "@types/snowflake-sdk": "^1.6.16",
26
26
  "generic-pool": "^3.9.0",
27
27
  "snowflake-sdk": "^1.9.0",
@@ -131,13 +131,9 @@ export class SnowflakeConnection
131
131
  await this.executor.done();
132
132
  }
133
133
 
134
- private getTempTableName(sqlCommand: string): string {
134
+ private getTempViewName(sqlCommand: string): string {
135
135
  const hash = crypto.createHash('md5').update(sqlCommand).digest('hex');
136
- let tableName = `tt${hash}`;
137
- if (this.scratchSpace) {
138
- tableName = `${this.scratchSpace.database}.${this.scratchSpace.schema}.${tableName}`;
139
- }
140
- return tableName;
136
+ return `tt${hash}`;
141
137
  }
142
138
 
143
139
  public async runSQL(
@@ -179,10 +175,12 @@ export class SnowflakeConnection
179
175
  ): Promise<void> {
180
176
  const rows = await this.executor.batch(infoQuery);
181
177
  for (const row of rows) {
182
- const snowflakeDataType = row['DATA_TYPE'] as string;
178
+ // data types look like `VARCHAR(1234)`
179
+ let snowflakeDataType = row['type'] as string;
180
+ snowflakeDataType = snowflakeDataType.toLocaleLowerCase().split('(')[0];
183
181
  const s = structDef;
184
182
  const malloyType = this.dialect.sqlTypeToMalloyType(snowflakeDataType);
185
- const name = row['COLUMN_NAME'] as string;
183
+ const name = row['name'] as string;
186
184
  if (malloyType) {
187
185
  s.fields.push({...malloyType, name});
188
186
  } else {
@@ -199,15 +197,6 @@ export class SnowflakeConnection
199
197
  tableKey: string,
200
198
  tablePath: string
201
199
  ): Promise<StructDef> {
202
- // looks like snowflake:schemaName.tableName
203
- tableKey = tableKey.toLowerCase();
204
-
205
- let [schema, tableName] = ['', tablePath];
206
- const schema_and_table = tablePath.split('.');
207
- if (schema_and_table.length === 2) {
208
- [schema, tableName] = schema_and_table;
209
- }
210
-
211
200
  const structDef: StructDef = {
212
201
  type: 'struct',
213
202
  dialect: 'snowflake',
@@ -231,16 +220,7 @@ export class SnowflakeConnection
231
220
  // GROUP BY 1,2
232
221
  // ORDER BY PATH
233
222
 
234
- const infoQuery = `
235
- SELECT
236
- column_name, -- LOWER(COLUMN_NAME) AS column_name,
237
- LOWER(DATA_TYPE) as data_type
238
- FROM
239
- INFORMATION_SCHEMA.COLUMNS
240
- WHERE
241
- table_schema = UPPER('${schema}')
242
- AND table_name = UPPER('${tableName}');
243
- `;
223
+ const infoQuery = `DESCRIBE TABLE ${tablePath}`;
244
224
 
245
225
  await this.schemaFromQuery(infoQuery, structDef);
246
226
  return structDef;
@@ -301,24 +281,14 @@ export class SnowflakeConnection
301
281
  };
302
282
 
303
283
  // create temp table with same schema as the query
304
- const tempTableName = this.getTempTableName(sqlRef.selectStr);
284
+ const tempTableName = this.getTempViewName(sqlRef.selectStr);
305
285
  this.runSQL(
306
286
  `
307
- CREATE OR REPLACE TEMP TABLE ${tempTableName} as SELECT * FROM (
308
- ${sqlRef.selectStr}
309
- ) as x WHERE false;
287
+ CREATE OR REPLACE TEMP VIEW ${tempTableName} as ${sqlRef.selectStr};
310
288
  `
311
289
  );
312
290
 
313
- const infoQuery = `
314
- SELECT
315
- column_name, -- LOWER(column_name) as column_name,
316
- LOWER(data_type) as data_type
317
- FROM
318
- INFORMATION_SCHEMA.COLUMNS
319
- WHERE
320
- table_name = UPPER('${tempTableName}');
321
- `;
291
+ const infoQuery = `DESCRIBE TABLE ${tempTableName}`;
322
292
  await this.schemaFromQuery(infoQuery, structDef);
323
293
  return structDef;
324
294
  }
@@ -351,7 +321,7 @@ export class SnowflakeConnection
351
321
  }
352
322
 
353
323
  public async manifestTemporaryTable(sqlCommand: string): Promise<string> {
354
- const tableName = this.getTempTableName(sqlCommand);
324
+ const tableName = this.getTempViewName(sqlCommand);
355
325
  const cmd = `CREATE OR REPLACE TEMP TABLE ${tableName} AS (${sqlCommand});`;
356
326
  await this.runSQL(cmd);
357
327
  return tableName;
@@ -170,16 +170,15 @@ export class SnowflakeExecutor {
170
170
 
171
171
  private async _setSessionParams(conn: Connection) {
172
172
  // set some default session parameters
173
- // this is quite imporant for snowflake because malloy tends to add quotes to all database identifiers
174
- // and snowflake is case sensitive by with quotes but matches against all caps identifiers without quotes
175
- // await this._execute(
176
- // 'ALTER SESSION SET QUOTED_IDENTIFIERS_IGNORE_CASE = true;',
177
- // conn
178
- // );
179
173
  // set utc as the default timezone which is the malloy convention
180
174
  await this._execute("ALTER SESSION SET TIMEZONE = 'UTC';", conn);
181
175
  // ensure week starts on Sunday which is the malloy convention
182
176
  await this._execute('ALTER SESSION SET WEEK_START = 7;', conn);
177
+ // so javascript can parse the dates
178
+ await this._execute(
179
+ "ALTER SESSION SET TIMESTAMP_NTZ_OUTPUT_FORMAT='YYYY-MM-DDTHH24:MI:SS.FF3TZH:TZM';",
180
+ conn
181
+ );
183
182
  }
184
183
 
185
184
  public async batch(sqlText: string): Promise<QueryData> {