@quereus/quereus 0.5.2 → 0.6.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 (226) hide show
  1. package/README.md +5 -1
  2. package/dist/src/common/datatype.d.ts +4 -5
  3. package/dist/src/common/datatype.d.ts.map +1 -1
  4. package/dist/src/common/datatype.js.map +1 -1
  5. package/dist/src/common/type-inference.d.ts +3 -6
  6. package/dist/src/common/type-inference.d.ts.map +1 -1
  7. package/dist/src/common/type-inference.js +17 -22
  8. package/dist/src/common/type-inference.js.map +1 -1
  9. package/dist/src/core/param.d.ts.map +1 -1
  10. package/dist/src/core/param.js +3 -18
  11. package/dist/src/core/param.js.map +1 -1
  12. package/dist/src/func/builtins/aggregate.d.ts.map +1 -1
  13. package/dist/src/func/builtins/aggregate.js +24 -2
  14. package/dist/src/func/builtins/aggregate.js.map +1 -1
  15. package/dist/src/func/builtins/builtin-window-functions.js +10 -10
  16. package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
  17. package/dist/src/func/builtins/conversion.d.ts +10 -0
  18. package/dist/src/func/builtins/conversion.d.ts.map +1 -1
  19. package/dist/src/func/builtins/conversion.js +20 -1
  20. package/dist/src/func/builtins/conversion.js.map +1 -1
  21. package/dist/src/func/builtins/datetime.js +9 -9
  22. package/dist/src/func/builtins/datetime.js.map +1 -1
  23. package/dist/src/func/builtins/explain.js +53 -53
  24. package/dist/src/func/builtins/explain.js.map +1 -1
  25. package/dist/src/func/builtins/generation.js +2 -2
  26. package/dist/src/func/builtins/generation.js.map +1 -1
  27. package/dist/src/func/builtins/index.d.ts.map +1 -1
  28. package/dist/src/func/builtins/index.js +16 -1
  29. package/dist/src/func/builtins/index.js.map +1 -1
  30. package/dist/src/func/builtins/json-tvf.js +17 -17
  31. package/dist/src/func/builtins/json-tvf.js.map +1 -1
  32. package/dist/src/func/builtins/json.js +11 -11
  33. package/dist/src/func/builtins/json.js.map +1 -1
  34. package/dist/src/func/builtins/scalar.d.ts.map +1 -1
  35. package/dist/src/func/builtins/scalar.js +202 -13
  36. package/dist/src/func/builtins/scalar.js.map +1 -1
  37. package/dist/src/func/builtins/schema.js +18 -18
  38. package/dist/src/func/builtins/schema.js.map +1 -1
  39. package/dist/src/func/builtins/string.d.ts.map +1 -1
  40. package/dist/src/func/builtins/string.js +59 -50
  41. package/dist/src/func/builtins/string.js.map +1 -1
  42. package/dist/src/func/builtins/timespan.d.ts +45 -0
  43. package/dist/src/func/builtins/timespan.d.ts.map +1 -0
  44. package/dist/src/func/builtins/timespan.js +147 -0
  45. package/dist/src/func/builtins/timespan.js.map +1 -0
  46. package/dist/src/func/registration.d.ts +26 -0
  47. package/dist/src/func/registration.d.ts.map +1 -1
  48. package/dist/src/func/registration.js +9 -5
  49. package/dist/src/func/registration.js.map +1 -1
  50. package/dist/src/index.d.ts +1 -1
  51. package/dist/src/index.d.ts.map +1 -1
  52. package/dist/src/index.js +1 -1
  53. package/dist/src/index.js.map +1 -1
  54. package/dist/src/parser/parser.js +2 -2
  55. package/dist/src/parser/parser.js.map +1 -1
  56. package/dist/src/planner/building/constraint-builder.js +2 -2
  57. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  58. package/dist/src/planner/building/delete.js +3 -3
  59. package/dist/src/planner/building/delete.js.map +1 -1
  60. package/dist/src/planner/building/function-call.d.ts.map +1 -1
  61. package/dist/src/planner/building/function-call.js +24 -4
  62. package/dist/src/planner/building/function-call.js.map +1 -1
  63. package/dist/src/planner/building/insert.js +3 -3
  64. package/dist/src/planner/building/insert.js.map +1 -1
  65. package/dist/src/planner/building/select.d.ts.map +1 -1
  66. package/dist/src/planner/building/select.js +3 -2
  67. package/dist/src/planner/building/select.js.map +1 -1
  68. package/dist/src/planner/building/update.js +7 -7
  69. package/dist/src/planner/building/update.js.map +1 -1
  70. package/dist/src/planner/nodes/aggregate-function.d.ts +2 -1
  71. package/dist/src/planner/nodes/aggregate-function.d.ts.map +1 -1
  72. package/dist/src/planner/nodes/aggregate-function.js +10 -3
  73. package/dist/src/planner/nodes/aggregate-function.js.map +1 -1
  74. package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
  75. package/dist/src/planner/nodes/cte-node.js +2 -2
  76. package/dist/src/planner/nodes/cte-node.js.map +1 -1
  77. package/dist/src/planner/nodes/declarative-schema.js +3 -3
  78. package/dist/src/planner/nodes/declarative-schema.js.map +1 -1
  79. package/dist/src/planner/nodes/function.d.ts +2 -1
  80. package/dist/src/planner/nodes/function.d.ts.map +1 -1
  81. package/dist/src/planner/nodes/function.js +6 -3
  82. package/dist/src/planner/nodes/function.js.map +1 -1
  83. package/dist/src/planner/nodes/insert-node.js +1 -1
  84. package/dist/src/planner/nodes/insert-node.js.map +1 -1
  85. package/dist/src/planner/nodes/pragma.d.ts +1 -1
  86. package/dist/src/planner/nodes/pragma.d.ts.map +1 -1
  87. package/dist/src/planner/nodes/pragma.js +3 -3
  88. package/dist/src/planner/nodes/pragma.js.map +1 -1
  89. package/dist/src/planner/nodes/reference.js +1 -1
  90. package/dist/src/planner/nodes/reference.js.map +1 -1
  91. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  92. package/dist/src/planner/nodes/scalar.js +55 -101
  93. package/dist/src/planner/nodes/scalar.js.map +1 -1
  94. package/dist/src/planner/nodes/sequencing-node.js +2 -2
  95. package/dist/src/planner/nodes/sequencing-node.js.map +1 -1
  96. package/dist/src/planner/nodes/sink-node.js +2 -2
  97. package/dist/src/planner/nodes/sink-node.js.map +1 -1
  98. package/dist/src/planner/nodes/subquery.d.ts.map +1 -1
  99. package/dist/src/planner/nodes/subquery.js +4 -7
  100. package/dist/src/planner/nodes/subquery.js.map +1 -1
  101. package/dist/src/planner/nodes/view-reference-node.d.ts.map +1 -1
  102. package/dist/src/planner/nodes/view-reference-node.js +2 -2
  103. package/dist/src/planner/nodes/view-reference-node.js.map +1 -1
  104. package/dist/src/planner/nodes/window-function.js +3 -3
  105. package/dist/src/planner/nodes/window-function.js.map +1 -1
  106. package/dist/src/planner/rules/access/rule-select-access-path.js +1 -1
  107. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  108. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +1 -1
  109. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  110. package/dist/src/planner/scopes/global.js +3 -3
  111. package/dist/src/planner/scopes/global.js.map +1 -1
  112. package/dist/src/planner/scopes/param.d.ts.map +1 -1
  113. package/dist/src/planner/scopes/param.js +2 -2
  114. package/dist/src/planner/scopes/param.js.map +1 -1
  115. package/dist/src/planner/type-utils.d.ts +2 -12
  116. package/dist/src/planner/type-utils.d.ts.map +1 -1
  117. package/dist/src/planner/type-utils.js +6 -21
  118. package/dist/src/planner/type-utils.js.map +1 -1
  119. package/dist/src/runtime/emit/between.js +2 -2
  120. package/dist/src/runtime/emit/between.js.map +1 -1
  121. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  122. package/dist/src/runtime/emit/binary.js +66 -30
  123. package/dist/src/runtime/emit/binary.js.map +1 -1
  124. package/dist/src/runtime/emit/subquery.js +8 -8
  125. package/dist/src/runtime/emit/subquery.js.map +1 -1
  126. package/dist/src/runtime/emit/temporal-arithmetic.d.ts +33 -0
  127. package/dist/src/runtime/emit/temporal-arithmetic.d.ts.map +1 -0
  128. package/dist/src/runtime/emit/temporal-arithmetic.js +269 -0
  129. package/dist/src/runtime/emit/temporal-arithmetic.js.map +1 -0
  130. package/dist/src/runtime/emit/unary.d.ts.map +1 -1
  131. package/dist/src/runtime/emit/unary.js +16 -4
  132. package/dist/src/runtime/emit/unary.js.map +1 -1
  133. package/dist/src/schema/catalog.js +3 -3
  134. package/dist/src/schema/catalog.js.map +1 -1
  135. package/dist/src/schema/column.d.ts +0 -3
  136. package/dist/src/schema/column.d.ts.map +1 -1
  137. package/dist/src/schema/column.js +0 -2
  138. package/dist/src/schema/column.js.map +1 -1
  139. package/dist/src/schema/function.d.ts +29 -1
  140. package/dist/src/schema/function.d.ts.map +1 -1
  141. package/dist/src/schema/function.js.map +1 -1
  142. package/dist/src/schema/table.d.ts +3 -3
  143. package/dist/src/schema/table.d.ts.map +1 -1
  144. package/dist/src/schema/table.js +4 -6
  145. package/dist/src/schema/table.js.map +1 -1
  146. package/dist/src/types/index.d.ts +1 -1
  147. package/dist/src/types/index.d.ts.map +1 -1
  148. package/dist/src/types/index.js +1 -1
  149. package/dist/src/types/index.js.map +1 -1
  150. package/dist/src/types/registry.d.ts.map +1 -1
  151. package/dist/src/types/registry.js +5 -1
  152. package/dist/src/types/registry.js.map +1 -1
  153. package/dist/src/types/temporal-types.d.ts +5 -0
  154. package/dist/src/types/temporal-types.d.ts.map +1 -1
  155. package/dist/src/types/temporal-types.js +122 -0
  156. package/dist/src/types/temporal-types.js.map +1 -1
  157. package/dist/src/util/plan-formatter.d.ts.map +1 -1
  158. package/dist/src/util/plan-formatter.js +1 -5
  159. package/dist/src/util/plan-formatter.js.map +1 -1
  160. package/dist/src/util/row-descriptor.js +2 -2
  161. package/dist/src/util/row-descriptor.js.map +1 -1
  162. package/dist/src/vtab/best-access-plan.d.ts +4 -3
  163. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  164. package/dist/src/vtab/best-access-plan.js.map +1 -1
  165. package/dist/src/vtab/memory/module.js +1 -1
  166. package/dist/src/vtab/memory/module.js.map +1 -1
  167. package/package.json +1 -1
  168. package/src/common/datatype.ts +4 -5
  169. package/src/common/type-inference.ts +13 -22
  170. package/src/core/param.ts +4 -11
  171. package/src/func/builtins/aggregate.ts +24 -2
  172. package/src/func/builtins/builtin-window-functions.ts +10 -10
  173. package/src/func/builtins/conversion.ts +26 -1
  174. package/src/func/builtins/datetime.ts +9 -9
  175. package/src/func/builtins/explain.ts +53 -53
  176. package/src/func/builtins/generation.ts +2 -2
  177. package/src/func/builtins/index.ts +20 -1
  178. package/src/func/builtins/json-tvf.ts +17 -17
  179. package/src/func/builtins/json.ts +11 -11
  180. package/src/func/builtins/scalar.ts +205 -14
  181. package/src/func/builtins/schema.ts +18 -18
  182. package/src/func/builtins/string.ts +93 -80
  183. package/src/func/builtins/timespan.ts +179 -0
  184. package/src/func/registration.ts +35 -5
  185. package/src/index.ts +2 -1
  186. package/src/parser/parser.ts +2 -2
  187. package/src/planner/building/constraint-builder.ts +2 -2
  188. package/src/planner/building/delete.ts +3 -3
  189. package/src/planner/building/function-call.ts +44 -3
  190. package/src/planner/building/insert.ts +3 -3
  191. package/src/planner/building/select.ts +3 -2
  192. package/src/planner/building/update.ts +7 -7
  193. package/src/planner/nodes/aggregate-function.ts +13 -3
  194. package/src/planner/nodes/cte-node.ts +2 -2
  195. package/src/planner/nodes/declarative-schema.ts +3 -3
  196. package/src/planner/nodes/function.ts +8 -3
  197. package/src/planner/nodes/insert-node.ts +1 -1
  198. package/src/planner/nodes/pragma.ts +4 -3
  199. package/src/planner/nodes/reference.ts +1 -1
  200. package/src/planner/nodes/scalar.ts +54 -102
  201. package/src/planner/nodes/sequencing-node.ts +2 -2
  202. package/src/planner/nodes/sink-node.ts +2 -2
  203. package/src/planner/nodes/subquery.ts +5 -7
  204. package/src/planner/nodes/view-reference-node.ts +2 -2
  205. package/src/planner/nodes/window-function.ts +3 -3
  206. package/src/planner/rules/access/rule-select-access-path.ts +1 -1
  207. package/src/planner/rules/retrieve/rule-grow-retrieve.ts +1 -1
  208. package/src/planner/scopes/global.ts +3 -3
  209. package/src/planner/scopes/param.ts +2 -2
  210. package/src/planner/type-utils.ts +6 -14
  211. package/src/runtime/emit/between.ts +2 -2
  212. package/src/runtime/emit/binary.ts +74 -30
  213. package/src/runtime/emit/subquery.ts +8 -8
  214. package/src/runtime/emit/temporal-arithmetic.ts +302 -0
  215. package/src/runtime/emit/unary.ts +17 -4
  216. package/src/schema/catalog.ts +3 -3
  217. package/src/schema/column.ts +0 -3
  218. package/src/schema/function.ts +29 -1
  219. package/src/schema/table.ts +5 -7
  220. package/src/types/index.ts +1 -1
  221. package/src/types/registry.ts +5 -1
  222. package/src/types/temporal-types.ts +123 -0
  223. package/src/util/plan-formatter.ts +1 -4
  224. package/src/util/row-descriptor.ts +2 -2
  225. package/src/vtab/best-access-plan.ts +4 -3
  226. package/src/vtab/memory/module.ts +1 -1
