@hypequery/protocol-conformance 0.0.0-canary-20260722115402
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/LICENSE +201 -0
- package/README.md +40 -0
- package/dist/adapters/generators.d.ts +13 -0
- package/dist/adapters/generators.d.ts.map +1 -0
- package/dist/adapters/generators.js +366 -0
- package/dist/adapters/reference.d.ts +6 -0
- package/dist/adapters/reference.d.ts.map +1 -0
- package/dist/adapters/reference.js +172 -0
- package/dist/adapters/stdio.d.ts +17 -0
- package/dist/adapters/stdio.d.ts.map +1 -0
- package/dist/adapters/stdio.js +80 -0
- package/dist/bin/conformance.d.ts +3 -0
- package/dist/bin/conformance.d.ts.map +1 -0
- package/dist/bin/conformance.js +84 -0
- package/dist/bin/reference-adapter.d.ts +3 -0
- package/dist/bin/reference-adapter.d.ts.map +1 -0
- package/dist/bin/reference-adapter.js +16 -0
- package/dist/compare.d.ts +3 -0
- package/dist/compare.d.ts.map +1 -0
- package/dist/compare.js +125 -0
- package/dist/fs.d.ts +11 -0
- package/dist/fs.d.ts.map +1 -0
- package/dist/fs.js +36 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/manifest.d.ts +13 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +118 -0
- package/dist/report.d.ts +4 -0
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +23 -0
- package/dist/runner.d.ts +12 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +197 -0
- package/dist/types.d.ts +84 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/fixtures/deployment-bundles-v1/README.md +61 -0
- package/fixtures/deployment-bundles-v1/identity.json +7 -0
- package/fixtures/deployment-bundles-v1/rejections.json +11 -0
- package/fixtures/deployment-bundles-v1/success.json +23 -0
- package/fixtures/deployment-releases-v1/README.md +36 -0
- package/fixtures/deployment-releases-v1/identity.json +7 -0
- package/fixtures/deployment-releases-v1/rejections.json +8 -0
- package/fixtures/deployment-releases-v1/success.json +14 -0
- package/fixtures/deployments-v1/README.md +77 -0
- package/fixtures/deployments-v1/identity.json +7 -0
- package/fixtures/deployments-v1/rejections.json +12 -0
- package/fixtures/deployments-v1/success.json +81 -0
- package/fixtures/expressions-v1/README.md +25 -0
- package/fixtures/expressions-v1/rejections.json +17 -0
- package/fixtures/expressions-v1/success.json +47 -0
- package/fixtures/fuzz-seeds-v1/README.md +29 -0
- package/fixtures/fuzz-seeds-v1/sql-expressions.json +32 -0
- package/fixtures/fuzz-seeds-v1/structured-values.json +32 -0
- package/fixtures/fuzz-seeds-v1/value-sources.json +191 -0
- package/fixtures/identifiers-v1/README.md +15 -0
- package/fixtures/identifiers-v1/rejections.json +58 -0
- package/fixtures/identifiers-v1/success.json +26 -0
- package/fixtures/manifest.json +117 -0
- package/fixtures/query-diagnostics-v1/README.md +49 -0
- package/fixtures/query-diagnostics-v1/rejections.json +13 -0
- package/fixtures/query-diagnostics-v1/success.json +27 -0
- package/fixtures/query-events-v1/README.md +60 -0
- package/fixtures/query-events-v1/rejections.json +18 -0
- package/fixtures/query-events-v1/success.json +40 -0
- package/fixtures/query-implementations-v1/README.md +33 -0
- package/fixtures/query-implementations-v1/rejections.json +80 -0
- package/fixtures/query-implementations-v1/success.json +96 -0
- package/fixtures/query-schemas-v1/README.md +25 -0
- package/fixtures/query-schemas-v1/rejections.json +15 -0
- package/fixtures/query-schemas-v1/success.json +17 -0
- package/fixtures/sql-portability-v1/README.md +15 -0
- package/fixtures/sql-portability-v1/non-portable.json +146 -0
- package/fixtures/sql-portability-v1/portable.json +346 -0
- package/fixtures/tagged-values-v1/README.md +44 -0
- package/fixtures/tagged-values-v1/rejections.json +298 -0
- package/fixtures/tagged-values-v1/success.json +262 -0
- package/package.json +52 -0
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "simple-reference",
|
|
4
|
+
"sql": "revenue",
|
|
5
|
+
"expression": { "kind": "reference", "name": "revenue" },
|
|
6
|
+
"dependencies": ["revenue"]
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"id": "qualified-reference",
|
|
10
|
+
"sql": "orders.revenue",
|
|
11
|
+
"expression": { "kind": "reference", "name": "orders.revenue" },
|
|
12
|
+
"dependencies": ["orders.revenue"]
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "arithmetic-product",
|
|
16
|
+
"sql": "price * quantity",
|
|
17
|
+
"expression": {
|
|
18
|
+
"kind": "binary",
|
|
19
|
+
"operator": "multiply",
|
|
20
|
+
"left": { "kind": "reference", "name": "price" },
|
|
21
|
+
"right": { "kind": "reference", "name": "quantity" }
|
|
22
|
+
},
|
|
23
|
+
"dependencies": ["price", "quantity"]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "arithmetic-precedence",
|
|
27
|
+
"sql": "price * quantity - discount",
|
|
28
|
+
"expression": {
|
|
29
|
+
"kind": "binary",
|
|
30
|
+
"operator": "subtract",
|
|
31
|
+
"left": {
|
|
32
|
+
"kind": "binary",
|
|
33
|
+
"operator": "multiply",
|
|
34
|
+
"left": { "kind": "reference", "name": "price" },
|
|
35
|
+
"right": { "kind": "reference", "name": "quantity" }
|
|
36
|
+
},
|
|
37
|
+
"right": { "kind": "reference", "name": "discount" }
|
|
38
|
+
},
|
|
39
|
+
"dependencies": ["discount", "price", "quantity"]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "parenthesized-arithmetic",
|
|
43
|
+
"sql": "(price - cost) * quantity",
|
|
44
|
+
"expression": {
|
|
45
|
+
"kind": "binary",
|
|
46
|
+
"operator": "multiply",
|
|
47
|
+
"left": {
|
|
48
|
+
"kind": "binary",
|
|
49
|
+
"operator": "subtract",
|
|
50
|
+
"left": { "kind": "reference", "name": "price" },
|
|
51
|
+
"right": { "kind": "reference", "name": "cost" }
|
|
52
|
+
},
|
|
53
|
+
"right": { "kind": "reference", "name": "quantity" }
|
|
54
|
+
},
|
|
55
|
+
"dependencies": ["cost", "price", "quantity"]
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"id": "decimal-literal",
|
|
59
|
+
"sql": "rate * 0.0825",
|
|
60
|
+
"expression": {
|
|
61
|
+
"kind": "binary",
|
|
62
|
+
"operator": "multiply",
|
|
63
|
+
"left": { "kind": "reference", "name": "rate" },
|
|
64
|
+
"right": { "kind": "literal", "value": 0.0825 }
|
|
65
|
+
},
|
|
66
|
+
"dependencies": ["rate"]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"id": "negative-literal",
|
|
70
|
+
"sql": "offset * -1",
|
|
71
|
+
"expression": {
|
|
72
|
+
"kind": "binary",
|
|
73
|
+
"operator": "multiply",
|
|
74
|
+
"left": { "kind": "reference", "name": "offset" },
|
|
75
|
+
"right": { "kind": "literal", "value": -1 }
|
|
76
|
+
},
|
|
77
|
+
"dependencies": ["offset"]
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"id": "null-if-zero-division",
|
|
81
|
+
"sql": "revenue / nullIfZero(orders)",
|
|
82
|
+
"expression": {
|
|
83
|
+
"kind": "binary",
|
|
84
|
+
"operator": "divide",
|
|
85
|
+
"left": { "kind": "reference", "name": "revenue" },
|
|
86
|
+
"right": {
|
|
87
|
+
"kind": "call",
|
|
88
|
+
"function": "nullIfZero",
|
|
89
|
+
"args": [{ "kind": "reference", "name": "orders" }]
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"dependencies": ["orders", "revenue"]
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"id": "coalesce-case-insensitive",
|
|
96
|
+
"sql": "COALESCE(discount, 0)",
|
|
97
|
+
"expression": {
|
|
98
|
+
"kind": "call",
|
|
99
|
+
"function": "coalesce",
|
|
100
|
+
"args": [
|
|
101
|
+
{ "kind": "reference", "name": "discount" },
|
|
102
|
+
{ "kind": "literal", "value": 0 }
|
|
103
|
+
]
|
|
104
|
+
},
|
|
105
|
+
"dependencies": ["discount"]
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"id": "round-two-arguments",
|
|
109
|
+
"sql": "round(amount, 2)",
|
|
110
|
+
"expression": {
|
|
111
|
+
"kind": "call",
|
|
112
|
+
"function": "round",
|
|
113
|
+
"args": [
|
|
114
|
+
{ "kind": "reference", "name": "amount" },
|
|
115
|
+
{ "kind": "literal", "value": 2 }
|
|
116
|
+
]
|
|
117
|
+
},
|
|
118
|
+
"dependencies": ["amount"]
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"id": "floor-one-argument",
|
|
122
|
+
"sql": "floor(score)",
|
|
123
|
+
"expression": {
|
|
124
|
+
"kind": "call",
|
|
125
|
+
"function": "floor",
|
|
126
|
+
"args": [{ "kind": "reference", "name": "score" }]
|
|
127
|
+
},
|
|
128
|
+
"dependencies": ["score"]
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"id": "ceil-one-argument",
|
|
132
|
+
"sql": "ceil(score)",
|
|
133
|
+
"expression": {
|
|
134
|
+
"kind": "call",
|
|
135
|
+
"function": "ceil",
|
|
136
|
+
"args": [{ "kind": "reference", "name": "score" }]
|
|
137
|
+
},
|
|
138
|
+
"dependencies": ["score"]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"id": "comparison-gte",
|
|
142
|
+
"sql": "total >= 100",
|
|
143
|
+
"expression": {
|
|
144
|
+
"kind": "comparison",
|
|
145
|
+
"operator": "gte",
|
|
146
|
+
"left": { "kind": "reference", "name": "total" },
|
|
147
|
+
"right": { "kind": "literal", "value": 100 }
|
|
148
|
+
},
|
|
149
|
+
"dependencies": ["total"]
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"id": "string-literal-escape",
|
|
153
|
+
"sql": "status = 'it''s'",
|
|
154
|
+
"expression": {
|
|
155
|
+
"kind": "comparison",
|
|
156
|
+
"operator": "eq",
|
|
157
|
+
"left": { "kind": "reference", "name": "status" },
|
|
158
|
+
"right": { "kind": "literal", "value": "it's" }
|
|
159
|
+
},
|
|
160
|
+
"dependencies": ["status"]
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"id": "boolean-literal",
|
|
164
|
+
"sql": "active = TRUE",
|
|
165
|
+
"expression": {
|
|
166
|
+
"kind": "comparison",
|
|
167
|
+
"operator": "eq",
|
|
168
|
+
"left": { "kind": "reference", "name": "active" },
|
|
169
|
+
"right": { "kind": "literal", "value": true }
|
|
170
|
+
},
|
|
171
|
+
"dependencies": ["active"]
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"id": "null-literal",
|
|
175
|
+
"sql": "deleted_at != NULL",
|
|
176
|
+
"expression": {
|
|
177
|
+
"kind": "comparison",
|
|
178
|
+
"operator": "neq",
|
|
179
|
+
"left": { "kind": "reference", "name": "deleted_at" },
|
|
180
|
+
"right": { "kind": "literal", "value": null }
|
|
181
|
+
},
|
|
182
|
+
"dependencies": ["deleted_at"]
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"id": "in-string-list",
|
|
186
|
+
"sql": "status IN ('new', 'paid', 'shipped')",
|
|
187
|
+
"expression": {
|
|
188
|
+
"kind": "comparison",
|
|
189
|
+
"operator": "in",
|
|
190
|
+
"left": { "kind": "reference", "name": "status" },
|
|
191
|
+
"right": {
|
|
192
|
+
"kind": "literal",
|
|
193
|
+
"value": {
|
|
194
|
+
"$hypequery": {
|
|
195
|
+
"type": "array",
|
|
196
|
+
"version": 1,
|
|
197
|
+
"values": ["new", "paid", "shipped"]
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
"dependencies": ["status"]
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"id": "in-number-list",
|
|
206
|
+
"sql": "year IN (2024, 2025, 2026)",
|
|
207
|
+
"expression": {
|
|
208
|
+
"kind": "comparison",
|
|
209
|
+
"operator": "in",
|
|
210
|
+
"left": { "kind": "reference", "name": "year" },
|
|
211
|
+
"right": {
|
|
212
|
+
"kind": "literal",
|
|
213
|
+
"value": {
|
|
214
|
+
"$hypequery": {
|
|
215
|
+
"type": "array",
|
|
216
|
+
"version": 1,
|
|
217
|
+
"values": [2024, 2025, 2026]
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
},
|
|
222
|
+
"dependencies": ["year"]
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"id": "not-in-lowercase",
|
|
226
|
+
"sql": "state not in ('ca', 'ny')",
|
|
227
|
+
"expression": {
|
|
228
|
+
"kind": "comparison",
|
|
229
|
+
"operator": "notIn",
|
|
230
|
+
"left": { "kind": "reference", "name": "state" },
|
|
231
|
+
"right": {
|
|
232
|
+
"kind": "literal",
|
|
233
|
+
"value": {
|
|
234
|
+
"$hypequery": {
|
|
235
|
+
"type": "array",
|
|
236
|
+
"version": 1,
|
|
237
|
+
"values": ["ca", "ny"]
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
"dependencies": ["state"]
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
"id": "between-integers",
|
|
246
|
+
"sql": "age BETWEEN 18 AND 65",
|
|
247
|
+
"expression": {
|
|
248
|
+
"kind": "comparison",
|
|
249
|
+
"operator": "between",
|
|
250
|
+
"left": { "kind": "reference", "name": "age" },
|
|
251
|
+
"right": {
|
|
252
|
+
"kind": "literal",
|
|
253
|
+
"value": {
|
|
254
|
+
"$hypequery": {
|
|
255
|
+
"type": "tuple",
|
|
256
|
+
"version": 1,
|
|
257
|
+
"values": [18, 65]
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
},
|
|
262
|
+
"dependencies": ["age"]
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"id": "between-negative-bounds",
|
|
266
|
+
"sql": "temperature BETWEEN -40 AND 45.5",
|
|
267
|
+
"expression": {
|
|
268
|
+
"kind": "comparison",
|
|
269
|
+
"operator": "between",
|
|
270
|
+
"left": { "kind": "reference", "name": "temperature" },
|
|
271
|
+
"right": {
|
|
272
|
+
"kind": "literal",
|
|
273
|
+
"value": {
|
|
274
|
+
"$hypequery": {
|
|
275
|
+
"type": "tuple",
|
|
276
|
+
"version": 1,
|
|
277
|
+
"values": [-40, 45.5]
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
},
|
|
282
|
+
"dependencies": ["temperature"]
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"id": "like-pattern",
|
|
286
|
+
"sql": "email LIKE '%@acme.com'",
|
|
287
|
+
"expression": {
|
|
288
|
+
"kind": "comparison",
|
|
289
|
+
"operator": "like",
|
|
290
|
+
"left": { "kind": "reference", "name": "email" },
|
|
291
|
+
"right": { "kind": "literal", "value": "%@acme.com" }
|
|
292
|
+
},
|
|
293
|
+
"dependencies": ["email"]
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"id": "logical-precedence",
|
|
297
|
+
"sql": "a = 1 AND b = 2 OR c = 3",
|
|
298
|
+
"expression": {
|
|
299
|
+
"kind": "logical",
|
|
300
|
+
"operator": "or",
|
|
301
|
+
"operands": [
|
|
302
|
+
{
|
|
303
|
+
"kind": "logical",
|
|
304
|
+
"operator": "and",
|
|
305
|
+
"operands": [
|
|
306
|
+
{
|
|
307
|
+
"kind": "comparison",
|
|
308
|
+
"operator": "eq",
|
|
309
|
+
"left": { "kind": "reference", "name": "a" },
|
|
310
|
+
"right": { "kind": "literal", "value": 1 }
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
"kind": "comparison",
|
|
314
|
+
"operator": "eq",
|
|
315
|
+
"left": { "kind": "reference", "name": "b" },
|
|
316
|
+
"right": { "kind": "literal", "value": 2 }
|
|
317
|
+
}
|
|
318
|
+
]
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
"kind": "comparison",
|
|
322
|
+
"operator": "eq",
|
|
323
|
+
"left": { "kind": "reference", "name": "c" },
|
|
324
|
+
"right": { "kind": "literal", "value": 3 }
|
|
325
|
+
}
|
|
326
|
+
]
|
|
327
|
+
},
|
|
328
|
+
"dependencies": ["a", "b", "c"]
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"id": "logical-not",
|
|
332
|
+
"sql": "NOT active",
|
|
333
|
+
"expression": {
|
|
334
|
+
"kind": "logical",
|
|
335
|
+
"operator": "not",
|
|
336
|
+
"operand": { "kind": "reference", "name": "active" }
|
|
337
|
+
},
|
|
338
|
+
"dependencies": ["active"]
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
"id": "backtick-identifier",
|
|
342
|
+
"sql": "`order`.`total`",
|
|
343
|
+
"expression": { "kind": "reference", "name": "order.total" },
|
|
344
|
+
"dependencies": ["order.total"]
|
|
345
|
+
}
|
|
346
|
+
]
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Tagged value version 1 fixtures
|
|
2
|
+
|
|
3
|
+
These draft language-neutral fixtures accompany RFC 0001. They become
|
|
4
|
+
normative when the RFC is accepted.
|
|
5
|
+
|
|
6
|
+
## Success manifest
|
|
7
|
+
|
|
8
|
+
Each entry in `success.json` contains:
|
|
9
|
+
|
|
10
|
+
- `id`: stable fixture identifier;
|
|
11
|
+
- `value`: the parsed canonical value before JCS;
|
|
12
|
+
- `canonicalHex`: exact RFC 8785 canonical UTF-8 bytes as lowercase hex;
|
|
13
|
+
- `sha256`: lowercase SHA-256 of those exact bytes.
|
|
14
|
+
|
|
15
|
+
The hash is a fixture integrity check, not a deployment digest or cache key.
|
|
16
|
+
|
|
17
|
+
## Rejection manifest
|
|
18
|
+
|
|
19
|
+
Entries in `rejections.json` use one of:
|
|
20
|
+
|
|
21
|
+
- `sourceUtf8`: exact JSON source presented to a duplicate-aware parser;
|
|
22
|
+
- `value`: an already parsed value presented to model validation;
|
|
23
|
+
- `generator`: a deterministic boundary case that would be wasteful to store
|
|
24
|
+
expanded.
|
|
25
|
+
|
|
26
|
+
`declaredClickHouseType`, when present, supplies the containing schema type
|
|
27
|
+
needed to validate integer-tag requirements and exact tag/type compatibility.
|
|
28
|
+
|
|
29
|
+
Generators expand as follows:
|
|
30
|
+
|
|
31
|
+
- `non-finite-float`: creates the host-language non-finite number named by
|
|
32
|
+
`value` (`NaN`, `Infinity`, or `-Infinity`) after JSON parsing;
|
|
33
|
+
- `nested-array`: wraps `leaf` in the tagged array form `depth` times;
|
|
34
|
+
- `array`: creates one tagged array containing `items` copies of `value`;
|
|
35
|
+
- `array-tree`: creates one tagged array containing `branches` tagged arrays,
|
|
36
|
+
each containing `itemsPerBranch` copies of `value`;
|
|
37
|
+
- `repeat-string`: concatenates `count` copies of the UTF-8 string `utf8`.
|
|
38
|
+
|
|
39
|
+
`error` is the required stable failure code. `phase` identifies the earliest
|
|
40
|
+
stage that must reject the input. A consumer may reject earlier only when it
|
|
41
|
+
returns the same code and does not partially execute or hash the value.
|
|
42
|
+
|
|
43
|
+
Fixture runners must not pass `sourceUtf8` through an ordinary JSON dictionary
|
|
44
|
+
parser before duplicate-key detection.
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "duplicate-object-key",
|
|
4
|
+
"phase": "parse",
|
|
5
|
+
"sourceUtf8": "{\"a\":1,\"a\":2}",
|
|
6
|
+
"error": "HQ_VALUE_DUPLICATE_KEY"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"id": "invalid-json-nan",
|
|
10
|
+
"phase": "parse",
|
|
11
|
+
"sourceUtf8": "NaN",
|
|
12
|
+
"error": "HQ_VALUE_INVALID_JSON"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "invalid-json-infinity",
|
|
16
|
+
"phase": "parse",
|
|
17
|
+
"sourceUtf8": "Infinity",
|
|
18
|
+
"error": "HQ_VALUE_INVALID_JSON"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "lone-high-surrogate",
|
|
22
|
+
"phase": "unicode",
|
|
23
|
+
"sourceUtf8": "\"\\ud800\"",
|
|
24
|
+
"error": "HQ_VALUE_INVALID_UNICODE"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "control-character-null",
|
|
28
|
+
"phase": "model",
|
|
29
|
+
"sourceUtf8": "\"\\u0000\"",
|
|
30
|
+
"error": "HQ_VALUE_CONTROL_CHARACTER"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "control-character-c1-next-line",
|
|
34
|
+
"phase": "model",
|
|
35
|
+
"sourceUtf8": "\"\\u0085\"",
|
|
36
|
+
"error": "HQ_VALUE_CONTROL_CHARACTER"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "negative-zero",
|
|
40
|
+
"phase": "model",
|
|
41
|
+
"sourceUtf8": "-0",
|
|
42
|
+
"error": "HQ_VALUE_NEGATIVE_ZERO"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "non-finite-float-model-value",
|
|
46
|
+
"phase": "model",
|
|
47
|
+
"generator": {
|
|
48
|
+
"type": "non-finite-float",
|
|
49
|
+
"value": "NaN"
|
|
50
|
+
},
|
|
51
|
+
"error": "HQ_VALUE_NON_FINITE_FLOAT"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "safe-integer-requires-tag",
|
|
55
|
+
"phase": "model",
|
|
56
|
+
"value": 42,
|
|
57
|
+
"declaredClickHouseType": "Int64",
|
|
58
|
+
"error": "HQ_VALUE_INTEGER_TAG_REQUIRED"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": "raw-array",
|
|
62
|
+
"phase": "model",
|
|
63
|
+
"value": [true, false],
|
|
64
|
+
"error": "HQ_VALUE_RAW_COMPOSITE"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "unknown-tag-type",
|
|
68
|
+
"phase": "model",
|
|
69
|
+
"value": {
|
|
70
|
+
"$hypequery": {
|
|
71
|
+
"type": "blob",
|
|
72
|
+
"version": 1
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"error": "HQ_VALUE_UNKNOWN_TAG"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "unknown-tag-version",
|
|
79
|
+
"phase": "model",
|
|
80
|
+
"value": {
|
|
81
|
+
"$hypequery": {
|
|
82
|
+
"type": "integer",
|
|
83
|
+
"version": 2,
|
|
84
|
+
"bits": 8,
|
|
85
|
+
"signed": true,
|
|
86
|
+
"value": "1"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"error": "HQ_VALUE_UNKNOWN_TAG_VERSION"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"id": "unknown-tag-field",
|
|
93
|
+
"phase": "model",
|
|
94
|
+
"value": {
|
|
95
|
+
"$hypequery": {
|
|
96
|
+
"type": "integer",
|
|
97
|
+
"version": 1,
|
|
98
|
+
"bits": 8,
|
|
99
|
+
"signed": true,
|
|
100
|
+
"value": "1",
|
|
101
|
+
"extra": true
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"error": "HQ_VALUE_UNKNOWN_FIELD"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"id": "integer-leading-zero",
|
|
108
|
+
"phase": "model",
|
|
109
|
+
"value": {
|
|
110
|
+
"$hypequery": {
|
|
111
|
+
"type": "integer",
|
|
112
|
+
"version": 1,
|
|
113
|
+
"bits": 8,
|
|
114
|
+
"signed": false,
|
|
115
|
+
"value": "01"
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"error": "HQ_VALUE_INVALID_FORMAT"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"id": "signed-int8-overflow",
|
|
122
|
+
"phase": "model",
|
|
123
|
+
"value": {
|
|
124
|
+
"$hypequery": {
|
|
125
|
+
"type": "integer",
|
|
126
|
+
"version": 1,
|
|
127
|
+
"bits": 8,
|
|
128
|
+
"signed": true,
|
|
129
|
+
"value": "128"
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
"error": "HQ_VALUE_OUT_OF_RANGE"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"id": "integer-declared-type-mismatch",
|
|
136
|
+
"phase": "model",
|
|
137
|
+
"value": {
|
|
138
|
+
"$hypequery": {
|
|
139
|
+
"type": "integer",
|
|
140
|
+
"version": 1,
|
|
141
|
+
"bits": 8,
|
|
142
|
+
"signed": false,
|
|
143
|
+
"value": "1"
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
"declaredClickHouseType": "Int8",
|
|
147
|
+
"error": "HQ_VALUE_TYPE_MISMATCH"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"id": "decimal-negative-zero",
|
|
151
|
+
"phase": "model",
|
|
152
|
+
"value": {
|
|
153
|
+
"$hypequery": {
|
|
154
|
+
"type": "decimal",
|
|
155
|
+
"version": 1,
|
|
156
|
+
"precision": 9,
|
|
157
|
+
"scale": 2,
|
|
158
|
+
"coefficient": "-0"
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
"error": "HQ_VALUE_INVALID_FORMAT"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"id": "decimal-scale-exceeds-precision",
|
|
165
|
+
"phase": "model",
|
|
166
|
+
"value": {
|
|
167
|
+
"$hypequery": {
|
|
168
|
+
"type": "decimal",
|
|
169
|
+
"version": 1,
|
|
170
|
+
"precision": 2,
|
|
171
|
+
"scale": 3,
|
|
172
|
+
"coefficient": "1"
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
"error": "HQ_VALUE_OUT_OF_RANGE"
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"id": "invalid-date",
|
|
179
|
+
"phase": "model",
|
|
180
|
+
"value": {
|
|
181
|
+
"$hypequery": {
|
|
182
|
+
"type": "date",
|
|
183
|
+
"version": 1,
|
|
184
|
+
"clickhouseType": "Date",
|
|
185
|
+
"value": "2025-02-29"
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
"error": "HQ_VALUE_INVALID_FORMAT"
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"id": "date-out-of-range",
|
|
192
|
+
"phase": "model",
|
|
193
|
+
"value": {
|
|
194
|
+
"$hypequery": {
|
|
195
|
+
"type": "date",
|
|
196
|
+
"version": 1,
|
|
197
|
+
"clickhouseType": "Date",
|
|
198
|
+
"value": "1900-01-01"
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
"error": "HQ_VALUE_OUT_OF_RANGE"
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"id": "datetime-value-missing-z",
|
|
205
|
+
"phase": "model",
|
|
206
|
+
"value": {
|
|
207
|
+
"$hypequery": {
|
|
208
|
+
"type": "datetime",
|
|
209
|
+
"version": 1,
|
|
210
|
+
"clickhouseType": "DateTime64",
|
|
211
|
+
"precision": 3,
|
|
212
|
+
"timezone": "Europe/Madrid",
|
|
213
|
+
"value": "2026-07-13T14:30:45.123"
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
"error": "HQ_VALUE_INVALID_FORMAT"
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"id": "uuid-uppercase",
|
|
220
|
+
"phase": "model",
|
|
221
|
+
"value": {
|
|
222
|
+
"$hypequery": {
|
|
223
|
+
"type": "uuid",
|
|
224
|
+
"version": 1,
|
|
225
|
+
"value": "01890F3E-7B7B-7CC2-98C4-DC0C0C07398F"
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
"error": "HQ_VALUE_INVALID_FORMAT"
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"id": "bytes-padding",
|
|
232
|
+
"phase": "model",
|
|
233
|
+
"value": {
|
|
234
|
+
"$hypequery": {
|
|
235
|
+
"type": "bytes",
|
|
236
|
+
"version": 1,
|
|
237
|
+
"encoding": "base64url",
|
|
238
|
+
"value": "AA=="
|
|
239
|
+
}
|
|
240
|
+
},
|
|
241
|
+
"error": "HQ_VALUE_INVALID_FORMAT"
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"id": "enum8-code-overflow",
|
|
245
|
+
"phase": "model",
|
|
246
|
+
"value": {
|
|
247
|
+
"$hypequery": {
|
|
248
|
+
"type": "enum",
|
|
249
|
+
"version": 1,
|
|
250
|
+
"bits": 8,
|
|
251
|
+
"code": 128,
|
|
252
|
+
"label": "overflow"
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
"error": "HQ_VALUE_OUT_OF_RANGE"
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"id": "composite-depth-17",
|
|
259
|
+
"phase": "limits",
|
|
260
|
+
"generator": {
|
|
261
|
+
"type": "nested-array",
|
|
262
|
+
"depth": 17,
|
|
263
|
+
"leaf": null
|
|
264
|
+
},
|
|
265
|
+
"error": "HQ_VALUE_TOO_DEEP"
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"id": "array-items-1001",
|
|
269
|
+
"phase": "limits",
|
|
270
|
+
"generator": {
|
|
271
|
+
"type": "array",
|
|
272
|
+
"items": 1001,
|
|
273
|
+
"value": null
|
|
274
|
+
},
|
|
275
|
+
"error": "HQ_VALUE_TOO_MANY_ITEMS"
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"id": "value-nodes-10001",
|
|
279
|
+
"phase": "limits",
|
|
280
|
+
"generator": {
|
|
281
|
+
"type": "array-tree",
|
|
282
|
+
"branches": 10,
|
|
283
|
+
"itemsPerBranch": 999,
|
|
284
|
+
"value": null
|
|
285
|
+
},
|
|
286
|
+
"error": "HQ_VALUE_TOO_MANY_NODES"
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
"id": "string-bytes-65537",
|
|
290
|
+
"phase": "limits",
|
|
291
|
+
"generator": {
|
|
292
|
+
"type": "repeat-string",
|
|
293
|
+
"utf8": "a",
|
|
294
|
+
"count": 65537
|
|
295
|
+
},
|
|
296
|
+
"error": "HQ_VALUE_TOO_LARGE"
|
|
297
|
+
}
|
|
298
|
+
]
|