effect-qb 0.15.0 → 0.16.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.
package/dist/mysql.js CHANGED
@@ -24,6 +24,7 @@ __export(exports_column, {
24
24
  json: () => json,
25
25
  int: () => int,
26
26
  generated: () => generated2,
27
+ driverValueMapping: () => driverValueMapping2,
27
28
  default: () => default_2,
28
29
  datetime: () => datetime,
29
30
  date: () => date,
@@ -76,6 +77,7 @@ var makeColumnDefinition = (schema, metadata) => {
76
77
  runtime: undefined,
77
78
  dbType: metadata.dbType,
78
79
  runtimeSchema: schema,
80
+ driverValueMapping: metadata.driverValueMapping,
79
81
  nullability: metadata.nullable ? "maybe" : "never",
80
82
  dialect: metadata.dbType.dialect,
81
83
  kind: "scalar",
@@ -95,6 +97,7 @@ var makeColumnDefinition = (schema, metadata) => {
95
97
  defaultValue: metadata.defaultValue,
96
98
  generatedValue: metadata.generatedValue,
97
99
  ddlType: metadata.ddlType,
100
+ driverValueMapping: metadata.driverValueMapping,
98
101
  identity: metadata.identity,
99
102
  enum: metadata.enum
100
103
  };
@@ -111,6 +114,7 @@ var remapColumnDefinition = (column, options = {}) => {
111
114
  runtime: undefined,
112
115
  dbType: metadata.dbType,
113
116
  runtimeSchema: schema,
117
+ driverValueMapping: metadata.driverValueMapping,
114
118
  nullability: metadata.nullable ? "maybe" : "never",
115
119
  dialect: metadata.dbType.dialect
116
120
  };
@@ -129,6 +133,7 @@ var remapColumnDefinition = (column, options = {}) => {
129
133
  defaultValue: metadata.defaultValue,
130
134
  generatedValue: metadata.generatedValue,
131
135
  ddlType: metadata.ddlType,
136
+ driverValueMapping: metadata.driverValueMapping,
132
137
  identity: metadata.identity,
133
138
  enum: metadata.enum
134
139
  };
@@ -150,6 +155,7 @@ var bindColumn = (tableName, columnName, column, baseTableName, schemaName) => {
150
155
  runtime: undefined,
151
156
  dbType: column.metadata.dbType,
152
157
  runtimeSchema: schema,
158
+ driverValueMapping: column.metadata.driverValueMapping,
153
159
  nullability: column.metadata.nullable ? "maybe" : "never",
154
160
  dialect: column.metadata.dbType.dialect,
155
161
  kind: "scalar",
@@ -238,6 +244,10 @@ var ddlType = (sqlType) => (column) => mapColumn(column, {
238
244
  ...column.metadata,
239
245
  ddlType: sqlType
240
246
  });
247
+ var driverValueMapping = (mapping) => (column) => mapColumn(column, {
248
+ ...column.metadata,
249
+ driverValueMapping: mapping
250
+ });
241
251
  var array = (options) => (column) => remapColumnDefinition(column, {
242
252
  schema: Schema2.Array(options?.nullableElements ? Schema2.NullOr(column.schema) : column.schema),
243
253
  metadata: {
@@ -600,6 +610,7 @@ var primaryKey2 = primaryKey;
600
610
  var unique2 = unique;
601
611
  var default_2 = default_;
602
612
  var generated2 = generated;
613
+ var driverValueMapping2 = driverValueMapping;
603
614
  var references2 = references;
604
615
  var schema2 = schema;
605
616
  // src/mysql/errors/index.ts
@@ -110274,6 +110285,7 @@ var emptyContext = () => ({
110274
110285
  nullKeys: new Set,
110275
110286
  eqLiterals: new Map,
110276
110287
  neqLiterals: new Map,
110288
+ literalSets: new Map,
110277
110289
  sourceNames: new Set,
110278
110290
  contradiction: false,
110279
110291
  unknown: false
@@ -110283,6 +110295,7 @@ var cloneContext = (context) => ({
110283
110295
  nullKeys: new Set(context.nullKeys),
110284
110296
  eqLiterals: new Map(context.eqLiterals),
110285
110297
  neqLiterals: new Map(Array.from(context.neqLiterals.entries(), ([key, values]) => [key, new Set(values)])),
110298
+ literalSets: new Map(Array.from(context.literalSets.entries(), ([key, values]) => [key, new Set(values)])),
110286
110299
  sourceNames: new Set(context.sourceNames),
110287
110300
  contradiction: context.contradiction,
110288
110301
  unknown: context.unknown
@@ -110316,7 +110329,12 @@ var addEqLiteral = (context, key, value) => {
110316
110329
  if (neqValues?.has(value)) {
110317
110330
  context.contradiction = true;
110318
110331
  }
110332
+ const existingSet = context.literalSets.get(key);
110333
+ if (existingSet !== undefined && !existingSet.has(value)) {
110334
+ context.contradiction = true;
110335
+ }
110319
110336
  context.eqLiterals.set(key, value);
110337
+ context.literalSets.set(key, new Set([value]));
110320
110338
  };
110321
110339
  var addNeqLiteral = (context, key, value) => {
110322
110340
  addNonNull(context, key);
@@ -110327,6 +110345,18 @@ var addNeqLiteral = (context, key, value) => {
110327
110345
  values.add(value);
110328
110346
  context.neqLiterals.set(key, values);
110329
110347
  };
110348
+ var addLiteralSet = (context, key, values) => {
110349
+ addNonNull(context, key);
110350
+ const existingEq = context.eqLiterals.get(key);
110351
+ if (existingEq !== undefined && !values.has(existingEq)) {
110352
+ context.contradiction = true;
110353
+ }
110354
+ const existing = context.literalSets.get(key);
110355
+ context.literalSets.set(key, existing === undefined ? new Set(values) : new Set(Array.from(existing).filter((value) => values.has(value))));
110356
+ if (context.literalSets.get(key)?.size === 0) {
110357
+ context.contradiction = true;
110358
+ }
110359
+ };
110330
110360
  var applyEqColumn = (context, left, right) => {
110331
110361
  const leftValue = context.eqLiterals.get(left);
110332
110362
  const rightValue = context.eqLiterals.get(right);
@@ -110366,6 +110396,9 @@ var applyAtom = (context, atom) => {
110366
110396
  case "neq-literal":
110367
110397
  addNeqLiteral(context, atom.key, atom.value);
110368
110398
  return;
110399
+ case "literal-set":
110400
+ addLiteralSet(context, atom.key, new Set(atom.values));
110401
+ return;
110369
110402
  case "eq-column":
110370
110403
  applyEqColumn(context, atom.left, atom.right);
110371
110404
  return;
@@ -110388,6 +110421,9 @@ var applyNegativeAtom = (context, atom) => {
110388
110421
  case "neq-literal":
110389
110422
  addEqLiteral(context, atom.key, atom.value);
110390
110423
  return;
110424
+ case "literal-set":
110425
+ addNonNull(context, atom.key);
110426
+ return;
110391
110427
  case "eq-column":
110392
110428
  addNonNull(context, atom.left);
110393
110429
  addNonNull(context, atom.right);
@@ -110420,6 +110456,17 @@ var intersectNeqLiterals = (left, right) => {
110420
110456
  }
110421
110457
  return result;
110422
110458
  };
110459
+ var unionLiteralSets = (left, right) => {
110460
+ const result = new Map;
110461
+ for (const [key, leftValues] of left) {
110462
+ const rightValues = right.get(key);
110463
+ if (rightValues === undefined) {
110464
+ continue;
110465
+ }
110466
+ result.set(key, new Set([...leftValues, ...rightValues]));
110467
+ }
110468
+ return result;
110469
+ };
110423
110470
  var intersectContexts = (left, right) => {
110424
110471
  if (left.contradiction) {
110425
110472
  return cloneContext(right);
@@ -110432,6 +110479,7 @@ var intersectContexts = (left, right) => {
110432
110479
  nullKeys: new Set(Array.from(left.nullKeys).filter((key) => right.nullKeys.has(key))),
110433
110480
  eqLiterals: intersectEqLiterals(left.eqLiterals, right.eqLiterals),
110434
110481
  neqLiterals: intersectNeqLiterals(left.neqLiterals, right.neqLiterals),
110482
+ literalSets: unionLiteralSets(left.literalSets, right.literalSets),
110435
110483
  sourceNames: new Set(Array.from(left.sourceNames).filter((name) => right.sourceNames.has(name))),
110436
110484
  contradiction: false,
110437
110485
  unknown: left.unknown || right.unknown
@@ -110505,6 +110553,45 @@ var columnKeyOfExpression = (value) => {
110505
110553
  const ast = astOf(value);
110506
110554
  return ast.kind === "column" ? `${ast.tableName}.${ast.columnName}` : undefined;
110507
110555
  };
110556
+ var sameDbType = (left, right) => left.dialect === right.dialect && left.kind === right.kind;
110557
+ var jsonPathPredicateKeyOfExpression = (value) => {
110558
+ const ast = astOf(value);
110559
+ switch (ast.kind) {
110560
+ case "jsonGetText":
110561
+ case "jsonPathText":
110562
+ case "jsonAccessText":
110563
+ case "jsonTraverseText": {
110564
+ const jsonAst = ast;
110565
+ const segments = jsonAst.segments;
110566
+ if (segments.length === 0 || segments.length > 8) {
110567
+ return;
110568
+ }
110569
+ const path = [];
110570
+ for (const segment of segments) {
110571
+ if (typeof segment !== "object" || segment === null || segment.kind !== "key") {
110572
+ return;
110573
+ }
110574
+ path.push(segment.key);
110575
+ }
110576
+ if (path.length === 0) {
110577
+ return;
110578
+ }
110579
+ const baseKey = columnKeyOfExpression(jsonAst.base);
110580
+ return baseKey === undefined ? undefined : `${baseKey}#json:${path.join(".")}`;
110581
+ }
110582
+ default:
110583
+ return;
110584
+ }
110585
+ };
110586
+ var predicateKeyOfExpression = (value) => columnKeyOfExpression(value) ?? castPredicateKeyOfExpression(value) ?? jsonPathPredicateKeyOfExpression(value);
110587
+ var castPredicateKeyOfExpression = (value) => {
110588
+ const ast = astOf(value);
110589
+ if (ast.kind !== "cast") {
110590
+ return;
110591
+ }
110592
+ const source = ast.value;
110593
+ return sameDbType(source[TypeId].dbType, ast.target) ? predicateKeyOfExpression(source) : undefined;
110594
+ };
110508
110595
  var valueKeyOfLiteral = (value) => {
110509
110596
  if (typeof value === "string") {
110510
110597
  return `string:${value}`;
@@ -110524,7 +110611,7 @@ var valueKeyOfLiteral = (value) => {
110524
110611
  return "unknown";
110525
110612
  };
110526
110613
  var nonNullFactsOfExpression = (value) => {
110527
- const key = columnKeyOfExpression(value);
110614
+ const key = predicateKeyOfExpression(value);
110528
110615
  return key === undefined ? undefined : atomFormula({ kind: "is-not-null", key });
110529
110616
  };
110530
110617
  var combineFacts = (left, right) => {
@@ -110537,8 +110624,8 @@ var combineFacts = (left, right) => {
110537
110624
  return andFormula(left, right);
110538
110625
  };
110539
110626
  var formulaOfEq = (left, right) => {
110540
- const leftKey = columnKeyOfExpression(left);
110541
- const rightKey = columnKeyOfExpression(right);
110627
+ const leftKey = predicateKeyOfExpression(left);
110628
+ const rightKey = predicateKeyOfExpression(right);
110542
110629
  const leftAst = astOf(left);
110543
110630
  const rightAst = astOf(right);
110544
110631
  const leftLiteral = leftAst.kind === "literal" ? leftAst.value : undefined;
@@ -110585,8 +110672,8 @@ var formulaOfEq = (left, right) => {
110585
110672
  });
110586
110673
  };
110587
110674
  var formulaOfNeq = (left, right) => {
110588
- const leftKey = columnKeyOfExpression(left);
110589
- const rightKey = columnKeyOfExpression(right);
110675
+ const leftKey = predicateKeyOfExpression(left);
110676
+ const rightKey = predicateKeyOfExpression(right);
110590
110677
  const leftAst = astOf(left);
110591
110678
  const rightAst = astOf(right);
110592
110679
  const leftLiteral = leftAst.kind === "literal" ? leftAst.value : undefined;
@@ -110629,8 +110716,8 @@ var formulaOfNeq = (left, right) => {
110629
110716
  return combineFacts(nonNullFactsOfExpression(left), nonNullFactsOfExpression(right));
110630
110717
  };
110631
110718
  var formulaOfIsNotDistinctFrom = (left, right) => {
110632
- const leftKey = columnKeyOfExpression(left);
110633
- const rightKey = columnKeyOfExpression(right);
110719
+ const leftKey = predicateKeyOfExpression(left);
110720
+ const rightKey = predicateKeyOfExpression(right);
110634
110721
  const leftAst = astOf(left);
110635
110722
  const rightAst = astOf(right);
110636
110723
  const leftLiteral = leftAst.kind === "literal" ? leftAst.value : undefined;
@@ -110736,11 +110823,11 @@ var formulaOfExpression = (value) => {
110736
110823
  }
110737
110824
  return unknownTag("literal:non-boolean");
110738
110825
  case "isNull": {
110739
- const key = columnKeyOfExpression(ast.value);
110826
+ const key = predicateKeyOfExpression(ast.value);
110740
110827
  return key === undefined ? unknownTag("isNull:unsupported") : atomFormula({ kind: "is-null", key });
110741
110828
  }
110742
110829
  case "isNotNull": {
110743
- const key = columnKeyOfExpression(ast.value);
110830
+ const key = predicateKeyOfExpression(ast.value);
110744
110831
  return key === undefined ? unknownTag("isNotNull:unsupported") : atomFormula({ kind: "is-not-null", key });
110745
110832
  }
110746
110833
  case "not":
@@ -110759,7 +110846,15 @@ var formulaOfExpression = (value) => {
110759
110846
  return anyFormula(ast.values.map((value2) => formulaOfExpression(value2)));
110760
110847
  case "in": {
110761
110848
  const [left, ...rest] = ast.values;
110762
- return left === undefined ? falseFormula() : anyFormula(rest.map((value2) => formulaOfEq(left, value2)));
110849
+ if (left === undefined) {
110850
+ return falseFormula();
110851
+ }
110852
+ const key = predicateKeyOfExpression(left);
110853
+ const literalValues = rest.map((entry) => {
110854
+ const entryAst = astOf(entry);
110855
+ return entryAst.kind === "literal" && entryAst.value !== null ? valueKeyOfLiteral(entryAst.value) : undefined;
110856
+ });
110857
+ return key !== undefined && literalValues.every((entry) => entry !== undefined) ? atomFormula({ kind: "literal-set", key, values: literalValues }) : anyFormula(rest.map((value2) => formulaOfEq(left, value2)));
110763
110858
  }
110764
110859
  case "notIn": {
110765
110860
  const [left, ...rest] = ast.values;
@@ -110823,6 +110918,7 @@ var makeExpression = (state, ast) => {
110823
110918
  runtime: state.runtime,
110824
110919
  dbType: state.dbType,
110825
110920
  runtimeSchema: state.runtimeSchema,
110921
+ driverValueMapping: state.driverValueMapping,
110826
110922
  nullability: state.nullability,
110827
110923
  dialect: state.dialect,
110828
110924
  kind: state.kind ?? "scalar",
@@ -110831,7 +110927,7 @@ var makeExpression = (state, ast) => {
110831
110927
  expression[TypeId2] = ast;
110832
110928
  return expression;
110833
110929
  };
110834
- var makePlan = (state, ast, _assumptions, _capabilities, _statement, _target, _insertState) => {
110930
+ var makePlan = (state, ast, _assumptions, _capabilities, _statement, _target, _insertState, _facts) => {
110835
110931
  const plan = Object.create(PlanProto);
110836
110932
  Object.defineProperty(plan, "pipe", {
110837
110933
  configurable: true,
@@ -110847,6 +110943,7 @@ var makePlan = (state, ast, _assumptions, _capabilities, _statement, _target, _i
110847
110943
  availableNames: undefined,
110848
110944
  grouped: undefined,
110849
110945
  assumptions: _assumptions ?? trueFormula(),
110946
+ facts: _facts ?? undefined,
110850
110947
  capabilities: undefined,
110851
110948
  statement: _statement ?? "select",
110852
110949
  target: _target ?? undefined,
@@ -112326,6 +112423,34 @@ var toDialectExpression = (value) => {
112326
112423
  }
112327
112424
  return literal(value);
112328
112425
  };
112426
+ var retargetLiteralExpression = (value, target) => {
112427
+ const ast = value[TypeId2];
112428
+ if (ast.kind !== "literal") {
112429
+ return value;
112430
+ }
112431
+ const targetState = target[TypeId];
112432
+ return makeExpression({
112433
+ runtime: value[TypeId].runtime,
112434
+ dbType: targetState.dbType,
112435
+ runtimeSchema: targetState.runtimeSchema,
112436
+ driverValueMapping: targetState.driverValueMapping,
112437
+ nullability: value[TypeId].nullability,
112438
+ dialect: targetState.dialect,
112439
+ kind: "scalar",
112440
+ dependencies: {}
112441
+ }, ast);
112442
+ };
112443
+ var alignBinaryPredicateExpressions = (left, right) => {
112444
+ const leftAst = left[TypeId2];
112445
+ const rightAst = right[TypeId2];
112446
+ if (leftAst.kind === "literal" && rightAst.kind !== "literal") {
112447
+ return [retargetLiteralExpression(left, right), right];
112448
+ }
112449
+ if (rightAst.kind === "literal" && leftAst.kind !== "literal") {
112450
+ return [left, retargetLiteralExpression(right, left)];
112451
+ }
112452
+ return [left, right];
112453
+ };
112329
112454
  var toDialectStringExpression = (value) => typeof value === "string" ? literal(value) : value;
112330
112455
  var toDialectNumericExpression = (value) => typeof value === "number" ? literal(value) : value;
112331
112456
  var flattenVariadicBooleanExpressions = (kind, values) => {
@@ -112394,8 +112519,7 @@ var extractRequiredFromDialectNumericInputRuntime = (value) => {
112394
112519
  return Object.keys(expression[TypeId].dependencies);
112395
112520
  };
112396
112521
  var buildBinaryPredicate = (left, right, kind, nullability = "maybe") => {
112397
- const leftExpression = toDialectExpression(left);
112398
- const rightExpression = toDialectExpression(right);
112522
+ const [leftExpression, rightExpression] = alignBinaryPredicateExpressions(toDialectExpression(left), toDialectExpression(right));
112399
112523
  return makeExpression({
112400
112524
  runtime: true,
112401
112525
  dbType: profile.boolDb,
@@ -112411,16 +112535,18 @@ var buildBinaryPredicate = (left, right, kind, nullability = "maybe") => {
112411
112535
  };
112412
112536
  var buildVariadicPredicate = (values, kind) => {
112413
112537
  const expressions = values.map((value) => toDialectExpression(value));
112538
+ const [head, ...tail] = expressions;
112539
+ const alignedExpressions = head !== undefined && (kind === "in" || kind === "notIn" || kind === "between") ? [head, ...tail.map((value) => retargetLiteralExpression(value, head))] : expressions;
112414
112540
  return makeExpression({
112415
112541
  runtime: true,
112416
112542
  dbType: profile.boolDb,
112417
112543
  nullability: "maybe",
112418
- dialect: expressions.find((value) => value[TypeId].dialect !== undefined)?.[TypeId].dialect ?? profile.dialect,
112544
+ dialect: alignedExpressions.find((value) => value[TypeId].dialect !== undefined)?.[TypeId].dialect ?? profile.dialect,
112419
112545
  kind: "scalar",
112420
- dependencies: mergeManyDependencies(expressions)
112546
+ dependencies: mergeManyDependencies(alignedExpressions)
112421
112547
  }, {
112422
112548
  kind,
112423
- values: expressions
112549
+ values: alignedExpressions
112424
112550
  });
112425
112551
  };
112426
112552
  var eq = (...args) => {
@@ -112541,6 +112667,7 @@ var cast = (value, target) => {
112541
112667
  runtime: undefined,
112542
112668
  dbType: target,
112543
112669
  runtimeSchema: undefined,
112670
+ driverValueMapping: target.driverValueMapping,
112544
112671
  nullability: expression[TypeId].nullability,
112545
112672
  dialect: expression[TypeId].dialect,
112546
112673
  kind: expression[TypeId].kind,
@@ -112590,6 +112717,10 @@ var custom2 = (kind) => ({
112590
112717
  dialect: profile.dialect,
112591
112718
  kind
112592
112719
  });
112720
+ var driverValueMapping3 = (dbType, mapping) => ({
112721
+ ...dbType,
112722
+ driverValueMapping: mapping
112723
+ });
112593
112724
  var type = {
112594
112725
  ...profile.type,
112595
112726
  array: array2,
@@ -112599,7 +112730,8 @@ var type = {
112599
112730
  domain,
112600
112731
  enum: enum_,
112601
112732
  set,
112602
- custom: custom2
112733
+ custom: custom2,
112734
+ driverValueMapping: driverValueMapping3
112603
112735
  };
112604
112736
  var makeJsonDb = (kind) => ({
112605
112737
  dialect: profile.dialect,
@@ -113112,6 +113244,8 @@ var scalar = (plan) => {
113112
113244
  return makeExpression({
113113
113245
  runtime: undefined,
113114
113246
  dbType: expression[TypeId].dbType,
113247
+ runtimeSchema: expression[TypeId].runtimeSchema,
113248
+ driverValueMapping: expression[TypeId].driverValueMapping,
113115
113249
  nullability: "maybe",
113116
113250
  dialect: profile.dialect,
113117
113251
  kind: "scalar",
@@ -113340,6 +113474,7 @@ var excluded = (value) => {
113340
113474
  runtime: undefined,
113341
113475
  dbType: value[TypeId].dbType,
113342
113476
  runtimeSchema: value[TypeId].runtimeSchema,
113477
+ driverValueMapping: value[TypeId].driverValueMapping,
113343
113478
  nullability: value[TypeId].nullability,
113344
113479
  dialect: profile.dialect,
113345
113480
  kind: "scalar",
@@ -113351,11 +113486,13 @@ var excluded = (value) => {
113351
113486
  };
113352
113487
  var toMutationValueExpression = (value, column2) => {
113353
113488
  if (value !== null && typeof value === "object" && TypeId in value) {
113354
- return value;
113489
+ return retargetLiteralExpression(value, column2);
113355
113490
  }
113356
113491
  return makeExpression({
113357
113492
  runtime: value,
113358
113493
  dbType: column2[TypeId].dbType,
113494
+ runtimeSchema: column2[TypeId].runtimeSchema,
113495
+ driverValueMapping: column2[TypeId].driverValueMapping,
113359
113496
  nullability: value === null ? "always" : "never",
113360
113497
  dialect: column2[TypeId].dialect,
113361
113498
  kind: "scalar",
@@ -113397,6 +113534,7 @@ var makeColumnReferenceSelection = (alias2, selection) => {
113397
113534
  runtime: undefined,
113398
113535
  dbType: state.dbType,
113399
113536
  runtimeSchema: state.runtimeSchema,
113537
+ driverValueMapping: state.driverValueMapping,
113400
113538
  nullability: state.nullability,
113401
113539
  dialect: state.dialect,
113402
113540
  kind: "scalar",
@@ -113785,10 +113923,13 @@ import * as Stream2 from "effect/Stream";
113785
113923
  import * as Chunk from "effect/Chunk";
113786
113924
  import * as Effect from "effect/Effect";
113787
113925
  import * as Option from "effect/Option";
113788
- import * as Schema8 from "effect/Schema";
113926
+ import * as Schema9 from "effect/Schema";
113789
113927
  import * as SqlClient from "@effect/sql/SqlClient";
113790
113928
  import * as Stream from "effect/Stream";
113791
113929
 
113930
+ // src/internal/runtime/driver-value-mapping.ts
113931
+ import * as Schema7 from "effect/Schema";
113932
+
113792
113933
  // src/internal/runtime/normalize.ts
113793
113934
  var isRecord2 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
113794
113935
  var pad = (value, width = 2) => value.toString().padStart(width, "0");
@@ -114080,20 +114221,141 @@ var normalizeDbValue = (dbType, value) => {
114080
114221
  }
114081
114222
  };
114082
114223
 
114224
+ // src/internal/runtime/driver-value-mapping.ts
114225
+ var runtimeTagOfDbType = (dbType) => {
114226
+ if (dbType === undefined) {
114227
+ return;
114228
+ }
114229
+ if ("base" in dbType) {
114230
+ return runtimeTagOfDbType(dbType.base);
114231
+ }
114232
+ if ("element" in dbType) {
114233
+ return "array";
114234
+ }
114235
+ if ("fields" in dbType) {
114236
+ return "record";
114237
+ }
114238
+ if ("variant" in dbType && dbType.variant === "json") {
114239
+ return "json";
114240
+ }
114241
+ if ("variant" in dbType && (dbType.variant === "enum" || dbType.variant === "set")) {
114242
+ return "string";
114243
+ }
114244
+ return dbType.runtime;
114245
+ };
114246
+ var familyOfDbType = (dbType) => {
114247
+ if (dbType === undefined) {
114248
+ return;
114249
+ }
114250
+ if ("base" in dbType) {
114251
+ return familyOfDbType(dbType.base);
114252
+ }
114253
+ return dbType.family;
114254
+ };
114255
+ var mappingCandidates = (context) => {
114256
+ const dbType = context.dbType;
114257
+ const runtimeTag = runtimeTagOfDbType(dbType);
114258
+ const family = familyOfDbType(dbType);
114259
+ return [
114260
+ context.driverValueMapping,
114261
+ dbType?.driverValueMapping,
114262
+ dbType === undefined ? undefined : context.valueMappings?.[dbType.kind],
114263
+ family === undefined ? undefined : context.valueMappings?.[family],
114264
+ runtimeTag === undefined ? undefined : context.valueMappings?.[runtimeTag]
114265
+ ];
114266
+ };
114267
+ var findMapping = (context, key2) => {
114268
+ for (const candidate of mappingCandidates(context)) {
114269
+ const value = candidate?.[key2];
114270
+ if (value !== undefined) {
114271
+ return value;
114272
+ }
114273
+ }
114274
+ return;
114275
+ };
114276
+ var encodeWithSchema = (schema4, value) => {
114277
+ if (schema4 === undefined) {
114278
+ return { value, encoded: false };
114279
+ }
114280
+ if (!Schema7.is(schema4)(value)) {
114281
+ return { value, encoded: false };
114282
+ }
114283
+ return {
114284
+ value: Schema7.encodeUnknownSync(schema4)(value),
114285
+ encoded: true
114286
+ };
114287
+ };
114288
+ var toDriverValue = (value, context) => {
114289
+ if (value === null) {
114290
+ return null;
114291
+ }
114292
+ const dbType = context.dbType;
114293
+ const encoded = encodeWithSchema(context.runtimeSchema, value);
114294
+ let current = encoded.value;
114295
+ const custom3 = findMapping(context, "toDriver");
114296
+ if (custom3 !== undefined && dbType !== undefined) {
114297
+ return custom3(current, dbType);
114298
+ }
114299
+ return dbType === undefined || !encoded.encoded ? current : normalizeDbValue(dbType, current);
114300
+ };
114301
+ var fromDriverValue = (value, context) => {
114302
+ if (value === null) {
114303
+ return null;
114304
+ }
114305
+ const dbType = context.dbType;
114306
+ const custom3 = findMapping(context, "fromDriver");
114307
+ if (custom3 !== undefined && dbType !== undefined) {
114308
+ return custom3(value, dbType);
114309
+ }
114310
+ return dbType === undefined ? value : normalizeDbValue(dbType, value);
114311
+ };
114312
+ var textCast = (sql) => `(${sql})::text`;
114313
+ var postgresJsonSql = (sql, dbType) => {
114314
+ const runtimeTag = runtimeTagOfDbType(dbType);
114315
+ switch (runtimeTag) {
114316
+ case "bigintString":
114317
+ case "decimalString":
114318
+ case "localDate":
114319
+ case "localTime":
114320
+ case "offsetTime":
114321
+ case "localDateTime":
114322
+ case "instant":
114323
+ case "year":
114324
+ return textCast(sql);
114325
+ case "bytes":
114326
+ return `encode(${sql}, 'base64')`;
114327
+ default:
114328
+ return sql;
114329
+ }
114330
+ };
114331
+ var renderSelectSql = (sql, context) => {
114332
+ const dbType = context.dbType;
114333
+ const custom3 = findMapping(context, "selectSql");
114334
+ return custom3 !== undefined && dbType !== undefined ? custom3(sql, dbType) : sql;
114335
+ };
114336
+ var renderJsonSelectSql = (sql, context) => {
114337
+ const dbType = context.dbType;
114338
+ const custom3 = findMapping(context, "jsonSelectSql");
114339
+ if (custom3 !== undefined && dbType !== undefined) {
114340
+ return custom3(sql, dbType);
114341
+ }
114342
+ return context.dialect === "postgres" && dbType !== undefined ? postgresJsonSql(sql, dbType) : sql;
114343
+ };
114344
+
114083
114345
  // src/internal/runtime/schema.ts
114084
- import * as Schema7 from "effect/Schema";
114346
+ import * as Schema8 from "effect/Schema";
114085
114347
  import * as SchemaAST from "effect/SchemaAST";
114086
114348
  var schemaCache = new WeakMap;
114087
114349
  var runtimeSchemaForTag = (tag) => {
114088
114350
  switch (tag) {
114089
114351
  case "string":
114090
- return Schema7.String;
114352
+ return Schema8.String;
114091
114353
  case "number":
114092
- return Schema7.Number;
114354
+ return Schema8.Number;
114093
114355
  case "bigintString":
114094
114356
  return BigIntStringSchema;
114095
114357
  case "boolean":
114096
- return Schema7.Boolean;
114358
+ return Schema8.Boolean;
114097
114359
  case "json":
114098
114360
  return JsonValueSchema;
114099
114361
  case "localDate":
@@ -114111,16 +114373,16 @@ var runtimeSchemaForTag = (tag) => {
114111
114373
  case "decimalString":
114112
114374
  return DecimalStringSchema;
114113
114375
  case "bytes":
114114
- return Schema7.Uint8ArrayFromSelf;
114376
+ return Schema8.Uint8ArrayFromSelf;
114115
114377
  case "array":
114116
- return Schema7.Array(Schema7.Unknown);
114378
+ return Schema8.Array(Schema8.Unknown);
114117
114379
  case "record":
114118
- return Schema7.Record({
114119
- key: Schema7.String,
114120
- value: Schema7.Unknown
114380
+ return Schema8.Record({
114381
+ key: Schema8.String,
114382
+ value: Schema8.Unknown
114121
114383
  });
114122
114384
  case "null":
114123
- return Schema7.Null;
114385
+ return Schema8.Null;
114124
114386
  case "unknown":
114125
114387
  return;
114126
114388
  }
@@ -114133,22 +114395,22 @@ var runtimeSchemaForDbType = (dbType) => {
114133
114395
  return runtimeSchemaForDbType(dbType.base);
114134
114396
  }
114135
114397
  if ("element" in dbType) {
114136
- return Schema7.Array(runtimeSchemaForDbType(dbType.element) ?? Schema7.Unknown);
114398
+ return Schema8.Array(runtimeSchemaForDbType(dbType.element) ?? Schema8.Unknown);
114137
114399
  }
114138
114400
  if ("fields" in dbType) {
114139
- const fields2 = Object.fromEntries(Object.entries(dbType.fields).map(([key2, field]) => [key2, runtimeSchemaForDbType(field) ?? Schema7.Unknown]));
114140
- return Schema7.Struct(fields2);
114401
+ const fields2 = Object.fromEntries(Object.entries(dbType.fields).map(([key2, field]) => [key2, runtimeSchemaForDbType(field) ?? Schema8.Unknown]));
114402
+ return Schema8.Struct(fields2);
114141
114403
  }
114142
114404
  if ("variant" in dbType && dbType.variant === "json") {
114143
114405
  return JsonValueSchema;
114144
114406
  }
114145
114407
  if ("variant" in dbType && (dbType.variant === "enum" || dbType.variant === "set")) {
114146
- return Schema7.String;
114408
+ return Schema8.String;
114147
114409
  }
114148
114410
  const runtimeTag = runtimeTagOfBaseDbType2(dbType);
114149
114411
  return runtimeTag === undefined ? undefined : runtimeSchemaForTag(runtimeTag);
114150
114412
  };
114151
- var makeSchemaFromAst = (ast) => Schema7.make(ast);
114413
+ var makeSchemaFromAst = (ast) => Schema8.make(ast);
114152
114414
  var unionAst = (asts) => {
114153
114415
  if (asts.length === 0) {
114154
114416
  return;
@@ -114246,7 +114508,7 @@ var unionSchemas = (schemas) => {
114246
114508
  if (resolved.length === 1) {
114247
114509
  return resolved[0];
114248
114510
  }
114249
- return Schema7.Union(...resolved);
114511
+ return Schema8.Union(...resolved);
114250
114512
  };
114251
114513
  var firstSelectedExpression = (plan) => {
114252
114514
  const selection = getAst(plan).select;
@@ -114281,9 +114543,9 @@ var jsonCompatibleSchema = (schema4) => {
114281
114543
  };
114282
114544
  var buildStructSchema = (entries, context) => {
114283
114545
  const fields2 = Object.fromEntries(entries.map((entry) => [entry.key, expressionRuntimeSchema(entry.value, context) ?? JsonValueSchema]));
114284
- return Schema7.Struct(fields2);
114546
+ return Schema8.Struct(fields2);
114285
114547
  };
114286
- var buildTupleSchema = (values2, context) => Schema7.Tuple(...values2.map((value) => expressionRuntimeSchema(value, context) ?? JsonValueSchema));
114548
+ var buildTupleSchema = (values2, context) => Schema8.Tuple(...values2.map((value) => expressionRuntimeSchema(value, context) ?? JsonValueSchema));
114287
114549
  var deriveCaseSchema = (ast, context) => {
114288
114550
  if (context === undefined) {
114289
114551
  return unionSchemas([
@@ -114323,10 +114585,10 @@ var deriveRuntimeSchema = (expression, context) => {
114323
114585
  return state.runtimeSchema;
114324
114586
  case "literal":
114325
114587
  if (ast.value === null) {
114326
- return Schema7.Null;
114588
+ return Schema8.Null;
114327
114589
  }
114328
114590
  if (typeof ast.value === "string" || typeof ast.value === "number" || typeof ast.value === "boolean") {
114329
- return Schema7.Literal(ast.value);
114591
+ return Schema8.Literal(ast.value);
114330
114592
  }
114331
114593
  return runtimeSchemaForDbType(state.dbType);
114332
114594
  case "cast":
@@ -114362,7 +114624,7 @@ var deriveRuntimeSchema = (expression, context) => {
114362
114624
  case "jsonHasAllKeys":
114363
114625
  case "jsonPathExists":
114364
114626
  case "jsonPathMatch":
114365
- return Schema7.Boolean;
114627
+ return Schema8.Boolean;
114366
114628
  case "upper":
114367
114629
  case "lower":
114368
114630
  case "concat":
@@ -114371,10 +114633,10 @@ var deriveRuntimeSchema = (expression, context) => {
114371
114633
  case "jsonAccessText":
114372
114634
  case "jsonTraverseText":
114373
114635
  case "jsonTypeOf":
114374
- return Schema7.String;
114636
+ return Schema8.String;
114375
114637
  case "count":
114376
114638
  case "jsonLength":
114377
- return Schema7.Number;
114639
+ return Schema8.Number;
114378
114640
  case "max":
114379
114641
  case "min":
114380
114642
  return expressionRuntimeSchema(ast.value, context);
@@ -114387,7 +114649,7 @@ var deriveRuntimeSchema = (expression, context) => {
114387
114649
  return selection === undefined ? undefined : expressionRuntimeSchema(selection, context);
114388
114650
  }
114389
114651
  case "window":
114390
- return ast.function === "over" && ast.value !== undefined ? expressionRuntimeSchema(ast.value, context) : Schema7.Number;
114652
+ return ast.function === "over" && ast.value !== undefined ? expressionRuntimeSchema(ast.value, context) : Schema8.Number;
114391
114653
  case "jsonGet":
114392
114654
  case "jsonPath":
114393
114655
  case "jsonAccess":
@@ -114419,7 +114681,7 @@ var deriveRuntimeSchema = (expression, context) => {
114419
114681
  case "jsonToJsonb":
114420
114682
  return jsonCompatibleSchema(expressionRuntimeSchema(ast.value, context));
114421
114683
  case "jsonKeys":
114422
- return Schema7.Array(Schema7.String);
114684
+ return Schema8.Array(Schema8.String);
114423
114685
  }
114424
114686
  };
114425
114687
  var expressionRuntimeSchema = (expression, context) => {
@@ -114522,11 +114784,17 @@ var effectiveRuntimeNullability = (expression, scope) => {
114522
114784
  }
114523
114785
  return hasOptionalSourceDependency(expression, scope) ? "maybe" : nullability;
114524
114786
  };
114525
- var decodeProjectionValue = (rendered, projection, expression, raw, scope, driverMode) => {
114787
+ var decodeProjectionValue = (rendered, projection, expression, raw, scope, driverMode, valueMappings) => {
114526
114788
  let normalized = raw;
114527
114789
  if (driverMode === "raw") {
114528
114790
  try {
114529
- normalized = normalizeDbValue(expression[TypeId].dbType, raw);
114791
+ normalized = fromDriverValue(raw, {
114792
+ dialect: rendered.dialect,
114793
+ dbType: expression[TypeId].dbType,
114794
+ runtimeSchema: expression[TypeId].runtimeSchema,
114795
+ driverValueMapping: expression[TypeId].driverValueMapping,
114796
+ valueMappings
114797
+ });
114530
114798
  } catch (cause) {
114531
114799
  throw makeRowDecodeError(rendered, projection, expression, raw, "normalize", cause);
114532
114800
  }
@@ -114545,11 +114813,11 @@ var decodeProjectionValue = (rendered, projection, expression, raw, scope, drive
114545
114813
  if (schema4 === undefined) {
114546
114814
  return normalized;
114547
114815
  }
114548
- if (Schema8.is(schema4)(normalized)) {
114816
+ if (Schema9.is(schema4)(normalized)) {
114549
114817
  return normalized;
114550
114818
  }
114551
114819
  try {
114552
- return Schema8.decodeUnknownSync(schema4)(normalized);
114820
+ return Schema9.decodeUnknownSync(schema4)(normalized);
114553
114821
  } catch (cause) {
114554
114822
  throw makeRowDecodeError(rendered, projection, expression, raw, "schema", cause, normalized);
114555
114823
  }
@@ -114558,6 +114826,7 @@ var makeRowDecoder = (rendered, plan, options2 = {}) => {
114558
114826
  const projections = flattenSelection(getAst(plan).select);
114559
114827
  const byAlias = new Map(projections.map((projection) => [projection.alias, projection.expression]));
114560
114828
  const driverMode = options2.driverMode ?? "raw";
114829
+ const valueMappings = options2.valueMappings ?? rendered.valueMappings;
114561
114830
  const scope = resolveImplicationScope(plan[TypeId3].available, getQueryState(plan).assumptions);
114562
114831
  return (row) => {
114563
114832
  const decoded = {};
@@ -114569,7 +114838,7 @@ var makeRowDecoder = (rendered, plan, options2 = {}) => {
114569
114838
  if (expression === undefined) {
114570
114839
  continue;
114571
114840
  }
114572
- setPath2(decoded, projection.path, decodeProjectionValue(rendered, projection, expression, row[projection.alias], scope, driverMode));
114841
+ setPath2(decoded, projection.path, decodeProjectionValue(rendered, projection, expression, row[projection.alias], scope, driverMode, valueMappings));
114573
114842
  }
114574
114843
  return decoded;
114575
114844
  };
@@ -114628,6 +114897,7 @@ function make5(dialect, render) {
114628
114897
  sql: rendered.sql,
114629
114898
  params: rendered.params ?? [],
114630
114899
  projections,
114900
+ valueMappings: rendered.valueMappings,
114631
114901
  dialect,
114632
114902
  [TypeId8]: {
114633
114903
  row: undefined,
@@ -114640,14 +114910,19 @@ function make5(dialect, render) {
114640
114910
 
114641
114911
  // src/mysql/internal/dialect.ts
114642
114912
  var quoteIdentifier = (value) => `\`${value.replaceAll("`", "``")}\``;
114643
- var renderLiteral = (value, state) => {
114644
- if (value === null) {
114913
+ var renderLiteral = (value, state, context = {}) => {
114914
+ const driverValue = toDriverValue(value, {
114915
+ dialect: "mysql",
114916
+ valueMappings: state.valueMappings,
114917
+ ...context
114918
+ });
114919
+ if (driverValue === null) {
114645
114920
  return "null";
114646
114921
  }
114647
- if (typeof value === "boolean") {
114648
- return value ? "true" : "false";
114922
+ if (typeof driverValue === "boolean") {
114923
+ return driverValue ? "true" : "false";
114649
114924
  }
114650
- state.params.push(value);
114925
+ state.params.push(driverValue);
114651
114926
  return "?";
114652
114927
  };
114653
114928
  var mysqlDialect = {
@@ -114941,6 +115216,21 @@ var renderPostgresJsonValue = (value, state, dialect) => {
114941
115216
  const rendered = renderExpression(value, state, dialect);
114942
115217
  return value[TypeId].dbType.kind === "jsonb" ? rendered : `cast(${rendered} as jsonb)`;
114943
115218
  };
115219
+ var expressionDriverContext = (expression, state, dialect) => ({
115220
+ dialect: dialect.name,
115221
+ valueMappings: state.valueMappings,
115222
+ dbType: expression[TypeId].dbType,
115223
+ runtimeSchema: expression[TypeId].runtimeSchema,
115224
+ driverValueMapping: expression[TypeId].driverValueMapping
115225
+ });
115226
+ var renderJsonInputExpression = (expression, state, dialect) => renderJsonSelectSql(renderExpression(expression, state, dialect), expressionDriverContext(expression, state, dialect));
115227
+ var encodeArrayValues = (values2, column2, state, dialect) => values2.map((value) => toDriverValue(value, {
115228
+ dialect: dialect.name,
115229
+ valueMappings: state.valueMappings,
115230
+ dbType: column2.metadata.dbType,
115231
+ runtimeSchema: column2.schema,
115232
+ driverValueMapping: column2.metadata.driverValueMapping
115233
+ }));
114944
115234
  var renderPostgresJsonKind = (value) => value[TypeId].dbType.kind === "jsonb" ? "jsonb" : "json";
114945
115235
  var renderJsonOpaquePath = (value, state, dialect) => {
114946
115236
  if (isJsonPathValue2(value)) {
@@ -115069,7 +115359,7 @@ var renderJsonExpression = (expression, ast, state, dialect) => {
115069
115359
  const entries = Array.isArray(ast.entries) ? ast.entries : [];
115070
115360
  const renderedEntries = entries.flatMap((entry) => [
115071
115361
  dialect.renderLiteral(entry.key, state),
115072
- renderExpression(entry.value, state, dialect)
115362
+ renderJsonInputExpression(entry.value, state, dialect)
115073
115363
  ]);
115074
115364
  if (dialect.name === "postgres") {
115075
115365
  return `${postgresExpressionKind === "jsonb" ? "jsonb" : "json"}_build_object(${renderedEntries.join(", ")})`;
@@ -115081,7 +115371,7 @@ var renderJsonExpression = (expression, ast, state, dialect) => {
115081
115371
  }
115082
115372
  case "jsonBuildArray": {
115083
115373
  const values2 = Array.isArray(ast.values) ? ast.values : [];
115084
- const renderedValues = values2.map((value) => renderExpression(value, state, dialect)).join(", ");
115374
+ const renderedValues = values2.map((value) => renderJsonInputExpression(value, state, dialect)).join(", ");
115085
115375
  if (dialect.name === "postgres") {
115086
115376
  return `${postgresExpressionKind === "jsonb" ? "jsonb" : "json"}_build_array(${renderedValues})`;
115087
115377
  }
@@ -115095,7 +115385,7 @@ var renderJsonExpression = (expression, ast, state, dialect) => {
115095
115385
  return;
115096
115386
  }
115097
115387
  if (dialect.name === "postgres") {
115098
- return `to_json(${renderExpression(base, state, dialect)})`;
115388
+ return `to_json(${renderJsonInputExpression(base, state, dialect)})`;
115099
115389
  }
115100
115390
  if (dialect.name === "mysql") {
115101
115391
  return `cast(${renderExpression(base, state, dialect)} as json)`;
@@ -115106,7 +115396,7 @@ var renderJsonExpression = (expression, ast, state, dialect) => {
115106
115396
  return;
115107
115397
  }
115108
115398
  if (dialect.name === "postgres") {
115109
- return `to_jsonb(${renderExpression(base, state, dialect)})`;
115399
+ return `to_jsonb(${renderJsonInputExpression(base, state, dialect)})`;
115110
115400
  }
115111
115401
  if (dialect.name === "mysql") {
115112
115402
  return `cast(${renderExpression(base, state, dialect)} as json)`;
@@ -115293,7 +115583,7 @@ var renderSelectionList = (selection, state, dialect, validateAggregation) => {
115293
115583
  }
115294
115584
  const flattened = flattenSelection(selection);
115295
115585
  const projections = selectionProjections(selection);
115296
- const sql = flattened.map(({ expression, alias: alias2 }) => `${renderExpression(expression, state, dialect)} as ${dialect.quoteIdentifier(alias2)}`).join(", ");
115586
+ const sql = flattened.map(({ expression, alias: alias2 }) => `${renderSelectSql(renderExpression(expression, state, dialect), expressionDriverContext(expression, state, dialect))} as ${dialect.quoteIdentifier(alias2)}`).join(", ");
115297
115587
  return {
115298
115588
  sql,
115299
115589
  projections
@@ -115373,11 +115663,11 @@ var renderQueryAst = (ast, state, dialect) => {
115373
115663
  if (dialect.name === "postgres") {
115374
115664
  const table = targetSource.source;
115375
115665
  const fields2 = table[TypeId4].fields;
115376
- const rendered = unnestSource.values.map((entry) => `cast(${dialect.renderLiteral(entry.values, state)} as ${renderCastType(dialect, fields2[entry.columnName].metadata.dbType)}[])`).join(", ");
115666
+ const rendered = unnestSource.values.map((entry) => `cast(${dialect.renderLiteral(encodeArrayValues(entry.values, fields2[entry.columnName], state, dialect), state)} as ${renderCastType(dialect, fields2[entry.columnName].metadata.dbType)}[])`).join(", ");
115377
115667
  sql += ` (${columns}) select * from unnest(${rendered})`;
115378
115668
  } else {
115379
115669
  const rowCount = unnestSource.values[0]?.values.length ?? 0;
115380
- const rows = Array.from({ length: rowCount }, (_, index4) => `(${unnestSource.values.map((entry) => dialect.renderLiteral(entry.values[index4], state)).join(", ")})`).join(", ");
115670
+ const rows = Array.from({ length: rowCount }, (_, index4) => `(${unnestSource.values.map((entry) => dialect.renderLiteral(entry.values[index4], state, targetSource.source[TypeId4].fields[entry.columnName][TypeId])).join(", ")})`).join(", ");
115381
115671
  sql += ` (${columns}) values ${rows}`;
115382
115672
  }
115383
115673
  } else {
@@ -115638,7 +115928,7 @@ var renderExpression = (expression, state, dialect) => {
115638
115928
  case "column":
115639
115929
  return ast.tableName.length === 0 ? dialect.quoteIdentifier(ast.columnName) : `${dialect.quoteIdentifier(ast.tableName)}.${dialect.quoteIdentifier(ast.columnName)}`;
115640
115930
  case "literal":
115641
- return dialect.renderLiteral(ast.value, state);
115931
+ return dialect.renderLiteral(ast.value, state, expression[TypeId]);
115642
115932
  case "excluded":
115643
115933
  return dialect.name === "mysql" ? `values(${dialect.quoteIdentifier(ast.columnName)})` : `excluded.${dialect.quoteIdentifier(ast.columnName)}`;
115644
115934
  case "cast":
@@ -115774,9 +116064,10 @@ var renderExpression = (expression, state, dialect) => {
115774
116064
  };
115775
116065
 
115776
116066
  // src/mysql/internal/renderer.ts
115777
- var renderMysqlPlan = (plan) => {
116067
+ var renderMysqlPlan = (plan, options2 = {}) => {
115778
116068
  const state = {
115779
116069
  params: [],
116070
+ valueMappings: options2.valueMappings,
115780
116071
  ctes: [],
115781
116072
  cteNames: new Set
115782
116073
  };
@@ -115784,7 +116075,8 @@ var renderMysqlPlan = (plan) => {
115784
116075
  return {
115785
116076
  sql: rendered.sql,
115786
116077
  params: state.params,
115787
- projections: rendered.projections
116078
+ projections: rendered.projections,
116079
+ valueMappings: state.valueMappings
115788
116080
  };
115789
116081
  };
115790
116082
 
@@ -115794,12 +116086,12 @@ var withSavepoint2 = withSavepoint;
115794
116086
  function driver2(executeOrHandlers) {
115795
116087
  return driver("mysql", executeOrHandlers);
115796
116088
  }
115797
- var fromDriver = (renderer, sqlDriver, driverMode = "raw") => ({
116089
+ var fromDriver = (renderer, sqlDriver, driverMode = "raw", valueMappings) => ({
115798
116090
  dialect: "mysql",
115799
116091
  execute(plan) {
115800
116092
  const rendered = renderer.render(plan);
115801
116093
  return Effect2.mapError(Effect2.flatMap(sqlDriver.execute(rendered), (rows) => Effect2.try({
115802
- try: () => decodeRows(rendered, plan, rows, { driverMode }),
116094
+ try: () => decodeRows(rendered, plan, rows, { driverMode, valueMappings }),
115803
116095
  catch: (error) => error
115804
116096
  })), (error) => {
115805
116097
  if (typeof error === "object" && error !== null && "_tag" in error && error._tag === "RowDecodeError") {
@@ -115812,7 +116104,7 @@ var fromDriver = (renderer, sqlDriver, driverMode = "raw") => ({
115812
116104
  stream(plan) {
115813
116105
  const rendered = renderer.render(plan);
115814
116106
  return Stream2.mapError(Stream2.mapChunksEffect(sqlDriver.stream(rendered), (rows) => Effect2.try({
115815
- try: () => decodeChunk(rendered, plan, rows, { driverMode }),
116107
+ try: () => decodeChunk(rendered, plan, rows, { driverMode, valueMappings }),
115816
116108
  catch: (error) => error
115817
116109
  })), (error) => {
115818
116110
  if (typeof error === "object" && error !== null && "_tag" in error && error._tag === "RowDecodeError") {
@@ -115829,9 +116121,9 @@ var sqlClientDriver = () => driver2({
115829
116121
  });
115830
116122
  function make6(options2 = {}) {
115831
116123
  if (options2.driver) {
115832
- return fromDriver(options2.renderer ?? make5("mysql", renderMysqlPlan), options2.driver, options2.driverMode);
116124
+ return fromDriver(options2.renderer ?? make5("mysql", (plan) => renderMysqlPlan(plan, { valueMappings: options2.valueMappings })), options2.driver, options2.driverMode, options2.valueMappings);
115833
116125
  }
115834
- return fromDriver(options2.renderer ?? make5("mysql", renderMysqlPlan), sqlClientDriver(), options2.driverMode);
116126
+ return fromDriver(options2.renderer ?? make5("mysql", (plan) => renderMysqlPlan(plan, { valueMappings: options2.valueMappings })), sqlClientDriver(), options2.driverMode, options2.valueMappings);
115835
116127
  }
115836
116128
  var custom3 = (execute) => make4("mysql", execute);
115837
116129
  // src/mysql/query.ts
@@ -115967,7 +116259,7 @@ __export(exports_renderer2, {
115967
116259
  make: () => make8,
115968
116260
  TypeId: () => TypeId8
115969
116261
  });
115970
- var make8 = () => make5("mysql", renderMysqlPlan);
116262
+ var make8 = (options3 = {}) => make5("mysql", (plan) => renderMysqlPlan(plan, options3));
115971
116263
  var mysql = make8();
115972
116264
  export {
115973
116265
  exports_table2 as Table,