@balena/abstract-sql-compiler 7.22.2 → 7.22.3

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.
@@ -1,3 +1,15 @@
1
+ - commits:
2
+ - subject: "Tests: update @balena/odata-to-abstract-sql to 5.x"
3
+ hash: e93dfd1cbf56a9df248ac199776dca44c71cbc11
4
+ body: ""
5
+ footer:
6
+ Change-type: patch
7
+ change-type: patch
8
+ author: Pagan Gazzard
9
+ nested: []
10
+ version: 7.22.3
11
+ title: ""
12
+ date: 2022-11-30T16:13:57.771Z
1
13
  - commits:
2
14
  - subject: Fix deprecation notice module name
3
15
  hash: 7272a823a00ffd6af52228f2cab4c95e3b3474b9
@@ -9,7 +21,7 @@
9
21
  nested: []
10
22
  version: 7.22.2
11
23
  title: ""
12
- date: 2022-11-30T15:46:42.743Z
24
+ date: 2022-11-30T16:12:20.310Z
13
25
  - commits:
14
26
  - subject: Add deprecation notices to the legacy null formats of `null` and `'Null'`
15
27
  hash: d4a8a31911b80c4c8ad46e5b6567496c232fad9b
package/CHANGELOG.md CHANGED
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file
4
4
  automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
5
5
  This project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
+ ## 7.22.3 - 2022-11-30
8
+
9
+ * Tests: update @balena/odata-to-abstract-sql to 5.x [Pagan Gazzard]
10
+
7
11
  ## 7.22.2 - 2022-11-30
8
12
 
9
13
  * Fix deprecation notice module name [Pagan Gazzard]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@balena/abstract-sql-compiler",
3
- "version": "7.22.2",
3
+ "version": "7.22.3",
4
4
  "description": "A translator for abstract sql into sql.",
5
5
  "main": "out/AbstractSQLCompiler.js",
6
6
  "types": "out/AbstractSQLCompiler.d.ts",
@@ -16,24 +16,24 @@
16
16
  "repository": "https://github.com/balena-io-modules/abstract-sql-compiler.git",
17
17
  "author": "",
18
18
  "dependencies": {
19
- "@balena/sbvr-types": "^3.4.8",
19
+ "@balena/odata-to-abstract-sql": "^5.7.2",
20
+ "@balena/sbvr-types": "^3.4.18",
20
21
  "lodash": "^4.17.21"
21
22
  },
22
23
  "devDependencies": {
23
- "@balena/lf-to-abstract-sql": "^4.5.2",
24
+ "@balena/lf-to-abstract-sql": "^4.5.6",
24
25
  "@balena/lint": "^6.2.1",
25
26
  "@balena/odata-parser": "^2.4.2",
26
- "@balena/sbvr-parser": "^1.4.2",
27
- "@resin/odata-to-abstract-sql": "^3.3.0",
27
+ "@balena/sbvr-parser": "^1.4.3",
28
28
  "@types/chai": "^4.3.4",
29
29
  "@types/common-tags": "^1.8.1",
30
- "@types/lodash": "^4.14.189",
31
- "@types/mocha": "^10.0.0",
30
+ "@types/lodash": "^4.14.190",
31
+ "@types/mocha": "^10.0.1",
32
32
  "@types/node": "^18.11.9",
33
33
  "chai": "^4.3.7",
34
34
  "common-tags": "^1.8.2",
35
- "husky": "^8.0.0",
36
- "lint-staged": "^13.0.3",
35
+ "husky": "^8.0.2",
36
+ "lint-staged": "^13.0.4",
37
37
  "mocha": "^10.1.0",
38
38
  "require-npm4-to-publish": "^1.0.0",
39
39
  "ts-node": "^10.9.1",
@@ -58,6 +58,6 @@
58
58
  ]
59
59
  },
60
60
  "versionist": {
61
- "publishedAt": "2022-11-30T15:46:43.065Z"
61
+ "publishedAt": "2022-11-30T16:13:58.130Z"
62
62
  }
63
63
  }
@@ -285,7 +285,7 @@ SELECT (
285
285
  FROM (
286
286
  SELECT ${fields}
287
287
  FROM "licence" AS "pilot.licence"
288
- WHERE "pilot.licence"."id" = ?
288
+ WHERE ("pilot.licence"."id") IS NOT NULL AND ("pilot.licence"."id") = (?)
289
289
  AND "pilot"."licence" = "pilot.licence"."id"
290
290
  ) AS "pilot.licence"
291
291
  ) AS "licence", ${remainingPilotFields}
@@ -350,7 +350,7 @@ SELECT (
350
350
  FROM "licence" AS "pilot.licence",
351
351
  "pilot" AS "pilot.licence.is of-pilot"
352
352
  WHERE "pilot.licence"."id" = "pilot.licence.is of-pilot"."licence"
353
- AND "pilot.licence.is of-pilot"."id" = ?
353
+ AND ("pilot.licence.is of-pilot"."id") IS NOT NULL AND ("pilot.licence.is of-pilot"."id") = (?)
354
354
  AND "pilot"."licence" = "pilot.licence"."id"
355
355
  ) AS "pilot.licence"
356
356
  ) AS "licence", ${remainingPilotFields}
@@ -7,7 +7,7 @@ const { expect } = require('chai');
7
7
  const test = require('./test');
8
8
  const { clientModel } = test;
9
9
  const _ = require('lodash');
