@quereus/quereus 0.6.7 → 0.6.12

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 CHANGED
@@ -195,6 +195,17 @@ Quereus works in React Native with two considerations:
195
195
  * [Plugin System](docs/plugins.md): Complete guide to creating and using plugins for virtual tables, functions, and collations.
196
196
  * [TODO List](docs/todo.md): Planned features and improvements
197
197
 
198
+ ### Plugin Development
199
+
200
+ Quereus exports all critical utilities needed for plugin and module development:
201
+
202
+ * **Comparison Functions**: `compareSqlValues`, `compareRows`, `compareTypedValues`, `createTypedComparator` — Match Quereus SQL semantics in custom implementations
203
+ * **Coercion Utilities**: `tryCoerceToNumber`, `coerceForComparison`, `coerceForAggregate` — Handle type coercion correctly
204
+ * **Collation Support**: `registerCollation`, `getCollation`, built-in collations (`BINARY_COLLATION`, `NOCASE_COLLATION`, `RTRIM_COLLATION`)
205
+ * **Type System**: Full access to logical types, validation, and parsing utilities
206
+
207
+ See the [Plugin System documentation](docs/plugins.md#comparison-and-coercion-utilities) for complete API reference and examples.
208
+
198
209
  ## Key Design Decisions
199
210
 
200
211
  * **Federated / VTab-Centric**: All tables are virtual tables.
@@ -12,6 +12,7 @@ export { ConflictResolution, IndexConstraintOp, VTabConfig, FunctionFlags } from
12
12
  export { QuereusError, MisuseError, ConstraintError, unwrapError, formatErrorChain, getPrimaryError } from './common/errors.js';
13
13
  export type { ErrorInfo } from './common/errors.js';
14
14
  export { VirtualTable } from './vtab/table.js';
15
+ export type { UpdateArgs } from './vtab/table.js';
15
16
  export type { VirtualTableConnection } from './vtab/connection.js';
16
17
  export { MemoryTableModule } from './vtab/memory/module.js';
17
18
  export type { IndexInfo, IndexConstraint, IndexConstraintUsage, IndexOrderBy } from './vtab/index-info.js';
@@ -21,7 +22,7 @@ export type { BaseModuleConfig, SchemaChangeInfo } from './vtab/module.js';
21
22
  export type { BestAccessPlanRequest, BestAccessPlanResult, ConstraintOp, ColumnMeta, PredicateConstraint, OrderingSpec } from './vtab/best-access-plan.js';
22
23
  export { AccessPlanBuilder, validateAccessPlan } from './vtab/best-access-plan.js';
23
24
  export type { CollationFunction } from './util/comparison.js';
24
- export { BINARY_COLLATION, NOCASE_COLLATION, RTRIM_COLLATION, registerCollation, getCollation, resolveCollation } from './util/comparison.js';
25
+ export { BINARY_COLLATION, NOCASE_COLLATION, RTRIM_COLLATION, registerCollation, getCollation, resolveCollation, compareSqlValues, compareSqlValuesFast, compareRows, compareTypedValues, createTypedComparator, compareWithOrderBy, compareWithOrderByFast, createOrderByComparator, createOrderByComparatorFast, SortDirection, NullsOrdering, evaluateIsTrue, isTruthy, getSqlDataTypeName } from './util/comparison.js';
25
26
  export type { LogicalType, CollationFunction as TypeCollationFunction } from './types/logical-type.js';
26
27
  export { PhysicalType } from './types/logical-type.js';
27
28
  export { NULL_TYPE, INTEGER_TYPE, REAL_TYPE, TEXT_TYPE, BLOB_TYPE, BOOLEAN_TYPE, NUMERIC_TYPE, ANY_TYPE } from './types/builtin-types.js';
@@ -38,6 +39,7 @@ export type { ColumnSchema } from './schema/column.js';
38
39
  export { isAsyncIterable, getAsyncIterator, asyncIterableToArray } from './runtime/utils.js';
39
40
  export { createScalarFunction, createTableValuedFunction, createAggregateFunction } from './func/registration.js';
40
41
  export type { ScalarFunc, TableValuedFunc, AggregateReducer, AggregateFinalizer, FunctionSchema } from './schema/function.js';
42
+ export { tryCoerceToNumber, coerceToNumberForArithmetic, coerceForComparison, coerceForAggregate, isNumericValue } from './util/coercion.js';
41
43
  export { Latches } from './util/latches.js';
42
44
  export { registerPlugin } from './util/plugin-helper.js';
43
45
  export type { PluginFunction } from './util/plugin-helper.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -16,7 +16,17 @@ export { VirtualTable } from './vtab/table.js';
16
16
  export { MemoryTableModule } from './vtab/memory/module.js';
17
17
  export { IndexScanFlags } from './vtab/index-info.js';
18
18
  export { AccessPlanBuilder, validateAccessPlan } from './vtab/best-access-plan.js';
19
- export { BINARY_COLLATION, NOCASE_COLLATION, RTRIM_COLLATION, registerCollation, getCollation, resolveCollation } from './util/comparison.js';
19
+ export {
20
+ // Collation registration and lookup
21
+ BINARY_COLLATION, NOCASE_COLLATION, RTRIM_COLLATION, registerCollation, getCollation, resolveCollation,
22
+ // Core comparison functions (critical for module implementations)
23
+ compareSqlValues, compareSqlValuesFast, compareRows, compareTypedValues, createTypedComparator,
24
+ // ORDER BY comparison utilities
25
+ compareWithOrderBy, compareWithOrderByFast, createOrderByComparator, createOrderByComparatorFast, SortDirection, NullsOrdering,
26
+ // Truthiness evaluation
27
+ evaluateIsTrue, isTruthy,
28
+ // Type introspection
29
+ getSqlDataTypeName } from './util/comparison.js';
20
30
  export { PhysicalType } from './types/logical-type.js';
21
31
  export { NULL_TYPE, INTEGER_TYPE, REAL_TYPE, TEXT_TYPE, BLOB_TYPE, BOOLEAN_TYPE, NUMERIC_TYPE, ANY_TYPE } from './types/builtin-types.js';
22
32
  export { DATE_TYPE, TIME_TYPE, DATETIME_TYPE, TIMESPAN_TYPE } from './types/temporal-types.js';
@@ -33,6 +43,8 @@ export { SchemaManager } from './schema/manager.js';
33
43
  export { isAsyncIterable, getAsyncIterator, asyncIterableToArray } from './runtime/utils.js';
34
44
  // Function registration utilities
35
45
  export { createScalarFunction, createTableValuedFunction, createAggregateFunction } from './func/registration.js';
46
+ // Coercion utilities (for module implementations)
47
+ export { tryCoerceToNumber, coerceToNumberForArithmetic, coerceForComparison, coerceForAggregate, isNumericValue } from './util/coercion.js';
36
48
  // Utility functions
37
49
  export { Latches } from './util/latches.js';
38
50
  // Plugin helper for static loading (React Native, etc.)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8BAA8B;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,kCAAkC;AAClC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACzG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGhI,oBAAoB;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAatD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAInF,OAAO,EACN,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EACN,SAAS,EACT,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACN,SAAS,EACT,SAAS,EACT,aAAa,EACb,aAAa,EACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACN,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,MAAM,uBAAuB,CAAC;AAE/B,0BAA0B;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,oBAAoB;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE7F,kCAAkC;AAClC,OAAO,EACN,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,MAAM,wBAAwB,CAAC;AAUhC,oBAAoB;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,wDAAwD;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,iEAAiE;AACjE,OAAO,uBAAuB,CAAC;AAiB/B,kCAAkC;AAClC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAGxH,uFAAuF;AACvF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8BAA8B;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,kCAAkC;AAClC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACzG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGhI,oBAAoB;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAatD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAInF,OAAO;AACN,oCAAoC;AACpC,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,gBAAgB;AAChB,kEAAkE;AAClE,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,EACX,kBAAkB,EAClB,qBAAqB;AACrB,gCAAgC;AAChC,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,2BAA2B,EAC3B,aAAa,EACb,aAAa;AACb,wBAAwB;AACxB,cAAc,EACd,QAAQ;AACR,qBAAqB;AACrB,kBAAkB,EAClB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EACN,SAAS,EACT,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACN,SAAS,EACT,SAAS,EACT,aAAa,EACb,aAAa,EACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACN,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,MAAM,uBAAuB,CAAC;AAE/B,0BAA0B;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,oBAAoB;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE7F,kCAAkC;AAClC,OAAO,EACN,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,MAAM,wBAAwB,CAAC;AAUhC,kDAAkD;AAClD,OAAO,EACN,iBAAiB,EACjB,2BAA2B,EAC3B,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,MAAM,oBAAoB,CAAC;AAE5B,oBAAoB;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,wDAAwD;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,iEAAiE;AACjE,OAAO,uBAAuB,CAAC;AAiB/B,kCAAkC;AAClC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAGxH,uFAAuF;AACvF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"select-modifiers.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/select-modifiers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAMxE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK1D;;GAEG;AACH,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,kBAAkB,EACzB,WAAW,EAAE,UAAU,EAAE,EACzB,WAAW,EAAE,KAAK,EAClB,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,aAAa,EAAE,eAAe,EAC9B,oBAAoB,GAAE,OAAc,GAClC;IACF,MAAM,EAAE,kBAAkB,CAAC;IAC3B,YAAY,EAAE,eAAe,CAAC;IAC9B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gBAAgB,EAAE,OAAO,CAAC;CAC1B,CAsCA;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC5B,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,WAAW,EAAE,KAAK,GAChB,kBAAkB,CAKpB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC3B,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,aAAa,EAAE,eAAe,EAC9B,gBAAgB,EAAE,OAAO,EACzB,eAAe,CAAC,EAAE,eAAe,GAC/B,kBAAkB,CAqBpB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,aAAa,EAAE,eAAe,EAC9B,eAAe,CAAC,EAAE,eAAe,GAC/B,kBAAkB,CAepB"}
1
+ {"version":3,"file":"select-modifiers.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/select-modifiers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAMxE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK1D;;GAEG;AACH,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,kBAAkB,EACzB,WAAW,EAAE,UAAU,EAAE,EACzB,WAAW,EAAE,KAAK,EAClB,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,aAAa,EAAE,eAAe,EAC9B,oBAAoB,GAAE,OAAc,GAClC;IACF,MAAM,EAAE,kBAAkB,CAAC;IAC3B,YAAY,EAAE,eAAe,CAAC;IAC9B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gBAAgB,EAAE,OAAO,CAAC;CAC1B,CA4CA;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC5B,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,WAAW,EAAE,KAAK,GAChB,kBAAkB,CAKpB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC3B,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,aAAa,EAAE,eAAe,EAC9B,gBAAgB,EAAE,OAAO,EACzB,eAAe,CAAC,EAAE,eAAe,GAC/B,kBAAkB,CAqBpB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,aAAa,EAAE,eAAe,EAC9B,eAAe,CAAC,EAAE,eAAe,GAC/B,kBAAkB,CAepB"}
@@ -15,6 +15,11 @@ export function buildFinalProjections(input, projections, selectScope, stmt, sel
15
15
  if (projections.length === 0) {
16
16
  return { output: input, finalContext: selectContext, preAggregateSort: false };
17
17
  }
18
+ // Skip ProjectNode entirely for identity projections (SELECT * equivalent)
19
+ // This avoids unnecessary per-row overhead when all columns pass through unchanged
20
+ if (isIdentityProjection(projections, input)) {
21
+ return { output: input, finalContext: selectContext, preAggregateSort: false };
22
+ }
18
23
  // Check if ORDER BY should be applied before projection (using input scope only)
19
24
  const needsPreProjectionSort = shouldApplyOrderByBeforeProjection(stmt, projections);
20
25
  let preAggregateSort = false;
@@ -127,4 +132,35 @@ function createProjectionOutputScope(projectionNode) {
127
132
  });
128
133
  return projectionOutputScope;
129
134
  }
