@quereus/store 2.5.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -48,8 +48,13 @@ export interface EncodeOptions {
48
48
  export declare function encodeValue(value: SqlValue, options?: EncodeOptions): Uint8Array;
49
49
  /**
50
50
  * Encode a composite key (multiple values) into a single byte array.
51
+ *
52
+ * When `directions` is provided, each position flagged `true` (DESC) has its
53
+ * encoded bytes bit-inverted (`^0xff`). Bit-inversion of a fixed-width sortable
54
+ * encoding preserves inverse byte-lex order, so natural iteration over the KV
55
+ * store yields DESC order for those components.
51
56
  */
52
- export declare function encodeCompositeKey(values: SqlValue[], options?: EncodeOptions): Uint8Array;
57
+ export declare function encodeCompositeKey(values: SqlValue[], options?: EncodeOptions, directions?: ReadonlyArray<boolean>): Uint8Array;
53
58
  /**
54
59
  * Decode a single value from a byte array.
55
60
  * Returns the decoded value and the number of bytes consumed.
@@ -1 +1 @@
1
- {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../../src/common/encoding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAMjD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAC/B;AAKD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAE9E;AA4BD,iCAAiC;AACjC,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAcD;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,UAAU,CAiChF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,UAAU,CAU1F;AA8JD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,UAAU,EAClB,MAAM,GAAE,MAAU,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CA6BxC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,EAClB,aAAa,CAAC,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,aAAa,GACtB,QAAQ,EAAE,CAeZ"}
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../../src/common/encoding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAMjD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAC/B;AAKD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAE9E;AA4BD,iCAAiC;AACjC,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAcD;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,UAAU,CAiChF;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,QAAQ,EAAE,EAClB,OAAO,CAAC,EAAE,aAAa,EACvB,UAAU,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,GAClC,UAAU,CAkBZ;AA8JD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,UAAU,EAClB,MAAM,GAAE,MAAU,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CA6BxC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,EAClB,aAAa,CAAC,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,aAAa,GACtB,QAAQ,EAAE,CAeZ"}
@@ -91,9 +91,22 @@ export function encodeValue(value, options) {
91
91
  }
92
92
  /**
93
93
  * Encode a composite key (multiple values) into a single byte array.
94
+ *
95
+ * When `directions` is provided, each position flagged `true` (DESC) has its
96
+ * encoded bytes bit-inverted (`^0xff`). Bit-inversion of a fixed-width sortable
97
+ * encoding preserves inverse byte-lex order, so natural iteration over the KV
98
+ * store yields DESC order for those components.
94
99
  */
95
- export function encodeCompositeKey(values, options) {
96
- const parts = values.map(v => encodeValue(v, options));
100
+ export function encodeCompositeKey(values, options, directions) {
101
+ const parts = values.map((v, i) => {
102
+ const encoded = encodeValue(v, options);
103
+ if (directions && directions[i]) {
104
+ for (let j = 0; j < encoded.length; j++) {
105
+ encoded[j] ^= 0xff;
106
+ }
107
+ }
108
+ return encoded;
109
+ });
97
110
  const totalLength = parts.reduce((sum, p) => sum + p.length, 0);
98
111
  const result = new Uint8Array(totalLength);
99
112
  let offset = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../../src/common/encoding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../../src/common/encoding.ts"],"names":[],"mappings":"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"}
@@ -49,15 +49,20 @@ export declare function buildStatsStoreName(schemaName: string, tableName: strin
49
49
  export declare function buildStatsKey(schemaName: string, tableName: string): Uint8Array;
50
50
  /**
51
51
  * Build a data row key (just the encoded primary key).
52
+ *
53
+ * `directions[i] === true` marks PK column i as DESC — its encoded bytes are
54
+ * bit-inverted so natural byte-lex iteration yields DESC order for that column.
52
55
  */
53
- export declare function buildDataKey(pkValues: SqlValue[], options?: EncodeOptions): Uint8Array;
56
+ export declare function buildDataKey(pkValues: SqlValue[], options?: EncodeOptions, directions?: ReadonlyArray<boolean>): Uint8Array;
54
57
  /**
55
58
  * Build a secondary index key.
56
59
  * Format: {encoded_index_cols}{encoded_pk}
57
60
  *
58
61
  * The index columns come first for range scans, followed by PK for uniqueness.
62
+ * `indexDirections` and `pkDirections` independently control DESC bit-inversion
63
+ * for each half so ordered index scans honor per-column direction.
59
64
  */
60
- export declare function buildIndexKey(indexValues: SqlValue[], pkValues: SqlValue[], options?: EncodeOptions): Uint8Array;
65
+ export declare function buildIndexKey(indexValues: SqlValue[], pkValues: SqlValue[], options?: EncodeOptions, indexDirections?: ReadonlyArray<boolean>, pkDirections?: ReadonlyArray<boolean>): Uint8Array;
61
66
  /**
62
67
  * Build a catalog key for DDL storage.
63
68
  * Format: {schema}.{table}
@@ -65,16 +70,22 @@ export declare function buildIndexKey(indexValues: SqlValue[], pkValues: SqlValu
65
70
  export declare function buildCatalogKey(schemaName: string, tableName: string): Uint8Array;
66
71
  /**
67
72
  * Build range bounds for scanning all rows in a data store.
68
- * Since keys are just encoded PKs, we scan the entire store.
73
+ *
74
+ * Data stores are per-table so any non-empty key belongs to this table — an
75
+ * unbounded scan is safe and avoids the trap that a leading 0xff byte (produced
76
+ * by inverted NULL type prefix 0x00 ^ 0xff for DESC columns) would be excluded
77
+ * by an `lt: [0xff]` upper bound.
69
78
  */
70
79
  export declare function buildFullScanBounds(): {
71
80
  gte: Uint8Array;
72
- lt: Uint8Array;
73
81
  };
74
82
  /**
75
83
  * Build range bounds for scanning an index with a prefix.
84
+ *
85
+ * `directions[i] === true` flips bytes of prefix component i to match DESC
86
+ * encoding in the stored index keys.
76
87
  */
77
- export declare function buildIndexPrefixBounds(prefixValues: SqlValue[], options?: EncodeOptions): {
88
+ export declare function buildIndexPrefixBounds(prefixValues: SqlValue[], options?: EncodeOptions, directions?: ReadonlyArray<boolean>): {
78
89
  gte: Uint8Array;
79
90
  lt: Uint8Array;
80
91
  };
@@ -97,7 +108,6 @@ export declare function buildTablePrefix(_prefix: 'd' | 'i' | 'm', schemaName: s
97
108
  /** @deprecated Use buildFullScanBounds instead */
98
109
  export declare function buildTableScanBounds(_schemaName: string, _tableName: string): {
99
110
  gte: Uint8Array;
100
- lt: Uint8Array;
101
111
  };
102
112
  /** @deprecated Use buildIndexPrefixBounds instead */
103
113
  export declare function buildIndexScanBounds(_schemaName: string, _tableName: string, _indexName: string, prefixValues?: SqlValue[], options?: EncodeOptions): {
@@ -1 +1 @@
1
- {"version":3,"file":"key-builder.d.ts","sourceRoot":"","sources":["../../../src/common/key-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"key-builder.d.ts","sourceRoot":"","sources":["../../../src/common/key-builder.ts"],"names":[],"mappings":"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"}
@@ -57,19 +57,24 @@ export function buildStatsKey(schemaName, tableName) {
57
57
  }
58
58
  /**
59
59
  * Build a data row key (just the encoded primary key).
60
+ *
61
+ * `directions[i] === true` marks PK column i as DESC — its encoded bytes are
62
+ * bit-inverted so natural byte-lex iteration yields DESC order for that column.
60
63
  */
61
- export function buildDataKey(pkValues, options) {
62
- return encodeCompositeKey(pkValues, options);
64
+ export function buildDataKey(pkValues, options, directions) {
65
+ return encodeCompositeKey(pkValues, options, directions);
63
66
  }
64
67
  /**
65
68
  * Build a secondary index key.
66
69
  * Format: {encoded_index_cols}{encoded_pk}
67
70
  *
68
71
  * The index columns come first for range scans, followed by PK for uniqueness.
72
+ * `indexDirections` and `pkDirections` independently control DESC bit-inversion
73
+ * for each half so ordered index scans honor per-column direction.
69
74
  */
70
- export function buildIndexKey(indexValues, pkValues, options) {
71
- const indexEncoded = encodeCompositeKey(indexValues, options);
72
- const pkEncoded = encodeCompositeKey(pkValues, options);
75
+ export function buildIndexKey(indexValues, pkValues, options, indexDirections, pkDirections) {
76
+ const indexEncoded = encodeCompositeKey(indexValues, options, indexDirections);
77
+ const pkEncoded = encodeCompositeKey(pkValues, options, pkDirections);
73
78
  return concatBytes(indexEncoded, pkEncoded);
74
79
  }
75
80
  /**
@@ -81,22 +86,28 @@ export function buildCatalogKey(schemaName, tableName) {
81
86
  }
82
87
  /**
83
88
  * Build range bounds for scanning all rows in a data store.
84
- * Since keys are just encoded PKs, we scan the entire store.
89
+ *
90
+ * Data stores are per-table so any non-empty key belongs to this table — an
91
+ * unbounded scan is safe and avoids the trap that a leading 0xff byte (produced
92
+ * by inverted NULL type prefix 0x00 ^ 0xff for DESC columns) would be excluded
93
+ * by an `lt: [0xff]` upper bound.
85
94
  */
86
95
  export function buildFullScanBounds() {
87
96
  return {
88
97
  gte: new Uint8Array(0),
89
- lt: new Uint8Array([0xff]), // All valid encoded keys are < 0xff
90
98
  };
91
99
  }
92
100
  /**
93
101
  * Build range bounds for scanning an index with a prefix.
102
+ *
103
+ * `directions[i] === true` flips bytes of prefix component i to match DESC
104
+ * encoding in the stored index keys.
94
105
  */
95
- export function buildIndexPrefixBounds(prefixValues, options) {
106
+ export function buildIndexPrefixBounds(prefixValues, options, directions) {
96
107
  if (prefixValues.length === 0) {
97
- return buildFullScanBounds();
108
+ return { gte: new Uint8Array(0), lt: new Uint8Array([0xff]) };
98
109
  }
99
- const prefixEncoded = encodeCompositeKey(prefixValues, options);
110
+ const prefixEncoded = encodeCompositeKey(prefixValues, options, directions);
100
111
  return {
101
112
  gte: prefixEncoded,
102
113
  lt: incrementLastByte(prefixEncoded),
@@ -1 +1 @@
1
- {"version":3,"file":"key-builder.js","sourceRoot":"","sources":["../../../src/common/key-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"key-builder.js","sourceRoot":"","sources":["../../../src/common/key-builder.ts"],"names":[],"mappings":"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"}
@@ -185,5 +185,17 @@ export interface KVStoreProvider {
185
185
  * @param tableName - The table name
186
186
  */
187
187
  deleteTableStores?(schemaName: string, tableName: string): Promise<void>;
188
+ /**
189
+ * Rename all stores for a table from `oldName` to `newName`. Implementations
190
+ * must close any open handles, move the underlying data + index storage,
191
+ * and drop all cached references to the old name so that subsequent
192
+ * `getStore`/`getIndexStore` calls open the renamed storage.
193
+ *
194
+ * Called by StoreModule.renameTable during ALTER TABLE ... RENAME TO.
195
+ * @param schemaName - The schema name
196
+ * @param oldName - The current table name
197
+ * @param newName - The desired table name
198
+ */
199
+ renameTableStores?(schemaName: string, oldName: string, newName: string): Promise<void>;
188
200
  }
189
201
  //# sourceMappingURL=kv-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kv-store.d.ts","sourceRoot":"","sources":["../../../src/common/kv-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,gEAAgE;IAChE,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,6BAA6B;IAC7B,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,2BAA2B;IAC3B,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,wDAAwD;IACxD,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,gCAAgC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACvB,GAAG,EAAE,UAAU,CAAC;IAChB,KAAK,EAAE,UAAU,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAChB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,UAAU,CAAA;CAAE,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,6BAA6B;IAC7B,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9C,gCAAgC;IAChC,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,gDAAgD;IAChD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,qCAAqC;IACrC,KAAK,IAAI,IAAI,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACvB;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAEtD;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvC;;;OAGG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAE1D;;OAEG;IACH,KAAK,IAAI,UAAU,CAAC;IAEpB;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;OAGG;IACH,gBAAgB,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5D;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qDAAqD;IACrD,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,eAAe;IAC/B;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAErG;;;;;;;OAOG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1F;;;;;;;OAOG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvE;;;;OAIG;IACH,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpC;;;;OAIG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE;;;;;OAKG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzF;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B;;;;;OAKG;IACH,gBAAgB,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3F;;;;;OAKG;IACH,iBAAiB,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE"}
1
+ {"version":3,"file":"kv-store.d.ts","sourceRoot":"","sources":["../../../src/common/kv-store.ts"],"names":[],"mappings":"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"}
@@ -120,7 +120,18 @@ export declare class StoreModule implements VirtualTableModule<StoreTable, Store
120
120
  * Performs eager row migration for ADD and DROP, schema-only update for RENAME.
121
121
  * Returns the updated TableSchema for the engine to register.
122
122
  */
123
- alterTable(_db: Database, schemaName: string, tableName: string, change: SchemaChangeInfo): Promise<TableSchema>;
123
+ alterTable(db: Database, schemaName: string, tableName: string, change: SchemaChangeInfo): Promise<TableSchema>;
124
+ /**
125
+ * Rename a store-backed table.
126
+ *
127
+ * Drops every in-memory reference to the old name (so the coordinator, open
128
+ * handles, and cached StoreTable instance don't linger with stale paths),
129
+ * delegates physical storage relocation to the provider, then rewrites the
130
+ * persistent catalog DDL under the new key. After this returns, the next
131
+ * access to `newName` will reconnect via `connect()` and open fresh stores
132
+ * against the moved directories.
133
+ */
134
+ renameTable(db: Database, schemaName: string, oldName: string, newName: string): Promise<void>;
124
135
  /**
125
136
  * Modern access planning interface.
126
137
  */
@@ -1 +1 @@
1
- {"version":3,"file":"store-module.d.ts","sourceRoot":"","sources":["../../../src/common/store-module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store-module.d.ts","sourceRoot":"","sources":["../../../src/common/store-module.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@
15
15
  import { AccessPlanBuilder, QuereusError, StatusCode, buildColumnIndexMap, columnDefToSchema, inferType, validateAndParse } from '@quereus/quereus';
16
16
  import { TransactionCoordinator } from './transaction.js';
17
17
  import { StoreTable } from './store-table.js';
18
- import { buildCatalogKey, buildCatalogScanBounds, buildIndexKey, buildFullScanBounds, } from './key-builder.js';
18
+ import { buildCatalogKey, buildCatalogScanBounds, buildIndexKey, buildFullScanBounds, buildStatsKey, } from './key-builder.js';
19
19
  import { deserializeRow } from './serialization.js';
20
20
  import { generateTableDDL } from '@quereus/quereus';
21
21
  /**
@@ -173,10 +173,15 @@ export class StoreModule {
173
173
  */
174
174
  async destroy(_db, _pAux, _moduleName, schemaName, tableName) {
175
175
  const tableKey = `${schemaName}.${tableName}`.toLowerCase();
176
+ // Clear internal maps synchronously before any await, so a concurrent
177
+ // create() cannot observe the stale table/store/coordinator across a
178
+ // microtask boundary mid-destroy.
176
179
  const table = this.tables.get(tableKey);
180
+ this.tables.delete(tableKey);
181
+ this.stores.delete(tableKey);
182
+ this.coordinators.delete(tableKey);
177
183
  if (table) {
178
184
  await table.disconnect();
179
- this.tables.delete(tableKey);
180
185
  }
181
186
  // Delete all stores for this table (data, indexes, stats)
182
187
  if (this.provider.deleteTableStores) {
@@ -186,8 +191,6 @@ export class StoreModule {
186
191
  // Fallback: just close the data store
187
192
  await this.provider.closeStore(schemaName, tableName);
188
193
  }
189
- this.stores.delete(tableKey);
190
- this.coordinators.delete(tableKey);
191
194
  // Remove DDL from catalog
192
195
  await this.removeTableDDL(schemaName, tableName);
193
196
  // Emit schema change event for table drop
@@ -226,6 +229,8 @@ export class StoreModule {
226
229
  */
227
230
  async buildIndexEntries(dataStore, indexStore, tableSchema, indexSchema) {
228
231
  const encodeOptions = { collation: 'NOCASE' };
232
+ const pkDirections = tableSchema.primaryKeyDefinition.map(pk => !!pk.desc);
233
+ const indexDirections = indexSchema.columns.map(col => !!col.desc);
229
234
  // Scan all data rows
230
235
  const bounds = buildFullScanBounds();
231
236
  const batch = indexStore.batch();
@@ -236,7 +241,7 @@ export class StoreModule {
236
241
  // Extract index column values
237
242
  const indexValues = indexSchema.columns.map(col => row[col.index]);
238
243
  // Build and store index key
239
- const indexKey = buildIndexKey(indexValues, pkValues, encodeOptions);
244
+ const indexKey = buildIndexKey(indexValues, pkValues, encodeOptions, indexDirections, pkDirections);
240
245
  batch.put(indexKey, new Uint8Array(0)); // Index value is empty
241
246
  }
242
247
  await batch.write();
@@ -246,22 +251,30 @@ export class StoreModule {
246
251
  * Performs eager row migration for ADD and DROP, schema-only update for RENAME.
247
252
  * Returns the updated TableSchema for the engine to register.
248
253
  */
249
- async alterTable(_db, schemaName, tableName, change) {
254
+ async alterTable(db, schemaName, tableName, change) {
250
255
  const tableKey = `${schemaName}.${tableName}`.toLowerCase();
251
256
  const table = this.tables.get(tableKey);
252
257
  if (!table) {
253
258
  throw new QuereusError(`Store table '${tableName}' not found in schema '${schemaName}'. Cannot alter.`, StatusCode.ERROR);
254
259
  }
255
260
  const oldSchema = table.getSchema();
261
+ const defaultNotNull = db.options.getStringOption('default_column_nullability') === 'not_null';
256
262
  switch (change.type) {
257
263
  case 'addColumn': {
258
- const newColSchema = columnDefToSchema(change.columnDef, false);
264
+ const newColSchema = columnDefToSchema(change.columnDef, defaultNotNull);
259
265
  // Extract default value from column def constraints
260
266
  let defaultValue = null;
261
267
  const defaultConstraint = change.columnDef.constraints?.find(c => c.type === 'default');
262
268
  if (defaultConstraint && defaultConstraint.expr && defaultConstraint.expr.type === 'literal') {
263
269
  defaultValue = defaultConstraint.expr.value;
264
270
  }
271
+ // Refuse NOT NULL without a literal DEFAULT on a non-empty table (SQLite-compatible).
272
+ if (newColSchema.notNull && defaultValue === null) {
273
+ if (await table.hasAnyRows()) {
274
+ throw new QuereusError(`Cannot add NOT NULL column '${newColSchema.name}' to non-empty table `
275
+ + `'${schemaName}.${tableName}' without a DEFAULT value`, StatusCode.CONSTRAINT);
276
+ }
277
+ }
265
278
  // Build updated schema: append new column
266
279
  const updatedColumns = Object.freeze([...oldSchema.columns, newColSchema]);
267
280
  const updatedSchema = {
@@ -337,7 +350,7 @@ export class StoreModule {
337
350
  if (colIndex === -1) {
338
351
  throw new QuereusError(`Column '${change.oldName}' not found.`, StatusCode.ERROR);
339
352
  }
340
- const newColSchema = columnDefToSchema(change.newColumnDefAst, false);
353
+ const newColSchema = columnDefToSchema(change.newColumnDefAst, defaultNotNull);
341
354
  const updatedColumns = oldSchema.columns.map((c, i) => i === colIndex ? newColSchema : c);
342
355
  const updatedIndexes = (oldSchema.indexes || []).map(idx => ({
343
356
  ...idx,
@@ -360,8 +373,38 @@ export class StoreModule {
360
373
  });
361
374
  return updatedSchema;
362
375
  }
363
- case 'alterPrimaryKey':
364
- throw new QuereusError('Store module does not support in-place primary key alteration', StatusCode.UNSUPPORTED);
376
+ case 'alterPrimaryKey': {
377
+ const newPkColumns = change.newPkColumns;
378
+ const updatedSchema = {
379
+ ...oldSchema,
380
+ primaryKeyDefinition: Object.freeze(newPkColumns.map(pk => ({ index: pk.index, desc: pk.desc }))),
381
+ };
382
+ // Re-key the data store. Throws CONSTRAINT on duplicates without
383
+ // mutating the store, giving us all-or-nothing semantics for the
384
+ // validation phase.
385
+ await table.rekeyRows(newPkColumns);
386
+ // Secondary index keys embed the PK suffix — clear + rebuild every
387
+ // index against the now-rekeyed data store.
388
+ const dataStore = await this.getStore(tableKey, table.getConfig());
389
+ for (const indexSchema of oldSchema.indexes ?? []) {
390
+ const indexStore = await this.getIndexStore(schemaName, tableName, indexSchema.name);
391
+ const clearBatch = indexStore.batch();
392
+ for await (const entry of indexStore.iterate(buildFullScanBounds())) {
393
+ clearBatch.delete(entry.key);
394
+ }
395
+ await clearBatch.write();
396
+ await this.buildIndexEntries(dataStore, indexStore, updatedSchema, indexSchema);
397
+ }
398
+ table.updateSchema(updatedSchema);
399
+ await this.saveTableDDL(updatedSchema);
400
+ this.eventEmitter?.emitSchemaChange({
401
+ type: 'alter',
402
+ objectType: 'table',
403
+ schemaName,
404
+ objectName: tableName,
405
+ });
406
+ return updatedSchema;
407
+ }
365
408
  case 'alterColumn': {
366
409
  const colNameLower = change.columnName.toLowerCase();
367
410
  const colIndex = oldSchema.columns.findIndex(c => c.name.toLowerCase() === colNameLower);
@@ -440,6 +483,77 @@ export class StoreModule {
440
483
  }
441
484
  }
442
485
  }
486
+ /**
487
+ * Rename a store-backed table.
488
+ *
489
+ * Drops every in-memory reference to the old name (so the coordinator, open
490
+ * handles, and cached StoreTable instance don't linger with stale paths),
491
+ * delegates physical storage relocation to the provider, then rewrites the
492
+ * persistent catalog DDL under the new key. After this returns, the next
493
+ * access to `newName` will reconnect via `connect()` and open fresh stores
494
+ * against the moved directories.
495
+ */
496
+ async renameTable(db, schemaName, oldName, newName) {
497
+ const oldKey = `${schemaName}.${oldName}`.toLowerCase();
498
+ const newKey = `${schemaName}.${newName}`.toLowerCase();
499
+ if (this.tables.has(newKey)) {
500
+ throw new QuereusError(`Store table '${newName}' already exists in schema '${schemaName}'`, StatusCode.ERROR);
501
+ }
502
+ // Capture the current schema BEFORE we drop in-memory references, so the
503
+ // new catalog DDL reflects the real column set.
504
+ const existing = this.tables.get(oldKey);
505
+ const currentSchema = existing?.getSchema() ?? db.schemaManager.getTable(schemaName, oldName);
506
+ // ALTER TABLE is effectively DDL-committing on a store-backed table:
507
+ // once we move the on-disk directory, prior buffered writes can no
508
+ // longer be rolled back through the coordinator. Flush any pending
509
+ // ops to the old store NOW, before its handle is closed. Subsequent
510
+ // commit() calls on the same coordinator are no-ops (inTransaction
511
+ // is cleared), which keeps the enclosing transaction safe.
512
+ const coordinator = this.coordinators.get(oldKey);
513
+ if (coordinator?.isInTransaction()) {
514
+ await coordinator.commit();
515
+ }
516
+ // Flush any lazy stats the cached handle was buffering; disconnect failures
517
+ // must not block the rename.
518
+ if (existing) {
519
+ try {
520
+ await existing.disconnect();
521
+ }
522
+ catch {
523
+ /* ignore — physical rename must proceed */
524
+ }
525
+ }
526
+ this.tables.delete(oldKey);
527
+ this.stores.delete(oldKey);
528
+ this.coordinators.delete(oldKey);
529
+ // Move physical storage (data directory + index directories).
530
+ if (this.provider.renameTableStores) {
531
+ await this.provider.renameTableStores(schemaName, oldName, newName);
532
+ }
533
+ // Rewrite persistent catalog under the new name. Write the new DDL first
534
+ // so a crash mid-rename leaves the table discoverable under at least one
535
+ // name rather than neither.
536
+ if (currentSchema) {
537
+ const renamedSchema = { ...currentSchema, name: newName };
538
+ await this.saveTableDDL(renamedSchema);
539
+ }
540
+ await this.removeTableDDL(schemaName, oldName);
541
+ // Relocate the stats entry (unified __stats__ store, keyed by schema.table).
542
+ try {
543
+ const statsStore = await this.provider.getStatsStore(schemaName, newName);
544
+ const oldStatsKey = buildStatsKey(schemaName, oldName);
545
+ await statsStore.delete(oldStatsKey);
546
+ }
547
+ catch {
548
+ /* stats are advisory — a stale entry under the old key is harmless */
549
+ }
550
+ this.eventEmitter?.emitSchemaChange({
551
+ type: 'alter',
552
+ objectType: 'table',
553
+ schemaName,
554
+ objectName: newName,
555
+ });
556
+ }
443
557
  /**
444
558
  * Modern access planning interface.
445
559
  */
@@ -460,13 +574,19 @@ export class StoreModule {
460
574
  .setExplanation('Store primary key lookup')
461
575
  .build();
462
576
  }
463
- // Check for range constraints on PK
577
+ // Check for range constraints on the leading PK column.
578
+ // The legacy access-path rule (rule-select-access-path.ts) only forwards
579
+ // range bounds for primaryKeyDefinition[0]; ranges on later PK columns
580
+ // are silently dropped if marked handled. So only claim handled=true
581
+ // when the range is on the first PK column.
464
582
  const rangeOps = ['<', '<=', '>', '>='];
465
- const rangeFilters = request.filters.filter(f => f.columnIndex !== undefined &&
466
- pkColumns.includes(f.columnIndex) &&
467
- rangeOps.includes(f.op));
583
+ const firstPkColumn = tableInfo.primaryKeyDefinition[0]?.index;
584
+ const rangeFilters = firstPkColumn !== undefined
585
+ ? request.filters.filter(f => f.columnIndex === firstPkColumn &&
586
+ rangeOps.includes(f.op))
587
+ : [];
468
588
  if (rangeFilters.length > 0) {
469
- // Range scan on PK
589
+ // Range scan on first PK column
470
590
  const handledFilters = request.filters.map(f => rangeFilters.some(rf => rf.columnIndex === f.columnIndex && rf.op === f.op));
471
591
  const rangeRows = Math.max(1, Math.floor(estimatedRows * 0.3));
472
592
  return AccessPlanBuilder