10
- const { odataNameToSqlName } = require('@resin/odata-to-abstract-sql');
10
+ const { odataNameToSqlName } = require('@balena/odata-to-abstract-sql');
11
11
  const {
12
12
  pilotFields,
13
13
  teamFields,
@@ -204,15 +204,40 @@ const createExpression = function (lhs, op, rhs) {
204
204
  lhs = parseOperand(lhs);
205
205
  rhs = parseOperand(rhs);
206
206
  const bindings = lhs.bindings.concat(rhs.bindings);
207
- if (['eq', 'ne'].includes(op) && [lhs.sql, rhs.sql].includes('NULL')) {
208
- const nullCheck = op === 'eq' ? ' IS NULL' : ' IS NOT NULL';
209
- if (lhs.sql === 'NULL') {
210
- sql = rhs.sql + nullCheck;
207
+ if (['eq', 'ne'].includes(op)) {
208
+ if ([lhs.sql, rhs.sql].includes('NULL')) {
209
+ const nullCheck = op === 'eq' ? ' IS NULL' : ' IS NOT NULL';
210
+ if (lhs.sql === 'NULL') {
211
+ sql = rhs.sql + nullCheck;
212
+ } else {
213
+ sql = lhs.sql + nullCheck;
214
+ }
211
215
  } else {
212
- sql = lhs.sql + nullCheck;
216
+ const nullCheck = ' IS NOT NULL';
217
+ const lhsNullCheck =
218
+ lhs.sql === '?' ? '' : `(${lhs.sql})${nullCheck} AND `;
219
+ const rhsNullCheck =
220
+ rhs.sql === '?' ? '' : `(${rhs.sql})${nullCheck} AND `;
221
+ const bothNullCheck =
222
+ lhsNullCheck.length > 0 && rhsNullCheck.length > 0
223
+ ? ` OR (${lhs.sql}) IS NULL AND (${rhs.sql}) IS NULL`
224
+ : '';
225
+
226
+ if (lhsNullCheck.length > 0 || rhsNullCheck.length > 0) {
227
+ if (op === 'ne') {
228
+ const mainCheck = `(${lhs.sql})${sqlOps.eq} (${rhs.sql})`;
229
+ sql = `NOT(${lhsNullCheck}${rhsNullCheck}${mainCheck}${bothNullCheck})`;
230
+ } else {
231
+ const mainCheck = `(${lhs.sql})${sqlOps[op]} (${rhs.sql})`;
232
+ sql = `${lhsNullCheck}${rhsNullCheck}${mainCheck}${bothNullCheck}`;
233
+ }
234
+ } else {
235
+ const mainCheck = `${lhs.sql}${sqlOps[op]} ${rhs.sql}`;
236
+ sql = `${lhsNullCheck}${rhsNullCheck}${mainCheck}${bothNullCheck}`;
237
+ }
213
238
  }
214
239
  } else {
215
- sql = lhs.sql + sqlOps[op] + ' ' + rhs.sql;
240
+ sql = `${lhs.sql}${sqlOps[op]} ${rhs.sql}`;
216
241
  }
217
242
 
218
243
  if (sqlOpBrackets[op]) {
@@ -275,25 +300,25 @@ const createMethodCall = function (method, ...args) {
275
300
  case 'HOUR':
276
301
  case 'MINUTE':
277
302
  return {
278
- sql: `EXTRACT('${method}' FROM ${args[0].sql})`,
303
+ sql: `EXTRACT('${method}' FROM DATE_TRUNC('milliseconds', ${args[0].sql}))`,
279
304
  bindings: args[0].bindings,
280
305
  odata,
281
306
  };
282
307
  case 'SECOND':
283
308
  return {
284
- sql: `FLOOR(EXTRACT('${method}' FROM ${args[0].sql}))`,
309
+ sql: `FLOOR(EXTRACT('${method}' FROM DATE_TRUNC('milliseconds', ${args[0].sql})))`,
285
310
  bindings: args[0].bindings,
286
311
  odata,
287
312
  };
288
313
  case 'FRACTIONALSECONDS':
289
314
  return {
290
- sql: `EXTRACT('SECOND' FROM ${args[0].sql}) - FLOOR(EXTRACT('SECOND' FROM ${args[0].sql}))`,
315
+ sql: `EXTRACT('SECOND' FROM DATE_TRUNC('milliseconds', ${args[0].sql})) - FLOOR(EXTRACT('SECOND' FROM DATE_TRUNC('milliseconds', ${args[0].sql})))`,
291
316
  bindings: args[0].bindings,
292
317
  odata,
293
318
  };
294
319
  case 'TIME':
295
320
  return {
296
- sql: `CAST(${args[0].sql} AS ${method})`,
321
+ sql: `CAST(DATE_TRUNC('milliseconds', ${args[0].sql}) AS ${method})`,
297
322
  bindings: args[0].bindings,
298
323
  odata,
299
324
  };
@@ -303,6 +328,12 @@ const createMethodCall = function (method, ...args) {
303
328
  bindings: args[0].bindings,
304
329
  odata,
305
330
  };
331
+ case 'DATE':
332
+ return {
333
+ sql: `DATE(DATE_TRUNC('milliseconds', ${args[0].sql}))`,
334
+ bindings: args[0].bindings,
335
+ odata,
336
+ };
306
337
  default:
307
338
  if (methodMaps.hasOwnProperty(method)) {
308
339
  method = methodMaps[method];
@@ -496,7 +527,7 @@ run(function () {
496
527
  `\
497
528
  SELECT ${pilotFieldsStr}
498
529
  FROM "pilot"
499
- WHERE "pilot"."name" = ?`,
530
+ WHERE ("pilot"."name") IS NOT NULL AND ("pilot"."name") = (?)`,
500
531
  );
501
532
  });
502
533
  },
@@ -516,8 +547,8 @@ run(function () {
516
547
  `\
517
548
  SELECT ${pilotFieldsStr}
518
549
  FROM "pilot"
519
- WHERE ("pilot"."name" = $1
520
- OR "pilot"."favourite colour" = $1)`,
550
+ WHERE (("pilot"."name") IS NOT NULL AND ("pilot"."name") = ($1)
551
+ OR ("pilot"."favourite colour") IS NOT NULL AND ("pilot"."favourite colour") = ($1))`,
521
552
  );
522
553
  });
523
554
  },
@@ -564,9 +595,9 @@ FROM "pilot",
564
595
  "pilot-can fly-plane" AS "pilot.pilot-can fly-plane",
565
596
  "plane" AS "pilot.pilot-can fly-plane.can fly-plane"
566
597
  WHERE "pilot.pilot-can fly-plane"."can fly-plane" = "pilot.pilot-can fly-plane.can fly-plane"."id"
567
- AND "pilot.pilot-can fly-plane.can fly-plane"."id" = ?
598
+ AND ("pilot.pilot-can fly-plane.can fly-plane"."id") IS NOT NULL AND ("pilot.pilot-can fly-plane.can fly-plane"."id") = (?)
568
599
  AND "pilot"."id" = "pilot.pilot-can fly-plane"."pilot"
569
- AND "pilot"."id" = ?`,
600
+ AND ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)`,
570
601
  );
571
602
  },
572
603
  );
@@ -767,7 +798,7 @@ run(function () {
767
798
  `\
768
799
  UPDATE "pilot"
769
800
  SET "name" = ?
770
- WHERE "pilot"."id" = ?
801
+ WHERE ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)
771
802
  AND "pilot"."id" IN ((
772
803
  SELECT "pilot"."id"
773
804
  FROM "pilot"
@@ -798,7 +829,7 @@ FROM (
798
829
  SELECT CAST(NULL AS TIMESTAMP) AS "created at", CAST(NULL AS TIMESTAMP) AS "modified at", CAST(? AS INTEGER) AS "id", CAST(NULL AS INTEGER) AS "person", CAST(NULL AS INTEGER) AS "is experienced", CAST(? AS VARCHAR(255)) AS "name", CAST(NULL AS INTEGER) AS "age", CAST(NULL AS INTEGER) AS "favourite colour", CAST(NULL AS INTEGER) AS "is on-team", CAST(NULL AS INTEGER) AS "licence", CAST(NULL AS TIMESTAMP) AS "hire date", CAST(NULL AS INTEGER) AS "was trained by-pilot"
799
830
  ) AS "pilot"
800
831
  WHERE ${sql}
801
- AND "pilot"."id" = ?`,
832
+ AND ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)`,
802
833
  );
803
834
  });
804
835
  it('and updates', () => {
@@ -818,7 +849,7 @@ SET "created at" = DEFAULT,
818
849
  "licence" = DEFAULT,
819
850
  "hire date" = DEFAULT,
820
851
  "was trained by-pilot" = DEFAULT
821
- WHERE "pilot"."id" = ?
852
+ WHERE ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)
822
853
  AND "pilot"."id" IN ((
823
854
  SELECT "pilot"."id"
824
855
  FROM "pilot"
@@ -854,7 +885,7 @@ FROM "pilot",
854
885
  "pilot-can fly-plane" AS "pilot.pilot-can fly-plane"
855
886
  WHERE ${sql}
856
887
  AND "pilot"."id" = "pilot.pilot-can fly-plane"."pilot"
857
- AND "pilot"."id" = ?`,
888
+ AND ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)`,
858
889
  );
859
890
  },
860
891
  );
@@ -868,14 +899,21 @@ methodTest('startswith', 'name', "'P'");
868
899
  run(() => {
869
900
  operandTest(createMethodCall('length', 'name'), 'eq', 4);
870
901
  });
902
+
871
903
  run(() => {
872
- operandTest(createMethodCall('indexof', 'name', "'Pe'"), 'eq', 0);
904
+ operandTest(createMethodCall('indexof', 'name', "'Pe'"), 'eq', 0, {
905
+ sql: '(STRPOS("pilot"."name", $1) - 1) IS NOT NULL AND (STRPOS("pilot"."name", $1) - 1) = ($2)',
906
+ });
873
907
  });
874
908
  run(() => {
875
- operandTest(createMethodCall('substring', 'name', 1), 'eq', "'ete'");
909
+ operandTest(createMethodCall('substring', 'name', 1), 'eq', "'ete'", {
910
+ sql: '(SUBSTRING("pilot"."name", $1 + 1)) IS NOT NULL AND (SUBSTRING("pilot"."name", $1 + 1)) = ($2)',
911
+ });
876
912
  });
877
913
  run(() => {
878
- operandTest(createMethodCall('substring', 'name', 1, 2), 'eq', "'et'");
914
+ operandTest(createMethodCall('substring', 'name', 1, 2), 'eq', "'et'", {
915
+ sql: '(SUBSTRING("pilot"."name", $1 + 1, $2)) IS NOT NULL AND (SUBSTRING("pilot"."name", $1 + 1, $2)) = ($3)',
916
+ });
879
917
  });
880
918
  run(() => {
881
919
  operandTest(createMethodCall('tolower', 'name'), 'eq', "'pete'");
@@ -892,11 +930,15 @@ run(() => {
892
930
  });
893
931
  run(function () {
894
932
  const concat = createMethodCall('concat', 'name', "'%20'");
895
- operandTest(createMethodCall('trim', concat), 'eq', "'Pete'");
933
+ operandTest(createMethodCall('trim', concat), 'eq', "'Pete'", {
934
+ sql: '(TRIM(("pilot"."name" || $1))) IS NOT NULL AND (TRIM(("pilot"."name" || $1))) = ($2)',
935
+ });
896
936
  });
897
937
  run(function () {
898
938
  const concat = createMethodCall('concat', 'name', "'%20'");
899
- operandTest(concat, 'eq', "'Pete%20'");
939
+ operandTest(concat, 'eq', "'Pete%20'", {
940
+ sql: '(("pilot"."name" || $1)) IS NOT NULL AND (("pilot"."name" || $1)) = ($2)',
941
+ });
900
942
  });
901
943
  run(() => {
902
944
  operandTest(createMethodCall('year', 'hire_date'), 'eq', 2011);
@@ -957,6 +999,9 @@ run(() => {
957
999
  createMethodCall('replace', 'name', "'ete'", "'at'"),
958
1000
  'eq',
959
1001
  "'Pat'",
1002
+ {
1003
+ sql: '(REPLACE("pilot"."name", $1, $2)) IS NOT NULL AND (REPLACE("pilot"."name", $1, $2)) = ($3)',
1004
+ },
960
1005
  );
961
1006
  });
962
1007
 
@@ -977,7 +1022,7 @@ WHERE EXISTS (
977
1022
  "plane" AS "pilot.pilot-can fly-plane.plane"
978
1023
  WHERE "pilot"."id" = "pilot.pilot-can fly-plane"."pilot"
979
1024
  AND "pilot.pilot-can fly-plane"."can fly-plane" = "pilot.pilot-can fly-plane.plane"."id"
980
- AND "pilot.pilot-can fly-plane.plane"."name" = ?
1025
+ AND ("pilot.pilot-can fly-plane.plane"."name") IS NOT NULL AND ("pilot.pilot-can fly-plane.plane"."name") = (?)
981
1026
  )`,
982
1027
  );
983
1028
  });