135
+ /**
136
+ * Detects if projections form an identity transformation over the source.
137
+ * An identity projection is one where all projections are simple column references
138
+ * that reference source attributes in order with no name changes.
139
+ * This allows skipping the ProjectNode entirely for SELECT * queries.
140
+ */
141
+ function isIdentityProjection(projections, source) {
142
+ const sourceAttrs = source.getAttributes();
143
+ // Must have same number of projections as source attributes
144
+ if (projections.length !== sourceAttrs.length) {
145
+ return false;
146
+ }
147
+ for (let i = 0; i < projections.length; i++) {
148
+ const proj = projections[i];
149
+ const sourceAttr = sourceAttrs[i];
150
+ // Must be a column reference
151
+ if (!CapabilityDetectors.isColumnReference(proj.node)) {
152
+ return false;
153
+ }
154
+ const colRef = proj.node;
155
+ // Must reference the corresponding source attribute (preserves order)
156
+ if (colRef.attributeId !== sourceAttr.id) {
157
+ return false;
158
+ }
159
+ // Alias must not change the name (undefined alias is fine)
160
+ if (proj.alias && proj.alias.toLowerCase() !== sourceAttr.name.toLowerCase()) {
161
+ return false;
162
+ }
163
+ }
164
+ return true;
165
+ }
130
166
  //# sourceMappingURL=select-modifiers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"select-modifiers.js","sourceRoot":"","sources":["../../../../src/planner/building/select-modifiers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select-modifiers.js","sourceRoot":"","sources":["../../../../src/planner/building/select-modifiers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quereus/quereus",
