@quereus/quereus 2.8.0 → 2.9.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/emit/ast-stringify.d.ts.map +1 -1
- package/dist/src/emit/ast-stringify.js +0 -3
- package/dist/src/emit/ast-stringify.js.map +1 -1
- package/dist/src/parser/ast.d.ts +3 -2
- package/dist/src/parser/ast.d.ts.map +1 -1
- package/dist/src/parser/parser.d.ts.map +1 -1
- package/dist/src/parser/parser.js +13 -4
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
- package/dist/src/planner/building/foreign-key-builder.js +3 -2
- package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
- package/dist/src/planner/building/select.js +14 -2
- package/dist/src/planner/building/select.js.map +1 -1
- package/dist/src/planner/building/update.d.ts.map +1 -1
- package/dist/src/planner/building/update.js +10 -6
- package/dist/src/planner/building/update.js.map +1 -1
- package/dist/src/planner/framework/characteristics.d.ts +3 -1
- package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
- package/dist/src/planner/framework/characteristics.js +7 -0
- package/dist/src/planner/framework/characteristics.js.map +1 -1
- package/dist/src/planner/framework/physical-utils.d.ts +22 -1
- package/dist/src/planner/framework/physical-utils.d.ts.map +1 -1
- package/dist/src/planner/framework/physical-utils.js +47 -0
- package/dist/src/planner/framework/physical-utils.js.map +1 -1
- package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/alias-node.js +2 -0
- package/dist/src/planner/nodes/alias-node.js.map +1 -1
- package/dist/src/planner/nodes/asof-scan-node.d.ts +137 -0
- package/dist/src/planner/nodes/asof-scan-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/asof-scan-node.js +223 -0
- package/dist/src/planner/nodes/asof-scan-node.js.map +1 -0
- package/dist/src/planner/nodes/constraint-check-node.d.ts +3 -0
- package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
- package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/distinct-node.js +7 -0
- package/dist/src/planner/nodes/distinct-node.js.map +1 -1
- package/dist/src/planner/nodes/filter.d.ts.map +1 -1
- package/dist/src/planner/nodes/filter.js +2 -0
- package/dist/src/planner/nodes/filter.js.map +1 -1
- package/dist/src/planner/nodes/function.d.ts +11 -1
- package/dist/src/planner/nodes/function.d.ts.map +1 -1
- package/dist/src/planner/nodes/function.js +94 -1
- package/dist/src/planner/nodes/function.js.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/hash-aggregate.js +2 -0
- package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-node.js +10 -2
- package/dist/src/planner/nodes/join-node.js.map +1 -1
- package/dist/src/planner/nodes/join-utils.d.ts +19 -1
- package/dist/src/planner/nodes/join-utils.d.ts.map +1 -1
- package/dist/src/planner/nodes/join-utils.js +46 -0
- package/dist/src/planner/nodes/join-utils.js.map +1 -1
- package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
- package/dist/src/planner/nodes/limit-offset.js +2 -0
- package/dist/src/planner/nodes/limit-offset.js.map +1 -1
- package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/merge-join-node.js +4 -1
- package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
- package/dist/src/planner/nodes/ordinal-slice-node.d.ts +50 -0
- package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/ordinal-slice-node.js +127 -0
- package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -0
- package/dist/src/planner/nodes/plan-node-type.d.ts +2 -0
- package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.js +2 -0
- package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
- package/dist/src/planner/nodes/plan-node.d.ts +130 -1
- package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node.js +49 -0
- package/dist/src/planner/nodes/plan-node.js.map +1 -1
- package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/project-node.js +6 -1
- package/dist/src/planner/nodes/project-node.js.map +1 -1
- package/dist/src/planner/nodes/reference.d.ts +4 -1
- package/dist/src/planner/nodes/reference.d.ts.map +1 -1
- package/dist/src/planner/nodes/reference.js +16 -0
- package/dist/src/planner/nodes/reference.js.map +1 -1
- package/dist/src/planner/nodes/scalar.d.ts +7 -1
- package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
- package/dist/src/planner/nodes/scalar.js +100 -1
- package/dist/src/planner/nodes/scalar.js.map +1 -1
- package/dist/src/planner/nodes/set-operation-node.d.ts +2 -1
- package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/set-operation-node.js +9 -0
- package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
- package/dist/src/planner/nodes/sort.d.ts.map +1 -1
- package/dist/src/planner/nodes/sort.js +20 -0
- package/dist/src/planner/nodes/sort.js.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
- package/dist/src/planner/nodes/stream-aggregate.js +2 -0
- package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts +37 -2
- package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.js +87 -10
- package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
- package/dist/src/planner/nodes/update-node.d.ts +1 -3
- package/dist/src/planner/nodes/update-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/update-node.js +3 -9
- package/dist/src/planner/nodes/update-node.js.map +1 -1
- package/dist/src/planner/nodes/window-node.d.ts +61 -2
- package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/window-node.js +64 -3
- package/dist/src/planner/nodes/window-node.js.map +1 -1
- package/dist/src/planner/optimizer-tuning.d.ts +9 -0
- package/dist/src/planner/optimizer-tuning.d.ts.map +1 -1
- package/dist/src/planner/optimizer-tuning.js +3 -0
- package/dist/src/planner/optimizer-tuning.js.map +1 -1
- package/dist/src/planner/optimizer.d.ts.map +1 -1
- package/dist/src/planner/optimizer.js +91 -0
- package/dist/src/planner/optimizer.js.map +1 -1
- package/dist/src/planner/rules/access/rule-asof-strategy-select.d.ts +30 -0
- package/dist/src/planner/rules/access/rule-asof-strategy-select.d.ts.map +1 -0
- package/dist/src/planner/rules/access/rule-asof-strategy-select.js +112 -0
- package/dist/src/planner/rules/access/rule-asof-strategy-select.js.map +1 -0
- package/dist/src/planner/rules/access/rule-monotonic-limit-pushdown.d.ts +33 -0
- package/dist/src/planner/rules/access/rule-monotonic-limit-pushdown.d.ts.map +1 -0
- package/dist/src/planner/rules/access/rule-monotonic-limit-pushdown.js +162 -0
- package/dist/src/planner/rules/access/rule-monotonic-limit-pushdown.js.map +1 -0
- package/dist/src/planner/rules/access/rule-monotonic-range-access.d.ts +29 -0
- package/dist/src/planner/rules/access/rule-monotonic-range-access.d.ts.map +1 -0
- package/dist/src/planner/rules/access/rule-monotonic-range-access.js +175 -0
- package/dist/src/planner/rules/access/rule-monotonic-range-access.js.map +1 -0
- package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.js +31 -10
- package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
- package/dist/src/planner/rules/join/equi-pair-extractor.d.ts +61 -0
- package/dist/src/planner/rules/join/equi-pair-extractor.d.ts.map +1 -0
- package/dist/src/planner/rules/join/equi-pair-extractor.js +155 -0
- package/dist/src/planner/rules/join/equi-pair-extractor.js.map +1 -0
- package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-join-physical-selection.js +2 -122
- package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
- package/dist/src/planner/rules/join/rule-lateral-top1-asof.d.ts +21 -0
- package/dist/src/planner/rules/join/rule-lateral-top1-asof.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-lateral-top1-asof.js +405 -0
- package/dist/src/planner/rules/join/rule-lateral-top1-asof.js.map +1 -0
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts +31 -0
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.js +113 -0
- package/dist/src/planner/rules/join/rule-monotonic-merge-join.js.map +1 -0
- package/dist/src/planner/rules/window/rule-monotonic-window.d.ts +47 -0
- package/dist/src/planner/rules/window/rule-monotonic-window.d.ts.map +1 -0
- package/dist/src/planner/rules/window/rule-monotonic-window.js +341 -0
- package/dist/src/planner/rules/window/rule-monotonic-window.js.map +1 -0
- package/dist/src/runtime/context-helpers.d.ts +9 -0
- package/dist/src/runtime/context-helpers.d.ts.map +1 -1
- package/dist/src/runtime/context-helpers.js +5 -0
- package/dist/src/runtime/context-helpers.js.map +1 -1
- package/dist/src/runtime/emit/asof-scan.d.ts +10 -0
- package/dist/src/runtime/emit/asof-scan.d.ts.map +1 -0
- package/dist/src/runtime/emit/asof-scan.js +467 -0
- package/dist/src/runtime/emit/asof-scan.js.map +1 -0
- package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
- package/dist/src/runtime/emit/constraint-check.js +20 -0
- package/dist/src/runtime/emit/constraint-check.js.map +1 -1
- package/dist/src/runtime/emit/ordinal-slice.d.ts +13 -0
- package/dist/src/runtime/emit/ordinal-slice.d.ts.map +1 -0
- package/dist/src/runtime/emit/ordinal-slice.js +89 -0
- package/dist/src/runtime/emit/ordinal-slice.js.map +1 -0
- package/dist/src/runtime/emit/returning.d.ts.map +1 -1
- package/dist/src/runtime/emit/returning.js +9 -4
- package/dist/src/runtime/emit/returning.js.map +1 -1
- package/dist/src/runtime/emit/scan.d.ts +19 -3
- package/dist/src/runtime/emit/scan.d.ts.map +1 -1
- package/dist/src/runtime/emit/scan.js +12 -8
- package/dist/src/runtime/emit/scan.js.map +1 -1
- package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
- package/dist/src/runtime/emit/schema-declarative.js +91 -14
- package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
- package/dist/src/runtime/emit/window.d.ts.map +1 -1
- package/dist/src/runtime/emit/window.js +732 -37
- package/dist/src/runtime/emit/window.js.map +1 -1
- package/dist/src/runtime/foreign-key-actions.js +5 -4
- package/dist/src/runtime/foreign-key-actions.js.map +1 -1
- package/dist/src/runtime/register.d.ts.map +1 -1
- package/dist/src/runtime/register.js +4 -0
- package/dist/src/runtime/register.js.map +1 -1
- package/dist/src/schema/catalog.d.ts +10 -0
- package/dist/src/schema/catalog.d.ts.map +1 -1
- package/dist/src/schema/catalog.js +29 -6
- package/dist/src/schema/catalog.js.map +1 -1
- package/dist/src/schema/function.d.ts +24 -0
- package/dist/src/schema/function.d.ts.map +1 -1
- package/dist/src/schema/function.js.map +1 -1
- package/dist/src/schema/manager.d.ts +10 -0
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +10 -0
- package/dist/src/schema/manager.js.map +1 -1
- package/dist/src/schema/schema-differ.d.ts +18 -1
- package/dist/src/schema/schema-differ.d.ts.map +1 -1
- package/dist/src/schema/schema-differ.js +307 -42
- package/dist/src/schema/schema-differ.js.map +1 -1
- package/dist/src/types/logical-type.d.ts +11 -0
- package/dist/src/types/logical-type.d.ts.map +1 -1
- package/dist/src/types/logical-type.js.map +1 -1
- package/dist/src/util/ast-literal.d.ts +11 -0
- package/dist/src/util/ast-literal.d.ts.map +1 -0
- package/dist/src/util/ast-literal.js +26 -0
- package/dist/src/util/ast-literal.js.map +1 -0
- package/dist/src/vtab/best-access-plan.d.ts +41 -0
- package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
- package/dist/src/vtab/best-access-plan.js +29 -0
- package/dist/src/vtab/best-access-plan.js.map +1 -1
- package/dist/src/vtab/filter-info.d.ts +14 -0
- package/dist/src/vtab/filter-info.d.ts.map +1 -1
- package/dist/src/vtab/memory/module.d.ts +39 -1
- package/dist/src/vtab/memory/module.d.ts.map +1 -1
- package/dist/src/vtab/memory/module.js +206 -44
- package/dist/src/vtab/memory/module.js.map +1 -1
- package/dist/src/vtab/module.d.ts +24 -0
- package/dist/src/vtab/module.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rule: Monotonic range scan recognition
|
|
3
|
+
*
|
|
4
|
+
* Two responsibilities, gated by node type:
|
|
5
|
+
*
|
|
6
|
+
* 1. **Annotation (leaf nodes — IndexScan / IndexSeek / SeqScan)**:
|
|
7
|
+
* When the leaf advertises `monotonicOn(x)` and its `FilterInfo.constraints`
|
|
8
|
+
* carries a handled range/equality on `x`, set `physical.rangeBoundedOn` so
|
|
9
|
+
* EXPLAIN and downstream rules can read off the symbolic bound. This is a
|
|
10
|
+
* pure annotation — it does not change the row stream.
|
|
11
|
+
*
|
|
12
|
+
* 2. **Defensive `monotonicOn` drop (Filter directly above a leaf)**:
|
|
13
|
+
* If a `FilterNode` sits directly above a leaf that advertises
|
|
14
|
+
* `monotonicOn(x)` and the filter's predicate contains a range or equality
|
|
15
|
+
* on `x` (i.e., the vtab declined to handle the bound), the row stream
|
|
16
|
+
* emerging from the *Filter* is no longer monotonic over the WHERE-restricted
|
|
17
|
+
* set. Drop `monotonicOn` (and the implied `accessCapabilities`) from the
|
|
18
|
+
* leaf so downstream rules (asof, merge-join) don't make false assumptions.
|
|
19
|
+
*
|
|
20
|
+
* The rule runs in the PostOptimization pass so it sees physical leaves with
|
|
21
|
+
* lifted advertisements + resolved FilterInfo. The annotation reads off the
|
|
22
|
+
* leaf's own `FilterInfo.constraints` (the canonical record of which bounds
|
|
23
|
+
* the access path is walking with). The defensive escalation reads the parent
|
|
24
|
+
* Filter's predicate.
|
|
25
|
+
*/
|
|
26
|
+
import { createLogger } from '../../../common/logger.js';
|
|
27
|
+
import { IndexConstraintOp } from '../../../common/constants.js';
|
|
28
|
+
import { SeqScanNode, IndexScanNode, IndexSeekNode } from '../../nodes/table-access-nodes.js';
|
|
29
|
+
import { FilterNode } from '../../nodes/filter.js';
|
|
30
|
+
import { LiteralNode } from '../../nodes/scalar.js';
|
|
31
|
+
import { extractConstraints, createTableInfoFromNode } from '../../analysis/constraint-extractor.js';
|
|
32
|
+
const log = createLogger('optimizer:rule:monotonic-range-access');
|
|
33
|
+
function isAccessLeaf(node) {
|
|
34
|
+
return node instanceof SeqScanNode || node instanceof IndexScanNode || node instanceof IndexSeekNode;
|
|
35
|
+
}
|
|
36
|
+
const GE_OR_GT = new Set([IndexConstraintOp.GE, IndexConstraintOp.GT]);
|
|
37
|
+
const LE_OR_LT = new Set([IndexConstraintOp.LE, IndexConstraintOp.LT]);
|
|
38
|
+
/**
|
|
39
|
+
* Walk the leaf's `FilterInfo.constraints` looking for handled bounds on the
|
|
40
|
+
* given column index. Returns the synthesized RangeBounds (literals included
|
|
41
|
+
* when the corresponding seek key is a LiteralNode); returns null when no
|
|
42
|
+
* range/equality bound exists.
|
|
43
|
+
*/
|
|
44
|
+
function extractRangeBounds(filterInfo, seekKeys, colIdx) {
|
|
45
|
+
const out = {};
|
|
46
|
+
let any = false;
|
|
47
|
+
for (const entry of filterInfo.constraints) {
|
|
48
|
+
const c = entry.constraint;
|
|
49
|
+
if (c.iColumn !== colIdx)
|
|
50
|
+
continue;
|
|
51
|
+
// argvIndex is 1-based into seekKeys (when seekKeys is the IndexSeekNode's seekKeys array).
|
|
52
|
+
const seekKey = seekKeys && entry.argvIndex >= 1 && entry.argvIndex <= seekKeys.length
|
|
53
|
+
? seekKeys[entry.argvIndex - 1]
|
|
54
|
+
: undefined;
|
|
55
|
+
const valueLiteral = seekKey instanceof LiteralNode ? seekKey.expression.value : undefined;
|
|
56
|
+
if (GE_OR_GT.has(c.op)) {
|
|
57
|
+
const op = c.op === IndexConstraintOp.GE ? '>=' : '>';
|
|
58
|
+
out.lower = valueLiteral !== undefined ? { op, valueLiteral } : { op };
|
|
59
|
+
any = true;
|
|
60
|
+
}
|
|
61
|
+
else if (LE_OR_LT.has(c.op)) {
|
|
62
|
+
const op = c.op === IndexConstraintOp.LE ? '<=' : '<';
|
|
63
|
+
out.upper = valueLiteral !== undefined ? { op, valueLiteral } : { op };
|
|
64
|
+
any = true;
|
|
65
|
+
}
|
|
66
|
+
else if (c.op === IndexConstraintOp.EQ) {
|
|
67
|
+
// Equality is a degenerate range [v, v]. Lift to both bounds.
|
|
68
|
+
const lo = valueLiteral !== undefined ? { op: '>=', valueLiteral } : { op: '>=' };
|
|
69
|
+
const hi = valueLiteral !== undefined ? { op: '<=', valueLiteral } : { op: '<=' };
|
|
70
|
+
out.lower = lo;
|
|
71
|
+
out.upper = hi;
|
|
72
|
+
any = true;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return any ? out : null;
|
|
76
|
+
}
|
|
77
|
+
function findColIndexForAttr(leaf, attrId) {
|
|
78
|
+
const attrs = leaf.source.getAttributes();
|
|
79
|
+
for (let i = 0; i < attrs.length; i++) {
|
|
80
|
+
if (attrs[i].id === attrId)
|
|
81
|
+
return i;
|
|
82
|
+
}
|
|
83
|
+
return -1;
|
|
84
|
+
}
|
|
85
|
+
/** Clone a leaf, attaching `rangeBoundedOn` to its physical properties. */
|
|
86
|
+
function leafWithRangeBound(leaf, rb) {
|
|
87
|
+
if (leaf instanceof SeqScanNode) {
|
|
88
|
+
return new SeqScanNode(leaf.scope, leaf.source, leaf.filterInfo, undefined, rb, leaf.suppressMonotonic);
|
|
89
|
+
}
|
|
90
|
+
if (leaf instanceof IndexScanNode) {
|
|
91
|
+
return new IndexScanNode(leaf.scope, leaf.source, leaf.filterInfo, leaf.indexName, leaf.providesOrdering, undefined, leaf.advertisement, rb, leaf.suppressMonotonic);
|
|
92
|
+
}
|
|
93
|
+
// IndexSeekNode
|
|
94
|
+
return new IndexSeekNode(leaf.scope, leaf.source, leaf.filterInfo, leaf.indexName, leaf.seekKeys, leaf.isRange, leaf.providesOrdering, undefined, leaf.advertisement, rb, leaf.suppressMonotonic);
|
|
95
|
+
}
|
|
96
|
+
/** Clone a leaf, suppressing the lifted `monotonicOn` advertisement. */
|
|
97
|
+
function leafWithMonotonicSuppressed(leaf) {
|
|
98
|
+
if (leaf instanceof SeqScanNode) {
|
|
99
|
+
return new SeqScanNode(leaf.scope, leaf.source, leaf.filterInfo, undefined, leaf.rangeBoundedOn, true);
|
|
100
|
+
}
|
|
101
|
+
if (leaf instanceof IndexScanNode) {
|
|
102
|
+
return new IndexScanNode(leaf.scope, leaf.source, leaf.filterInfo, leaf.indexName, leaf.providesOrdering, undefined, leaf.advertisement, leaf.rangeBoundedOn, true);
|
|
103
|
+
}
|
|
104
|
+
return new IndexSeekNode(leaf.scope, leaf.source, leaf.filterInfo, leaf.indexName, leaf.seekKeys, leaf.isRange, leaf.providesOrdering, undefined, leaf.advertisement, leaf.rangeBoundedOn, true);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Annotation pass for a physical access leaf. Sets `rangeBoundedOn` when the
|
|
108
|
+
* leaf advertises `monotonicOn(x)` AND its FilterInfo carries a handled
|
|
109
|
+
* range/equality on `x`. No-op otherwise.
|
|
110
|
+
*/
|
|
111
|
+
function applyAnnotation(leaf) {
|
|
112
|
+
// Don't re-annotate if we've already set rangeBoundedOn.
|
|
113
|
+
if (leaf.rangeBoundedOn)
|
|
114
|
+
return null;
|
|
115
|
+
const monotonicOn = leaf.physical.monotonicOn;
|
|
116
|
+
if (!monotonicOn || monotonicOn.length === 0)
|
|
117
|
+
return null;
|
|
118
|
+
const attrId = monotonicOn[0].attrId;
|
|
119
|
+
const colIdx = findColIndexForAttr(leaf, attrId);
|
|
120
|
+
if (colIdx < 0)
|
|
121
|
+
return null;
|
|
122
|
+
const seekKeys = leaf instanceof IndexSeekNode ? leaf.seekKeys : undefined;
|
|
123
|
+
const bounds = extractRangeBounds(leaf.filterInfo, seekKeys, colIdx);
|
|
124
|
+
if (!bounds)
|
|
125
|
+
return null;
|
|
126
|
+
const rb = {
|
|
127
|
+
attrId,
|
|
128
|
+
...(bounds.lower ? { lower: bounds.lower } : {}),
|
|
129
|
+
...(bounds.upper ? { upper: bounds.upper } : {}),
|
|
130
|
+
};
|
|
131
|
+
log('Annotating %s with rangeBoundedOn (attrId=%d)', leaf.nodeType, attrId);
|
|
132
|
+
return leafWithRangeBound(leaf, rb);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Defensive escalation: when a Filter sits directly above a leaf that
|
|
136
|
+
* advertises monotonicOn(x), and the Filter's predicate contains a range or
|
|
137
|
+
* equality on x, drop monotonicOn from the leaf — the row stream emerging
|
|
138
|
+
* from the Filter is not monotonic over the WHERE-restricted tuple set.
|
|
139
|
+
*/
|
|
140
|
+
function applyDefensiveDrop(filter) {
|
|
141
|
+
if (!isAccessLeaf(filter.source))
|
|
142
|
+
return null;
|
|
143
|
+
const leaf = filter.source;
|
|
144
|
+
const monotonicOn = leaf.physical.monotonicOn;
|
|
145
|
+
if (!monotonicOn || monotonicOn.length === 0)
|
|
146
|
+
return null;
|
|
147
|
+
if (leaf.suppressMonotonic)
|
|
148
|
+
return null;
|
|
149
|
+
const attrId = monotonicOn[0].attrId;
|
|
150
|
+
const colIdx = findColIndexForAttr(leaf, attrId);
|
|
151
|
+
if (colIdx < 0)
|
|
152
|
+
return null;
|
|
153
|
+
// Walk the Filter predicate to see if it carries a range/equality on the
|
|
154
|
+
// monotonic column. We use the constraint extractor to canonicalize the
|
|
155
|
+
// predicate, then look for a constraint on the matching attribute id.
|
|
156
|
+
const tableInfo = createTableInfoFromNode(leaf.source);
|
|
157
|
+
const result = extractConstraints(filter.predicate, [tableInfo]);
|
|
158
|
+
const offending = result.allConstraints.some(c => c.attributeId === attrId &&
|
|
159
|
+
(c.op === '=' || c.op === '>' || c.op === '>=' || c.op === '<' || c.op === '<='));
|
|
160
|
+
if (!offending)
|
|
161
|
+
return null;
|
|
162
|
+
log('Filter directly above leaf carries unhandled range on monotonic attr %d; suppressing monotonicOn', attrId);
|
|
163
|
+
const newLeaf = leafWithMonotonicSuppressed(leaf);
|
|
164
|
+
return filter.withChildren([newLeaf, filter.predicate]);
|
|
165
|
+
}
|
|
166
|
+
export function ruleMonotonicRangeAccess(node, _ctx) {
|
|
167
|
+
if (node instanceof FilterNode) {
|
|
168
|
+
return applyDefensiveDrop(node);
|
|
169
|
+
}
|
|
170
|
+
if (isAccessLeaf(node)) {
|
|
171
|
+
return applyAnnotation(node);
|
|
172
|
+
}
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=rule-monotonic-range-access.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-monotonic-range-access.js","sourceRoot":"","sources":["../../../../../src/planner/rules/access/rule-monotonic-range-access.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-select-access-path.d.ts","sourceRoot":"","sources":["../../../../../src/planner/rules/access/rule-select-access-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,0BAA0B,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"rule-select-access-path.d.ts","sourceRoot":"","sources":["../../../../../src/planner/rules/access/rule-select-access-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,0BAA0B,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAoC7D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,GAAG,QAAQ,GAAG,IAAI,CA0DzF"}
|
|
@@ -21,6 +21,25 @@ import { extractConstraintsForTable, createTableInfoFromNode } from '../../analy
|
|
|
21
21
|
import { LiteralNode } from '../../nodes/scalar.js';
|
|
22
22
|
import { IndexConstraintOp } from '../../../common/constants.js';
|
|
23
23
|
const log = createLogger('optimizer:rule:select-access-path');
|
|
24
|
+
/**
|
|
25
|
+
* Extract the monotonic-ordering advertisement from a `BestAccessPlanResult`,
|
|
26
|
+
* or return undefined when nothing is advertised. The result is forwarded to
|
|
27
|
+
* the physical leaf node so it can lift the advertisement onto its
|
|
28
|
+
* `physical.monotonicOn` / `physical.accessCapabilities`.
|
|
29
|
+
*/
|
|
30
|
+
function extractAdvertisement(plan) {
|
|
31
|
+
if (!plan.monotonicOn && !plan.supportsOrdinalSeek && !plan.supportsAsofRight) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
const advertisement = {};
|
|
35
|
+
if (plan.monotonicOn)
|
|
36
|
+
advertisement.monotonicOn = plan.monotonicOn;
|
|
37
|
+
if (plan.supportsOrdinalSeek)
|
|
38
|
+
advertisement.supportsOrdinalSeek = true;
|
|
39
|
+
if (plan.supportsAsofRight)
|
|
40
|
+
advertisement.supportsAsofRight = true;
|
|
41
|
+
return advertisement;
|
|
42
|
+
}
|
|
24
43
|
export function ruleSelectAccessPath(node, context) {
|
|
25
44
|
// Guard: node must be a RetrieveNode
|
|
26
45
|
if (!(node instanceof RetrieveNode)) {
|
|
@@ -203,6 +222,7 @@ function selectPhysicalNode(tableRef, accessPlan, constraints) {
|
|
|
203
222
|
* Works for both primary key and secondary indexes.
|
|
204
223
|
*/
|
|
205
224
|
function selectPhysicalNodeFromPlan(tableRef, accessPlan, constraints, filterInfo, providesOrdering) {
|
|
225
|
+
const advertisement = extractAdvertisement(accessPlan);
|
|
206
226
|
const seekCols = accessPlan.seekColumnIndexes;
|
|
207
227
|
// Map accessPlan.indexName to physical node indexName ('_primary_' → 'primary')
|
|
208
228
|
const physicalIndexName = accessPlan.indexName === '_primary_' ? 'primary' : accessPlan.indexName;
|
|
@@ -259,7 +279,7 @@ function selectPhysicalNodeFromPlan(tableRef, accessPlan, constraints, filterInf
|
|
|
259
279
|
idxStr: `idx=${idxStrName}(0);plan=5;inCount=${inValues.length}`,
|
|
260
280
|
};
|
|
261
281
|
log('Using index multi-seek on %s (IN with %d values)', physicalIndexName, inValues.length);
|
|
262
|
-
return new IndexSeekNode(tableRef.scope, tableRef, fi, physicalIndexName, seekKeys, false, providesOrdering, accessPlan.cost);
|
|
282
|
+
return new IndexSeekNode(tableRef.scope, tableRef, fi, physicalIndexName, seekKeys, false, providesOrdering, accessPlan.cost, advertisement);
|
|
263
283
|
}
|
|
264
284
|
if (hasMultiValueIn && seekCols.length > 1) {
|
|
265
285
|
// Composite IN multi-seek: generate cross-product of all column values
|
|
@@ -301,7 +321,7 @@ function selectPhysicalNodeFromPlan(tableRef, accessPlan, constraints, filterInf
|
|
|
301
321
|
idxStr: `idx=${idxStrName}(0);plan=5;inCount=${crossProduct.length};seekWidth=${seekWidth}`,
|
|
302
322
|
};
|
|
303
323
|
log('Using composite index multi-seek on %s (cross-product of %d seeks, width %d)', physicalIndexName, crossProduct.length, seekWidth);
|
|
304
|
-
return new IndexSeekNode(tableRef.scope, tableRef, fi, physicalIndexName, seekKeys, false, providesOrdering, accessPlan.cost);
|
|
324
|
+
return new IndexSeekNode(tableRef.scope, tableRef, fi, physicalIndexName, seekKeys, false, providesOrdering, accessPlan.cost, advertisement);
|
|
305
325
|
}
|
|
306
326
|
// Standard equality seek on all seek columns
|
|
307
327
|
const seekKeys = seekCols.map(colIdx => {
|
|
@@ -321,7 +341,7 @@ function selectPhysicalNodeFromPlan(tableRef, accessPlan, constraints, filterInf
|
|
|
321
341
|
idxStr: `idx=${idxStrName}(0);plan=2`,
|
|
322
342
|
};
|
|
323
343
|
log('Using index seek on %s (equality)', physicalIndexName);
|
|
324
|
-
return new IndexSeekNode(tableRef.scope, tableRef, fi, physicalIndexName, seekKeys, false, providesOrdering, accessPlan.cost);
|
|
344
|
+
return new IndexSeekNode(tableRef.scope, tableRef, fi, physicalIndexName, seekKeys, false, providesOrdering, accessPlan.cost, advertisement);
|
|
325
345
|
}
|
|
326
346
|
// Check for prefix-equality + trailing-range pattern
|
|
327
347
|
if (!allEquality && seekCols.length > 1) {
|
|
@@ -376,7 +396,7 @@ function selectPhysicalNodeFromPlan(tableRef, accessPlan, constraints, filterInf
|
|
|
376
396
|
idxStr: `idx=${idxStrName}(0);plan=7;prefixLen=${prefixEqCols.length}`,
|
|
377
397
|
};
|
|
378
398
|
log('Using index prefix-range seek on %s (prefix=%d cols)', physicalIndexName, prefixEqCols.length);
|
|
379
|
-
return new IndexSeekNode(tableRef.scope, tableRef, fi, physicalIndexName, seekKeys, true, providesOrdering, accessPlan.cost);
|
|
399
|
+
return new IndexSeekNode(tableRef.scope, tableRef, fi, physicalIndexName, seekKeys, true, providesOrdering, accessPlan.cost, advertisement);
|
|
380
400
|
}
|
|
381
401
|
}
|
|
382
402
|
// Check for range constraints on the seek columns
|
|
@@ -408,7 +428,7 @@ function selectPhysicalNodeFromPlan(tableRef, accessPlan, constraints, filterInf
|
|
|
408
428
|
idxStr: `idx=${idxStrName}(0);plan=3`,
|
|
409
429
|
};
|
|
410
430
|
log('Using index seek (range) on %s', physicalIndexName);
|
|
411
|
-
return new IndexSeekNode(tableRef.scope, tableRef, fi, physicalIndexName, seekKeys, true, providesOrdering, accessPlan.cost);
|
|
431
|
+
return new IndexSeekNode(tableRef.scope, tableRef, fi, physicalIndexName, seekKeys, true, providesOrdering, accessPlan.cost, advertisement);
|
|
412
432
|
}
|
|
413
433
|
// Check for OR_RANGE constraint on a seek column
|
|
414
434
|
const orRangeConstraint = constraints.find(c => c.op === 'OR_RANGE' && c.ranges && c.ranges.length > 0 &&
|
|
@@ -445,7 +465,7 @@ function selectPhysicalNodeFromPlan(tableRef, accessPlan, constraints, filterInf
|
|
|
445
465
|
idxStr: `idx=${idxStrName}(0);plan=6;rangeCount=${ranges.length};rangeOps=${rangeOps.join(',')}`,
|
|
446
466
|
};
|
|
447
467
|
log('Using index multi-range seek on %s (%d ranges)', physicalIndexName, ranges.length);
|
|
448
|
-
return new IndexSeekNode(tableRef.scope, tableRef, fi, physicalIndexName, seekKeys, true, providesOrdering, accessPlan.cost);
|
|
468
|
+
return new IndexSeekNode(tableRef.scope, tableRef, fi, physicalIndexName, seekKeys, true, providesOrdering, accessPlan.cost, advertisement);
|
|
449
469
|
}
|
|
450
470
|
// Ordering-only index scan
|
|
451
471
|
if (providesOrdering) {
|
|
@@ -461,7 +481,7 @@ function selectPhysicalNodeFromPlan(tableRef, accessPlan, constraints, filterInf
|
|
|
461
481
|
orderByConsumed: true,
|
|
462
482
|
}
|
|
463
483
|
};
|
|
464
|
-
return new IndexScanNode(tableRef.scope, tableRef, orderingFilterInfo, orderingIndexName, providesOrdering, accessPlan.cost);
|
|
484
|
+
return new IndexScanNode(tableRef.scope, tableRef, orderingFilterInfo, orderingIndexName, providesOrdering, accessPlan.cost, advertisement);
|
|
465
485
|
}
|
|
466
486
|
// Fall back to sequential scan
|
|
467
487
|
log('Using sequential scan (index %s: no usable seek/range constraints)', physicalIndexName);
|
|
@@ -472,6 +492,7 @@ function selectPhysicalNodeFromPlan(tableRef, accessPlan, constraints, filterInf
|
|
|
472
492
|
* doesn't provide indexName/seekColumnIndexes (PK-based heuristics).
|
|
473
493
|
*/
|
|
474
494
|
function selectPhysicalNodeLegacy(tableRef, accessPlan, constraints, filterInfo, providesOrdering) {
|
|
495
|
+
const advertisement = extractAdvertisement(accessPlan);
|
|
475
496
|
// Analyze the access plan to determine node type
|
|
476
497
|
const handledByCol = new Set();
|
|
477
498
|
constraints.forEach((c, i) => {
|
|
@@ -505,7 +526,7 @@ function selectPhysicalNodeLegacy(tableRef, accessPlan, constraints, filterInfo,
|
|
|
505
526
|
idxStr: 'idx=_primary_(0);plan=2',
|
|
506
527
|
};
|
|
507
528
|
log('Using index seek on primary key (legacy)');
|
|
508
|
-
return new IndexSeekNode(tableRef.scope, tableRef, fi, 'primary', seekKeys, false, providesOrdering, accessPlan.cost);
|
|
529
|
+
return new IndexSeekNode(tableRef.scope, tableRef, fi, 'primary', seekKeys, false, providesOrdering, accessPlan.cost, advertisement);
|
|
509
530
|
}
|
|
510
531
|
if (hasRangeConstraints) {
|
|
511
532
|
const rangeCols = constraints
|
|
@@ -533,7 +554,7 @@ function selectPhysicalNodeLegacy(tableRef, accessPlan, constraints, filterInfo,
|
|
|
533
554
|
idxStr: 'idx=_primary_(0);plan=3',
|
|
534
555
|
};
|
|
535
556
|
log('Using index seek (range) on primary key (legacy)');
|
|
536
|
-
return new IndexSeekNode(tableRef.scope, tableRef, fi, 'primary', seekKeys, true, providesOrdering, accessPlan.cost);
|
|
557
|
+
return new IndexSeekNode(tableRef.scope, tableRef, fi, 'primary', seekKeys, true, providesOrdering, accessPlan.cost, advertisement);
|
|
537
558
|
}
|
|
538
559
|
if (providesOrdering) {
|
|
539
560
|
const indexName = accessPlan.orderingIndexName ?? 'primary';
|
|
@@ -548,7 +569,7 @@ function selectPhysicalNodeLegacy(tableRef, accessPlan, constraints, filterInfo,
|
|
|
548
569
|
orderByConsumed: true,
|
|
549
570
|
}
|
|
550
571
|
};
|
|
551
|
-
return new IndexScanNode(tableRef.scope, tableRef, orderingFilterInfo, indexName, providesOrdering, accessPlan.cost);
|
|
572
|
+
return new IndexScanNode(tableRef.scope, tableRef, orderingFilterInfo, indexName, providesOrdering, accessPlan.cost, advertisement);
|
|
552
573
|
}
|
|
553
574
|
log('Using sequential scan (no beneficial index access)');
|
|
554
575
|
return createSeqScan(tableRef, filterInfo, accessPlan.cost);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-select-access-path.js","sourceRoot":"","sources":["../../../../../src/planner/rules/access/rule-select-access-path.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rule-select-access-path.js","sourceRoot":"","sources":["../../../../../src/planner/rules/access/rule-select-access-path.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared helper: extract equi-join pairs and residual predicate from an ON
|
|
3
|
+
* condition. Used by both `rule-join-physical-selection` (ordering-based) and
|
|
4
|
+
* `rule-monotonic-merge-join` (MonotonicOn-based).
|
|
5
|
+
*/
|
|
6
|
+
import type { ScalarPlanNode, RelationalPlanNode } from '../../nodes/plan-node.js';
|
|
7
|
+
import type { EquiJoinPair } from '../../nodes/join-utils.js';
|
|
8
|
+
export interface EquiPairExtraction {
|
|
9
|
+
equiPairs: EquiJoinPair[];
|
|
10
|
+
residual: ScalarPlanNode | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* For each entry in `equiPairs`, the original `=` ScalarPlanNode it was
|
|
13
|
+
* extracted from (or `undefined` for USING-derived pairs that have no
|
|
14
|
+
* source node). Same length and order as `equiPairs`. Useful when a rule
|
|
15
|
+
* wants to demote a subset of equi-pairs back into the residual (e.g., the
|
|
16
|
+
* monotonic-merge rule keeps only the monotonic-driving pair as the merge
|
|
17
|
+
* key and pushes the rest into the residual).
|
|
18
|
+
*/
|
|
19
|
+
equiPairNodes: Array<ScalarPlanNode | undefined>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Check whether `source`'s `physical.ordering` covers the given equi-pair
|
|
23
|
+
* columns positionally for the chosen `side` (the merge-join emitter compares
|
|
24
|
+
* keys in equi-pair order, so the source must be ASC-sorted on each
|
|
25
|
+
* equi-pair attribute at exactly that position). Returns false on the first
|
|
26
|
+
* mismatch.
|
|
27
|
+
*/
|
|
28
|
+
export declare function isOrderedOnEquiPairs(source: RelationalPlanNode, equiPairs: readonly EquiJoinPair[], side: 'left' | 'right'): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Reorder equi-pairs so they line up with the left source's ordering prefix,
|
|
31
|
+
* and verify the right source agrees on the same reordered key sequence.
|
|
32
|
+
* Returns null when no reordering can satisfy both sides simultaneously.
|
|
33
|
+
*/
|
|
34
|
+
export declare function reorderEquiPairsForMerge(equiPairs: readonly EquiJoinPair[], left: RelationalPlanNode, right: RelationalPlanNode): EquiJoinPair[] | null;
|
|
35
|
+
/**
|
|
36
|
+
* True when both sides' physical ordering covers ALL equi-pairs in the
|
|
37
|
+
* exact (or reorderable) order required by the merge-join emitter. When this
|
|
38
|
+
* holds the ordering-based rule will produce a multi-key merge join with
|
|
39
|
+
* proper unique-key propagation; rules that demote pairs to residual should
|
|
40
|
+
* defer to that path instead of taking a single-pair merge.
|
|
41
|
+
*/
|
|
42
|
+
export declare function isMergeReadyOnAllPairs(left: RelationalPlanNode, right: RelationalPlanNode, equiPairs: readonly EquiJoinPair[]): boolean;
|
|
43
|
+
/** Combine an existing residual and a list of extra scalar conjuncts into a single AND-tree. */
|
|
44
|
+
export declare function combineResidual(base: ScalarPlanNode | undefined, extras: ReadonlyArray<ScalarPlanNode>): ScalarPlanNode | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Extract equi-join pairs and residual predicates from an ON condition.
|
|
47
|
+
* Returns null if no equi-pairs are found.
|
|
48
|
+
*/
|
|
49
|
+
export declare function extractEquiPairs(condition: ScalarPlanNode | undefined, leftAttrIds: Set<number>, rightAttrIds: Set<number>): EquiPairExtraction | null;
|
|
50
|
+
/**
|
|
51
|
+
* Convert USING-column names into equi-pairs given the left/right attributes.
|
|
52
|
+
* Returns null if no pairs could be matched.
|
|
53
|
+
*/
|
|
54
|
+
export declare function extractEquiPairsFromUsing(usingColumns: readonly string[] | undefined, leftAttrs: ReadonlyArray<{
|
|
55
|
+
id: number;
|
|
56
|
+
name: string;
|
|
57
|
+
}>, rightAttrs: ReadonlyArray<{
|
|
58
|
+
id: number;
|
|
59
|
+
name: string;
|
|
60
|
+
}>): EquiPairExtraction | null;
|
|
61
|
+
//# sourceMappingURL=equi-pair-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equi-pair-extractor.d.ts","sourceRoot":"","sources":["../../../../../src/planner/rules/join/equi-pair-extractor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAM9D,MAAM,WAAW,kBAAkB;IAClC,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAC;IACrC;;;;;;;OAOG;IACH,aAAa,EAAE,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;CACjD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,kBAAkB,EAC1B,SAAS,EAAE,SAAS,YAAY,EAAE,EAClC,IAAI,EAAE,MAAM,GAAG,OAAO,GACpB,OAAO,CAaT;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACvC,SAAS,EAAE,SAAS,YAAY,EAAE,EAClC,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAE,kBAAkB,GACvB,YAAY,EAAE,GAAG,IAAI,CAqBvB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAE,kBAAkB,EACzB,SAAS,EAAE,SAAS,YAAY,EAAE,GAChC,OAAO,CAQT;AAED,gGAAgG;AAChG,wBAAgB,eAAe,CAC9B,IAAI,EAAE,cAAc,GAAG,SAAS,EAChC,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,GACnC,cAAc,GAAG,SAAS,CAc5B;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,SAAS,EAAE,cAAc,GAAG,SAAS,EACrC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GACvB,kBAAkB,GAAG,IAAI,CA4C3B;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACxC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAC3C,SAAS,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EACtD,UAAU,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GACrD,kBAAkB,GAAG,IAAI,CAa3B"}
|