@balena/abstract-sql-compiler 11.0.0-build-11-x-db9cd30f6ec498e5293df9e060f5531cd960b1cc-1 → 11.0.0-build-11-x-1d6801364e84c467215b1a2bd54345172071bdc2-1

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.
Files changed (47) hide show
  1. package/.versionbot/CHANGELOG.yml +134 -4
  2. package/CHANGELOG.md +33 -2
  3. package/out/{AbstractSQLCompiler.d.ts → abstract-sql-compiler.d.ts} +55 -13
  4. package/out/{AbstractSQLCompiler.js → abstract-sql-compiler.js} +37 -19
  5. package/out/abstract-sql-compiler.js.map +1 -0
  6. package/out/abstract-sql-optimizer.d.ts +2 -0
  7. package/out/{AbstractSQLOptimiser.js → abstract-sql-optimizer.js} +35 -13
  8. package/out/abstract-sql-optimizer.js.map +1 -0
  9. package/out/{AbstractSQLRules2SQL.d.ts → abstract-sql-rules-to-sql.d.ts} +2 -2
  10. package/out/{AbstractSQLRules2SQL.js → abstract-sql-rules-to-sql.js} +74 -45
  11. package/out/abstract-sql-rules-to-sql.js.map +1 -0
  12. package/out/{AbstractSQLSchemaOptimiser.d.ts → abstract-sql-schema-optimizer.d.ts} +5 -3
  13. package/out/{AbstractSQLSchemaOptimiser.js → abstract-sql-schema-optimizer.js} +11 -9
  14. package/out/abstract-sql-schema-optimizer.js.map +1 -0
  15. package/out/referenced-fields.d.ts +1 -1
  16. package/out/referenced-fields.js +53 -4
  17. package/out/referenced-fields.js.map +1 -1
  18. package/package.json +14 -14
  19. package/src/{AbstractSQLCompiler.ts → abstract-sql-compiler.ts} +29 -38
  20. package/src/{AbstractSQLOptimiser.ts → abstract-sql-optimizer.ts} +21 -22
  21. package/src/{AbstractSQLRules2SQL.ts → abstract-sql-rules-to-sql.ts} +12 -6
  22. package/src/{AbstractSQLSchemaOptimiser.ts → abstract-sql-schema-optimizer.ts} +10 -18
  23. package/src/referenced-fields.ts +5 -5
  24. package/test/abstract-sql/case-when-else.ts +1 -1
  25. package/test/abstract-sql/dates.ts +23 -0
  26. package/test/abstract-sql/empty-query-optimisations.ts +1 -1
  27. package/test/abstract-sql/get-referenced-fields.ts +1 -1
  28. package/test/abstract-sql/get-rule-referenced-fields.ts +1 -1
  29. package/test/abstract-sql/schema-checks.ts +1 -1
  30. package/test/abstract-sql/schema-informative-reference.ts +19 -19
  31. package/test/abstract-sql/schema-rule-optimization.ts +2 -2
  32. package/test/abstract-sql/schema-rule-to-check.ts +6 -6
  33. package/test/abstract-sql/schema-views.ts +1 -1
  34. package/test/abstract-sql/test.ts +1 -1
  35. package/test/odata/filterby.ts +12 -12
  36. package/test/odata/{resource_parsing.ts → resource-parsing.ts} +3 -3
  37. package/test/odata/test.ts +1 -1
  38. package/test/sbvr/pilots.ts +12 -12
  39. package/test/sbvr/reference-type.ts +16 -16
  40. package/test/sbvr/test.ts +1 -1
  41. package/tsconfig.json +0 -1
  42. package/out/AbstractSQLCompiler.js.map +0 -1
  43. package/out/AbstractSQLOptimiser.d.ts +0 -2
  44. package/out/AbstractSQLOptimiser.js.map +0 -1
  45. package/out/AbstractSQLRules2SQL.js.map +0 -1
  46. package/out/AbstractSQLSchemaOptimiser.js.map +0 -1
  47. /package/test/abstract-sql/{functions_wrapper.ts → functions-wrapper.ts} +0 -0