3
- "version": "0.6.7",
3
+ "version": "0.6.12",
4
4
  "type": "module",
5
5
  "description": "Federated SQL query processor",
6
6
  "publisher": "Got Choices Foundation",
package/src/index.ts CHANGED
@@ -18,6 +18,7 @@ export type { ErrorInfo } from './common/errors.js';
18
18
 
19
19
  // Virtual Table API
20
20
  export { VirtualTable } from './vtab/table.js';
21
+ export type { UpdateArgs } from './vtab/table.js';
21
22
  export type { VirtualTableConnection } from './vtab/connection.js';
22
23
  export { MemoryTableModule } from './vtab/memory/module.js';
23
24
  export type { IndexInfo, IndexConstraint, IndexConstraintUsage, IndexOrderBy } from './vtab/index-info.js';
@@ -36,15 +37,34 @@ export type {
36
37
  } from './vtab/best-access-plan.js';
37
38
  export { AccessPlanBuilder, validateAccessPlan } from './vtab/best-access-plan.js';
38
39
 
39
- // Collation functions
40
+ // Collation and comparison functions
40
41
  export type { CollationFunction } from './util/comparison.js';
41
42
  export {
43
+ // Collation registration and lookup
42
44
  BINARY_COLLATION,
43
45
  NOCASE_COLLATION,
44
46
  RTRIM_COLLATION,
45
47
  registerCollation,
46
48
  getCollation,
47
- resolveCollation
49
+ resolveCollation,
50
+ // Core comparison functions (critical for module implementations)
51
+ compareSqlValues,
52
+ compareSqlValuesFast,
53
+ compareRows,
54
+ compareTypedValues,
55
+ createTypedComparator,
56
+ // ORDER BY comparison utilities
57
+ compareWithOrderBy,
58
+ compareWithOrderByFast,
59
+ createOrderByComparator,
60
+ createOrderByComparatorFast,
61
+ SortDirection,
62
+ NullsOrdering,
63
+ // Truthiness evaluation
64
+ evaluateIsTrue,
65
+ isTruthy,
66
+ // Type introspection
67
+ getSqlDataTypeName
48
68
  } from './util/comparison.js';
