uql-orm 0.20.0 → 0.20.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 (64) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/dialect/abstractSqlDialect.d.ts +34 -25
  3. package/dist/dialect/abstractSqlDialect.d.ts.map +1 -1
  4. package/dist/dialect/abstractSqlDialect.js +58 -76
  5. package/dist/dialect/abstractSqlDialect.js.map +1 -1
  6. package/dist/dialect/jsonSql.d.ts +20 -0
  7. package/dist/dialect/jsonSql.d.ts.map +1 -1
  8. package/dist/dialect/jsonSql.js +20 -0
  9. package/dist/dialect/jsonSql.js.map +1 -1
  10. package/dist/dialect/mysqlLikeSqlDialect.d.ts +11 -3
  11. package/dist/dialect/mysqlLikeSqlDialect.d.ts.map +1 -1
  12. package/dist/dialect/mysqlLikeSqlDialect.js +18 -13
  13. package/dist/dialect/mysqlLikeSqlDialect.js.map +1 -1
  14. package/dist/dialect/pgLikeSqlDialect.d.ts +7 -8
  15. package/dist/dialect/pgLikeSqlDialect.d.ts.map +1 -1
  16. package/dist/dialect/pgLikeSqlDialect.js +14 -20
  17. package/dist/dialect/pgLikeSqlDialect.js.map +1 -1
  18. package/dist/dialect/queryContext.d.ts +13 -1
  19. package/dist/dialect/queryContext.d.ts.map +1 -1
  20. package/dist/dialect/queryContext.js +17 -2
  21. package/dist/dialect/queryContext.js.map +1 -1
  22. package/dist/dialect/vectorSqlDialect.d.ts +1 -1
  23. package/dist/dialect/vectorSqlDialect.d.ts.map +1 -1
  24. package/dist/dialect/vectorSqlDialect.js +4 -7
  25. package/dist/dialect/vectorSqlDialect.js.map +1 -1
  26. package/dist/http/handler.d.ts +5 -1
  27. package/dist/http/handler.d.ts.map +1 -1
  28. package/dist/http/handler.js.map +1 -1
  29. package/dist/maria/mariaDialect.d.ts +0 -1
  30. package/dist/maria/mariaDialect.d.ts.map +1 -1
  31. package/dist/maria/mariaDialect.js +0 -1
  32. package/dist/maria/mariaDialect.js.map +1 -1
  33. package/dist/migrate/cli.d.ts.map +1 -1
  34. package/dist/migrate/cli.js +3 -2
  35. package/dist/migrate/cli.js.map +1 -1
  36. package/dist/mongo/mongoDialect.d.ts +1 -1
  37. package/dist/mongo/mongoDialect.d.ts.map +1 -1
  38. package/dist/mongo/mongoDialect.js +10 -3
  39. package/dist/mongo/mongoDialect.js.map +1 -1
  40. package/dist/mongo/mongodbQuerier.d.ts.map +1 -1
  41. package/dist/mongo/mongodbQuerier.js +3 -3
  42. package/dist/mongo/mongodbQuerier.js.map +1 -1
  43. package/dist/mysql/mysqlDialect.d.ts +0 -1
  44. package/dist/mysql/mysqlDialect.d.ts.map +1 -1
  45. package/dist/mysql/mysqlDialect.js +0 -1
  46. package/dist/mysql/mysqlDialect.js.map +1 -1
  47. package/dist/sqlite/sqliteDialect.d.ts +2 -3
  48. package/dist/sqlite/sqliteDialect.d.ts.map +1 -1
  49. package/dist/sqlite/sqliteDialect.js +22 -22
  50. package/dist/sqlite/sqliteDialect.js.map +1 -1
  51. package/dist/type/dialect.d.ts +7 -0
  52. package/dist/type/dialect.d.ts.map +1 -1
  53. package/dist/type/entity.d.ts +2 -2
  54. package/dist/type/entity.d.ts.map +1 -1
  55. package/dist/type/querier.d.ts +0 -3
  56. package/dist/type/querier.d.ts.map +1 -1
  57. package/dist/type/querier.js.map +1 -1
  58. package/dist/type/query.d.ts +0 -4
  59. package/dist/type/query.d.ts.map +1 -1
  60. package/dist/util/dialect.util.d.ts +2 -4
  61. package/dist/util/dialect.util.d.ts.map +1 -1
  62. package/dist/util/dialect.util.js +4 -10
  63. package/dist/util/dialect.util.js.map +1 -1
  64. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -4,6 +4,25 @@ All notable changes to this project will be documented in this file. Please add
4
4
 
5
5
  date format is [yyyy-mm-dd]
6
6
 
7
+ ## [0.20.2] - 2026-07-29
8
+
9
+ ### Fixes
10
+
11
+ - **`uql drift:check` reported column type drift as "in sync".** The report compares each type rendered as the dialect's SQL, but the CLI built it without passing the dialect, so every type formatted as `unknown` and compared equal to every other one. A column that is `VARCHAR(50)` in the entity and `INTEGER` in the database now reports a critical type mismatch and exits `1`, instead of passing silently.
12
+
13
+ ### Internal
14
+
15
+ - Test coverage raised to 98.5% statements / 93.7% branches (thresholds bumped to match), covering behaviors that previously had none: entity lifecycle hooks (`@BeforeInsert` and friends) executing through a querier, JSON column hydration through populated relations, safe-mode sync never dropping a column or index, `generate:from-db` entity emission, and the introspector's foreign-key/index AST building.
16
+
17
+ ## [0.20.1] - 2026-07-27
18
+
19
+ ### Fixes
20
+
21
+ - **A `security: true` filter on a joined (m1/11) relation was skipped by `$populate` with no explicit `$where` on it, on every driver. ** Now we enforced unconditionally, same as an explicit `$where` already was.
22
+ - **PostgreSQL/CockroachDB: `$size` misbound its value when it wasn't the first condition in `$where`.** `{ name: 'Acme', tags: { $size: 3 } }` reused placeholder `$1` for both conditions.
23
+ - **PostgreSQL/CockroachDB: `upsertOne`/`upsertMany` bound the wrong value to the 2nd+ auto-filled `onUpdate` column omitted from the payload.**
24
+ - **SQLite/MySQL/MariaDB: a nested `$elemMatch` on an array-of-arrays field could return zero rows instead of the matching ones** (only reachable by bypassing the type system - no typed query is affected).
25
+
7
26
  ## [0.20.0] - 2026-07-26
