@quereus/quereus 4.9.0 → 4.10.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 (147) hide show
  1. package/dist/src/core/database.d.ts.map +1 -1
  2. package/dist/src/core/database.js +19 -4
  3. package/dist/src/core/database.js.map +1 -1
  4. package/dist/src/core/statement.d.ts.map +1 -1
  5. package/dist/src/core/statement.js +74 -15
  6. package/dist/src/core/statement.js.map +1 -1
  7. package/dist/src/func/builtins/aggregate.d.ts.map +1 -1
  8. package/dist/src/func/builtins/aggregate.js +85 -33
  9. package/dist/src/func/builtins/aggregate.js.map +1 -1
  10. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  11. package/dist/src/func/builtins/explain.js +9 -2
  12. package/dist/src/func/builtins/explain.js.map +1 -1
  13. package/dist/src/func/builtins/scalar.d.ts.map +1 -1
  14. package/dist/src/func/builtins/scalar.js +4 -2
  15. package/dist/src/func/builtins/scalar.js.map +1 -1
  16. package/dist/src/func/registration.d.ts +6 -0
  17. package/dist/src/func/registration.d.ts.map +1 -1
  18. package/dist/src/func/registration.js +1 -0
  19. package/dist/src/func/registration.js.map +1 -1
  20. package/dist/src/index.d.ts +1 -0
  21. package/dist/src/index.d.ts.map +1 -1
  22. package/dist/src/index.js +6 -0
  23. package/dist/src/index.js.map +1 -1
  24. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  25. package/dist/src/planner/nodes/scalar.js +13 -1
  26. package/dist/src/planner/nodes/scalar.js.map +1 -1
  27. package/dist/src/runtime/emission-context.d.ts +14 -1
  28. package/dist/src/runtime/emission-context.d.ts.map +1 -1
  29. package/dist/src/runtime/emission-context.js +17 -5
  30. package/dist/src/runtime/emission-context.js.map +1 -1
  31. package/dist/src/runtime/emit/aggregate-setup.d.ts +44 -8
  32. package/dist/src/runtime/emit/aggregate-setup.d.ts.map +1 -1
  33. package/dist/src/runtime/emit/aggregate-setup.js +79 -15
  34. package/dist/src/runtime/emit/aggregate-setup.js.map +1 -1
  35. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  36. package/dist/src/runtime/emit/aggregate.js +21 -106
  37. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  38. package/dist/src/runtime/emit/asof-scan.js +1 -1
  39. package/dist/src/runtime/emit/asof-scan.js.map +1 -1
  40. package/dist/src/runtime/emit/between.d.ts +2 -0
  41. package/dist/src/runtime/emit/between.d.ts.map +1 -1
  42. package/dist/src/runtime/emit/between.js +7 -8
  43. package/dist/src/runtime/emit/between.js.map +1 -1
  44. package/dist/src/runtime/emit/binary.d.ts +27 -5
  45. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  46. package/dist/src/runtime/emit/binary.js +266 -177
  47. package/dist/src/runtime/emit/binary.js.map +1 -1
  48. package/dist/src/runtime/emit/case.d.ts +34 -0
  49. package/dist/src/runtime/emit/case.d.ts.map +1 -1
  50. package/dist/src/runtime/emit/case.js +18 -11
  51. package/dist/src/runtime/emit/case.js.map +1 -1
  52. package/dist/src/runtime/emit/cast.d.ts +2 -0
  53. package/dist/src/runtime/emit/cast.d.ts.map +1 -1
  54. package/dist/src/runtime/emit/cast.js +7 -5
  55. package/dist/src/runtime/emit/cast.js.map +1 -1
  56. package/dist/src/runtime/emit/column-reference.d.ts +3 -1
  57. package/dist/src/runtime/emit/column-reference.d.ts.map +1 -1
  58. package/dist/src/runtime/emit/column-reference.js +6 -2
  59. package/dist/src/runtime/emit/column-reference.js.map +1 -1
  60. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  61. package/dist/src/runtime/emit/dml-executor.js +21 -0
  62. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  63. package/dist/src/runtime/emit/filter.d.ts +1 -1
  64. package/dist/src/runtime/emit/filter.js +1 -1
  65. package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
  66. package/dist/src/runtime/emit/hash-aggregate.js +18 -88
  67. package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
  68. package/dist/src/runtime/emit/literal.d.ts +14 -1
  69. package/dist/src/runtime/emit/literal.d.ts.map +1 -1
  70. package/dist/src/runtime/emit/literal.js +33 -7
  71. package/dist/src/runtime/emit/literal.js.map +1 -1
  72. package/dist/src/runtime/emit/materialized-view-helpers.d.ts +7 -1
  73. package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
  74. package/dist/src/runtime/emit/materialized-view-helpers.js +121 -32
  75. package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
  76. package/dist/src/runtime/emit/parameter.d.ts +3 -1
  77. package/dist/src/runtime/emit/parameter.d.ts.map +1 -1
  78. package/dist/src/runtime/emit/parameter.js +7 -2
  79. package/dist/src/runtime/emit/parameter.js.map +1 -1
  80. package/dist/src/runtime/emit/scalar-function.d.ts +29 -1
  81. package/dist/src/runtime/emit/scalar-function.d.ts.map +1 -1
  82. package/dist/src/runtime/emit/scalar-function.js +66 -16
  83. package/dist/src/runtime/emit/scalar-function.js.map +1 -1
  84. package/dist/src/runtime/emit/scalar-op.d.ts +63 -0
  85. package/dist/src/runtime/emit/scalar-op.d.ts.map +1 -0
  86. package/dist/src/runtime/emit/scalar-op.js +37 -0
  87. package/dist/src/runtime/emit/scalar-op.js.map +1 -0
  88. package/dist/src/runtime/emit/scan.d.ts.map +1 -1
  89. package/dist/src/runtime/emit/scan.js +19 -1
  90. package/dist/src/runtime/emit/scan.js.map +1 -1
  91. package/dist/src/runtime/emit/temporal-arithmetic.d.ts +18 -8
  92. package/dist/src/runtime/emit/temporal-arithmetic.d.ts.map +1 -1
  93. package/dist/src/runtime/emit/temporal-arithmetic.js +29 -311
  94. package/dist/src/runtime/emit/temporal-arithmetic.js.map +1 -1
  95. package/dist/src/runtime/emit/unary.d.ts +2 -0
  96. package/dist/src/runtime/emit/unary.d.ts.map +1 -1
  97. package/dist/src/runtime/emit/unary.js +125 -53
  98. package/dist/src/runtime/emit/unary.js.map +1 -1
  99. package/dist/src/runtime/emitters.d.ts +22 -0
  100. package/dist/src/runtime/emitters.d.ts.map +1 -1
  101. package/dist/src/runtime/emitters.js +29 -0
  102. package/dist/src/runtime/emitters.js.map +1 -1
  103. package/dist/src/runtime/scalar-fusion.d.ts +47 -0
  104. package/dist/src/runtime/scalar-fusion.d.ts.map +1 -0
  105. package/dist/src/runtime/scalar-fusion.js +275 -0
  106. package/dist/src/runtime/scalar-fusion.js.map +1 -0
  107. package/dist/src/runtime/strict-flags.d.ts +9 -0
  108. package/dist/src/runtime/strict-flags.d.ts.map +1 -1
  109. package/dist/src/runtime/strict-flags.js +9 -0
  110. package/dist/src/runtime/strict-flags.js.map +1 -1
  111. package/dist/src/runtime/strict-fork.js +2 -2
  112. package/dist/src/runtime/strict-fork.js.map +1 -1
  113. package/dist/src/runtime/strict-representation.d.ts +78 -0
  114. package/dist/src/runtime/strict-representation.d.ts.map +1 -0
  115. package/dist/src/runtime/strict-representation.js +159 -0
  116. package/dist/src/runtime/strict-representation.js.map +1 -0
  117. package/dist/src/schema/function.d.ts +15 -0
  118. package/dist/src/schema/function.d.ts.map +1 -1
  119. package/dist/src/schema/function.js.map +1 -1
  120. package/dist/src/types/builtin-types.d.ts.map +1 -1
  121. package/dist/src/types/builtin-types.js +17 -8
  122. package/dist/src/types/builtin-types.js.map +1 -1
  123. package/dist/src/types/temporal-ops.d.ts +119 -0
  124. package/dist/src/types/temporal-ops.d.ts.map +1 -0
  125. package/dist/src/types/temporal-ops.js +348 -0
  126. package/dist/src/types/temporal-ops.js.map +1 -0
  127. package/dist/src/types/temporal-types.d.ts.map +1 -1
  128. package/dist/src/types/temporal-types.js +8 -3
  129. package/dist/src/types/temporal-types.js.map +1 -1
  130. package/dist/src/util/coercion.d.ts +22 -7
  131. package/dist/src/util/coercion.d.ts.map +1 -1
  132. package/dist/src/util/coercion.js +28 -15
  133. package/dist/src/util/coercion.js.map +1 -1
  134. package/dist/src/util/comparison.d.ts +25 -0
  135. package/dist/src/util/comparison.d.ts.map +1 -1
  136. package/dist/src/util/comparison.js +25 -0
  137. package/dist/src/util/comparison.js.map +1 -1
  138. package/dist/src/util/key-tuple-codec.d.ts +12 -3
  139. package/dist/src/util/key-tuple-codec.d.ts.map +1 -1
  140. package/dist/src/util/key-tuple-codec.js.map +1 -1
  141. package/dist/src/util/numeric-canonical.d.ts +26 -0
  142. package/dist/src/util/numeric-canonical.d.ts.map +1 -0
  143. package/dist/src/util/numeric-canonical.js +66 -0
  144. package/dist/src/util/numeric-canonical.js.map +1 -0
  145. package/dist/src/vtab/module.d.ts +25 -0
  146. package/dist/src/vtab/module.d.ts.map +1 -1
  147. package/package.json +4 -3