@@ -1001,7 +1046,7 @@ WHERE EXISTS (
1001
1046
  "plane" AS "pilot.pilot-can fly-plane.plane"
1002
1047
  WHERE "pilot"."id" = "pilot.pilot-can fly-plane"."pilot"
1003
1048
  AND "pilot.pilot-can fly-plane"."can fly-plane" = "pilot.pilot-can fly-plane.plane"."id"
1004
- AND "pilot.pilot-can fly-plane.plane"."name" = ?
1049
+ AND ("pilot.pilot-can fly-plane.plane"."name") IS NOT NULL AND ("pilot.pilot-can fly-plane.plane"."name") = (?)
1005
1050
  )`,
1006
1051
  );
1007
1052
  });
@@ -1012,11 +1057,11 @@ test(
1012
1057
  "/pilot?$filter=can_fly__plane/any(d:d/plane/name eq 'Concorde') or (id eq 5 or id eq 10) or (name eq 'Peter' or name eq 'Harry')",
1013
1058
  'GET',
1014
1059
  [
1060
+ ['Bind', 0],
1015
1061
  ['Bind', 1],
1016
1062
  ['Bind', 2],
1017
1063
  ['Bind', 3],
1018
1064
  ['Bind', 4],
1019
- ['Bind', 0],
1020
1065
  ],
1021
1066
  (result, sqlEquals) => {
1022
1067
  it('should select count(*) from pilot where id in (5,10)', () => {
@@ -1025,16 +1070,18 @@ test(
1025
1070
  `\