@@ -1,6 +1,6 @@
1
- import { isAliasNode, isFromNode, isSelectNode, isSelectQueryNode, isTableNode, isWhereNode, } from './AbstractSQLCompiler.js';
2
- import { AbstractSQLOptimiser } from './AbstractSQLOptimiser.js';
3
- import { isAbstractSqlQuery } from './AbstractSQLRules2SQL.js';
1
+ import { isAliasNode, isFromNode, isSelectNode, isSelectQueryNode, isTableNode, isWhereNode, } from './abstract-sql-compiler.js';
2
+ import { AbstractSQLOptimizer } from './abstract-sql-optimizer.js';
3
+ import { isAbstractSqlQuery } from './abstract-sql-rules-to-sql.js';
4
4
  export const getReferencedFields = (ruleBody) => {
5
5
  const referencedFields = getRuleReferencedFields(ruleBody);
6
6
  const result = {};
@@ -32,6 +32,9 @@ const getRuleReferencedScope = (rulePart, scope, isSafe) => {
32
32
  scope[alias] = { tableName: from[1], isSafe };
33
33
  break;
34
34
  case 'SelectQuery':
35
+ // Ignore SelectQuery in the From as we'll handle any fields it selects
36
+ // when we recurse in. With true scope handling however we could prune
37
+ // fields that don't affect the end result and avoid false positives
35
38
  scope[alias] = { tableName: '', isSafe };
36
39
  break;
37
40
  default:
@@ -50,6 +53,8 @@ const getRuleReferencedScope = (rulePart, scope, isSafe) => {
50
53
  };
51
54
  const addReference = (referencedFields, scope, aliasName, fieldName) => {
52
55
  const a = scope[aliasName];
56
+ // The scoped tableName is empty in the case of an aliased from query
57
+ // and those fields will be covered when we recurse into them
53
58
  if (a.tableName !== '') {
54
59
  referencedFields[a.tableName] ??= {
55
60
  create: [],
@@ -74,6 +79,7 @@ const $getRuleReferencedFields = (referencedFields, rulePart, isSafe, { scope, c
74
79
  }
75
80
  switch (rulePart[0]) {
76
81
  case 'SelectQuery':
82
+ // Update the current scope before trying to resolve field references
77
83
  ({ scope, currentlyScopedAliases } = getRuleReferencedScope(rulePart, scope, isSafe));
78
84
  rulePart.forEach((node) => {
79
85
  $getRuleReferencedFields(referencedFields, node, isSafe, {
@@ -96,18 +102,21 @@ const $getRuleReferencedFields = (referencedFields, rulePart, isSafe, { scope, c
96
102
  throw new Error(`Invalid ReferencedField: ${rulePart}`);
97
103
  }
98
104
  for (const aliasName of Object.keys(scope)) {
105
+ // We assume any unreferenced field can come from any of the scoped tables
99
106
  addReference(referencedFields, scope, aliasName, fieldName);
100
107
  }
101
108
  return;
102
109
  }
103
110
  case 'Not':
104
111
  case 'NotExists':
112
+ // When hitting a `Not` we invert the safety rule
105
113
  if (isSafe === IsSafe.Insert) {
106
114
  isSafe = IsSafe.Delete;
107
115
  }
108
116
  else if (isSafe === IsSafe.Delete) {
109
117
  isSafe = IsSafe.Insert;
110
118
  }
119
+ // eslint-disable-next-line no-fallthrough -- Fallthrough
111
120
  case 'Where':
112
121
  case 'And':
113
122
  case 'Exists':
@@ -121,6 +130,8 @@ const $getRuleReferencedFields = (referencedFields, rulePart, isSafe, { scope, c
121
130
  case 'Having':
122
131
  scope = { ...scope };
123
132
  for (const key of Object.keys(scope)) {
133
+ // Treat all entries under a `HAVING` as unknown since it can include counts in such a way
134
+ // that our expectations of safety do not hold
124
135
  scope[key] = { ...scope[key], isSafe: IsSafe.Unknown };
125
136
  }
126
137
  rulePart.forEach((node) => {
@@ -135,6 +146,7 @@ const $getRuleReferencedFields = (referencedFields, rulePart, isSafe, { scope, c
135
146
  throw new Error('Only COUNT(*) is supported for rule referenced fields');
136
147
  }
137
148
  for (const aliasName of currentlyScopedAliases) {
149
+ // We use '' as it means that only operations that affect every field will match against it
138
150
  addReference(referencedFields, scope, aliasName, '');
139
151
  }
140
152
  return;
@@ -148,7 +160,7 @@ const $getRuleReferencedFields = (referencedFields, rulePart, isSafe, { scope, c
148
160
  }
149
161
  };
150
162
  export const getRuleReferencedFields = (ruleBody) => {
151
- ruleBody = AbstractSQLOptimiser(ruleBody);
163
+ ruleBody = AbstractSQLOptimizer(ruleBody);
152
164
  const referencedFields = {};
153
165
  if (ruleBody[0] === 'Equals' &&
154
166
  ruleBody[2][0] === 'Number' &&
@@ -187,6 +199,7 @@ const checkQuery = (query) => {
187
199
  tableName = table[1];
188
200
  }
189
201
  else if (typeof table === 'string') {
202
+ // Deprecated: Remove this when we drop implicit tables
190
203
  tableName = table;
191
204
  }
192
205
  else {
@@ -214,15 +227,22 @@ export const getModifiedFields = (abstractSqlQuery) => {
214
227
  return checkQuery(abstractSqlQuery);
215
228
  }
216
229
  };
230
+ // TS requires this to be a funtion declaration
217
231
  function assertAbstractSqlIsNotLegacy(abstractSql) {
218
232
  if (!isAbstractSqlQuery(abstractSql)) {
219
233
  throw new Error('cannot introspect into the string form of AbstractSqlQuery');
220
234
  }
221
235
  }
236
+ // Find how many times an abstract sql fragment selects from the given table
237
+ // TODO:
238
+ // - Not all abstract sql nodes are supported here yet but hopefully nothing
239
+ // important is missing atm
240
+ // - Create missing node types
222
241
  const countTableSelects = (abstractSql, table) => {
223
242
  assertAbstractSqlIsNotLegacy(abstractSql);
224
243
  let sum = 0;
225
244
  switch (abstractSql[0]) {
245
+ // Unary nodes
226
246
  case 'Alias':
227
247
  case 'Any':
228
248
  case 'Average':
@@ -242,6 +262,7 @@ const countTableSelects = (abstractSql, table) => {
242
262
  assertAbstractSqlIsNotLegacy(unaryOperation[1]);
243
263
  return countTableSelects(unaryOperation[1], table);
244
264
  }
265
+ // `COUNT` is an unary function but we only support the `COUNT(*)` form
245
266
  case 'Count': {
246
267
  const countNode = abstractSql;
247
268
  if (countNode[1] !== '*') {
@@ -249,6 +270,7 @@ const countTableSelects = (abstractSql, table) => {
249
270
  }
250
271
  return 0;
251
272
  }
273
+ // Binary nodes
252
274
  case 'AddDateDuration':
253
275
  case 'AddDateNumber':
254
276
  case 'DateTrunc':
@@ -272,6 +294,7 @@ const countTableSelects = (abstractSql, table) => {
272
294
  return (countTableSelects(leftOperand, table) +
273
295
  countTableSelects(rightOperand, table));
274
296
  }
297
+ // Binary nodes with optional `ON` second argument
275
298
  case 'FullJoin':
276
299
  case 'Join':
277
300
  case 'LeftJoin':
@@ -284,6 +307,7 @@ const countTableSelects = (abstractSql, table) => {
284
307
  }
285
308
  return sum + countTableSelects(joinNode[1], table);
286
309
  }
310
+ // n-ary nodes
287
311
  case 'And':
288
312
  case 'Or':
289
313
  case 'SelectQuery':
@@ -296,6 +320,7 @@ const countTableSelects = (abstractSql, table) => {
296
320
  }
297
321
  return sum;
298
322
  }
323
+ // n-ary nodes but the slice starts at the third argument
299
324
  case 'In':
300
325
  case 'NotIn': {
301
326
  const inNode = abstractSql;
@@ -305,6 +330,7 @@ const countTableSelects = (abstractSql, table) => {
305
330
  }
306
331
  return sum;
307
332
  }
333
+ // n-ary-like node
308
334
  case 'Select': {
309
335
  const selectNode = abstractSql;
310
336
  for (const arg of selectNode[1]) {
@@ -313,6 +339,7 @@ const countTableSelects = (abstractSql, table) => {
313
339
  }
314
340
  return sum;
315
341
  }
342
+ // Uninteresting atomic nodes
316
343
  case 'Boolean':
317
344
  case 'Date':
318
345
  case 'Duration':
@@ -324,6 +351,7 @@ const countTableSelects = (abstractSql, table) => {
324
351
  case 'ReferencedField':
325
352
  case 'Text':
326
353
  return 0;
354
+ // The atomic node we're looking for: a table selection
327
355
  case 'Table': {
328
356
  const tableNode = abstractSql;
329
357
  if (tableNode[1] === table) {
@@ -337,6 +365,24 @@ const countTableSelects = (abstractSql, table) => {
337
365
  throw new Error(`unknown abstract sql type: ${abstractSql[0]}`);
338
366
  }
339
367
  };
368
+ // TODO:
369
+ // - This function only narrows the root table of the rule. This is always
370
+ // safe when the root table isn't selected from more than once and it is not
371
+ // negated in the LF. Right now we conservatively check for the former but
372
+ // not the second. The negative forms (e.g. it is forbidden that ...) are
373
+ // not fully supported anyway.
374
+ // - Removing multiple candidates selecting from the same database table to
375
+ // avoid visibility issues is too conservative. The correct criteria is to
376
+ // just remove any that are present in at least 2 disjoint subqueries.
377
+ // Because in this case the problem is that in those cases there is not a
378
+ // single place in the query that has visibility inside both disjoint
379
+ // subqueries and that is a requirement for adding the corrent binds for
380
+ // narrowing.
381
+ // - We assume the ID column is named "id".
382
+ // - This is a very restricted implementation of narrowing which could be
383
+ // expanded to cover more situations.
384
+ //
385
+ // This function modifies `abstractSql` in place.
340
386
  export const insertAffectedIdsBinds = (abstractSql, lfRuleInfo) => {
341
387
  const rootTableSelectCount = countTableSelects(abstractSql, lfRuleInfo.root.table);
342
388
  if (rootTableSelectCount !== 1) {
@@ -351,6 +397,9 @@ export const insertAffectedIdsBinds = (abstractSql, lfRuleInfo) => {
351
397
  ['Any', ['Bind', lfRuleInfo.root.table], 'Integer'],
352
398
  ],
353
399
  ];
400
+ // Assume (but check) that the query is of the form:
401
+ //
402
+ // SELECT (SELECT COUNT(*) ...) = 0
354
403
  if (abstractSql[0] !== 'Equals' ||
355
404
  abstractSql[1][0] !== 'SelectQuery' ||
356
405
  abstractSql[2][0] !== 'Number') {
@@ -1 +1 @@
1
- {"version":3,"file":"referenced-fields.js","sourceRoot":"","sources":["../src/referenced-fields.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"referenced-fields.js","sourceRoot":"","sources":["../src/referenced-fields.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@balena/abstract-sql-compiler",
3
- "version": "11.0.0-build-11-x-db9cd30f6ec498e5293df9e060f5531cd960b1cc-1",
3
+ "version": "11.0.0-build-11-x-1d6801364e84c467215b1a2bd54345172071bdc2-1",
4
4
  "description": "A translator for abstract sql into sql.",
5
5
  "type": "module",
6
- "main": "out/AbstractSQLCompiler.js",
7
- "types": "out/AbstractSQLCompiler.d.ts",
6
+ "main": "out/abstract-sql-compiler.js",
7
+ "types": "out/abstract-sql-compiler.d.ts",
8
8
  "scripts": {
9
9
  "build": "tsc --project ./tsconfig.build.json",
10
10
  "pretest": "npm run build",
@@ -17,27 +17,27 @@
17
17
  "repository": "https://github.com/balena-io-modules/abstract-sql-compiler.git",
18
18
  "author": "",
19
19
  "peerDependencies": {
20
- "@balena/sbvr-types": "^7.1.0 || ^8.0.0 || ^9.0.2 || ^10.0.0"
20
+ "@balena/sbvr-types": "^7.1.0 || ^8.0.0 || ^9.0.2 || ^10.0.0 || ^11.0.0"
21
21
  },
22
22
  "devDependencies": {
23
- "@balena/lf-to-abstract-sql": "^5.0.4",
24
- "@balena/lint": "^9.1.6",
23
+ "@balena/lf-to-abstract-sql": "^5.0.9",
24
+ "@balena/lint": "^9.3.2",
25
25
  "@balena/odata-parser": "^3.1.2",
26
- "@balena/odata-to-abstract-sql": "^7.2.0",
27
- "@balena/sbvr-parser": "^1.4.9",
26
+ "@balena/odata-to-abstract-sql": "^8.0.1",
27
+ "@balena/sbvr-parser": "^1.4.12",
28
28
  "@types/chai": "^4.3.20",
29
29
  "@types/common-tags": "^1.8.4",
30
- "@types/lodash": "^4.17.16",
30
+ "@types/lodash": "^4.17.20",
31
31
  "@types/mocha": "^10.0.10",
32
- "@types/node": "^20.17.30",
32
+ "@types/node": "^20.19.8",
33
33
  "chai": "^4.5.0",
34
34
  "common-tags": "^1.8.2",
35
35
  "husky": "^9.1.7",
36
- "lint-staged": "^16.0.0",
36
+ "lint-staged": "^16.1.2",
37
37
  "lodash": "^4.17.21",
38
- "mocha": "^11.2.0",
38
+ "mocha": "^11.7.1",
39
39
  "ts-node": "^10.9.2",
40
- "typescript": "^5.8.2"
40
+ "typescript": "^5.8.3"
41
41
  },
42
42
  "lint-staged": {
43
43
  "*.ts": [
@@ -56,6 +56,6 @@
56
56
  "npm": ">=10.7.0"
57
57
  },
58
58
  "versionist": {
59
- "publishedAt": "2025-07-03T14:10:41.331Z"
59
+ "publishedAt": "2025-07-16T14:26:48.746Z"
60
60
  }
61
61
  }
@@ -6,17 +6,17 @@ export const enum Engines {
6
6
  /* eslint-enable @typescript-eslint/no-shadow */
7
7
  }
8
8
 
9
- import { AbstractSQLOptimiser } from './AbstractSQLOptimiser.js';
10
- import type { Binding, SqlResult } from './AbstractSQLRules2SQL.js';
11
- import { AbstractSQLRules2SQL } from './AbstractSQLRules2SQL.js';
12
- export { Binding, SqlResult } from './AbstractSQLRules2SQL.js';
9
+ import { AbstractSQLOptimizer } from './abstract-sql-optimizer.js';
10
+ import type { Binding, SqlResult } from './abstract-sql-rules-to-sql.js';
11
+ import { AbstractSQLRules2SQL } from './abstract-sql-rules-to-sql.js';
12
+ export { Binding, SqlResult } from './abstract-sql-rules-to-sql.js';
13
13
  import type { SbvrType } from '@balena/sbvr-types';
14
14
  import $sbvrTypes from '@balena/sbvr-types';
15
15
  const { default: sbvrTypes } = $sbvrTypes;
16
16
  import {
17
17
  optimizeSchema,
18
18
  generateRuleSlug,
19
- } from './AbstractSQLSchemaOptimiser.js';
19
+ } from './abstract-sql-schema-optimizer.js';
20
20
  import type {
21
21
  ReferencedFields,
22
22
  RuleReferencedFields,
@@ -178,7 +178,9 @@ export type NumberTypeNodes = StrictNumberTypeNodes | UnknownTypeNodes;
178
178
 
179
179
  export type FieldNode = ['Field', string];
180
180
  export type ReferencedFieldNode = ['ReferencedField', string, string];
181
- export type DateTruncNode = ['DateTrunc', TextTypeNodes, DateTypeNodes];
181
+ export type DateTruncNode =
182
+ | ['DateTrunc', TextTypeNodes, DateTypeNodes]
183
+ | ['DateTrunc', TextTypeNodes, DateTypeNodes, TextTypeNodes];
182
184
  export type ToDateNode = ['ToDate', DateTypeNodes];
183
185
  export type ToTimeNode = ['ToTime', DateTypeNodes];
184
186
  export type CurrentTimestampNode = ['CurrentTimestamp'];
@@ -236,14 +238,7 @@ export type CaseNode =
236
238
  | ['Case', ...WhenNode[]]
237
239
  | ['Case', ...WhenNode[], ElseNode];
238
240
 
239
- /**
240
- * @deprecated This gets converted to the `['Bind', [string, string]]` form during compilation
241
- */
242
- type BackCompatBindNode = ['Bind', string, string];
243
- export type BindNode =
244
- | ['Bind', number | string]
245
- | ['Bind', [string, string]]
246
- | BackCompatBindNode;
241
+ export type BindNode = ['Bind', number | string] | ['Bind', [string, string]];
247
242
  export type CastNode = ['Cast', AnyTypeNodes, string];
248
243
  export type CoalesceNode = [
249
244
  'Coalesce',
@@ -258,7 +253,6 @@ export type UnknownTypeNodes =
258
253
  | NullNode
259
254
  | FieldNode
260
255
  | ReferencedFieldNode
261
- | EqualsAnyNode
262
256
  | BindNode
263
257
  | CastNode
264
258
  | CaseNode
@@ -383,11 +377,6 @@ export type FromTypeNodes =
383
377
  | FromTypeNode[keyof FromTypeNode]
384
378
  | AliasNode<FromTypeNode[keyof FromTypeNode]>;
385
379
 
386
- /**
387
- * @deprecated `FromTypeNodes` already includes aliased versions
388
- */
389
- export type AliasableFromTypeNodes = FromTypeNodes;
390
-
391
380
  export type SelectNode = ['Select', AnyTypeNodes[]];
392
381
  export type FromNode = ['From', FromTypeNodes];
393
382
  export type InnerJoinNode = ['Join', FromTypeNodes, OnNode?];
@@ -458,7 +447,7 @@ export interface AbstractSqlField {
458
447
  type?: string;
459
448
  };
460
449
  defaultValue?: string;
461
- computed?: AbstractSqlQuery;
450
+ computed?: AnyTypeNodes;
462
451
  checks?: BooleanTypeNodes[];
463
452
  }
464
453
  export interface Trigger {
@@ -540,7 +529,9 @@ export interface AbstractSqlModel {
540
529
  tables: {
541
530
  [resourceName: string]: AbstractSqlTable;
542
531
  };
543
- rules: AbstractSqlQuery[];
532
+ rules: Array<
533
+ ['Rule', ['Body', AbstractSqlQuery], ['StructuredEnglish', string]]
534
+ >;
544
535
  functions?: Record<
545
536
  string,
546
537
  {
@@ -691,7 +682,7 @@ export const isFieldTypeNode = (
691
682
  * @param n The abstract sql to check
692
683
  * @param checkNodeTypeFn A function that checks if a given node is the correct type
693
684
  */
694
- const containsNode = (
685
+ export const abstractSqlContainsNode = (
695
686
  n: AnyTypeNodes,
696
687
  checkNodeTypeFn: (n: AnyTypeNodes) => boolean,
697
688
  ): boolean => {
@@ -699,7 +690,10 @@ const containsNode = (
699
690
  return true;
700
691
  }
701
692
  for (const p of n) {
702
- if (Array.isArray(p) && containsNode(p as AnyTypeNodes, checkNodeTypeFn)) {
693
+ if (
694
+ Array.isArray(p) &&
695
+ abstractSqlContainsNode(p as AnyTypeNodes, checkNodeTypeFn)
696
+ ) {
703
697
  return true;
704
698
  }
705
699
  }
@@ -746,7 +740,7 @@ export function compileRule(
746
740
  engine: Engines,
747
741
  noBinds = false,
748
742
  ): SqlResult | [SqlResult, SqlResult] | string | [string, string] {
749
- abstractSQL = AbstractSQLOptimiser(abstractSQL, noBinds);
743
+ abstractSQL = AbstractSQLOptimizer(abstractSQL, noBinds);
750
744
  return AbstractSQLRules2SQL(abstractSQL, engine, noBinds);
751
745
  }
752
746
 
@@ -755,7 +749,9 @@ const compileSchema = (
755
749
  engine: Engines,
756
750
  ifNotExists: boolean,
757
751
  ): SqlModel => {
758
- abstractSqlModel = optimizeSchema(abstractSqlModel, false);
752
+ abstractSqlModel = optimizeSchema(abstractSqlModel, {
753
+ createCheckConstraints: false,
754
+ });
759
755
 
760
756
  let ifNotExistsStr = '';
761
757
  let orReplaceStr = '';
@@ -830,8 +826,10 @@ $$;`);
830
826
  if (viewDefinition != null) {
831
827
  let definitionAbstractSql = viewDefinition.abstractSql;
832
828
  // If there are any resource nodes then it's a dynamic definition and cannot become a view
833
- if (containsNode(definitionAbstractSql, isResourceNode)) {
834
- return;
829
+ if (abstractSqlContainsNode(definitionAbstractSql, isResourceNode)) {
830
+ throw new Error(
831
+ `Cannot create a view from a dynamic viewDefinition, found for table resourceName: '${table.resourceName}', name: '${table.name}'`,
832
+ );
835
833
  }
836
834
  if (isTableNode(definitionAbstractSql)) {
837
835
  // If the definition is a table node we need to wrap it in a select query for the view creation
@@ -1063,22 +1061,15 @@ CREATE TABLE ${ifNotExistsStr}"${table.name}" (
1063
1061
 
1064
1062
  const ruleStatements: SqlRule[] = abstractSqlModel.rules.map(
1065
1063
  (rule): SqlRule => {
1066
- const ruleBodyNode = rule.find((r) => r[0] === 'Body') as [
1067
- 'Body',
1068
- AbstractSqlQuery,
1069
- ];
1070
- if (ruleBodyNode == null || typeof ruleBodyNode === 'string') {
1064
+ const [, ruleBodyNode, ruleSENode] = rule;
1065
+ if (ruleBodyNode == null || ruleBodyNode[0] !== 'Body') {
1071
1066
  throw new Error('Invalid rule');
1072
1067
  }
1073
1068
  const ruleBody = ruleBodyNode[1];
1074
1069
  if (typeof ruleBody === 'string') {
1075
1070
  throw new Error('Invalid rule');
1076
1071
  }
1077
- const ruleSENode = rule.find((r) => r[0] === 'StructuredEnglish') as [
1078
- 'StructuredEnglish',
1079
- string,
1080
- ];
1081
- if (ruleSENode == null) {
1072
+ if (ruleSENode == null || ruleSENode[0] !== 'StructuredEnglish') {
1082
1073
  throw new Error('Invalid structured English');
1083
1074
  }
1084
1075
  const ruleSE = ruleSENode[1];
@@ -25,7 +25,6 @@ import type {
25
25
  CrossJoinNode,
26
26
  CurrentDateNode,
27
27
  CurrentTimestampNode,
28
- DateTruncNode,
29
28
  DeleteQueryNode,
30
29
  DivideNode,
31
30
  DurationNode,
@@ -104,9 +103,9 @@ import type {
104
103
  EscapeForLikeNode,
105
104
  EqualsAnyNode,
106
105
  NotInNode,
107
- } from './AbstractSQLCompiler.js';
108
- import { isFieldTypeNode } from './AbstractSQLCompiler.js';
109
- import * as AbstractSQLRules2SQL from './AbstractSQLRules2SQL.js';
106
+ } from './abstract-sql-compiler.js';
107
+ import { isFieldTypeNode } from './abstract-sql-compiler.js';
108
+ import * as AbstractSQLRules2SQL from './abstract-sql-rules-to-sql.js';
110
109
 
111
110
  const {
112
111
  isAbstractSqlQuery,
@@ -217,7 +216,6 @@ const UnknownValue: MetaMatchFn<UnknownTypeNodes> = (args) => {
217
216
  case 'Null':
218
217
  case 'Field':
219
218
  case 'ReferencedField':
220
- case 'EqualsAny':
221
219
  case 'Bind':
222
220
  case 'Cast':
223
221
  case 'Case':
@@ -884,7 +882,16 @@ const typeRules = {
884
882
  Floor: matchArgs<FloorNode>('Floor', NumericValue),
885
883
  Ceiling: matchArgs<CeilingNode>('Ceiling', NumericValue),
886
884
  ToDate: matchArgs<ToDateNode>('ToDate', DateValue),
887
- DateTrunc: matchArgs<DateTruncNode>('DateTrunc', TextValue, DateValue),
885
+ DateTrunc: (args) => {
886
+ checkMinArgs('DateTrunc', args, 2);
887
+ const precision = TextValue(getAbstractSqlQuery(args, 0));
888
+ const date = DateValue(getAbstractSqlQuery(args, 1));
889
+ const timeZone =
890
+ args.length === 3 ? TextValue(getAbstractSqlQuery(args, 2)) : undefined;
891
+ return timeZone
892
+ ? ['DateTrunc', precision, date, timeZone]
893
+ : ['DateTrunc', precision, date];
894
+ },
888
895
  ToTime: matchArgs<ToTimeNode>('ToTime', DateValue),
889
896
  ExtractJSONPathAsText: (args): ExtractJSONPathAsTextNode => {
890
897
  checkMinArgs('ExtractJSONPathAsText', args, 1);
@@ -1209,21 +1216,13 @@ const typeRules = {
1209
1216
  ];
1210
1217
  },
1211
1218
  ),
1212
- Bind: tryMatches<BindNode>(
1213
- Helper<OptimisationMatchFn<BindNode>>((args) => {
1214
- if (args.length !== 2) {
1215
- return false;
1216
- }
1217
- return ['Bind', args] as BindNode;
1218
- }),
1219
- (args) => {
1220
- if (noBinds) {
1221
- throw new SyntaxError('Cannot use a bind whilst they are disabled');
1222
- }
1223
- checkArgs('Bind', args, 1);
1224
- return ['Bind', ...args] as BindNode;
1225
- },
1226
- ),
1219
+ Bind: (args) => {
1220
+ if (noBinds) {
1221
+ throw new SyntaxError('Cannot use a bind whilst they are disabled');
1222
+ }
1223
+ checkArgs('Bind', args, 1);
1224
+ return ['Bind', ...args] as BindNode;
1225
+ },
1227
1226
  Text,
1228
1227
  Value: Text,
1229
1228
  Date: matchArgs('Date', identity),
@@ -1590,7 +1589,7 @@ const typeRules = {
1590
1589
  ),
1591
1590
  } satisfies Record<string, MatchFn<AnyTypeNodes>>;
1592
1591
 
1593
- export const AbstractSQLOptimiser = (
1592
+ export const AbstractSQLOptimizer = (
1594
1593
  abstractSQL: AbstractSqlQuery,
1595
1594
  $noBinds = false,
1596
1595
  ): AbstractSqlQuery => {
@@ -18,8 +18,8 @@ import type {
18
18
  StrictDurationTypeNodes,
19
19
  StrictTextArrayTypeNodes,
20
20
  StrictJSONTypeNodes,
21
- } from './AbstractSQLCompiler.js';
22
- import { Engines, isFieldTypeNode } from './AbstractSQLCompiler.js';
21
+ } from './abstract-sql-compiler.js';
22
+ import { Engines, isFieldTypeNode } from './abstract-sql-compiler.js';
23
23
 
24
24
  export type Binding =
25
25
  | [string, any]
@@ -76,7 +76,6 @@ const UnknownValue: MetaMatchFn = (args, indent) => {
76
76
  case 'Null':
77
77
  case 'Field':
78
78
  case 'ReferencedField':
79
- case 'EqualsAny':
80
79
  case 'Bind':
81
80
  case 'Cast':
82
81
  case 'Case':
@@ -176,7 +175,8 @@ export const isBooleanValue = (
176
175
  type === 'Like' ||
177
176
  type === 'IsNotDistinctFrom' ||
178
177
  type === 'IsDistinctFrom' ||
179
- type === 'StartsWith'
178
+ type === 'StartsWith' ||
179
+ type === 'EqualsAny'
180
180
  );
181
181
  };
182
182
  const BooleanValue = MatchValue(isBooleanValue);
@@ -1208,7 +1208,7 @@ const typeRules: Record<string, MatchFn> = {
1208
1208
  return `DATE(${date})`;
1209
1209
  },
1210
1210
  DateTrunc: (args, indent) => {
1211
- checkArgs('DateTrunc', args, 2);
1211
+ checkMinArgs('DateTrunc', args, 2);
1212
1212
  const precision = TextValue(getAbstractSqlQuery(args, 0), indent);
1213
1213
  const date = DateValue(getAbstractSqlQuery(args, 1), indent);
1214
1214
  // Postgres generated timestamps have a microseconds precision
@@ -1216,7 +1216,13 @@ const typeRules: Record<string, MatchFn> = {
1216
1216
  // js timestamps that have only milliseconds precision
1217
1217
  // thus supporting for truncating to a given precision
1218
1218
  if (engine === Engines.postgres) {
1219
- return `DATE_TRUNC(${precision}, ${date})`;
1219
+ const timeZone =
1220
+ args.length === 3
1221
+ ? TextValue(getAbstractSqlQuery(args, 2), indent)
1222
+ : undefined;
1223
+ return timeZone
1224
+ ? `DATE_TRUNC(${precision}, ${date}, ${timeZone})`
1225
+ : `DATE_TRUNC(${precision}, ${date})`;
1220
1226
  } else if (
1221
1227
  // not postgresql ==> no need to truncate ==> return timestamp as is (milliseconds precision)
1222
1228
  precision === "'milliseconds'" ||