@quereus/quereus 0.6.1 → 0.6.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.
Files changed (36) hide show
  1. package/dist/src/common/type-inference.d.ts +9 -1
  2. package/dist/src/common/type-inference.d.ts.map +1 -1
  3. package/dist/src/common/type-inference.js +11 -3
  4. package/dist/src/common/type-inference.js.map +1 -1
  5. package/dist/src/core/database.d.ts +27 -1
  6. package/dist/src/core/database.d.ts.map +1 -1
  7. package/dist/src/core/database.js +39 -6
  8. package/dist/src/core/database.js.map +1 -1
  9. package/dist/src/core/param.d.ts +17 -1
  10. package/dist/src/core/param.d.ts.map +1 -1
  11. package/dist/src/core/param.js +23 -1
  12. package/dist/src/core/param.js.map +1 -1
  13. package/dist/src/core/statement.d.ts +10 -1
  14. package/dist/src/core/statement.d.ts.map +1 -1
  15. package/dist/src/core/statement.js +71 -5
  16. package/dist/src/core/statement.js.map +1 -1
  17. package/dist/src/planner/scopes/param.d.ts +2 -2
  18. package/dist/src/planner/scopes/param.d.ts.map +1 -1
  19. package/dist/src/planner/scopes/param.js +9 -9
  20. package/dist/src/planner/scopes/param.js.map +1 -1
  21. package/dist/src/types/index.d.ts +1 -1
  22. package/dist/src/types/index.d.ts.map +1 -1
  23. package/dist/src/types/index.js +1 -1
  24. package/dist/src/types/index.js.map +1 -1
  25. package/dist/src/types/logical-type.d.ts +5 -0
  26. package/dist/src/types/logical-type.d.ts.map +1 -1
  27. package/dist/src/types/logical-type.js +15 -0
  28. package/dist/src/types/logical-type.js.map +1 -1
  29. package/package.json +1 -1
  30. package/src/common/type-inference.ts +11 -3
  31. package/src/core/database.ts +41 -6
  32. package/src/core/param.ts +23 -1
  33. package/src/core/statement.ts +89 -5
  34. package/src/planner/scopes/param.ts +9 -9
  35. package/src/types/index.ts +1 -1
  36. package/src/types/logical-type.ts +16 -0
@@ -9,6 +9,8 @@ import { Cached } from '../util/cached.js';
9
9
  import { isAsyncIterable } from '../runtime/utils.js';
10
10
  import { generateInstructionProgram, serializePlanTree } from '../planner/debug.js';
11
11
  import { EmissionContext } from '../runtime/emission-context.js';
12
+ import { getParameterTypes } from './param.js';
13
+ import { getPhysicalType, physicalTypeName } from '../types/logical-type.js';
12
14
  const log = createLogger('core:statement');
13
15
  const errorLog = log.extend('error');
14
16
  const warnLog = log.extend('warn');