49
69
 
50
70
  // Type system
@@ -110,6 +130,15 @@ export type {
110
130
  FunctionSchema
111
131
  } from './schema/function.js';
112
132
 
133
+ // Coercion utilities (for module implementations)
134
+ export {
135
+ tryCoerceToNumber,
136
+ coerceToNumberForArithmetic,
137
+ coerceForComparison,
138
+ coerceForAggregate,
139
+ isNumericValue
140
+ } from './util/coercion.js';
141
+
113
142
  // Utility functions
114
143
  export { Latches } from './util/latches.js';
115
144
 
@@ -33,6 +33,12 @@ export function buildFinalProjections(
33
33
  return { output: input, finalContext: selectContext, preAggregateSort: false };
34
34
  }
35
35
 
36
+ // Skip ProjectNode entirely for identity projections (SELECT * equivalent)
37
+ // This avoids unnecessary per-row overhead when all columns pass through unchanged
38
+ if (isIdentityProjection(projections, input)) {
39
+ return { output: input, finalContext: selectContext, preAggregateSort: false };
40
+ }
41
+
36
42
  // Check if ORDER BY should be applied before projection (using input scope only)
37
43
  const needsPreProjectionSort = shouldApplyOrderByBeforeProjection(stmt, projections);
38
44
  let preAggregateSort = false;
@@ -183,3 +189,42 @@ function createProjectionOutputScope(projectionNode: RelationalPlanNode): Regist
183
189
 
184
190
  return projectionOutputScope;
185
191
  }
192
+
193
+ /**
194
+ * Detects if projections form an identity transformation over the source.
195
+ * An identity projection is one where all projections are simple column references
196
+ * that reference source attributes in order with no name changes.
197
+ * This allows skipping the ProjectNode entirely for SELECT * queries.
198
+ */
199
+ function isIdentityProjection(projections: Projection[], source: RelationalPlanNode): boolean {
200
+ const sourceAttrs = source.getAttributes();
201
+
202
+ // Must have same number of projections as source attributes
203
+ if (projections.length !== sourceAttrs.length) {
204
+ return false;
205
+ }
206
+
207
+ for (let i = 0; i < projections.length; i++) {
208
+ const proj = projections[i];
209
+ const sourceAttr = sourceAttrs[i];
210
+
211
+ // Must be a column reference
212
+ if (!CapabilityDetectors.isColumnReference(proj.node)) {
213
+ return false;
214
+ }
215
+
216
+ const colRef = proj.node;
217
+
218
+ // Must reference the corresponding source attribute (preserves order)
219
+ if (colRef.attributeId !== sourceAttr.id) {
220
+ return false;
221
+ }
222
+
223
+ // Alias must not change the name (undefined alias is fine)
224
+ if (proj.alias && proj.alias.toLowerCase() !== sourceAttr.name.toLowerCase()) {
225
+ return false;
226
+ }
227
+ }
228
+
229
+ return true;
230
+ }