1026
1071
  SELECT ${pilotFieldsStr}
1027
1072
  FROM "pilot"
1028
- WHERE ("pilot"."id" IN (?, ?)
1029
- OR "pilot"."name" IN (?, ?)
1030
- OR EXISTS (
1073
+ WHERE (EXISTS (
1031
1074
  SELECT 1
1032
1075
  FROM "pilot-can fly-plane" AS "pilot.pilot-can fly-plane",
1033
1076
  "plane" AS "pilot.pilot-can fly-plane.plane"
1034
1077
  WHERE "pilot"."id" = "pilot.pilot-can fly-plane"."pilot"
1035
1078
  AND "pilot.pilot-can fly-plane"."can fly-plane" = "pilot.pilot-can fly-plane.plane"."id"
1036
- AND "pilot.pilot-can fly-plane.plane"."name" = ?
1037
- ))`,
1079
+ AND ("pilot.pilot-can fly-plane.plane"."name") IS NOT NULL AND ("pilot.pilot-can fly-plane.plane"."name") = (?)
1080
+ )
1081
+ OR ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)
1082
+ OR ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)
1083
+ OR ("pilot"."name") IS NOT NULL AND ("pilot"."name") = (?)
1084
+ OR ("pilot"."name") IS NOT NULL AND ("pilot"."name") = (?))`,
1038
1085
  );
1039
1086
  });
1040
1087
  },
@@ -1044,11 +1091,11 @@ test(
1044
1091
  "/pilot?$filter=not(can_fly__plane/any(d:d/plane/name eq 'Concorde') or (id eq 5 or id eq 10) or (name eq 'Peter' or name eq 'Harry'))",
1045
1092
  'GET',
1046
1093
  [
1094
+ ['Bind', 0],
1047
1095
  ['Bind', 1],
1048
1096
  ['Bind', 2],
1049
1097
  ['Bind', 3],
1050
1098
  ['Bind', 4],
1051
- ['Bind', 0],
1052
1099
  ],
1053
1100
  (result, sqlEquals) => {
1054
1101
  it('should select count(*) from pilot where id in (5,10)', () => {
@@ -1058,16 +1105,18 @@ test(
1058
1105
  SELECT ${pilotFieldsStr}
1059
1106
  FROM "pilot"
1060
1107
  WHERE NOT (
1061
- ("pilot"."id" IN (?, ?)
1062
- OR "pilot"."name" IN (?, ?)
1063
- OR EXISTS (
1108
+ (EXISTS (
1064
1109
  SELECT 1
1065
1110
  FROM "pilot-can fly-plane" AS "pilot.pilot-can fly-plane",
1066
1111
  "plane" AS "pilot.pilot-can fly-plane.plane"
1067
1112
  WHERE "pilot"."id" = "pilot.pilot-can fly-plane"."pilot"
1068
1113
  AND "pilot.pilot-can fly-plane"."can fly-plane" = "pilot.pilot-can fly-plane.plane"."id"
1069
- AND "pilot.pilot-can fly-plane.plane"."name" = ?
1070
- ))
1114
+ AND ("pilot.pilot-can fly-plane.plane"."name") IS NOT NULL AND ("pilot.pilot-can fly-plane.plane"."name") = (?)
1115
+ )
1116
+ OR ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)
1117
+ OR ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)
1118
+ OR ("pilot"."name") IS NOT NULL AND ("pilot"."name") = (?)
1119
+ OR ("pilot"."name") IS NOT NULL AND ("pilot"."name") = (?))
1071
1120
  )`,
1072
1121
  );
1073
1122
  });
@@ -1091,7 +1140,9 @@ WHERE NOT EXISTS (
1091
1140
  "plane" AS "pilot.pilot-can fly-plane.plane"
1092
1141
  WHERE "pilot"."id" = "pilot.pilot-can fly-plane"."pilot"
1093
1142
  AND "pilot.pilot-can fly-plane"."can fly-plane" = "pilot.pilot-can fly-plane.plane"."id"
1094
- AND "pilot.pilot-can fly-plane.plane"."name" != ?
1143
+ AND NOT (
1144
+ ("pilot.pilot-can fly-plane.plane"."name") IS NOT NULL AND ("pilot.pilot-can fly-plane.plane"."name") = (?)
1145
+ )
1095
1146
  )`,
1096
1147
  );
1097
1148
  });
