@quereus/quereus 0.18.0 → 1.0.2
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 +80 -14
- package/dist/src/common/type-inference.d.ts +1 -0
- package/dist/src/common/type-inference.d.ts.map +1 -1
- package/dist/src/common/type-inference.js +6 -1
- package/dist/src/common/type-inference.js.map +1 -1
- package/dist/src/common/types.d.ts +10 -2
- package/dist/src/common/types.d.ts.map +1 -1
- package/dist/src/common/types.js +13 -1
- package/dist/src/common/types.js.map +1 -1
- package/dist/src/emit/ast-stringify.d.ts.map +1 -1
- package/dist/src/emit/ast-stringify.js +5 -0
- package/dist/src/emit/ast-stringify.js.map +1 -1
- package/dist/src/func/builtins/conversion.d.ts +2 -2
- package/dist/src/func/builtins/conversion.js +3 -3
- package/dist/src/func/builtins/conversion.js.map +1 -1
- package/dist/src/func/builtins/index.d.ts.map +1 -1
- package/dist/src/func/builtins/index.js +2 -1
- package/dist/src/func/builtins/index.js.map +1 -1
- package/dist/src/func/builtins/json-helpers.d.ts +10 -0
- package/dist/src/func/builtins/json-helpers.d.ts.map +1 -1
- package/dist/src/func/builtins/json-helpers.js +26 -0
- package/dist/src/func/builtins/json-helpers.js.map +1 -1
- package/dist/src/func/builtins/json-tvf.d.ts.map +1 -1
- package/dist/src/func/builtins/json-tvf.js +9 -15
- package/dist/src/func/builtins/json-tvf.js.map +1 -1
- package/dist/src/func/builtins/json.d.ts.map +1 -1
- package/dist/src/func/builtins/json.js +100 -227
- package/dist/src/func/builtins/json.js.map +1 -1
- package/dist/src/func/builtins/schema.d.ts.map +1 -1
- package/dist/src/func/builtins/schema.js +9 -0
- package/dist/src/func/builtins/schema.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/parser/lexer.d.ts +1 -0
- package/dist/src/parser/lexer.d.ts.map +1 -1
- package/dist/src/parser/lexer.js +2 -1
- package/dist/src/parser/lexer.js.map +1 -1
- package/dist/src/parser/parser.d.ts +12 -0
- package/dist/src/parser/parser.d.ts.map +1 -1
- package/dist/src/parser/parser.js +54 -1
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/planner/analysis/const-evaluator.d.ts +5 -0
- package/dist/src/planner/analysis/const-evaluator.d.ts.map +1 -1
- package/dist/src/planner/analysis/const-evaluator.js +106 -0
- package/dist/src/planner/analysis/const-evaluator.js.map +1 -1
- package/dist/src/planner/analysis/const-pass.d.ts +4 -2
- package/dist/src/planner/analysis/const-pass.d.ts.map +1 -1
- package/dist/src/planner/analysis/const-pass.js +23 -13
- package/dist/src/planner/analysis/const-pass.js.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.d.ts +19 -1
- package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.js +265 -14
- package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
- package/dist/src/planner/analysis/expression-fingerprint.d.ts +15 -0
- package/dist/src/planner/analysis/expression-fingerprint.d.ts.map +1 -0
- package/dist/src/planner/analysis/expression-fingerprint.js +126 -0
- package/dist/src/planner/analysis/expression-fingerprint.js.map +1 -0
- package/dist/src/planner/cost/index.d.ts +16 -0
- package/dist/src/planner/cost/index.d.ts.map +1 -1
- package/dist/src/planner/cost/index.js +22 -0
- package/dist/src/planner/cost/index.js.map +1 -1
- package/dist/src/planner/framework/pass.d.ts.map +1 -1
- package/dist/src/planner/framework/pass.js +4 -3
- package/dist/src/planner/framework/pass.js.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.d.ts +38 -0
- package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -0
- package/dist/src/planner/nodes/hash-aggregate.js +213 -0
- package/dist/src/planner/nodes/hash-aggregate.js.map +1 -0
- package/dist/src/planner/nodes/plan-node-type.d.ts +1 -0
- package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.js +1 -0
- package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts +11 -0
- package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.js +32 -0
- package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
- package/dist/src/planner/nodes/values-node.d.ts +3 -1
- package/dist/src/planner/nodes/values-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/values-node.js +9 -2
- package/dist/src/planner/nodes/values-node.js.map +1 -1
- package/dist/src/planner/optimizer.d.ts.map +1 -1
- package/dist/src/planner/optimizer.js +35 -7
- package/dist/src/planner/optimizer.js.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.js +175 -5
- package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.d.ts +9 -11
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.d.ts.map +1 -1
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js +54 -67
- package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +1 -1
- package/dist/src/planner/rules/cache/rule-scalar-cse.d.ts +19 -0
- package/dist/src/planner/rules/cache/rule-scalar-cse.d.ts.map +1 -0
- package/dist/src/planner/rules/cache/rule-scalar-cse.js +245 -0
- package/dist/src/planner/rules/cache/rule-scalar-cse.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-filter-merge.d.ts +15 -0
- package/dist/src/planner/rules/predicate/rule-filter-merge.d.ts.map +1 -0
- package/dist/src/planner/rules/predicate/rule-filter-merge.js +39 -0
- package/dist/src/planner/rules/predicate/rule-filter-merge.js.map +1 -0
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts +1 -0
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts.map +1 -1
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js +9 -0
- package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +1 -1
- package/dist/src/planner/rules/retrieve/rule-projection-pruning.d.ts +17 -0
- package/dist/src/planner/rules/retrieve/rule-projection-pruning.d.ts.map +1 -0
- package/dist/src/planner/rules/retrieve/rule-projection-pruning.js +75 -0
- package/dist/src/planner/rules/retrieve/rule-projection-pruning.js.map +1 -0
- package/dist/src/runtime/emit/aggregate.d.ts +9 -0
- package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/aggregate.js +2 -2
- package/dist/src/runtime/emit/aggregate.js.map +1 -1
- package/dist/src/runtime/emit/empty-result.d.ts +5 -0
- package/dist/src/runtime/emit/empty-result.d.ts.map +1 -0
- package/dist/src/runtime/emit/empty-result.js +11 -0
- package/dist/src/runtime/emit/empty-result.js.map +1 -0
- package/dist/src/runtime/emit/hash-aggregate.d.ts +5 -0
- package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -0
- package/dist/src/runtime/emit/hash-aggregate.js +319 -0
- package/dist/src/runtime/emit/hash-aggregate.js.map +1 -0
- package/dist/src/runtime/register.d.ts.map +1 -1
- package/dist/src/runtime/register.js +4 -1
- package/dist/src/runtime/register.js.map +1 -1
- package/dist/src/types/json-type.d.ts +3 -3
- package/dist/src/types/json-type.d.ts.map +1 -1
- package/dist/src/types/json-type.js +44 -38
- package/dist/src/types/json-type.js.map +1 -1
- package/dist/src/types/logical-type.d.ts +2 -1
- package/dist/src/types/logical-type.d.ts.map +1 -1
- package/dist/src/types/logical-type.js +4 -0
- package/dist/src/types/logical-type.js.map +1 -1
- package/dist/src/util/comparison.d.ts +1 -1
- package/dist/src/util/comparison.d.ts.map +1 -1
- package/dist/src/util/comparison.js +22 -4
- package/dist/src/util/comparison.js.map +1 -1
- package/dist/src/vtab/best-access-plan.d.ts +1 -1
- package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/base-cursor.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/base-cursor.js +81 -6
- package/dist/src/vtab/memory/layer/base-cursor.js.map +1 -1
- package/dist/src/vtab/memory/layer/scan-plan.d.ts +9 -0
- package/dist/src/vtab/memory/layer/scan-plan.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/scan-plan.js +76 -9
- package/dist/src/vtab/memory/layer/scan-plan.js.map +1 -1
- package/dist/src/vtab/memory/layer/transaction-cursor.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/transaction-cursor.js +79 -11
- package/dist/src/vtab/memory/layer/transaction-cursor.js.map +1 -1
- package/dist/src/vtab/memory/module.d.ts +4 -0
- package/dist/src/vtab/memory/module.d.ts.map +1 -1
- package/dist/src/vtab/memory/module.js +79 -11
- package/dist/src/vtab/memory/module.js.map +1 -1
- package/package.json +25 -5
|
@@ -5,7 +5,7 @@ const { applyPatch } = fastJsonPatch;
|
|
|
5
5
|
import { validator } from 'moat-maker';
|
|
6
6
|
import { createLogger } from '../../common/logger.js';
|
|
7
7
|
import { createScalarFunction, createAggregateFunction } from '../registration.js';
|
|
8
|
-
import {
|
|
8
|
+
import { coerceToJsonValue, resolveJsonPathForModify, prepareJsonValue, deepCopyJson, getJsonType } from './json-helpers.js';
|
|
9
9
|
import { PlanNodeType } from '../../planner/nodes/plan-node-type.js';
|
|
10
10
|
import { emitPlanNode } from '../../runtime/emitters.js';
|
|
11
11
|
const log = createLogger('func:builtins:json');
|
|
@@ -13,7 +13,14 @@ const errorLog = log.extend('error');
|
|
|
13
13
|
// --- JSON Functions --- //
|
|
14
14
|
// json_valid(X)
|
|
15
15
|
export const jsonValidFunc = createScalarFunction({ name: 'json_valid', numArgs: 1, deterministic: true }, (json) => {
|
|
16
|
-
|
|
16
|
+
if (json === null)
|
|
17
|
+
return false;
|
|
18
|
+
// Native objects are always valid JSON
|
|
19
|
+
if (typeof json === 'object' && !(json instanceof Uint8Array))
|
|
20
|
+
return true;
|
|
21
|
+
if (typeof json === 'number' || typeof json === 'boolean')
|
|
22
|
+
return true;
|
|
23
|
+
return coerceToJsonValue(json) !== undefined;
|
|
17
24
|
});
|
|
18
25
|
/**
|
|
19
26
|
* Custom emitter for json_schema that caches compiled validators in the EmissionContext.
|
|
@@ -28,30 +35,17 @@ function emitJsonSchema(plan, ctx, defaultEmit) {
|
|
|
28
35
|
if (typeof schemaDef === 'string') {
|
|
29
36
|
try {
|
|
30
37
|
// Compile the validator once at emission time using moat-maker
|
|
31
|
-
// moat-maker uses template literals, so we need to create a validator dynamically
|
|
32
|
-
// Template literals have a special structure: an array with a 'raw' property
|
|
33
|
-
// We create this structure manually to simulate a template literal
|
|
34
38
|
const parts = [schemaDef];
|
|
35
39
|
parts.raw = [schemaDef];
|
|
36
40
|
const compiledValidator = validator(parts, ...[]);
|
|
37
41
|
// Emit only the JSON argument (first operand)
|
|
38
42
|
const jsonArgInstruction = emitPlanNode(plan.operands[0], ctx);
|
|
39
|
-
// Create optimized runtime function that uses the cached validator
|
|
40
|
-
// The validator is captured in the closure, so it lives with the plan
|
|
41
43
|
function run(_rctx, ...args) {
|
|
42
44
|
const json = args[0];
|
|
43
|
-
|
|
45
|
+
const data = coerceToJsonValue(json);
|
|
46
|
+
if (data === undefined)
|
|
44
47
|
return false;
|
|
45
|
-
let data;
|
|
46
48
|
try {
|
|
47
|
-
data = JSON.parse(json);
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
return false; // Invalid JSON
|
|
51
|
-
}
|
|
52
|
-
// Use the cached compiled validator
|
|
53
|
-
try {
|
|
54
|
-
// moat-maker's .matches() returns true if valid, false otherwise
|
|
55
49
|
const isValid = compiledValidator.matches(data);
|
|
56
50
|
return isValid;
|
|
57
51
|
}
|
|
@@ -68,38 +62,22 @@ function emitJsonSchema(plan, ctx, defaultEmit) {
|
|
|
68
62
|
}
|
|
69
63
|
catch (e) {
|
|
70
64
|
errorLog('Failed to compile schema at emission time: %O', e);
|
|
71
|
-
// Fall through to default emission
|
|
72
65
|
}
|
|
73
66
|
}
|
|
74
67
|
}
|
|
75
|
-
// If schema is not a constant or compilation failed, use default emission
|
|
76
68
|
return defaultEmit(plan, ctx);
|
|
77
69
|
}
|
|
78
70
|
// json_schema(X, schema_def)
|
|
79
|
-
// Note: This function uses a custom emitter that caches compiled validators
|
|
80
|
-
// during plan emission for better performance.
|
|
81
71
|
export const jsonSchemaFunc = createScalarFunction({ name: 'json_schema', numArgs: 2, deterministic: true }, (json, schemaDef) => {
|
|
82
|
-
// This is the fallback implementation for when no cache is available
|
|
83
|
-
// (e.g., during direct function calls outside of query execution)
|
|
84
|
-
// Schema definition must be a string
|
|
85
72
|
if (typeof schemaDef !== 'string')
|
|
86
73
|
return false;
|
|
87
|
-
|
|
88
|
-
if (
|
|
74
|
+
const data = coerceToJsonValue(json);
|
|
75
|
+
if (data === undefined)
|
|
89
76
|
return false;
|
|
90
|
-
let data;
|
|
91
|
-
try {
|
|
92
|
-
data = JSON.parse(json);
|
|
93
|
-
}
|
|
94
|
-
catch {
|
|
95
|
-
return false; // Invalid JSON
|
|
96
|
-
}
|
|
97
|
-
// Compile and validate using moat-maker (no caching in fallback path)
|
|
98
77
|
try {
|
|
99
78
|
const parts = [schemaDef];
|
|
100
79
|
parts.raw = [schemaDef];
|
|
101
80
|
const compiledValidator = validator(parts, ...[]);
|
|
102
|
-
// moat-maker's .matches() returns true if valid, false otherwise
|
|
103
81
|
const isValid = compiledValidator.matches(data);
|
|
104
82
|
return isValid;
|
|
105
83
|
}
|
|
@@ -108,20 +86,18 @@ export const jsonSchemaFunc = createScalarFunction({ name: 'json_schema', numArg
|
|
|
108
86
|
return false;
|
|
109
87
|
}
|
|
110
88
|
});
|
|
111
|
-
// Attach the custom emitter to the function schema
|
|
112
89
|
jsonSchemaFunc.customEmitter = emitJsonSchema;
|
|
113
90
|
// json_type(X, P?)
|
|
114
91
|
export const jsonTypeFunc = createScalarFunction({ name: 'json_type', numArgs: -1, deterministic: true }, (json, path) => {
|
|
115
|
-
const data =
|
|
116
|
-
if (data ===
|
|
117
|
-
return null;
|
|
92
|
+
const data = coerceToJsonValue(json);
|
|
93
|
+
if (data === undefined)
|
|
94
|
+
return null;
|
|
118
95
|
let targetValue = data;
|
|
119
96
|
if (path !== undefined && path !== null) {
|
|
120
97
|
if (typeof path !== 'string')
|
|
121
|
-
return 'null';
|
|
98
|
+
return 'null';
|
|
122
99
|
const resolved = resolveJsonPathForModify(data, path);
|
|
123
100
|
targetValue = resolved?.exists ? resolved.value : undefined;
|
|
124
|
-
// If path evaluation leads nowhere, SQLite returns NULL type
|
|
125
101
|
if (targetValue === undefined)
|
|
126
102
|
return null;
|
|
127
103
|
}
|
|
@@ -129,56 +105,38 @@ export const jsonTypeFunc = createScalarFunction({ name: 'json_type', numArgs: -
|
|
|
129
105
|
});
|
|
130
106
|
// json_extract(X, P1, P2, ...)
|
|
131
107
|
export const jsonExtractFunc = createScalarFunction({ name: 'json_extract', numArgs: -1, deterministic: true }, (json, ...paths) => {
|
|
132
|
-
const data =
|
|
133
|
-
if (data ===
|
|
134
|
-
return null;
|
|
108
|
+
const data = coerceToJsonValue(json);
|
|
109
|
+
if (data === undefined)
|
|
110
|
+
return null;
|
|
135
111
|
if (paths.length === 0)
|
|
136
|
-
return null;
|
|
137
|
-
// SQLite json_extract: Find the first path that resolves
|
|
112
|
+
return null;
|
|
138
113
|
let extractedValue = undefined;
|
|
139
114
|
for (const pathVal of paths) {
|
|
140
115
|
if (typeof pathVal === 'string') {
|
|
141
116
|
const resolved = resolveJsonPathForModify(data, pathVal);
|
|
142
117
|
extractedValue = resolved?.exists ? resolved.value : undefined;
|
|
143
|
-
|
|
144
|
-
if (extractedValue !== undefined) {
|
|
118
|
+
if (extractedValue !== undefined)
|
|
145
119
|
break;
|
|
146
|
-
}
|
|
147
120
|
}
|
|
148
121
|
else {
|
|
149
|
-
// Invalid path type itself results in overall NULL
|
|
150
122
|
return null;
|
|
151
123
|
}
|
|
152
124
|
}
|
|
153
|
-
|
|
154
|
-
if (extractedValue === undefined) {
|
|
155
|
-
return null; // Path did not resolve
|
|
156
|
-
}
|
|
157
|
-
else if (extractedValue === null) {
|
|
125
|
+
if (extractedValue === undefined)
|
|
158
126
|
return null;
|
|
159
|
-
|
|
160
|
-
|
|
127
|
+
if (extractedValue === null)
|
|
128
|
+
return null;
|
|
129
|
+
if (typeof extractedValue === 'boolean')
|
|
161
130
|
return extractedValue;
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
131
|
+
if (typeof extractedValue === 'number')
|
|
132
|
+
return extractedValue;
|
|
133
|
+
if (typeof extractedValue === 'string')
|
|
134
|
+
return extractedValue;
|
|
135
|
+
if (typeof extractedValue === 'object') {
|
|
136
|
+
// Return nested objects/arrays as native JSON values
|
|
167
137
|
return extractedValue;
|
|
168
138
|
}
|
|
169
|
-
|
|
170
|
-
// Return arrays/objects as JSON strings
|
|
171
|
-
try {
|
|
172
|
-
return JSON.stringify(extractedValue);
|
|
173
|
-
}
|
|
174
|
-
catch {
|
|
175
|
-
return null; // Should not happen for valid extracted JSON parts
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
// Should not happen for valid JSON (e.g., bigint, symbol, function)
|
|
180
|
-
return null;
|
|
181
|
-
}
|
|
139
|
+
return null;
|
|
182
140
|
});
|
|
183
141
|
// json_quote(X)
|
|
184
142
|
export const jsonQuoteFunc = createScalarFunction({ name: 'json_quote', numArgs: 1, deterministic: true }, (value) => {
|
|
@@ -187,170 +145,125 @@ export const jsonQuoteFunc = createScalarFunction({ name: 'json_quote', numArgs:
|
|
|
187
145
|
switch (typeof value) {
|
|
188
146
|
case 'number':
|
|
189
147
|
if (!Number.isFinite(value))
|
|
190
|
-
return 'null';
|
|
148
|
+
return 'null';
|
|
191
149
|
return String(value);
|
|
192
150
|
case 'boolean':
|
|
193
151
|
return value ? 'true' : 'false';
|
|
194
152
|
case 'string':
|
|
195
|
-
return JSON.stringify(value);
|
|
153
|
+
return JSON.stringify(value);
|
|
196
154
|
case 'bigint':
|
|
197
|
-
// BigInts are not directly representable in standard JSON
|
|
198
155
|
return null;
|
|
199
156
|
case 'object':
|
|
200
|
-
if (value instanceof Uint8Array)
|
|
201
|
-
// BLOBs cannot be represented in JSON
|
|
157
|
+
if (value instanceof Uint8Array)
|
|
202
158
|
return null;
|
|
159
|
+
try {
|
|
160
|
+
return JSON.stringify(value);
|
|
203
161
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
try {
|
|
207
|
-
return JSON.stringify(value);
|
|
208
|
-
}
|
|
209
|
-
catch {
|
|
210
|
-
return null;
|
|
211
|
-
}
|
|
162
|
+
catch {
|
|
163
|
+
return null;
|
|
212
164
|
}
|
|
213
|
-
return null;
|
|
214
165
|
default:
|
|
215
166
|
return null;
|
|
216
167
|
}
|
|
217
168
|
});
|
|
218
|
-
// json_array(X, Y, ...)
|
|
169
|
+
// json_array(X, Y, ...) — returns native array
|
|
219
170
|
export const jsonArrayFunc = createScalarFunction({ name: 'json_array', numArgs: -1, deterministic: true }, (...args) => {
|
|
220
|
-
|
|
221
|
-
const jsonCompatibleArgs = args.map(arg => prepareJsonValue(arg)); // Use helper
|
|
222
|
-
try {
|
|
223
|
-
return JSON.stringify(jsonCompatibleArgs);
|
|
224
|
-
}
|
|
225
|
-
catch {
|
|
226
|
-
return null; // Should not happen with basic types
|
|
227
|
-
}
|
|
171
|
+
return args.map(arg => prepareJsonValue(arg));
|
|
228
172
|
});
|
|
229
|
-
// json_object(N1, V1, N2, V2, ...)
|
|
173
|
+
// json_object(N1, V1, N2, V2, ...) — returns native object
|
|
230
174
|
export const jsonObjectFunc = createScalarFunction({ name: 'json_object', numArgs: -1, deterministic: true }, (...args) => {
|
|
231
|
-
if (args.length % 2 !== 0)
|
|
232
|
-
// SQLite json_object returns NULL if odd number of args
|
|
175
|
+
if (args.length % 2 !== 0)
|
|
233
176
|
return null;
|
|
234
|
-
}
|
|
235
177
|
const obj = {};
|
|
236
178
|
for (let i = 0; i < args.length; i += 2) {
|
|
237
179
|
const key = args[i];
|
|
238
180
|
const value = args[i + 1];
|
|
239
|
-
if (typeof key !== 'string')
|
|
240
|
-
// SQLite requires keys to be strings
|
|
181
|
+
if (typeof key !== 'string')
|
|
241
182
|
return null;
|
|
242
|
-
}
|
|
243
|
-
// Convert value to JSON compatible using helper
|
|
244
183
|
obj[key] = prepareJsonValue(value);
|
|
245
184
|
}
|
|
246
|
-
|
|
247
|
-
return JSON.stringify(obj);
|
|
248
|
-
}
|
|
249
|
-
catch {
|
|
250
|
-
return null;
|
|
251
|
-
}
|
|
185
|
+
return obj;
|
|
252
186
|
});
|
|
253
187
|
// --- Additional JSON Functions --- //
|
|
254
188
|
// json_array_length(json, path?)
|
|
255
189
|
export const jsonArrayLengthFunc = createScalarFunction({ name: 'json_array_length', numArgs: -1, deterministic: true }, (json, path) => {
|
|
256
|
-
const data =
|
|
257
|
-
if (data ===
|
|
190
|
+
const data = coerceToJsonValue(json);
|
|
191
|
+
if (data === undefined)
|
|
258
192
|
return null;
|
|
259
193
|
let targetValue = data;
|
|
260
194
|
if (path !== undefined && path !== null) {
|
|
261
195
|
if (typeof path !== 'string')
|
|
262
|
-
return 0;
|
|
196
|
+
return 0;
|
|
263
197
|
const resolved = resolveJsonPathForModify(data, path);
|
|
264
198
|
targetValue = resolved?.exists ? resolved.value : undefined;
|
|
265
199
|
}
|
|
266
|
-
|
|
267
|
-
return targetValue.length;
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
// If the target exists but is not an array, SQLite returns 0
|
|
271
|
-
// If the path doesn't resolve (targetValue is undefined), return 0?
|
|
272
|
-
// Let's return 0 if not an array, consistent with SQLite.
|
|
273
|
-
return 0;
|
|
274
|
-
}
|
|
200
|
+
return Array.isArray(targetValue) ? targetValue.length : 0;
|
|
275
201
|
});
|
|
276
|
-
// json_patch(json, patch)
|
|
277
|
-
export const jsonPatchFunc = createScalarFunction({ name: 'json_patch', numArgs: 2, deterministic: false },
|
|
278
|
-
(json
|
|
279
|
-
const
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
if (data === null && typeof json === 'string')
|
|
283
|
-
return null; // Invalid target JSON
|
|
202
|
+
// json_patch(json, patch) — returns native object
|
|
203
|
+
export const jsonPatchFunc = createScalarFunction({ name: 'json_patch', numArgs: 2, deterministic: false }, (json, patchVal) => {
|
|
204
|
+
const data = coerceToJsonValue(json);
|
|
205
|
+
const patchData = coerceToJsonValue(patchVal);
|
|
206
|
+
if (data === undefined)
|
|
207
|
+
return null;
|
|
284
208
|
if (!Array.isArray(patchData))
|
|
285
|
-
return null;
|
|
286
|
-
// Ensure patch operations have the correct structure (basic check)
|
|
209
|
+
return null;
|
|
287
210
|
const patch = patchData;
|
|
288
211
|
if (!patch.every(op => typeof op === 'object' && op !== null && 'op' in op && 'path' in op)) {
|
|
289
|
-
return null;
|
|
212
|
+
return null;
|
|
290
213
|
}
|
|
291
214
|
try {
|
|
292
|
-
//
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
return JSON.stringify(result);
|
|
215
|
+
// deepCopy data since applyPatch mutates; native objects may be shared
|
|
216
|
+
const dataCopy = deepCopyJson(data);
|
|
217
|
+
const result = applyPatch(dataCopy, patch, true).newDocument;
|
|
218
|
+
return result;
|
|
297
219
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
298
220
|
}
|
|
299
221
|
catch (e) {
|
|
300
222
|
errorLog('json_patch failed: %s, %O', e?.message, e);
|
|
301
|
-
return null;
|
|
223
|
+
return null;
|
|
302
224
|
}
|
|
303
225
|
});
|
|
304
226
|
// --- Manipulation Functions --- //
|
|
305
|
-
// json_insert(JSON, PATH, VALUE, PATH, VALUE, ...)
|
|
227
|
+
// json_insert(JSON, PATH, VALUE, PATH, VALUE, ...) — returns native object
|
|
306
228
|
export const jsonInsertFunc = createScalarFunction({ name: 'json_insert', numArgs: -1, deterministic: true }, (json, ...args) => {
|
|
307
|
-
const data =
|
|
308
|
-
if (data ===
|
|
309
|
-
return null;
|
|
229
|
+
const data = coerceToJsonValue(json);
|
|
230
|
+
if (data === undefined)
|
|
231
|
+
return null;
|
|
310
232
|
if (args.length === 0 || args.length % 2 !== 0)
|
|
311
|
-
return null;
|
|
312
|
-
// Work on a copy
|
|
233
|
+
return null;
|
|
313
234
|
const currentData = deepCopyJson(data);
|
|
314
235
|
for (let i = 0; i < args.length; i += 2) {
|
|
315
236
|
const pathVal = args[i];
|
|
316
237
|
const valueVal = args[i + 1];
|
|
317
238
|
if (typeof pathVal !== 'string')
|
|
318
|
-
return null;
|
|
239
|
+
return null;
|
|
319
240
|
const preparedValue = prepareJsonValue(valueVal);
|
|
320
241
|
const pathInfo = resolveJsonPathForModify(currentData, pathVal);
|
|
321
242
|
if (pathInfo === null)
|
|
322
|
-
continue;
|
|
243
|
+
continue;
|
|
323
244
|
const { parent, key, exists } = pathInfo;
|
|
324
245
|
if (!exists) {
|
|
325
246
|
if (parent === null)
|
|
326
|
-
continue;
|
|
247
|
+
continue;
|
|
327
248
|
if (Array.isArray(parent) && typeof key === 'number') {
|
|
328
249
|
if (key === parent.length) {
|
|
329
250
|
parent.push(preparedValue);
|
|
330
251
|
}
|
|
331
252
|
else if (key < parent.length) {
|
|
332
|
-
parent.splice(key, 0, preparedValue);
|
|
253
|
+
parent.splice(key, 0, preparedValue);
|
|
333
254
|
}
|
|
334
|
-
// Ignore if key > parent.length?
|
|
335
255
|
}
|
|
336
256
|
else if (typeof parent === 'object' && parent !== null && !Array.isArray(parent) && typeof key === 'string') {
|
|
337
257
|
parent[key] = preparedValue;
|
|
338
258
|
}
|
|
339
|
-
// else: Cannot insert into non-container or invalid key type - ignore
|
|
340
259
|
}
|
|
341
|
-
// If path *does* exist, json_insert does nothing.
|
|
342
|
-
}
|
|
343
|
-
try {
|
|
344
|
-
return JSON.stringify(currentData);
|
|
345
|
-
}
|
|
346
|
-
catch {
|
|
347
|
-
return null;
|
|
348
260
|
}
|
|
261
|
+
return currentData;
|
|
349
262
|
});
|
|
350
|
-
// json_replace(JSON, PATH, VALUE, PATH, VALUE, ...)
|
|
263
|
+
// json_replace(JSON, PATH, VALUE, PATH, VALUE, ...) — returns native object
|
|
351
264
|
export const jsonReplaceFunc = createScalarFunction({ name: 'json_replace', numArgs: -1, deterministic: true }, (json, ...args) => {
|
|
352
|
-
const data =
|
|
353
|
-
if (data ===
|
|
265
|
+
const data = coerceToJsonValue(json);
|
|
266
|
+
if (data === undefined)
|
|
354
267
|
return null;
|
|
355
268
|
if (args.length === 0 || args.length % 2 !== 0)
|
|
356
269
|
return null;
|
|
@@ -363,11 +276,10 @@ export const jsonReplaceFunc = createScalarFunction({ name: 'json_replace', numA
|
|
|
363
276
|
const preparedValue = prepareJsonValue(valueVal);
|
|
364
277
|
const pathInfo = resolveJsonPathForModify(currentData, pathVal);
|
|
365
278
|
if (pathInfo === null)
|
|
366
|
-
continue;
|
|
279
|
+
continue;
|
|
367
280
|
const { parent, key, exists } = pathInfo;
|
|
368
281
|
if (exists) {
|
|
369
282
|
if (parent === null && key === '') {
|
|
370
|
-
// Replace the root value
|
|
371
283
|
currentData = preparedValue;
|
|
372
284
|
}
|
|
373
285
|
else if (parent !== null && typeof key === 'string' && typeof parent === 'object' && !Array.isArray(parent)) {
|
|
@@ -378,21 +290,14 @@ export const jsonReplaceFunc = createScalarFunction({ name: 'json_replace', numA
|
|
|
378
290
|
parent[key] = preparedValue;
|
|
379
291
|
}
|
|
380
292
|
}
|
|
381
|
-
// else: Cannot replace non-existent or invalid path - ignore
|
|
382
293
|
}
|
|
383
|
-
// If path does *not* exist, json_replace does nothing.
|
|
384
|
-
}
|
|
385
|
-
try {
|
|
386
|
-
return JSON.stringify(currentData);
|
|
387
|
-
}
|
|
388
|
-
catch {
|
|
389
|
-
return null;
|
|
390
294
|
}
|
|
295
|
+
return currentData;
|
|
391
296
|
});
|
|
392
|
-
// json_set(JSON, PATH, VALUE, PATH, VALUE, ...)
|
|
297
|
+
// json_set(JSON, PATH, VALUE, PATH, VALUE, ...) — returns native object
|
|
393
298
|
export const jsonSetFunc = createScalarFunction({ name: 'json_set', numArgs: -1, deterministic: true }, (json, ...args) => {
|
|
394
|
-
const data =
|
|
395
|
-
if (data ===
|
|
299
|
+
const data = coerceToJsonValue(json);
|
|
300
|
+
if (data === undefined)
|
|
396
301
|
return null;
|
|
397
302
|
if (args.length === 0 || args.length % 2 !== 0)
|
|
398
303
|
return null;
|
|
@@ -403,113 +308,81 @@ export const jsonSetFunc = createScalarFunction({ name: 'json_set', numArgs: -1,
|
|
|
403
308
|
if (typeof pathVal !== 'string')
|
|
404
309
|
return null;
|
|
405
310
|
const preparedValue = prepareJsonValue(valueVal);
|
|
406
|
-
// Pass createParents = true to enable intermediate creation
|
|
407
311
|
const pathInfo = resolveJsonPathForModify(currentData, pathVal, true);
|
|
408
312
|
if (pathInfo === null)
|
|
409
|
-
continue;
|
|
313
|
+
continue;
|
|
410
314
|
const { parent, key } = pathInfo;
|
|
411
315
|
if (parent === null && key === '') {
|
|
412
|
-
// Set the root value
|
|
413
316
|
currentData = preparedValue;
|
|
414
317
|
}
|
|
415
318
|
else if (parent !== null) {
|
|
416
319
|
if (typeof parent === 'object' && !Array.isArray(parent) && typeof key === 'string') {
|
|
417
|
-
parent[key] = preparedValue;
|
|
320
|
+
parent[key] = preparedValue;
|
|
418
321
|
}
|
|
419
322
|
else if (Array.isArray(parent) && typeof key === 'number') {
|
|
420
323
|
if (key >= 0 && key < parent.length) {
|
|
421
|
-
parent[key] = preparedValue;
|
|
324
|
+
parent[key] = preparedValue;
|
|
422
325
|
}
|
|
423
326
|
else if (key === parent.length) {
|
|
424
|
-
parent.push(preparedValue);
|
|
327
|
+
parent.push(preparedValue);
|
|
425
328
|
}
|
|
426
329
|
else if (key > parent.length) {
|
|
427
|
-
// Pad array with nulls and append (SQLite behavior)
|
|
428
330
|
while (parent.length < key) {
|
|
429
331
|
parent.push(null);
|
|
430
332
|
}
|
|
431
333
|
parent.push(preparedValue);
|
|
432
334
|
}
|
|
433
|
-
// Ignore negative index?
|
|
434
335
|
}
|
|
435
|
-
// NOTE: This implementation does *not* create intermediate objects/arrays
|
|
436
|
-
// if the parent itself doesn't exist. A full json_set would need recursion here.
|
|
437
336
|
}
|
|
438
337
|
}
|
|
439
|
-
|
|
440
|
-
return JSON.stringify(currentData);
|
|
441
|
-
}
|
|
442
|
-
catch {
|
|
443
|
-
return null;
|
|
444
|
-
}
|
|
338
|
+
return currentData;
|
|
445
339
|
});
|
|
446
|
-
// json_remove(JSON, PATH, PATH, ...)
|
|
340
|
+
// json_remove(JSON, PATH, PATH, ...) — returns native object
|
|
447
341
|
export const jsonRemoveFunc = createScalarFunction({ name: 'json_remove', numArgs: -1, deterministic: true }, (json, ...paths) => {
|
|
448
|
-
const data =
|
|
449
|
-
if (data ===
|
|
450
|
-
return null;
|
|
342
|
+
const data = coerceToJsonValue(json);
|
|
343
|
+
if (data === undefined)
|
|
344
|
+
return null;
|
|
451
345
|
if (paths.length === 0)
|
|
452
|
-
return
|
|
346
|
+
return data;
|
|
453
347
|
const currentData = deepCopyJson(data);
|
|
454
348
|
for (const pathVal of paths) {
|
|
455
349
|
if (typeof pathVal !== 'string')
|
|
456
|
-
return null;
|
|
350
|
+
return null;
|
|
457
351
|
const pathInfo = resolveJsonPathForModify(currentData, pathVal);
|
|
458
352
|
if (pathInfo === null || !pathInfo.exists || pathInfo.parent === null) {
|
|
459
|
-
// Invalid path, path doesn't exist, or trying to remove root - ignore
|
|
460
353
|
continue;
|
|
461
354
|
}
|
|
462
355
|
const { parent, key } = pathInfo;
|
|
463
356
|
if (Array.isArray(parent) && typeof key === 'number') {
|
|
464
357
|
if (key >= 0 && key < parent.length) {
|
|
465
|
-
parent.splice(key, 1);
|
|
358
|
+
parent.splice(key, 1);
|
|
466
359
|
}
|
|
467
360
|
}
|
|
468
361
|
else if (typeof parent === 'object' && parent !== null && !Array.isArray(parent) && typeof key === 'string') {
|
|
469
362
|
if (Object.prototype.hasOwnProperty.call(parent, key)) {
|
|
470
|
-
delete parent[key];
|
|
363
|
+
delete parent[key];
|
|
471
364
|
}
|
|
472
365
|
}
|
|
473
|
-
// else: Cannot remove from non-container or invalid key type - ignore
|
|
474
|
-
}
|
|
475
|
-
try {
|
|
476
|
-
return JSON.stringify(currentData);
|
|
477
|
-
}
|
|
478
|
-
catch {
|
|
479
|
-
return null;
|
|
480
366
|
}
|
|
367
|
+
return currentData;
|
|
481
368
|
});
|
|
482
369
|
// --- Aggregate Functions --- //
|
|
483
|
-
// json_group_array(value)
|
|
370
|
+
// json_group_array(value) — returns native array
|
|
484
371
|
export const jsonGroupArrayFunc = createAggregateFunction({ name: 'json_group_array', numArgs: 1, initialValue: [] }, (acc, value) => {
|
|
485
372
|
const preparedValue = prepareJsonValue(value);
|
|
486
373
|
return [...acc, preparedValue];
|
|
487
374
|
}, (acc) => {
|
|
488
|
-
|
|
489
|
-
// Returns NULL if the group is empty, otherwise the JSON array string
|
|
490
|
-
return acc.length > 0 ? JSON.stringify(acc) : null;
|
|
491
|
-
}
|
|
492
|
-
catch {
|
|
493
|
-
return null;
|
|
494
|
-
}
|
|
375
|
+
return acc.length > 0 ? acc : null;
|
|
495
376
|
});
|
|
496
|
-
// json_group_object(name, value)
|
|
377
|
+
// json_group_object(name, value) — returns native object
|
|
497
378
|
export const jsonGroupObjectFunc = createAggregateFunction({ name: 'json_group_object', numArgs: 2, initialValue: {} }, (acc, name, value) => {
|
|
498
379
|
if (name === null || name === undefined) {
|
|
499
|
-
return acc;
|
|
380
|
+
return acc;
|
|
500
381
|
}
|
|
501
|
-
// Convert the name to a string key - SQLite converts non-string keys to strings
|
|
502
382
|
const stringKey = String(name);
|
|
503
|
-
// SQLite's json_group_object includes NULL values associated with keys
|
|
504
383
|
const preparedValue = prepareJsonValue(value);
|
|
505
384
|
return { ...acc, [stringKey]: preparedValue };
|
|
506
385
|
}, (acc) => {
|
|
507
|
-
|
|
508
|
-
// Returns NULL if the group is empty, otherwise the JSON object string
|
|
509
|
-
return Object.keys(acc).length > 0 ? JSON.stringify(acc) : null;
|
|
510
|
-
}
|
|
511
|
-
catch {
|
|
512
|
-
return null;
|
|
513
|
-
}
|
|
386
|
+
return Object.keys(acc).length > 0 ? acc : null;
|
|
514
387
|
});
|
|
515
388
|
//# sourceMappingURL=json.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../../src/func/builtins/json.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../../src/func/builtins/json.ts"],"names":[],"mappings":"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"}
|