@quereus/quereus 0.5.2 → 0.6.0

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 (214) 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/explain.js +53 -53
  22. package/dist/src/func/builtins/explain.js.map +1 -1
  23. package/dist/src/func/builtins/generation.js +2 -2
  24. package/dist/src/func/builtins/generation.js.map +1 -1
  25. package/dist/src/func/builtins/index.d.ts.map +1 -1
  26. package/dist/src/func/builtins/index.js +16 -1
  27. package/dist/src/func/builtins/index.js.map +1 -1
  28. package/dist/src/func/builtins/json-tvf.js +17 -17
  29. package/dist/src/func/builtins/json-tvf.js.map +1 -1
  30. package/dist/src/func/builtins/scalar.d.ts.map +1 -1
  31. package/dist/src/func/builtins/scalar.js +202 -13
  32. package/dist/src/func/builtins/scalar.js.map +1 -1
  33. package/dist/src/func/builtins/schema.js +18 -18
  34. package/dist/src/func/builtins/schema.js.map +1 -1
  35. package/dist/src/func/builtins/string.d.ts.map +1 -1
  36. package/dist/src/func/builtins/string.js +56 -47
  37. package/dist/src/func/builtins/string.js.map +1 -1
  38. package/dist/src/func/builtins/timespan.d.ts +45 -0
  39. package/dist/src/func/builtins/timespan.d.ts.map +1 -0
  40. package/dist/src/func/builtins/timespan.js +147 -0
  41. package/dist/src/func/builtins/timespan.js.map +1 -0
  42. package/dist/src/func/registration.d.ts +26 -0
  43. package/dist/src/func/registration.d.ts.map +1 -1
  44. package/dist/src/func/registration.js +9 -5
  45. package/dist/src/func/registration.js.map +1 -1
  46. package/dist/src/index.d.ts +1 -1
  47. package/dist/src/index.d.ts.map +1 -1
  48. package/dist/src/index.js +1 -1
  49. package/dist/src/index.js.map +1 -1
  50. package/dist/src/parser/parser.js +2 -2
  51. package/dist/src/parser/parser.js.map +1 -1
  52. package/dist/src/planner/building/constraint-builder.js +2 -2
  53. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  54. package/dist/src/planner/building/delete.js +3 -3
  55. package/dist/src/planner/building/delete.js.map +1 -1
  56. package/dist/src/planner/building/function-call.d.ts.map +1 -1
  57. package/dist/src/planner/building/function-call.js +24 -4
  58. package/dist/src/planner/building/function-call.js.map +1 -1
  59. package/dist/src/planner/building/insert.js +3 -3
  60. package/dist/src/planner/building/insert.js.map +1 -1
  61. package/dist/src/planner/building/select.d.ts.map +1 -1
  62. package/dist/src/planner/building/select.js +3 -2
  63. package/dist/src/planner/building/select.js.map +1 -1
  64. package/dist/src/planner/building/update.js +7 -7
  65. package/dist/src/planner/building/update.js.map +1 -1
  66. package/dist/src/planner/nodes/aggregate-function.d.ts +2 -1
  67. package/dist/src/planner/nodes/aggregate-function.d.ts.map +1 -1
  68. package/dist/src/planner/nodes/aggregate-function.js +10 -3
  69. package/dist/src/planner/nodes/aggregate-function.js.map +1 -1
  70. package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
  71. package/dist/src/planner/nodes/cte-node.js +2 -2
  72. package/dist/src/planner/nodes/cte-node.js.map +1 -1
  73. package/dist/src/planner/nodes/declarative-schema.js +3 -3
  74. package/dist/src/planner/nodes/declarative-schema.js.map +1 -1
  75. package/dist/src/planner/nodes/function.d.ts +2 -1
  76. package/dist/src/planner/nodes/function.d.ts.map +1 -1
  77. package/dist/src/planner/nodes/function.js +6 -3
  78. package/dist/src/planner/nodes/function.js.map +1 -1
  79. package/dist/src/planner/nodes/insert-node.js +1 -1
  80. package/dist/src/planner/nodes/insert-node.js.map +1 -1
  81. package/dist/src/planner/nodes/pragma.d.ts +1 -1
  82. package/dist/src/planner/nodes/pragma.d.ts.map +1 -1
  83. package/dist/src/planner/nodes/pragma.js +3 -3
  84. package/dist/src/planner/nodes/pragma.js.map +1 -1
  85. package/dist/src/planner/nodes/reference.js +1 -1
  86. package/dist/src/planner/nodes/reference.js.map +1 -1
  87. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  88. package/dist/src/planner/nodes/scalar.js +55 -101
  89. package/dist/src/planner/nodes/scalar.js.map +1 -1
  90. package/dist/src/planner/nodes/sequencing-node.js +2 -2
  91. package/dist/src/planner/nodes/sequencing-node.js.map +1 -1
  92. package/dist/src/planner/nodes/sink-node.js +2 -2
  93. package/dist/src/planner/nodes/sink-node.js.map +1 -1
  94. package/dist/src/planner/nodes/subquery.d.ts.map +1 -1
  95. package/dist/src/planner/nodes/subquery.js +4 -7
  96. package/dist/src/planner/nodes/subquery.js.map +1 -1
  97. package/dist/src/planner/nodes/view-reference-node.d.ts.map +1 -1
  98. package/dist/src/planner/nodes/view-reference-node.js +2 -2
  99. package/dist/src/planner/nodes/view-reference-node.js.map +1 -1
  100. package/dist/src/planner/nodes/window-function.js +3 -3
  101. package/dist/src/planner/nodes/window-function.js.map +1 -1
  102. package/dist/src/planner/rules/access/rule-select-access-path.js +1 -1
  103. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  104. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +1 -1
  105. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  106. package/dist/src/planner/scopes/global.js +3 -3
  107. package/dist/src/planner/scopes/global.js.map +1 -1
  108. package/dist/src/planner/scopes/param.d.ts.map +1 -1
  109. package/dist/src/planner/scopes/param.js +2 -2
  110. package/dist/src/planner/scopes/param.js.map +1 -1
  111. package/dist/src/planner/type-utils.d.ts +2 -12
  112. package/dist/src/planner/type-utils.d.ts.map +1 -1
  113. package/dist/src/planner/type-utils.js +6 -21
  114. package/dist/src/planner/type-utils.js.map +1 -1
  115. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  116. package/dist/src/runtime/emit/binary.js +40 -2
  117. package/dist/src/runtime/emit/binary.js.map +1 -1
  118. package/dist/src/runtime/emit/temporal-arithmetic.d.ts +33 -0
  119. package/dist/src/runtime/emit/temporal-arithmetic.d.ts.map +1 -0
  120. package/dist/src/runtime/emit/temporal-arithmetic.js +269 -0
  121. package/dist/src/runtime/emit/temporal-arithmetic.js.map +1 -0
  122. package/dist/src/runtime/emit/unary.d.ts.map +1 -1
  123. package/dist/src/runtime/emit/unary.js +12 -0
  124. package/dist/src/runtime/emit/unary.js.map +1 -1
  125. package/dist/src/schema/catalog.js +3 -3
  126. package/dist/src/schema/catalog.js.map +1 -1
  127. package/dist/src/schema/column.d.ts +0 -3
  128. package/dist/src/schema/column.d.ts.map +1 -1
  129. package/dist/src/schema/column.js +0 -2
  130. package/dist/src/schema/column.js.map +1 -1
  131. package/dist/src/schema/function.d.ts +29 -1
  132. package/dist/src/schema/function.d.ts.map +1 -1
  133. package/dist/src/schema/function.js.map +1 -1
  134. package/dist/src/schema/table.d.ts +3 -3
  135. package/dist/src/schema/table.d.ts.map +1 -1
  136. package/dist/src/schema/table.js +4 -6
  137. package/dist/src/schema/table.js.map +1 -1
  138. package/dist/src/types/index.d.ts +1 -1
  139. package/dist/src/types/index.d.ts.map +1 -1
  140. package/dist/src/types/index.js +1 -1
  141. package/dist/src/types/index.js.map +1 -1
  142. package/dist/src/types/registry.d.ts.map +1 -1
  143. package/dist/src/types/registry.js +5 -1
  144. package/dist/src/types/registry.js.map +1 -1
  145. package/dist/src/types/temporal-types.d.ts +5 -0
  146. package/dist/src/types/temporal-types.d.ts.map +1 -1
  147. package/dist/src/types/temporal-types.js +122 -0
  148. package/dist/src/types/temporal-types.js.map +1 -1
  149. package/dist/src/util/plan-formatter.d.ts.map +1 -1
  150. package/dist/src/util/plan-formatter.js +1 -5
  151. package/dist/src/util/plan-formatter.js.map +1 -1
  152. package/dist/src/util/row-descriptor.js +2 -2
  153. package/dist/src/util/row-descriptor.js.map +1 -1
  154. package/dist/src/vtab/best-access-plan.d.ts +4 -3
  155. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  156. package/dist/src/vtab/best-access-plan.js.map +1 -1
  157. package/dist/src/vtab/memory/module.js +1 -1
  158. package/dist/src/vtab/memory/module.js.map +1 -1
  159. package/package.json +1 -1
  160. package/src/common/datatype.ts +4 -5
  161. package/src/common/type-inference.ts +13 -22
  162. package/src/core/param.ts +4 -11
  163. package/src/func/builtins/aggregate.ts +24 -2
  164. package/src/func/builtins/builtin-window-functions.ts +10 -10
  165. package/src/func/builtins/conversion.ts +26 -1
  166. package/src/func/builtins/explain.ts +53 -53
  167. package/src/func/builtins/generation.ts +2 -2
  168. package/src/func/builtins/index.ts +20 -1
  169. package/src/func/builtins/json-tvf.ts +17 -17
  170. package/src/func/builtins/scalar.ts +205 -14
  171. package/src/func/builtins/schema.ts +18 -18
  172. package/src/func/builtins/string.ts +91 -78
  173. package/src/func/builtins/timespan.ts +179 -0
  174. package/src/func/registration.ts +35 -5
  175. package/src/index.ts +2 -1
  176. package/src/parser/parser.ts +2 -2
  177. package/src/planner/building/constraint-builder.ts +2 -2
  178. package/src/planner/building/delete.ts +3 -3
  179. package/src/planner/building/function-call.ts +44 -3
  180. package/src/planner/building/insert.ts +3 -3
  181. package/src/planner/building/select.ts +3 -2
  182. package/src/planner/building/update.ts +7 -7
  183. package/src/planner/nodes/aggregate-function.ts +13 -3
  184. package/src/planner/nodes/cte-node.ts +2 -2
  185. package/src/planner/nodes/declarative-schema.ts +3 -3
  186. package/src/planner/nodes/function.ts +8 -3
  187. package/src/planner/nodes/insert-node.ts +1 -1
  188. package/src/planner/nodes/pragma.ts +4 -3
  189. package/src/planner/nodes/reference.ts +1 -1
  190. package/src/planner/nodes/scalar.ts +54 -102
  191. package/src/planner/nodes/sequencing-node.ts +2 -2
  192. package/src/planner/nodes/sink-node.ts +2 -2
  193. package/src/planner/nodes/subquery.ts +5 -7
  194. package/src/planner/nodes/view-reference-node.ts +2 -2
  195. package/src/planner/nodes/window-function.ts +3 -3
  196. package/src/planner/rules/access/rule-select-access-path.ts +1 -1
  197. package/src/planner/rules/retrieve/rule-grow-retrieve.ts +1 -1
  198. package/src/planner/scopes/global.ts +3 -3
  199. package/src/planner/scopes/param.ts +2 -2
  200. package/src/planner/type-utils.ts +6 -14
  201. package/src/runtime/emit/binary.ts +48 -2
  202. package/src/runtime/emit/temporal-arithmetic.ts +302 -0
  203. package/src/runtime/emit/unary.ts +13 -0
  204. package/src/schema/catalog.ts +3 -3
  205. package/src/schema/column.ts +0 -3
  206. package/src/schema/function.ts +29 -1
  207. package/src/schema/table.ts +5 -7
  208. package/src/types/index.ts +1 -1
  209. package/src/types/registry.ts +5 -1
  210. package/src/types/temporal-types.ts +123 -0
  211. package/src/util/plan-formatter.ts +1 -4
  212. package/src/util/row-descriptor.ts +2 -2
  213. package/src/vtab/best-access-plan.ts +4 -3
  214. 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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"}