@@ -1115,7 +1166,9 @@ WHERE NOT EXISTS (
1115
1166
  "plane" AS "pilot.pilot-can fly-plane.plane"
1116
1167
  WHERE "pilot"."id" = "pilot.pilot-can fly-plane"."pilot"
1117
1168
  AND "pilot.pilot-can fly-plane"."can fly-plane" = "pilot.pilot-can fly-plane.plane"."id"
1118
- AND "pilot.pilot-can fly-plane.plane"."name" != ?
1169
+ AND NOT (
1170
+ ("pilot.pilot-can fly-plane.plane"."name") IS NOT NULL AND ("pilot.pilot-can fly-plane.plane"."name") = (?)
1171
+ )
1119
1172
  )`,
1120
1173
  );
1121
1174
  });
@@ -1139,7 +1192,7 @@ AND EXISTS (
1139
1192
  SELECT 1
1140
1193
  FROM "plane" AS "pilot.pilot-can fly-plane.plane"
1141
1194
  WHERE "pilot.pilot-can fly-plane"."can fly-plane" = "pilot.pilot-can fly-plane.plane"."id"
1142
- AND "pilot.pilot-can fly-plane.plane"."name" = ?
1195
+ AND ("pilot.pilot-can fly-plane.plane"."name") IS NOT NULL AND ("pilot.pilot-can fly-plane.plane"."name") = (?)
1143
1196
  )`,
1144
1197
  );
1145
1198
  });
@@ -1163,7 +1216,7 @@ AND EXISTS (
1163
1216
  SELECT 1
1164
1217
  FROM "plane" AS "pilot.pilot-can fly-plane.plane"
1165
1218
  WHERE "pilot.pilot-can fly-plane"."can fly-plane" = "pilot.pilot-can fly-plane.plane"."id"
1166
- AND "pilot.pilot-can fly-plane.plane"."name" = ?
1219
+ AND ("pilot.pilot-can fly-plane.plane"."name") IS NOT NULL AND ("pilot.pilot-can fly-plane.plane"."name") = (?)
1167
1220
  )`,
1168
1221
  );
1169
1222
  });
@@ -1187,7 +1240,9 @@ AND NOT EXISTS (
1187
1240
  SELECT 1
1188
1241
  FROM "plane" AS "pilot.pilot-can fly-plane.plane"
1189
1242
  WHERE "pilot.pilot-can fly-plane"."can fly-plane" = "pilot.pilot-can fly-plane.plane"."id"
1190
- AND "pilot.pilot-can fly-plane.plane"."name" != ?
1243
+ AND NOT (
1244
+ ("pilot.pilot-can fly-plane.plane"."name") IS NOT NULL AND ("pilot.pilot-can fly-plane.plane"."name") = (?)
1245
+ )
1191
1246
  )`,
1192
1247
  );
1193
1248
  });
@@ -1211,7 +1266,9 @@ AND NOT EXISTS (
1211
1266
  SELECT 1
1212
1267
  FROM "plane" AS "pilot.pilot-can fly-plane.plane"
1213
1268
  WHERE "pilot.pilot-can fly-plane"."can fly-plane" = "pilot.pilot-can fly-plane.plane"."id"
1214
- AND "pilot.pilot-can fly-plane.plane"."name" != ?
1269
+ AND NOT (
1270
+ ("pilot.pilot-can fly-plane.plane"."name") IS NOT NULL AND ("pilot.pilot-can fly-plane.plane"."name") = (?)
1271
+ )
1215
1272
  )`,
1216
1273
  );
1217
1274
  });
@@ -1222,11 +1279,11 @@ test(
1222
1279
  "/pilot?$filter=can_fly__plane/any(d:d/plane/name eq 'Concorde') or (id eq 5 or name eq 'Peter') or (id eq 10 or name eq 'Harry')",
1223
1280
  'GET',
1224
1281
  [
1282
+ ['Bind', 0],
1225
1283
  ['Bind', 1],
1226
- ['Bind', 3],
1227
1284
  ['Bind', 2],
1285
+ ['Bind', 3],
1228
1286
  ['Bind', 4],
1229
- ['Bind', 0],
1230
1287
  ],
1231
1288
  (result, sqlEquals) => {
1232
1289
  it('should select count(*) from pilot where id in (5,10)', () => {
@@ -1235,16 +1292,18 @@ test(
1235
1292
  `\
1236
1293
  SELECT ${pilotFieldsStr}
1237
1294
  FROM "pilot"
1238
- WHERE ("pilot"."id" IN (?, ?)
1239
- OR "pilot"."name" IN (?, ?)
1240
- OR EXISTS (
1295
+ WHERE (EXISTS (
1241
1296
  SELECT 1
1242
1297
  FROM "pilot-can fly-plane" AS "pilot.pilot-can fly-plane",
1243
1298
  "plane" AS "pilot.pilot-can fly-plane.plane"
1244
1299
  WHERE "pilot"."id" = "pilot.pilot-can fly-plane"."pilot"
1245
1300
  AND "pilot.pilot-can fly-plane"."can fly-plane" = "pilot.pilot-can fly-plane.plane"."id"
1246
- AND "pilot.pilot-can fly-plane.plane"."name" = ?
1247
- ))`,
1301
+ AND ("pilot.pilot-can fly-plane.plane"."name") IS NOT NULL AND ("pilot.pilot-can fly-plane.plane"."name") = (?)
1302
+ )
1303
+ OR ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)
1304
+ OR ("pilot"."name") IS NOT NULL AND ("pilot"."name") = (?)
1305
+ OR ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)
1306
+ OR ("pilot"."name") IS NOT NULL AND ("pilot"."name") = (?))`,
1248
1307
  );
1249
1308
  });
1250
1309
  },
