@quereus/quereus 4.8.0 → 4.10.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/src/core/database.d.ts +6 -0
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +45 -5
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/core/statement.d.ts.map +1 -1
- package/dist/src/core/statement.js +74 -15
- package/dist/src/core/statement.js.map +1 -1
- package/dist/src/func/builtins/aggregate.d.ts.map +1 -1
- package/dist/src/func/builtins/aggregate.js +88 -35
- package/dist/src/func/builtins/aggregate.js.map +1 -1
- package/dist/src/func/builtins/conversion.d.ts +5 -0
- package/dist/src/func/builtins/conversion.d.ts.map +1 -1
- package/dist/src/func/builtins/conversion.js +16 -2
- package/dist/src/func/builtins/conversion.js.map +1 -1
- package/dist/src/func/builtins/explain.d.ts.map +1 -1
- package/dist/src/func/builtins/explain.js +9 -2
- package/dist/src/func/builtins/explain.js.map +1 -1
- package/dist/src/func/builtins/index.d.ts.map +1 -1
- package/dist/src/func/builtins/index.js +5 -2
- package/dist/src/func/builtins/index.js.map +1 -1
- package/dist/src/func/builtins/scalar.d.ts.map +1 -1
- package/dist/src/func/builtins/scalar.js +4 -2
- package/dist/src/func/builtins/scalar.js.map +1 -1
- package/dist/src/func/builtins/string.d.ts +2 -0
- package/dist/src/func/builtins/string.d.ts.map +1 -1
- package/dist/src/func/builtins/string.js +60 -4
- package/dist/src/func/builtins/string.js.map +1 -1
- package/dist/src/func/registration.d.ts +6 -0
- package/dist/src/func/registration.d.ts.map +1 -1
- package/dist/src/func/registration.js +1 -0
- package/dist/src/func/registration.js.map +1 -1
- package/dist/src/index.d.ts +7 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +21 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/planner/building/constraint-builder.js +1 -1
- package/dist/src/planner/building/constraint-builder.js.map +1 -1
- package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
- package/dist/src/planner/nodes/scalar.js +13 -1
- package/dist/src/planner/nodes/scalar.js.map +1 -1
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -1
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +121 -51
- package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
- package/dist/src/planner/rules/shared/index-style-context.d.ts +14 -4
- package/dist/src/planner/rules/shared/index-style-context.d.ts.map +1 -1
- package/dist/src/planner/rules/shared/index-style-context.js +14 -4
- package/dist/src/planner/rules/shared/index-style-context.js.map +1 -1
- package/dist/src/runtime/emission-context.d.ts +14 -1
- package/dist/src/runtime/emission-context.d.ts.map +1 -1
- package/dist/src/runtime/emission-context.js +17 -5
- package/dist/src/runtime/emission-context.js.map +1 -1
- package/dist/src/runtime/emit/aggregate-setup.d.ts +44 -8
- package/dist/src/runtime/emit/aggregate-setup.d.ts.map +1 -1
- package/dist/src/runtime/emit/aggregate-setup.js +79 -15
- package/dist/src/runtime/emit/aggregate-setup.js.map +1 -1
- package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/aggregate.js +21 -106
- package/dist/src/runtime/emit/aggregate.js.map +1 -1
- package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/alter-table.js +212 -155
- package/dist/src/runtime/emit/alter-table.js.map +1 -1
- package/dist/src/runtime/emit/asof-scan.js +1 -1
- package/dist/src/runtime/emit/asof-scan.js.map +1 -1
- package/dist/src/runtime/emit/assertion-drop-guard.d.ts +26 -12
- package/dist/src/runtime/emit/assertion-drop-guard.d.ts.map +1 -1
- package/dist/src/runtime/emit/assertion-drop-guard.js +45 -26
- package/dist/src/runtime/emit/assertion-drop-guard.js.map +1 -1
- package/dist/src/runtime/emit/assertion-rename-helpers.d.ts +6 -6
- package/dist/src/runtime/emit/assertion-rename-helpers.d.ts.map +1 -1
- package/dist/src/runtime/emit/assertion-rename-helpers.js +18 -20
- package/dist/src/runtime/emit/assertion-rename-helpers.js.map +1 -1
- package/dist/src/runtime/emit/between.d.ts +2 -0
- package/dist/src/runtime/emit/between.d.ts.map +1 -1
- package/dist/src/runtime/emit/between.js +7 -8
- package/dist/src/runtime/emit/between.js.map +1 -1
- package/dist/src/runtime/emit/binary.d.ts +27 -5
- package/dist/src/runtime/emit/binary.d.ts.map +1 -1
- package/dist/src/runtime/emit/binary.js +278 -187
- package/dist/src/runtime/emit/binary.js.map +1 -1
- package/dist/src/runtime/emit/case.d.ts +34 -0
- package/dist/src/runtime/emit/case.d.ts.map +1 -1
- package/dist/src/runtime/emit/case.js +18 -11
- package/dist/src/runtime/emit/case.js.map +1 -1
- package/dist/src/runtime/emit/cast.d.ts +2 -0
- package/dist/src/runtime/emit/cast.d.ts.map +1 -1
- package/dist/src/runtime/emit/cast.js +7 -5
- package/dist/src/runtime/emit/cast.js.map +1 -1
- package/dist/src/runtime/emit/column-reference.d.ts +3 -1
- package/dist/src/runtime/emit/column-reference.d.ts.map +1 -1
- package/dist/src/runtime/emit/column-reference.js +6 -2
- package/dist/src/runtime/emit/column-reference.js.map +1 -1
- package/dist/src/runtime/emit/column-rename-cascade.d.ts +84 -0
- package/dist/src/runtime/emit/column-rename-cascade.d.ts.map +1 -0
- package/dist/src/runtime/emit/column-rename-cascade.js +134 -0
- package/dist/src/runtime/emit/column-rename-cascade.js.map +1 -0
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +21 -0
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/drop-column-guards.d.ts +82 -53
- package/dist/src/runtime/emit/drop-column-guards.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-column-guards.js +155 -90
- package/dist/src/runtime/emit/drop-column-guards.js.map +1 -1
- package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-table.js +5 -0
- package/dist/src/runtime/emit/drop-table.js.map +1 -1
- package/dist/src/runtime/emit/drop-view.d.ts.map +1 -1
- package/dist/src/runtime/emit/drop-view.js +5 -0
- package/dist/src/runtime/emit/drop-view.js.map +1 -1
- package/dist/src/runtime/emit/expression-drop-guard.d.ts +57 -0
- package/dist/src/runtime/emit/expression-drop-guard.d.ts.map +1 -0
- package/dist/src/runtime/emit/expression-drop-guard.js +82 -0
- package/dist/src/runtime/emit/expression-drop-guard.js.map +1 -0
- package/dist/src/runtime/emit/filter.d.ts +1 -1
- package/dist/src/runtime/emit/filter.js +1 -1
- package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/hash-aggregate.js +18 -88
- package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
- package/dist/src/runtime/emit/literal.d.ts +14 -1
- package/dist/src/runtime/emit/literal.d.ts.map +1 -1
- package/dist/src/runtime/emit/literal.js +33 -7
- package/dist/src/runtime/emit/literal.js.map +1 -1
- package/dist/src/runtime/emit/materialized-view-helpers.d.ts +33 -10
- package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
- package/dist/src/runtime/emit/materialized-view-helpers.js +158 -49
- package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
- package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
- package/dist/src/runtime/emit/materialized-view.js +3 -0
- package/dist/src/runtime/emit/materialized-view.js.map +1 -1
- package/dist/src/runtime/emit/parameter.d.ts +3 -1
- package/dist/src/runtime/emit/parameter.d.ts.map +1 -1
- package/dist/src/runtime/emit/parameter.js +7 -2
- package/dist/src/runtime/emit/parameter.js.map +1 -1
- package/dist/src/runtime/emit/scalar-function.d.ts +29 -1
- package/dist/src/runtime/emit/scalar-function.d.ts.map +1 -1
- package/dist/src/runtime/emit/scalar-function.js +66 -16
- package/dist/src/runtime/emit/scalar-function.js.map +1 -1
- package/dist/src/runtime/emit/scalar-op.d.ts +63 -0
- package/dist/src/runtime/emit/scalar-op.d.ts.map +1 -0
- package/dist/src/runtime/emit/scalar-op.js +37 -0
- package/dist/src/runtime/emit/scalar-op.js.map +1 -0
- package/dist/src/runtime/emit/scan.d.ts.map +1 -1
- package/dist/src/runtime/emit/scan.js +19 -1
- package/dist/src/runtime/emit/scan.js.map +1 -1
- package/dist/src/runtime/emit/temporal-arithmetic.d.ts +18 -8
- package/dist/src/runtime/emit/temporal-arithmetic.d.ts.map +1 -1
- package/dist/src/runtime/emit/temporal-arithmetic.js +29 -311
- package/dist/src/runtime/emit/temporal-arithmetic.js.map +1 -1
- package/dist/src/runtime/emit/unary.d.ts +2 -0
- package/dist/src/runtime/emit/unary.d.ts.map +1 -1
- package/dist/src/runtime/emit/unary.js +125 -53
- package/dist/src/runtime/emit/unary.js.map +1 -1
- package/dist/src/runtime/emitters.d.ts +22 -0
- package/dist/src/runtime/emitters.d.ts.map +1 -1
- package/dist/src/runtime/emitters.js +29 -0
- package/dist/src/runtime/emitters.js.map +1 -1
- package/dist/src/runtime/scalar-fusion.d.ts +47 -0
- package/dist/src/runtime/scalar-fusion.d.ts.map +1 -0
- package/dist/src/runtime/scalar-fusion.js +275 -0
- package/dist/src/runtime/scalar-fusion.js.map +1 -0
- package/dist/src/runtime/strict-flags.d.ts +9 -0
- package/dist/src/runtime/strict-flags.d.ts.map +1 -1
- package/dist/src/runtime/strict-flags.js +9 -0
- package/dist/src/runtime/strict-flags.js.map +1 -1
- package/dist/src/runtime/strict-fork.js +2 -2
- package/dist/src/runtime/strict-fork.js.map +1 -1
- package/dist/src/runtime/strict-representation.d.ts +78 -0
- package/dist/src/runtime/strict-representation.d.ts.map +1 -0
- package/dist/src/runtime/strict-representation.js +159 -0
- package/dist/src/runtime/strict-representation.js.map +1 -0
- package/dist/src/schema/assertion.d.ts +58 -0
- package/dist/src/schema/assertion.d.ts.map +1 -1
- package/dist/src/schema/assertion.js +78 -0
- package/dist/src/schema/assertion.js.map +1 -1
- package/dist/src/schema/catalog-persistability.d.ts +11 -3
- package/dist/src/schema/catalog-persistability.d.ts.map +1 -1
- package/dist/src/schema/catalog-persistability.js +48 -29
- package/dist/src/schema/catalog-persistability.js.map +1 -1
- package/dist/src/schema/catalog.d.ts +22 -0
- package/dist/src/schema/catalog.d.ts.map +1 -1
- package/dist/src/schema/catalog.js +4 -1
- package/dist/src/schema/catalog.js.map +1 -1
- package/dist/src/schema/column-republication.d.ts +126 -0
- package/dist/src/schema/column-republication.d.ts.map +1 -0
- package/dist/src/schema/column-republication.js +121 -0
- package/dist/src/schema/column-republication.js.map +1 -0
- package/dist/src/schema/column-source-resolver.d.ts +29 -6
- package/dist/src/schema/column-source-resolver.d.ts.map +1 -1
- package/dist/src/schema/column-source-resolver.js +78 -9
- package/dist/src/schema/column-source-resolver.js.map +1 -1
- package/dist/src/schema/expression-dependents.d.ts +160 -0
- package/dist/src/schema/expression-dependents.d.ts.map +1 -0
- package/dist/src/schema/expression-dependents.js +228 -0
- package/dist/src/schema/expression-dependents.js.map +1 -0
- package/dist/src/schema/function.d.ts +15 -0
- package/dist/src/schema/function.d.ts.map +1 -1
- package/dist/src/schema/function.js.map +1 -1
- package/dist/src/schema/object-dependency-closure.d.ts +127 -0
- package/dist/src/schema/object-dependency-closure.d.ts.map +1 -0
- package/dist/src/schema/object-dependency-closure.js +117 -0
- package/dist/src/schema/object-dependency-closure.js.map +1 -0
- package/dist/src/schema/object-ref-resolver.d.ts +83 -0
- package/dist/src/schema/object-ref-resolver.d.ts.map +1 -0
- package/dist/src/schema/object-ref-resolver.js +135 -0
- package/dist/src/schema/object-ref-resolver.js.map +1 -0
- package/dist/src/schema/rename/column-rename.d.ts +228 -0
- package/dist/src/schema/rename/column-rename.d.ts.map +1 -0
- package/dist/src/schema/rename/column-rename.js +1225 -0
- package/dist/src/schema/rename/column-rename.js.map +1 -0
- package/dist/src/schema/rename/self-qualifier-strip.d.ts +29 -0
- package/dist/src/schema/rename/self-qualifier-strip.d.ts.map +1 -0
- package/dist/src/schema/rename/self-qualifier-strip.js +267 -0
- package/dist/src/schema/rename/self-qualifier-strip.js.map +1 -0
- package/dist/src/schema/rename/shared.d.ts +108 -0
- package/dist/src/schema/rename/shared.d.ts.map +1 -0
- package/dist/src/schema/rename/shared.js +49 -0
- package/dist/src/schema/rename/shared.js.map +1 -0
- package/dist/src/schema/rename/table-rename.d.ts +263 -0
- package/dist/src/schema/rename/table-rename.d.ts.map +1 -0
- package/dist/src/schema/rename/table-rename.js +860 -0
- package/dist/src/schema/rename/table-rename.js.map +1 -0
- package/dist/src/schema/rename-rewriter.d.ts +18 -278
- package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
- package/dist/src/schema/rename-rewriter.js +17 -1506
- package/dist/src/schema/rename-rewriter.js.map +1 -1
- package/dist/src/schema/schema-differ.d.ts.map +1 -1
- package/dist/src/schema/schema-differ.js +228 -21
- package/dist/src/schema/schema-differ.js.map +1 -1
- package/dist/src/types/builtin-types.d.ts.map +1 -1
- package/dist/src/types/builtin-types.js +29 -36
- package/dist/src/types/builtin-types.js.map +1 -1
- package/dist/src/types/cast-semantics.d.ts +7 -5
- package/dist/src/types/cast-semantics.d.ts.map +1 -1
- package/dist/src/types/cast-semantics.js +20 -9
- package/dist/src/types/cast-semantics.js.map +1 -1
- package/dist/src/types/index.d.ts +1 -1
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js +1 -1
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/registry.d.ts.map +1 -1
- package/dist/src/types/registry.js +2 -1
- package/dist/src/types/registry.js.map +1 -1
- package/dist/src/types/temporal-ops.d.ts +119 -0
- package/dist/src/types/temporal-ops.d.ts.map +1 -0
- package/dist/src/types/temporal-ops.js +348 -0
- package/dist/src/types/temporal-ops.js.map +1 -0
- package/dist/src/types/temporal-types.d.ts +11 -0
- package/dist/src/types/temporal-types.d.ts.map +1 -1
- package/dist/src/types/temporal-types.js +87 -0
- package/dist/src/types/temporal-types.js.map +1 -1
- package/dist/src/util/affinity.d.ts +2 -1
- package/dist/src/util/affinity.d.ts.map +1 -1
- package/dist/src/util/affinity.js +16 -5
- package/dist/src/util/affinity.js.map +1 -1
- package/dist/src/util/ast-spine-clone.d.ts +2 -2
- package/dist/src/util/ast-spine-clone.js +2 -2
- package/dist/src/util/coercion.d.ts +22 -7
- package/dist/src/util/coercion.d.ts.map +1 -1
- package/dist/src/util/coercion.js +28 -15
- package/dist/src/util/coercion.js.map +1 -1
- package/dist/src/util/comparison.d.ts +25 -0
- package/dist/src/util/comparison.d.ts.map +1 -1
- package/dist/src/util/comparison.js +25 -0
- package/dist/src/util/comparison.js.map +1 -1
- package/dist/src/util/key-tuple-codec.d.ts +12 -3
- package/dist/src/util/key-tuple-codec.d.ts.map +1 -1
- package/dist/src/util/key-tuple-codec.js.map +1 -1
- package/dist/src/util/numeric-canonical.d.ts +26 -0
- package/dist/src/util/numeric-canonical.d.ts.map +1 -0
- package/dist/src/util/numeric-canonical.js +66 -0
- package/dist/src/util/numeric-canonical.js.map +1 -0
- package/dist/src/util/value-text.d.ts +48 -0
- package/dist/src/util/value-text.d.ts.map +1 -0
- package/dist/src/util/value-text.js +35 -0
- package/dist/src/util/value-text.js.map +1 -0
- package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/manager.js +14 -5
- package/dist/src/vtab/memory/layer/manager.js.map +1 -1
- package/dist/src/vtab/module.d.ts +25 -0
- package/dist/src/vtab/module.d.ts.map +1 -1
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary.js","sourceRoot":"","sources":["../../../../src/runtime/emit/binary.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"binary.js","sourceRoot":"","sources":["../../../../src/runtime/emit/binary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGtH,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAExE,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAC7G,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAqB,MAAM,gBAAgB,CAAC;AAEjE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAkB,EAAE,GAAoB;IACzE,4EAA4E;IAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAExD,QAAQ,QAAQ,EAAE,CAAC;QAClB,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACP,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,GAAG,CAAC;QACT,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,GAAG,CAAC;QACT,KAAK,IAAI,CAAC;QACV,KAAK,GAAG,CAAC;QACT,KAAK,IAAI;YACR,OAAO,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzC,KAAK,IAAI;YACR,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAChC,KAAK,KAAK,CAAC;QACX,KAAK,IAAI,CAAC;QACV,KAAK,KAAK;YACT,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,MAAM;YACV,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;QAC9B,0BAA0B;QAC1B;YACC,YAAY,CAAC,gCAAgC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/H,CAAC;AACF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAkB,EAAE,GAAoB;IACpE,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;4EAK4E;AAC5E,SAAS,qBAAqB,CAC7B,EAAY,EAAE,EAAY,EAC1B,KAAyC,EACzC,WAA+C;IAE/C,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QACtD,IAAI,CAAC;YACJ,0EAA0E;YAC1E,wEAAwE;YACxE,0EAA0E;YAC1E,gBAAgB;YAChB,OAAO,mBAAmB,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IACD,wEAAwE;IACxE,mEAAmE;IACnE,oDAAoD;IACpD,MAAM,GAAG,GAAoB,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;IAC3F,MAAM,GAAG,GAAoB,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;IAC3F,MAAM,GAAG,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAa,CAAC,CAAC,CAAC,GAAa,CAAC;IACpE,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACJ,4DAA4D;YAC5D,OAAO,mBAAmB,CAAC,WAAW,CACrC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAC3C,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAC3C,CAAC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACR,sDAAsD;QACvD,CAAC;IACF,CAAC;IACD,4DAA4D;IAC5D,MAAM,EAAE,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACvD,MAAM,EAAE,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACvD,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,0BAA0B,CAClC,QAAgB,EAChB,KAAyC,EACzC,WAA+C;IAE/C,OAAO,SAAS,qBAAqB,CAAC,IAAoB,EAAE,EAAY,EAAE,EAAY;QACrF,MAAM,cAAc,GAAG,qBAAqB,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/D,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO,cAAc,CAAC;QACvB,CAAC;QAED,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACtD,OAAO,qBAAqB,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACP,MAAM,EAAE,GAAG,2BAA2B,CAAC,EAAE,CAAC,CAAC;gBAC3C,MAAM,EAAE,GAAG,2BAA2B,CAAC,EAAE,CAAC,CAAC;gBAC3C,IAAI,CAAC;oBACJ,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAAE,OAAO,IAAI,CAAC;oBAC1C,OAAO,MAAM,CAAC;gBACf,CAAC;gBAAC,MAAM,CAAC;oBACR,OAAO,IAAI,CAAC;gBACb,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAkB;IACpD,IAAI,KAAyC,CAAC;IAC9C,IAAI,WAA+C,CAAC;IAEpD,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAClC,KAAK,GAAG;YACP,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;YAC5B,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;YAClC,MAAM;QACP,KAAK,GAAG;YACP,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;YAC5B,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;YAClC,MAAM;QACP,KAAK,GAAG;YACP,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;YAC5B,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;YAClC,MAAM;QACP,KAAK,GAAG;YACP,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;YAC5B,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;YAClC,MAAM;QACP,KAAK,GAAG;YACP,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;YAC5B,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;YAClC,MAAM;QACP;YACC,YAAY,CAAC,iCAAiC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAChI,CAAC;IAED,+DAA+D;IAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC;IAEtD,IAAI,GAAkE,CAAC;IACvE,IAAI,IAAY,CAAC;IAEjB,IAAI,WAAW,CAAC,UAAU,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;QACvD,kFAAkF;QAClF,+EAA+E;QAC/E,mFAAmF;QACnF,kFAAkF;QAClF,oFAAoF;QACpF,8BAA8B;QAC9B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QAErG,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;YACpB,+EAA+E;YAC/E,8CAA8C;YAC9C,EAAE;YACF,+EAA+E;YAC/E,8EAA8E;YAC9E,6EAA6E;YAC7E,+EAA+E;YAC/E,6EAA6E;YAC7E,GAAG,GAAG,SAAS,gBAAgB,CAAC,IAAoB,EAAE,EAAY,EAAE,EAAY;gBAC/E,OAAO,eAAe,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACvC,CAAC,CAAC;YACF,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,aAAa,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QACxE,CAAC;aAAM,IAAI,KAAK,EAAE,CAAC;YAClB,6EAA6E;YAC7E,+EAA+E;YAC/E,6CAA6C;YAC7C,EAAE;YACF,gFAAgF;YAChF,sEAAsE;YACtE,4EAA4E;YAC5E,gFAAgF;YAChF,yEAAyE;YACzE,+EAA+E;YAC/E,EAAE;YACF,gFAAgF;YAChF,2DAA2D;YAC3D,GAAG,GAAG,SAAS,sBAAsB,CAAC,IAAoB,EAAE,EAAY,EAAE,EAAY;gBACrF,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;oBAAE,OAAO,IAAI,CAAC;gBAC5C,qBAAqB,EAAE,CAAC;YACzB,CAAC,CAAC;YACF,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,wBAAwB,CAAC;QAC5D,CAAC;aAAM,CAAC;YACP,0EAA0E;YAC1E,2EAA2E;YAC3E,+EAA+E;YAC/E,2EAA2E;YAC3E,sEAAsE;YACtE,GAAG,GAAG,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAC/E,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,YAAY,CAAC;QAChD,CAAC;IACF,CAAC;SAAM,IAAI,WAAW,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;QAC5D,+DAA+D;QAC/D,EAAE;QACF,+EAA+E;QAC/E,8EAA8E;QAC9E,6EAA6E;QAC7E,gEAAgE;QAChE,gFAAgF;QAChF,GAAG,GAAG,SAAS,cAAc,CAAC,GAAmB,EAAE,EAAY,EAAE,EAAY;YAC5E,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;oBACtD,OAAO,qBAAqB,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACP,qEAAqE;oBACrE,oEAAoE;oBACpE,yEAAyE;oBACzE,MAAM,MAAM,GAAG,KAAK,CAAC,EAAY,EAAE,EAAY,CAAC,CAAC;oBACjD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAAE,OAAO,IAAI,CAAC;oBAC1C,OAAO,MAAM,CAAC;gBACf,CAAC;YACF,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC,CAAC;QACF,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,gBAAgB,CAAC;IACpD,CAAC;SAAM,CAAC;QACP,oEAAoE;QACpE,GAAG,GAAG,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QAC/E,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,WAAW,CAAC;IAC/C,CAAC;IAED,OAAO;QACN,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;QACjC,GAAG;QACH,IAAI;KACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAkB,EAAE,GAAoB;IAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACrC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAEvC,4EAA4E;IAC5E,yEAAyE;IACzE,gFAAgF;IAChF,MAAM,aAAa,GAAG,4BAA4B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAE1E,yDAAyD;IACzD,MAAM,aAAa,GAAG,GAAG,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAE1D,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;IAE1C,kEAAkE;IAClE,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;IACzC,MAAM,YAAY,GAAG,SAAS,CAAC,WAAW,CAAC;IAC3C,MAAM,kBAAkB,GAAG,WAAW,CAAC,UAAU,IAAI,YAAY,CAAC,UAAU,CAAC;IAC7E,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,CAAC;IACpE,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,CAAC;IACpE,MAAM,gBAAgB,GAAG,WAAW,IAAI,WAAW,CAAC;IAEpD,IAAI,GAAkE,CAAC;IACvE,IAAI,OAAe,CAAC;IAEpB,gFAAgF;IAChF,iFAAiF;IACjF,6EAA6E;IAC7E,gFAAgF;IAChF,mFAAmF;IACnF,mFAAmF;IACnF,8EAA8E;IAC9E,MAAM,kBAAkB,GAAG,WAAW,KAAK,YAAY,IAAI,mBAAmB,CAAC,WAA0B,CAAC;QACzG,CAAC,CAAC,WAA0B;QAC5B,CAAC,CAAC,SAAS,CAAC;IAEb,IAAI,kBAAkB,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,qBAAqB,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;QAC9E,MAAM,WAAW,GAAG,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACrD,GAAG,GAAG,SAAS,uBAAuB,CAAC,IAAoB,EAAE,EAAY,EAAE,EAAY;YACtF,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAC5C,OAAO,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC;QACF,OAAO,GAAG,eAAe,CAAC;IAC3B,CAAC;SAAM,IAAI,CAAC,kBAAkB,IAAI,gBAAgB,EAAE,CAAC;QACpD,uEAAuE;QACvE,4EAA4E;QAC5E,EAAE;QACF,mFAAmF;QACnF,8EAA8E;QAC9E,kFAAkF;QAClF,uDAAuD;QACvD,MAAM,WAAW,GAAG,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACrD,GAAG,GAAG,SAAS,sBAAsB,CAAC,GAAmB,EAAE,EAAY,EAAE,EAAY;YACpF,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAC5C,OAAO,WAAW,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC;QACF,OAAO,GAAG,cAAc,CAAC;IAC1B,CAAC;SAAM,CAAC;QACP,0CAA0C;QAC1C,GAAG,GAAG,yBAAyB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC/D,OAAO,GAAG,SAAS,CAAC;IACrB,CAAC;IAED,OAAO;QACN,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;QACjC,GAAG;QACH,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,OAAO,GAAG,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG;KACvG,CAAC;AACH,CAAC;AAED,8FAA8F;AAC9F,SAAS,gBAAgB,CAAC,QAAgB,EAAE,IAAkB;IAC7D,QAAQ,QAAQ,EAAE,CAAC;QAClB,KAAK,GAAG,CAAC;QACT,KAAK,IAAI;YACR,OAAO,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC;QACV,KAAK,IAAI;YACR,OAAO,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;QACnC,KAAK,GAAG;YACP,OAAO,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;QACjC,KAAK,IAAI;YACR,OAAO,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAClC,KAAK,GAAG;YACP,OAAO,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;QACjC,KAAK,IAAI;YACR,OAAO,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAClC;YACC,YAAY,CAAC,oCAAoC,QAAQ,EAAE,EAAE,UAAU,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACnH,CAAC;AACF,CAAC;AAED;;6CAE6C;AAC7C,SAAS,yBAAyB,CACjC,QAAgB,EAChB,IAAkB,EAClB,aAAgC;IAEhC,MAAM,WAAW,GAAG,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrD,OAAO,SAAS,oBAAoB,CAAC,GAAmB,EAAE,EAAY,EAAE,EAAY;QACnF,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAE5C,MAAM,cAAc,GAAG,qBAAqB,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/D,IAAI,cAAc,KAAK,SAAS;YAAE,OAAO,cAAc,CAAC;QAExD,OAAO,WAAW,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAkB;IACnD,SAAS,GAAG,CAAC,GAAmB,EAAE,EAAY,EAAE,EAAY;QAC3D,8CAA8C;QAC9C,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAE5C,4EAA4E;QAC5E,sEAAsE;QACtE,OAAO,WAAW,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO;QACN,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;QACjC,GAAG;QACH,IAAI,EAAE,YAAY;KAClB,CAAC;AACH,CAAC;AAOD,oEAAoE;AACpE,MAAM,UAAU,GAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;IAC7C,IAAI,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,oEAAoE;AACpE,MAAM,SAAS,GAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;IAC5C,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF,2DAA2D;AAC3D,MAAM,UAAU,GAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;IAC7C,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,EAAE,KAAK,EAAE,CAAC;AAClB,CAAC,CAAC;AAEF,SAAS,oBAAoB,CAAC,QAAgB,EAAE,IAAkB;IACjE,QAAQ,QAAQ,EAAE,CAAC;QAClB,KAAK,KAAK,CAAC,CAAC,OAAO,UAAU,CAAC;QAC9B,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,KAAK,CAAC,CAAC,OAAO,UAAU,CAAC;QAC9B;YACC,YAAY,CAAC,iCAAiC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAChI,CAAC;AACF,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,mBAAmB,CAAC,QAAgB,EAAE,IAAkB;IAChE,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrD,OAAO,SAAS,cAAc,CAAC,EAAY,EAAE,EAAY;QACxD,MAAM,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,gBAAgB,CAAC,IAAkB,EAAE,QAAgB;IAC7D,OAAO,CAAC,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAkB;IACpD,gEAAgE;IAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACxD,IAAI,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAEvD,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAE3D,SAAS,GAAG,CAAC,IAAoB,EAAE,EAAY,EAAE,EAAY;QAC5D,OAAO,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO;QACN,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;QACjC,GAAG;QACH,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,WAAW;KAC5C,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAkB,EAAE,GAAoB;IAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACxD,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAE3D,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEpD,8EAA8E;IAC9E,gFAAgF;IAChF,MAAM,aAAa,GAAG,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAExD,SAAS,eAAe,CACvB,GAAmB,EACnB,EAAY,EACZ,OAAwD;QAExD,4EAA4E;QAC5E,8DAA8D;QAC9D,MAAM,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,EAAE,KAAK,aAAa;YAAE,OAAO,aAAa,CAAC;QAE/C,qEAAqE;QACrE,wEAAwE;QACxE,mEAAmE;QACnE,mEAAmE;QACnE,mEAAmE;QACnE,mEAAmE;QACnE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,GAAG,YAAY,OAAO;YAC5B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACxC,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO;QACN,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;QAC7B,GAAG,EAAE,KAAK,CAAC,eAAe,CAAC;QAC3B,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,yBAAyB;KAC1D,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,gBAAgB,CAAC,IAAoB;IAC7C,IAAI,CAAC,CAAC,IAAI,YAAY,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IACpC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,YAAY,OAAO;QAAE,OAAO,SAAS,CAAC;IACxF,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAkB;IACjD,4EAA4E;IAC5E,8EAA8E;IAC9E,4EAA4E;IAC5E,8EAA8E;IAC9E,sDAAsD;IACtD,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACjD,SAAS,eAAe,CAAC,IAAoB,EAAE,IAAc;YAC5D,0EAA0E;YAC1E,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAC/B,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,OAAO;YACN,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YACrB,GAAG,EAAE,eAAe;YACpB,IAAI,EAAE,kBAAkB;SACxB,CAAC;IACH,CAAC;IAED,SAAS,GAAG,CAAC,GAAmB,EAAE,IAAc,EAAE,OAAiB;QAClE,oCAAoC;QACpC,2DAA2D;QAC3D,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QACb,CAAC;QAED,+EAA+E;QAC/E,gFAAgF;QAChF,yEAAyE;QACzE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAExC,OAAO,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,OAAO;QACN,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;QACjC,GAAG;QACH,IAAI,EAAE,YAAY;KAClB,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,39 @@
|
|
|
1
1
|
import type { CaseExprNode } from '../../planner/nodes/scalar.js';
|
|
2
2
|
import type { Instruction } from '../types.js';
|
|
3
|
+
import { type SqlValue } from '../../common/types.js';
|
|
3
4
|
import type { EmissionContext } from '../emission-context.js';
|
|
5
|
+
/**
|
|
6
|
+
* Per-clause match test of a simple CASE, resolved once at emit time: collation +
|
|
7
|
+
* type routing per WHEN operand, and the rule that a NULL base matches nothing.
|
|
8
|
+
* Shared by the instruction emitter and the fusion compiler so a fused CASE and an
|
|
9
|
+
* instruction CASE can never disagree about which branch fires.
|
|
10
|
+
*/
|
|
11
|
+
export interface CaseMatcher {
|
|
12
|
+
readonly collationNames: readonly string[];
|
|
13
|
+
readonly matches: (clauseIndex: number, baseValue: SqlValue, whenValue: SqlValue) => boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Resolve how each WHEN clause of a simple CASE decides its match: `case base when v`
|
|
17
|
+
* decides exactly as `base = v` does. The collation comes from the shared provenance
|
|
18
|
+
* lattice (explicit COLLATE > declared column collation > defaults > BINARY), and the
|
|
19
|
+
* routing between the declared type's own compare / storage-class compare / runtime
|
|
20
|
+
* temporal check is the one shared with BETWEEN and `=` (see operand-comparator.ts).
|
|
21
|
+
* Without this, `case n when 'BOB'` compared raw bytes and disagreed with `n = 'BOB'`
|
|
22
|
+
* on a NOCASE column and on semantic-ordering types like TIMESPAN.
|
|
23
|
+
*
|
|
24
|
+
* Resolution is INDEPENDENT per clause (mirroring BETWEEN's two bounds, not IN's single
|
|
25
|
+
* merged collation), so two differently-collated WHEN operands are not a conflict with
|
|
26
|
+
* each other. A genuine conflict — explicit COLLATE on the base AND a different explicit
|
|
27
|
+
* COLLATE on a WHEN operand — throws, exactly as `=` throws for the same operand pair.
|
|
28
|
+
*
|
|
29
|
+
* A searched CASE (no `baseExpr`) yields an empty `collationNames` and a `matches` that
|
|
30
|
+
* is never called.
|
|
31
|
+
*
|
|
32
|
+
* NOTE: that throw happens at emit time, where `=` validates in `BinaryOpNode.generateType`.
|
|
33
|
+
* Both surface inside `db.prepare` today (even a fully-constant CASE is emitted so the
|
|
34
|
+
* folder can evaluate it). If a rule ever rewrites a `CaseExprNode` away without emitting
|
|
35
|
+
* it, move this resolution into `CaseExprNode.generateType` and read the cached result here.
|
|
36
|
+
*/
|
|
37
|
+
export declare function buildCaseMatcher(plan: CaseExprNode, ctx: EmissionContext): CaseMatcher;
|
|
4
38
|
export declare function emitCaseExpr(plan: CaseExprNode, ctx: EmissionContext): Instruction;
|
|
5
39
|
//# sourceMappingURL=case.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"case.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/case.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"case.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/case.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAG/D,OAAO,EAAE,KAAK,QAAQ,EAAqB,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQ9D;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK,OAAO,CAAC;CAC7F;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAoBtF;AAOD,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAoGlF"}
|
|
@@ -17,19 +17,30 @@ import { formatOperandCollationNote, makeOperandComparator } from './operand-com
|
|
|
17
17
|
* each other. A genuine conflict — explicit COLLATE on the base AND a different explicit
|
|
18
18
|
* COLLATE on a WHEN operand — throws, exactly as `=` throws for the same operand pair.
|
|
19
19
|
*
|
|
20
|
+
* A searched CASE (no `baseExpr`) yields an empty `collationNames` and a `matches` that
|
|
21
|
+
* is never called.
|
|
22
|
+
*
|
|
20
23
|
* NOTE: that throw happens at emit time, where `=` validates in `BinaryOpNode.generateType`.
|
|
21
24
|
* Both surface inside `db.prepare` today (even a fully-constant CASE is emitted so the
|
|
22
25
|
* folder can evaluate it). If a rule ever rewrites a `CaseExprNode` away without emitting
|
|
23
26
|
* it, move this resolution into `CaseExprNode.generateType` and read the cached result here.
|
|
24
27
|
*/
|
|
25
|
-
function
|
|
28
|
+
export function buildCaseMatcher(plan, ctx) {
|
|
26
29
|
const base = plan.baseExpr;
|
|
27
30
|
if (!base)
|
|
28
|
-
return { collationNames: [],
|
|
31
|
+
return { collationNames: [], matches: neverMatches };
|
|
29
32
|
const baseLogical = base.getType().logicalType;
|
|
30
33
|
const collationNames = plan.whenThenClauses.map(clause => effectiveComparisonCollation(base, clause.when, plan.expression));
|
|
31
34
|
const comparators = plan.whenThenClauses.map((clause, i) => makeOperandComparator(baseLogical, clause.when.getType().logicalType, ctx.resolveCollation(collationNames[i])));
|
|
32
|
-
|
|
35
|
+
// NULL base never matches any WHEN — falls through to ELSE/NULL. Each clause
|
|
36
|
+
// compares under its OWN pre-resolved comparator (collation + type routing).
|
|
37
|
+
const matches = (clauseIndex, baseValue, whenValue) => baseValue !== null && whenValue !== null &&
|
|
38
|
+
comparators[clauseIndex](baseValue, whenValue) === 0;
|
|
39
|
+
return { collationNames, matches };
|
|
40
|
+
}
|
|
41
|
+
/** Placeholder match test of a searched CASE, which compares nothing. */
|
|
42
|
+
function neverMatches() {
|
|
43
|
+
return false;
|
|
33
44
|
}
|
|
34
45
|
export function emitCaseExpr(plan, ctx) {
|
|
35
46
|
// CASE must ALWAYS short-circuit: SQL evaluates WHEN clauses left-to-right,
|
|
@@ -52,7 +63,7 @@ export function emitCaseExpr(plan, ctx) {
|
|
|
52
63
|
const clauseCount = plan.whenThenClauses.length;
|
|
53
64
|
// A simple CASE compares its base against each WHEN under a per-clause
|
|
54
65
|
// collation + type routing (searched CASE compares nothing here).
|
|
55
|
-
const
|
|
66
|
+
const matcher = buildCaseMatcher(plan, ctx);
|
|
56
67
|
// Searched CASE: CASE WHEN c1 THEN r1 ... ELSE e END
|
|
57
68
|
// args layout: [when0, then0, when1, then1, ..., else?]
|
|
58
69
|
function runSearchedCase(runtimeCtx, ...args) {
|
|
@@ -77,10 +88,6 @@ export function emitCaseExpr(plan, ctx) {
|
|
|
77
88
|
function runSimpleCase(runtimeCtx, ...args) {
|
|
78
89
|
const baseValue = args[0];
|
|
79
90
|
const branch = (idx) => args[idx];
|
|
80
|
-
// NULL base never matches any WHEN — falls through to ELSE/NULL. Each clause
|
|
81
|
-
// compares under its OWN pre-resolved comparator (collation + type routing).
|
|
82
|
-
const matches = (i, whenValue) => baseValue !== null && whenValue !== null &&
|
|
83
|
-
whenComparators[i](baseValue, whenValue) === 0;
|
|
84
91
|
const noMatch = () => plan.elseExpr ? branch(1 + clauseCount * 2)(runtimeCtx) : null;
|
|
85
92
|
const step = (i) => {
|
|
86
93
|
if (i >= clauseCount)
|
|
@@ -89,9 +96,9 @@ export function emitCaseExpr(plan, ctx) {
|
|
|
89
96
|
const thenFn = branch(1 + i * 2 + 1);
|
|
90
97
|
const w = whenFn(runtimeCtx);
|
|
91
98
|
if (w instanceof Promise) {
|
|
92
|
-
return w.then(wv => (matches(i, wv) ? thenFn(runtimeCtx) : step(i + 1)));
|
|
99
|
+
return w.then(wv => (matcher.matches(i, baseValue, wv) ? thenFn(runtimeCtx) : step(i + 1)));
|
|
93
100
|
}
|
|
94
|
-
return matches(i, w) ? thenFn(runtimeCtx) : step(i + 1);
|
|
101
|
+
return matcher.matches(i, baseValue, w) ? thenFn(runtimeCtx) : step(i + 1);
|
|
95
102
|
};
|
|
96
103
|
return step(0);
|
|
97
104
|
}
|
|
@@ -114,7 +121,7 @@ export function emitCaseExpr(plan, ctx) {
|
|
|
114
121
|
params: paramInstructions,
|
|
115
122
|
run: plan.baseExpr ? asRun(runSimpleCase) : asRun(runSearchedCase),
|
|
116
123
|
note: `case(short-circuit, ${clauseCount} when clauses${plan.elseExpr ? ', else' : ''})`
|
|
117
|
-
+ formatOperandCollationNote(
|
|
124
|
+
+ formatOperandCollationNote(matcher.collationNames)
|
|
118
125
|
};
|
|
119
126
|
}
|
|
120
127
|
//# sourceMappingURL=case.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"case.js","sourceRoot":"","sources":["../../../../src/runtime/emit/case.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGhE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,EAA0B,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"case.js","sourceRoot":"","sources":["../../../../src/runtime/emit/case.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { CastNode } from '../../planner/nodes/scalar.js';
|
|
2
2
|
import type { Instruction } from '../types.js';
|
|
3
3
|
import type { EmissionContext } from '../emission-context.js';
|
|
4
|
+
import { type ScalarOpSpec } from './scalar-op.js';
|
|
5
|
+
export declare function buildCastSpec(plan: CastNode): ScalarOpSpec;
|
|
4
6
|
export declare function emitCast(plan: CastNode, ctx: EmissionContext): Instruction;
|
|
5
7
|
//# sourceMappingURL=cast.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cast.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/cast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cast.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/cast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEjE,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY,CAmB1D;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAE1E"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { asRun } from '../types.js';
|
|
2
|
-
import { emitPlanNode } from '../emitters.js';
|
|
3
1
|
import { lenientCast } from '../../types/cast-semantics.js';
|
|
4
|
-
|
|
2
|
+
import { emitScalarOp } from './scalar-op.js';
|
|
3
|
+
export function buildCastSpec(plan) {
|
|
5
4
|
// The node's own resolved target type — never re-resolve the name here, or the
|
|
6
5
|
// plan can advertise a type the emitter does not produce.
|
|
7
6
|
const logicalType = plan.getType().logicalType;
|
|
@@ -11,9 +10,12 @@ export function emitCast(plan, ctx) {
|
|
|
11
10
|
return lenientCast(operandValue, logicalType);
|
|
12
11
|
}
|
|
13
12
|
return {
|
|
14
|
-
|
|
15
|
-
run
|
|
13
|
+
operands: [plan.operand],
|
|
14
|
+
run,
|
|
16
15
|
note: `cast(${plan.expression.targetType})`
|
|
17
16
|
};
|
|
18
17
|
}
|
|
18
|
+
export function emitCast(plan, ctx) {
|
|
19
|
+
return emitScalarOp(buildCastSpec(plan), ctx);
|
|
20
|
+
}
|
|
19
21
|
//# sourceMappingURL=cast.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cast.js","sourceRoot":"","sources":["../../../../src/runtime/emit/cast.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cast.js","sourceRoot":"","sources":["../../../../src/runtime/emit/cast.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAqB,MAAM,gBAAgB,CAAC;AAEjE,MAAM,UAAU,aAAa,CAAC,IAAc;IAC3C,+EAA+E;IAC/E,0DAA0D;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC;IAE/C,SAAS,GAAG,CACX,WAA2B,EAC3B,YAAsB;QAEtB,qEAAqE;QACrE,wDAAwD;QACxD,OAAO,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO;QACN,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;QACxB,GAAG;QACH,IAAI,EAAE,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG;KAC3C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAc,EAAE,GAAoB;IAC5D,OAAO,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { ColumnReferenceNode } from '../../planner/nodes/reference.js';
|
|
2
2
|
import type { Instruction } from '../types.js';
|
|
3
3
|
import type { EmissionContext } from '../emission-context.js';
|
|
4
|
-
|
|
4
|
+
import { type ScalarOpSpec } from './scalar-op.js';
|
|
5
|
+
export declare function buildColumnReferenceSpec(plan: ColumnReferenceNode): ScalarOpSpec;
|
|
6
|
+
export declare function emitColumnReference(plan: ColumnReferenceNode, ctx: EmissionContext): Instruction;
|
|
5
7
|
//# sourceMappingURL=column-reference.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-reference.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/column-reference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"column-reference.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/column-reference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEjE,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,mBAAmB,GAAG,YAAY,CAUhF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAEhG"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { resolveAttribute } from '../context-helpers.js';
|
|
2
|
-
|
|
2
|
+
import { emitScalarOp } from './scalar-op.js';
|
|
3
|
+
export function buildColumnReferenceSpec(plan) {
|
|
3
4
|
function run(rctx) {
|
|
4
5
|
return resolveAttribute(rctx, plan.attributeId, plan.expression.name);
|
|
5
6
|
}
|
|
6
7
|
return {
|
|
7
|
-
|
|
8
|
+
operands: [],
|
|
8
9
|
run,
|
|
9
10
|
note: `column(${plan.expression.name})`
|
|
10
11
|
};
|
|
11
12
|
}
|
|
13
|
+
export function emitColumnReference(plan, ctx) {
|
|
14
|
+
return emitScalarOp(buildColumnReferenceSpec(plan), ctx);
|
|
15
|
+
}
|
|
12
16
|
//# sourceMappingURL=column-reference.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-reference.js","sourceRoot":"","sources":["../../../../src/runtime/emit/column-reference.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"column-reference.js","sourceRoot":"","sources":["../../../../src/runtime/emit/column-reference.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAqB,MAAM,gBAAgB,CAAC;AAEjE,MAAM,UAAU,wBAAwB,CAAC,IAAyB;IACjE,SAAS,GAAG,CAAC,IAAoB;QAChC,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,OAAO;QACN,QAAQ,EAAE,EAAE;QACZ,GAAG;QACH,IAAI,EAAE,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG;KACvC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAyB,EAAE,GAAoB;IAClF,OAAO,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { Database } from '../../core/database.js';
|
|
2
|
+
import { type ColumnRenameCascadeTarget } from '../../schema/column-republication.js';
|
|
3
|
+
import type { ObjectRefResolvers } from '../../schema/object-ref-resolver.js';
|
|
4
|
+
import type { ResolveColumnInSource } from '../../schema/rename-rewriter.js';
|
|
5
|
+
export type { ColumnRenameCascadeTarget };
|
|
6
|
+
/**
|
|
7
|
+
* Worklist driver for `ALTER TABLE … RENAME COLUMN` propagation. Rewriting a
|
|
8
|
+
* dependent view / materialized-view body can SHIFT THE NAME the object
|
|
9
|
+
* publishes (a bare passthrough projection of the renamed column — or a `*`
|
|
10
|
+
* covering the target — starts publishing the new name), and the objects
|
|
11
|
+
* reading IT then need the same column rename applied with the view as the
|
|
12
|
+
* target. This module owns that fixpoint:
|
|
13
|
+
*
|
|
14
|
+
* queue ← [ renamed table ]
|
|
15
|
+
* while queue: run the ordinary all-schema propagation for the head,
|
|
16
|
+
* then enqueue every view / MV whose published names that round shifted.
|
|
17
|
+
*
|
|
18
|
+
* Each round re-enters the SAME per-schema propagation
|
|
19
|
+
* (`propagateColumnRenameInSchema` / `propagateColumnRenameToMaterializedViews`
|
|
20
|
+
* — threaded in by `propagateColumnRename` in alter-table.ts as the `runRound`
|
|
21
|
+
* callback, to avoid an import cycle), so every dependent kind the first round
|
|
22
|
+
* covers — dependent tables' CHECK / DEFAULT / GENERATED expressions, views,
|
|
23
|
+
* materialized views, assertions — is covered at every depth.
|
|
24
|
+
*
|
|
25
|
+
* The per-round dependent scan ({@link scanShiftedPublishers}) lives in
|
|
26
|
+
* `schema/column-republication.ts`, shared with the DROP COLUMN guards'
|
|
27
|
+
* read-only fixpoint over the same lineage.
|
|
28
|
+
*
|
|
29
|
+
* Views cannot be recursive and a maintained table cannot derive from itself,
|
|
30
|
+
* so the visited set is insurance against a malformed catalog rather than an
|
|
31
|
+
* expected cycle — but without it the loop would be unbounded.
|
|
32
|
+
*
|
|
33
|
+
* NOTE: each round costs a full all-schema propagation plus a full scan of every
|
|
34
|
+
* schema's views and maintained tables, and the pre-flight additionally spine-clones
|
|
35
|
+
* every scanned body per round — so one `RENAME COLUMN` is O(chain depth × catalog
|
|
36
|
+
* size) AST walks. Depth is 1–3 for realistic catalogs and DDL is rare, so this is
|
|
37
|
+
* not worth optimizing now; if a deep republishing chain over a large catalog ever
|
|
38
|
+
* makes RENAME COLUMN slow, narrow each round to the objects that actually name the
|
|
39
|
+
* round's target (an object-dependency index) instead of re-sweeping the catalog.
|
|
40
|
+
*/
|
|
41
|
+
/**
|
|
42
|
+
* The live cascade. Breadth-first from the renamed table: run `runRound` (the
|
|
43
|
+
* ordinary all-schema column-rename propagation) for the head, then scan for
|
|
44
|
+
* views / MVs whose published names that round shifted and enqueue them as the
|
|
45
|
+
* next targets. Each round's rewrites land in place before the scan runs, so
|
|
46
|
+
* the scan reads post-rewrite bodies — {@link import('../../schema/rename/column-rename.js').bodyExposesRenamedColumn}'s
|
|
47
|
+
* documented contract.
|
|
48
|
+
*
|
|
49
|
+
* `preStaleMvs` is the statement's pre-notify staleness snapshot: a pre-stale
|
|
50
|
+
* MV's backing columns are NOT renamed (its body may be rewritten, but only
|
|
51
|
+
* REFRESH may reshape the backing — see `applyMaterializedViewRewrite`), so
|
|
52
|
+
* its published names do not shift and its readers must NOT be rewritten.
|
|
53
|
+
*
|
|
54
|
+
* The caller runs `restoreUnaffectedMaterializedViews` once, AFTER the whole
|
|
55
|
+
* cascade — not per round.
|
|
56
|
+
*/
|
|
57
|
+
export declare function runColumnRenameCascade(db: Database, seed: ColumnRenameCascadeTarget, oldCol: string, newCol: string, preStaleMvs: ReadonlySet<string>, resolvers: ObjectRefResolvers, resolveColumnInSource: ResolveColumnInSource, runRound: (target: ColumnRenameCascadeTarget) => Promise<void>): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Read-only pre-flight for the cascade, run BEFORE the statement's first side
|
|
60
|
+
* effect: walks the same fixpoint the live cascade will walk — probing spine
|
|
61
|
+
* clones, mutating nothing — and refuses the statement when any round would
|
|
62
|
+
* leave a view / materialized view publishing TWO columns of the new name
|
|
63
|
+
* (it already publishes `newCol`, and the shifted passthrough would add a
|
|
64
|
+
* second). This mirrors how the base-table verb refuses a rename that
|
|
65
|
+
* collides with an existing column, and it must run pre-mutation: the live
|
|
66
|
+
* cascade rewrites bodies in place with no rollback, so a mid-cascade throw
|
|
67
|
+
* would strand a partial rename (the same reasoning the no-catch NOTE on
|
|
68
|
+
* `reregisterRewrittenAssertion` records).
|
|
69
|
+
*
|
|
70
|
+
* The collision test runs against the PRISTINE body: before the rename the
|
|
71
|
+
* target cannot publish `newCol`, so any `newCol` already published is
|
|
72
|
+
* necessarily a different column (a case-only respelling is the one rename for
|
|
73
|
+
* which that premise fails, and returns below before any scan). A `newCol`
|
|
74
|
+
* publication some EARLIER round created is likewise never a distinct column —
|
|
75
|
+
* it can only have come from an `oldCol` publication — which is why measuring
|
|
76
|
+
* the collision on the pristine body is right rather than merely convenient.
|
|
77
|
+
* The exposure test runs against a throwaway
|
|
78
|
+
* clone with the round's rewrite applied, matching the live driver's
|
|
79
|
+
* post-rewrite contract; the pre-mutation catalog gives the same answers the
|
|
80
|
+
* live rounds see because a round only rewrites references binding ITS OWN
|
|
81
|
+
* target, which no other round's exposure question consults.
|
|
82
|
+
*/
|
|
83
|
+
export declare function assertColumnRenameCascadePublishable(db: Database, seed: ColumnRenameCascadeTarget, oldCol: string, newCol: string, resolvers: ObjectRefResolvers, resolveColumnInSource: ResolveColumnInSource): void;
|
|
84
|
+
//# sourceMappingURL=column-rename-cascade.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-rename-cascade.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/column-rename-cascade.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAGN,KAAK,yBAAyB,EAC9B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAE9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,YAAY,EAAE,yBAAyB,EAAE,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,sBAAsB,CAC3C,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,yBAAyB,EAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAChC,SAAS,EAAE,kBAAkB,EAC7B,qBAAqB,EAAE,qBAAqB,EAC5C,QAAQ,EAAE,CAAC,MAAM,EAAE,yBAAyB,KAAK,OAAO,CAAC,IAAI,CAAC,GAC5D,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,oCAAoC,CACnD,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,yBAAyB,EAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,kBAAkB,EAC7B,qBAAqB,EAAE,qBAAqB,GAC1C,IAAI,CAmCN"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { QuereusError } from '../../common/errors.js';
|
|
2
|
+
import { StatusCode } from '../../common/types.js';
|
|
3
|
+
import { scanShiftedPublishers, visitKeyOf, } from '../../schema/column-republication.js';
|
|
4
|
+
import { objectRefKey } from '../../schema/rename-rewriter.js';
|
|
5
|
+
/**
|
|
6
|
+
* Worklist driver for `ALTER TABLE … RENAME COLUMN` propagation. Rewriting a
|
|
7
|
+
* dependent view / materialized-view body can SHIFT THE NAME the object
|
|
8
|
+
* publishes (a bare passthrough projection of the renamed column — or a `*`
|
|
9
|
+
* covering the target — starts publishing the new name), and the objects
|
|
10
|
+
* reading IT then need the same column rename applied with the view as the
|
|
11
|
+
* target. This module owns that fixpoint:
|
|
12
|
+
*
|
|
13
|
+
* queue ← [ renamed table ]
|
|
14
|
+
* while queue: run the ordinary all-schema propagation for the head,
|
|
15
|
+
* then enqueue every view / MV whose published names that round shifted.
|
|
16
|
+
*
|
|
17
|
+
* Each round re-enters the SAME per-schema propagation
|
|
18
|
+
* (`propagateColumnRenameInSchema` / `propagateColumnRenameToMaterializedViews`
|
|
19
|
+
* — threaded in by `propagateColumnRename` in alter-table.ts as the `runRound`
|
|
20
|
+
* callback, to avoid an import cycle), so every dependent kind the first round
|
|
21
|
+
* covers — dependent tables' CHECK / DEFAULT / GENERATED expressions, views,
|
|
22
|
+
* materialized views, assertions — is covered at every depth.
|
|
23
|
+
*
|
|
24
|
+
* The per-round dependent scan ({@link scanShiftedPublishers}) lives in
|
|
25
|
+
* `schema/column-republication.ts`, shared with the DROP COLUMN guards'
|
|
26
|
+
* read-only fixpoint over the same lineage.
|
|
27
|
+
*
|
|
28
|
+
* Views cannot be recursive and a maintained table cannot derive from itself,
|
|
29
|
+
* so the visited set is insurance against a malformed catalog rather than an
|
|
30
|
+
* expected cycle — but without it the loop would be unbounded.
|
|
31
|
+
*
|
|
32
|
+
* NOTE: each round costs a full all-schema propagation plus a full scan of every
|
|
33
|
+
* schema's views and maintained tables, and the pre-flight additionally spine-clones
|
|
34
|
+
* every scanned body per round — so one `RENAME COLUMN` is O(chain depth × catalog
|
|
35
|
+
* size) AST walks. Depth is 1–3 for realistic catalogs and DDL is rare, so this is
|
|
36
|
+
* not worth optimizing now; if a deep republishing chain over a large catalog ever
|
|
37
|
+
* makes RENAME COLUMN slow, narrow each round to the objects that actually name the
|
|
38
|
+
* round's target (an object-dependency index) instead of re-sweeping the catalog.
|
|
39
|
+
*/
|
|
40
|
+
/**
|
|
41
|
+
* The live cascade. Breadth-first from the renamed table: run `runRound` (the
|
|
42
|
+
* ordinary all-schema column-rename propagation) for the head, then scan for
|
|
43
|
+
* views / MVs whose published names that round shifted and enqueue them as the
|
|
44
|
+
* next targets. Each round's rewrites land in place before the scan runs, so
|
|
45
|
+
* the scan reads post-rewrite bodies — {@link import('../../schema/rename/column-rename.js').bodyExposesRenamedColumn}'s
|
|
46
|
+
* documented contract.
|
|
47
|
+
*
|
|
48
|
+
* `preStaleMvs` is the statement's pre-notify staleness snapshot: a pre-stale
|
|
49
|
+
* MV's backing columns are NOT renamed (its body may be rewritten, but only
|
|
50
|
+
* REFRESH may reshape the backing — see `applyMaterializedViewRewrite`), so
|
|
51
|
+
* its published names do not shift and its readers must NOT be rewritten.
|
|
52
|
+
*
|
|
53
|
+
* The caller runs `restoreUnaffectedMaterializedViews` once, AFTER the whole
|
|
54
|
+
* cascade — not per round.
|
|
55
|
+
*/
|
|
56
|
+
export async function runColumnRenameCascade(db, seed, oldCol, newCol, preStaleMvs, resolvers, resolveColumnInSource, runRound) {
|
|
57
|
+
const oldColLower = oldCol.toLowerCase();
|
|
58
|
+
const visited = new Set();
|
|
59
|
+
const queue = [seed];
|
|
60
|
+
while (queue.length > 0) {
|
|
61
|
+
const target = queue.shift();
|
|
62
|
+
const key = visitKeyOf(target, oldColLower);
|
|
63
|
+
if (visited.has(key))
|
|
64
|
+
continue;
|
|
65
|
+
visited.add(key);
|
|
66
|
+
await runRound(target);
|
|
67
|
+
scanShiftedPublishers(db, target, oldCol, newCol, resolvers, resolveColumnInSource, {
|
|
68
|
+
probeOnClone: false,
|
|
69
|
+
isMvExcluded: mv => preStaleMvs.has(objectRefKey(mv.schemaName, mv.name)),
|
|
70
|
+
onShifted: dependent => queue.push(dependent),
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Read-only pre-flight for the cascade, run BEFORE the statement's first side
|
|
76
|
+
* effect: walks the same fixpoint the live cascade will walk — probing spine
|
|
77
|
+
* clones, mutating nothing — and refuses the statement when any round would
|
|
78
|
+
* leave a view / materialized view publishing TWO columns of the new name
|
|
79
|
+
* (it already publishes `newCol`, and the shifted passthrough would add a
|
|
80
|
+
* second). This mirrors how the base-table verb refuses a rename that
|
|
81
|
+
* collides with an existing column, and it must run pre-mutation: the live
|
|
82
|
+
* cascade rewrites bodies in place with no rollback, so a mid-cascade throw
|
|
83
|
+
* would strand a partial rename (the same reasoning the no-catch NOTE on
|
|
84
|
+
* `reregisterRewrittenAssertion` records).
|
|
85
|
+
*
|
|
86
|
+
* The collision test runs against the PRISTINE body: before the rename the
|
|
87
|
+
* target cannot publish `newCol`, so any `newCol` already published is
|
|
88
|
+
* necessarily a different column (a case-only respelling is the one rename for
|
|
89
|
+
* which that premise fails, and returns below before any scan). A `newCol`
|
|
90
|
+
* publication some EARLIER round created is likewise never a distinct column —
|
|
91
|
+
* it can only have come from an `oldCol` publication — which is why measuring
|
|
92
|
+
* the collision on the pristine body is right rather than merely convenient.
|
|
93
|
+
* The exposure test runs against a throwaway
|
|
94
|
+
* clone with the round's rewrite applied, matching the live driver's
|
|
95
|
+
* post-rewrite contract; the pre-mutation catalog gives the same answers the
|
|
96
|
+
* live rounds see because a round only rewrites references binding ITS OWN
|
|
97
|
+
* target, which no other round's exposure question consults.
|
|
98
|
+
*/
|
|
99
|
+
export function assertColumnRenameCascadePublishable(db, seed, oldCol, newCol, resolvers, resolveColumnInSource) {
|
|
100
|
+
const oldColLower = oldCol.toLowerCase();
|
|
101
|
+
// A case-only respelling ('x' → 'X') merges no two name classes: the `newCol` a
|
|
102
|
+
// dependent "already publishes" IS the renamed column itself, not a second one.
|
|
103
|
+
// Skipping keeps the pristine-body collision test's premise — that the target
|
|
104
|
+
// cannot publish `newCol` before the rename — true on every case it runs on.
|
|
105
|
+
if (oldColLower === newCol.toLowerCase())
|
|
106
|
+
return;
|
|
107
|
+
const visited = new Set([visitKeyOf(seed, oldColLower)]);
|
|
108
|
+
const queue = [seed];
|
|
109
|
+
while (queue.length > 0) {
|
|
110
|
+
const target = queue.shift();
|
|
111
|
+
scanShiftedPublishers(db, target, oldCol, newCol, resolvers, resolveColumnInSource, {
|
|
112
|
+
probeOnClone: true,
|
|
113
|
+
// Runs before the statement's first notify, so live staleness equals the
|
|
114
|
+
// snapshot the driver will take.
|
|
115
|
+
isMvExcluded: mv => mv.derivation.stale === true,
|
|
116
|
+
onCollision: (kind, schemaName, name) => {
|
|
117
|
+
const via = target.targetKey === seed.targetKey ? '' : ` (through '${target.tableName}')`;
|
|
118
|
+
throw new QuereusError(`cannot rename column '${seed.tableName}.${oldCol}' to '${newCol}': `
|
|
119
|
+
+ `${kind} '${schemaName}.${name}' already publishes a column named '${newCol}' and `
|
|
120
|
+
+ `also republishes the renamed column${via}, so following the rename would make it `
|
|
121
|
+
+ `publish two '${newCol}' columns. Alias one of the two in the ${kind}'s body, `
|
|
122
|
+
+ `or choose a different name.`, StatusCode.ERROR);
|
|
123
|
+
},
|
|
124
|
+
onShifted: dependent => {
|
|
125
|
+
const key = visitKeyOf(dependent, oldColLower);
|
|
126
|
+
if (visited.has(key))
|
|
127
|
+
return;
|
|
128
|
+
visited.add(key);
|
|
129
|
+
queue.push(dependent);
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=column-rename-cascade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-rename-cascade.js","sourceRoot":"","sources":["../../../../src/runtime/emit/column-rename-cascade.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dml-executor.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/dml-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAA+C,MAAM,aAAa,CAAC;AAO5F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"dml-executor.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/dml-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAA+C,MAAM,aAAa,CAAC;AAO5F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAiTzD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAQ7E;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAywCxF"}
|
|
@@ -12,6 +12,8 @@ import { sqlValueIdentical, compareSqlValuesFast, BINARY_COLLATION } from '../..
|
|
|
12
12
|
import { uniqueEnforcementComparators } from '../../schema/unique-enforcement.js';
|
|
13
13
|
import { validateAndParse } from '../../types/validation.js';
|
|
14
14
|
import { withAsyncRowContext } from '../context-helpers.js';
|
|
15
|
+
import { REPR_STRICT } from '../strict-flags.js';
|
|
16
|
+
import { assertRowConforms } from '../strict-representation.js';
|
|
15
17
|
import { executeForeignKeyActionsAndLens, assertTransitiveRestrictsForParentMutation, createParentRestrictBatch, accumulateParentRestrictKeys, flushParentRestrictBatch } from '../foreign-key-actions.js';
|
|
16
18
|
import { getBatchableRestrictFks } from '../../planner/building/foreign-key-builder.js';
|
|
17
19
|
import { composeCombinedDescriptor } from '../descriptor-helpers.js';
|
|
@@ -249,6 +251,19 @@ export function emitDmlExecutor(plan, ctx) {
|
|
|
249
251
|
assertNotMaintainedTableTarget(tableSchema);
|
|
250
252
|
// Pre-calculate primary key column indices from schema (needed for update/delete)
|
|
251
253
|
const pkColumnIndicesInSchema = tableSchema.primaryKeyDefinition.map(pkColDef => pkColDef.index);
|
|
254
|
+
// QUEREUS_REPR_STRICT seam: the row about to be handed to `vtab.update`, checked
|
|
255
|
+
// against the declared column types AFTER the DML pipeline's coercion pass. This is
|
|
256
|
+
// the failure mode with the longest fuse — a non-canonical value that gets PERSISTED.
|
|
257
|
+
// Both arrays are built only when the flag is on, so a normal emit allocates nothing
|
|
258
|
+
// on the checker's behalf.
|
|
259
|
+
// The three row-bearing `vtab.update` sites below each call `assertRowConforms` under
|
|
260
|
+
// `if (REPR_STRICT)`, immediately before the write and deliberately OUTSIDE the
|
|
261
|
+
// conversion/constraint `catch` blocks, so a violation propagates as the internal error
|
|
262
|
+
// it is rather than being re-reported as a constraint failure. DELETE carries no row, so
|
|
263
|
+
// it has no check.
|
|
264
|
+
const reprColumnTypes = REPR_STRICT ? tableSchema.columns.map(col => col.logicalType) : undefined;
|
|
265
|
+
const reprColumnNames = REPR_STRICT ? tableSchema.columns.map(col => col.name) : undefined;
|
|
266
|
+
const reprWhere = REPR_STRICT ? `write to ${tableSchema.schemaName}.${tableSchema.name}` : '';
|
|
252
267
|
// Per-PK-column comparators for the data-event contract's relocation test: an UPDATE
|
|
253
268
|
// whose key values differ under the PRIMARY KEY's own comparator MOVES the row, and the
|
|
254
269
|
// contract delivers that as delete-at-old-key + insert-at-new-key rather than one `update`
|
|
@@ -580,6 +595,8 @@ export function emitDmlExecutor(plan, ctx) {
|
|
|
580
595
|
mutationStatement: vtab.wantStatements ?
|
|
581
596
|
buildUpdateStatement(tableSchema, updatedRow, keyValues, contextRow) : undefined
|
|
582
597
|
};
|
|
598
|
+
if (REPR_STRICT)
|
|
599
|
+
assertRowConforms(updatedRow, reprColumnTypes, reprWhere, reprColumnNames);
|
|
583
600
|
const updateResult = await vtab.update(updateArgs);
|
|
584
601
|
if (isConstraintViolation(updateResult)) {
|
|
585
602
|
throw new ConstraintError(updateResult.message ?? `${updateResult.constraint} constraint failed during UPSERT update`, StatusCode.CONSTRAINT);
|
|
@@ -899,6 +916,8 @@ export function emitDmlExecutor(plan, ctx) {
|
|
|
899
916
|
preCoerced: true,
|
|
900
917
|
mutationStatement
|
|
901
918
|
};
|
|
919
|
+
if (REPR_STRICT)
|
|
920
|
+
assertRowConforms(newRow, reprColumnTypes, reprWhere, reprColumnNames);
|
|
902
921
|
const result = await vtab.update(args);
|
|
903
922
|
if (isConstraintViolation(result)) {
|
|
904
923
|
if (result.constraint === 'unique' && runtimeUpsertClauses && result.existingRow) {
|
|
@@ -1082,6 +1101,8 @@ export function emitDmlExecutor(plan, ctx) {
|
|
|
1082
1101
|
preCoerced: true,
|
|
1083
1102
|
mutationStatement
|
|
1084
1103
|
};
|
|
1104
|
+
if (REPR_STRICT)
|
|
1105
|
+
assertRowConforms(newRow, reprColumnTypes, reprWhere, reprColumnNames);
|
|
1085
1106
|
const result = await vtab.update(args);
|
|
1086
1107
|
// Handle constraint violations — caller translates for FAIL/ROLLBACK.
|
|
1087
1108
|
if (isConstraintViolation(result)) {
|