@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.
- package/README.md +5 -1
- package/dist/src/common/datatype.d.ts +4 -5
- package/dist/src/common/datatype.d.ts.map +1 -1
- package/dist/src/common/datatype.js.map +1 -1
- package/dist/src/common/type-inference.d.ts +3 -6
- package/dist/src/common/type-inference.d.ts.map +1 -1
- package/dist/src/common/type-inference.js +17 -22
- package/dist/src/common/type-inference.js.map +1 -1
- package/dist/src/core/param.d.ts.map +1 -1
- package/dist/src/core/param.js +3 -18
- package/dist/src/core/param.js.map +1 -1
- package/dist/src/func/builtins/aggregate.d.ts.map +1 -1
- package/dist/src/func/builtins/aggregate.js +24 -2
- package/dist/src/func/builtins/aggregate.js.map +1 -1
- package/dist/src/func/builtins/builtin-window-functions.js +10 -10
- package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
- package/dist/src/func/builtins/conversion.d.ts +10 -0
- package/dist/src/func/builtins/conversion.d.ts.map +1 -1
- package/dist/src/func/builtins/conversion.js +20 -1
- package/dist/src/func/builtins/conversion.js.map +1 -1
- package/dist/src/func/builtins/explain.js +53 -53
- package/dist/src/func/builtins/explain.js.map +1 -1
- package/dist/src/func/builtins/generation.js +2 -2
- package/dist/src/func/builtins/generation.js.map +1 -1
- package/dist/src/func/builtins/index.d.ts.map +1 -1
- package/dist/src/func/builtins/index.js +16 -1
- package/dist/src/func/builtins/index.js.map +1 -1
- package/dist/src/func/builtins/json-tvf.js +17 -17
- package/dist/src/func/builtins/json-tvf.js.map +1 -1
- package/dist/src/func/builtins/scalar.d.ts.map +1 -1
- package/dist/src/func/builtins/scalar.js +202 -13
- package/dist/src/func/builtins/scalar.js.map +1 -1
- package/dist/src/func/builtins/schema.js +18 -18
- package/dist/src/func/builtins/schema.js.map +1 -1
- package/dist/src/func/builtins/string.d.ts.map +1 -1
- package/dist/src/func/builtins/string.js +56 -47
- package/dist/src/func/builtins/string.js.map +1 -1
- package/dist/src/func/builtins/timespan.d.ts +45 -0
- package/dist/src/func/builtins/timespan.d.ts.map +1 -0
- package/dist/src/func/builtins/timespan.js +147 -0
- package/dist/src/func/builtins/timespan.js.map +1 -0
- package/dist/src/func/registration.d.ts +26 -0
- package/dist/src/func/registration.d.ts.map +1 -1
- package/dist/src/func/registration.js +9 -5
- package/dist/src/func/registration.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/parser.js +2 -2
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/planner/building/constraint-builder.js +2 -2
- package/dist/src/planner/building/constraint-builder.js.map +1 -1
- package/dist/src/planner/building/delete.js +3 -3
- package/dist/src/planner/building/delete.js.map +1 -1
- package/dist/src/planner/building/function-call.d.ts.map +1 -1
- package/dist/src/planner/building/function-call.js +24 -4
- package/dist/src/planner/building/function-call.js.map +1 -1
- package/dist/src/planner/building/insert.js +3 -3
- package/dist/src/planner/building/insert.js.map +1 -1
- package/dist/src/planner/building/select.d.ts.map +1 -1
- package/dist/src/planner/building/select.js +3 -2
- package/dist/src/planner/building/select.js.map +1 -1
- package/dist/src/planner/building/update.js +7 -7
- package/dist/src/planner/building/update.js.map +1 -1
- package/dist/src/planner/nodes/aggregate-function.d.ts +2 -1
- package/dist/src/planner/nodes/aggregate-function.d.ts.map +1 -1
- package/dist/src/planner/nodes/aggregate-function.js +10 -3
- package/dist/src/planner/nodes/aggregate-function.js.map +1 -1
- package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/cte-node.js +2 -2
- package/dist/src/planner/nodes/cte-node.js.map +1 -1
- package/dist/src/planner/nodes/declarative-schema.js +3 -3
- package/dist/src/planner/nodes/declarative-schema.js.map +1 -1
- package/dist/src/planner/nodes/function.d.ts +2 -1
- package/dist/src/planner/nodes/function.d.ts.map +1 -1
- package/dist/src/planner/nodes/function.js +6 -3
- package/dist/src/planner/nodes/function.js.map +1 -1
- package/dist/src/planner/nodes/insert-node.js +1 -1
- package/dist/src/planner/nodes/insert-node.js.map +1 -1
- package/dist/src/planner/nodes/pragma.d.ts +1 -1
- package/dist/src/planner/nodes/pragma.d.ts.map +1 -1
- package/dist/src/planner/nodes/pragma.js +3 -3
- package/dist/src/planner/nodes/pragma.js.map +1 -1
- package/dist/src/planner/nodes/reference.js +1 -1
- package/dist/src/planner/nodes/reference.js.map +1 -1
- package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
- package/dist/src/planner/nodes/scalar.js +55 -101
- package/dist/src/planner/nodes/scalar.js.map +1 -1
- package/dist/src/planner/nodes/sequencing-node.js +2 -2
- package/dist/src/planner/nodes/sequencing-node.js.map +1 -1
- package/dist/src/planner/nodes/sink-node.js +2 -2
- package/dist/src/planner/nodes/sink-node.js.map +1 -1
- package/dist/src/planner/nodes/subquery.d.ts.map +1 -1
- package/dist/src/planner/nodes/subquery.js +4 -7
- package/dist/src/planner/nodes/subquery.js.map +1 -1
- package/dist/src/planner/nodes/view-reference-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/view-reference-node.js +2 -2
- package/dist/src/planner/nodes/view-reference-node.js.map +1 -1
- package/dist/src/planner/nodes/window-function.js +3 -3
- package/dist/src/planner/nodes/window-function.js.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.js +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +1 -1
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
- package/dist/src/planner/scopes/global.js +3 -3
- package/dist/src/planner/scopes/global.js.map +1 -1
- package/dist/src/planner/scopes/param.d.ts.map +1 -1
- package/dist/src/planner/scopes/param.js +2 -2
- package/dist/src/planner/scopes/param.js.map +1 -1
- package/dist/src/planner/type-utils.d.ts +2 -12
- package/dist/src/planner/type-utils.d.ts.map +1 -1
- package/dist/src/planner/type-utils.js +6 -21
- package/dist/src/planner/type-utils.js.map +1 -1
- package/dist/src/runtime/emit/binary.d.ts.map +1 -1
- package/dist/src/runtime/emit/binary.js +40 -2
- package/dist/src/runtime/emit/binary.js.map +1 -1
- package/dist/src/runtime/emit/temporal-arithmetic.d.ts +33 -0
- package/dist/src/runtime/emit/temporal-arithmetic.d.ts.map +1 -0
- package/dist/src/runtime/emit/temporal-arithmetic.js +269 -0
- package/dist/src/runtime/emit/temporal-arithmetic.js.map +1 -0
- package/dist/src/runtime/emit/unary.d.ts.map +1 -1
- package/dist/src/runtime/emit/unary.js +12 -0
- package/dist/src/runtime/emit/unary.js.map +1 -1
- package/dist/src/schema/catalog.js +3 -3
- package/dist/src/schema/catalog.js.map +1 -1
- package/dist/src/schema/column.d.ts +0 -3
- package/dist/src/schema/column.d.ts.map +1 -1
- package/dist/src/schema/column.js +0 -2
- package/dist/src/schema/column.js.map +1 -1
- package/dist/src/schema/function.d.ts +29 -1
- package/dist/src/schema/function.d.ts.map +1 -1
- package/dist/src/schema/function.js.map +1 -1
- package/dist/src/schema/table.d.ts +3 -3
- package/dist/src/schema/table.d.ts.map +1 -1
- package/dist/src/schema/table.js +4 -6
- package/dist/src/schema/table.js.map +1 -1
- package/dist/src/types/index.d.ts +1 -1
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js +1 -1
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/registry.d.ts.map +1 -1
- package/dist/src/types/registry.js +5 -1
- package/dist/src/types/registry.js.map +1 -1
- package/dist/src/types/temporal-types.d.ts +5 -0
- package/dist/src/types/temporal-types.d.ts.map +1 -1
- package/dist/src/types/temporal-types.js +122 -0
- package/dist/src/types/temporal-types.js.map +1 -1
- package/dist/src/util/plan-formatter.d.ts.map +1 -1
- package/dist/src/util/plan-formatter.js +1 -5
- package/dist/src/util/plan-formatter.js.map +1 -1
- package/dist/src/util/row-descriptor.js +2 -2
- package/dist/src/util/row-descriptor.js.map +1 -1
- package/dist/src/vtab/best-access-plan.d.ts +4 -3
- package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
- package/dist/src/vtab/best-access-plan.js.map +1 -1
- package/dist/src/vtab/memory/module.js +1 -1
- package/dist/src/vtab/memory/module.js.map +1 -1
- package/package.json +1 -1
- package/src/common/datatype.ts +4 -5
- package/src/common/type-inference.ts +13 -22
- package/src/core/param.ts +4 -11
- package/src/func/builtins/aggregate.ts +24 -2
- package/src/func/builtins/builtin-window-functions.ts +10 -10
- package/src/func/builtins/conversion.ts +26 -1
- package/src/func/builtins/explain.ts +53 -53
- package/src/func/builtins/generation.ts +2 -2
- package/src/func/builtins/index.ts +20 -1
- package/src/func/builtins/json-tvf.ts +17 -17
- package/src/func/builtins/scalar.ts +205 -14
- package/src/func/builtins/schema.ts +18 -18
- package/src/func/builtins/string.ts +91 -78
- package/src/func/builtins/timespan.ts +179 -0
- package/src/func/registration.ts +35 -5
- package/src/index.ts +2 -1
- package/src/parser/parser.ts +2 -2
- package/src/planner/building/constraint-builder.ts +2 -2
- package/src/planner/building/delete.ts +3 -3
- package/src/planner/building/function-call.ts +44 -3
- package/src/planner/building/insert.ts +3 -3
- package/src/planner/building/select.ts +3 -2
- package/src/planner/building/update.ts +7 -7
- package/src/planner/nodes/aggregate-function.ts +13 -3
- package/src/planner/nodes/cte-node.ts +2 -2
- package/src/planner/nodes/declarative-schema.ts +3 -3
- package/src/planner/nodes/function.ts +8 -3
- package/src/planner/nodes/insert-node.ts +1 -1
- package/src/planner/nodes/pragma.ts +4 -3
- package/src/planner/nodes/reference.ts +1 -1
- package/src/planner/nodes/scalar.ts +54 -102
- package/src/planner/nodes/sequencing-node.ts +2 -2
- package/src/planner/nodes/sink-node.ts +2 -2
- package/src/planner/nodes/subquery.ts +5 -7
- package/src/planner/nodes/view-reference-node.ts +2 -2
- package/src/planner/nodes/window-function.ts +3 -3
- package/src/planner/rules/access/rule-select-access-path.ts +1 -1
- package/src/planner/rules/retrieve/rule-grow-retrieve.ts +1 -1
- package/src/planner/scopes/global.ts +3 -3
- package/src/planner/scopes/param.ts +2 -2
- package/src/planner/type-utils.ts +6 -14
- package/src/runtime/emit/binary.ts +48 -2
- package/src/runtime/emit/temporal-arithmetic.ts +302 -0
- package/src/runtime/emit/unary.ts +13 -0
- package/src/schema/catalog.ts +3 -3
- package/src/schema/column.ts +0 -3
- package/src/schema/function.ts +29 -1
- package/src/schema/table.ts +5 -7
- package/src/types/index.ts +1 -1
- package/src/types/registry.ts +5 -1
- package/src/types/temporal-types.ts +123 -0
- package/src/util/plan-formatter.ts +1 -4
- package/src/util/row-descriptor.ts +2 -2
- package/src/vtab/best-access-plan.ts +4 -3
- package/src/vtab/memory/module.ts +1 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":"AAGA,OAAO,
|
|
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;
|
|
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
|
-
|
|
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: ${
|
|
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;
|
|
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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAItD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;
|
|
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.
|
|
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.
|
|
113
|
-
colDef += ` ${col.
|
|
112
|
+
if (col.logicalType) {
|
|
113
|
+
colDef += ` ${col.logicalType.name}`;
|
|
114
114
|
}
|
|
115
115
|
if (col.notNull) {
|
|
116
116
|
colDef += ' NOT NULL';
|