8
27
 
9
28
  ### `$merge` renamed to `$set` (breaking)
@@ -1,5 +1,4 @@
1
1
  import { type EntityMeta, type FieldKey, type FieldOptions, type IsolationLevel, type JsonUpdateOp, type Query, type QueryAggMap, type QueryAggregate, type QueryComparisonOptions, type QueryConflictPaths, type QueryContext, type QueryDialect, type QueryExclude, type QueryGroupMap, type QueryHavingMap, type QueryOptions, type QueryPager, type QueryPopulate, QueryRaw, type QueryRawFnOptions, type QuerySearch, type QuerySelect, type QuerySelectOptions, type QuerySelectValue, type QuerySizeComparisonOps, type QuerySortMap, type QueryWhere, type QueryWhereArray, type QueryWhereFieldOperatorMap, type QueryWhereMap, type QueryWhereOptions, type RelationOptions, type SqlDialectName, type SqlQueryDialect, type Type, type UpdatePayload } from '../type/index.js';
2
- import { type CallbackKey } from '../util/index.js';
3
2
  import { VectorSqlDialect } from './vectorSqlDialect.js';
4
3
  export declare abstract class AbstractSqlDialect extends VectorSqlDialect implements QueryDialect, SqlQueryDialect {
5
4
  abstract readonly dialectName: SqlDialectName;
@@ -23,6 +22,15 @@ export declare abstract class AbstractSqlDialect extends VectorSqlDialect implem
23
22
  readonly maxBindValues: number;
24
23
  getBeginTransactionStatements(isolationLevel?: IsolationLevel): string[];
25
24
  createContext(): QueryContext;
25
+ /**
26
+ * Builds SQL text in isolation via `build`, so the caller can embed it inline (e.g.
27
+ * `"col" = <text>`) instead of appending it at the end of `ctx`. The fragment binds any value
28
+ * straight into `ctx`'s own values array - shared by reference, not copied - so `addValue` numbers
29
+ * its placeholder correctly against the real query from the start; a fresh, empty array would
30
+ * instead number from `1` regardless of how many values `ctx` already has, misnumbering every
31
+ * bound value on `$n`-placeholder dialects once `ctx` isn't otherwise empty.
32
+ */
33
+ protected buildFragment(ctx: QueryContext, build: (fragmentCtx: QueryContext) => void): string;
26
34
  addValue(values: unknown[], value: unknown): string;
27
35
  /**
28
36
  * Normalizes a parameter value for the database driver.
@@ -111,17 +119,21 @@ export declare abstract class AbstractSqlDialect extends VectorSqlDialect implem
111
119
  /** `$size`: the length of the JSON array at `jsonField`, compared against `value`. */
112
120
  protected abstract jsonSize(ctx: QueryContext, jsonField: string, value: number | QuerySizeComparisonOps): string;
113
121
  /**
114
- * Explodes the JSON array at `jsonField` into rows, as the `FROM` of an `EXISTS` subquery. An
115
- * empty `fields` means the elements are scalars, in which case `asJson` says whether they are read
116
- * as JSON or as text; otherwise they are objects and `fields` are the keys the conditions will read
117
- * (MySQL needs them upfront for its `JSON_TABLE` column list).
122
+ * Explodes the JSON array at `jsonField` into rows, as the `FROM` of an `EXISTS` subquery, under
123
+ * `alias` (from {@link QueryContext.nextAlias} - a fresh name per call, since `$elemMatch`/`$all`
124
+ * can recurse into this on a nested array and a fixed, reused alias would let the inner occurrence
125
+ * shadow the outer one it needs to correlate against). An empty `fields` means the elements are
126
+ * scalars, in which case `asJson` says whether they are read as JSON or as text; otherwise they
127
+ * are objects and `fields` are the keys the conditions will read (MySQL needs them upfront for its
128
+ * `JSON_TABLE` column list).
118
129
  */
119
- protected abstract jsonElemFrom(jsonField: string, fields: readonly string[], asJson?: boolean): string;
130
+ protected abstract jsonElemFrom(jsonField: string, fields: readonly string[], alias: string, asJson?: boolean): string;
120
131
  /**
121
- * References an exploded element: the element itself, or one `field` of it. `asJson` asks for the
122
- * JSON-valued form instead of the text one - see {@link isJsonbOp} for when that matters.
132
+ * References an exploded element under `alias` (the same one passed to the {@link jsonElemFrom}
133
+ * call it explodes): the element itself, or one `field` of it. `asJson` asks for the JSON-valued
134
+ * form instead of the text one - see {@link isJsonbOp} for when that matters.
123
135
  */
124
- protected abstract jsonElemRef(field?: string, asJson?: boolean): string;
136
+ protected abstract jsonElemRef(alias: string, field?: string, asJson?: boolean): string;
125
137
  /**
126
138
  * Whether the dialect's array containment ({@link jsonAll}) matches an object element that merely
127
139
  * *includes* the given keys, as PostgreSQL's `@>` and MySQL's `JSON_CONTAINS` do. SQLite compares
@@ -155,7 +167,10 @@ export declare abstract class AbstractSqlDialect extends VectorSqlDialect implem
155
167
  * `1` equal to `1.0` - JSON equality would not.
156
168
  */
157
169
  protected isJsonbOp(op: string, value?: unknown): boolean;
158
- /** A JSON-encoded bound parameter, cast to the dialect's JSON type. */
170
+ /**
171
+ * A JSON-encoded bound parameter, cast to the dialect's JSON type. Only the positional-placeholder
172
+ * dialects use this - PostgreSQL binds JSON through {@link PgLikeSqlDialect.jsonScalarParam} instead.
173
+ */
159
174
  protected jsonScalarParam(ctx: QueryContext, value: unknown): string;
160
175
  getComparisonKey<E>(ctx: QueryContext, entity: Type<E>, key: FieldKey<E>, { prefix }?: QueryOptions): void;
161
176
  sort<E>(ctx: QueryContext, entity: Type<E>, sort: QuerySortMap<E> | undefined, { prefix }: QueryOptions): void;
@@ -186,17 +201,9 @@ export declare abstract class AbstractSqlDialect extends VectorSqlDialect implem
186
201
  update<E>(ctx: QueryContext, entity: Type<E>, q: QuerySearch<E>, payload: UpdatePayload<E>, opts?: QueryOptions): void;
187
202
  upsert<E>(ctx: QueryContext, entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E | E[]): void;
188
203
  protected getUpsertUpdateAssignments<E>(ctx: QueryContext, meta: EntityMeta<E>, conflictPaths: QueryConflictPaths<E>, payload: E | E[], callback?: (columnName: string) => string): string;
189
- /**
190
- * Shared ON CONFLICT ... DO UPDATE / DO NOTHING ... RETURNING logic for positional-placeholder
191
- * dialects (SQLite). Uses a deferred context for update params so they follow INSERT params.
192
- * PG uses its own implementation since `$N` numbered placeholders handle param ordering natively.
193
- */
194
- protected onConflictUpsert<E>(ctx: QueryContext, entity: Type<E>, conflictPaths: QueryConflictPaths<E>, payload: E | E[], insertFn: (ctx: QueryContext, entity: Type<E>, payload: E | E[]) => void): void;
195
204
  protected getUpsertConflictPathsStr<E>(meta: EntityMeta<E>, conflictPaths: QueryConflictPaths<E>): string;
196
205
  delete<E>(ctx: QueryContext, entity: Type<E>, q: QuerySearch<E>, opts?: QueryOptions): void;
197
206
  escapeId(val: string, forbidQualified?: boolean, addDot?: boolean): string;
198
- protected getPersistables<E>(ctx: QueryContext, meta: EntityMeta<E>, payload: E | E[], callbackKey: CallbackKey): Record<string, unknown>[];
199
- protected getPersistable<E>(ctx: QueryContext, meta: EntityMeta<E>, payload: E, callbackKey: CallbackKey): Record<string, unknown>;
200
207
  protected formatPersistableValue<E>(ctx: QueryContext, field: FieldOptions | undefined, value: unknown): void;
201
208
  /**
202
209
  * Reads `operand` as a JSON value. Passing the `?` placeholder yields the cast for a bound
@@ -204,11 +211,6 @@ export declare abstract class AbstractSqlDialect extends VectorSqlDialect implem
204
211
  * why this is one hook rather than a placeholder variant plus an expression variant.
205
212
  */
206
213
  protected jsonCast(operand: string): string;
207
- /**
208
- * The JSON cast applied to a bound placeholder. Only the positional-placeholder dialects use it -
209
- * PostgreSQL binds JSON through {@link PgLikeSqlDialect.jsonScalarParam} instead.
210
- */
211
- protected getJsonCastExpr(): string;
212
214
  /**
213
215
  * Generate the full `"col" = <expression>` assignment for a JSON update operator payload.
214
216
  * Called from `update()` when a field value is a {@link JsonUpdateOp}.
@@ -248,7 +250,6 @@ export declare abstract class AbstractSqlDialect extends VectorSqlDialect implem
248
250
  * @returns resolved metadata or `undefined` if the key is not a JSON dot-notation path
249
251
  */
250
252
  protected resolveJsonDotPath<E>(meta: EntityMeta<E>, key: string, prefix?: string): {
251
- root: string;
252
253
  jsonPath: string;
253
254
  accessor: (asJsonb?: boolean) => string;
254
255
  } | undefined;
@@ -276,6 +277,13 @@ export declare abstract class AbstractSqlDialect extends VectorSqlDialect implem
276
277
  * Filter by relation using an EXISTS subquery.
277
278
  * Supports all cardinalities: mm (via junction), 1m, m1, and 11.
278
279
  */
280
+ /**
281
+ * The parent side of a relation-filtering subquery: its table name, escaped id reference, and a
282
+ * guard against a relation with no configured references. Shared by
283
+ * `compareRelation`/`compareRelationSize`. `rel.references` is asserted non-null at call sites
284
+ * relying on this guard, since the check lives here instead of in the caller's own scope.
285
+ */
286
+ private resolveRelationParent;
279
287
  protected compareRelation<E>(ctx: QueryContext, entity: Type<E>, key: string, val: QueryWhereMap<unknown>, rel: RelationOptions, opts: QueryComparisonOptions): void;
280
288
  /**
281
289
  * Filter by relation size using a `COUNT(*)` subquery.
@@ -292,7 +300,8 @@ export declare abstract class AbstractSqlDialect extends VectorSqlDialect implem
292
300
  * Append a single size comparison operator and value to the context.
293
301
  */
294
302
  private appendSizeOp;
295
- abstract escape(value: unknown): string;
303
+ /** ANSI-style single-quote escaping. MySQL-family dialects override this for backslash escaping. */
304
+ escape(value: unknown): string;
296
305
  protected get regexpOp(): string;
297
306
  protected get likeFn(): string;
298
307
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"abstractSqlDialect.d.ts","sourceRoot":"","sources":["../../src/dialect/abstractSqlDialect.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,YAAY,EAEjB,KAAK,cAAc,EACnB,KAAK,YAAY,EAEjB,KAAK,KAAK,EACV,KAAK,WAAW,EAChB,KAAK,cAAc,EAGnB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EAInB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,QAAQ,EACR,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAE3B,KAAK,YAAY,EAGjB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EAGtB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,IAAI,EACT,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAKL,KAAK,WAAW,EAyBjB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAUzD,8BAAsB,kBAAmB,SAAQ,gBAAiB,YAAW,YAAY,EAAE,eAAe;IAExG,kBAA2B,WAAW,EAAE,cAAc,CAAC;IAEvD,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,GAAG,GAAG,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IAClD,QAAQ,CAAC,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IACnD,QAAQ,CAAC,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;IAErD,QAAQ,CAAC,sBAAsB,EAAE,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAY;IAE7E,QAAQ,CAAC,mBAAmB,EAAE,kBAAkB,GAAG,kBAAkB,CAAsB;IAE3F,QAAQ,CAAC,iBAAiB,EAAE,cAAc,GAAG,eAAe,GAAG,MAAM,CAAkB;IAEvF,QAAQ,CAAC,oBAAoB,EAAE,iBAAiB,GAAG,kBAAkB,CAAqB;IAE1F,QAAQ,CAAC,eAAe,EAAE,UAAU,GAAG,YAAY,CAAgB;IAEnE,QAAQ,CAAC,iBAAiB,EAAE,cAAc,GAAG,aAAa,CAAiB;IAE3E,QAAQ,CAAC,cAAc,EAAE,QAAQ,GAAG,SAAS,CAAY;IAEzD;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAS;IAEvC,6BAA6B,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,MAAM,EAAE,CAWvE;IAED,aAAa,IAAI,YAAY,CAE5B;IAED,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAGlD;IAED;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAWtC;IAED;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,OAAO,EAAE,GAAG,SAAS,CAEpE;IAED,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAElC;IAED,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAKtC;IAED,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAE,KAAK,CAAC,CAAC,CAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,IAAI,CAU7F;IAED,YAAY,CAAC,CAAC,EACZ,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS,EACvC,IAAI,GAAE,kBAAuB,EAC7B,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GACxB,IAAI,CAyDN;IAED,MAAM,CAAC,CAAC,EACN,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS,EACvC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EACzB,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAC3B,IAAI,GAAE,YAAiB,EACvB,QAAQ,CAAC,EAAE,OAAO,EAClB,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GACrB,IAAI,CAuBN;IAED,OAAO,CAAC,0BAA0B;IAUlC,SAAS,CAAC,oBAAoB,CAAC,CAAC,EAC9B,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,EAClC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,EACtC,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAC7B,IAAI,CAYN;IAED,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAC7B,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,EAClC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,EACtC,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAC7B,IAAI,CAkCN;IAED;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAkC/B,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,GAAE,UAAU,CAAC,CAAC,CAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,IAAI,CAK1G;IAED,4GAA4G;IAC5G,SAAS,CAAC,WAAW,CAAC,CAAC,EACrB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,KAAK,GAAE,UAAU,CAAC,CAAC,CAAM,EACzB,IAAI,GAAE,iBAAsB,GAC3B,IAAI,CAsCN;IAED,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,GAAE,sBAA2B,GAAG,IAAI,CA8FjH;IAED,SAAS,CAAC,sBAAsB,CAAC,CAAC,EAChC,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,EACrC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,EACvB,IAAI,EAAE,sBAAsB,GAC3B,IAAI,CAiCN;IAED,uEAAuE;IACvE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAGlC;IAEH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAKnC;IAEH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAShC;IAEH;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAKtB;IAE3B,6DAA6D;IAC7D,OAAO,CAAC,gBAAgB;IAMxB;;;OAGG;IACH,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAC7B,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,YAAY,GACjB,MAAM,GAAG,SAAS,CAUpB;IAED,OAAO,CAAC,cAAc;IAItB,oBAAoB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,0BAA0B,CAAC,CAAC,CAAC,EACnE,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAChB,EAAE,EAAE,CAAC,EACL,GAAG,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACrC,IAAI,GAAE,YAAiB,GACtB,IAAI,CA2DN;IAED,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,WAAW;IAInB;;;;OAIG;IACH,SAAS,CAAC,uBAAuB,CAC/B,GAAG,EAAE,YAAY,EACjB,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EACpC,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,EACd,MAAM,UAAQ,GACb,MAAM,CA+CR;IAED,OAAO,CAAC,SAAS;IAWjB,kGAAkG;IAClG,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAEhF;IAED;;;OAGG;IACH,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAEjE;IAED;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CASrE;IAED,oGAAoG;IACpG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IAEzF,sFAAsF;IACtF,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,sBAAsB,GAAG,MAAM,CAAC;IAElH;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAExG;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAEzE;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAQ;IAE5D;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAS;IAE5D;;;;;;OAMG;IACH,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CA0BpG;IAED;;;;;;;;;OASG;IACH,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAMxD;IAED,uEAAuE;IACvE,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAMnE;IAED,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAE,YAAiB,GAAG,IAAI,CAgB7G;IAED,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,YAAY,GAAG,IAAI,CAwD7G;IAED,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAO/C;IAED,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAKzF;IAED;;6CAEyC;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAMrC;IAEH,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAC/D,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC1B,IAAI,GAAE,YAAiB,GACtB,IAAI,CA8CN;IAED;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAU9G;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAKvC;IAEH,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAOhC;IAEH,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAgClG;IAED,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAE,KAAK,CAAC,CAAC,CAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAGvF;IAED,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CA6BzF;IAED;;;;OAIG;IACH,SAAS,CAAC,wBAAwB,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,CAE5F;IAED,MAAM,CAAC,CAAC,EACN,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EACjB,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EACzB,IAAI,CAAC,EAAE,YAAY,GAClB,IAAI,CAyBN;IAED,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAqB1G;IAED,SAAS,CAAC,0BAA0B,CAAC,CAAC,EACpC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,EACpC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAChB,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GACxC,MAAM,CAmBR;IAED;;;;OAIG;IACH,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAC1B,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,EACpC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAChB,QAAQ,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,GACvE,IAAI,CAeN;IAED,SAAS,CAAC,yBAAyB,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM,CAQxG;IAED,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,GAAE,YAAiB,GAAG,IAAI,CAqB9F;IAED,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAEzE;IAED,SAAS,CAAC,eAAe,CAAC,CAAC,EACzB,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAChB,WAAW,EAAE,WAAW,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAG3B;IAED,SAAS,CAAC,cAAc,CAAC,CAAC,EACxB,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,OAAO,EAAE,CAAC,EACV,WAAW,EAAE,WAAW,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAczB;IAED,SAAS,CAAC,sBAAsB,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAc5G;IAED;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1C;IAED;;;OAGG;IACH,SAAS,CAAC,eAAe,IAAI,MAAM,CAElC;IAED;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,CAkBjH;IAED;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAE7G;IAED,oEAAoE;IACpE,SAAS,CAAC,QAAQ,CAAC,WAAW,CAC5B,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACb,MAAM,CAAC;IAEV,oFAAoF;IACpF,SAAS,CAAC,QAAQ,CAAC,OAAO,CACxB,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,KAAK,CAAC,EAAE,YAAY,GACnB,MAAM,CAAC;IAEV,iFAAiF;IACjF,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IAEpG,0BAA0B;IAC1B,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAAC;IAEhG,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,iBAAiB,GAAG;QAAE,KAAK,EAAE,QAAQ,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,QAsBtG;IAED;;;;;OAKG;IACH,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAC5B,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,GAEb;QACE,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;KACzC,GACD,SAAS,CAmBZ;IAED;;;OAGG;IACH,SAAS,CAAC,eAAe,CACvB,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;KACzC,EACD,GAAG,EAAE,OAAO,GACX,IAAI,CAqBN;IAED;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ/E;IAED,SAAS,CAAC,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO9E;IAED;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;;OAGG;IACH,SAAS,CAAC,eAAe,CAAC,CAAC,EACzB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,EAC3B,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,sBAAsB,GAC3B,IAAI,CA4DN;IAED;;;OAGG;IACH,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAC7B,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GAAG,sBAAsB,EACxC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,sBAAsB,GAC3B,IAAI,CAqCN;IAED;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CAC3B,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,MAAM,IAAI,EACtB,OAAO,EAAE,MAAM,GAAG,sBAAsB,GACvC,IAAI,CAyBN;IAED;;OAEG;IACH,OAAO,CAAC,YAAY;IAuCpB,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IAExC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAE/B;IAED,SAAS,KAAK,MAAM,IAAI,MAAM,CAE7B;IAED;;;OAGG;IACH,SAAS,KAAK,IAAI,IAAI,MAAM,CAE3B;IAED,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAElD;IAED,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEjD;IAED;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAIhF;IAED,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1C;IAEQ,QAAQ,IAAI,MAAM,CAE1B;CACF"}
1
+ {"version":3,"file":"abstractSqlDialect.d.ts","sourceRoot":"","sources":["../../src/dialect/abstractSqlDialect.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { getMeta } from '../entity/index.js';
2
2
  import { QueryRaw, RAW_ALIAS, RAW_VALUE, } from '../type/index.js';
3
- import { escapeSingleQuotes } from '../util/ansiSqlLiteral.js';
3
+ import { escapeAnsiSqlLiteral, escapeSingleQuotes } from '../util/ansiSqlLiteral.js';
4
4
  import { applyFilters, asSelectMap, buildQueryWhereAsMap, buildSortMap, escapeSqlId, fillOnFields, filterFieldKeys, flatObject, getFieldKeys, getInsertFieldKeys, getKeys, getRelationRequestSummary, getSoftDeleteValue, hasKeys, hasMultipleKeys, isJsonType, isJsonUpdateOp, isOperatorObject, isOperatorOnlyObject, isPopulatingRelations, isVectorSearch, normalizeScalarFieldSelection, parseGroupMap, parseRelationAtKey, raw, someValue, withoutSoftDeleteFilter, } from '../util/index.js';
5
5
  import { buildElemMatchConditions } from './jsonArrayElemMatchUtils.js';
6
- import { jsonElemExists } from './jsonSql.js';
6
+ import { JSON_ELEM_ALIAS_PREFIX, jsonElemExists } from './jsonSql.js';
7
7
  import { SqlQueryContext } from './queryContext.js';
8
8
  import { VectorSqlDialect } from './vectorSqlDialect.js';
9
9
  export class AbstractSqlDialect extends VectorSqlDialect {
@@ -34,6 +34,19 @@ export class AbstractSqlDialect extends VectorSqlDialect {
34
34
  createContext() {
35
35
  return new SqlQueryContext(this);
36
36
  }
37
+ /**
38
+ * Builds SQL text in isolation via `build`, so the caller can embed it inline (e.g.
39
+ * `"col" = <text>`) instead of appending it at the end of `ctx`. The fragment binds any value
40
+ * straight into `ctx`'s own values array - shared by reference, not copied - so `addValue` numbers
41
+ * its placeholder correctly against the real query from the start; a fresh, empty array would
42
+ * instead number from `1` regardless of how many values `ctx` already has, misnumbering every
43
+ * bound value on `$n`-placeholder dialects once `ctx` isn't otherwise empty.
44
+ */
45
+ buildFragment(ctx, build) {
46
+ const fragmentCtx = new SqlQueryContext(this, ctx.values);
47
+ build(fragmentCtx);
48
+ return fragmentCtx.sql;
49
+ }
37
50
  addValue(values, value) {
38
51
  values.push(this.normalizeValue(value));
39
52
  return this.placeholder(values.length);
@@ -194,10 +207,11 @@ export class AbstractSqlDialect extends VectorSqlDialect {
194
207
  ctx.append(`${joinAlias}.${this.escapeId(foreignColumnName)} = ${relPath}.${this.escapeId(localColumnName)}`);
195
208
  refAppended = true;
196
209
  }
197
- if (relQuery.$where) {
198
- ctx.append(' AND ');
199
- this.where(ctx, relEntity, relQuery.$where, { prefix: joinRelAlias, clause: false });
200
- }
210
+ // Unconditional, not gated by `relQuery.$where`: a joined relation's own filters (in
211
+ // particular `security: true` ones) must apply even to a bare `$populate: { rel: true }`
212
+ // with no explicit `$where`. `where()` -> `renderWhere()` no-ops cleanly (appends nothing)
213
+ // when there is truly nothing to add, so this is a pure superset of the old behavior.
214
+ this.where(ctx, relEntity, relQuery.$where ?? {}, { prefix: joinRelAlias, clause: 'AND' });
201
215
  this.selectRelationJoins(ctx, relEntity, relQuery.$select, relQuery.$populate, { prefix: joinRelAlias });
202
216
  });
203
217
  }
@@ -412,11 +426,8 @@ export class AbstractSqlDialect extends VectorSqlDialect {
412
426
  resolveOperandField(ctx, entity, key, opts) {
413
427
  const col = getMeta(entity).fields[key];
414
428
  if (col?.virtual) {
415
- if (col.virtual instanceof QueryRaw) {
416
- this.getComparisonKey(ctx, entity, key, opts);
417
- return undefined;
418
- }
419
- return `(${col.virtual})`;
429
+ this.getComparisonKey(ctx, entity, key, opts);
430
+ return undefined;
420
431
  }
421
432
  return this.columnWithPrefix(key, col, opts.prefix);
422
433
  }
@@ -631,8 +642,9 @@ export class AbstractSqlDialect extends VectorSqlDialect {
631
642
  if (isOperatorOnlyObject(match)) {
632
643
  const entries = Object.entries(match);
633
644
  const asJson = !this.jsonScalarElemKeepsType && entries.every(([op, val]) => this.isJsonbOp(op, val));
634
- const conditions = entries.map(([op, val]) => this.buildJsonFieldCondition(ctx, () => this.jsonElemRef(undefined, asJson), '', op, val, asJson));
635
- return jsonElemExists(this.jsonElemFrom(jsonField, [], asJson), conditions);
645
+ const alias = ctx.nextAlias(JSON_ELEM_ALIAS_PREFIX);
646
+ const conditions = entries.map(([op, val]) => this.buildJsonFieldCondition(ctx, () => this.jsonElemRef(alias, undefined, asJson), '', op, val, asJson));
647
+ return jsonElemExists(this.jsonElemFrom(jsonField, [], alias, asJson), conditions);
636
648
  }
637
649
  if (isOperatorObject(match)) {
638
650
  throw TypeError(`$elemMatch cannot mix operators with field names: ${Object.keys(match).join(', ')}`);
@@ -642,11 +654,12 @@ export class AbstractSqlDialect extends VectorSqlDialect {
642
654
  if (this.jsonContainmentIsPartial && !someValue(match, isOperatorObject)) {
643
655
  return this.jsonAll(ctx, jsonField, [match]);
644
656
  }
657
+ const alias = ctx.nextAlias(JSON_ELEM_ALIAS_PREFIX);
645
658
  const conditions = buildElemMatchConditions(match, (field, op, opVal) => {
646
659
  const asJson = this.isJsonbOp(op, opVal);
647
- return this.buildJsonFieldCondition(ctx, (f) => this.jsonElemRef(f, asJson), field, op, opVal, asJson);
660
+ return this.buildJsonFieldCondition(ctx, (f) => this.jsonElemRef(alias, f, asJson), field, op, opVal, asJson);
648
661
  });
649
- return jsonElemExists(this.jsonElemFrom(jsonField, Object.keys(match)), conditions);
662
+ return jsonElemExists(this.jsonElemFrom(jsonField, Object.keys(match), alias), conditions);
650
663
  }
651
664
  /**
652
665
  * Whether the operator reads the JSON *value* instead of its text form. The array operators always
@@ -665,13 +678,16 @@ export class AbstractSqlDialect extends VectorSqlDialect {
665
678
  const comparesValue = op === '$eq' || op === '$ne' || op === '$in' || op === '$nin';
666
679
  return comparesValue && this.jsonCompareMode(value) === 'json';
667
680
  }
668
- /** A JSON-encoded bound parameter, cast to the dialect's JSON type. */
681
+ /**
682
+ * A JSON-encoded bound parameter, cast to the dialect's JSON type. Only the positional-placeholder
683
+ * dialects use this - PostgreSQL binds JSON through {@link PgLikeSqlDialect.jsonScalarParam} instead.
684
+ */
669
685
  jsonScalarParam(ctx, value) {
670
686
  if (value instanceof QueryRaw) {
671
687
  return this.addValue(ctx.values, value);
672
688
  }
673
689
  ctx.pushValue(JSON.stringify(value));
674
- return this.getJsonCastExpr();
690
+ return this.jsonCast('?');
675
691
  }
676
692
  getComparisonKey(ctx, entity, key, { prefix } = {}) {
677
693
  const meta = getMeta(entity);
@@ -986,28 +1002,11 @@ export class AbstractSqlDialect extends VectorSqlDialect {
986
1002
  if (callback && Object.hasOwn(sample, col)) {
987
1003
  return `${this.escapeId(columnName)} = ${callback(this.escapeId(columnName))}`;
988
1004
  }
989
- const valCtx = this.createContext();
990
- this.formatPersistableValue(valCtx, field, filledPayload[col]);
991
- ctx.pushValue(...valCtx.values);
992
- return `${this.escapeId(columnName)} = ${valCtx.sql}`;
1005
+ const text = this.buildFragment(ctx, (fragmentCtx) => this.formatPersistableValue(fragmentCtx, field, filledPayload[col]));
1006
+ return `${this.escapeId(columnName)} = ${text}`;
993
1007
  })
994
1008
  .join(', ');
995
1009
  }
996
- /**
997
- * Shared ON CONFLICT ... DO UPDATE / DO NOTHING ... RETURNING logic for positional-placeholder
998
- * dialects (SQLite). Uses a deferred context for update params so they follow INSERT params.
999
- * PG uses its own implementation since `$N` numbered placeholders handle param ordering natively.
1000
- */
1001
- onConflictUpsert(ctx, entity, conflictPaths, payload, insertFn) {
1002
- const meta = getMeta(entity);
1003
- const updateCtx = this.createContext();
1004
- const update = this.getUpsertUpdateAssignments(updateCtx, meta, conflictPaths, payload, (name) => `EXCLUDED.${name}`);
1005
- const keysStr = this.getUpsertConflictPathsStr(meta, conflictPaths);
1006
- const onConflict = update ? `DO UPDATE SET ${update}` : 'DO NOTHING';
1007
- insertFn(ctx, entity, payload);
1008
- ctx.append(` ON CONFLICT (${keysStr}) ${onConflict} ${this.returningId(entity)}`);
1009
- ctx.pushValue(...updateCtx.values);
1010
- }
1011
1010
  getUpsertConflictPathsStr(meta, conflictPaths) {
1012
1011
  return getKeys(conflictPaths)
1013
1012
  .map((key) => {
@@ -1040,22 +1039,6 @@ export class AbstractSqlDialect extends VectorSqlDialect {
1040
1039
  escapeId(val, forbidQualified, addDot) {
1041
1040
  return escapeSqlId(val, this.escapeIdChar, forbidQualified, addDot);
1042
1041
  }
1043
- getPersistables(ctx, meta, payload, callbackKey) {
1044
- const payloads = fillOnFields(meta, payload, callbackKey);
1045
- return payloads.map((it) => this.getPersistable(ctx, meta, it, callbackKey));
1046
- }
1047
- getPersistable(ctx, meta, payload, callbackKey) {
1048
- const filledPayload = fillOnFields(meta, payload, callbackKey)[0];
1049
- const keys = filterFieldKeys(meta, filledPayload, callbackKey);
1050
- return keys.reduce((acc, key) => {
1051
- const field = meta.fields[key];
1052
- const valCtx = this.createContext();
1053
- this.formatPersistableValue(valCtx, field, filledPayload[key]);
1054
- ctx.pushValue(...valCtx.values);
1055
- acc[key] = valCtx.sql;
1056
- return acc;
1057
- }, {});
1058
- }
1059
1042
  formatPersistableValue(ctx, field, value) {
1060
1043
  if (value instanceof QueryRaw) {
1061
1044
  this.getRawValue(ctx, { value });
@@ -1079,13 +1062,6 @@ export class AbstractSqlDialect extends VectorSqlDialect {
1079
1062
  jsonCast(operand) {
1080
1063
  return `CAST(${operand} AS JSON)`;
1081
1064
  }
1082
- /**
1083
- * The JSON cast applied to a bound placeholder. Only the positional-placeholder dialects use it -
1084
- * PostgreSQL binds JSON through {@link PgLikeSqlDialect.jsonScalarParam} instead.
1085
- */
1086
- getJsonCastExpr() {
1087
- return this.jsonCast('?');
1088
- }
1089
1065
  /**
1090
1066
  * Generate the full `"col" = <expression>` assignment for a JSON update operator payload.
1091
1067
  * Called from `update()` when a field value is a {@link JsonUpdateOp}.
@@ -1170,7 +1146,6 @@ export class AbstractSqlDialect extends VectorSqlDialect {
1170
1146
  const colName = this.resolveColumnName(root, field);
1171
1147
  const escapedCol = (prefix ? this.escapeId(prefix, true, true) : '') + this.escapeId(colName);
1172
1148
  return {
1173
- root,
1174
1149
  jsonPath,
1175
1150
  accessor: (asJsonb) => asJsonb ? this.getJsonPathJsonbExpr(escapedCol, jsonPath) : this.getJsonPathScalarExpr(escapedCol, jsonPath),
1176
1151
  };
@@ -1236,15 +1211,25 @@ export class AbstractSqlDialect extends VectorSqlDialect {
1236
1211
  * Filter by relation using an EXISTS subquery.
1237
1212
  * Supports all cardinalities: mm (via junction), 1m, m1, and 11.
1238
1213
  */
1239
- compareRelation(ctx, entity, key, val, rel, opts) {
1214
+ /**
1215
+ * The parent side of a relation-filtering subquery: its table name, escaped id reference, and a
1216
+ * guard against a relation with no configured references. Shared by
1217
+ * `compareRelation`/`compareRelationSize`. `rel.references` is asserted non-null at call sites
1218
+ * relying on this guard, since the check lives here instead of in the caller's own scope.
1219
+ */
1220
+ resolveRelationParent(entity, key, rel, opts) {
1240
1221
  const meta = getMeta(entity);
1241
1222
  const parentTable = this.resolveTableName(entity, meta);
1242
- const parentId = meta.id;
1243
- const escapedParentId = (opts.prefix ? this.escapeId(opts.prefix, true, true) : this.escapeId(parentTable, false, true)) +
1244
- this.escapeId(parentId);
1245
1223
  if (!rel.references?.length) {
1246
1224
  throw new TypeError(`Relation '${key}' on '${parentTable}' has no references defined`);
1247
1225
  }
1226
+ const escapedParentId = (opts.prefix ? this.escapeId(opts.prefix, true, true) : this.escapeId(parentTable, false, true)) +
1227
+ this.escapeId(meta.id);
1228
+ return { parentTable, escapedParentId };
1229
+ }
1230
+ compareRelation(ctx, entity, key, val, rel, opts) {
1231
+ const { parentTable, escapedParentId } = this.resolveRelationParent(entity, key, rel, opts);
1232
+ const references = rel.references;
1248
1233
  const relatedEntity = rel.entity();
1249
1234
  const relatedMeta = getMeta(relatedEntity);
1250
1235
  const relatedTable = this.resolveTableName(relatedEntity, relatedMeta);
@@ -1254,8 +1239,8 @@ export class AbstractSqlDialect extends VectorSqlDialect {
1254
1239
  const throughEntity = rel.through();
1255
1240
  const throughMeta = getMeta(throughEntity);
1256
1241
  const throughTable = this.resolveTableName(throughEntity, throughMeta);
1257
- const localFk = rel.references[0].local;
1258
- const foreignFk = rel.references[1].local;
1242
+ const localFk = references[0].local;
1243
+ const foreignFk = references[1].local;
1259
1244
  const relatedId = relatedMeta.id;
1260
1245
  ctx.append(this.escapeId(throughTable));
1261
1246
  ctx.append(` WHERE ${this.escapeId(throughTable, false, true)}${this.escapeId(localFk)} = ${escapedParentId}`);
@@ -1272,11 +1257,11 @@ export class AbstractSqlDialect extends VectorSqlDialect {
1272
1257
  // 1m / m1 / 11: EXISTS (SELECT 1 FROM Related WHERE related.fk_or_pk = parent.pk_or_fk AND ...)
1273
1258
  // Left side is always relatedTable.references[0].foreign
1274
1259
  // Right side is the parent's PK (1m) or the parent's FK (m1/11)
1275
- const joinLeft = `${this.escapeId(relatedTable, false, true)}${this.escapeId(rel.references[0].foreign)}`;
1260
+ const joinLeft = `${this.escapeId(relatedTable, false, true)}${this.escapeId(references[0].foreign)}`;
1276
1261
  const joinRight = rel.cardinality === '1m'
1277
1262
  ? escapedParentId
1278
1263
  : (opts.prefix ? this.escapeId(opts.prefix, true, true) : this.escapeId(parentTable, false, true)) +
1279
- this.escapeId(rel.references[0].local);
1264
+ this.escapeId(references[0].local);
1280
1265
  ctx.append(this.escapeId(relatedTable));
1281
1266
  ctx.append(` WHERE ${joinLeft} = ${joinRight}`);
1282
1267
  this.where(ctx, relatedEntity, val, {
@@ -1292,14 +1277,7 @@ export class AbstractSqlDialect extends VectorSqlDialect {
1292
1277
  * Supports all cardinalities: mm (via junction), 1m.
1293
1278
  */
1294
1279
  compareRelationSize(ctx, entity, key, sizeVal, rel, opts) {
1295
- const meta = getMeta(entity);
1296
- const parentTable = this.resolveTableName(entity, meta);
1297
- const parentId = meta.id;
1298
- const escapedParentId = (opts.prefix ? this.escapeId(opts.prefix, true, true) : this.escapeId(parentTable, false, true)) +
1299
- this.escapeId(parentId);
1300
- if (!rel.references?.length) {
1301
- throw new TypeError(`Relation '${key}' on '${parentTable}' has no references defined`);
1302
- }
1280
+ const { escapedParentId } = this.resolveRelationParent(entity, key, rel, opts);
1303
1281
  const appendSubquery = () => {
1304
1282
  ctx.append('(SELECT COUNT(*) FROM ');
1305
1283
  if (rel.cardinality === 'mm' && rel.through) {
@@ -1390,6 +1368,10 @@ export class AbstractSqlDialect extends VectorSqlDialect {
1390
1368
  throw TypeError(`unsupported $size comparison operator: ${op}`);
1391
1369
  }
1392
1370
  }
1371
+ /** ANSI-style single-quote escaping. MySQL-family dialects override this for backslash escaping. */
1372
+ escape(value) {
1373
+ return escapeAnsiSqlLiteral(value);
1374
+ }
1393
1375
  get regexpOp() {
1394
1376
  return 'REGEXP';
1395
1377
  }