@@ -1254,11 +1313,11 @@ test(
1254
1313
  "/pilot?$filter=can_fly__plane/any(d:d/plane/name eq 'Concorde') and (id ne 5 and id ne 10) and (name ne 'Peter' and name ne 'Harry')",
1255
1314
  'GET',
1256
1315
  [
1316
+ ['Bind', 0],
1257
1317
  ['Bind', 1],
1258
1318
  ['Bind', 2],
1259
1319
  ['Bind', 3],
1260
1320
  ['Bind', 4],
1261
- ['Bind', 0],
1262
1321
  ],
1263
1322
  (result, sqlEquals) => {
1264
1323
  it('should select count(*) from pilot where id in (5,10)', () => {
@@ -1267,16 +1326,18 @@ test(
1267
1326
  `\
1268
1327
  SELECT ${pilotFieldsStr}
1269
1328
  FROM "pilot"
1270
- WHERE "pilot"."id" NOT IN (?, ?)
1271
- AND "pilot"."name" NOT IN (?, ?)
1272
- AND EXISTS (
1329
+ WHERE EXISTS (
1273
1330
  SELECT 1
1274
1331
  FROM "pilot-can fly-plane" AS "pilot.pilot-can fly-plane",
1275
1332
  "plane" AS "pilot.pilot-can fly-plane.plane"
1276
1333
  WHERE "pilot"."id" = "pilot.pilot-can fly-plane"."pilot"
1277
1334
  AND "pilot.pilot-can fly-plane"."can fly-plane" = "pilot.pilot-can fly-plane.plane"."id"
1278
- AND "pilot.pilot-can fly-plane.plane"."name" = ?
1279
- )`,
1335
+ AND ("pilot.pilot-can fly-plane.plane"."name") IS NOT NULL AND ("pilot.pilot-can fly-plane.plane"."name") = (?)
1336
+ )
1337
+ AND NOT(("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?))
1338
+ AND NOT(("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?))
1339
+ AND NOT(("pilot"."name") IS NOT NULL AND ("pilot"."name") = (?))
1340
+ AND NOT(("pilot"."name") IS NOT NULL AND ("pilot"."name") = (?))`,
1280
1341
  );
1281
1342
  });
1282
1343
  },
@@ -1286,11 +1347,11 @@ test(
1286
1347
  "/pilot?$filter=can_fly__plane/any(d:d/plane/name eq 'Concorde') and (id ne 5 and name ne 'Peter') and (id ne 10 and name ne 'Harry')",
1287
1348
  'GET',
1288
1349
  [
1350
+ ['Bind', 0],
1289
1351
  ['Bind', 1],
1290
- ['Bind', 3],
1291
1352
  ['Bind', 2],
1353
+ ['Bind', 3],
1292
1354
  ['Bind', 4],
1293
- ['Bind', 0],
1294
1355
  ],
1295
1356
  (result, sqlEquals) => {
1296
1357
  it('should select count(*) from pilot where id in (5,10)', () => {
@@ -1299,16 +1360,18 @@ test(
1299
1360
  `\
1300
1361
  SELECT ${pilotFieldsStr}
1301
1362
  FROM "pilot"
1302
- WHERE "pilot"."id" NOT IN (?, ?)
1303
- AND "pilot"."name" NOT IN (?, ?)
1304
- AND EXISTS (
1363
+ WHERE EXISTS (
1305
1364
  SELECT 1
1306
1365
  FROM "pilot-can fly-plane" AS "pilot.pilot-can fly-plane",
1307
1366
  "plane" AS "pilot.pilot-can fly-plane.plane"
1308
1367
  WHERE "pilot"."id" = "pilot.pilot-can fly-plane"."pilot"
1309
1368
  AND "pilot.pilot-can fly-plane"."can fly-plane" = "pilot.pilot-can fly-plane.plane"."id"
1310
- AND "pilot.pilot-can fly-plane.plane"."name" = ?
1311
- )`,
1369
+ AND ("pilot.pilot-can fly-plane.plane"."name") IS NOT NULL AND ("pilot.pilot-can fly-plane.plane"."name") = (?)
1370
+ )
1371
+ AND NOT(("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?))
1372
+ AND NOT(("pilot"."name") IS NOT NULL AND ("pilot"."name") = (?))
1373
+ AND NOT(("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?))
1374
+ AND NOT(("pilot"."name") IS NOT NULL AND ("pilot"."name") = (?))`,
1312
1375
  );
1313
1376
  });
1314
1377
  },
@@ -1380,7 +1443,7 @@ run(function () {
1380
1443
  `\
1381
1444
  SELECT ${pilotFieldsStr}
1382
1445
  FROM "pilot"
1383
- WHERE CURRENT_TIMESTAMP - "pilot"."created at" < INTERVAL '1 0:0:0.0'`,
1446
+ WHERE CURRENT_TIMESTAMP - DATE_TRUNC('milliseconds', "pilot"."created at") < INTERVAL '1 0:0:0.0'`,
1384
1447
  );
1385
1448
  });
1386
1449
  });
@@ -1410,14 +1473,14 @@ run(function () {
1410
1473
  `\
1411
1474
  SELECT ${pilotFieldsStr}
1412
1475
  FROM "pilot"
1413
- WHERE "pilot"."created at" + INTERVAL '1 0:0:0.0' > CURRENT_TIMESTAMP`,
1476
+ WHERE DATE_TRUNC('milliseconds', "pilot"."created at") + INTERVAL '1 0:0:0.0' > CURRENT_TIMESTAMP`,
1414
1477
  );
1415
1478
  });
1416
1479
  });
1417
1480
  });
1418
1481
 