@@ -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,CAuItF;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,13 +121,19 @@ 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
139
  return compareSqlValuesFast(coercedV1, coercedV2, collationFunc) === 0 ? 1 : 0;
@@ -132,6 +145,11 @@ 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
155
  return compareSqlValuesFast(coercedV1, coercedV2, collationFunc) !== 0 ? 1 : 0;
@@ -142,6 +160,11 @@ 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
170
  return compareSqlValuesFast(coercedV1, coercedV2, collationFunc) < 0 ? 1 : 0;
@@ -152,6 +175,11 @@ 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
185
  return compareSqlValuesFast(coercedV1, coercedV2, collationFunc) <= 0 ? 1 : 0;
@@ -163,6 +191,11 @@ 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
201
  const comparisonResult = compareSqlValuesFast(coercedV1, coercedV2, collationFunc);
@@ -175,13 +208,18 @@ export function emitComparisonOp(plan, ctx) {
175
208
  // SQL comparison: NULL >= anything -> NULL
176
209
  if (v1 === null || v2 === null)
177
210
  return null;
211
+ // Try temporal comparison first
212
+ const temporalResult = tryTemporalComparison(operator, v1, v2);
213
+ if (temporalResult !== undefined) {
214
+ return temporalResult;
215
+ }
178
216
  // Apply type coercion before comparison
179
217
  const [coercedV1, coercedV2] = coerceForComparison(v1, v2);
180
218
  return compareSqlValuesFast(coercedV1, coercedV2, collationFunc) >= 0 ? 1 : 0;
181
219
  };