@@ -1,7 +1,6 @@
1
- import { SqlDataType, StatusCode } from '../common/types.js'; // Import SqlValue and ensure SqlDataType is not type-only
1
+ import { StatusCode } from '../common/types.js'; // Import SqlValue and ensure SqlDataType is not type-only
2
2
  import { QuereusError } from '../common/errors.js';
3
- // Note: getAffinity from '../schema/column.js' is used by the ColumnSchema type from table.js itself if that's what we use.
4
- // If tableSchema.columns are of type from '../schema/column.js', then their affinity is already SqlDataType.
3
+ import { inferLogicalTypeFromValue } from '../common/type-inference.js';
5
4
  /**
6
5
  * Converts a TableSchema (from src/schema/table.ts) to a RelationType (from src/common/datatype.ts).
7
6
  * This is used by PlanNodes that source data directly from a base table.
@@ -12,7 +11,7 @@ export function relationTypeFromTableSchema(tableSchema) {
12
11
  name: col.name,
13
12
  type: {
14
13
  typeClass: 'scalar',
15
- affinity: col.affinity,
14
+ logicalType: col.logicalType,
16
15
  collationName: col.collation,
17
16
  nullable: !col.notNull,
18
17
  isReadOnly: false,
@@ -45,24 +44,10 @@ export function relationTypeFromTableSchema(tableSchema) {
45
44
  * @returns A ScalarType representing the inferred type of the value.
46
45
  */