1419
1482
  run(function () {
1420
- const odata = 'totalseconds(created_at) gt 1';
1483
+ const odata = "totalseconds(duration'P1D') gt 1";
1421
1484
  test(`/pilot?$filter=${odata}`, 'GET', [['Bind', 0]], (result, sqlEquals) => {
1422
1485
  it('should select from pilot where "' + odata + '"', () => {
1423
1486
  sqlEquals(
@@ -1425,7 +1488,7 @@ run(function () {
1425
1488
  `\
1426
1489
  SELECT ${pilotFieldsStr}
1427
1490
  FROM "pilot"
1428
- WHERE EXTRACT(EPOCH FROM "pilot"."created at") > $1`,
1491
+ WHERE EXTRACT(EPOCH FROM INTERVAL '1 0:0:0.0') > $1`,
1429
1492
  );
1430
1493
  });
1431
1494
  });
@@ -37,7 +37,7 @@ test('/pilot(1)', 'GET', [['Bind', 0]], (result, sqlEquals) => {
37
37
  `\
38
38
  SELECT ${pilotFieldsStr}
39
39
  FROM "pilot"
40
- WHERE "pilot"."id" = ?`,
40
+ WHERE ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)`,
41
41
  );
42
42
  });
43
43
  });
@@ -49,7 +49,7 @@ test("/pilot('TextKey')", 'GET', [['Bind', 0]], (result, sqlEquals) => {
49
49
  `\
50
50
  SELECT ${pilotFieldsStr}
51
51
  FROM "pilot"
52
- WHERE "pilot"."id" = ?`,
52
+ WHERE ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)`,
53
53
  );
54
54
  });
55
55
  });
@@ -63,7 +63,7 @@ SELECT ${aliasLicenceFieldsStr}
63
63
  FROM "pilot",
64
64
  "licence" AS "pilot.licence"
65
65
  WHERE "pilot"."licence" = "pilot.licence"."id"
66
- AND "pilot"."id" = ?`,
66
+ AND ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)`,
67
67
  );
68
68
  });
69
69
  });
@@ -77,7 +77,7 @@ SELECT ${aliasPilotLicenceFieldsStr}
77
77
  FROM "licence",
78
78
  "pilot" AS "licence.is of-pilot"
79
79
  WHERE "licence"."id" = "licence.is of-pilot"."licence"
80
- AND "licence"."id" = ?`,
80
+ AND ("licence"."id") IS NOT NULL AND ("licence"."id") = (?)`,
81
81
  );
82
82
  });
83
83
  });
@@ -97,7 +97,7 @@ FROM "pilot",
97
97
  "plane" AS "pilot.pilot-can fly-plane.plane"
98
98
  WHERE "pilot.pilot-can fly-plane"."can fly-plane" = "pilot.pilot-can fly-plane.plane"."id"
99
99
  AND "pilot"."id" = "pilot.pilot-can fly-plane"."pilot"
100
- AND "pilot"."id" = ?`,
100
+ AND ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)`,
101
101
  );
102
102
  });
103
103
  },
@@ -118,7 +118,7 @@ FROM "plane",
118
118
  "pilot" AS "plane.pilot-can fly-plane.pilot"
119
119
  WHERE "plane.pilot-can fly-plane"."pilot" = "plane.pilot-can fly-plane.pilot"."id"
120
120
  AND "plane"."id" = "plane.pilot-can fly-plane"."can fly-plane"
121
- AND "plane"."id" = ?`,
121
+ AND ("plane"."id") IS NOT NULL AND ("plane"."id") = (?)`,
122
122
  );
123
123
  });
124
124
  },
@@ -130,7 +130,7 @@ test('/pilot(1)', 'DELETE', [['Bind', 0]], (result, sqlEquals) => {
130
130
  result.query,
131
131
  `\
132
132
  DELETE FROM "pilot"
133
- WHERE "pilot"."id" = ?`,
133
+ WHERE ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)`,
134
134
  );
135
135
  });
136
136
  });
@@ -158,7 +158,7 @@ SELECT "pilot"."id"
158
158
  FROM (
159
159
  SELECT CAST(NULL AS TIMESTAMP) AS "created at", CAST(NULL AS TIMESTAMP) AS "modified at", CAST(? AS INTEGER) AS "id", CAST(NULL AS INTEGER) AS "person", CAST(NULL AS INTEGER) AS "is experienced", CAST(NULL AS VARCHAR(255)) AS "name", CAST(NULL AS INTEGER) AS "age", CAST(NULL AS INTEGER) AS "favourite colour", CAST(NULL AS INTEGER) AS "is on-team", CAST(NULL AS INTEGER) AS "licence", CAST(NULL AS TIMESTAMP) AS "hire date", CAST(NULL AS INTEGER) AS "was trained by-pilot"
160
160
  ) AS "pilot"
161
- WHERE "pilot"."id" = ?`,
161
+ WHERE ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)`,
162
162
  );
163
163
  sqlEquals(
164
164
  result[1].query,
@@ -176,7 +176,7 @@ SET "created at" = DEFAULT,
176
176
  "licence" = DEFAULT,
177
177
  "hire date" = DEFAULT,
178
178
  "was trained by-pilot" = DEFAULT
179
- WHERE "pilot"."id" = ?`,
179
+ WHERE ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)`,
180
180
  );
181
181
  });
182
182
  },
@@ -219,7 +219,7 @@ INSERT INTO "pilot" DEFAULT VALUES`,
219
219
  `\
220
220
  UPDATE "pilot"
221
221
  SET "is experienced" = ?
222
- WHERE "pilot"."id" = ?`,
222
+ WHERE ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)`,
223
223
  );
224
224
  });
225
225
  };
@@ -237,7 +237,7 @@ test(
237
237
  result.query,
238
238
  `\
239
239
  DELETE FROM "pilot-can fly-plane"
240
- WHERE "pilot-can fly-plane"."id" = ?`,
240
+ WHERE ("pilot-can fly-plane"."id") IS NOT NULL AND ("pilot-can fly-plane"."id") = (?)`,
241
241
  );
242
242
  });
243
243
  },
@@ -266,7 +266,7 @@ SELECT "pilot-can fly-plane"."id"
266
266
  FROM (
267
267
  SELECT CAST(NULL AS TIMESTAMP) AS "created at", CAST(NULL AS TIMESTAMP) AS "modified at", CAST(NULL AS INTEGER) AS "pilot", CAST(NULL AS INTEGER) AS "can fly-plane", CAST(? AS INTEGER) AS "id"
268
268
  ) AS "pilot-can fly-plane"
269
- WHERE "pilot-can fly-plane"."id" = ?`,
269
+ WHERE ("pilot-can fly-plane"."id") IS NOT NULL AND ("pilot-can fly-plane"."id") = (?)`,
270
270
  );
271
271
  sqlEquals(
272
272
  result[1].query,
@@ -277,7 +277,7 @@ SET "created at" = DEFAULT,
277
277
  "pilot" = DEFAULT,
278
278
  "can fly-plane" = DEFAULT,
279
279
  "id" = ?
280
- WHERE "pilot-can fly-plane"."id" = ?`,
280
+ WHERE ("pilot-can fly-plane"."id") IS NOT NULL AND ("pilot-can fly-plane"."id") = (?)`,
281
281
  );
282
282
  });
283
283
  },
@@ -323,7 +323,7 @@ INSERT INTO "pilot-can fly-plane" DEFAULT VALUES`,
323
323
  `\
324
324
  UPDATE "pilot-can fly-plane"
325
325
  SET "pilot" = ?
326
- WHERE "pilot-can fly-plane"."id" = ?`,
326
+ WHERE ("pilot-can fly-plane"."id") IS NOT NULL AND ("pilot-can fly-plane"."id") = (?)`,
327
327
  );
328
328
  });
329
329
  };
@@ -338,7 +338,7 @@ test('/pilot(1)/$links/licence', 'GET', [['Bind', 0]], (result, sqlEquals) => {
338
338
  `\
339
339
  SELECT "pilot"."licence" AS "licence"
340
340
  FROM "pilot"
341
- WHERE "pilot"."id" = ?`,
341
+ WHERE ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)`,
342
342
  );