182
220
  break;
183
221
  default:
184
- throw new QuereusError(`Unsupported comparison operator: ${plan.expression.operator}`, StatusCode.UNSUPPORTED);
222
+ throw new QuereusError(`Unsupported comparison operator: ${operator}`, StatusCode.UNSUPPORTED);
185
223
  }
186
224
  const leftExpr = emitPlanNode(plan.left, ctx);
187
225
  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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"}
@@ -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 (0 or 1) 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"}
@@ -0,0 +1,269 @@
1
+ import { StatusCode } from "../../common/types.js";
2
+ import { QuereusError } from "../../common/errors.js";
3
+ import { emitPlanNode } from "../emitters.js";
4
+ import { Temporal } from 'temporal-polyfill';
5
+ import { TIMESPAN_TYPE } from "../../types/temporal-types.js";
6
+ /**
7
+ * Check if a value is a date string (YYYY-MM-DD format)
8
+ */
9
+ function isDateValue(v) {
10
+ if (typeof v !== 'string')
11
+ return false;
12
+ // Simple check for ISO 8601 date format
13
+ return /^\d{4}-\d{2}-\d{2}$/.test(v);
14
+ }
15
+ /**
16
+ * Check if a value is a time string (HH:MM:SS format)
17
+ */
18
+ function isTimeValue(v) {
19
+ if (typeof v !== 'string')
20
+ return false;
21
+ // Simple check for ISO 8601 time format
22
+ return /^\d{2}:\d{2}:\d{2}/.test(v);
23
+ }
24
+ /**
25
+ * Check if a value is a datetime string (ISO 8601 format)
26
+ */
27
+ function isDateTimeValue(v) {
28
+ if (typeof v !== 'string')
29
+ return false;
30
+ // Check for ISO 8601 datetime format (with T separator)
31
+ return v.includes('T') && /^\d{4}-\d{2}-\d{2}T/.test(v);
32
+ }
33
+ /**
34
+ * Check if a value is a timespan/duration string (ISO 8601 duration format)
35
+ */
36
+ function isTimespanValue(v) {
37
+ if (typeof v !== 'string')
38
+ return false;
39
+ // ISO 8601 duration starts with P (or -P for negative)
40
+ return v.startsWith('P') || v.startsWith('-P');
41
+ }
42
+ /**
43
+ * Try to perform temporal arithmetic on two values.
44
+ * Returns the result if successful, or undefined if the values are not temporal types.
45
+ * Throws QuereusError if the operation is invalid.
46
+ */
47
+ export function tryTemporalArithmetic(operator, v1, v2) {
48
+ if (v1 === null || v2 === null)
49
+ return null;
50
+ // Detect types at runtime
51
+ const isV1Date = isDateValue(v1);
52
+ const isV1Time = isTimeValue(v1);
53
+ const isV1DateTime = isDateTimeValue(v1);
54
+ const isV1Timespan = isTimespanValue(v1);
55
+ const isV2Date = isDateValue(v2);
56
+ const isV2Time = isTimeValue(v2);
57
+ const isV2DateTime = isDateTimeValue(v2);
58
+ const isV2Timespan = isTimespanValue(v2);
59
+ // If neither operand is temporal, return undefined to signal non-temporal operation
60
+ const isV1Temporal = isV1Date || isV1Time || isV1DateTime || isV1Timespan;
61
+ const isV2Temporal = isV2Date || isV2Time || isV2DateTime || isV2Timespan;
62
+ if (!isV1Temporal && !isV2Temporal) {
63
+ return undefined;
64
+ }
65
+ try {
66
+ // DATE/DATETIME - DATE/DATETIME → TIMESPAN
67
+ if (operator === '-' &&
68
+ (isV1Date || isV1DateTime) &&
69
+ (isV2Date || isV2DateTime)) {
70
+ // Parse both values as dates
71
+ const date1 = isV1DateTime
72
+ ? Temporal.PlainDateTime.from(v1).toPlainDate()
73
+ : Temporal.PlainDate.from(v1);
74
+ const date2 = isV2DateTime
75
+ ? Temporal.PlainDateTime.from(v2).toPlainDate()
76
+ : Temporal.PlainDate.from(v2);
77
+ const duration = date1.since(date2);
78
+ return duration.toString();
79
+ }
80
+ // TIME - TIME → TIMESPAN
81
+ if (operator === '-' && isV1Time && isV2Time) {
82
+ const time1 = Temporal.PlainTime.from(v1);
83
+ const time2 = Temporal.PlainTime.from(v2);
84
+ const duration = time1.since(time2);
85
+ return duration.toString();
86
+ }
87
+ // DATE + TIMESPAN → DATE
88
+ if (operator === '+' && isV1Date && isV2Timespan) {
89
+ const date = Temporal.PlainDate.from(v1);
90
+ const duration = Temporal.Duration.from(v2);
91
+ const result = date.add(duration);
92
+ return result.toString();
93
+ }
94
+ // TIMESPAN + DATE → DATE (commutative)
95
+ if (operator === '+' && isV1Timespan && isV2Date) {
96
+ const duration = Temporal.Duration.from(v1);
97
+ const date = Temporal.PlainDate.from(v2);
98
+ const result = date.add(duration);
99
+ return result.toString();
100
+ }
101
+ // DATE - TIMESPAN → DATE
102
+ if (operator === '-' && isV1Date && isV2Timespan) {
103
+ const date = Temporal.PlainDate.from(v1);
104
+ const duration = Temporal.Duration.from(v2);
105
+ const result = date.subtract(duration);
106
+ return result.toString();
107
+ }
108
+ // DATETIME + TIMESPAN → DATETIME
109
+ if (operator === '+' && isV1DateTime && isV2Timespan) {
110
+ const dt = Temporal.PlainDateTime.from(v1);
111
+ const duration = Temporal.Duration.from(v2);
112
+ const result = dt.add(duration);
113
+ return result.toString();
114
+ }
115
+ // TIMESPAN + DATETIME → DATETIME (commutative)
116
+ if (operator === '+' && isV1Timespan && isV2DateTime) {
117
+ const duration = Temporal.Duration.from(v1);
118
+ const dt = Temporal.PlainDateTime.from(v2);
119
+ const result = dt.add(duration);
120
+ return result.toString();
121
+ }
122
+ // DATETIME - TIMESPAN → DATETIME
123
+ if (operator === '-' && isV1DateTime && isV2Timespan) {
124
+ const dt = Temporal.PlainDateTime.from(v1);
125
+ const duration = Temporal.Duration.from(v2);
126
+ const result = dt.subtract(duration);
127
+ return result.toString();
128
+ }
129
+ // TIME + TIMESPAN → TIME
130
+ if (operator === '+' && isV1Time && isV2Timespan) {
131
+ const time = Temporal.PlainTime.from(v1);
132
+ const duration = Temporal.Duration.from(v2);
133
+ const result = time.add(duration);
134
+ return result.toString();
135
+ }
136
+ // TIMESPAN + TIME → TIME (commutative)
137
+ if (operator === '+' && isV1Timespan && isV2Time) {
138
+ const duration = Temporal.Duration.from(v1);
139
+ const time = Temporal.PlainTime.from(v2);
140
+ const result = time.add(duration);
141
+ return result.toString();
142
+ }
143
+ // TIME - TIMESPAN → TIME
144
+ if (operator === '-' && isV1Time && isV2Timespan) {
145
+ const time = Temporal.PlainTime.from(v1);
146
+ const duration = Temporal.Duration.from(v2);
147
+ const result = time.subtract(duration);
148
+ return result.toString();
149
+ }
150
+ // TIMESPAN + TIMESPAN → TIMESPAN
151
+ if (operator === '+' && isV1Timespan && isV2Timespan) {
152
+ const d1 = Temporal.Duration.from(v1);
153
+ const d2 = Temporal.Duration.from(v2);
154
+ const result = d1.add(d2);
155
+ return result.toString();
156
+ }
157
+ // TIMESPAN - TIMESPAN → TIMESPAN
158
+ if (operator === '-' && isV1Timespan && isV2Timespan) {
159
+ const d1 = Temporal.Duration.from(v1);
160
+ const d2 = Temporal.Duration.from(v2);
161
+ const result = d1.subtract(d2);
162
+ return result.toString();
163
+ }
164
+ // TIMESPAN * NUMBER → TIMESPAN
165
+ if (operator === '*' && isV1Timespan && typeof v2 === 'number') {
166
+ const duration = Temporal.Duration.from(v1);
167
+ // Convert to seconds, multiply, convert back
168
+ const totalSeconds = duration.total({ unit: 'seconds' });
169
+ const newDuration = Temporal.Duration.from({ seconds: totalSeconds * v2 });
170
+ return newDuration.toString();
171
+ }
172
+ // NUMBER * TIMESPAN → TIMESPAN (commutative)
173
+ if (operator === '*' && typeof v1 === 'number' && isV2Timespan) {
174
+ const duration = Temporal.Duration.from(v2);
175
+ const totalSeconds = duration.total({ unit: 'seconds' });
176
+ const newDuration = Temporal.Duration.from({ seconds: totalSeconds * v1 });
177
+ return newDuration.toString();
178
+ }
179
+ // TIMESPAN / NUMBER → TIMESPAN
180
+ if (operator === '/' && isV1Timespan && typeof v2 === 'number') {
181
+ if (v2 === 0)
182
+ return null;
183
+ const duration = Temporal.Duration.from(v1);
184
+ const totalSeconds = duration.total({ unit: 'seconds' });
185
+ const newDuration = Temporal.Duration.from({ seconds: totalSeconds / v2 });
186
+ return newDuration.toString();
187
+ }
188
+ // TIMESPAN / TIMESPAN → NUMBER (ratio)
189
+ if (operator === '/' && isV1Timespan && isV2Timespan) {
190
+ const d1 = Temporal.Duration.from(v1);
191
+ const d2 = Temporal.Duration.from(v2);
192
+ const total1 = d1.total({ unit: 'seconds' });
193
+ const total2 = d2.total({ unit: 'seconds' });
194
+ if (total2 === 0)
195
+ return null;
196
+ return total1 / total2;
197
+ }
198
+ // If we get here, the operation is not supported
199
+ throw new QuereusError(`Unsupported temporal operation`, StatusCode.UNSUPPORTED);
200
+ }
201
+ catch (e) {
202
+ // Invalid temporal operation - return null
203
+ if (e instanceof QuereusError)
204
+ throw e;
205
+ return null;
206
+ }
207
+ }
208
+ /**
209
+ * Emit temporal arithmetic operations
210
+ * Handles operations between temporal types (DATE, TIME, DATETIME, TIMESPAN)
211
+ */
212
+ export function emitTemporalArithmetic(plan, ctx) {
213
+ const operator = plan.expression.operator;
214
+ function run(ctx, v1, v2) {
215
+ return tryTemporalArithmetic(operator, v1, v2) ?? null;
216
+ }
217
+ const leftExpr = emitPlanNode(plan.left, ctx);
218
+ const rightExpr = emitPlanNode(plan.right, ctx);
219
+ return {
220
+ params: [leftExpr, rightExpr],
221
+ run: run,
222
+ note: `${operator}(temporal)`
223
+ };
224
+ }
225
+ /**
226
+ * Attempts to perform temporal comparison. Returns undefined if not a temporal comparison.
227
+ * This allows the caller to fall back to standard comparison logic.
228
+ *
229
+ * Temporal types that need special comparison logic (beyond lexicographic string comparison):
230
+ * - TIMESPAN: Durations need to be compared semantically, not lexicographically
231
+ * (e.g., "PT30M" > "PT1H" lexicographically, but 30 minutes < 1 hour semantically)
232
+ *
233
+ * Note: DATE, TIME, and DATETIME use ISO 8601 format which compares correctly lexicographically,
234
+ * so they don't need special handling here.
235
+ *
236
+ * @param operator The comparison operator (=, !=, <, <=, >, >=)
237
+ * @param v1 First value
238
+ * @param v2 Second value
239
+ * @returns Comparison result (0 or 1) if temporal comparison, undefined otherwise
240
+ */
241
+ export function tryTemporalComparison(operator, v1, v2) {
242
+ // Check if both values are timespans
243
+ // Timespans are the only temporal type that needs special comparison logic
244
+ // because ISO 8601 duration strings don't compare correctly lexicographically
245
+ if (!isTimespanValue(v1) || !isTimespanValue(v2)) {
246
+ return undefined;
247
+ }
248
+ // Use the TIMESPAN_TYPE's compare function
249
+ const cmp = TIMESPAN_TYPE.compare(v1, v2);
250
+ switch (operator) {
251
+ case '=':
252
+ case '==':
253
+ return cmp === 0 ? 1 : 0;
254
+ case '!=':
255
+ case '<>':
256
+ return cmp !== 0 ? 1 : 0;
257
+ case '<':
258
+ return cmp < 0 ? 1 : 0;
259
+ case '<=':
260
+ return cmp <= 0 ? 1 : 0;
261
+ case '>':
262
+ return cmp > 0 ? 1 : 0;
263
+ case '>=':
264
+ return cmp >= 0 ? 1 : 0;
265
+ default:
266
+ return undefined;
267
+ }
268
+ }
269
+ //# sourceMappingURL=temporal-arithmetic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal-arithmetic.js","sourceRoot":"","sources":["../../../../src/runtime/emit/temporal-arithmetic.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"unary.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/unary.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CA8EhF"}
1
+ {"version":3,"file":"unary.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/unary.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CA0FhF"}
@@ -2,6 +2,7 @@ import { StatusCode } from "../../common/types.js";
2
2
  import { QuereusError } from "../../common/errors.js";