47
46
  export function getParameterScalarType(value) {
48
- let affinity;
49
- if (value === null)
50
- affinity = SqlDataType.NULL;
51
- else if (typeof value === 'number')
52
- affinity = SqlDataType.REAL;
53
- else if (typeof value === 'bigint')
54
- affinity = SqlDataType.INTEGER;
55
- else if (typeof value === 'string')
56
- affinity = SqlDataType.TEXT;
57
- else if (value instanceof Uint8Array)
58
- affinity = SqlDataType.BLOB;
59
- else if (typeof value === 'boolean')
60
- affinity = SqlDataType.INTEGER; // Store booleans as INTEGER
61
- else
62
- affinity = SqlDataType.BLOB; // Default for unknown types that might pass as SqlValue
47
+ const logicalType = inferLogicalTypeFromValue(value);
63
48
  return {
64
49
  typeClass: 'scalar',
65
- affinity: affinity,
50
+ logicalType,
66
51
  nullable: true, // No guarantees about the value, so it's nullable
67
52
  isReadOnly: true, // Parameters are read-only within the query execution context
68
53
  };
@@ -80,7 +65,7 @@ export function columnSchemaToDef(colName, colDef) {
80
65
  name: colName,
81
66
  type: {
82
67
  typeClass: 'scalar',
83
- affinity: colDef.affinity,
68
+ logicalType: colDef.logicalType,
84
69
  collationName: colDef.collation,
85
70
  nullable: !colDef.notNull,
86
71
  isReadOnly: false,
@@ -1 +1 @@
1
- {"version":3,"file":"type-utils.js","sourceRoot":"","sources":["../../../src/planner/type-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-utils.js","sourceRoot":"","sources":["../../../src/planner/type-utils.ts"],"names":[],"mappings":"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"}
@@ -18,10 +18,10 @@ export function emitBetween(plan, ctx) {
18
18
  const lowerResult = compareSqlValuesFast(coercedValue1, coercedLower, collationFunc);
19
19
  const upperResult = compareSqlValuesFast(coercedValue2, coercedUpper, collationFunc);
20
20
  // value >= lowerBound AND value <= upperBound
21
- const betweenResult = (lowerResult >= 0 && upperResult <= 0) ? 1 : 0;
21
+ const betweenResult = (lowerResult >= 0 && upperResult <= 0);
22
22
  // Handle NOT BETWEEN
23
23
  if (plan.expression.not) {
24
- return betweenResult ? 0 : 1;
24
+ return !betweenResult;
25
25
  }
26
26
  return betweenResult;
27
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"between.js","sourceRoot":"","sources":["../../../../src/runtime/emit/between.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,MAAM,UAAU,WAAW,CAAC,IAAiB,EAAE,GAAoB;IAClE,+FAA+F;IAC/F,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEjD,SAAS,GAAG,CAAC,GAAmB,EAAE,KAAe,EAAE,UAAoB,EAAE,UAAoB;QAC5F,mDAAmD;QACnD,mDAAmD;QACnD,wDAAwD;QACxD,IAAI,KAAK,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YAClE,OAAO,IAAI,CAAC;QACb,CAAC;QAED,wCAAwC;QACxC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC7E,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAE7E,8DAA8D;QAC9D,MAAM,WAAW,GAAG,oBAAoB,CAAC,aAAa,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;QACrF,MAAM,WAAW,GAAG,oBAAoB,CAAC,aAAa,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;QAErF,8CAA8C;QAC9C,MAAM,aAAa,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAErE,qBAAqB;QACrB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YACzB,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,aAAa,CAAC;IACtB,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEhD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpD,OAAO;QACN,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;QACzC,GAAG,EAAE,GAAqB;QAC1B,IAAI,EAAE,GAAG,SAAS,SAAS;KAC3B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"between.js","sourceRoot":"","sources":["../../../../src/runtime/emit/between.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,MAAM,UAAU,WAAW,CAAC,IAAiB,EAAE,GAAoB;IAClE,+FAA+F;IAC/F,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEjD,SAAS,GAAG,CAAC,GAAmB,EAAE,KAAe,EAAE,UAAoB,EAAE,UAAoB;QAC5F,mDAAmD;QACnD,mDAAmD;QACnD,wDAAwD;QACxD,IAAI,KAAK,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YAClE,OAAO,IAAI,CAAC;QACb,CAAC;QAED,wCAAwC;QACxC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC7E,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAE7E,8DAA8D;QAC9D,MAAM,WAAW,GAAG,oBAAoB,CAAC,aAAa,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;QACrF,MAAM,WAAW,GAAG,oBAAoB,CAAC,aAAa,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;QAErF,8CAA8C;QAC9C,MAAM,aAAa,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,CAAC,CAAC;QAE7D,qBAAqB;QACrB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YACzB,OAAO,CAAC,aAAa,CAAC;QACvB,CAAC;QAED,OAAO,aAAa,CAAC;IACtB,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEhD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpD,OAAO;QACN,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;QACzC,GAAG,EAAE,GAAqB;QAC1B,IAAI,EAAE,GAAG,SAAS,SAAS;KAC3B,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/binary.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAKlE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAgClF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAgEnF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAiGtF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAmBlF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAuDnF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAuBhF"}
1
+ {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/binary.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAKlE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAgClF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAuEnF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAqItF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAmBlF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAuDnF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAuBhF"}
@@ -4,6 +4,7 @@ import { emitPlanNode } from "../emitters.js";
4
4
  import { compareSqlValuesFast, resolveCollation } from "../../util/comparison.js";
5
5
  import { coerceForComparison, coerceToNumberForArithmetic } from "../../util/coercion.js";
6
6
  import { simpleLike } from "../../util/patterns.js";
7
+ import { tryTemporalArithmetic, tryTemporalComparison } from "./temporal-arithmetic.js";
7
8
  export function emitBinaryOp(plan, ctx) {
8
9
  // Normalize operator to uppercase for case-insensitive matching of keywords
9
10
  const operator = plan.expression.operator.toUpperCase();
@@ -64,6 +65,12 @@ export function emitNumericOp(plan, ctx) {
64
65
  throw new QuereusError(`Unsupported numeric operator: ${plan.expression.operator}`, StatusCode.UNSUPPORTED);
65
66
  }
66
67
  function run(ctx, v1, v2) {
68
+ // Try temporal arithmetic first
69
+ const temporalResult = tryTemporalArithmetic(plan.expression.operator, v1, v2);
70
+ if (temporalResult !== undefined) {
71
+ return temporalResult;
72
+ }
73
+ // Fall back to numeric arithmetic
67
74
  if (v1 !== null && v2 !== null) {
68
75
  if (typeof v1 === 'bigint' || typeof v2 === 'bigint') {
69
76
  try {
@@ -114,16 +121,22 @@ export function emitComparisonOp(plan, ctx) {
114
121
  }
115
122
  // Pre-resolve collation function for optimal performance
116
123
  const collationFunc = resolveCollation(collationName);
117
- switch (plan.expression.operator) {
124
+ const operator = plan.expression.operator;
125
+ switch (operator) {
118
126
  case '=':
119
127
  case '==':
120
128
  run = (ctx, v1, v2) => {
121
129
  // SQL comparison: NULL = anything -> NULL
122
130
  if (v1 === null || v2 === null)
123
131
  return null;
132
+ // Try temporal comparison first
133
+ const temporalResult = tryTemporalComparison(operator, v1, v2);
134
+ if (temporalResult !== undefined) {
135
+ return temporalResult;
136
+ }
124
137
  // Apply type coercion before comparison
125
138
  const [coercedV1, coercedV2] = coerceForComparison(v1, v2);
126
- return compareSqlValuesFast(coercedV1, coercedV2, collationFunc) === 0 ? 1 : 0;
139
+ return compareSqlValuesFast(coercedV1, coercedV2, collationFunc) === 0;
127
140
  };
128
141
  break;
129
142
  case '!=':
@@ -132,9 +145,14 @@ export function emitComparisonOp(plan, ctx) {
132
145
  // SQL comparison: NULL != anything -> NULL
133
146
  if (v1 === null || v2 === null)
134
147
  return null;
148
+ // Try temporal comparison first
149
+ const temporalResult = tryTemporalComparison(operator, v1, v2);
150
+ if (temporalResult !== undefined) {
151
+ return temporalResult;
152
+ }
135
153
  // Apply type coercion before comparison
136
154
  const [coercedV1, coercedV2] = coerceForComparison(v1, v2);
137
- return compareSqlValuesFast(coercedV1, coercedV2, collationFunc) !== 0 ? 1 : 0;
155
+ return compareSqlValuesFast(coercedV1, coercedV2, collationFunc) !== 0;
138
156
  };
139
157
  break;
140
158
  case '<':
@@ -142,9 +160,14 @@ export function emitComparisonOp(plan, ctx) {
142
160
  // SQL comparison: NULL < anything -> NULL
143
161
  if (v1 === null || v2 === null)
144
162
  return null;
163
+ // Try temporal comparison first
164
+ const temporalResult = tryTemporalComparison(operator, v1, v2);
165
+ if (temporalResult !== undefined) {
166
+ return temporalResult;
167
+ }
145
168
  // Apply type coercion before comparison
146
169
  const [coercedV1, coercedV2] = coerceForComparison(v1, v2);
147
- return compareSqlValuesFast(coercedV1, coercedV2, collationFunc) < 0 ? 1 : 0;
170
+ return compareSqlValuesFast(coercedV1, coercedV2, collationFunc) < 0;
148
171
  };
149
172
  break;
150
173
  case '<=':
@@ -152,9 +175,14 @@ export function emitComparisonOp(plan, ctx) {
152
175
  // SQL comparison: NULL <= anything -> NULL
153
176
  if (v1 === null || v2 === null)
154
177
  return null;
178
+ // Try temporal comparison first
179
+ const temporalResult = tryTemporalComparison(operator, v1, v2);
180
+ if (temporalResult !== undefined) {
181
+ return temporalResult;
182
+ }
155
183
  // Apply type coercion before comparison
156
184
  const [coercedV1, coercedV2] = coerceForComparison(v1, v2);
157
- return compareSqlValuesFast(coercedV1, coercedV2, collationFunc) <= 0 ? 1 : 0;
185
+ return compareSqlValuesFast(coercedV1, coercedV2, collationFunc) <= 0;
158
186
  };
159
187
  break;
160
188
  case '>':
@@ -163,11 +191,14 @@ export function emitComparisonOp(plan, ctx) {
163
191
  if (v1 === null || v2 === null) {
164
192
  return null;
165
193
  }
194
+ // Try temporal comparison first
195
+ const temporalResult = tryTemporalComparison(operator, v1, v2);
196
+ if (temporalResult !== undefined) {
197
+ return temporalResult;
198
+ }
166
199
  // Apply type coercion before comparison
167
200
  const [coercedV1, coercedV2] = coerceForComparison(v1, v2);
168
- const comparisonResult = compareSqlValuesFast(coercedV1, coercedV2, collationFunc);
169
- const finalResult = comparisonResult > 0 ? 1 : 0;
170
- return finalResult;
201
+ return compareSqlValuesFast(coercedV1, coercedV2, collationFunc) > 0;
171
202
  };
172
203
  break;
173
204
  case '>=':
@@ -175,13 +206,18 @@ export function emitComparisonOp(plan, ctx) {
175
206
  // SQL comparison: NULL >= anything -> NULL
176
207
  if (v1 === null || v2 === null)
177
208
  return null;
209
+ // Try temporal comparison first
210
+ const temporalResult = tryTemporalComparison(operator, v1, v2);
211
+ if (temporalResult !== undefined) {
212
+ return temporalResult;
213
+ }
178
214
  // Apply type coercion before comparison
179
215
  const [coercedV1, coercedV2] = coerceForComparison(v1, v2);
180
- return compareSqlValuesFast(coercedV1, coercedV2, collationFunc) >= 0 ? 1 : 0;
216
+ return compareSqlValuesFast(coercedV1, coercedV2, collationFunc) >= 0;
181
217
  };
182
218
  break;
183
219
  default:
184
- throw new QuereusError(`Unsupported comparison operator: ${plan.expression.operator}`, StatusCode.UNSUPPORTED);
220
+ throw new QuereusError(`Unsupported comparison operator: ${operator}`, StatusCode.UNSUPPORTED);
185
221
  }
186
222
  const leftExpr = emitPlanNode(plan.left, ctx);
187
223
  const rightExpr = emitPlanNode(plan.right, ctx);
@@ -216,39 +252,39 @@ export function emitLogicalOp(plan, ctx) {
216
252
  // SQL three-valued logic
217
253
  switch (operator) {
218
254
  case 'AND': {
219
- // NULL AND x -> NULL if x is true or NULL, otherwise 0
220
- // 0 AND x -> 0
221
- // 1 AND x -> x
255
+ // NULL AND x -> NULL if x is true or NULL, otherwise false
256
+ // false AND x -> false
257
+ // true AND x -> x
222
258
  if (v1 === null) {
223
- return (v2 === null || v2) ? null : 0;
259
+ return (v2 === null || v2) ? null : false;
224
260
  }
225
261
  if (!v1)
226
- return 0;
227
- return v2 === null ? null : (v2 ? 1 : 0);
262
+ return false;
263
+ return v2 === null ? null : (v2 ? true : false);
228
264
  }
229
265
  case 'OR': {
230
- // NULL OR x -> NULL if x is false or NULL, otherwise 1
231
- // 1 OR x -> 1
232
- // 0 OR x -> x
266
+ // NULL OR x -> NULL if x is false or NULL, otherwise true
267
+ // true OR x -> true
268
+ // false OR x -> x
233
269
  if (v1 === null) {
234
- return (v2 === null || !v2) ? null : 1;
270
+ return (v2 === null || !v2) ? null : true;
235
271
  }
236
272
  if (v1)
237
- return 1;
238
- return v2 === null ? null : (v2 ? 1 : 0);
273
+ return true;
274
+ return v2 === null ? null : (v2 ? true : false);
239
275
  }
240
276
  case 'XOR': {
241
277
  // NULL XOR x -> NULL
242
278
  // x XOR NULL -> NULL
243
- // 0 XOR 0 -> 0
244
- // 0 XOR 1 -> 1
245
- // 1 XOR 0 -> 1
246
- // 1 XOR 1 -> 0
279
+ // false XOR false -> false
280
+ // false XOR true -> true
281
+ // true XOR false -> true
282
+ // true XOR true -> false
247
283
  if (v1 === null || v2 === null)
248
284
  return null;
249
- const b1 = v1 ? 1 : 0;
250
- const b2 = v2 ? 1 : 0;
251
- return b1 !== b2 ? 1 : 0;
285
+ const b1 = !!v1;
286
+ const b2 = !!v2;
287
+ return b1 !== b2;
252
288
  }
253
289
  default:
254
290
  throw new QuereusError(`Unsupported logical operator: ${plan.expression.operator}`, StatusCode.UNSUPPORTED);
@@ -272,7 +308,7 @@ export function emitLikeOp(plan, ctx) {
272
308
  // Convert both operands to strings and perform LIKE matching
273
309
  const textStr = String(text);
274
310
  const patternStr = String(pattern);
275
- return simpleLike(patternStr, textStr) ? 1 : 0;
311
+ return simpleLike(patternStr, textStr);
276
312
  }
277
313
  const leftExpr = emitPlanNode(plan.left, ctx);
278
314
  const rightExpr = emitPlanNode(plan.right, ctx);
@@ -1 +1 @@
1
- {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../../../src/runtime/emit/binary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../../../src/runtime/emit/binary.ts"],"names":[],"mappings":"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"}
@@ -49,12 +49,12 @@ export function emitIn(plan, ctx) {
49
49
  }
50
50
  // Check for match immediately - no need to materialize
51
51
  if (compareSqlValuesFast(condition, rowValue, collation) === 0) {
52
- return 1; // Found a match
52
+ return true; // Found a match
53
53
  }
54
54
  }
55
55
  }
56
56
  // No match found - if any value was NULL, result is NULL
57
- return hasNull ? null : 0;
57
+ return hasNull ? null : false;
58
58
  }
59
59
  const sourceInstruction = emitPlanNode(plan.source, ctx);
60
60
  const conditionExpr = emitPlanNode(plan.condition, ctx);
@@ -80,10 +80,10 @@ export function emitIn(plan, ctx) {
80
80
  // Check if condition exists in pre-built tree
81
81
  const path = tree.find(condition);
82
82
  if (path.on) {
83
- return 1; // Found a match
83
+ return true; // Found a match
84
84
  }
85
85
  // No match found - if any value was NULL, result is NULL
86
- return hasNull ? null : 0;
86
+ return hasNull ? null : false;
87
87
  }
88
88
  const values = plan.values.map(val => val.getValue());
89
89
  let runFunc;
@@ -133,11 +133,11 @@ export function emitIn(plan, ctx) {
133
133
  continue;
134
134
  }
135
135
  if (compareSqlValuesFast(condition, value, collation) === 0) {
136
- return 1; // Found a match
136
+ return true; // Found a match
137
137
  }
138
138
  }
139
139
  // No match found - if any value was NULL, result is NULL
140
- return hasNull ? null : 0;
140
+ return hasNull ? null : false;
141
141
  }
142
142
  const conditionExpr = emitPlanNode(plan.condition, ctx);
143
143
  const valueExprs = plan.values.map(val => emitPlanNode(val, ctx));
@@ -155,9 +155,9 @@ export function emitIn(plan, ctx) {
155
155
  export function emitExists(plan, ctx) {
156
156
  async function run(_rctx, input) {
157
157
  for await (const _row of input) {
158
- return 1; // First row => TRUE
158
+ return true; // First row => TRUE
159
159
  }
160
- return 0; // Empty => FALSE
160
+ return false; // Empty => FALSE
161
161
  }
162
162
  const innerInstruction = emitPlanNode(plan.subquery, ctx);
163
163
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"subquery.js","sourceRoot":"","sources":["../../../../src/runtime/emit/subquery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subquery.js","sourceRoot":"","sources":["../../../../src/runtime/emit/subquery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { SqlValue } from "../../common/types.js";
2
+ import type { Instruction } from "../types.js";
3
+ import type { BinaryOpNode } from "../../planner/nodes/scalar.js";
4
+ import type { EmissionContext } from "../emission-context.js";
5
+ /**
6
+ * Try to perform temporal arithmetic on two values.
7
+ * Returns the result if successful, or undefined if the values are not temporal types.
8
+ * Throws QuereusError if the operation is invalid.
9
+ */
10
+ export declare function tryTemporalArithmetic(operator: string, v1: SqlValue, v2: SqlValue): SqlValue | undefined;
11
+ /**
12
+ * Emit temporal arithmetic operations
13
+ * Handles operations between temporal types (DATE, TIME, DATETIME, TIMESPAN)
14
+ */
15
+ export declare function emitTemporalArithmetic(plan: BinaryOpNode, ctx: EmissionContext): Instruction;
16
+ /**
17
+ * Attempts to perform temporal comparison. Returns undefined if not a temporal comparison.
18
+ * This allows the caller to fall back to standard comparison logic.
19
+ *
20
+ * Temporal types that need special comparison logic (beyond lexicographic string comparison):
21
+ * - TIMESPAN: Durations need to be compared semantically, not lexicographically
22
+ * (e.g., "PT30M" > "PT1H" lexicographically, but 30 minutes < 1 hour semantically)
23
+ *
24
+ * Note: DATE, TIME, and DATETIME use ISO 8601 format which compares correctly lexicographically,
25
+ * so they don't need special handling here.
26
+ *
27
+ * @param operator The comparison operator (=, !=, <, <=, >, >=)
28
+ * @param v1 First value
29
+ * @param v2 Second value
30
+ * @returns Comparison result (boolean) if temporal comparison, undefined otherwise
31
+ */
32
+ export declare function tryTemporalComparison(operator: string, v1: SqlValue, v2: SqlValue): SqlValue | undefined;
33
+ //# sourceMappingURL=temporal-arithmetic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal-arithmetic.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/temporal-arithmetic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAwC9D;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAsLxG;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAe5F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CA6BxG"}