@@ -0,0 +1,348 @@
1
+ import { Temporal } from 'temporal-polyfill';
2
+ import { StatusCode } from '../common/types.js';
3
+ import { QuereusError } from '../common/errors.js';
4
+ import { DATE_TYPE, TIME_TYPE, DATETIME_TYPE, TIMESPAN_TYPE } from './temporal-types.js';
5
+ import { REAL_TYPE } from './builtin-types.js';
6
+ /** True for the four kinds that make an operation *temporal*; `'number'` alone does not. */
7
+ export function isTemporalKind(kind) {
8
+ return kind !== undefined && kind !== 'number';
9
+ }
10
+ /**
11
+ * Plan-time operand kind from a declared logical type.
12
+ *
13
+ * Identity against the registered singletons (the precedent set by
14
+ * `runtime/emit/unary.ts`'s TIMESPAN negation arm): a plugin-registered type that
15
+ * shadows a built-in name is a different object, so it fails identity and the caller
16
+ * falls back to runtime sniffing rather than mis-specializing.
17
+ *
18
+ * Returns undefined for TEXT / ANY / BLOB / NULL and for TIMESTAMP. TIMESTAMP is
19
+ * deliberately excluded: it is `isTemporal` but not `isNumeric`, it is an integer
20
+ * instant rather than a string temporal, and it appears in no case below — so
21
+ * `ts_col + 1` keeps taking the runtime-sniffed path and today's announced type.
22
+ */
23
+ export function temporalKindOfType(logical) {
24
+ if (logical === DATE_TYPE)
25
+ return 'date';
26
+ if (logical === TIME_TYPE)
27
+ return 'time';
28
+ if (logical === DATETIME_TYPE)
29
+ return 'datetime';
30
+ if (logical === TIMESPAN_TYPE)
31
+ return 'timespan';
32
+ // NULL_TYPE is not `isNumeric`, so a NULL-typed operand lands here as undefined
33
+ // and no case is selected. Either way the answer is NULL — both
34
+ // `tryTemporalArithmetic` and `runTemporalCase` short-circuit on a null value
35
+ // before any kind is consulted.
36
+ if (logical.isNumeric && !logical.isTemporal)
37
+ return 'number';
38
+ return undefined;
39
+ }
40
+ /**
41
+ * Runtime operand kind from an actual value — the shape probes that used to sit at the
42
+ * top of `tryTemporalArithmetic`, with unchanged semantics.
43
+ *
44
+ * The four string shapes are mutually exclusive on canonical values, so probe order is
45
+ * not observable.
46
+ *
47
+ * `bigint` deliberately yields undefined rather than `'number'` — see the NOTE on the
48
+ * `*` / `/` number cases below.
49
+ */
50
+ export function temporalKindOfValue(v) {
51
+ if (typeof v === 'string') {
52
+ // ISO 8601 date (YYYY-MM-DD)
53
+ if (/^\d{4}-\d{2}-\d{2}$/.test(v))
54
+ return 'date';
55
+ // ISO 8601 datetime (with T separator)
56
+ if (v.includes('T') && /^\d{4}-\d{2}-\d{2}T/.test(v))
57
+ return 'datetime';
58
+ // ISO 8601 time (HH:MM:SS)
59
+ if (/^\d{2}:\d{2}:\d{2}/.test(v))
60
+ return 'time';
61
+ // ISO 8601 duration (starts with P, or -P when negative)
62
+ if (v.startsWith('P') || v.startsWith('-P'))
63
+ return 'timespan';
64
+ return undefined;
65
+ }
66
+ if (typeof v === 'number')
67
+ return 'number';
68
+ return undefined;
69
+ }
70
+ /** The one home for the "no such combination" error, so both callers spell it alike. */
71
+ export function unsupportedTemporalOp() {
72
+ throw new QuereusError(`Unsupported temporal operation`, StatusCode.UNSUPPORTED);
73
+ }
74
+ /**
75
+ * Check if a Temporal.Duration contains calendar units (years, months, weeks)
76
+ * that cannot be converted to a single time unit without a relativeTo reference.
77
+ */
78
+ export function hasCalendarUnits(d) {
79
+ return d.years !== 0 || d.months !== 0 || d.weeks !== 0;
80
+ }
81
+ /**
82
+ * Scale each field of a duration by a factor.
83
+ * Works for both calendar and non-calendar durations.
84
+ */
85
+ export function scaleDuration(d, factor) {
86
+ return Temporal.Duration.from({
87
+ years: d.years * factor,
88
+ months: d.months * factor,
89
+ weeks: d.weeks * factor,
90
+ days: d.days * factor,
91
+ hours: d.hours * factor,
92
+ minutes: d.minutes * factor,
93
+ seconds: d.seconds * factor,
94
+ milliseconds: d.milliseconds * factor,
95
+ microseconds: d.microseconds * factor,
96
+ nanoseconds: d.nanoseconds * factor,
97
+ });
98
+ }
99
+ /**
100
+ * Divide a duration's fields by a divisor, cascading remainders to smaller units.
101
+ * Cascade chain: years→months(×12), weeks→days(×7), days→hours(×24),
102
+ * hours→minutes(×60), minutes→seconds(×60), seconds→ms(×1000),
103
+ * ms→μs(×1000), μs→ns(×1000).
104
+ * Note: months cannot cascade to days (variable month length).
105
+ */
106
+ export function divideDuration(d, divisor) {
107
+ // Cascade pairs: [field, next-field, conversion-factor]
108
+ const cascade = [
109
+ ['years', 'months', 12],
110
+ // months→days gap: no fixed conversion
111
+ ['weeks', 'days', 7],
112
+ ['days', 'hours', 24],
113
+ ['hours', 'minutes', 60],
114
+ ['minutes', 'seconds', 60],
115
+ ['seconds', 'milliseconds', 1000],
116
+ ['milliseconds', 'microseconds', 1000],
117
+ ['microseconds', 'nanoseconds', 1000],
118
+ ];
119
+ // Build a mutable map of field values
120
+ const fields = {
121
+ years: d.years, months: d.months, weeks: d.weeks,
122
+ days: d.days, hours: d.hours, minutes: d.minutes,
123
+ seconds: d.seconds, milliseconds: d.milliseconds,
124
+ microseconds: d.microseconds, nanoseconds: d.nanoseconds,
125
+ };
126
+ for (const [field, nextField, factor] of cascade) {
127
+ const value = fields[field];
128
+ const quotient = Math.trunc(value / divisor);
129
+ const remainder = value - quotient * divisor;
130
+ fields[field] = quotient;
131
+ fields[nextField] += remainder * factor;
132
+ }
133
+ // Final field (nanoseconds) — just divide, truncate to integer
134
+ fields['nanoseconds'] = Math.trunc(fields['nanoseconds'] / divisor);
135
+ // Months divide independently: the cascade above already folded years into them, but
136
+ // a month has no fixed day count, so the sub-month remainder cannot cascade onward.
137
+ // NOTE: that remainder is truncated away — `timespan('P1M') / 2` is `PT0S`, not `P15D`.
138
+ // Preserved as found; revisit if a caller needs a reference-date-relative division.
139
+ fields['months'] = Math.trunc(fields['months'] / divisor);
140
+ return Temporal.Duration.from({
141
+ years: fields['years'],
142
+ months: fields['months'],
143
+ weeks: fields['weeks'],
144
+ days: fields['days'],
145
+ hours: fields['hours'],
146
+ minutes: fields['minutes'],
147
+ seconds: fields['seconds'],
148
+ milliseconds: fields['milliseconds'],
149
+ microseconds: fields['microseconds'],
150
+ nanoseconds: fields['nanoseconds'],
151
+ });
152
+ }
153
+ /** A DATE or DATETIME operand as a PlainDate. */
154
+ function asPlainDate(v, kind) {
155
+ return kind === 'datetime'
156
+ ? Temporal.PlainDateTime.from(v).toPlainDate()
157
+ : Temporal.PlainDate.from(v);
158
+ }
159
+ /**
160
+ * DATE/DATETIME − DATE/DATETIME → TIMESPAN.
161
+ *
162
+ * NOTE: both sides collapse to a PlainDate first, so the time of day is dropped —
163
+ * `datetime('2024-01-20T10:00:00') - datetime('2024-01-15T08:00:00')` is `'P5D'`, not
164
+ * `'P5DT2H'`. Preserved verbatim from the cascade this table replaces; the fix is
165
+ * tracked separately as `bug-datetime-difference-drops-time-of-day`.
166
+ */
167
+ function dateDifference(lk, rk) {
168
+ return {
169
+ resultType: TIMESPAN_TYPE,
170
+ apply: (v1, v2) => asPlainDate(v1, lk).since(asPlainDate(v2, rk)).toString(),
171
+ };
172
+ }
173
+ /** DATE ± TIMESPAN → DATE. */
174
+ function dateShift(sign) {
175
+ return {
176
+ resultType: DATE_TYPE,
177
+ apply: (date, ts) => Temporal.PlainDate.from(date)[sign](Temporal.Duration.from(ts)).toString(),
178
+ };
179
+ }
180
+ /** DATETIME ± TIMESPAN → DATETIME. */
181
+ function dateTimeShift(sign) {
182
+ return {
183
+ resultType: DATETIME_TYPE,
184
+ apply: (dt, ts) => Temporal.PlainDateTime.from(dt)[sign](Temporal.Duration.from(ts)).toString(),
185
+ };
186
+ }
187
+ /** TIME ± TIMESPAN → TIME. */
188
+ function timeShift(sign) {
189
+ return {
190
+ resultType: TIME_TYPE,
191
+ apply: (t, ts) => Temporal.PlainTime.from(t)[sign](Temporal.Duration.from(ts)).toString(),
192
+ };
193
+ }
194
+ /** The commuted form of a shift case: `TIMESPAN + DATE` reads the same as `DATE + TIMESPAN`. */
195
+ function commuted(entry) {
196
+ return { resultType: entry.resultType, apply: (v1, v2) => entry.apply(v2, v1) };
197
+ }
198
+ /**
199
+ * TIMESPAN * NUMBER → TIMESPAN.
200
+ *
201
+ * NOTE: the `typeof n === 'number'` guard rejects `bigint`, so
202
+ * `timespan('PT1H') * 9007199254740993` raises `Unsupported temporal operation`.
203
+ * That is preserved-as-found (the old cascade's match condition was literally
204
+ * `typeof v2 === 'number'`), not designed — widening it to accept bigint is a
205
+ * separate call. The guard is unreachable on the runtime-sniffed path, where the
206
+ * kind was derived from `typeof`; it is load-bearing on the emit-time path, where a
207
+ * declared INTEGER operand can hold a bigint.
208
+ */
209
+ function scaleTimespan(ts, n) {
210
+ if (typeof n !== 'number')
211
+ unsupportedTemporalOp();
212
+ const duration = Temporal.Duration.from(ts);
213
+ if (hasCalendarUnits(duration)) {
214
+ return scaleDuration(duration, n).toString();
215
+ }
216
+ const totalSeconds = duration.total({ unit: 'seconds' });
217
+ return Temporal.Duration.from({ seconds: totalSeconds * n }).toString();
218
+ }
219
+ /** TIMESPAN / NUMBER → TIMESPAN. Divisor `0` → null. Same bigint NOTE as {@link scaleTimespan}. */
220
+ function divideTimespanByNumber(ts, n) {
221
+ if (typeof n !== 'number')
222
+ unsupportedTemporalOp();
223
+ if (n === 0)
224
+ return null;
225
+ const duration = Temporal.Duration.from(ts);
226
+ if (hasCalendarUnits(duration)) {
227
+ return divideDuration(duration, n).toString();
228
+ }
229
+ const totalSeconds = duration.total({ unit: 'seconds' });
230
+ return Temporal.Duration.from({ seconds: totalSeconds / n }).toString();
231
+ }
232
+ /** TIMESPAN / TIMESPAN → REAL (ratio of elapsed seconds). */
233
+ function timespanRatio(v1, v2) {
234
+ const d1 = Temporal.Duration.from(v1);
235
+ const d2 = Temporal.Duration.from(v2);
236
+ if (hasCalendarUnits(d1) || hasCalendarUnits(d2)) {
237
+ // Cannot compute a numeric ratio when calendar units are involved
238
+ // (months/years have variable lengths without a reference date)
239
+ return null;
240
+ }
241
+ const total1 = d1.total({ unit: 'seconds' });
242
+ const total2 = d2.total({ unit: 'seconds' });
243
+ if (total2 === 0)
244
+ return null;
245
+ return total1 / total2;
246
+ }
247
+ /**
248
+ * NOTE: the value-sniffed path builds one of these strings per row, where the old cascade
249
+ * allocated nothing. Immaterial next to the `Temporal.Duration.from` parse that follows it
250
+ * on the same row, and the emit-time specialization hoists the lookup out of the row loop
251
+ * entirely; if temporal arithmetic ever shows up in a profile without that hoist, nest the
252
+ * table two levels deep instead of keying on a concatenation.
253
+ */
254
+ function key(operator, left, right) {
255
+ return `${operator}|${left}|${right}`;
256
+ }
257
+ const DATE_PLUS_TIMESPAN = dateShift('add');
258
+ const DATETIME_PLUS_TIMESPAN = dateTimeShift('add');
259
+ const TIME_PLUS_TIMESPAN = timeShift('add');
260
+ /**
261
+ * Every supported `(operator, left kind, right kind)` combination. Anything absent —
262
+ * `%` on any pair, DATE + DATE, DATE * NUMBER, TIME − DATE, DATE − NUMBER — is
263
+ * unsupported and raises {@link unsupportedTemporalOp} at runtime.
264
+ */
265
+ const TEMPORAL_OP_CASES = new Map([
266
+ // difference of two instants → elapsed time
267
+ [key('-', 'date', 'date'), dateDifference('date', 'date')],
268
+ [key('-', 'date', 'datetime'), dateDifference('date', 'datetime')],
269
+ [key('-', 'datetime', 'date'), dateDifference('datetime', 'date')],
270
+ [key('-', 'datetime', 'datetime'), dateDifference('datetime', 'datetime')],
271
+ [key('-', 'time', 'time'), {
272
+ resultType: TIMESPAN_TYPE,
273
+ apply: (v1, v2) => Temporal.PlainTime.from(v1).since(Temporal.PlainTime.from(v2)).toString(),
274
+ }],
275
+ // instant shifted by an elapsed time → same kind of instant
276
+ [key('+', 'date', 'timespan'), DATE_PLUS_TIMESPAN],
277
+ [key('+', 'timespan', 'date'), commuted(DATE_PLUS_TIMESPAN)],
278
+ [key('-', 'date', 'timespan'), dateShift('subtract')],
279
+ [key('+', 'datetime', 'timespan'), DATETIME_PLUS_TIMESPAN],
280
+ [key('+', 'timespan', 'datetime'), commuted(DATETIME_PLUS_TIMESPAN)],
281
+ [key('-', 'datetime', 'timespan'), dateTimeShift('subtract')],
282
+ [key('+', 'time', 'timespan'), TIME_PLUS_TIMESPAN],
283
+ [key('+', 'timespan', 'time'), commuted(TIME_PLUS_TIMESPAN)],
284
+ [key('-', 'time', 'timespan'), timeShift('subtract')],
285
+ // elapsed time combined with elapsed time
286
+ [key('+', 'timespan', 'timespan'), {
287
+ resultType: TIMESPAN_TYPE,
288
+ apply: (v1, v2) => Temporal.Duration.from(v1).add(Temporal.Duration.from(v2)).toString(),
289
+ }],
290
+ [key('-', 'timespan', 'timespan'), {
291
+ resultType: TIMESPAN_TYPE,
292
+ apply: (v1, v2) => Temporal.Duration.from(v1).subtract(Temporal.Duration.from(v2)).toString(),
293
+ }],
294
+ [key('/', 'timespan', 'timespan'), { resultType: REAL_TYPE, apply: timespanRatio }],
295
+ // elapsed time scaled by a plain number
296
+ [key('*', 'timespan', 'number'), { resultType: TIMESPAN_TYPE, apply: scaleTimespan }],
297
+ [key('*', 'number', 'timespan'), { resultType: TIMESPAN_TYPE, apply: (v1, v2) => scaleTimespan(v2, v1) }],
298
+ [key('/', 'timespan', 'number'), { resultType: TIMESPAN_TYPE, apply: divideTimespanByNumber }],
299
+ ]);
300
+ /**
301
+ * Look up the case for one `(operator, left kind, right kind)` triple.
302
+ * `undefined` means the combination is not supported.
303
+ */
304
+ export function temporalOpCase(operator, left, right) {
305
+ return TEMPORAL_OP_CASES.get(key(operator, left, right));
306
+ }
307
+ /**
308
+ * The one route from two declared logical types to a case.
309
+ *
310
+ * Two callers must reach the same answer or the announced result type stops predicting
311
+ * the value: `BinaryOpNode.generateType` announces `entry.resultType`, and
312
+ * `buildNumericOpSpec`'s temporal branch emits a body that runs `entry.apply`. Neither
313
+ * re-spells the kind derivation, so the two cannot come to select different entries.
314
+ */
315
+ export function temporalOpCaseForTypes(operator, left, right) {
316
+ const lk = temporalKindOfType(left);
317
+ const rk = temporalKindOfType(right);
318
+ if (!lk || !rk)
319
+ return {};
320
+ return { kinds: [lk, rk], entry: temporalOpCase(operator, lk, rk) };
321
+ }
322
+ /** Test-only view of the table's keys, so a spec can assert its shape without re-listing it. */
323
+ export function temporalOpCaseKeys() {
324
+ return [...TEMPORAL_OP_CASES.keys()];
325
+ }
326
+ /**
327
+ * Run one case with the exact envelope `tryTemporalArithmetic` has always had:
328
+ * null propagation, then `apply`, with a malformed value degrading to null while an
329
+ * `UNSUPPORTED` error propagates.
330
+ *
331
+ * Both the runtime-sniffed path and the emit-time specialized path call this, so the
332
+ * two cannot diverge on null handling or on what a bad value does.
333
+ */
334
+ export function runTemporalCase(entry, v1, v2) {
335
+ if (v1 === null || v2 === null)
336
+ return null;
337
+ try {
338
+ return entry.apply(v1, v2);
339
+ }
340
+ catch (e) {
341
+ // UNSUPPORTED propagates; anything else means the value did not parse as the
342
+ // shape its kind promised, which is a null result rather than an error.
343
+ if (e instanceof QuereusError)
344
+ throw e;
345
+ return null;
346
+ }
347
+ }
348
+ //# sourceMappingURL=temporal-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal-ops.js","sourceRoot":"","sources":["../../../src/types/temporal-ops.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"temporal-types.d.ts","sourceRoot":"","sources":["../../../src/types/temporal-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,WAAW,EAAgB,MAAM,mBAAmB,CAAC;AAmBjF;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,WA+DvB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,WA2DvB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,WAoD3B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,EAAE,WAkE5B,CAAC;AAwEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,WAmE3B,CAAC"}
1
+ {"version":3,"file":"temporal-types.d.ts","sourceRoot":"","sources":["../../../src/types/temporal-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,WAAW,EAAgB,MAAM,mBAAmB,CAAC;AAoBjF;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,WA+DvB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,WA2DvB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,WAoD3B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,EAAE,WAsE5B,CAAC;AAwEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,WAmE3B,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { PhysicalType, compareNulls } from './logical-type.js';
2
2
  import { BINARY_COLLATION } from '../util/comparison.js';
3
+ import { canonicalizeInteger } from '../util/numeric-canonical.js';
3
4
  import { Temporal } from 'temporal-polyfill';
4
5
  /**
5
6
  * Parse any string ISO datetime form into a UTC PlainDateTime — the canonical
@@ -247,13 +248,17 @@ export const TIMESTAMP_TYPE = {
247
248
  parse: (v) => {
248
249
  if (v === null)
249
250
  return null;
251
+ // TIMESTAMP's value space is the integer domain (physicalType INTEGER), so its
252
+ // arms canonicalize exactly like INTEGER_TYPE.parse: a safe-range bigint narrows
253
+ // to number, a whole number past the boundary widens to an exact bigint (R1,
254
+ // util/numeric-canonical.ts).
250
255
  if (typeof v === 'bigint')
251
- return v;
256
+ return canonicalizeInteger(v);
252
257
  if (typeof v === 'number') {
253
258
  if (!Number.isInteger(v)) {
254
259
  throw new TypeError(`Cannot convert non-integer number '${v}' to TIMESTAMP`);
255
260
  }
256
- return v;
261
+ return canonicalizeInteger(v);
257
262
  }
258
263
  if (typeof v === 'string') {
259
264
  const trimmed = v.trim();
@@ -266,7 +271,7 @@ export const TIMESTAMP_TYPE = {
266
271
  const parsed = Number(trimmed);
267
272
  if (Number.isSafeInteger(parsed))
268
273
  return parsed;
269
- return BigInt(trimmed[0] === '+' ? trimmed.slice(1) : trimmed);
274
+ return canonicalizeInteger(BigInt(trimmed[0] === '+' ? trimmed.slice(1) : trimmed));
270
275
  }
271
276
  // ISO 8601 datetime string → epoch milliseconds. Bare datetimes are
272
277
  // treated as UTC wall-clock; offset/zone-bearing inputs convert to UTC —
@@ -1 +1 @@
1
- {"version":3,"file":"temporal-types.js","sourceRoot":"","sources":["../../../src/types/temporal-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"temporal-types.js","sourceRoot":"","sources":["../../../src/types/temporal-types.ts"],"names":[],"mappings":"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"}
@@ -34,17 +34,32 @@ export declare function coerceToNumberForArithmetic(value: SqlValue): number;
34
34
  */
35
35
  export declare function coerceForComparison(v1: SqlValue, v2: SqlValue): [SqlValue, SqlValue];
36
36
  /**
37
- * Coerces a value for aggregate function arguments.
38
- * Most aggregate functions should accept numeric strings as numbers.
39
- * For COUNT, no coercion needed. For SUM/AVG, numeric strings should be converted.
37
+ * Does this aggregate read its arguments numerically? False for COUNT, GROUP_CONCAT and
38
+ * the `JSON_*` family, which take their arguments as-is.
39
+ *
40
+ * Split out so the routing decision has one home: the aggregate emitters resolve it once
41
+ * per call site at emit time (`computeAggregateValueTransforms`,
42
+ * runtime/emit/aggregate-setup.ts) rather than per row, and must reach the same verdict
43
+ * this function does.
44
+ */
45
+ export declare function aggregateCoercesArguments(functionName: string): boolean;
46
+ /**
47
+ * The value-level half of aggregate-argument coercion: a numeric-looking string becomes
48
+ * a number, everything else passes through. Callers that have already established the
49
+ * aggregate coerces at all (see {@link aggregateCoercesArguments}) use this directly.
40
50
  *
41
51
  * NOTE: this converts a numeric-looking string for min/max too, so `min('5','10')`
42
52
  * over a plain TEXT column returns the NUMBER 5 — disagreeing with
43
53
  * `order by … limit 1`, which keeps text order. Predates the semantic-ordering
44
- * min/max binding and is unchanged by it (the emitters skip this call entirely
45
- * when every argument type is numeric or carries semantic ordering — see
46
- * `computeAggregateSkipCoercion` in runtime/emit/aggregate-setup.ts). Tracked as
47
- * backlog `bug-text-minmax-numeric-coercion`.
54
+ * min/max binding and is unchanged by it (the emitters skip the transform entirely when
55
+ * every argument type is numeric or carries semantic ordering). Tracked as backlog
56
+ * `bug-text-minmax-numeric-coercion`.
57
+ */
58
+ export declare function coerceAggregateValue(value: SqlValue): SqlValue;
59
+ /**
60
+ * Coerces a value for aggregate function arguments.
61
+ * Most aggregate functions should accept numeric strings as numbers.
62
+ * For COUNT, no coercion needed. For SUM/AVG, numeric strings should be converted.
48
63
  */
49
64
  export declare function coerceForAggregate(value: SqlValue, functionName: string): SqlValue;
50
65
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"coercion.d.ts","sourceRoot":"","sources":["../../../src/util/coercion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAU3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAWnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAyBpF;AAKD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,CAWlF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CASvD"}
1
+ {"version":3,"file":"coercion.d.ts","sourceRoot":"","sources":["../../../src/util/coercion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAU3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAWnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAyBpF;AAKD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAGvE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,CAElF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CASvD"}
@@ -80,27 +80,40 @@ export function coerceForComparison(v1, v2) {
80
80
  /** Aggregates that never want their argument read as a number. */
81
81
  const NON_NUMERIC_AGGREGATES = new Set(['COUNT', 'GROUP_CONCAT']);
82
82
  /**
83
- * Coerces a value for aggregate function arguments.
84
- * Most aggregate functions should accept numeric strings as numbers.
85
- * For COUNT, no coercion needed. For SUM/AVG, numeric strings should be converted.
83
+ * Does this aggregate read its arguments numerically? False for COUNT, GROUP_CONCAT and
84
+ * the `JSON_*` family, which take their arguments as-is.
85
+ *
86
+ * Split out so the routing decision has one home: the aggregate emitters resolve it once
87
+ * per call site at emit time (`computeAggregateValueTransforms`,
88
+ * runtime/emit/aggregate-setup.ts) rather than per row, and must reach the same verdict
89
+ * this function does.
90
+ */
91
+ export function aggregateCoercesArguments(functionName) {
92
+ const upperName = functionName.toUpperCase();
93
+ return !NON_NUMERIC_AGGREGATES.has(upperName) && !upperName.startsWith('JSON_');
94
+ }
95
+ /**
96
+ * The value-level half of aggregate-argument coercion: a numeric-looking string becomes
97
+ * a number, everything else passes through. Callers that have already established the
98
+ * aggregate coerces at all (see {@link aggregateCoercesArguments}) use this directly.
86
99
  *
87
100
  * NOTE: this converts a numeric-looking string for min/max too, so `min('5','10')`
88
101
  * over a plain TEXT column returns the NUMBER 5 — disagreeing with
89
102
  * `order by … limit 1`, which keeps text order. Predates the semantic-ordering
90
- * min/max binding and is unchanged by it (the emitters skip this call entirely
91
- * when every argument type is numeric or carries semantic ordering — see
92
- * `computeAggregateSkipCoercion` in runtime/emit/aggregate-setup.ts). Tracked as
93
- * backlog `bug-text-minmax-numeric-coercion`.
103
+ * min/max binding and is unchanged by it (the emitters skip the transform entirely when
104
+ * every argument type is numeric or carries semantic ordering). Tracked as backlog
105
+ * `bug-text-minmax-numeric-coercion`.
106
+ */
107
+ export function coerceAggregateValue(value) {
108
+ return typeof value === 'string' && value.trim() !== '' ? tryCoerceToNumber(value) : value;
109
+ }
110
+ /**
111
+ * Coerces a value for aggregate function arguments.
112
+ * Most aggregate functions should accept numeric strings as numbers.
113
+ * For COUNT, no coercion needed. For SUM/AVG, numeric strings should be converted.
94
114
  */
95
115
  export function coerceForAggregate(value, functionName) {
96
- const upperName = functionName.toUpperCase();
97
- if (NON_NUMERIC_AGGREGATES.has(upperName) || upperName.startsWith('JSON_')) {
98
- return value;
99
- }
100
- if (typeof value === 'string' && value.trim() !== '') {
101
- return tryCoerceToNumber(value);
102
- }
103
- return value;
116
+ return aggregateCoercesArguments(functionName) ? coerceAggregateValue(value) : value;
104
117
  }
105
118
  /**
106
119
  * Determines if a value should be treated as numeric in the given context.
@@ -1 +1 @@
1
- {"version":3,"file":"coercion.js","sourceRoot":"","sources":["../../../src/util/coercion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coercion.js","sourceRoot":"","sources":["../../../src/util/coercion.ts"],"names":[],"mappings":"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"}
@@ -123,6 +123,31 @@ export declare function resolveCollationFunctions(resolver: CollationResolver, n
123
123
  * Optimized version of compareSqlValues that takes a pre-resolved collation function.
124
124
  * This avoids the collation lookup on every call.
125
125
  *
126
+ * NOTE: accepted tradeoff — the per-call {@link getStorageClass} classification stays,
127
+ * even where the emitter statically knows both operand categories. The alternative
128
+ * (a `typeof`-guarded fast path that falls back here on a miss, the shape
129
+ * {@link createTypedComparator} already uses for storage-class drift) was prototyped and
130
+ * measured, and the payoff does not survive contact with the interpreter:
131
+ * - guarded vs. this function, per comparison, isolated per-process microbench
132
+ * (65536 pairs × 300 passes, median, node 24): text 25.5 → 23.0 ns; text with a
133
+ * 40-char shared prefix 26.5 → 25.9 ns; numeric 3.14 → 1.17 ns; text with 5% NULLs
134
+ * 23.0 → 19.8 ns (the fallback is not a cliff — guard misses stay cheap, so no
135
+ * deopt/inline-cache machinery would be needed either).
136
+ * - text can barely improve: a bare `BINARY_COLLATION(a, b)` call with no
137
+ * classification at all measured 20.2 ns, so classification is ~5 ns of ~25 ns and
138
+ * the guard itself costs ~3 ns of that back.
139
+ * - end-to-end, one comparison expression costs ~210-226 ns/row (measured as the slope
140
+ * of a 1→8-column projection ladder over 10k rows, isolated processes), against
141
+ * 143 ns/row for a bare column-reference instruction. Per-instruction scheduler
142
+ * dispatch, not classification, is the cost. A ≤9 ns saving is ~4% of one comparison
143
+ * expression and ~0.3% of a row — well inside the 20% bench regression gate.
144
+ * Sort/BTree comparators are no better a target: `order by` over 10k text rows runs
145
+ * ~n·log2(n) ≈ 133k comparisons ≈ 3 ms of comparator at the rates above, against a
146
+ * 260 ms benchmark median.
147
+ * Revisit if `runtime-scalar-expression-fusion` lands — fusion removes the per-instruction
148
+ * dispatch that swamps this, after which the guard is a double-digit percentage of what
149
+ * remains of a numeric comparison. Re-measure the ladder above before adding it.
150
+ *
126
151
  * @param a First value
127
152
  * @param b Second value
128
153
  * @param collationFunc Pre-resolved collation function