343
343
  });
344
344
  });
@@ -356,7 +356,7 @@ SELECT "pilot.pilot-can fly-plane"."can fly-plane" AS "plane"
356
356
  FROM "pilot",
357
357
  "pilot-can fly-plane" AS "pilot.pilot-can fly-plane"
358
358
  WHERE "pilot"."id" = "pilot.pilot-can fly-plane"."pilot"
359
- AND "pilot"."id" = ?`,
359
+ AND ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)`,
360
360
  );
361
361
  });
362
362
  },
@@ -377,7 +377,7 @@ test("/team('purple')", 'GET', [['Bind', 0]], (result, sqlEquals) => {
377
377
  `\
378
378
  SELECT ${teamFieldsStr}
379
379
  FROM "team"
380
- WHERE "team"."favourite colour" = ?`,
380
+ WHERE ("team"."favourite colour") IS NOT NULL AND ("team"."favourite colour") = (?)`,
381
381
  );
382
382
  });
383
383
  });
@@ -459,7 +459,8 @@ test(
459
459
  `\
460
460
  SELECT COUNT(*) AS "$count"
461
461
  FROM "pilot"
462
- WHERE "pilot"."id" IN (?, ?)`,
462
+ WHERE (("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)
463
+ OR ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?))`,
463
464
  );
464
465
  });
465
466
  },
@@ -476,7 +477,7 @@ test(
476
477
  `\
477
478
  SELECT COUNT(*) AS "$count"
478
479
  FROM "pilot"
479
- WHERE ("pilot"."id" = ?
480
+ WHERE (("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)
480
481
  OR "pilot"."id" IS NULL)`,
481
482
  );
482
483
  });
@@ -492,7 +493,7 @@ SELECT COUNT(*) AS "$count"
492
493
  FROM "pilot",
493
494
  "licence" AS "pilot.licence"
494
495
  WHERE "pilot"."licence" = "pilot.licence"."id"
495
- AND "pilot"."id" = ?`,
496
+ AND ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)`,
496
497
  );
497
498
  });
498
499
  });
@@ -35,7 +35,7 @@ test(
35
35
  `\
36
36
  SELECT "pilot"."favourite colour" AS "favourite_colour"
37
37
  FROM "pilot"
38
- WHERE "pilot"."id" = ?`,
38
+ WHERE ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)`,
39
39
  );
40
40
  });
41
41
  },
@@ -52,7 +52,7 @@ test(
52
52
  `\
53
53
  SELECT "pilot"."favourite colour" AS "favourite_colour"
54
54
  FROM "pilot"
55
- WHERE "pilot"."id" = ?`,
55
+ WHERE ("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)`,
56
56
  );
57
57
  });
58
58
  },
@@ -4,7 +4,16 @@ const { pilotFields } = require('./fields');
4
4
  const pilotFieldsStr = pilotFields.join(', ');
5
5
 
6
6
  const filterIDs = _.range(1, 5000);
7
- const filterBindsString = _.map(filterIDs, _.constant('?')).join(', ');
7
+ const filterBindsInString = _.map(filterIDs, () => '?').join(', ');
8
+ const filterBindsOrString = _.map(
9
+ filterIDs,
10
+ () => '("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?)',
11
+ ).join('\nOR ');
12
+ const filterBindsNandString = _.map(
13
+ filterIDs,
14
+ () => 'NOT(("pilot"."id") IS NOT NULL AND ("pilot"."id") = (?))',
15
+ ).join('\nAND ');
16
+
8
17
  const filterBinds = _.map(filterIDs, (_n, i) => ['Bind', i]);
9
18
 
10
19
  let filterString = `id in (${filterIDs.join(', ')})`;
@@ -20,7 +29,7 @@ test(
20
29
  SELECT ${pilotFieldsStr}
21
30
  FROM "pilot"
22
31
  WHERE "pilot"."id" IN (` +
23
- filterBindsString +
32
+ filterBindsInString +
24
33
  ')',
25
34
  );
26
35
  });
@@ -40,7 +49,7 @@ test(
40
49
  SELECT ${pilotFieldsStr}
41
50
  FROM "pilot"
42
51
  WHERE "pilot"."id" NOT IN (` +
43
- filterBindsString +
52
+ filterBindsInString +
44
53
  ')',
45
54
  );
46
55
  });
@@ -59,9 +68,7 @@ test(
59
68
  `\
60
69
  SELECT ${pilotFieldsStr}
61
70
  FROM "pilot"
62
- WHERE "pilot"."id" IN (` +
63
- filterBindsString +
64
- ')',
71
+ WHERE (${filterBindsOrString})`,
65
72
  );
66
73
  });
67
74
  },
@@ -79,9 +86,7 @@ test(
79
86
  `\
80
87
  SELECT ${pilotFieldsStr}
81
88
  FROM "pilot"
82
- WHERE "pilot"."id" NOT IN (` +
83
- filterBindsString +
84
- ')',
89
+ WHERE ${filterBindsNandString}`,
85
90
  );
86
91
  });
87
92
  },
@@ -1,6 +1,6 @@
1
1
  const fs = require('fs');
2
2
  const ODataParser = require('@balena/odata-parser');
3
- const { OData2AbstractSQL } = require('@resin/odata-to-abstract-sql');
3
+ const { OData2AbstractSQL } = require('@balena/odata-to-abstract-sql');
4
4
  const sbvrModel = fs.readFileSync(require.resolve('../model.sbvr'), 'utf8');
5
5
 
6
6
  const AbstractSQLCompiler = require('../..');