3
3
  import { emitPlanNode } from "../emitters.js";
4
4
  import { isTruthy } from "../../util/comparison.js";
5
+ import { Temporal } from 'temporal-polyfill';
5
6
  export function emitUnaryOp(plan, ctx) {
6
7
  // Select the operation function at emit time
7
8
  let run;
@@ -34,6 +35,17 @@ export function emitUnaryOp(plan, ctx) {
34
35
  run = (ctx, operand) => {
35
36
  if (operand === null)
36
37
  return null;
38
+ // Check if it's a timespan (ISO 8601 duration string)
39
+ if (typeof operand === 'string' && (operand.startsWith('P') || operand.startsWith('-P'))) {
40
+ try {
41
+ const duration = Temporal.Duration.from(operand);
42
+ return duration.negated().toString();
43
+ }
44
+ catch {
45
+ // Not a valid duration, fall through to numeric handling
46
+ }
47
+ }
48
+ // Numeric negation
37
49
  if (typeof operand === 'number')
38
50
  return -operand;
39
51
  if (typeof operand === 'bigint')
@@ -1 +1 @@
1
- {"version":3,"file":"unary.js","sourceRoot":"","sources":["../../../../src/runtime/emit/unary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unary.js","sourceRoot":"","sources":["../../../../src/runtime/emit/unary.ts"],"names":[],"mappings":"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"}
@@ -54,7 +54,7 @@ function tableSchemaToCatalog(tableSchema) {
54
54
  const ddl = generateTableDDL(tableSchema);
55
55
  const columns = tableSchema.columns.map(col => ({
56
56
  name: col.name,
57
- type: col.affinity?.toString() || 'TEXT',
57
+ type: col.logicalType.name,
58
58
  notNull: col.notNull,
59
59
  primaryKey: col.primaryKey
60
60
  }));
@@ -109,8 +109,8 @@ function generateTableDDL(tableSchema) {
109
109
  const columnDefs = [];
110
110
  for (const col of tableSchema.columns) {
111
111
  let colDef = `"${col.name}"`;
112
- if (col.affinity) {
113
- colDef += ` ${col.affinity}`;
112
+ if (col.logicalType) {
113
+ colDef += ` ${col.logicalType.name}`;
114
114
  }
115
115
  if (col.notNull) {
116
116
  colDef += ' NOT NULL';