@@ -28,12 +30,15 @@ export class Statement {
28
30
  needsCompile = true;
29
31
  columnDefCache = new Cached(() => this.getColumnDefs());
30
32
  schemaChangeUnsubscriber = null;
33
+ /** Parameter types established at prepare time (either explicit or inferred from initial values) */
34
+ parameterTypes = undefined;
31
35
  /**
32
36
  * @internal - Use db.prepare().
33
37
  * The `sqlOrAstBatch` can be a single SQL string (parsed internally) or a pre-parsed batch.
34
38
  * `initialAstIndex` is for internal use when db.prepare might create one Statement per AST in a batch.
39
+ * `paramsOrTypes` can be initial parameter values (to infer types) or explicit types.
35
40
  */
36
- constructor(db, sqlOrAstBatch, initialAstIndex = 0) {
41
+ constructor(db, sqlOrAstBatch, initialAstIndex = 0, paramsOrTypes) {
37
42
  this.db = db;
38
43
  if (typeof sqlOrAstBatch === 'string') {
39
44
  this.originalSql = sqlOrAstBatch;
@@ -52,6 +57,24 @@ export class Statement {
52
57
  // Try to reconstruct originalSql if possible, or set a generic name
53
58
  this.originalSql = this.astBatch.map(s => s.toString()).join('; '); // TODO: replace with better AST stringification
54
59
  }
60
+ // Handle explicit parameter types or initial values
61
+ if (paramsOrTypes instanceof Map) {
62
+ // Explicit parameter types provided
63
+ this.parameterTypes = paramsOrTypes;
64
+ }
65
+ else if (paramsOrTypes !== undefined) {
66
+ // Initial parameter values - infer types and bind them
67
+ this.parameterTypes = getParameterTypes(paramsOrTypes);
68
+ // Also bind the initial values
69
+ if (Array.isArray(paramsOrTypes)) {
70
+ paramsOrTypes.forEach((value, index) => {
71
+ this.boundArgs[index + 1] = value;
72
+ });
73
+ }
74
+ else {
75
+ Object.assign(this.boundArgs, paramsOrTypes);
76
+ }
77
+ }
55
78
  if (this.astBatch.length === 0 && initialAstIndex === 0) {
56
79
  // No statements to run, effectively. nextStatement will return false.
57
80
  this.astBatchIndex = -1;
@@ -76,6 +99,7 @@ export class Statement {
76
99
  this.emissionContext = null;
77
100
  this.needsCompile = true;
78
101
  this.columnDefCache.clear();
102
+ this.parameterTypes = undefined;
79
103
  return true;
80
104
  }
81
105
  else {
@@ -99,7 +123,14 @@ export class Statement {
99
123
  let plan;
100
124
  try {
101
125
  const currentAst = this.getAstStatement();
102
- const planResult = this.db._buildPlan([currentAst], this.boundArgs);
126
+ // On first compilation, establish the parameter types
127
+ // Use explicit types if provided, otherwise infer from bound args
128
+ if (this.parameterTypes === undefined) {
129
+ // Infer types from current bound args
130
+ this.parameterTypes = getParameterTypes(this.boundArgs);
131
+ }
132
+ // Pass parameter types directly to planning
133
+ const planResult = this.db._buildPlan([currentAst], this.parameterTypes);
103
134
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
104
135
  const dependencies = planResult.schemaDependencies; // Extract dependencies from planning context
105
136
  plan = this.db.optimizer.optimize(planResult, this.db);
@@ -225,6 +256,8 @@ export class Statement {
225
256
  throw new MisuseError("Statement busy, another iteration may be in progress or reset needed.");
226
257
  if (params)
227
258
  this.bindAll(params);
259
+ // Validate parameter types before execution
260
+ this.validateParameterTypes();
228
261
  this.busy = true;
229
262
  try {
230
263
  const blockPlanNode = this.compile();
@@ -281,15 +314,15 @@ export class Statement {
281
314
  this.busy = false;
282
315
  }
283
316
  /**
284
- * Clears all bound parameter values, setting them to NULL.
317
+ * Clears all bound parameter values.
318
+ * Note: This does NOT trigger recompilation - parameter types are preserved.
285
319
  */
286
320
  clearBindings() {
287
321
  this.validateStatement("clear bindings for");
288
322
  if (this.busy)
289
323
  throw new MisuseError("Statement busy, reset first");
290
324
  this.boundArgs = {};
291
- this.emissionContext = null;
292
- this.needsCompile = true;
325
+ // Don't set needsCompile - parameter types are preserved
293
326
  return this;
294
327
  }
295
328
  /**
@@ -409,6 +442,39 @@ export class Statement {
409
442
  this.validateStatement("get AST for");
410
443
  return this.astBatch[this.astBatchIndex];
411
444
  }
445
+ /**
446
+ * Validates that bound parameters match the expected types from compilation.
447
+ * Validates that the JavaScript value is compatible with the physical type of the declared logical type.
448
+ * @throws QuereusError if parameter types don't match
449
+ */
450
+ validateParameterTypes() {
451
+ if (!this.parameterTypes)
452
+ return; // No parameter types established yet
453
+ for (const [key, expectedType] of this.parameterTypes.entries()) {
454
+ const value = this.boundArgs[key];
455
+ // Allow undefined/missing parameters (they'll be caught at runtime if required)
456
+ if (value === undefined)
457
+ continue;
458
+ // NULL is compatible with any nullable type
459
+ if (value === null) {
460
+ if (!expectedType.nullable) {
461
+ throw new QuereusError(`Parameter type mismatch for ${typeof key === 'number' ? `?${key}` : `:${key}`}: ` +
462
+ `expected non-nullable ${expectedType.logicalType.name}, got NULL`, StatusCode.MISMATCH);
463
+ }
464
+ continue;
465
+ }
466
+ // Get the physical type of the declared logical type
467
+ const expectedPhysicalType = expectedType.logicalType.physicalType;
468
+ // Get the physical type directly from the JavaScript value
469
+ const actualPhysicalType = getPhysicalType(value);
470
+ // Check if physical types are compatible
471
+ if (actualPhysicalType !== expectedPhysicalType) {
472
+ throw new QuereusError(`Parameter type mismatch for ${typeof key === 'number' ? `?${key}` : `:${key}`}: ` +
473
+ `expected ${expectedType.logicalType.name} (physical: ${physicalTypeName(expectedPhysicalType)}), ` +
474
+ `got value with physical type ${physicalTypeName(actualPhysicalType)}`, StatusCode.MISMATCH);
475
+ }
476
+ }
477
+ }
412
478
  /**
413
479
  * Gets a detailed JSON representation of the query plan for debugging.
414
480
  * @returns JSON string containing the detailed plan tree.
@@ -1 +1 @@
1
- {"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/core/statement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"statement.js","sourceRoot":"","sources":["../../../src/core/statement.ts"],"names":[],"mappings":"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"}
@@ -12,8 +12,8 @@ export declare class ParameterScope extends BaseScope {
12
12
  readonly parentScope: Scope;
13
13
  private _nextAnonymousIndex;
14
14
  private readonly _parameters;
15
- private readonly _parameterTypeHints;
16
- constructor(parentScope: Scope, parameterTypeHints?: ReadonlyMap<string | number, ScalarType>);
15
+ private readonly _parameterTypes;
16
+ constructor(parentScope: Scope, parameterTypes?: ReadonlyMap<string | number, ScalarType>);
17
17
  resolveSymbol(symbolKey: string, expression: AST.Expression): PlanNode | typeof Ambiguous | undefined;
18
18
  /**
19
19
  * Returns all parameters resolved by this scope.
@@ -1 +1 @@
1
- {"version":3,"file":"param.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/param.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAUtD;;;GAGG;AACH,qBAAa,cAAe,SAAQ,SAAS;aAM3B,WAAW,EAAE,KAAK;IALnC,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2D;IACvF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA2C;gBAG9D,WAAW,EAAE,KAAK,EAClC,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,MAAM,EAAE,UAAU,CAAC;IAM9D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,OAAO,SAAS,GAAG,SAAS;IAiDrG;;OAEG;IACH,aAAa,IAAI,WAAW,CAAC,MAAM,GAAG,MAAM,EAAE,sBAAsB,CAAC;CAUrE"}
1
+ {"version":3,"file":"param.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/param.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAUtD;;;GAGG;AACH,qBAAa,cAAe,SAAQ,SAAS;aAM3B,WAAW,EAAE,KAAK;IALnC,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2D;IACvF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2C;gBAG1D,WAAW,EAAE,KAAK,EAClC,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,MAAM,EAAE,UAAU,CAAC;IAM1D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,OAAO,SAAS,GAAG,SAAS;IAiDrG;;OAEG;IACH,aAAa,IAAI,WAAW,CAAC,MAAM,GAAG,MAAM,EAAE,sBAAsB,CAAC;CAUrE"}
@@ -15,11 +15,11 @@ export class ParameterScope extends BaseScope {
15
15
  parentScope;
16
16
  _nextAnonymousIndex = 1;
17
17
  _parameters = new Map();
18
- _parameterTypeHints;
19
- constructor(parentScope, parameterTypeHints) {
18
+ _parameterTypes;
19
+ constructor(parentScope, parameterTypes) {
20
20
  super();
21
21
  this.parentScope = parentScope;
22
- this._parameterTypeHints = parameterTypeHints || new Map();
22
+ this._parameterTypes = parameterTypes || new Map();
23
23
  }
24
24
  resolveSymbol(symbolKey, expression) {
25
25
  let identifier;
@@ -30,9 +30,9 @@ export class ParameterScope extends BaseScope {
30
30
  if (symbolKey === '?') {
31
31
  // Use the current _nextAnonymousIndex as the potential identifier for this '?'
32
32
  const currentAnonymousId = this._nextAnonymousIndex;
33
- // Check if this specific anonymous parameter (by its future index) has a type hint
34
- if (this._parameterTypeHints.has(currentAnonymousId)) {
35
- resolvedType = this._parameterTypeHints.get(currentAnonymousId);
33
+ // Check if this specific anonymous parameter (by its future index) has a declared type
34
+ if (this._parameterTypes.has(currentAnonymousId)) {
35
+ resolvedType = this._parameterTypes.get(currentAnonymousId);
36
36
  }
37
37
  // Note: We don't check _parameters here for '?' because each '?' AST node should resolve,
38
38
  // potentially creating a new ParameterReferenceNode if it's a new '?' instance in the query,
@@ -51,11 +51,11 @@ export class ParameterScope extends BaseScope {
51
51
  identifier = isNaN(numIndex) ? nameOrIndex : numIndex;
52
52
  if (this._parameters.has(identifier)) {
53
53
  parameterNode = this._parameters.get(identifier);
54
- // If already exists, its type was set at creation. Type hints are for new nodes.
54
+ // If already exists, its type was set at creation
55
55
  }
56
56
  else {
57
- if (this._parameterTypeHints.has(identifier)) {
58
- resolvedType = this._parameterTypeHints.get(identifier);
57
+ if (this._parameterTypes.has(identifier)) {
58
+ resolvedType = this._parameterTypes.get(identifier);
59
59
  }
60
60
  parameterNode = new ParameterReferenceNode(this, parameterExpression, identifier, resolvedType);
61
61
  this._parameters.set(identifier, parameterNode);
@@ -1 +1 @@
1
- {"version":3,"file":"param.js","sourceRoot":"","sources":["../../../../src/planner/scopes/param.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"param.js","sourceRoot":"","sources":["../../../../src/planner/scopes/param.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { PhysicalType, type LogicalType, getPhysicalType } from './logical-type.js';
1
+ export { PhysicalType, type LogicalType, getPhysicalType, physicalTypeName } from './logical-type.js';
2
2
  export { NULL_TYPE, INTEGER_TYPE, REAL_TYPE, TEXT_TYPE, BLOB_TYPE, BOOLEAN_TYPE, NUMERIC_TYPE, ANY_TYPE } from './builtin-types.js';
3
3
  export { DATE_TYPE, TIME_TYPE, DATETIME_TYPE, TIMESPAN_TYPE } from './temporal-types.js';
4
4
  export { JSON_TYPE } from './json-type.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpF,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGpI,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAGjG,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGtG,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGpI,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAGjG,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  // Core type system exports
2
- export { PhysicalType, getPhysicalType } from './logical-type.js';
2
+ export { PhysicalType, getPhysicalType, physicalTypeName } from './logical-type.js';
3
3
  // Built-in types
4
4
  export { NULL_TYPE, INTEGER_TYPE, REAL_TYPE, TEXT_TYPE, BLOB_TYPE, BOOLEAN_TYPE, NUMERIC_TYPE, ANY_TYPE } from './builtin-types.js';
5
5
  // Temporal types
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,OAAO,EAAE,YAAY,EAAoB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpF,iBAAiB;AACjB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEpI,iBAAiB;AACjB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzF,YAAY;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEjG,uBAAuB;AACvB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,OAAO,EAAE,YAAY,EAAoB,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEtG,iBAAiB;AACjB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEpI,iBAAiB;AACjB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzF,YAAY;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEjG,uBAAuB;AACvB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC"}
@@ -49,4 +49,9 @@ export interface LogicalType {
49
49
  * This is used for values that don't have an associated logical type.
50
50
  */
51
51
  export declare function getPhysicalType(value: SqlValue): PhysicalType;
52
+ /**
53
+ * Get a human-readable name for a physical type code.
54
+ * Useful for error messages and debugging.
55
+ */
56
+ export declare function physicalTypeName(physicalType: PhysicalType): string;
52
57
  //# sourceMappingURL=logical-type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logical-type.d.ts","sourceRoot":"","sources":["../../../src/types/logical-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;AAEjE;;;GAGG;AACH,oBAAY,YAAY;IACvB,IAAI,IAAI;IACR,OAAO,IAAI,CAAK,kBAAkB;IAClC,IAAI,IAAI,CAAQ,0BAA0B;IAC1C,IAAI,IAAI,CAAQ,SAAS;IACzB,IAAI,IAAI,CAAQ,aAAa;IAC7B,OAAO,IAAI;CACX;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAE3B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,YAAY,EAAE,YAAY,CAAC;IAG3B,4CAA4C;IAC5C,QAAQ,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;IACpC,gDAAgD;IAChD,KAAK,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAGlC,wCAAwC;IACxC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAC1E,0CAA0C;IAC1C,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAGxC,iCAAiC;IACjC,SAAS,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACtC,2BAA2B;IAC3B,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAGxC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,YAAY,CAU7D"}
1
+ {"version":3,"file":"logical-type.d.ts","sourceRoot":"","sources":["../../../src/types/logical-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;AAEjE;;;GAGG;AACH,oBAAY,YAAY;IACvB,IAAI,IAAI;IACR,OAAO,IAAI,CAAK,kBAAkB;IAClC,IAAI,IAAI,CAAQ,0BAA0B;IAC1C,IAAI,IAAI,CAAQ,SAAS;IACzB,IAAI,IAAI,CAAQ,aAAa;IAC7B,OAAO,IAAI;CACX;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAE3B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,YAAY,EAAE,YAAY,CAAC;IAG3B,4CAA4C;IAC5C,QAAQ,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;IACpC,gDAAgD;IAChD,KAAK,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAGlC,wCAAwC;IACxC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAC1E,0CAA0C;IAC1C,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAGxC,iCAAiC;IACjC,SAAS,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACtC,2BAA2B;IAC3B,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAGxC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,YAAY,CAU7D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAUnE"}
@@ -31,4 +31,19 @@ export function getPhysicalType(value) {
31
31
  return PhysicalType.BLOB;
32
32
  return PhysicalType.NULL;
33
33
  }
34
+ /**
35
+ * Get a human-readable name for a physical type code.
36
+ * Useful for error messages and debugging.
37
+ */
38
+ export function physicalTypeName(physicalType) {
39
+ switch (physicalType) {
40
+ case PhysicalType.NULL: return 'NULL';
41
+ case PhysicalType.INTEGER: return 'INTEGER';
42
+ case PhysicalType.REAL: return 'REAL';
43
+ case PhysicalType.TEXT: return 'TEXT';
44
+ case PhysicalType.BLOB: return 'BLOB';
45
+ case PhysicalType.BOOLEAN: return 'BOOLEAN';
46
+ default: return 'UNKNOWN';
47
+ }
48
+ }
34
49
  //# sourceMappingURL=logical-type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logical-type.js","sourceRoot":"","sources":["../../../src/types/logical-type.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,MAAM,CAAN,IAAY,YAOX;AAPD,WAAY,YAAY;IACvB,+CAAQ,CAAA;IACR,qDAAW,CAAA;IACX,+CAAQ,CAAA;IACR,+CAAQ,CAAA;IACR,+CAAQ,CAAA;IACR,qDAAW,CAAA;AACZ,CAAC,EAPW,YAAY,KAAZ,YAAY,QAOvB;AAwCD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAe;IAC9C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;IAC3E,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IACxD,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IAC5D,IAAI,KAAK,YAAY,UAAU;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IAC1D,OAAO,YAAY,CAAC,IAAI,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"logical-type.js","sourceRoot":"","sources":["../../../src/types/logical-type.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,MAAM,CAAN,IAAY,YAOX;AAPD,WAAY,YAAY;IACvB,+CAAQ,CAAA;IACR,qDAAW,CAAA;IACX,+CAAQ,CAAA;IACR,+CAAQ,CAAA;IACR,+CAAQ,CAAA;IACR,qDAAW,CAAA;AACZ,CAAC,EAPW,YAAY,KAAZ,YAAY,QAOvB;AAwCD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAe;IAC9C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;IAC3E,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IACxD,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC,OAAO,CAAC;IAC5D,IAAI,KAAK,YAAY,UAAU;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC;IAC1D,OAAO,YAAY,CAAC,IAAI,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,YAA0B;IAC1D,QAAQ,YAAY,EAAE,CAAC;QACtB,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACtC,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5C,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACtC,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACtC,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACtC,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5C,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;IAC3B,CAAC;AACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quereus/quereus",
3
- "version": "0.6.1",
3
+ "version": "0.6.2",
4
4
  "type": "module",
5
5
  "description": "Federated SQL query processor",
6
6
  "publisher": "Got Choices Foundation",
@@ -15,13 +15,21 @@ export function getLiteralSqlType(v: SqlValue): SqlDataType {
15
15
  }
16
16
 
17
17
  /**
18
- * Infer LogicalType from a SqlValue
18
+ * Infer LogicalType from a SqlValue for parameters.
19
+ * Uses JavaScript type to determine the logical type:
20
+ * - null → NULL
21
+ * - number (integer) → INTEGER
22
+ * - number (float) → REAL
23
+ * - bigint → INTEGER
24
+ * - boolean → BOOLEAN
25
+ * - string → TEXT
26
+ * - Uint8Array → BLOB
19
27
  */
20
28
  export function inferLogicalTypeFromValue(v: SqlValue): LogicalType {
21
29
  if (v === null) return NULL_TYPE;
22
30
  if (typeof v === 'number') {
23
- // For now, all numbers are REAL. Could check Number.isInteger() for INTEGER_TYPE
24
- return REAL_TYPE;
31
+ // Distinguish INTEGER from REAL based on Number.isInteger()
32
+ return Number.isInteger(v) ? INTEGER_TYPE : REAL_TYPE;
25
33
  }
26
34
  if (typeof v === 'bigint') return INTEGER_TYPE;
27
35
  if (typeof v === 'boolean') return BOOLEAN_TYPE;
@@ -43,6 +43,7 @@ import { DeclaredSchemaManager } from '../schema/declared-schema-manager.js';
43
43
  import { analyzeRowSpecific } from '../planner/analysis/constraint-extractor.js';
44
44
  import { DeferredConstraintQueue } from '../runtime/deferred-constraint-queue.js';
45
45
  import { type LogicalType } from '../types/logical-type.js';
46
+ import { getParameterTypes } from './param.js';
46
47
 
47
48
  const log = createLogger('core:database');
48
49
  const warnLog = log.extend('warn');
@@ -196,21 +197,50 @@ export class Database {
196
197
 
197
198
  /**
198
199
  * Prepares an SQL statement for execution.
200
+ *
199
201
  * @param sql The SQL string to prepare.
202
+ * @param paramsOrTypes Optional parameter values (to infer types) or explicit type map.
203
+ * - If SqlParameters: Parameter types are inferred from the values
204
+ * - If Map<string|number, ScalarType>: Explicit type hints for parameters
205
+ * - If undefined: Parameters default to TEXT type
200
206
  * @returns A Statement object.
201
207
  * @throws QuereusError on failure (e.g., syntax error).
208
+ *
209
+ * @example
210
+ * // Infer types from initial values
211
+ * const stmt = db.prepare('INSERT INTO users (id, name) VALUES (?, ?)', [1, 'Alice']);
212
+ *
213
+ * @example
214
+ * // Explicit param types
215
+ * const types = new Map([
216
+ * [1, { typeClass: 'scalar', logicalType: INTEGER_TYPE, nullable: false }],
217
+ * [2, { typeClass: 'scalar', logicalType: TEXT_TYPE, nullable: false }]
218
+ * ]);
219
+ * const stmt = db.prepare('INSERT INTO users (id, name) VALUES (?, ?)', types);
202
220
  */
203
- prepare(sql: string): Statement {
221
+ prepare(sql: string, paramsOrTypes?: SqlParameters | SqlValue[] | Map<string | number, ScalarType>): Statement {
204
222
  this.checkOpen();
205
223
  log('Preparing SQL (new runtime): %s', sql);
206
224
 
207
225
  // Statement constructor defers planning/compilation until first step or explicit compile()
208
- const stmt = new Statement(this, sql);
226
+ const stmt = new Statement(this, sql, 0, paramsOrTypes);
209
227
 
210
228
  this.statements.add(stmt);
211
229
  return stmt;
212
230
  }
213
231
 
232
+ /**
233
+ * Executes a query and returns the first result row as an object.
234
+ * @param sql The SQL query string to execute.
235
+ * @param params Optional parameters to bind.
236
+ * @returns A Promise resolving to the first result row as an object, or undefined if no rows.
237
+ * @throws QuereusError on failure.
238
+ */
239
+ get(sql: string, params?: SqlParameters | SqlValue[]): Promise<Record<string, SqlValue> | undefined> {
240
+ const stmt = this.prepare(sql, params);
241
+ return stmt.get(params);
242
+ }
243
+
214
244
  /**
215
245
  * Executes one or more SQL statements directly.
216
246
  * @param sql The SQL string(s) to execute.
@@ -902,17 +932,22 @@ export class Database {
902
932
  }
903
933
 
904
934
  /** @internal */
905
- _buildPlan(statements: AST.Statement[], params?: SqlParameters | SqlValue[]) {
935
+ _buildPlan(statements: AST.Statement[], paramsOrTypes?: SqlParameters | SqlValue[] | Map<string | number, ScalarType>) {
906
936
  const globalScope = new GlobalScope(this.schemaManager);
907
937
 
908
- // TODO: way to generate type hints from parameters? Maybe we should extract that from the expression context?
938
+ // If we received parameter values, infer their types
939
+ // If we received explicit parameter types, use them as-is
940
+ const parameterTypes = paramsOrTypes instanceof Map
941
+ ? paramsOrTypes
942
+ : getParameterTypes(paramsOrTypes);
943
+
909
944
  // This ParameterScope is for the entire batch. It has globalScope as its parent.
910
- const parameterScope = new ParameterScope(globalScope);
945
+ const parameterScope = new ParameterScope(globalScope, parameterTypes);
911
946
 
912
947
  const ctx: PlanningContext = {
913
948
  db: this,
914
949
  schemaManager: this.schemaManager,
915
- parameters: params ?? {},
950
+ parameters: paramsOrTypes instanceof Map ? {} : (paramsOrTypes ?? {}),
916
951
  scope: parameterScope,
917
952
  cteNodes: new Map(),
918
953
  schemaDependencies: new BuildTimeDependencyTracker(),
package/src/core/param.ts CHANGED
@@ -2,7 +2,23 @@ import type { ScalarType } from '../common/datatype.js';
2
2
  import { type SqlParameters, type SqlValue } from '../common/types.js';
3
3
  import { inferLogicalTypeFromValue } from '../common/type-inference.js';
4
4
 
5
- export function getParameterTypeHints(params: SqlParameters | undefined): Map<string | number, ScalarType> | undefined {
5
+ /**
6
+ * Generate type hints for parameters based on their JavaScript values.
7
+ * This is used during planning to assign strong types to parameters.
8
+ *
9
+ * Type inference rules:
10
+ * - null → NULL
11
+ * - number (integer) → INTEGER
12
+ * - number (float) → REAL
13
+ * - bigint → INTEGER
14
+ * - boolean → BOOLEAN
15
+ * - string → TEXT
16
+ * - Uint8Array → BLOB
17
+ *
18
+ * @param params The parameter values (positional array or named object)
19
+ * @returns Map of parameter keys to their inferred ScalarTypes
20
+ */
21
+ export function getParameterTypes(params: SqlParameters | undefined): Map<string | number, ScalarType> | undefined {
6
22
  let results: Map<string | number, ScalarType> | undefined;
7
23
  if (params) {
8
24
  results = new Map<string | number, ScalarType>();
@@ -22,6 +38,12 @@ export function getParameterTypeHints(params: SqlParameters | undefined): Map<st
22
38
  return results;
23
39
  }
24
40
 
41
+ /**
42
+ * Infer the ScalarType for a parameter value based on its JavaScript type.
43
+ *
44
+ * @param value The parameter value
45
+ * @returns The inferred ScalarType
46
+ */
25
47
  function getParameterScalarType(value: SqlValue): ScalarType {
26
48
  const logicalType = inferLogicalTypeFromValue(value);
27
49