From e5e03b222f45a0dfe30047584e6ac1659713ba1a Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Tue, 15 Jul 2025 16:36:43 -0700 Subject: [PATCH 01/21] made lookup join cost estimate function more similar to previous function --- memory/table.go | 8 ++++++++ sql/memo/coster.go | 11 +++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/memory/table.go b/memory/table.go index 63bebeaacb..f2435a230d 100644 --- a/memory/table.go +++ b/memory/table.go @@ -507,6 +507,10 @@ func (i *indexScanRowIter) Next(ctx *sql.Context) (sql.Row, error) { } func indexRowMatches(ranges sql.Expression, candidate sql.Row) (bool, error) { + if ranges == nil { + // If there is no ranges expression, default to match all (return all rows) + return true, nil + } result, err := ranges.Eval(nil, candidate) if err != nil { return false, err @@ -1670,6 +1674,10 @@ func adjustRangeScanFilterForIndexLookup(filter sql.Expression, index *Index) sq } } + if filter == nil { + return filter + } + filter, _, err := transform.Expr(filter, func(e sql.Expression) (sql.Expression, transform.TreeIdentity, error) { if gf, ok := e.(*expression.GetField); ok { idxIdx := indexStorageSchema.IndexOfColName(gf.Name()) diff --git a/sql/memo/coster.go b/sql/memo/coster.go index a313f6aa00..1020160482 100644 --- a/sql/memo/coster.go +++ b/sql/memo/coster.go @@ -124,15 +124,14 @@ func (c *coster) costRel(ctx *sql.Context, n RelExpr, s sql.StatsProvider) (floa // TODO added overhead for right lookups switch n := n.(type) { case *LookupJoin: - if !n.Injective { - // partial index completion is undesirable - // TODO don't do this whe we have stats - selfJoinCard = math.Max(0, selfJoinCard+float64(indexCoverageAdjustment(n.Lookup))) + if n.Injective { + return lBest*seqIOCostFactor + lBest*randIOCostFactor, nil } - + sel := lookupJoinSelectivity(n.Lookup, n.JoinBase) + expectedRightRows := selfJoinCard * sel // read the whole left table and randIO into table equivalent to // this join's output cardinality estimate - return lBest*seqIOCostFactor + selfJoinCard*(randIOCostFactor+seqIOCostFactor), nil + return lBest*seqIOCostFactor + expectedRightRows*randIOCostFactor, nil case *ConcatJoin: return c.costConcatJoin(ctx, n, s) } From 12ad271165f4edb0d7c7ccf2669a58dfb5ccf075 Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Tue, 15 Jul 2025 16:55:00 -0700 Subject: [PATCH 02/21] updated join planning test --- enginetest/join_planning_tests.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/enginetest/join_planning_tests.go b/enginetest/join_planning_tests.go index 753bbec61b..3fec5bc238 100644 --- a/enginetest/join_planning_tests.go +++ b/enginetest/join_planning_tests.go @@ -260,7 +260,7 @@ var JoinPlanningTests = []joinPlanScript{ { // When primary table is much larger, doing many lookups is expensive: prefer merge q: "select /*+ JOIN_ORDER(rs, xy) */ * from rs join xy on x = r order by 1,3", - types: []plan.JoinType{plan.JoinTypeLookup}, + types: []plan.JoinType{plan.JoinTypeMerge}, exp: []sql.Row{{0, 0, 0, 8}, {2, 3, 2, 1}, {3, 0, 3, 7}, {4, 8, 4, 0}, {5, 4, 5, 4}}, }, { @@ -411,7 +411,7 @@ var JoinPlanningTests = []joinPlanScript{ }, { q: "select * from xy where y+1 not in (select u from uv);", - types: []plan.JoinType{plan.JoinTypeLeftOuterHashExcludeNulls}, + types: []plan.JoinType{plan.JoinTypeLeftOuterLookup}, exp: []sql.Row{{3, 3}}, }, { @@ -822,7 +822,7 @@ where u in (select * from rec);`, tests: []JoinPlanTest{ { q: "select * from xy where x in (select u from uv join ab on u = a and a = 2) order by 1;", - types: []plan.JoinType{plan.JoinTypeInner, plan.JoinTypeLookup}, + types: []plan.JoinType{plan.JoinTypeLookup, plan.JoinTypeLookup}, exp: []sql.Row{{2, 1}}, }, { From a5d46f4a2b35c5b39e7be810ec1cc5d78855c1ab Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Wed, 16 Jul 2025 16:22:45 -0700 Subject: [PATCH 03/21] addressed jason's comments --- memory/table.go | 8 ++++---- sql/memo/coster.go | 27 ++++++++++++++++----------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/memory/table.go b/memory/table.go index f2435a230d..d7bcaefeef 100644 --- a/memory/table.go +++ b/memory/table.go @@ -1665,6 +1665,10 @@ func (t *IndexedTable) LookupPartitions(ctx *sql.Context, lookup sql.IndexLookup } func adjustRangeScanFilterForIndexLookup(filter sql.Expression, index *Index) sql.Expression { + if filter == nil { + return filter + } + exprs := index.ExtendedExprs() indexStorageSchema := make(sql.Schema, len(exprs)) @@ -1674,10 +1678,6 @@ func adjustRangeScanFilterForIndexLookup(filter sql.Expression, index *Index) sq } } - if filter == nil { - return filter - } - filter, _, err := transform.Expr(filter, func(e sql.Expression) (sql.Expression, transform.TreeIdentity, error) { if gf, ok := e.(*expression.GetField); ok { idxIdx := indexStorageSchema.IndexOfColName(gf.Name()) diff --git a/sql/memo/coster.go b/sql/memo/coster.go index 1020160482..42dd71e05d 100644 --- a/sql/memo/coster.go +++ b/sql/memo/coster.go @@ -121,16 +121,19 @@ func (c *coster) costRel(ctx *sql.Context, n RelExpr, s sql.StatsProvider) (floa // TODO: estimate memory overhead return float64(lTableScan+rTableScan)*(seqIOCostFactor+cpuCostFactor) + cpuCostFactor*selfJoinCard, nil case jp.Op.IsLookup(): - // TODO added overhead for right lookups switch n := n.(type) { case *LookupJoin: - if n.Injective { + // Match rate is what proportion of rows from the right side we're expected to read + matchRate := lookupJoinMatchRate(n.Lookup, n.JoinBase) + + // If LookupJoin is injective, then there will only be one right lookup per left row + if n.Injective || matchRate == 0 { return lBest*seqIOCostFactor + lBest*randIOCostFactor, nil } - sel := lookupJoinSelectivity(n.Lookup, n.JoinBase) - expectedRightRows := selfJoinCard * sel - // read the whole left table and randIO into table equivalent to - // this join's output cardinality estimate + + // The total expected number of right row lookups + expectedRightRows := lBest * matchRate + // Estimate for reading each left row and each expected right row return lBest*seqIOCostFactor + expectedRightRows*randIOCostFactor, nil case *ConcatJoin: return c.costConcatJoin(ctx, n, s) @@ -227,15 +230,17 @@ func (c *coster) costConcatJoin(_ *sql.Context, n *ConcatJoin, _ sql.StatsProvid var sel float64 for _, l := range n.Concat { lookup := l - sel += lookupJoinSelectivity(lookup, n.JoinBase) + sel += lookupJoinMatchRate(lookup, n.JoinBase) } return l*sel*concatCostFactor*(randIOCostFactor+cpuCostFactor) - float64(n.Right.RelProps.GetStats().RowCount())*seqIOCostFactor, nil } -// lookupJoinSelectivity estimates the selectivity of a join condition with n lhs rows and m rhs rows. -// A join with a selectivity of k will return k*(n*m) rows. -// Special case: A join with a selectivity of 0 will return n rows. -func lookupJoinSelectivity(l *IndexScan, joinBase *JoinBase) float64 { +// lookupJoinMatchRate returns a heuristic estimate of the proportion of right-side rows matched +// for each left-side row in a LookupJoin. Lower values indicate higher selectivity (i.e., more filtering). +// +// Special case: If the lookup is injective (i.e., at most one match per left row), we return 0 to +// indicate that join cardinality is ≀ the left-side cardinality. +func lookupJoinMatchRate(l *IndexScan, joinBase *JoinBase) float64 { if isInjectiveLookup(l.Index, joinBase, l.Table.Expressions(), l.Table.NullMask()) { return 0 } From 0068f9eff66999d35b7883ad53914078478e2894 Mon Sep 17 00:00:00 2001 From: angelamayxie Date: Wed, 16 Jul 2025 23:24:04 +0000 Subject: [PATCH 04/21] [ga-format-pr] Run ./format_repo.sh to fix formatting --- memory/table.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/memory/table.go b/memory/table.go index d7bcaefeef..e13c4e915e 100644 --- a/memory/table.go +++ b/memory/table.go @@ -1668,7 +1668,7 @@ func adjustRangeScanFilterForIndexLookup(filter sql.Expression, index *Index) sq if filter == nil { return filter } - + exprs := index.ExtendedExprs() indexStorageSchema := make(sql.Schema, len(exprs)) From 7a77707c2013a8778716935724fc8515b579827a Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Wed, 16 Jul 2025 16:33:48 -0700 Subject: [PATCH 05/21] use selfJoinCard for expectedRightRows estimate --- sql/memo/coster.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/memo/coster.go b/sql/memo/coster.go index 42dd71e05d..914415c25e 100644 --- a/sql/memo/coster.go +++ b/sql/memo/coster.go @@ -132,9 +132,9 @@ func (c *coster) costRel(ctx *sql.Context, n RelExpr, s sql.StatsProvider) (floa } // The total expected number of right row lookups - expectedRightRows := lBest * matchRate + expectedRightRows := selfJoinCard * matchRate // Estimate for reading each left row and each expected right row - return lBest*seqIOCostFactor + expectedRightRows*randIOCostFactor, nil + return lBest*seqIOCostFactor + expectedRightRows*(randIOCostFactor+seqIOCostFactor), nil case *ConcatJoin: return c.costConcatJoin(ctx, n, s) } From ed952893a22f7384ff37d2f86c58f92313f897ca Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Wed, 16 Jul 2025 19:24:38 -0700 Subject: [PATCH 06/21] =?UTF-8?q?Update=20query=20plans:=20MergeJoin=20?= =?UTF-8?q?=E2=86=92=20SemiLookupJoin=20with=20cost=20improvements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Updated ExpectedPlan, ExpectedEstimates, and ExpectedAnalysis sections - Changed MergeJoin to SemiLookupJoin with simplified structure - Reduced cost estimates from 3300.000 to 2300.000 - Copied actual test output to replace expected output - Reduced test failures from 838 to 832 πŸ€– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- enginetest/queries/query_plans.go | 95 +++++++++++++------------------ 1 file changed, 39 insertions(+), 56 deletions(-) diff --git a/enginetest/queries/query_plans.go b/enginetest/queries/query_plans.go index a8e9b9724c..b1cafdc7df 100644 --- a/enginetest/queries/query_plans.go +++ b/enginetest/queries/query_plans.go @@ -403,32 +403,23 @@ offset 1;`, " β”œβ”€ Distinct\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [xy_1.x:0!null]\n" + - " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [xy_1.x:0!null, xy_1.y:1]\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ xy_1.x:0!null\n" + - " β”‚ β”‚ └─ xy_2.y:2\n" + - " β”‚ β”œβ”€ TableAlias(xy_1)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(xy)\n" + - " β”‚ β”‚ β”œβ”€ index: [xy.x]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: xy\n" + - " β”‚ β”‚ └─ columns: [x y]\n" + - " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [xy_2.y:1]\n" + - " β”‚ └─ TableAlias(xy_2)\n" + - " β”‚ └─ IndexedTableAccess(xy)\n" + - " β”‚ β”œβ”€ index: [xy.y]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: xy\n" + - " β”‚ └─ columns: [x y]\n" + + " β”‚ └─ SemiLookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(xy_1)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: xy\n" + + " β”‚ β”‚ └─ columns: [x y]\n" + + " β”‚ └─ Project\n" + + " β”‚ β”œβ”€ columns: [xy_2.y:1]\n" + + " β”‚ └─ TableAlias(xy_2)\n" + + " β”‚ └─ IndexedTableAccess(xy)\n" + + " β”‚ β”œβ”€ index: [xy.y]\n" + + " β”‚ β”œβ”€ keys: [xy_1.x:0!null]\n" + + " β”‚ β”œβ”€ colSet: (5,6)\n" + + " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: xy\n" + + " β”‚ └─ columns: [x y]\n" + " └─ IndexedTableAccess(xy)\n" + " β”œβ”€ index: [xy.y]\n" + " β”œβ”€ keys: [xy_1.x:0!null]\n" + @@ -440,50 +431,42 @@ offset 1;`, "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [xy.x]\n" + - " └─ LookupJoin (estimated cost=3300.000 rows=1000)\n" + + " └─ LookupJoin (estimated cost=2300.000 rows=1000)\n" + " β”œβ”€ (xy.y = xy_1.x)\n" + " β”œβ”€ Distinct\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [xy_1.x]\n" + - " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [xy_1.x, xy_1.y]\n" + - " β”‚ └─ MergeJoin (estimated cost=2030.000 rows=1000)\n" + - " β”‚ β”œβ”€ cmp: (xy_1.x = xy_2.y)\n" + - " β”‚ β”œβ”€ TableAlias(xy_1)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(xy)\n" + - " β”‚ β”‚ β”œβ”€ index: [xy.x]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [xy_2.y]\n" + - " β”‚ └─ TableAlias(xy_2)\n" + - " β”‚ └─ IndexedTableAccess(xy)\n" + - " β”‚ β”œβ”€ index: [xy.y]\n" + - " β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ SemiLookupJoin (estimated cost=2300.000 rows=1000)\n" + + " β”‚ β”œβ”€ TableAlias(xy_1)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ └─ name: xy\n" + + " β”‚ └─ Project\n" + + " β”‚ β”œβ”€ columns: [xy_2.y]\n" + + " β”‚ └─ TableAlias(xy_2)\n" + + " β”‚ └─ IndexedTableAccess(xy)\n" + + " β”‚ β”œβ”€ index: [xy.y]\n" + + " β”‚ └─ keys: xy_1.x\n" + " └─ IndexedTableAccess(xy)\n" + " β”œβ”€ index: [xy.y]\n" + " └─ keys: xy_1.x\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [xy.x]\n" + - " └─ LookupJoin (estimated cost=3300.000 rows=1000) (actual rows=4 loops=1)\n" + + " └─ LookupJoin (estimated cost=2300.000 rows=1000) (actual rows=4 loops=1)\n" + " β”œβ”€ (xy.y = xy_1.x)\n" + " β”œβ”€ Distinct\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [xy_1.x]\n" + - " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [xy_1.x, xy_1.y]\n" + - " β”‚ └─ MergeJoin (estimated cost=2030.000 rows=1000) (actual rows=4 loops=1)\n" + - " β”‚ β”œβ”€ cmp: (xy_1.x = xy_2.y)\n" + - " β”‚ β”œβ”€ TableAlias(xy_1)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(xy)\n" + - " β”‚ β”‚ β”œβ”€ index: [xy.x]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [xy_2.y]\n" + - " β”‚ └─ TableAlias(xy_2)\n" + - " β”‚ └─ IndexedTableAccess(xy)\n" + - " β”‚ β”œβ”€ index: [xy.y]\n" + - " β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ SemiLookupJoin (estimated cost=2300.000 rows=1000) (actual rows=4 loops=1)\n" + + " β”‚ β”œβ”€ TableAlias(xy_1)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ └─ name: xy\n" + + " β”‚ └─ Project\n" + + " β”‚ β”œβ”€ columns: [xy_2.y]\n" + + " β”‚ └─ TableAlias(xy_2)\n" + + " β”‚ └─ IndexedTableAccess(xy)\n" + + " β”‚ β”œβ”€ index: [xy.y]\n" + + " β”‚ └─ keys: xy_1.x\n" + " └─ IndexedTableAccess(xy)\n" + " β”œβ”€ index: [xy.y]\n" + " └─ keys: xy_1.x\n" + From 593de4248a5ff551fa283b0ee7c0313d9088ac59 Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Wed, 16 Jul 2025 19:30:32 -0700 Subject: [PATCH 07/21] Update LeftOuterMergeJoin to LeftOuterLookupJoin (partial) --- enginetest/queries/query_plans.go | 174 +++++++++++++++--------------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/enginetest/queries/query_plans.go b/enginetest/queries/query_plans.go index b1cafdc7df..c266d985d2 100644 --- a/enginetest/queries/query_plans.go +++ b/enginetest/queries/query_plans.go @@ -496,7 +496,7 @@ offset 1;`, "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [xy.x, xy.y, uv.u, uv.v]\n" + - " └─ LookupJoin (estimated cost=6.600 rows=2)\n" + + " └─ LookupJoin (estimated cost=4.600 rows=2)\n" + " β”œβ”€ IndexedTableAccess(uv)\n" + " β”‚ β”œβ”€ index: [uv.u]\n" + " β”‚ β”œβ”€ filters: [{(0, 2)}]\n" + @@ -508,7 +508,7 @@ offset 1;`, "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [xy.x, xy.y, uv.u, uv.v]\n" + - " └─ LookupJoin (estimated cost=6.600 rows=2) (actual rows=1 loops=1)\n" + + " └─ LookupJoin (estimated cost=4.600 rows=2) (actual rows=1 loops=1)\n" + " β”œβ”€ IndexedTableAccess(uv)\n" + " β”‚ β”œβ”€ index: [uv.u]\n" + " β”‚ β”œβ”€ filters: [{(0, 2)}]\n" + @@ -539,7 +539,7 @@ From xy;`, " β”‚ β”œβ”€ columns: [xy.x:3!null, xy.y:4]\n" + " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ uv.u:5!null IS NULL\n" + - " β”‚ └─ LeftOuterMergeJoin\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”œβ”€ cmp: Eq\n" + " β”‚ β”‚ β”œβ”€ xy.x:3!null\n" + " β”‚ β”‚ └─ uv.u:5!null\n" + @@ -1321,7 +1321,7 @@ WHERE "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [customer1.c_discount, customer1.c_last, customer1.c_credit, warehouse1.w_tax]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + " β”œβ”€ IndexedTableAccess(warehouse1)\n" + " β”‚ β”œβ”€ index: [warehouse1.w_id]\n" + " β”‚ β”œβ”€ filters: [{[1, 1]}]\n" + @@ -1335,7 +1335,7 @@ WHERE "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [customer1.c_discount, customer1.c_last, customer1.c_credit, warehouse1.w_tax]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1) (actual rows=0 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=0 loops=1)\n" + " β”œβ”€ IndexedTableAccess(warehouse1)\n" + " β”‚ β”œβ”€ index: [warehouse1.w_id]\n" + " β”‚ β”œβ”€ filters: [{[1, 1]}]\n" + @@ -1477,8 +1477,8 @@ where "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [style.assetId]\n" + - " └─ LookupJoin (estimated cost=19.800 rows=6)\n" + - " β”œβ”€ LookupJoin (estimated cost=19.800 rows=6)\n" + + " └─ LookupJoin (estimated cost=6.173 rows=6)\n" + + " β”œβ”€ LookupJoin (estimated cost=6.173 rows=6)\n" + " β”‚ β”œβ”€ TableAlias(style)\n" + " β”‚ β”‚ └─ IndexedTableAccess(asset)\n" + " β”‚ β”‚ β”œβ”€ index: [asset.orgId,asset.name,asset.val]\n" + @@ -1501,8 +1501,8 @@ where "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [style.assetId]\n" + - " └─ LookupJoin (estimated cost=19.800 rows=6) (actual rows=1 loops=1)\n" + - " β”œβ”€ LookupJoin (estimated cost=19.800 rows=6) (actual rows=1 loops=1)\n" + + " └─ LookupJoin (estimated cost=6.173 rows=6) (actual rows=1 loops=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=6.173 rows=6) (actual rows=1 loops=1)\n" + " β”‚ β”œβ”€ TableAlias(style)\n" + " β”‚ β”‚ └─ IndexedTableAccess(asset)\n" + " β”‚ β”‚ β”œβ”€ index: [asset.orgId,asset.name,asset.val]\n" + @@ -2402,7 +2402,7 @@ Select * from ( "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [xy.x, xy.y]\n" + - " └─ LookupJoin (estimated cost=13.200 rows=4)\n" + + " └─ LookupJoin (estimated cost=9.200 rows=4)\n" + " β”œβ”€ (xy.x = ab.a)\n" + " β”œβ”€ OrderedDistinct\n" + " β”‚ └─ Project\n" + @@ -2423,7 +2423,7 @@ Select * from ( "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [xy.x, xy.y]\n" + - " └─ LookupJoin (estimated cost=13.200 rows=4) (actual rows=4 loops=1)\n" + + " └─ LookupJoin (estimated cost=9.200 rows=4) (actual rows=4 loops=1)\n" + " β”œβ”€ (xy.x = ab.a)\n" + " β”œβ”€ OrderedDistinct\n" + " β”‚ └─ Project\n" + @@ -2627,7 +2627,7 @@ Select * from ( "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [mytable.s]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + " β”œβ”€ (mytable.i = othertable.i2)\n" + " β”œβ”€ Distinct\n" + " β”‚ └─ Project\n" + @@ -2641,7 +2641,7 @@ Select * from ( "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [mytable.s]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1) (actual rows=1 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + " β”œβ”€ (mytable.i = othertable.i2)\n" + " β”œβ”€ Distinct\n" + " β”‚ └─ Project\n" + @@ -3740,7 +3740,7 @@ Select * from ( " β”‚ └─ Table\n" + " β”‚ └─ name: \n" + " β”‚ as is_one]\n" + - " └─ LookupJoin (estimated cost=13.200 rows=4)\n" + + " └─ LookupJoin (estimated cost=9.200 rows=4)\n" + " β”œβ”€ Table\n" + " β”‚ └─ name: uv\n" + " └─ IndexedTableAccess(xy)\n" + @@ -3767,7 +3767,7 @@ Select * from ( " β”‚ └─ Table\n" + " β”‚ └─ name: \n" + " β”‚ as is_one]\n" + - " └─ LookupJoin (estimated cost=13.200 rows=4) (actual rows=4 loops=1)\n" + + " └─ LookupJoin (estimated cost=9.200 rows=4) (actual rows=4 loops=1)\n" + " β”œβ”€ Table\n" + " β”‚ └─ name: uv\n" + " └─ IndexedTableAccess(xy)\n" + @@ -4170,7 +4170,7 @@ Select * from ( " β”œβ”€ Table\n" + " β”‚ β”œβ”€ name: ab\n" + " β”‚ └─ columns: [b]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + " β”œβ”€ IndexedTableAccess(uv)\n" + " β”‚ β”œβ”€ index: [uv.u]\n" + " β”‚ β”œβ”€ filters: [{[-1, -1]}]\n" + @@ -4187,7 +4187,7 @@ Select * from ( " β”œβ”€ Table\n" + " β”‚ β”œβ”€ name: ab\n" + " β”‚ └─ columns: [b]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1) (actual rows=0 loops=4)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=0 loops=4)\n" + " β”œβ”€ IndexedTableAccess(uv)\n" + " β”‚ β”œβ”€ index: [uv.u]\n" + " β”‚ β”œβ”€ filters: [{[-1, -1]}]\n" + @@ -4829,7 +4829,7 @@ Select * from ( " β”œβ”€ name: ab\n" + " └─ columns: [a]\n" + "", - ExpectedEstimates: "SemiLookupJoin (estimated cost=13.200 rows=4)\n" + + ExpectedEstimates: "SemiLookupJoin (estimated cost=9.200 rows=4)\n" + " β”œβ”€ Table\n" + " β”‚ └─ name: uv\n" + " └─ IndexedTableAccess(ab)\n" + @@ -4837,7 +4837,7 @@ Select * from ( " β”œβ”€ columns: [a]\n" + " └─ keys: uv.u\n" + "", - ExpectedAnalysis: "SemiLookupJoin (estimated cost=13.200 rows=4) (actual rows=4 loops=1)\n" + + ExpectedAnalysis: "SemiLookupJoin (estimated cost=9.200 rows=4) (actual rows=4 loops=1)\n" + " β”œβ”€ Table\n" + " β”‚ └─ name: uv\n" + " └─ IndexedTableAccess(ab)\n" + @@ -5384,7 +5384,7 @@ Select * from ( "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [xy.x, xy.y]\n" + - " └─ LookupJoin (estimated cost=330.000 rows=100)\n" + + " └─ LookupJoin (estimated cost=230.000 rows=100)\n" + " β”œβ”€ (cte.a = xy.x)\n" + " β”œβ”€ Distinct\n" + " β”‚ └─ Project\n" + @@ -5403,7 +5403,7 @@ Select * from ( "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [xy.x, xy.y]\n" + - " └─ LookupJoin (estimated cost=330.000 rows=100) (actual rows=4 loops=1)\n" + + " └─ LookupJoin (estimated cost=230.000 rows=100) (actual rows=4 loops=1)\n" + " β”œβ”€ (cte.a = xy.x)\n" + " β”œβ”€ Distinct\n" + " β”‚ └─ Project\n" + @@ -5599,7 +5599,7 @@ inner join xy on a = x;`, " β”œβ”€ name: xy\n" + " └─ columns: [x y]\n" + "", - ExpectedEstimates: "LookupJoin (estimated cost=330.000 rows=100)\n" + + ExpectedEstimates: "LookupJoin (estimated cost=230.000 rows=100)\n" + " β”œβ”€ SubqueryAlias\n" + " β”‚ β”œβ”€ name: alias2\n" + " β”‚ β”œβ”€ outerVisibility: false\n" + @@ -5625,7 +5625,7 @@ inner join xy on a = x;`, " β”œβ”€ columns: [x y]\n" + " └─ keys: alias2.a\n" + "", - ExpectedAnalysis: "LookupJoin (estimated cost=330.000 rows=100) (actual rows=4 loops=1)\n" + + ExpectedAnalysis: "LookupJoin (estimated cost=230.000 rows=100) (actual rows=4 loops=1)\n" + " β”œβ”€ SubqueryAlias\n" + " β”‚ β”œβ”€ name: alias2\n" + " β”‚ β”œβ”€ outerVisibility: false\n" + @@ -5701,7 +5701,7 @@ where exists "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [ab.a, ab.b]\n" + - " └─ LookupJoin (estimated cost=16.500 rows=5)\n" + + " └─ LookupJoin (estimated cost=11.500 rows=5)\n" + " β”œβ”€ (ab.a = uv.u)\n" + " β”œβ”€ OrderedDistinct\n" + " β”‚ └─ Project\n" + @@ -5722,7 +5722,7 @@ where exists "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [ab.a, ab.b]\n" + - " └─ LookupJoin (estimated cost=16.500 rows=5) (actual rows=4 loops=1)\n" + + " └─ LookupJoin (estimated cost=11.500 rows=5) (actual rows=4 loops=1)\n" + " β”œβ”€ (ab.a = uv.u)\n" + " β”œβ”€ OrderedDistinct\n" + " β”‚ └─ Project\n" + @@ -5904,7 +5904,7 @@ full join pq on a = p " β”œβ”€ columns: [ab.a, ab.b, uv.u, uv.v, pq.p, pq.q]\n" + " └─ FullOuterJoin (estimated cost=30.320 rows=5)\n" + " β”œβ”€ (ab.a = pq.p)\n" + - " β”œβ”€ LookupJoin (estimated cost=13.200 rows=4)\n" + + " β”œβ”€ LookupJoin (estimated cost=9.200 rows=4)\n" + " β”‚ β”œβ”€ Table\n" + " β”‚ β”‚ β”œβ”€ name: uv\n" + " β”‚ β”‚ └─ columns: [u v]\n" + @@ -5920,7 +5920,7 @@ full join pq on a = p " β”œβ”€ columns: [ab.a, ab.b, uv.u, uv.v, pq.p, pq.q]\n" + " └─ FullOuterJoin (estimated cost=30.320 rows=5) (actual rows=4 loops=1)\n" + " β”œβ”€ (ab.a = pq.p)\n" + - " β”œβ”€ LookupJoin (estimated cost=13.200 rows=4) (actual rows=4 loops=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=9.200 rows=4) (actual rows=4 loops=1)\n" + " β”‚ β”œβ”€ Table\n" + " β”‚ β”‚ β”œβ”€ name: uv\n" + " β”‚ β”‚ └─ columns: [u v]\n" + @@ -6578,7 +6578,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=2.010 rows=1)\n" + + " └─ InnerJoin (estimated cost=1.115 rows=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + " β”œβ”€ TableAlias(t2)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + @@ -6593,7 +6593,7 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=2.010 rows=1) (actual rows=1 loops=1)\n" + + " └─ InnerJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + " β”œβ”€ TableAlias(t2)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + @@ -6886,7 +6886,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=2.010 rows=1)\n" + + " └─ InnerJoin (estimated cost=1.115 rows=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + " β”œβ”€ TableAlias(t1)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + @@ -6901,7 +6901,7 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=2.010 rows=1) (actual rows=1 loops=1)\n" + + " └─ InnerJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + " β”œβ”€ TableAlias(t1)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + @@ -6944,7 +6944,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=2.010 rows=1)\n" + + " └─ InnerJoin (estimated cost=1.115 rows=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + " β”œβ”€ TableAlias(t2)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + @@ -6959,7 +6959,7 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=2.010 rows=1) (actual rows=1 loops=1)\n" + + " └─ InnerJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + " β”œβ”€ TableAlias(t2)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + @@ -7002,7 +7002,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=2.010 rows=1)\n" + + " └─ InnerJoin (estimated cost=1.115 rows=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + " β”œβ”€ TableAlias(t1)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + @@ -7017,7 +7017,7 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=2.010 rows=1) (actual rows=1 loops=1)\n" + + " └─ InnerJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + " β”œβ”€ TableAlias(t1)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + @@ -7060,7 +7060,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=2.010 rows=1)\n" + + " └─ InnerJoin (estimated cost=1.115 rows=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + " β”œβ”€ TableAlias(t2)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + @@ -7075,7 +7075,7 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=2.010 rows=1) (actual rows=1 loops=1)\n" + + " └─ InnerJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + " β”œβ”€ TableAlias(t2)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + @@ -8167,7 +8167,7 @@ inner join pq on true ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [mytable.i, selfjoin.i]\n" + " └─ SemiJoin (estimated cost=1.505 rows=1)\n" + - " β”œβ”€ LookupJoin (estimated cost=3.300 rows=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=1.058 rows=1)\n" + " β”‚ β”œβ”€ TableAlias(selfjoin)\n" + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -8183,7 +8183,7 @@ inner join pq on true ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [mytable.i, selfjoin.i]\n" + " └─ SemiJoin (estimated cost=1.505 rows=1) (actual rows=1 loops=1)\n" + - " β”œβ”€ LookupJoin (estimated cost=3.300 rows=1) (actual rows=1 loops=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + " β”‚ β”œβ”€ TableAlias(selfjoin)\n" + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -9052,7 +9052,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.s,mytable.i]\n" + @@ -9066,7 +9066,7 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1) (actual rows=0 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=0 loops=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.s,mytable.i]\n" + @@ -9157,7 +9157,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.s,mytable.i]\n" + @@ -9171,7 +9171,7 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1) (actual rows=0 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=0 loops=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.s,mytable.i]\n" + @@ -9210,7 +9210,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -9224,7 +9224,7 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1) (actual rows=0 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=0 loops=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -10092,10 +10092,10 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1)\n" + - " β”œβ”€ LookupJoin (estimated cost=3.300 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=1.058 rows=1)\n" + " β”‚ β”œβ”€ (a.i = c.i)\n" + - " β”‚ β”œβ”€ LookupJoin (estimated cost=3.300 rows=1)\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=1.058 rows=1)\n" + " β”‚ β”‚ β”œβ”€ TableAlias(c)\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -10119,10 +10119,10 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1) (actual rows=1 loops=1)\n" + - " β”œβ”€ LookupJoin (estimated cost=3.300 rows=1) (actual rows=1 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + " β”‚ β”œβ”€ (a.i = c.i)\n" + - " β”‚ β”œβ”€ LookupJoin (estimated cost=3.300 rows=1) (actual rows=1 loops=1)\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + " β”‚ β”‚ β”œβ”€ TableAlias(c)\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -10761,10 +10761,10 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1)\n" + - " β”œβ”€ LookupJoin (estimated cost=3.300 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=1.058 rows=1)\n" + " β”‚ β”œβ”€ (a.i = c.i)\n" + - " β”‚ β”œβ”€ LookupJoin (estimated cost=3.300 rows=1)\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=1.058 rows=1)\n" + " β”‚ β”‚ β”œβ”€ TableAlias(c)\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -10788,10 +10788,10 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1) (actual rows=1 loops=1)\n" + - " β”œβ”€ LookupJoin (estimated cost=3.300 rows=1) (actual rows=1 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + " β”‚ β”œβ”€ (a.i = c.i)\n" + - " β”‚ β”œβ”€ LookupJoin (estimated cost=3.300 rows=1) (actual rows=1 loops=1)\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + " β”‚ β”‚ β”œβ”€ TableAlias(c)\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -11075,7 +11075,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -11089,7 +11089,7 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1) (actual rows=0 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=0 loops=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -11655,7 +11655,7 @@ inner join pq on true " β”œβ”€ name: othertable\n" + " └─ columns: [s2 i2]\n" + "", - ExpectedEstimates: "LookupJoin (estimated cost=3.300 rows=1)\n" + + ExpectedEstimates: "LookupJoin (estimated cost=1.058 rows=1)\n" + " β”œβ”€ TableAlias(mt)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -11667,7 +11667,7 @@ inner join pq on true " β”œβ”€ columns: [s2 i2]\n" + " └─ keys: mt.i\n" + "", - ExpectedAnalysis: "LookupJoin (estimated cost=3.300 rows=1) (actual rows=1 loops=1)\n" + + ExpectedAnalysis: "LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + " β”œβ”€ TableAlias(mt)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -11756,7 +11756,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " └─ LeftOuterJoin (estimated cost=8.090 rows=3)\n" + + " └─ LeftOuterJoin (estimated cost=3.345 rows=3)\n" + " β”œβ”€ (mytable.i = (othertable.i2 - 1))\n" + " β”œβ”€ Table\n" + " β”‚ β”œβ”€ name: othertable\n" + @@ -11767,7 +11767,7 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " └─ LeftOuterJoin (estimated cost=8.090 rows=3) (actual rows=3 loops=1)\n" + + " └─ LeftOuterJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + " β”œβ”€ (mytable.i = (othertable.i2 - 1))\n" + " β”œβ”€ Table\n" + " β”‚ β”œβ”€ name: othertable\n" + @@ -11870,7 +11870,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [t1.timestamp]\n" + - " └─ InnerJoin (estimated cost=2.010 rows=1)\n" + + " └─ InnerJoin (estimated cost=1.115 rows=1)\n" + " β”œβ”€ (t1.TIMESTAMP = t2.tImEstamp)\n" + " β”œβ”€ TableAlias(t2)\n" + " β”‚ └─ Table\n" + @@ -11883,7 +11883,7 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [t1.timestamp]\n" + - " └─ InnerJoin (estimated cost=2.010 rows=1) (actual rows=1 loops=1)\n" + + " └─ InnerJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + " β”œβ”€ (t1.TIMESTAMP = t2.tImEstamp)\n" + " β”œβ”€ TableAlias(t2)\n" + " β”‚ └─ Table\n" + @@ -12981,7 +12981,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk]\n" + - " └─ LookupJoin (estimated cost=13.200 rows=4)\n" + + " └─ LookupJoin (estimated cost=9.200 rows=4)\n" + " β”œβ”€ MergeJoin (estimated cost=8.120 rows=4)\n" + " β”‚ β”œβ”€ cmp: (one_pk.pk = tpk.pk1)\n" + " β”‚ β”œβ”€ sel: (one_pk.pk = tpk.pk2)\n" + @@ -13002,7 +13002,7 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk]\n" + - " └─ LookupJoin (estimated cost=13.200 rows=4) (actual rows=2 loops=1)\n" + + " └─ LookupJoin (estimated cost=9.200 rows=4) (actual rows=2 loops=1)\n" + " β”œβ”€ MergeJoin (estimated cost=8.120 rows=4) (actual rows=2 loops=1)\n" + " β”‚ β”œβ”€ cmp: (one_pk.pk = tpk.pk1)\n" + " β”‚ β”œβ”€ sel: (one_pk.pk = tpk.pk2)\n" + @@ -13066,7 +13066,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk]\n" + - " └─ LookupJoin (estimated cost=13.200 rows=4)\n" + + " └─ LookupJoin (estimated cost=9.200 rows=4)\n" + " β”œβ”€ MergeJoin (estimated cost=8.120 rows=4)\n" + " β”‚ β”œβ”€ cmp: (one_pk.pk = tpk.pk1)\n" + " β”‚ β”œβ”€ sel: (one_pk.pk = tpk.pk2)\n" + @@ -13087,7 +13087,7 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk]\n" + - " └─ LookupJoin (estimated cost=13.200 rows=4) (actual rows=2 loops=1)\n" + + " └─ LookupJoin (estimated cost=9.200 rows=4) (actual rows=2 loops=1)\n" + " β”œβ”€ MergeJoin (estimated cost=8.120 rows=4) (actual rows=2 loops=1)\n" + " β”‚ β”œβ”€ cmp: (one_pk.pk = tpk.pk1)\n" + " β”‚ β”œβ”€ sel: (one_pk.pk = tpk.pk2)\n" + @@ -13434,7 +13434,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk]\n" + - " └─ LookupJoin (estimated cost=16.500 rows=5)\n" + + " └─ LookupJoin (estimated cost=11.500 rows=5)\n" + " β”œβ”€ LeftOuterMergeJoin (estimated cost=8.160 rows=5)\n" + " β”‚ β”œβ”€ cmp: (one_pk.pk = tpk.pk1)\n" + " β”‚ β”œβ”€ sel: (one_pk.pk = tpk.pk2)\n" + @@ -13455,7 +13455,7 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk]\n" + - " └─ LookupJoin (estimated cost=16.500 rows=5) (actual rows=2 loops=1)\n" + + " └─ LookupJoin (estimated cost=11.500 rows=5) (actual rows=2 loops=1)\n" + " β”œβ”€ LeftOuterMergeJoin (estimated cost=8.160 rows=5) (actual rows=4 loops=1)\n" + " β”‚ β”œβ”€ cmp: (one_pk.pk = tpk.pk1)\n" + " β”‚ β”œβ”€ sel: (one_pk.pk = tpk.pk2)\n" + @@ -17523,7 +17523,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.pk, a.c1, a.c2, a.c3, a.c4, a.c5]\n" + - " └─ LookupJoin (estimated cost=13.200 rows=4)\n" + + " └─ LookupJoin (estimated cost=9.200 rows=4)\n" + " β”œβ”€ (a.pk = c.pk)\n" + " β”œβ”€ MergeJoin (estimated cost=8.120 rows=4)\n" + " β”‚ β”œβ”€ cmp: (c.pk = b.pk)\n" + @@ -17545,7 +17545,7 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.pk, a.c1, a.c2, a.c3, a.c4, a.c5]\n" + - " └─ LookupJoin (estimated cost=13.200 rows=4) (actual rows=4 loops=1)\n" + + " └─ LookupJoin (estimated cost=9.200 rows=4) (actual rows=4 loops=1)\n" + " β”œβ”€ (a.pk = c.pk)\n" + " β”œβ”€ MergeJoin (estimated cost=8.120 rows=4) (actual rows=4 loops=1)\n" + " β”‚ β”œβ”€ cmp: (c.pk = b.pk)\n" + @@ -18125,13 +18125,13 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LeftOuterJoin (estimated cost=8.090 rows=3)\n" + + " └─ LeftOuterJoin (estimated cost=3.345 rows=3)\n" + " β”œβ”€ (b.i = d.i)\n" + " β”œβ”€ TableAlias(d)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i]\n" + - " └─ LeftOuterJoin (estimated cost=8.090 rows=3)\n" + + " └─ LeftOuterJoin (estimated cost=3.345 rows=3)\n" + " β”œβ”€ (a.i = (c.i - 1))\n" + " β”œβ”€ LeftOuterMergeJoin (estimated cost=6.120 rows=3)\n" + " β”‚ β”œβ”€ cmp: ((b.i + 1) = a.i)\n" + @@ -18152,13 +18152,13 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LeftOuterJoin (estimated cost=8.090 rows=3) (actual rows=3 loops=1)\n" + + " └─ LeftOuterJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + " β”œβ”€ (b.i = d.i)\n" + " β”œβ”€ TableAlias(d)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i]\n" + - " └─ LeftOuterJoin (estimated cost=8.090 rows=3) (actual rows=3 loops=3)\n" + + " └─ LeftOuterJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=3)\n" + " β”œβ”€ (a.i = (c.i - 1))\n" + " β”œβ”€ LeftOuterMergeJoin (estimated cost=6.120 rows=3) (actual rows=3 loops=3)\n" + " β”‚ β”œβ”€ cmp: ((b.i + 1) = a.i)\n" + @@ -18225,9 +18225,9 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s, b.s2, b.i2]\n" + - " └─ LeftOuterJoin (estimated cost=8.090 rows=3)\n" + + " └─ LeftOuterJoin (estimated cost=3.345 rows=3)\n" + " β”œβ”€ (b.i2 = d.i2)\n" + - " β”œβ”€ LeftOuterJoin (estimated cost=8.090 rows=3)\n" + + " β”œβ”€ LeftOuterJoin (estimated cost=3.345 rows=3)\n" + " β”‚ β”œβ”€ (a.i = (c.i - 1))\n" + " β”‚ β”œβ”€ LeftOuterMergeJoin (estimated cost=6.120 rows=3)\n" + " β”‚ β”‚ β”œβ”€ cmp: ((b.i2 + 1) = a.i)\n" + @@ -18252,9 +18252,9 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s, b.s2, b.i2]\n" + - " └─ LeftOuterJoin (estimated cost=8.090 rows=3) (actual rows=3 loops=1)\n" + + " └─ LeftOuterJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + " β”œβ”€ (b.i2 = d.i2)\n" + - " β”œβ”€ LeftOuterJoin (estimated cost=8.090 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ LeftOuterJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + " β”‚ β”œβ”€ (a.i = (c.i - 1))\n" + " β”‚ β”œβ”€ LeftOuterMergeJoin (estimated cost=6.120 rows=3) (actual rows=3 loops=1)\n" + " β”‚ β”‚ β”œβ”€ cmp: ((b.i2 + 1) = a.i)\n" + @@ -18325,9 +18325,9 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s, b.s2, b.i2]\n" + - " └─ LeftOuterJoin (estimated cost=8.090 rows=3)\n" + + " └─ LeftOuterJoin (estimated cost=3.345 rows=3)\n" + " β”œβ”€ (b.i2 = d.i2)\n" + - " β”œβ”€ LeftOuterJoin (estimated cost=8.090 rows=3)\n" + + " β”œβ”€ LeftOuterJoin (estimated cost=3.345 rows=3)\n" + " β”‚ β”œβ”€ (a.i = (c.i - 1))\n" + " β”‚ β”œβ”€ TableAlias(c)\n" + " β”‚ β”‚ └─ Table\n" + @@ -18352,9 +18352,9 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s, b.s2, b.i2]\n" + - " └─ LeftOuterJoin (estimated cost=8.090 rows=3) (actual rows=3 loops=1)\n" + + " └─ LeftOuterJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + " β”œβ”€ (b.i2 = d.i2)\n" + - " β”œβ”€ LeftOuterJoin (estimated cost=8.090 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ LeftOuterJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + " β”‚ β”œβ”€ (a.i = (c.i - 1))\n" + " β”‚ β”œβ”€ TableAlias(c)\n" + " β”‚ β”‚ └─ Table\n" + @@ -19074,7 +19074,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -19088,7 +19088,7 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1) (actual rows=1 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + From cb03dc6eda8b509c7623aa242bbf262e9354bae7 Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Wed, 16 Jul 2025 19:32:25 -0700 Subject: [PATCH 08/21] =?UTF-8?q?Progress=20on=20query=20plan=20test=20fix?= =?UTF-8?q?es:=20838=20=E2=86=92=20804=20failures?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Applied cost-only automation script (28 improvements) - Updated LeftOuterMergeJoin to LeftOuterLookupJoin (partial) - Total reduction: 34 test failures fixed - Continue systematically until zero failures πŸ€– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- engine.go | 2 + enginetest/memory_engine_test.go | 12 ++- test_output.txt | 4 + tools/auto_fix_plans.py | 121 +++++++++++++++++++++++++ tools/bulk_update.py | 104 ++++++++++++++++++++++ tools/fast_fix_plans.py | 107 ++++++++++++++++++++++ tools/fix_query_plans.py | 138 ++++++++++++++++++++++++++++ tools/update_all_plans.go | 118 ++++++++++++++++++++++++ tools/update_plans.go | 148 +++++++++++++++++++++++++++++++ tools/update_query_plans.py | 148 +++++++++++++++++++++++++++++++ 10 files changed, 898 insertions(+), 4 deletions(-) create mode 100644 test_output.txt create mode 100644 tools/auto_fix_plans.py create mode 100644 tools/bulk_update.py create mode 100644 tools/fast_fix_plans.py create mode 100644 tools/fix_query_plans.py create mode 100644 tools/update_all_plans.go create mode 100644 tools/update_plans.go create mode 100755 tools/update_query_plans.py diff --git a/engine.go b/engine.go index 714a0adb48..df19b1e5e2 100644 --- a/engine.go +++ b/engine.go @@ -184,6 +184,8 @@ func New(a *analyzer.Analyzer, cfg *Config) *Engine { a.Catalog.RegisterFunction(emptyCtx, function.GetLockingFuncs(ls)...) + //a.Verbose = true + //a.Debug = true ret := &Engine{ Analyzer: a, MemoryManager: sql.NewMemoryManager(sql.ProcessMemory), diff --git a/enginetest/memory_engine_test.go b/enginetest/memory_engine_test.go index 8f909df1ad..6deffcd73c 100644 --- a/enginetest/memory_engine_test.go +++ b/enginetest/memory_engine_test.go @@ -203,8 +203,12 @@ func TestSingleScript(t *testing.T) { t.Skip() var scripts = []queries.ScriptTest{ { - Name: "AS OF propagates to nested CALLs", - SetUpScript: []string{}, + Name: "AS OF propagates to nested CALLs", + SetUpScript: []string{ + "create table test (id varchar(255), parent varchar(255), primary key(id));", + "create table test2 (id varchar(255), parent varchar(255));", + "create unique index idx_test2_id on test2 (id);", + }, Assertions: []queries.ScriptTestAssertion{ { Query: "create procedure create_proc() create table t (i int primary key, j int);", @@ -230,8 +234,8 @@ func TestSingleScript(t *testing.T) { panic(err) } - //engine.EngineAnalyzer().Debug = true - //engine.EngineAnalyzer().Verbose = true + engine.EngineAnalyzer().Debug = true + engine.EngineAnalyzer().Verbose = true enginetest.TestScriptWithEngine(t, engine, harness, test) } diff --git a/test_output.txt b/test_output.txt new file mode 100644 index 0000000000..e714786b21 --- /dev/null +++ b/test_output.txt @@ -0,0 +1,4 @@ +# github.com/dolthub/go-mysql-server/enginetest +enginetest/enginetests.go:39:2: found packages sqle (engine.go) and main (update_plans.go) in /Users/amx/dolt_workspace/go-mysql-server +FAIL github.com/dolthub/go-mysql-server/enginetest [setup failed] +FAIL diff --git a/tools/auto_fix_plans.py b/tools/auto_fix_plans.py new file mode 100644 index 0000000000..635aa9b998 --- /dev/null +++ b/tools/auto_fix_plans.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 + +import subprocess +import re +import os + +def run_tests(): + """Run the tests and return the output""" + result = subprocess.run( + ['go', 'test', '-v', './enginetest', '-run', 'TestQueryPlans', '-count=1'], + cwd='/Users/amx/dolt_workspace/go-mysql-server', + capture_output=True, + text=True + ) + return result.stdout + result.stderr + +def extract_failures(output): + """Extract expected and actual values from test output""" + failures = [] + + # Find all "Not equal:" sections + sections = re.split(r'Not equal:', output) + + for section in sections[1:]: # Skip first empty section + # Look for expected and actual strings + expected_match = re.search(r'expected:\s*"([^"]*(?:\\.[^"]*)*)"', section, re.DOTALL) + actual_match = re.search(r'actual\s*:\s*"([^"]*(?:\\.[^"]*)*)"', section, re.DOTALL) + + if expected_match and actual_match: + expected = expected_match.group(1) + actual = actual_match.group(1) + + # Unescape the strings + expected = expected.replace('\\n', '\n').replace('\\"', '"').replace('\\\\', '\\') + actual = actual.replace('\\n', '\n').replace('\\"', '"').replace('\\\\', '\\') + + failures.append((expected, actual)) + + return failures + +def update_file(file_path, failures): + """Update the file by replacing expected with actual""" + with open(file_path, 'r') as f: + content = f.read() + + original_content = content + update_count = 0 + + for i, (expected, actual) in enumerate(failures): + print(f"Processing failure {i+1}/{len(failures)}...") + + # Create properly escaped Go string literals + expected_escaped = expected.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') + actual_escaped = actual.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') + + # Look for the exact quoted string in the file + search_for = f'"{expected_escaped}"' + replace_with = f'"{actual_escaped}"' + + # Count how many times this pattern appears + count = content.count(search_for) + if count > 0: + content = content.replace(search_for, replace_with) + update_count += count + print(f" βœ“ Replaced {count} occurrence(s)") + else: + # Try to find a unique substring to help debug + lines = expected.split('\n') + for line in lines[:3]: # Check first few lines + line = line.strip() + if line and len(line) > 15: # Look for substantial lines + line_escaped = line.replace('\\', '\\\\').replace('"', '\\"') + if line_escaped in content: + print(f" Found line '{line[:50]}...' in file but couldn't match full string") + break + else: + print(f" βœ— Could not find any part of expected string in file") + # Print first few lines for debugging + exp_lines = expected.split('\n')[:3] + print(f" Expected starts with: {exp_lines}") + + if update_count > 0: + with open(file_path, 'w') as f: + f.write(content) + + return update_count + +def main(): + query_plans_file = '/Users/amx/dolt_workspace/go-mysql-server/enginetest/queries/query_plans.go' + + print("Running tests to get failures...") + output = run_tests() + + print("Extracting failures...") + failures = extract_failures(output) + + if not failures: + print("No failures found to update") + return + + print(f"Found {len(failures)} test failures") + + # Update the file + print(f"Updating {query_plans_file}...") + update_count = update_file(query_plans_file, failures) + + print(f"\nMade {update_count} total replacements") + + # Run tests again to check improvement + print("\nRunning tests again to check progress...") + output2 = run_tests() + + if 'FAIL' not in output2: + print("βœ“ All tests now pass!") + else: + failures2 = extract_failures(output2) + improvement = len(failures) - len(failures2) + print(f"Failures: {len(failures)} β†’ {len(failures2)} (improved by {improvement})") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/tools/bulk_update.py b/tools/bulk_update.py new file mode 100644 index 0000000000..ffa4ff763a --- /dev/null +++ b/tools/bulk_update.py @@ -0,0 +1,104 @@ +#!/usr/bin/env python3 + +import subprocess +import re +import os +import sys + +def run_tests(): + """Run the tests and return the output""" + result = subprocess.run( + ['go', 'test', '-v', './enginetest', '-run', 'TestQueryPlans', '-count=1'], + cwd='/Users/amx/dolt_workspace/go-mysql-server', + capture_output=True, + text=True + ) + return result.stdout + result.stderr + +def extract_test_failures(output): + """Extract all test failures from the output""" + failures = [] + + # Split by test failure markers + sections = output.split('Not equal:') + + for section in sections[1:]: # Skip first section (before any failures) + # Find expected and actual values + expected_match = re.search(r'expected:\s*"([^"]*(?:\\.[^"]*)*)"', section, re.DOTALL) + actual_match = re.search(r'actual\s*:\s*"([^"]*(?:\\.[^"]*)*)"', section, re.DOTALL) + + if expected_match and actual_match: + expected = expected_match.group(1) + actual = actual_match.group(1) + + # Unescape the strings + expected = expected.replace('\\n', '\n').replace('\\"', '"').replace('\\\\', '\\') + actual = actual.replace('\\n', '\n').replace('\\"', '"').replace('\\\\', '\\') + + failures.append((expected, actual)) + + return failures + +def update_file(file_path, failures): + """Update the file with new expected values""" + with open(file_path, 'r') as f: + content = f.read() + + updated_content = content + update_count = 0 + + for expected, actual in failures: + # Create the Go string literals + expected_go = expected.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') + actual_go = actual.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') + + # Look for the expected string in quotes + search_pattern = f'"{expected_go}"' + replacement = f'"{actual_go}"' + + if search_pattern in updated_content: + updated_content = updated_content.replace(search_pattern, replacement, 1) + update_count += 1 + + if update_count > 0: + with open(file_path, 'w') as f: + f.write(updated_content) + + return update_count + +def main(): + query_plans_file = '/Users/amx/dolt_workspace/go-mysql-server/enginetest/queries/query_plans.go' + + for iteration in range(1, 21): + print(f"Iteration {iteration}...") + + # Run tests + output = run_tests() + + # Check if all tests passed + if 'FAIL' not in output: + print("All tests passed!") + break + + # Extract failures + failures = extract_test_failures(output) + + if not failures: + print("No failures found to update") + break + + print(f"Found {len(failures)} failures") + + # Update the file + update_count = update_file(query_plans_file, failures) + + print(f"Updated {update_count} test cases") + + if update_count == 0: + print("No updates were made - stopping") + break + + print("Bulk update complete!") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/tools/fast_fix_plans.py b/tools/fast_fix_plans.py new file mode 100644 index 0000000000..63bd14f403 --- /dev/null +++ b/tools/fast_fix_plans.py @@ -0,0 +1,107 @@ +#!/usr/bin/env python3 + +import subprocess +import re +import os + +def run_tests(): + """Run the tests and return the output""" + result = subprocess.run( + ['go', 'test', '-v', './enginetest', '-run', 'TestQueryPlans', '-count=1'], + cwd='/Users/amx/dolt_workspace/go-mysql-server', + capture_output=True, + text=True + ) + return result.stdout + result.stderr + +def extract_simple_failures(output): + """Extract simple cost-only changes that are easy to fix""" + cost_changes = [] + + # Look for simple cost changes in the diff output + lines = output.split('\n') + for i, line in enumerate(lines): + if '- └─ LookupJoin (estimated cost=' in line and i+1 < len(lines): + next_line = lines[i+1] + if '+ └─ LookupJoin (estimated cost=' in next_line: + # Extract the costs + old_cost_match = re.search(r'estimated cost=([0-9.]+)', line) + new_cost_match = re.search(r'estimated cost=([0-9.]+)', next_line) + if old_cost_match and new_cost_match: + old_cost = old_cost_match.group(1) + new_cost = new_cost_match.group(1) + cost_changes.append((old_cost, new_cost)) + + # Also look for other cost patterns + if '- ' in line and 'estimated cost=' in line and i+1 < len(lines): + next_line = lines[i+1] + if '+ ' in next_line and 'estimated cost=' in next_line: + old_cost_match = re.search(r'estimated cost=([0-9.]+)', line) + new_cost_match = re.search(r'estimated cost=([0-9.]+)', next_line) + if old_cost_match and new_cost_match: + old_cost = old_cost_match.group(1) + new_cost = new_cost_match.group(1) + cost_changes.append((old_cost, new_cost)) + + return cost_changes + +def update_costs(file_path, cost_changes): + """Update simple cost changes in the file""" + with open(file_path, 'r') as f: + content = f.read() + + update_count = 0 + + for old_cost, new_cost in cost_changes: + # Look for the pattern and replace + old_pattern = f'estimated cost={old_cost}' + new_pattern = f'estimated cost={new_cost}' + + count = content.count(old_pattern) + if count > 0: + content = content.replace(old_pattern, new_pattern) + update_count += count + print(f" βœ“ Updated cost {old_cost} β†’ {new_cost} ({count} occurrences)") + + if update_count > 0: + with open(file_path, 'w') as f: + f.write(content) + + return update_count + +def main(): + query_plans_file = '/Users/amx/dolt_workspace/go-mysql-server/enginetest/queries/query_plans.go' + + print("Running tests to get failures...") + output = run_tests() + + print("Extracting cost changes...") + cost_changes = extract_simple_failures(output) + + if not cost_changes: + print("No simple cost changes found") + return + + print(f"Found {len(cost_changes)} cost changes to make") + + # Update the file + print(f"Updating {query_plans_file}...") + update_count = update_costs(query_plans_file, cost_changes) + + print(f"\nMade {update_count} total cost updates") + + # Run tests again to check improvement + print("\nRunning tests again to check progress...") + output2 = run_tests() + + if 'FAIL' not in output2: + print("βœ“ All tests now pass!") + else: + # Count failures + failure_count = len(re.findall(r'Not equal:', output2)) + original_count = len(re.findall(r'Not equal:', output)) + improvement = original_count - failure_count + print(f"Failures: {original_count} β†’ {failure_count} (improved by {improvement})") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/tools/fix_query_plans.py b/tools/fix_query_plans.py new file mode 100644 index 0000000000..70a561999d --- /dev/null +++ b/tools/fix_query_plans.py @@ -0,0 +1,138 @@ +#!/usr/bin/env python3 + +import subprocess +import re +import os + +def run_tests(): + """Run the tests and return the output""" + result = subprocess.run( + ['go', 'test', '-v', './enginetest', '-run', 'TestQueryPlans', '-count=1'], + cwd='/Users/amx/dolt_workspace/go-mysql-server', + capture_output=True, + text=True + ) + return result.stdout + result.stderr + +def extract_failures(output): + """Extract expected and actual values from test output""" + failures = [] + + # Find all "Not equal:" sections + sections = re.split(r'Not equal:', output) + + for section in sections[1:]: # Skip first empty section + # Look for expected and actual strings + expected_match = re.search(r'expected:\s*"([^"]*(?:\\.[^"]*)*)"', section, re.DOTALL) + actual_match = re.search(r'actual\s*:\s*"([^"]*(?:\\.[^"]*)*)"', section, re.DOTALL) + + if expected_match and actual_match: + expected = expected_match.group(1) + actual = actual_match.group(1) + + # Unescape the strings + expected = expected.replace('\\n', '\n').replace('\\"', '"').replace('\\\\', '\\') + actual = actual.replace('\\n', '\n').replace('\\"', '"').replace('\\\\', '\\') + + failures.append((expected, actual)) + + return failures + +def update_file(file_path, failures): + """Update the file with all the fixes""" + with open(file_path, 'r') as f: + content = f.read() + + original_content = content + update_count = 0 + + for expected, actual in failures: + # Create properly escaped Go string literals + expected_escaped = expected.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') + actual_escaped = actual.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') + + # Look for the exact quoted string in the file + search_for = f'"{expected_escaped}"' + replace_with = f'"{actual_escaped}"' + + if search_for in content: + content = content.replace(search_for, replace_with, 1) + update_count += 1 + else: + # Try simpler matching - sometimes there are formatting differences + # Look for key distinguishing parts + if 'MergeJoin' in expected and 'SemiLookupJoin' in actual: + # This is a MergeJoin -> SemiLookupJoin replacement + # Find lines with MergeJoin and see if we can match context + lines = expected.split('\n') + for line in lines: + if 'MergeJoin' in line and line.strip() in content: + # Found a matching line, try to replace the whole block + context_lines = [] + for i in range(max(0, lines.index(line)-2), min(len(lines), lines.index(line)+3)): + context_lines.append(lines[i]) + context = '\n'.join(context_lines) + context_escaped = context.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') + + if f'"{context_escaped}"' in content: + # Replace the context block + actual_lines = actual.split('\n') + line_idx = None + for i, actual_line in enumerate(actual_lines): + if actual_line.strip() == line.replace('MergeJoin', 'SemiLookupJoin').strip(): + line_idx = i + break + + if line_idx is not None: + actual_context_lines = [] + for i in range(max(0, line_idx-2), min(len(actual_lines), line_idx+3)): + actual_context_lines.append(actual_lines[i]) + actual_context = '\n'.join(actual_context_lines) + actual_context_escaped = actual_context.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') + + content = content.replace(f'"{context_escaped}"', f'"{actual_context_escaped}"', 1) + update_count += 1 + break + + if update_count > 0: + with open(file_path, 'w') as f: + f.write(content) + + return update_count + +def main(): + query_plans_file = '/Users/amx/dolt_workspace/go-mysql-server/enginetest/queries/query_plans.go' + + for iteration in range(1, 11): + print(f"Iteration {iteration}...") + + # Run tests + output = run_tests() + + # Check if all tests pass + if 'FAIL' not in output: + print("All tests passed!") + break + + # Extract failures + failures = extract_failures(output) + + if not failures: + print("No failures found to update") + break + + print(f"Found {len(failures)} failures") + + # Update the file + update_count = update_file(query_plans_file, failures) + + print(f"Updated {update_count} test cases") + + if update_count == 0: + print("No updates were made - stopping") + break + + print("Script complete!") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/tools/update_all_plans.go b/tools/update_all_plans.go new file mode 100644 index 0000000000..073f74a723 --- /dev/null +++ b/tools/update_all_plans.go @@ -0,0 +1,118 @@ +package main + +import ( + "fmt" + "io/ioutil" + "os/exec" + "strings" +) + +func main() { + queryPlanFile := "/Users/amx/dolt_workspace/go-mysql-server/enginetest/queries/query_plans.go" + + for iteration := 1; iteration <= 20; iteration++ { + fmt.Printf("Iteration %d...\n", iteration) + + // Run the test and capture output + cmd := exec.Command("go", "test", "-v", "./enginetest", "-run", "TestQueryPlans", "-count=1") + cmd.Dir = "/Users/amx/dolt_workspace/go-mysql-server" + output, err := cmd.CombinedOutput() + + if err == nil { + fmt.Println("All tests passed!") + break + } + + outputStr := string(output) + + // Read the file + content, err := ioutil.ReadFile(queryPlanFile) + if err != nil { + fmt.Printf("Error reading file: %v\n", err) + return + } + + contentStr := string(content) + updatedContent := contentStr + updateCount := 0 + + // Split output into sections by test failures + sections := strings.Split(outputStr, "Not equal:") + + for _, section := range sections { + if !strings.Contains(section, "expected:") || !strings.Contains(section, "actual") { + continue + } + + // Extract expected and actual values using a more robust approach + expectedStart := strings.Index(section, "expected:") + actualStart := strings.Index(section, "actual") + + if expectedStart == -1 || actualStart == -1 || actualStart <= expectedStart { + continue + } + + expectedSection := section[expectedStart:actualStart] + actualSection := section[actualStart:] + + // Extract the quoted strings + expected := extractQuotedString(expectedSection) + actual := extractQuotedString(actualSection) + + if expected != "" && actual != "" { + // Try to find and replace in the file + quotedExpected := `"` + expected + `"` + quotedActual := `"` + actual + `"` + + if strings.Contains(updatedContent, quotedExpected) { + updatedContent = strings.Replace(updatedContent, quotedExpected, quotedActual, 1) + updateCount++ + } + } + } + + if updateCount > 0 { + // Write back to file + err = ioutil.WriteFile(queryPlanFile, []byte(updatedContent), 0644) + if err != nil { + fmt.Printf("Error writing file: %v\n", err) + return + } + fmt.Printf("Made %d updates\n", updateCount) + } else { + fmt.Printf("No updates made in iteration %d\n", iteration) + break + } + } + + fmt.Println("Update complete!") +} + +func extractQuotedString(section string) string { + // Find the first quote + start := strings.Index(section, `"`) + if start == -1 { + return "" + } + + // Find the matching end quote, handling escaped quotes + content := section[start+1:] + result := "" + i := 0 + + for i < len(content) { + if content[i] == '\\' && i+1 < len(content) { + // Escaped character + result += string(content[i]) + string(content[i+1]) + i += 2 + } else if content[i] == '"' { + // End quote found + break + } else { + result += string(content[i]) + i++ + } + } + + return result +} \ No newline at end of file diff --git a/tools/update_plans.go b/tools/update_plans.go new file mode 100644 index 0000000000..339c3ed320 --- /dev/null +++ b/tools/update_plans.go @@ -0,0 +1,148 @@ +package main + +import ( + "fmt" + "io/ioutil" + "os/exec" + "strings" +) + +func main() { + queryPlanFile := "/Users/amx/dolt_workspace/go-mysql-server/enginetest/queries/query_plans.go" + + for iteration := 1; iteration <= 10; iteration++ { + fmt.Printf("Iteration %d...\n", iteration) + + // Run the test and capture output + cmd := exec.Command("go", "test", "-v", "./enginetest", "-run", "TestQueryPlans") + cmd.Dir = "/Users/amx/dolt_workspace/go-mysql-server" + output, err := cmd.CombinedOutput() + + if err == nil { + fmt.Println("All tests passed!") + break + } + + outputStr := string(output) + + // Find all test failures with expected vs actual - more robust approach + lines := strings.Split(outputStr, "\n") + updateCount := 0 + + // Read the file + content, err := ioutil.ReadFile(queryPlanFile) + if err != nil { + fmt.Printf("Error reading file: %v\n", err) + return + } + + contentStr := string(content) + updatedContent := contentStr + + // Look for expected/actual pairs + for i := 0; i < len(lines); i++ { + line := strings.TrimSpace(lines[i]) + if strings.HasPrefix(line, "expected:") && strings.Contains(line, `"`) { + // Extract expected value + start := strings.Index(line, `"`) + if start == -1 { + continue + } + + // Find the end of the expected string, handling multi-line + expected := "" + currentLine := line[start+1:] + lineIdx := i + + // Keep reading until we find the closing quote + for lineIdx < len(lines) { + if lineIdx == i { + // First line + if strings.HasSuffix(currentLine, `"`) && !strings.HasSuffix(currentLine, `\"`) { + expected = currentLine[:len(currentLine)-1] + break + } + expected = currentLine + } else { + // Continuation lines + currentLine = lines[lineIdx] + if strings.HasSuffix(currentLine, `"`) && !strings.HasSuffix(currentLine, `\"`) { + expected += "\n" + currentLine[:len(currentLine)-1] + break + } + expected += "\n" + currentLine + } + lineIdx++ + } + + // Look for the actual value + actualStart := -1 + for j := lineIdx + 1; j < len(lines) && j < lineIdx + 10; j++ { + if strings.Contains(lines[j], "actual") && strings.Contains(lines[j], `"`) { + actualStart = j + break + } + } + + if actualStart == -1 { + continue + } + + // Extract actual value + actualLine := lines[actualStart] + start = strings.Index(actualLine, `"`) + if start == -1 { + continue + } + + actual := "" + currentLine = actualLine[start+1:] + lineIdx = actualStart + + // Keep reading until we find the closing quote + for lineIdx < len(lines) { + if lineIdx == actualStart { + // First line + if strings.HasSuffix(currentLine, `"`) && !strings.HasSuffix(currentLine, `\"`) { + actual = currentLine[:len(currentLine)-1] + break + } + actual = currentLine + } else { + // Continuation lines + currentLine = lines[lineIdx] + if strings.HasSuffix(currentLine, `"`) && !strings.HasSuffix(currentLine, `\"`) { + actual += "\n" + currentLine[:len(currentLine)-1] + break + } + actual += "\n" + currentLine + } + lineIdx++ + } + + // Try to find and replace in the file + if expected != "" && actual != "" && strings.Contains(updatedContent, `"`+expected+`"`) { + updatedContent = strings.ReplaceAll(updatedContent, `"`+expected+`"`, `"`+actual+`"`) + updateCount++ + } + } + } + + fmt.Printf("Found %d failures to update\n", updateCount) + + if updateCount > 0 { + // Write back to file + err = ioutil.WriteFile(queryPlanFile, []byte(updatedContent), 0644) + if err != nil { + fmt.Printf("Error writing file: %v\n", err) + return + } + fmt.Printf("Made %d updates\n", updateCount) + } else { + fmt.Printf("No updates made in iteration %d\n", iteration) + break + } + } + + fmt.Println("Update complete!") +} \ No newline at end of file diff --git a/tools/update_query_plans.py b/tools/update_query_plans.py new file mode 100755 index 0000000000..26a6c34ec7 --- /dev/null +++ b/tools/update_query_plans.py @@ -0,0 +1,148 @@ +#!/usr/bin/env python3 + +import subprocess +import re +import os +import sys + +def run_tests(): + """Run the tests and return the output""" + result = subprocess.run( + ['go', 'test', '-v', './enginetest', '-run', 'TestQueryPlans', '-count=1'], + cwd='/Users/amx/dolt_workspace/go-mysql-server', + capture_output=True, + text=True + ) + return result.stdout + result.stderr + +def parse_test_failures(output): + """Parse test failures and extract expected vs actual differences""" + failures = [] + + # Split by test failure sections + sections = output.split('Not equal:') + + for section in sections[1:]: # Skip first section (before any failures) + try: + # Find expected and actual values + expected_match = re.search(r'expected:\s*"([^"]*(?:\\.[^"]*)*)"', section, re.DOTALL) + actual_match = re.search(r'actual\s*:\s*"([^"]*(?:\\.[^"]*)*)"', section, re.DOTALL) + + if expected_match and actual_match: + expected = expected_match.group(1) + actual = actual_match.group(1) + + # Unescape the strings + expected = expected.replace('\\n', '\n').replace('\\"', '"').replace('\\\\', '\\') + actual = actual.replace('\\n', '\n').replace('\\"', '"').replace('\\\\', '\\') + + failures.append((expected, actual)) + except Exception as e: + print(f"Error parsing section: {e}") + continue + + return failures + +def find_and_replace_in_file(file_path, expected, actual): + """Find and replace expected with actual in the file""" + try: + with open(file_path, 'r') as f: + content = f.read() + + # Escape strings for Go string literals + expected_go = expected.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') + actual_go = actual.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') + + # Look for the expected string in quotes + search_pattern = f'"{expected_go}"' + replacement = f'"{actual_go}"' + + if search_pattern in content: + updated_content = content.replace(search_pattern, replacement, 1) + with open(file_path, 'w') as f: + f.write(updated_content) + return True + + # Try a more lenient approach - look for partial matches + # Focus on cost estimation changes which are simpler + expected_lines = expected.split('\n') + actual_lines = actual.split('\n') + + # Look for cost changes specifically + for i, (exp_line, act_line) in enumerate(zip(expected_lines, actual_lines)): + if 'estimated cost=' in exp_line and 'estimated cost=' in act_line: + # Extract the cost values + exp_cost_match = re.search(r'estimated cost=([0-9.]+)', exp_line) + act_cost_match = re.search(r'estimated cost=([0-9.]+)', act_line) + + if exp_cost_match and act_cost_match: + exp_cost = exp_cost_match.group(1) + act_cost = act_cost_match.group(1) + + # Find and replace this specific cost in the file + cost_pattern = f'estimated cost={exp_cost}' + cost_replacement = f'estimated cost={act_cost}' + + if cost_pattern in content: + updated_content = content.replace(cost_pattern, cost_replacement) + with open(file_path, 'w') as f: + f.write(updated_content) + return True + + # Try to find unique identifiers in the expected string + for line in expected_lines[:5]: # Check first few lines + line = line.strip() + if line and len(line) > 10 and '"' not in line: + # Look for this line as a substring + if line in content: + # Found a reference point, but replacing the whole block is complex + # For now, just report that we found it + return False + + except Exception as e: + print(f"Error updating file: {e}") + + return False + +def main(): + query_plans_file = '/Users/amx/dolt_workspace/go-mysql-server/enginetest/queries/query_plans.go' + + print("Running tests to get failures...") + output = run_tests() + + print("Parsing test failures...") + failures = parse_test_failures(output) + + if not failures: + print("No failures found or unable to parse failures") + return + + print(f"Found {len(failures)} test failures to update") + + update_count = 0 + for i, (expected, actual) in enumerate(failures): + print(f"Processing failure {i+1}/{len(failures)}...") + + if find_and_replace_in_file(query_plans_file, expected, actual): + update_count += 1 + print(f" βœ“ Updated") + else: + print(f" βœ— Could not find/update") + # Print first few lines for debugging + exp_lines = expected.split('\n')[:3] + print(f" Expected starts with: {exp_lines}") + + print(f"\nUpdated {update_count} out of {len(failures)} failures") + + # Run tests again to see improvement + print("\nRunning tests again to check improvement...") + output2 = run_tests() + + if 'FAIL' not in output2: + print("βœ“ All tests now pass!") + else: + failures2 = parse_test_failures(output2) + print(f"Still have {len(failures2)} failures (was {len(failures)})") + +if __name__ == "__main__": + main() \ No newline at end of file From 6867d1d0076dabb6dd6b98b0ad08c89e596dbee4 Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Wed, 16 Jul 2025 19:41:45 -0700 Subject: [PATCH 09/21] last claude commit before i manually update these tests :( --- enginetest/queries/query_plans.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/enginetest/queries/query_plans.go b/enginetest/queries/query_plans.go index c266d985d2..6dd3e4fc91 100644 --- a/enginetest/queries/query_plans.go +++ b/enginetest/queries/query_plans.go @@ -572,7 +572,7 @@ From xy;`, " β”‚ β”œβ”€ columns: [xy.x:2!null, xy.y:3]\n" + " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ uv.u:4!null IS NULL\n" + - " β”‚ └─ LeftOuterMergeJoin\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”œβ”€ cmp: Eq\n" + " β”‚ β”‚ β”œβ”€ xy.x:2!null\n" + " β”‚ β”‚ └─ uv.u:4!null\n" + From ff7f59562b6901f25813db17d140a778ec63e859 Mon Sep 17 00:00:00 2001 From: angelamayxie Date: Thu, 17 Jul 2025 02:43:03 +0000 Subject: [PATCH 10/21] [ga-format-pr] Run ./format_repo.sh to fix formatting --- tools/update_all_plans.go | 40 ++++++++++++++++++------------------- tools/update_plans.go | 42 +++++++++++++++++++-------------------- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/tools/update_all_plans.go b/tools/update_all_plans.go index 073f74a723..9596b3fbbf 100644 --- a/tools/update_all_plans.go +++ b/tools/update_all_plans.go @@ -9,68 +9,68 @@ import ( func main() { queryPlanFile := "/Users/amx/dolt_workspace/go-mysql-server/enginetest/queries/query_plans.go" - + for iteration := 1; iteration <= 20; iteration++ { fmt.Printf("Iteration %d...\n", iteration) - + // Run the test and capture output cmd := exec.Command("go", "test", "-v", "./enginetest", "-run", "TestQueryPlans", "-count=1") cmd.Dir = "/Users/amx/dolt_workspace/go-mysql-server" output, err := cmd.CombinedOutput() - + if err == nil { fmt.Println("All tests passed!") break } - + outputStr := string(output) - + // Read the file content, err := ioutil.ReadFile(queryPlanFile) if err != nil { fmt.Printf("Error reading file: %v\n", err) return } - + contentStr := string(content) updatedContent := contentStr updateCount := 0 - + // Split output into sections by test failures sections := strings.Split(outputStr, "Not equal:") - + for _, section := range sections { if !strings.Contains(section, "expected:") || !strings.Contains(section, "actual") { continue } - + // Extract expected and actual values using a more robust approach expectedStart := strings.Index(section, "expected:") actualStart := strings.Index(section, "actual") - + if expectedStart == -1 || actualStart == -1 || actualStart <= expectedStart { continue } - + expectedSection := section[expectedStart:actualStart] actualSection := section[actualStart:] - + // Extract the quoted strings expected := extractQuotedString(expectedSection) actual := extractQuotedString(actualSection) - + if expected != "" && actual != "" { // Try to find and replace in the file quotedExpected := `"` + expected + `"` quotedActual := `"` + actual + `"` - + if strings.Contains(updatedContent, quotedExpected) { updatedContent = strings.Replace(updatedContent, quotedExpected, quotedActual, 1) updateCount++ } } } - + if updateCount > 0 { // Write back to file err = ioutil.WriteFile(queryPlanFile, []byte(updatedContent), 0644) @@ -84,7 +84,7 @@ func main() { break } } - + fmt.Println("Update complete!") } @@ -94,12 +94,12 @@ func extractQuotedString(section string) string { if start == -1 { return "" } - + // Find the matching end quote, handling escaped quotes content := section[start+1:] result := "" i := 0 - + for i < len(content) { if content[i] == '\\' && i+1 < len(content) { // Escaped character @@ -113,6 +113,6 @@ func extractQuotedString(section string) string { i++ } } - + return result -} \ No newline at end of file +} diff --git a/tools/update_plans.go b/tools/update_plans.go index 339c3ed320..a2843861a4 100644 --- a/tools/update_plans.go +++ b/tools/update_plans.go @@ -9,36 +9,36 @@ import ( func main() { queryPlanFile := "/Users/amx/dolt_workspace/go-mysql-server/enginetest/queries/query_plans.go" - + for iteration := 1; iteration <= 10; iteration++ { fmt.Printf("Iteration %d...\n", iteration) - + // Run the test and capture output cmd := exec.Command("go", "test", "-v", "./enginetest", "-run", "TestQueryPlans") cmd.Dir = "/Users/amx/dolt_workspace/go-mysql-server" output, err := cmd.CombinedOutput() - + if err == nil { fmt.Println("All tests passed!") break } - + outputStr := string(output) - + // Find all test failures with expected vs actual - more robust approach lines := strings.Split(outputStr, "\n") updateCount := 0 - + // Read the file content, err := ioutil.ReadFile(queryPlanFile) if err != nil { fmt.Printf("Error reading file: %v\n", err) return } - + contentStr := string(content) updatedContent := contentStr - + // Look for expected/actual pairs for i := 0; i < len(lines); i++ { line := strings.TrimSpace(lines[i]) @@ -48,12 +48,12 @@ func main() { if start == -1 { continue } - + // Find the end of the expected string, handling multi-line expected := "" currentLine := line[start+1:] lineIdx := i - + // Keep reading until we find the closing quote for lineIdx < len(lines) { if lineIdx == i { @@ -74,31 +74,31 @@ func main() { } lineIdx++ } - + // Look for the actual value actualStart := -1 - for j := lineIdx + 1; j < len(lines) && j < lineIdx + 10; j++ { + for j := lineIdx + 1; j < len(lines) && j < lineIdx+10; j++ { if strings.Contains(lines[j], "actual") && strings.Contains(lines[j], `"`) { actualStart = j break } } - + if actualStart == -1 { continue } - + // Extract actual value actualLine := lines[actualStart] start = strings.Index(actualLine, `"`) if start == -1 { continue } - + actual := "" currentLine = actualLine[start+1:] lineIdx = actualStart - + // Keep reading until we find the closing quote for lineIdx < len(lines) { if lineIdx == actualStart { @@ -119,7 +119,7 @@ func main() { } lineIdx++ } - + // Try to find and replace in the file if expected != "" && actual != "" && strings.Contains(updatedContent, `"`+expected+`"`) { updatedContent = strings.ReplaceAll(updatedContent, `"`+expected+`"`, `"`+actual+`"`) @@ -127,9 +127,9 @@ func main() { } } } - + fmt.Printf("Found %d failures to update\n", updateCount) - + if updateCount > 0 { // Write back to file err = ioutil.WriteFile(queryPlanFile, []byte(updatedContent), 0644) @@ -143,6 +143,6 @@ func main() { break } } - + fmt.Println("Update complete!") -} \ No newline at end of file +} From 0aa88ab243ce725828c49e9c28a0f063e2e1d53f Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Wed, 16 Jul 2025 19:45:12 -0700 Subject: [PATCH 11/21] delete files that claude made --- test_output.txt | 4 - tools/auto_fix_plans.py | 121 ----------------------------- tools/bulk_update.py | 104 ------------------------- tools/fast_fix_plans.py | 107 -------------------------- tools/fix_query_plans.py | 138 --------------------------------- tools/update_all_plans.go | 118 ---------------------------- tools/update_plans.go | 148 ------------------------------------ tools/update_query_plans.py | 148 ------------------------------------ 8 files changed, 888 deletions(-) delete mode 100644 test_output.txt delete mode 100644 tools/auto_fix_plans.py delete mode 100644 tools/bulk_update.py delete mode 100644 tools/fast_fix_plans.py delete mode 100644 tools/fix_query_plans.py delete mode 100644 tools/update_all_plans.go delete mode 100644 tools/update_plans.go delete mode 100755 tools/update_query_plans.py diff --git a/test_output.txt b/test_output.txt deleted file mode 100644 index e714786b21..0000000000 --- a/test_output.txt +++ /dev/null @@ -1,4 +0,0 @@ -# github.com/dolthub/go-mysql-server/enginetest -enginetest/enginetests.go:39:2: found packages sqle (engine.go) and main (update_plans.go) in /Users/amx/dolt_workspace/go-mysql-server -FAIL github.com/dolthub/go-mysql-server/enginetest [setup failed] -FAIL diff --git a/tools/auto_fix_plans.py b/tools/auto_fix_plans.py deleted file mode 100644 index 635aa9b998..0000000000 --- a/tools/auto_fix_plans.py +++ /dev/null @@ -1,121 +0,0 @@ -#!/usr/bin/env python3 - -import subprocess -import re -import os - -def run_tests(): - """Run the tests and return the output""" - result = subprocess.run( - ['go', 'test', '-v', './enginetest', '-run', 'TestQueryPlans', '-count=1'], - cwd='/Users/amx/dolt_workspace/go-mysql-server', - capture_output=True, - text=True - ) - return result.stdout + result.stderr - -def extract_failures(output): - """Extract expected and actual values from test output""" - failures = [] - - # Find all "Not equal:" sections - sections = re.split(r'Not equal:', output) - - for section in sections[1:]: # Skip first empty section - # Look for expected and actual strings - expected_match = re.search(r'expected:\s*"([^"]*(?:\\.[^"]*)*)"', section, re.DOTALL) - actual_match = re.search(r'actual\s*:\s*"([^"]*(?:\\.[^"]*)*)"', section, re.DOTALL) - - if expected_match and actual_match: - expected = expected_match.group(1) - actual = actual_match.group(1) - - # Unescape the strings - expected = expected.replace('\\n', '\n').replace('\\"', '"').replace('\\\\', '\\') - actual = actual.replace('\\n', '\n').replace('\\"', '"').replace('\\\\', '\\') - - failures.append((expected, actual)) - - return failures - -def update_file(file_path, failures): - """Update the file by replacing expected with actual""" - with open(file_path, 'r') as f: - content = f.read() - - original_content = content - update_count = 0 - - for i, (expected, actual) in enumerate(failures): - print(f"Processing failure {i+1}/{len(failures)}...") - - # Create properly escaped Go string literals - expected_escaped = expected.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') - actual_escaped = actual.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') - - # Look for the exact quoted string in the file - search_for = f'"{expected_escaped}"' - replace_with = f'"{actual_escaped}"' - - # Count how many times this pattern appears - count = content.count(search_for) - if count > 0: - content = content.replace(search_for, replace_with) - update_count += count - print(f" βœ“ Replaced {count} occurrence(s)") - else: - # Try to find a unique substring to help debug - lines = expected.split('\n') - for line in lines[:3]: # Check first few lines - line = line.strip() - if line and len(line) > 15: # Look for substantial lines - line_escaped = line.replace('\\', '\\\\').replace('"', '\\"') - if line_escaped in content: - print(f" Found line '{line[:50]}...' in file but couldn't match full string") - break - else: - print(f" βœ— Could not find any part of expected string in file") - # Print first few lines for debugging - exp_lines = expected.split('\n')[:3] - print(f" Expected starts with: {exp_lines}") - - if update_count > 0: - with open(file_path, 'w') as f: - f.write(content) - - return update_count - -def main(): - query_plans_file = '/Users/amx/dolt_workspace/go-mysql-server/enginetest/queries/query_plans.go' - - print("Running tests to get failures...") - output = run_tests() - - print("Extracting failures...") - failures = extract_failures(output) - - if not failures: - print("No failures found to update") - return - - print(f"Found {len(failures)} test failures") - - # Update the file - print(f"Updating {query_plans_file}...") - update_count = update_file(query_plans_file, failures) - - print(f"\nMade {update_count} total replacements") - - # Run tests again to check improvement - print("\nRunning tests again to check progress...") - output2 = run_tests() - - if 'FAIL' not in output2: - print("βœ“ All tests now pass!") - else: - failures2 = extract_failures(output2) - improvement = len(failures) - len(failures2) - print(f"Failures: {len(failures)} β†’ {len(failures2)} (improved by {improvement})") - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/tools/bulk_update.py b/tools/bulk_update.py deleted file mode 100644 index ffa4ff763a..0000000000 --- a/tools/bulk_update.py +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/env python3 - -import subprocess -import re -import os -import sys - -def run_tests(): - """Run the tests and return the output""" - result = subprocess.run( - ['go', 'test', '-v', './enginetest', '-run', 'TestQueryPlans', '-count=1'], - cwd='/Users/amx/dolt_workspace/go-mysql-server', - capture_output=True, - text=True - ) - return result.stdout + result.stderr - -def extract_test_failures(output): - """Extract all test failures from the output""" - failures = [] - - # Split by test failure markers - sections = output.split('Not equal:') - - for section in sections[1:]: # Skip first section (before any failures) - # Find expected and actual values - expected_match = re.search(r'expected:\s*"([^"]*(?:\\.[^"]*)*)"', section, re.DOTALL) - actual_match = re.search(r'actual\s*:\s*"([^"]*(?:\\.[^"]*)*)"', section, re.DOTALL) - - if expected_match and actual_match: - expected = expected_match.group(1) - actual = actual_match.group(1) - - # Unescape the strings - expected = expected.replace('\\n', '\n').replace('\\"', '"').replace('\\\\', '\\') - actual = actual.replace('\\n', '\n').replace('\\"', '"').replace('\\\\', '\\') - - failures.append((expected, actual)) - - return failures - -def update_file(file_path, failures): - """Update the file with new expected values""" - with open(file_path, 'r') as f: - content = f.read() - - updated_content = content - update_count = 0 - - for expected, actual in failures: - # Create the Go string literals - expected_go = expected.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') - actual_go = actual.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') - - # Look for the expected string in quotes - search_pattern = f'"{expected_go}"' - replacement = f'"{actual_go}"' - - if search_pattern in updated_content: - updated_content = updated_content.replace(search_pattern, replacement, 1) - update_count += 1 - - if update_count > 0: - with open(file_path, 'w') as f: - f.write(updated_content) - - return update_count - -def main(): - query_plans_file = '/Users/amx/dolt_workspace/go-mysql-server/enginetest/queries/query_plans.go' - - for iteration in range(1, 21): - print(f"Iteration {iteration}...") - - # Run tests - output = run_tests() - - # Check if all tests passed - if 'FAIL' not in output: - print("All tests passed!") - break - - # Extract failures - failures = extract_test_failures(output) - - if not failures: - print("No failures found to update") - break - - print(f"Found {len(failures)} failures") - - # Update the file - update_count = update_file(query_plans_file, failures) - - print(f"Updated {update_count} test cases") - - if update_count == 0: - print("No updates were made - stopping") - break - - print("Bulk update complete!") - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/tools/fast_fix_plans.py b/tools/fast_fix_plans.py deleted file mode 100644 index 63bd14f403..0000000000 --- a/tools/fast_fix_plans.py +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env python3 - -import subprocess -import re -import os - -def run_tests(): - """Run the tests and return the output""" - result = subprocess.run( - ['go', 'test', '-v', './enginetest', '-run', 'TestQueryPlans', '-count=1'], - cwd='/Users/amx/dolt_workspace/go-mysql-server', - capture_output=True, - text=True - ) - return result.stdout + result.stderr - -def extract_simple_failures(output): - """Extract simple cost-only changes that are easy to fix""" - cost_changes = [] - - # Look for simple cost changes in the diff output - lines = output.split('\n') - for i, line in enumerate(lines): - if '- └─ LookupJoin (estimated cost=' in line and i+1 < len(lines): - next_line = lines[i+1] - if '+ └─ LookupJoin (estimated cost=' in next_line: - # Extract the costs - old_cost_match = re.search(r'estimated cost=([0-9.]+)', line) - new_cost_match = re.search(r'estimated cost=([0-9.]+)', next_line) - if old_cost_match and new_cost_match: - old_cost = old_cost_match.group(1) - new_cost = new_cost_match.group(1) - cost_changes.append((old_cost, new_cost)) - - # Also look for other cost patterns - if '- ' in line and 'estimated cost=' in line and i+1 < len(lines): - next_line = lines[i+1] - if '+ ' in next_line and 'estimated cost=' in next_line: - old_cost_match = re.search(r'estimated cost=([0-9.]+)', line) - new_cost_match = re.search(r'estimated cost=([0-9.]+)', next_line) - if old_cost_match and new_cost_match: - old_cost = old_cost_match.group(1) - new_cost = new_cost_match.group(1) - cost_changes.append((old_cost, new_cost)) - - return cost_changes - -def update_costs(file_path, cost_changes): - """Update simple cost changes in the file""" - with open(file_path, 'r') as f: - content = f.read() - - update_count = 0 - - for old_cost, new_cost in cost_changes: - # Look for the pattern and replace - old_pattern = f'estimated cost={old_cost}' - new_pattern = f'estimated cost={new_cost}' - - count = content.count(old_pattern) - if count > 0: - content = content.replace(old_pattern, new_pattern) - update_count += count - print(f" βœ“ Updated cost {old_cost} β†’ {new_cost} ({count} occurrences)") - - if update_count > 0: - with open(file_path, 'w') as f: - f.write(content) - - return update_count - -def main(): - query_plans_file = '/Users/amx/dolt_workspace/go-mysql-server/enginetest/queries/query_plans.go' - - print("Running tests to get failures...") - output = run_tests() - - print("Extracting cost changes...") - cost_changes = extract_simple_failures(output) - - if not cost_changes: - print("No simple cost changes found") - return - - print(f"Found {len(cost_changes)} cost changes to make") - - # Update the file - print(f"Updating {query_plans_file}...") - update_count = update_costs(query_plans_file, cost_changes) - - print(f"\nMade {update_count} total cost updates") - - # Run tests again to check improvement - print("\nRunning tests again to check progress...") - output2 = run_tests() - - if 'FAIL' not in output2: - print("βœ“ All tests now pass!") - else: - # Count failures - failure_count = len(re.findall(r'Not equal:', output2)) - original_count = len(re.findall(r'Not equal:', output)) - improvement = original_count - failure_count - print(f"Failures: {original_count} β†’ {failure_count} (improved by {improvement})") - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/tools/fix_query_plans.py b/tools/fix_query_plans.py deleted file mode 100644 index 70a561999d..0000000000 --- a/tools/fix_query_plans.py +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/env python3 - -import subprocess -import re -import os - -def run_tests(): - """Run the tests and return the output""" - result = subprocess.run( - ['go', 'test', '-v', './enginetest', '-run', 'TestQueryPlans', '-count=1'], - cwd='/Users/amx/dolt_workspace/go-mysql-server', - capture_output=True, - text=True - ) - return result.stdout + result.stderr - -def extract_failures(output): - """Extract expected and actual values from test output""" - failures = [] - - # Find all "Not equal:" sections - sections = re.split(r'Not equal:', output) - - for section in sections[1:]: # Skip first empty section - # Look for expected and actual strings - expected_match = re.search(r'expected:\s*"([^"]*(?:\\.[^"]*)*)"', section, re.DOTALL) - actual_match = re.search(r'actual\s*:\s*"([^"]*(?:\\.[^"]*)*)"', section, re.DOTALL) - - if expected_match and actual_match: - expected = expected_match.group(1) - actual = actual_match.group(1) - - # Unescape the strings - expected = expected.replace('\\n', '\n').replace('\\"', '"').replace('\\\\', '\\') - actual = actual.replace('\\n', '\n').replace('\\"', '"').replace('\\\\', '\\') - - failures.append((expected, actual)) - - return failures - -def update_file(file_path, failures): - """Update the file with all the fixes""" - with open(file_path, 'r') as f: - content = f.read() - - original_content = content - update_count = 0 - - for expected, actual in failures: - # Create properly escaped Go string literals - expected_escaped = expected.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') - actual_escaped = actual.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') - - # Look for the exact quoted string in the file - search_for = f'"{expected_escaped}"' - replace_with = f'"{actual_escaped}"' - - if search_for in content: - content = content.replace(search_for, replace_with, 1) - update_count += 1 - else: - # Try simpler matching - sometimes there are formatting differences - # Look for key distinguishing parts - if 'MergeJoin' in expected and 'SemiLookupJoin' in actual: - # This is a MergeJoin -> SemiLookupJoin replacement - # Find lines with MergeJoin and see if we can match context - lines = expected.split('\n') - for line in lines: - if 'MergeJoin' in line and line.strip() in content: - # Found a matching line, try to replace the whole block - context_lines = [] - for i in range(max(0, lines.index(line)-2), min(len(lines), lines.index(line)+3)): - context_lines.append(lines[i]) - context = '\n'.join(context_lines) - context_escaped = context.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') - - if f'"{context_escaped}"' in content: - # Replace the context block - actual_lines = actual.split('\n') - line_idx = None - for i, actual_line in enumerate(actual_lines): - if actual_line.strip() == line.replace('MergeJoin', 'SemiLookupJoin').strip(): - line_idx = i - break - - if line_idx is not None: - actual_context_lines = [] - for i in range(max(0, line_idx-2), min(len(actual_lines), line_idx+3)): - actual_context_lines.append(actual_lines[i]) - actual_context = '\n'.join(actual_context_lines) - actual_context_escaped = actual_context.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') - - content = content.replace(f'"{context_escaped}"', f'"{actual_context_escaped}"', 1) - update_count += 1 - break - - if update_count > 0: - with open(file_path, 'w') as f: - f.write(content) - - return update_count - -def main(): - query_plans_file = '/Users/amx/dolt_workspace/go-mysql-server/enginetest/queries/query_plans.go' - - for iteration in range(1, 11): - print(f"Iteration {iteration}...") - - # Run tests - output = run_tests() - - # Check if all tests pass - if 'FAIL' not in output: - print("All tests passed!") - break - - # Extract failures - failures = extract_failures(output) - - if not failures: - print("No failures found to update") - break - - print(f"Found {len(failures)} failures") - - # Update the file - update_count = update_file(query_plans_file, failures) - - print(f"Updated {update_count} test cases") - - if update_count == 0: - print("No updates were made - stopping") - break - - print("Script complete!") - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/tools/update_all_plans.go b/tools/update_all_plans.go deleted file mode 100644 index 073f74a723..0000000000 --- a/tools/update_all_plans.go +++ /dev/null @@ -1,118 +0,0 @@ -package main - -import ( - "fmt" - "io/ioutil" - "os/exec" - "strings" -) - -func main() { - queryPlanFile := "/Users/amx/dolt_workspace/go-mysql-server/enginetest/queries/query_plans.go" - - for iteration := 1; iteration <= 20; iteration++ { - fmt.Printf("Iteration %d...\n", iteration) - - // Run the test and capture output - cmd := exec.Command("go", "test", "-v", "./enginetest", "-run", "TestQueryPlans", "-count=1") - cmd.Dir = "/Users/amx/dolt_workspace/go-mysql-server" - output, err := cmd.CombinedOutput() - - if err == nil { - fmt.Println("All tests passed!") - break - } - - outputStr := string(output) - - // Read the file - content, err := ioutil.ReadFile(queryPlanFile) - if err != nil { - fmt.Printf("Error reading file: %v\n", err) - return - } - - contentStr := string(content) - updatedContent := contentStr - updateCount := 0 - - // Split output into sections by test failures - sections := strings.Split(outputStr, "Not equal:") - - for _, section := range sections { - if !strings.Contains(section, "expected:") || !strings.Contains(section, "actual") { - continue - } - - // Extract expected and actual values using a more robust approach - expectedStart := strings.Index(section, "expected:") - actualStart := strings.Index(section, "actual") - - if expectedStart == -1 || actualStart == -1 || actualStart <= expectedStart { - continue - } - - expectedSection := section[expectedStart:actualStart] - actualSection := section[actualStart:] - - // Extract the quoted strings - expected := extractQuotedString(expectedSection) - actual := extractQuotedString(actualSection) - - if expected != "" && actual != "" { - // Try to find and replace in the file - quotedExpected := `"` + expected + `"` - quotedActual := `"` + actual + `"` - - if strings.Contains(updatedContent, quotedExpected) { - updatedContent = strings.Replace(updatedContent, quotedExpected, quotedActual, 1) - updateCount++ - } - } - } - - if updateCount > 0 { - // Write back to file - err = ioutil.WriteFile(queryPlanFile, []byte(updatedContent), 0644) - if err != nil { - fmt.Printf("Error writing file: %v\n", err) - return - } - fmt.Printf("Made %d updates\n", updateCount) - } else { - fmt.Printf("No updates made in iteration %d\n", iteration) - break - } - } - - fmt.Println("Update complete!") -} - -func extractQuotedString(section string) string { - // Find the first quote - start := strings.Index(section, `"`) - if start == -1 { - return "" - } - - // Find the matching end quote, handling escaped quotes - content := section[start+1:] - result := "" - i := 0 - - for i < len(content) { - if content[i] == '\\' && i+1 < len(content) { - // Escaped character - result += string(content[i]) + string(content[i+1]) - i += 2 - } else if content[i] == '"' { - // End quote found - break - } else { - result += string(content[i]) - i++ - } - } - - return result -} \ No newline at end of file diff --git a/tools/update_plans.go b/tools/update_plans.go deleted file mode 100644 index 339c3ed320..0000000000 --- a/tools/update_plans.go +++ /dev/null @@ -1,148 +0,0 @@ -package main - -import ( - "fmt" - "io/ioutil" - "os/exec" - "strings" -) - -func main() { - queryPlanFile := "/Users/amx/dolt_workspace/go-mysql-server/enginetest/queries/query_plans.go" - - for iteration := 1; iteration <= 10; iteration++ { - fmt.Printf("Iteration %d...\n", iteration) - - // Run the test and capture output - cmd := exec.Command("go", "test", "-v", "./enginetest", "-run", "TestQueryPlans") - cmd.Dir = "/Users/amx/dolt_workspace/go-mysql-server" - output, err := cmd.CombinedOutput() - - if err == nil { - fmt.Println("All tests passed!") - break - } - - outputStr := string(output) - - // Find all test failures with expected vs actual - more robust approach - lines := strings.Split(outputStr, "\n") - updateCount := 0 - - // Read the file - content, err := ioutil.ReadFile(queryPlanFile) - if err != nil { - fmt.Printf("Error reading file: %v\n", err) - return - } - - contentStr := string(content) - updatedContent := contentStr - - // Look for expected/actual pairs - for i := 0; i < len(lines); i++ { - line := strings.TrimSpace(lines[i]) - if strings.HasPrefix(line, "expected:") && strings.Contains(line, `"`) { - // Extract expected value - start := strings.Index(line, `"`) - if start == -1 { - continue - } - - // Find the end of the expected string, handling multi-line - expected := "" - currentLine := line[start+1:] - lineIdx := i - - // Keep reading until we find the closing quote - for lineIdx < len(lines) { - if lineIdx == i { - // First line - if strings.HasSuffix(currentLine, `"`) && !strings.HasSuffix(currentLine, `\"`) { - expected = currentLine[:len(currentLine)-1] - break - } - expected = currentLine - } else { - // Continuation lines - currentLine = lines[lineIdx] - if strings.HasSuffix(currentLine, `"`) && !strings.HasSuffix(currentLine, `\"`) { - expected += "\n" + currentLine[:len(currentLine)-1] - break - } - expected += "\n" + currentLine - } - lineIdx++ - } - - // Look for the actual value - actualStart := -1 - for j := lineIdx + 1; j < len(lines) && j < lineIdx + 10; j++ { - if strings.Contains(lines[j], "actual") && strings.Contains(lines[j], `"`) { - actualStart = j - break - } - } - - if actualStart == -1 { - continue - } - - // Extract actual value - actualLine := lines[actualStart] - start = strings.Index(actualLine, `"`) - if start == -1 { - continue - } - - actual := "" - currentLine = actualLine[start+1:] - lineIdx = actualStart - - // Keep reading until we find the closing quote - for lineIdx < len(lines) { - if lineIdx == actualStart { - // First line - if strings.HasSuffix(currentLine, `"`) && !strings.HasSuffix(currentLine, `\"`) { - actual = currentLine[:len(currentLine)-1] - break - } - actual = currentLine - } else { - // Continuation lines - currentLine = lines[lineIdx] - if strings.HasSuffix(currentLine, `"`) && !strings.HasSuffix(currentLine, `\"`) { - actual += "\n" + currentLine[:len(currentLine)-1] - break - } - actual += "\n" + currentLine - } - lineIdx++ - } - - // Try to find and replace in the file - if expected != "" && actual != "" && strings.Contains(updatedContent, `"`+expected+`"`) { - updatedContent = strings.ReplaceAll(updatedContent, `"`+expected+`"`, `"`+actual+`"`) - updateCount++ - } - } - } - - fmt.Printf("Found %d failures to update\n", updateCount) - - if updateCount > 0 { - // Write back to file - err = ioutil.WriteFile(queryPlanFile, []byte(updatedContent), 0644) - if err != nil { - fmt.Printf("Error writing file: %v\n", err) - return - } - fmt.Printf("Made %d updates\n", updateCount) - } else { - fmt.Printf("No updates made in iteration %d\n", iteration) - break - } - } - - fmt.Println("Update complete!") -} \ No newline at end of file diff --git a/tools/update_query_plans.py b/tools/update_query_plans.py deleted file mode 100755 index 26a6c34ec7..0000000000 --- a/tools/update_query_plans.py +++ /dev/null @@ -1,148 +0,0 @@ -#!/usr/bin/env python3 - -import subprocess -import re -import os -import sys - -def run_tests(): - """Run the tests and return the output""" - result = subprocess.run( - ['go', 'test', '-v', './enginetest', '-run', 'TestQueryPlans', '-count=1'], - cwd='/Users/amx/dolt_workspace/go-mysql-server', - capture_output=True, - text=True - ) - return result.stdout + result.stderr - -def parse_test_failures(output): - """Parse test failures and extract expected vs actual differences""" - failures = [] - - # Split by test failure sections - sections = output.split('Not equal:') - - for section in sections[1:]: # Skip first section (before any failures) - try: - # Find expected and actual values - expected_match = re.search(r'expected:\s*"([^"]*(?:\\.[^"]*)*)"', section, re.DOTALL) - actual_match = re.search(r'actual\s*:\s*"([^"]*(?:\\.[^"]*)*)"', section, re.DOTALL) - - if expected_match and actual_match: - expected = expected_match.group(1) - actual = actual_match.group(1) - - # Unescape the strings - expected = expected.replace('\\n', '\n').replace('\\"', '"').replace('\\\\', '\\') - actual = actual.replace('\\n', '\n').replace('\\"', '"').replace('\\\\', '\\') - - failures.append((expected, actual)) - except Exception as e: - print(f"Error parsing section: {e}") - continue - - return failures - -def find_and_replace_in_file(file_path, expected, actual): - """Find and replace expected with actual in the file""" - try: - with open(file_path, 'r') as f: - content = f.read() - - # Escape strings for Go string literals - expected_go = expected.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') - actual_go = actual.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') - - # Look for the expected string in quotes - search_pattern = f'"{expected_go}"' - replacement = f'"{actual_go}"' - - if search_pattern in content: - updated_content = content.replace(search_pattern, replacement, 1) - with open(file_path, 'w') as f: - f.write(updated_content) - return True - - # Try a more lenient approach - look for partial matches - # Focus on cost estimation changes which are simpler - expected_lines = expected.split('\n') - actual_lines = actual.split('\n') - - # Look for cost changes specifically - for i, (exp_line, act_line) in enumerate(zip(expected_lines, actual_lines)): - if 'estimated cost=' in exp_line and 'estimated cost=' in act_line: - # Extract the cost values - exp_cost_match = re.search(r'estimated cost=([0-9.]+)', exp_line) - act_cost_match = re.search(r'estimated cost=([0-9.]+)', act_line) - - if exp_cost_match and act_cost_match: - exp_cost = exp_cost_match.group(1) - act_cost = act_cost_match.group(1) - - # Find and replace this specific cost in the file - cost_pattern = f'estimated cost={exp_cost}' - cost_replacement = f'estimated cost={act_cost}' - - if cost_pattern in content: - updated_content = content.replace(cost_pattern, cost_replacement) - with open(file_path, 'w') as f: - f.write(updated_content) - return True - - # Try to find unique identifiers in the expected string - for line in expected_lines[:5]: # Check first few lines - line = line.strip() - if line and len(line) > 10 and '"' not in line: - # Look for this line as a substring - if line in content: - # Found a reference point, but replacing the whole block is complex - # For now, just report that we found it - return False - - except Exception as e: - print(f"Error updating file: {e}") - - return False - -def main(): - query_plans_file = '/Users/amx/dolt_workspace/go-mysql-server/enginetest/queries/query_plans.go' - - print("Running tests to get failures...") - output = run_tests() - - print("Parsing test failures...") - failures = parse_test_failures(output) - - if not failures: - print("No failures found or unable to parse failures") - return - - print(f"Found {len(failures)} test failures to update") - - update_count = 0 - for i, (expected, actual) in enumerate(failures): - print(f"Processing failure {i+1}/{len(failures)}...") - - if find_and_replace_in_file(query_plans_file, expected, actual): - update_count += 1 - print(f" βœ“ Updated") - else: - print(f" βœ— Could not find/update") - # Print first few lines for debugging - exp_lines = expected.split('\n')[:3] - print(f" Expected starts with: {exp_lines}") - - print(f"\nUpdated {update_count} out of {len(failures)} failures") - - # Run tests again to see improvement - print("\nRunning tests again to check improvement...") - output2 = run_tests() - - if 'FAIL' not in output2: - print("βœ“ All tests now pass!") - else: - failures2 = parse_test_failures(output2) - print(f"Still have {len(failures2)} failures (was {len(failures)})") - -if __name__ == "__main__": - main() \ No newline at end of file From a399c93280dd0a4c24445329ec83584dfacb9db7 Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Wed, 16 Jul 2025 19:46:32 -0700 Subject: [PATCH 12/21] clean up --- engine.go | 2 -- enginetest/memory_engine_test.go | 12 ++++-------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/engine.go b/engine.go index df19b1e5e2..714a0adb48 100644 --- a/engine.go +++ b/engine.go @@ -184,8 +184,6 @@ func New(a *analyzer.Analyzer, cfg *Config) *Engine { a.Catalog.RegisterFunction(emptyCtx, function.GetLockingFuncs(ls)...) - //a.Verbose = true - //a.Debug = true ret := &Engine{ Analyzer: a, MemoryManager: sql.NewMemoryManager(sql.ProcessMemory), diff --git a/enginetest/memory_engine_test.go b/enginetest/memory_engine_test.go index 6deffcd73c..8f909df1ad 100644 --- a/enginetest/memory_engine_test.go +++ b/enginetest/memory_engine_test.go @@ -203,12 +203,8 @@ func TestSingleScript(t *testing.T) { t.Skip() var scripts = []queries.ScriptTest{ { - Name: "AS OF propagates to nested CALLs", - SetUpScript: []string{ - "create table test (id varchar(255), parent varchar(255), primary key(id));", - "create table test2 (id varchar(255), parent varchar(255));", - "create unique index idx_test2_id on test2 (id);", - }, + Name: "AS OF propagates to nested CALLs", + SetUpScript: []string{}, Assertions: []queries.ScriptTestAssertion{ { Query: "create procedure create_proc() create table t (i int primary key, j int);", @@ -234,8 +230,8 @@ func TestSingleScript(t *testing.T) { panic(err) } - engine.EngineAnalyzer().Debug = true - engine.EngineAnalyzer().Verbose = true + //engine.EngineAnalyzer().Debug = true + //engine.EngineAnalyzer().Verbose = true enginetest.TestScriptWithEngine(t, engine, harness, test) } From 34dc43db092d6b07ebd4a17ff96e9d01a5ba29b9 Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Wed, 16 Jul 2025 20:24:47 -0700 Subject: [PATCH 13/21] asdf --- enginetest/queries/query_plans.go | 122 ++++++++++-------------------- 1 file changed, 42 insertions(+), 80 deletions(-) diff --git a/enginetest/queries/query_plans.go b/enginetest/queries/query_plans.go index 6dd3e4fc91..0e3ae5361f 100644 --- a/enginetest/queries/query_plans.go +++ b/enginetest/queries/query_plans.go @@ -528,75 +528,45 @@ select end as s From xy;`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [CASE WHEN xy.x:0!null IS NULL THEN 0 (tinyint) WHEN InSubquery\n" + - " β”‚ β”œβ”€ left: xy.x:0!null\n" + + " β”œβ”€ columns: [CASE WHEN xy.x IS NULL THEN 0 WHEN InSubquery\n" + + " β”‚ β”œβ”€ left: xy.x\n" + " β”‚ └─ right: Subquery\n" + " β”‚ β”œβ”€ cacheable: true\n" + - " β”‚ β”œβ”€ alias-string: select x from xy where not x in (select u from uv)\n" + " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [xy.x:3!null]\n" + + " β”‚ β”œβ”€ columns: [xy.x]\n" + " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [xy.x:3!null, xy.y:4]\n" + + " β”‚ β”œβ”€ columns: [xy.x, xy.y]\n" + " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ uv.u:5!null IS NULL\n" + + " β”‚ β”œβ”€ uv.u IS NULL\n" + " β”‚ └─ LeftOuterLookupJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ xy.x:3!null\n" + - " β”‚ β”‚ └─ uv.u:5!null\n" + - " β”‚ β”œβ”€ IndexedTableAccess(xy)\n" + - " β”‚ β”‚ β”œβ”€ index: [xy.x]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: xy\n" + - " β”‚ β”‚ └─ columns: [x y]\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ └─ name: xy\n" + " β”‚ └─ IndexedTableAccess(uv)\n" + " β”‚ β”œβ”€ index: [uv.u]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: uv\n" + - " β”‚ └─ columns: [u]\n" + - " β”‚ THEN 1 (tinyint) ELSE 2 (tinyint) END->s:0]\n" + + " β”‚ β”œβ”€ columns: [u]\n" + + " β”‚ └─ keys: xy.x\n" + + " β”‚ THEN 1 ELSE 2 END as s]\n" + " └─ Project\n" + - " β”œβ”€ columns: [xy.x:0!null, xy.y:1, CASE WHEN xy.x:0!null IS NULL THEN 0 (tinyint) WHEN InSubquery\n" + - " β”‚ β”œβ”€ left: xy.x:0!null\n" + + " β”œβ”€ columns: [xy.x, xy.y, CASE WHEN xy.x IS NULL THEN 0 WHEN InSubquery\n" + + " β”‚ β”œβ”€ left: xy.x\n" + " β”‚ └─ right: Subquery\n" + " β”‚ β”œβ”€ cacheable: true\n" + - " β”‚ β”œβ”€ alias-string: select x from xy where not x in (select u from uv)\n" + " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [xy.x:2!null]\n" + + " β”‚ β”œβ”€ columns: [xy.x]\n" + " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [xy.x:2!null, xy.y:3]\n" + + " β”‚ β”œβ”€ columns: [xy.x, xy.y]\n" + " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ uv.u:4!null IS NULL\n" + + " β”‚ β”œβ”€ uv.u IS NULL\n" + " β”‚ └─ LeftOuterLookupJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ xy.x:2!null\n" + - " β”‚ β”‚ └─ uv.u:4!null\n" + - " β”‚ β”œβ”€ IndexedTableAccess(xy)\n" + - " β”‚ β”‚ β”œβ”€ index: [xy.x]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: xy\n" + - " β”‚ β”‚ └─ columns: [x y]\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ └─ name: xy\n" + " β”‚ └─ IndexedTableAccess(uv)\n" + " β”‚ β”œβ”€ index: [uv.u]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: uv\n" + - " β”‚ └─ columns: [u]\n" + - " β”‚ THEN 1 (tinyint) ELSE 2 (tinyint) END->s:0]\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: xy\n" + - " └─ columns: [x y]\n" + + " β”‚ β”œβ”€ columns: [u]\n" + + " β”‚ └─ keys: xy.x\n" + + " β”‚ THEN 1 ELSE 2 END as s]\n" + + " └─ Table\n" + + " └─ name: xy\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [CASE WHEN xy.x IS NULL THEN 0 WHEN InSubquery\n" + @@ -609,15 +579,13 @@ From xy;`, " β”‚ β”œβ”€ columns: [xy.x, xy.y]\n" + " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ uv.u IS NULL\n" + - " β”‚ └─ LeftOuterMergeJoin\n" + - " β”‚ β”œβ”€ cmp: (xy.x = uv.u)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(xy)\n" + - " β”‚ β”‚ β”œβ”€ index: [xy.x]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ └─ name: xy\n" + " β”‚ └─ IndexedTableAccess(uv)\n" + " β”‚ β”œβ”€ index: [uv.u]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [u]\n" + + " β”‚ β”œβ”€ columns: [u]\n" + + " β”‚ └─ keys: xy.x\n" + " β”‚ THEN 1 ELSE 2 END as s]\n" + " └─ Project\n" + " β”œβ”€ columns: [xy.x, xy.y, CASE WHEN xy.x IS NULL THEN 0 WHEN InSubquery\n" + @@ -630,15 +598,13 @@ From xy;`, " β”‚ β”œβ”€ columns: [xy.x, xy.y]\n" + " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ uv.u IS NULL\n" + - " β”‚ └─ LeftOuterMergeJoin\n" + - " β”‚ β”œβ”€ cmp: (xy.x = uv.u)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(xy)\n" + - " β”‚ β”‚ β”œβ”€ index: [xy.x]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ └─ name: xy\n" + " β”‚ └─ IndexedTableAccess(uv)\n" + " β”‚ β”œβ”€ index: [uv.u]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [u]\n" + + " β”‚ β”œβ”€ columns: [u]\n" + + " β”‚ └─ keys: xy.x\n" + " β”‚ THEN 1 ELSE 2 END as s]\n" + " └─ Table\n" + " └─ name: xy\n" + @@ -654,15 +620,13 @@ From xy;`, " β”‚ β”œβ”€ columns: [xy.x, xy.y]\n" + " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ uv.u IS NULL\n" + - " β”‚ └─ LeftOuterMergeJoin\n" + - " β”‚ β”œβ”€ cmp: (xy.x = uv.u)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(xy)\n" + - " β”‚ β”‚ β”œβ”€ index: [xy.x]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ └─ name: xy\n" + " β”‚ └─ IndexedTableAccess(uv)\n" + " β”‚ β”œβ”€ index: [uv.u]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [u]\n" + + " β”‚ β”œβ”€ columns: [u]\n" + + " β”‚ └─ keys: xy.x\n" + " β”‚ THEN 1 ELSE 2 END as s]\n" + " └─ Project\n" + " β”œβ”€ columns: [xy.x, xy.y, CASE WHEN xy.x IS NULL THEN 0 WHEN InSubquery\n" + @@ -675,15 +639,13 @@ From xy;`, " β”‚ β”œβ”€ columns: [xy.x, xy.y]\n" + " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ uv.u IS NULL\n" + - " β”‚ └─ LeftOuterMergeJoin\n" + - " β”‚ β”œβ”€ cmp: (xy.x = uv.u)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(xy)\n" + - " β”‚ β”‚ β”œβ”€ index: [xy.x]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ └─ name: xy\n" + " β”‚ └─ IndexedTableAccess(uv)\n" + " β”‚ β”œβ”€ index: [uv.u]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [u]\n" + + " β”‚ β”œβ”€ columns: [u]\n" + + " β”‚ └─ keys: xy.x\n" + " β”‚ THEN 1 ELSE 2 END as s]\n" + " └─ Table\n" + " └─ name: xy\n" + From f208c11b076a2cedabdc02cfc7f71d279e86ff39 Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Thu, 17 Jul 2025 10:42:43 -0700 Subject: [PATCH 14/21] updated query plan test using script --- enginetest/queries/imdb_plans.go | 46103 +++++++++++----------- enginetest/queries/integration_plans.go | 6052 ++- enginetest/queries/query_plans.go | 7864 ++-- enginetest/queries/tpcc_plans.go | 28 +- enginetest/queries/tpch_plans.go | 1126 +- sql/memo/coster.go | 1 + 6 files changed, 29775 insertions(+), 31399 deletions(-) diff --git a/enginetest/queries/imdb_plans.go b/enginetest/queries/imdb_plans.go index f1a7786fe2..0556dcce8c 100644 --- a/enginetest/queries/imdb_plans.go +++ b/enginetest/queries/imdb_plans.go @@ -45,193 +45,196 @@ WHERE ci.note LIKE '%(voice)%' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(chn.name):0!null->uncredited_voiced_character:0, min(t.title):1!null->russian_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(chn.name:16!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(chn.name:9!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:5!null\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.id:6!null\n" + + " β”‚ β”‚ β”‚ └─ mc.company_id:15!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ ct.id:5!null\n" + + " β”‚ β”‚ └─ mc.company_type_id:16!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ ci.movie_id:11!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2005 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ rt.id:3!null\n" + - " β”‚ └─ ci.role_id:14!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + - " β”‚ β”‚ └─ actor (longtext)\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:5!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.id:9!null\n" + - " β”‚ β”‚ └─ mc.company_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ct.id:8!null\n" + - " β”‚ └─ mc.company_type_id:7!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [ru] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ chn.id:15!null\n" + - " β”‚ └─ ci.person_role_id:12\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ ci.note LIKE '%(voice)%'\n" + - " β”‚ β”‚ └─ ci.note LIKE '%(uncredited)%'\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [movie_id person_role_id note role_id]\n" + - " └─ TableAlias(chn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: char_name\n" + - " └─ columns: [id name]\n" + + " β”‚ └─ mc.movie_id:14!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ └─ ci.movie_id:10!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ └─ 2005 (int)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ rt.id:3!null\n" + + " β”‚ β”‚ └─ ci.role_id:13!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + + " β”‚ β”‚ β”‚ └─ actor (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ └─ [ru] (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ ci.note LIKE '%(voice)%'\n" + + " β”‚ β”‚ └─ ci.note LIKE '%(uncredited)%'\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”œβ”€ keys: [chn.id:8!null]\n" + + " β”‚ β”œβ”€ colSet: (8-14)\n" + + " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ └─ columns: [movie_id person_role_id note role_id]\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [ci.movie_id:10!null]\n" + + " β”œβ”€ colSet: (24-28)\n" + + " β”œβ”€ tableId: 5\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_id company_type_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(chn.name) as uncredited_voiced_character, min(t.title) as russian_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(chn.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mc.movie_id) AND (t.id = ci.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (rt.id = ci.role_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actor')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mc.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[ru]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ci.note LIKE '%(voice)%' AND ci.note LIKE '%(uncredited)%')\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [movie_id person_role_id note role_id]\n" + - " └─ TableAlias(chn)\n" + - " └─ Table\n" + - " β”œβ”€ name: char_name\n" + - " └─ columns: [id name]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((cn.id = mc.company_id) AND (ct.id = mc.company_type_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = ci.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2005)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ (rt.id = ci.role_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (rt.role = 'actor')\n" + + " β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cn.country_code = '[ru]')\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ci.note LIKE '%(voice)%' AND ci.note LIKE '%(uncredited)%')\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id person_role_id note role_id]\n" + + " β”‚ └─ keys: chn.id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " └─ keys: ci.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(chn.name) as uncredited_voiced_character, min(t.title) as russian_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(chn.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mc.movie_id) AND (t.id = ci.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (rt.id = ci.role_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actor')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mc.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[ru]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ci.note LIKE '%(voice)%' AND ci.note LIKE '%(uncredited)%')\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [movie_id person_role_id note role_id]\n" + - " └─ TableAlias(chn)\n" + - " └─ Table\n" + - " β”œβ”€ name: char_name\n" + - " └─ columns: [id name]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((cn.id = mc.company_id) AND (ct.id = mc.company_type_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = ci.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2005)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ (rt.id = ci.role_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (rt.role = 'actor')\n" + + " β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cn.country_code = '[ru]')\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ci.note LIKE '%(voice)%' AND ci.note LIKE '%(uncredited)%')\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id person_role_id note role_id]\n" + + " β”‚ └─ keys: chn.id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " └─ keys: ci.movie_id\n" + "", }, { @@ -260,191 +263,194 @@ WHERE ci.note LIKE '%(voice)%' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(chn.name):0!null->character:0, min(t.title):1!null->russian_mov_with_actor_producer:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(chn.name:16!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(chn.name:9!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:5!null\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.id:6!null\n" + + " β”‚ β”‚ β”‚ └─ mc.company_id:15!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ ct.id:5!null\n" + + " β”‚ β”‚ └─ mc.company_type_id:16!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ ci.movie_id:11!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2010 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ rt.id:3!null\n" + - " β”‚ └─ ci.role_id:14!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + - " β”‚ β”‚ └─ actor (longtext)\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:5!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.id:9!null\n" + - " β”‚ β”‚ └─ mc.company_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ct.id:8!null\n" + - " β”‚ └─ mc.company_type_id:7!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [ru] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ chn.id:15!null\n" + - " β”‚ └─ ci.person_role_id:12\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ci.note LIKE '%(producer)%'\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [movie_id person_role_id note role_id]\n" + - " └─ TableAlias(chn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: char_name\n" + - " └─ columns: [id name]\n" + + " β”‚ └─ mc.movie_id:14!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ └─ ci.movie_id:10!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ └─ 2010 (int)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ rt.id:3!null\n" + + " β”‚ β”‚ └─ ci.role_id:13!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + + " β”‚ β”‚ β”‚ └─ actor (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ └─ [ru] (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ ci.note LIKE '%(producer)%'\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”œβ”€ keys: [chn.id:8!null]\n" + + " β”‚ β”œβ”€ colSet: (8-14)\n" + + " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ └─ columns: [movie_id person_role_id note role_id]\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [ci.movie_id:10!null]\n" + + " β”œβ”€ colSet: (24-28)\n" + + " β”œβ”€ tableId: 5\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_id company_type_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(chn.name) as character, min(t.title) as russian_mov_with_actor_producer]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(chn.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mc.movie_id) AND (t.id = ci.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2010)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (rt.id = ci.role_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actor')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mc.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[ru]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ci.note LIKE '%(producer)%'\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [movie_id person_role_id note role_id]\n" + - " └─ TableAlias(chn)\n" + - " └─ Table\n" + - " β”œβ”€ name: char_name\n" + - " └─ columns: [id name]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((cn.id = mc.company_id) AND (ct.id = mc.company_type_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = ci.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2010)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ (rt.id = ci.role_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (rt.role = 'actor')\n" + + " β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cn.country_code = '[ru]')\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ ci.note LIKE '%(producer)%'\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id person_role_id note role_id]\n" + + " β”‚ └─ keys: chn.id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " └─ keys: ci.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(chn.name) as character, min(t.title) as russian_mov_with_actor_producer]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(chn.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mc.movie_id) AND (t.id = ci.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2010)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (rt.id = ci.role_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actor')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mc.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[ru]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ci.note LIKE '%(producer)%'\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [movie_id person_role_id note role_id]\n" + - " └─ TableAlias(chn)\n" + - " └─ Table\n" + - " β”œβ”€ name: char_name\n" + - " └─ columns: [id name]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((cn.id = mc.company_id) AND (ct.id = mc.company_type_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = ci.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2010)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ (rt.id = ci.role_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (rt.role = 'actor')\n" + + " β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cn.country_code = '[ru]')\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ ci.note LIKE '%(producer)%'\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id person_role_id note role_id]\n" + + " β”‚ └─ keys: chn.id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " └─ keys: ci.movie_id\n" + "", }, { @@ -464,191 +470,194 @@ WHERE ci.note LIKE '%(voice)%' " AND t.id = ci.movie_id\n" + " AND ci.movie_id = mc.movie_id\n" + " AND chn.id = ci.person_role_id\n" + - " AND rt.id = ci.role_id\n" + - " AND cn.id = mc.company_id\n" + - " AND ct.id = mc.company_type_id;\n" + - "", - - ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [min(chn.name):0!null->character:0, min(t.title):1!null->movie_with_american_producer:0]\n" + - " └─ GroupBy\n" + - " β”œβ”€ select: MIN(chn.name:15!null), MIN(t.title:1!null)\n" + - " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:4!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ ci.movie_id:10!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 1990 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ rt.id:3!null\n" + - " β”‚ └─ ci.role_id:13!null\n" + - " β”œβ”€ TableAlias(rt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:10!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:4!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.id:8!null\n" + - " β”‚ β”‚ └─ mc.company_id:5!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ct.id:7!null\n" + - " β”‚ └─ mc.company_type_id:6!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ chn.id:14!null\n" + - " β”‚ └─ ci.person_role_id:11\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ci.note LIKE '%(producer)%'\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [movie_id person_role_id note role_id]\n" + - " └─ TableAlias(chn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: char_name\n" + - " └─ columns: [id name]\n" + + " AND rt.id = ci.role_id\n" + + " AND cn.id = mc.company_id\n" + + " AND ct.id = mc.company_type_id;\n" + + "", + + ExpectedPlan: "Project\n" + + " β”œβ”€ columns: [min(chn.name):0!null->character:0, min(t.title):1!null->movie_with_american_producer:0]\n" + + " └─ GroupBy\n" + + " β”œβ”€ select: MIN(chn.name:8!null), MIN(t.title:1!null)\n" + + " β”œβ”€ group: \n" + + " └─ LookupJoin\n" + + " β”œβ”€ AND\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.id:5!null\n" + + " β”‚ β”‚ β”‚ └─ mc.company_id:14!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ ct.id:4!null\n" + + " β”‚ β”‚ └─ mc.company_type_id:15!null\n" + + " β”‚ └─ Eq\n" + + " β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ └─ mc.movie_id:13!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ └─ ci.movie_id:9!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ └─ 1990 (int)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ rt.id:3!null\n" + + " β”‚ β”‚ └─ ci.role_id:12!null\n" + + " β”‚ β”œβ”€ TableAlias(rt)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ ci.note LIKE '%(producer)%'\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”œβ”€ keys: [chn.id:7!null]\n" + + " β”‚ β”œβ”€ colSet: (8-14)\n" + + " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ └─ columns: [movie_id person_role_id note role_id]\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [ci.movie_id:9!null]\n" + + " β”œβ”€ colSet: (24-28)\n" + + " β”œβ”€ tableId: 5\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_id company_type_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(chn.name) as character, min(t.title) as movie_with_american_producer]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(chn.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mc.movie_id) AND (t.id = ci.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 1990)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (rt.id = ci.role_id)\n" + - " β”œβ”€ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mc.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ci.note LIKE '%(producer)%'\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [movie_id person_role_id note role_id]\n" + - " └─ TableAlias(chn)\n" + - " └─ Table\n" + - " β”œβ”€ name: char_name\n" + - " └─ columns: [id name]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((cn.id = mc.company_id) AND (ct.id = mc.company_type_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = ci.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 1990)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ (rt.id = ci.role_id)\n" + + " β”‚ β”œβ”€ TableAlias(rt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ ci.note LIKE '%(producer)%'\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id person_role_id note role_id]\n" + + " β”‚ └─ keys: chn.id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " └─ keys: ci.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(chn.name) as character, min(t.title) as movie_with_american_producer]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(chn.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mc.movie_id) AND (t.id = ci.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 1990)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (rt.id = ci.role_id)\n" + - " β”œβ”€ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mc.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ci.note LIKE '%(producer)%'\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [movie_id person_role_id note role_id]\n" + - " └─ TableAlias(chn)\n" + - " └─ Table\n" + - " β”œβ”€ name: char_name\n" + - " └─ columns: [id name]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((cn.id = mc.company_id) AND (ct.id = mc.company_type_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = ci.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 1990)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ (rt.id = ci.role_id)\n" + + " β”‚ β”œβ”€ TableAlias(rt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ ci.note LIKE '%(producer)%'\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id person_role_id note role_id]\n" + + " β”‚ └─ keys: chn.id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " └─ keys: ci.movie_id\n" + "", }, { @@ -687,242 +696,243 @@ WHERE cn.country_code !='[pl]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->from_company:0, min(lt.link):1!null->movie_link_type:0, min(t.title):2!null->non_polish_sequel_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:18!null), MIN(lt.link:12!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:10!null), MIN(lt.link:4!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.company_type_id:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ct.id:7!null\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.company_id:17!null\n" + + " β”‚ β”‚ β”‚ └─ cn.id:9!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ ml.movie_id:12!null\n" + + " β”‚ β”‚ └─ mc.movie_id:16!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ β”‚ └─ 1950 (smallint)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2000 (smallint)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + + " β”‚ └─ mc.movie_id:16!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ mk.keyword_id:15!null\n" + + " β”‚ β”‚ └─ k.id:5!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:12!null\n" + + " β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1950 (smallint)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 2000 (smallint)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ sequel (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ [pl] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name LIKE '%Film%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cn.name LIKE '%Warner%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [lt.id:3!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (23-26)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_link\n" + + " β”‚ β”‚ └─ columns: [movie_id link_type_id]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ keys: [ml.movie_id:12!null]\n" + + " β”‚ β”œβ”€ colSet: (20-22)\n" + + " β”‚ β”œβ”€ tableId: 6\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ lt.id:11!null\n" + - " β”‚ β”‚ β”‚ └─ ml.link_type_id:4!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ └─ mk.movie_id:5!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ └─ mc.movie_id:7!null\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.keyword_id:6!null\n" + - " β”‚ β”‚ └─ k.id:13!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ └─ mc.movie_id:7!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_type_id:9!null\n" + - " β”‚ β”‚ └─ ct.id:15!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.company_id:8!null\n" + - " β”‚ └─ cn.id:17!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note:3 IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ sequel (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ β”‚ └─ production companies (longtext)\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ β”‚ └─ [pl] (longtext)\n" + - " β”‚ └─ Or\n" + - " β”‚ β”œβ”€ cn.name LIKE '%Film%'\n" + - " β”‚ └─ cn.name LIKE '%Warner%'\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\n" + + " β”œβ”€ mc.note:3 IS NULL\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:14!null]\n" + + " β”œβ”€ colSet: (15-19)\n" + + " β”œβ”€ tableId: 5\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_id company_type_id note]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as from_company, min(lt.link) as movie_link_type, min(t.title) as non_polish_sequel_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(lt.link), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ml.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year >= 1950) AND (t.production_year <= 2000))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_type_id = ct.id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((mc.company_type_id = ct.id) AND (mc.company_id = cn.id)) AND (ml.movie_id = mc.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (ml.movie_id = t.id)\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 1950) AND (t.production_year <= 2000))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: ml.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ mc.note IS NULL\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as from_company, min(lt.link) as movie_link_type, min(t.title) as non_polish_sequel_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(lt.link), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ml.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year >= 1950) AND (t.production_year <= 2000))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_type_id = ct.id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((mc.company_type_id = ct.id) AND (mc.company_id = cn.id)) AND (ml.movie_id = mc.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (ml.movie_id = t.id)\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 1950) AND (t.production_year <= 2000))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: ml.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ mc.note IS NULL\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -962,240 +972,241 @@ WHERE cn.country_code !='[pl]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->from_company:0, min(lt.link):1!null->movie_link_type:0, min(t.title):2!null->sequel_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:18!null), MIN(lt.link:12!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:10!null), MIN(lt.link:4!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.company_type_id:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ct.id:7!null\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.company_id:17!null\n" + + " β”‚ β”‚ β”‚ └─ cn.id:9!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ ml.movie_id:12!null\n" + + " β”‚ β”‚ └─ mc.movie_id:16!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + + " β”‚ └─ mc.movie_id:16!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ mk.keyword_id:15!null\n" + + " β”‚ β”‚ └─ k.id:5!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ β”‚ └─ 1998 (int)\n" + - " β”‚ β”‚ └─ t.title LIKE '%Money%'\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:12!null\n" + + " β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1998 (int)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ t.title LIKE '%Money%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link LIKE '%follows%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ sequel (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ [pl] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name LIKE '%Film%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cn.name LIKE '%Warner%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [lt.id:3!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (23-26)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_link\n" + + " β”‚ β”‚ └─ columns: [movie_id link_type_id]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ keys: [ml.movie_id:12!null]\n" + + " β”‚ β”œβ”€ colSet: (20-22)\n" + + " β”‚ β”œβ”€ tableId: 6\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ lt.id:11!null\n" + - " β”‚ β”‚ β”‚ └─ ml.link_type_id:4!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ └─ mk.movie_id:5!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ └─ mc.movie_id:7!null\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.keyword_id:6!null\n" + - " β”‚ β”‚ └─ k.id:13!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ └─ mc.movie_id:7!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_type_id:9!null\n" + - " β”‚ β”‚ └─ ct.id:15!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.company_id:8!null\n" + - " β”‚ └─ cn.id:17!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note:3 IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follows%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ sequel (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ β”‚ └─ production companies (longtext)\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ β”‚ └─ [pl] (longtext)\n" + - " β”‚ └─ Or\n" + - " β”‚ β”œβ”€ cn.name LIKE '%Film%'\n" + - " β”‚ └─ cn.name LIKE '%Warner%'\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\n" + + " β”œβ”€ mc.note:3 IS NULL\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:14!null]\n" + + " β”œβ”€ colSet: (15-19)\n" + + " β”œβ”€ tableId: 5\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_id company_type_id note]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as from_company, min(lt.link) as movie_link_type, min(t.title) as sequel_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(lt.link), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ml.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year = 1998) AND t.title LIKE '%Money%')\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_type_id = ct.id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follows%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((mc.company_type_id = ct.id) AND (mc.company_id = cn.id)) AND (ml.movie_id = mc.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (ml.movie_id = t.id)\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year = 1998) AND t.title LIKE '%Money%')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link LIKE '%follows%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: ml.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ mc.note IS NULL\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as from_company, min(lt.link) as movie_link_type, min(t.title) as sequel_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(lt.link), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ml.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year = 1998) AND t.title LIKE '%Money%')\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_type_id = ct.id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follows%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((mc.company_type_id = ct.id) AND (mc.company_id = cn.id)) AND (ml.movie_id = mc.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (ml.movie_id = t.id)\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year = 1998) AND t.title LIKE '%Money%')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link LIKE '%follows%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: ml.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ mc.note IS NULL\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -1236,249 +1247,250 @@ WHERE cn.country_code !='[pl]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->from_company:0, min(mc.note):1!null->production_note:0, min(t.title):2!null->movie_based_on_book:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:17!null), MIN(mc.note:10), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:9!null), MIN(mc.note:18), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.company_type_id:17!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ct.id:6!null\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.company_id:16!null\n" + + " β”‚ β”‚ β”‚ └─ cn.id:8!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ ml.movie_id:11!null\n" + + " β”‚ β”‚ └─ mc.movie_id:15!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 1950 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + + " β”‚ └─ mc.movie_id:15!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ mk.keyword_id:14!null\n" + + " β”‚ β”‚ └─ k.id:4!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:11!null\n" + + " β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 1950 (int)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(sequel (longtext), revenge (longtext), based-on-novel (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ct.kind:1!null IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ [pl] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 20th Century Fox (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ 20th Century FoxΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Twentieth Century Fox (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Twentieth Century FoxΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [lt.id:3!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (23-26)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_link\n" + + " β”‚ β”‚ └─ columns: [movie_id link_type_id]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ keys: [ml.movie_id:11!null]\n" + + " β”‚ β”œβ”€ colSet: (20-22)\n" + + " β”‚ β”œβ”€ tableId: 6\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ lt.id:11!null\n" + - " β”‚ β”‚ β”‚ └─ ml.link_type_id:4!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ └─ mk.movie_id:5!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ └─ mc.movie_id:7!null\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.keyword_id:6!null\n" + - " β”‚ β”‚ └─ k.id:12!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ └─ mc.movie_id:7!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_type_id:9!null\n" + - " β”‚ β”‚ └─ ct.id:14!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.company_id:8!null\n" + - " β”‚ └─ cn.id:16!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ mc.note:3 IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(lt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(sequel (longtext), revenge (longtext), based-on-novel (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + - " β”‚ β”‚ └─ NOT\n" + - " β”‚ β”‚ └─ ct.kind:1!null IS NULL\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ β”‚ └─ [pl] (longtext)\n" + - " β”‚ └─ Or\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + - " β”‚ β”‚ β”‚ └─ 20th Century Fox (longtext)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + - " β”‚ β”‚ └─ 20th Century FoxΓΏ (longtext)\n" + - " β”‚ └─ AND\n" + - " β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + - " β”‚ β”‚ └─ Twentieth Century Fox (longtext)\n" + - " β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”œβ”€ cn.name:1!null\n" + - " β”‚ └─ Twentieth Century FoxΓΏ (longtext)\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\n" + + " β”œβ”€ NOT\n" + + " β”‚ └─ mc.note:3 IS NULL\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:13!null]\n" + + " β”œβ”€ colSet: (15-19)\n" + + " β”œβ”€ tableId: 5\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_id company_type_id note]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as from_company, min(mc.note) as production_note, min(t.title) as movie_based_on_book]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mc.note), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ml.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 1950)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_type_id = ct.id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT(mc.note IS NULL))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('sequel', 'revenge', 'based-on-novel'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT((ct.kind = 'production companies'))) AND (NOT(ct.kind IS NULL)))\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (((cn.name >= '20th Century Fox') AND (cn.name <= '20th Century FoxΓΏ')) OR ((cn.name >= 'Twentieth Century Fox') AND (cn.name <= 'Twentieth Century FoxΓΏ'))))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((mc.company_type_id = ct.id) AND (mc.company_id = cn.id)) AND (ml.movie_id = mc.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (ml.movie_id = t.id)\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 1950)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('sequel', 'revenge', 'based-on-novel'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT((ct.kind = 'production companies'))) AND (NOT(ct.kind IS NULL)))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (((cn.name >= '20th Century Fox') AND (cn.name <= '20th Century FoxΓΏ')) OR ((cn.name >= 'Twentieth Century Fox') AND (cn.name <= 'Twentieth Century FoxΓΏ'))))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: ml.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ (NOT(mc.note IS NULL))\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as from_company, min(mc.note) as production_note, min(t.title) as movie_based_on_book]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mc.note), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ml.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 1950)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_type_id = ct.id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT(mc.note IS NULL))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('sequel', 'revenge', 'based-on-novel'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT((ct.kind = 'production companies'))) AND (NOT(ct.kind IS NULL)))\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (((cn.name >= '20th Century Fox') AND (cn.name <= '20th Century FoxΓΏ')) OR ((cn.name >= 'Twentieth Century Fox') AND (cn.name <= 'Twentieth Century FoxΓΏ'))))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((mc.company_type_id = ct.id) AND (mc.company_id = cn.id)) AND (ml.movie_id = mc.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (ml.movie_id = t.id)\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 1950)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('sequel', 'revenge', 'based-on-novel'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT((ct.kind = 'production companies'))) AND (NOT(ct.kind IS NULL)))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (((cn.name >= '20th Century Fox') AND (cn.name <= '20th Century FoxΓΏ')) OR ((cn.name >= 'Twentieth Century Fox') AND (cn.name <= 'Twentieth Century FoxΓΏ'))))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: ml.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ (NOT(mc.note IS NULL))\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -1517,233 +1529,234 @@ WHERE cn.country_code !='[pl]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->from_company:0, min(mc.note):1!null->production_note:0, min(t.title):2!null->movie_based_on_book:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:17!null), MIN(mc.note:10), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:9!null), MIN(mc.note:18), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.company_type_id:17!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ct.id:6!null\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.company_id:16!null\n" + + " β”‚ β”‚ β”‚ └─ cn.id:8!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ ml.movie_id:11!null\n" + + " β”‚ β”‚ └─ mc.movie_id:15!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 1950 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + + " β”‚ └─ mc.movie_id:15!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ mk.keyword_id:14!null\n" + + " β”‚ β”‚ └─ k.id:4!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:11!null\n" + + " β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 1950 (int)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(sequel (longtext), revenge (longtext), based-on-novel (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ct.kind:1!null IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ [pl] (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [lt.id:3!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (23-26)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_link\n" + + " β”‚ β”‚ └─ columns: [movie_id link_type_id]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ keys: [ml.movie_id:11!null]\n" + + " β”‚ β”œβ”€ colSet: (20-22)\n" + + " β”‚ β”œβ”€ tableId: 6\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ lt.id:11!null\n" + - " β”‚ β”‚ β”‚ └─ ml.link_type_id:4!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ └─ mk.movie_id:5!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ └─ mc.movie_id:7!null\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.keyword_id:6!null\n" + - " β”‚ β”‚ └─ k.id:12!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ └─ mc.movie_id:7!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_type_id:9!null\n" + - " β”‚ β”‚ └─ ct.id:14!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.company_id:8!null\n" + - " β”‚ └─ cn.id:16!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ mc.note:3 IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(lt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(sequel (longtext), revenge (longtext), based-on-novel (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + - " β”‚ β”‚ └─ NOT\n" + - " β”‚ β”‚ └─ ct.kind:1!null IS NULL\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ NOT\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ └─ [pl] (longtext)\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\n" + + " β”œβ”€ NOT\n" + + " β”‚ └─ mc.note:3 IS NULL\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:13!null]\n" + + " β”œβ”€ colSet: (15-19)\n" + + " β”œβ”€ tableId: 5\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_id company_type_id note]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as from_company, min(mc.note) as production_note, min(t.title) as movie_based_on_book]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mc.note), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ml.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 1950)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_type_id = ct.id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT(mc.note IS NULL))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('sequel', 'revenge', 'based-on-novel'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT((ct.kind = 'production companies'))) AND (NOT(ct.kind IS NULL)))\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ (NOT((cn.country_code = '[pl]')))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((mc.company_type_id = ct.id) AND (mc.company_id = cn.id)) AND (ml.movie_id = mc.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (ml.movie_id = t.id)\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 1950)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('sequel', 'revenge', 'based-on-novel'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT((ct.kind = 'production companies'))) AND (NOT(ct.kind IS NULL)))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (NOT((cn.country_code = '[pl]')))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: ml.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ (NOT(mc.note IS NULL))\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as from_company, min(mc.note) as production_note, min(t.title) as movie_based_on_book]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mc.note), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ml.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 1950)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_type_id = ct.id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT(mc.note IS NULL))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('sequel', 'revenge', 'based-on-novel'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT((ct.kind = 'production companies'))) AND (NOT(ct.kind IS NULL)))\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ (NOT((cn.country_code = '[pl]')))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((mc.company_type_id = ct.id) AND (mc.company_id = cn.id)) AND (ml.movie_id = mc.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (ml.movie_id = t.id)\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 1950)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('sequel', 'revenge', 'based-on-novel'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT((ct.kind = 'production companies'))) AND (NOT(ct.kind IS NULL)))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (NOT((cn.country_code = '[pl]')))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: ml.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ (NOT(mc.note IS NULL))\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -1773,259 +1786,260 @@ WHERE cn.country_code = '[us]' AND mi_idx.info_type_id = it2.id AND t.id = mc.movie_id AND ct.id = mc.company_type_id - AND cn.id = mc.company_id - AND mc.movie_id = mi.movie_id - AND mc.movie_id = mi_idx.movie_id - AND mi.movie_id = mi_idx.movie_id; - -`, - ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [min(cn.name):0!null->movie_company:0, min(mi_idx.info):1!null->rating:0, min(t.title):2!null->drama_horror_movie:0]\n" + - " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:19!null), MIN(mi_idx.info:5!null), MIN(t.title:1!null)\n" + - " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:9!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ β”‚ └─ 2005 (smallint)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2008 (smallint)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi_idx.info_type_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ it2.id:12!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:9!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ └─ mi_idx.movie_id:3!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + - " β”‚ β”‚ └─ 8.0 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.info_type_id:7!null\n" + - " β”‚ β”‚ └─ it1.id:14!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:9!null\n" + - " β”‚ └─ mi.movie_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Drama (longtext), Horror (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.id:16!null\n" + - " β”‚ β”‚ └─ mc.company_type_id:11!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:18!null\n" + - " β”‚ └─ mc.company_id:10!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ genres (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (10,11)\n" + - " β”‚ └─ tableId: 3\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ β”‚ └─ production companies (longtext)\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ └─ [us] (longtext)\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + AND cn.id = mc.company_id + AND mc.movie_id = mi.movie_id + AND mc.movie_id = mi_idx.movie_id + AND mi.movie_id = mi_idx.movie_id; + +`, + ExpectedPlan: "Project\n" + + " β”œβ”€ columns: [min(cn.name):0!null->movie_company:0, min(mi_idx.info):1!null->rating:0, min(t.title):2!null->drama_horror_movie:0]\n" + + " └─ GroupBy\n" + + " β”œβ”€ select: MIN(cn.name:10!null), MIN(mi_idx.info:14!null), MIN(t.title:1!null)\n" + + " β”œβ”€ group: \n" + + " └─ LookupJoin\n" + + " β”œβ”€ AND\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.id:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.company_type_id:20!null\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.id:9!null\n" + + " β”‚ β”‚ β”‚ └─ mc.company_id:19!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ mc.movie_id:18!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:12!null\n" + + " β”‚ └─ Eq\n" + + " β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ └─ mc.movie_id:18!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ mi.info_type_id:16!null\n" + + " β”‚ β”‚ └─ it1.id:5!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:12!null\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ 2005 (smallint)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 2008 (smallint)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ genres (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (10,11)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + + " β”‚ β”‚ β”‚ └─ 8.0 (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [it2.id:3!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (24-28)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ └─ TUPLE(Drama (longtext), Horror (longtext))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi_idx.movie_id:12!null]\n" + + " β”‚ β”œβ”€ colSet: (19-23)\n" + + " β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mi.movie_id:15!null]\n" + + " β”œβ”€ colSet: (14-18)\n" + + " β”œβ”€ tableId: 5\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_id company_type_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as drama_horror_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year >= 2005) AND (t.production_year <= 2008))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi_idx.info_type_id = it2.id) AND (mc.movie_id = mi_idx.movie_id)) AND (mi.movie_id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '8.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.info_type_id = it1.id) AND (mc.movie_id = mi.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Drama', 'Horror'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[us]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((ct.id = mc.company_type_id) AND (cn.id = mc.company_id)) AND (mc.movie_id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (mi.info_type_id = it1.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (t.id = mi_idx.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 2005) AND (t.production_year <= 2008))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi_idx.info > '8.0')\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it2.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('Drama', 'Horror'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: mi_idx.movie_id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " └─ keys: mi.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as drama_horror_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year >= 2005) AND (t.production_year <= 2008))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi_idx.info_type_id = it2.id) AND (mc.movie_id = mi_idx.movie_id)) AND (mi.movie_id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '8.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.info_type_id = it1.id) AND (mc.movie_id = mi.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Drama', 'Horror'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[us]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((ct.id = mc.company_type_id) AND (cn.id = mc.company_id)) AND (mc.movie_id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (mi.info_type_id = it1.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (t.id = mi_idx.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 2005) AND (t.production_year <= 2008))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi_idx.info > '8.0')\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it2.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('Drama', 'Horror'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: mi_idx.movie_id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " └─ keys: mi.movie_id\n" + "", }, { @@ -2064,247 +2078,248 @@ WHERE cn.country_code ='[us]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi.info):0!null->budget:0, min(t.title):1!null->unsuccsessful_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi.info:7!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi.info:15!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.id:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.company_type_id:18!null\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.id:9!null\n" + + " β”‚ β”‚ β”‚ └─ mc.company_id:17!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:3!null\n" + + " β”‚ β”‚ β”œβ”€ mc.movie_id:16!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:11!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:8!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ β”‚ └─ 2000 (int)\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Birdemic (longtext)\n" + - " β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + - " β”‚ β”‚ β”‚ └─ BirdemicΓΏ (longtext)\n" + - " β”‚ β”‚ └─ t.title LIKE '%Movie%'\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + + " β”‚ └─ mc.movie_id:16!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ mi.info_type_id:14!null\n" + + " β”‚ β”‚ └─ it1.id:5!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:11!null\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ 2000 (int)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Birdemic (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ BirdemicΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ t.title LIKE '%Movie%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ bottom 10 rank (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ budget (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (10,11)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ct.kind:1!null IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ distributors (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [it2.id:3!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (24-28)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id]\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi_idx.movie_id:11!null]\n" + + " β”‚ β”œβ”€ colSet: (19-23)\n" + + " β”‚ β”œβ”€ tableId: 6\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi_idx.info_type_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ it2.id:11!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:8!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi.movie_id:5!null\n" + - " β”‚ └─ mi_idx.movie_id:3!null\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.info_type_id:6!null\n" + - " β”‚ β”‚ └─ it1.id:13!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:8!null\n" + - " β”‚ └─ mi.movie_id:5!null\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.id:15!null\n" + - " β”‚ β”‚ └─ mc.company_type_id:10!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:17!null\n" + - " β”‚ └─ mc.company_id:9!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ bottom 10 rank (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ budget (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (10,11)\n" + - " β”‚ └─ tableId: 3\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ ct.kind:1!null IS NULL\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ β”‚ └─ distributors (longtext)\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ └─ [us] (longtext)\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id country_code]\n" + + " β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mi.movie_id:13!null]\n" + + " β”œβ”€ colSet: (14-18)\n" + + " β”œβ”€ tableId: 5\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_id company_type_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi.info) as budget, min(t.title) as unsuccsessful_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(mi.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year > 2000) AND (((t.title >= 'Birdemic') AND (t.title <= 'BirdemicΓΏ')) OR t.title LIKE '%Movie%'))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi_idx.info_type_id = it2.id) AND (mc.movie_id = mi_idx.movie_id)) AND (mi.movie_id = mi_idx.movie_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.info_type_id = it1.id) AND (mc.movie_id = mi.movie_id))\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'bottom 10 rank')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'budget')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(ct.kind IS NULL)) AND ((ct.kind = 'production companies') OR (ct.kind = 'distributors')))\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[us]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((ct.id = mc.company_type_id) AND (cn.id = mc.company_id)) AND (mc.movie_id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (mi.info_type_id = it1.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (t.id = mi_idx.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year > 2000) AND (((t.title >= 'Birdemic') AND (t.title <= 'BirdemicΓΏ')) OR t.title LIKE '%Movie%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'bottom 10 rank')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'budget')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT(ct.kind IS NULL)) AND ((ct.kind = 'production companies') OR (ct.kind = 'distributors')))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id]\n" + + " β”‚ β”‚ └─ keys: it2.id\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: mi_idx.movie_id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " └─ keys: mi.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi.info) as budget, min(t.title) as unsuccsessful_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(mi.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year > 2000) AND (((t.title >= 'Birdemic') AND (t.title <= 'BirdemicΓΏ')) OR t.title LIKE '%Movie%'))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi_idx.info_type_id = it2.id) AND (mc.movie_id = mi_idx.movie_id)) AND (mi.movie_id = mi_idx.movie_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.info_type_id = it1.id) AND (mc.movie_id = mi.movie_id))\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'bottom 10 rank')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'budget')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(ct.kind IS NULL)) AND ((ct.kind = 'production companies') OR (ct.kind = 'distributors')))\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[us]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((ct.id = mc.company_type_id) AND (cn.id = mc.company_id)) AND (mc.movie_id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (mi.info_type_id = it1.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (t.id = mi_idx.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year > 2000) AND (((t.title >= 'Birdemic') AND (t.title <= 'BirdemicΓΏ')) OR t.title LIKE '%Movie%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'bottom 10 rank')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'budget')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT(ct.kind IS NULL)) AND ((ct.kind = 'production companies') OR (ct.kind = 'distributors')))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id]\n" + + " β”‚ β”‚ └─ keys: it2.id\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: mi_idx.movie_id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " └─ keys: mi.movie_id\n" + "", }, { @@ -2316,279 +2331,280 @@ FROM company_name AS cn, company_type AS ct, info_type AS it1, info_type AS it2, - movie_companies AS mc, - movie_info AS mi, - movie_info_idx AS mi_idx, - title AS t -WHERE cn.country_code = '[us]' - AND ct.kind = 'production companies' - AND it1.info = 'genres' - AND it2.info = 'rating' - AND mi.info IN ('Drama', - 'Horror', - 'Western', - 'Family') - AND mi_idx.info > '7.0' - AND t.production_year BETWEEN 2000 AND 2010 - AND t.id = mi.movie_id - AND t.id = mi_idx.movie_id - AND mi.info_type_id = it1.id - AND mi_idx.info_type_id = it2.id - AND t.id = mc.movie_id - AND ct.id = mc.company_type_id - AND cn.id = mc.company_id - AND mc.movie_id = mi.movie_id - AND mc.movie_id = mi_idx.movie_id - AND mi.movie_id = mi_idx.movie_id; - -`, - ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [min(cn.name):0!null->movie_company:0, min(mi_idx.info):1!null->rating:0, min(t.title):2!null->mainstream_movie:0]\n" + - " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:19!null), MIN(mi_idx.info:5!null), MIN(t.title:1!null)\n" + - " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:9!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ β”‚ └─ 2000 (smallint)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2010 (smallint)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi_idx.info_type_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ it2.id:12!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:9!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ └─ mi_idx.movie_id:3!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + - " β”‚ β”‚ └─ 7.0 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.info_type_id:7!null\n" + - " β”‚ β”‚ └─ it1.id:14!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:9!null\n" + - " β”‚ └─ mi.movie_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Drama (longtext), Horror (longtext), Western (longtext), Family (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.id:16!null\n" + - " β”‚ β”‚ └─ mc.company_type_id:11!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:18!null\n" + - " β”‚ └─ mc.company_id:10!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ genres (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (10,11)\n" + - " β”‚ └─ tableId: 3\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ β”‚ └─ production companies (longtext)\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ └─ [us] (longtext)\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + movie_companies AS mc, + movie_info AS mi, + movie_info_idx AS mi_idx, + title AS t +WHERE cn.country_code = '[us]' + AND ct.kind = 'production companies' + AND it1.info = 'genres' + AND it2.info = 'rating' + AND mi.info IN ('Drama', + 'Horror', + 'Western', + 'Family') + AND mi_idx.info > '7.0' + AND t.production_year BETWEEN 2000 AND 2010 + AND t.id = mi.movie_id + AND t.id = mi_idx.movie_id + AND mi.info_type_id = it1.id + AND mi_idx.info_type_id = it2.id + AND t.id = mc.movie_id + AND ct.id = mc.company_type_id + AND cn.id = mc.company_id + AND mc.movie_id = mi.movie_id + AND mc.movie_id = mi_idx.movie_id + AND mi.movie_id = mi_idx.movie_id; + +`, + ExpectedPlan: "Project\n" + + " β”œβ”€ columns: [min(cn.name):0!null->movie_company:0, min(mi_idx.info):1!null->rating:0, min(t.title):2!null->mainstream_movie:0]\n" + + " └─ GroupBy\n" + + " β”œβ”€ select: MIN(cn.name:10!null), MIN(mi_idx.info:14!null), MIN(t.title:1!null)\n" + + " β”œβ”€ group: \n" + + " └─ LookupJoin\n" + + " β”œβ”€ AND\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.id:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.company_type_id:20!null\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.id:9!null\n" + + " β”‚ β”‚ β”‚ └─ mc.company_id:19!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ mc.movie_id:18!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:12!null\n" + + " β”‚ └─ Eq\n" + + " β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ └─ mc.movie_id:18!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ mi.info_type_id:16!null\n" + + " β”‚ β”‚ └─ it1.id:5!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:12!null\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ 2000 (smallint)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 2010 (smallint)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ genres (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (10,11)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + + " β”‚ β”‚ β”‚ └─ 7.0 (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [it2.id:3!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (24-28)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ └─ TUPLE(Drama (longtext), Horror (longtext), Western (longtext), Family (longtext))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi_idx.movie_id:12!null]\n" + + " β”‚ β”œβ”€ colSet: (19-23)\n" + + " β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mi.movie_id:15!null]\n" + + " β”œβ”€ colSet: (14-18)\n" + + " β”œβ”€ tableId: 5\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_id company_type_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as mainstream_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year >= 2000) AND (t.production_year <= 2010))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi_idx.info_type_id = it2.id) AND (mc.movie_id = mi_idx.movie_id)) AND (mi.movie_id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '7.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.info_type_id = it1.id) AND (mc.movie_id = mi.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Drama', 'Horror', 'Western', 'Family'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[us]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((ct.id = mc.company_type_id) AND (cn.id = mc.company_id)) AND (mc.movie_id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (mi.info_type_id = it1.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (t.id = mi_idx.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 2000) AND (t.production_year <= 2010))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi_idx.info > '7.0')\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it2.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('Drama', 'Horror', 'Western', 'Family'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: mi_idx.movie_id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " └─ keys: mi.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as mainstream_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year >= 2000) AND (t.production_year <= 2010))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi_idx.info_type_id = it2.id) AND (mc.movie_id = mi_idx.movie_id)) AND (mi.movie_id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '7.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.info_type_id = it1.id) AND (mc.movie_id = mi.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Drama', 'Horror', 'Western', 'Family'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[us]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((ct.id = mc.company_type_id) AND (cn.id = mc.company_id)) AND (mc.movie_id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (mi.info_type_id = it1.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (t.id = mi_idx.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 2000) AND (t.production_year <= 2010))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi_idx.info > '7.0')\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it2.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('Drama', 'Horror', 'Western', 'Family'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: mi_idx.movie_id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " └─ keys: mi.movie_id\n" + "", }, { @@ -2626,122 +2642,121 @@ WHERE cn.country_code ='[de]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi.info):0!null->release_date:0, min(miidx.info):1!null->rating:0, min(t.title):2!null->german_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi.info:8!null), MIN(miidx.info:5!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi.info:7!null), MIN(miidx.info:21!null), MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.id:17!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.id:15!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_type_id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.id:11!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.info_type_id:6!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ kt.id:12!null\n" + - " β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ └─ miidx.movie_id:19!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:9!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ miidx.movie_id:19!null\n" + + " β”‚ β”‚ └─ mc.movie_id:8!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ miidx.movie_id:3!null\n" + - " β”‚ └─ t.id:0!null\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + + " β”‚ β”œβ”€ miidx.movie_id:19!null\n" + + " β”‚ └─ t.id:2!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ movie (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (31-42)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title kind_id]\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [t.id:2!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (21-25)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi.movie_id:5!null]\n" + + " β”‚ β”œβ”€ colSet: (16-20)\n" + + " β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ it.id:16!null\n" + - " β”‚ β”‚ β”‚ └─ miidx.info_type_id:4!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ β”‚ └─ miidx.movie_id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ miidx.movie_id:3!null\n" + - " β”‚ └─ mc.movie_id:9!null\n" + - " β”œβ”€ TableAlias(miidx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.id:14!null\n" + - " β”‚ β”‚ └─ mi.info_type_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ └─ mc.movie_id:9!null\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.id:20!null\n" + - " β”‚ β”‚ └─ mc.company_id:10!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ct.id:18!null\n" + - " β”‚ └─ mc.company_type_id:11!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ movie (longtext)\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ release dates (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (10,11)\n" + - " β”‚ └─ tableId: 3\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ β”‚ └─ production companies (longtext)\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ └─ [de] (longtext)\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id country_code]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ release dates (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (10,11)\n" + + " β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ └─ [de] (longtext)\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(miidx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”œβ”€ keys: [it.id:13!null]\n" + + " β”œβ”€ colSet: (26-30)\n" + + " β”œβ”€ tableId: 8\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_info_idx\n" + + " └─ columns: [movie_id info_type_id info]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi.info) as release_date, min(miidx.info) as rating, min(t.title) as german_movie]\n" + @@ -2749,63 +2764,64 @@ WHERE cn.country_code ='[de]' " β”œβ”€ SelectedExprs(MIN(mi.info), MIN(miidx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((mi.movie_id = t.id) AND (kt.id = t.kind_id)) AND (mc.movie_id = t.id)) AND (miidx.movie_id = t.id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((it.id = miidx.info_type_id) AND (mi.movie_id = miidx.movie_id)) AND (miidx.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(miidx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it2.id = mi.info_type_id) AND (mi.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((cn.id = mc.company_id) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'rating')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[de]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id country_code]\n" + + " β”œβ”€ ((((((cn.id = mc.company_id) AND (ct.id = mc.company_type_id)) AND (it2.id = mi.info_type_id)) AND (mi.movie_id = miidx.movie_id)) AND (miidx.movie_id = mc.movie_id)) AND (miidx.movie_id = t.id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'release dates')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[de]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(miidx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: it.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi.info) as release_date, min(miidx.info) as rating, min(t.title) as german_movie]\n" + @@ -2813,63 +2829,64 @@ WHERE cn.country_code ='[de]' " β”œβ”€ SelectedExprs(MIN(mi.info), MIN(miidx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((mi.movie_id = t.id) AND (kt.id = t.kind_id)) AND (mc.movie_id = t.id)) AND (miidx.movie_id = t.id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((it.id = miidx.info_type_id) AND (mi.movie_id = miidx.movie_id)) AND (miidx.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(miidx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it2.id = mi.info_type_id) AND (mi.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((cn.id = mc.company_id) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'rating')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[de]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id country_code]\n" + + " β”œβ”€ ((((((cn.id = mc.company_id) AND (ct.id = mc.company_type_id)) AND (it2.id = mi.info_type_id)) AND (mi.movie_id = miidx.movie_id)) AND (miidx.movie_id = mc.movie_id)) AND (miidx.movie_id = t.id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'release dates')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[de]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(miidx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: it.id\n" + "", }, { @@ -2910,131 +2927,130 @@ WHERE cn.country_code ='[us]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->producing_company:0, min(miidx.info):1!null->rating:0, min(t.title):2!null->movie_about_winning:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:20!null), MIN(miidx.info:5!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:17!null), MIN(miidx.info:21!null), MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.id:16!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.id:14!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_type_id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.info_type_id:6!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ kt.id:11!null\n" + - " β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ └─ miidx.movie_id:19!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:8!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ miidx.movie_id:19!null\n" + + " β”‚ β”‚ └─ mc.movie_id:7!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ miidx.movie_id:3!null\n" + - " β”‚ └─ t.id:0!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + - " β”‚ β”‚ β”‚ └─ (longtext)\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ t.title LIKE '%Champion%'\n" + - " β”‚ β”‚ └─ t.title LIKE '%Loser%'\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + + " β”‚ β”œβ”€ miidx.movie_id:19!null\n" + + " β”‚ └─ t.id:2!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ movie (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.title LIKE '%Champion%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ t.title LIKE '%Loser%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (31-42)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title kind_id]\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [t.id:2!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (21-25)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi.movie_id:5!null]\n" + + " β”‚ β”œβ”€ colSet: (16-20)\n" + + " β”‚ β”œβ”€ tableId: 6\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + + " β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ it.id:15!null\n" + - " β”‚ β”‚ β”‚ └─ miidx.info_type_id:4!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ β”‚ └─ miidx.movie_id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ miidx.movie_id:3!null\n" + - " β”‚ └─ mc.movie_id:8!null\n" + - " β”œβ”€ TableAlias(miidx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.id:13!null\n" + - " β”‚ β”‚ └─ mi.info_type_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ └─ mc.movie_id:8!null\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.id:19!null\n" + - " β”‚ β”‚ └─ mc.company_id:9!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ct.id:17!null\n" + - " β”‚ └─ mc.company_type_id:10!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ movie (longtext)\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ release dates (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (10,11)\n" + - " β”‚ └─ tableId: 3\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ β”‚ └─ production companies (longtext)\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ └─ [us] (longtext)\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ release dates (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (10,11)\n" + + " β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id name country_code]\n" + + " └─ TableAlias(miidx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”œβ”€ keys: [it.id:12!null]\n" + + " β”œβ”€ colSet: (26-30)\n" + + " β”œβ”€ tableId: 8\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_info_idx\n" + + " └─ columns: [movie_id info_type_id info]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as producing_company, min(miidx.info) as rating, min(t.title) as movie_about_winning]\n" + @@ -3042,131 +3058,133 @@ WHERE cn.country_code ='[us]' " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(miidx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((mi.movie_id = t.id) AND (kt.id = t.kind_id)) AND (mc.movie_id = t.id)) AND (miidx.movie_id = t.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT((t.title = ''))) AND (t.title LIKE '%Champion%' OR t.title LIKE '%Loser%'))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((it.id = miidx.info_type_id) AND (mi.movie_id = miidx.movie_id)) AND (miidx.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(miidx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it2.id = mi.info_type_id) AND (mi.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((cn.id = mc.company_id) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'rating')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[us]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + - "", - ExpectedAnalysis: "Project\n" + - " β”œβ”€ columns: [min(cn.name) as producing_company, min(miidx.info) as rating, min(t.title) as movie_about_winning]\n" + - " └─ GroupBy\n" + - " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(miidx.info), MIN(t.title))\n" + - " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mi.movie_id = t.id) AND (kt.id = t.kind_id)) AND (mc.movie_id = t.id)) AND (miidx.movie_id = t.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT((t.title = ''))) AND (t.title LIKE '%Champion%' OR t.title LIKE '%Loser%'))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((it.id = miidx.info_type_id) AND (mi.movie_id = miidx.movie_id)) AND (miidx.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(miidx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it2.id = mi.info_type_id) AND (mi.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((cn.id = mc.company_id) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'rating')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[us]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”œβ”€ ((((((cn.id = mc.company_id) AND (ct.id = mc.company_type_id)) AND (it2.id = mi.info_type_id)) AND (mi.movie_id = miidx.movie_id)) AND (miidx.movie_id = mc.movie_id)) AND (miidx.movie_id = t.id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT((t.title = ''))) AND (t.title LIKE '%Champion%' OR t.title LIKE '%Loser%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id]\n" + + " β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'release dates')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id name country_code]\n" + + " └─ TableAlias(miidx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: it.id\n" + + "", + ExpectedAnalysis: "Project\n" + + " β”œβ”€ columns: [min(cn.name) as producing_company, min(miidx.info) as rating, min(t.title) as movie_about_winning]\n" + + " └─ GroupBy\n" + + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(miidx.info), MIN(t.title))\n" + + " β”œβ”€ Grouping()\n" + + " └─ InnerJoin\n" + + " β”œβ”€ ((((((cn.id = mc.company_id) AND (ct.id = mc.company_type_id)) AND (it2.id = mi.info_type_id)) AND (mi.movie_id = miidx.movie_id)) AND (miidx.movie_id = mc.movie_id)) AND (miidx.movie_id = t.id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT((t.title = ''))) AND (t.title LIKE '%Champion%' OR t.title LIKE '%Loser%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id]\n" + + " β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'release dates')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id name country_code]\n" + + " └─ TableAlias(miidx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: it.id\n" + "", }, { @@ -3207,143 +3225,142 @@ WHERE cn.country_code ='[us]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->producing_company:0, min(miidx.info):1!null->rating:0, min(t.title):2!null->movie_about_winning:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:20!null), MIN(miidx.info:5!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:17!null), MIN(miidx.info:21!null), MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.id:16!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.id:14!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_type_id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.info_type_id:6!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ kt.id:11!null\n" + - " β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ └─ miidx.movie_id:19!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:8!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ miidx.movie_id:19!null\n" + + " β”‚ β”‚ └─ mc.movie_id:7!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ miidx.movie_id:3!null\n" + - " β”‚ └─ t.id:0!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + - " β”‚ β”‚ β”‚ └─ (longtext)\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Champion (longtext)\n" + - " β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + - " β”‚ β”‚ β”‚ └─ ChampionΓΏ (longtext)\n" + - " β”‚ β”‚ └─ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + - " β”‚ β”‚ β”‚ └─ Loser (longtext)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ t.title:1!null\n" + - " β”‚ β”‚ └─ LoserΓΏ (longtext)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + + " β”‚ β”œβ”€ miidx.movie_id:19!null\n" + + " β”‚ └─ t.id:2!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ movie (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Champion (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ChampionΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Loser (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LoserΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (31-42)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title kind_id]\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [t.id:2!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (21-25)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi.movie_id:5!null]\n" + + " β”‚ β”œβ”€ colSet: (16-20)\n" + + " β”‚ β”œβ”€ tableId: 6\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + + " β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ it.id:15!null\n" + - " β”‚ β”‚ β”‚ └─ miidx.info_type_id:4!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ β”‚ └─ miidx.movie_id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ miidx.movie_id:3!null\n" + - " β”‚ └─ mc.movie_id:8!null\n" + - " β”œβ”€ TableAlias(miidx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.id:13!null\n" + - " β”‚ β”‚ └─ mi.info_type_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ └─ mc.movie_id:8!null\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.id:19!null\n" + - " β”‚ β”‚ └─ mc.company_id:9!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ct.id:17!null\n" + - " β”‚ └─ mc.company_type_id:10!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ movie (longtext)\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ release dates (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (10,11)\n" + - " β”‚ └─ tableId: 3\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ β”‚ └─ production companies (longtext)\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ └─ [us] (longtext)\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ release dates (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (10,11)\n" + + " β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id name country_code]\n" + + " └─ TableAlias(miidx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”œβ”€ keys: [it.id:12!null]\n" + + " β”œβ”€ colSet: (26-30)\n" + + " β”œβ”€ tableId: 8\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_info_idx\n" + + " └─ columns: [movie_id info_type_id info]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as producing_company, min(miidx.info) as rating, min(t.title) as movie_about_winning]\n" + @@ -3351,65 +3368,66 @@ WHERE cn.country_code ='[us]' " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(miidx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((mi.movie_id = t.id) AND (kt.id = t.kind_id)) AND (mc.movie_id = t.id)) AND (miidx.movie_id = t.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT((t.title = ''))) AND (((t.title >= 'Champion') AND (t.title <= 'ChampionΓΏ')) OR ((t.title >= 'Loser') AND (t.title <= 'LoserΓΏ'))))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((it.id = miidx.info_type_id) AND (mi.movie_id = miidx.movie_id)) AND (miidx.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(miidx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it2.id = mi.info_type_id) AND (mi.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((cn.id = mc.company_id) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'rating')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[us]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”œβ”€ ((((((cn.id = mc.company_id) AND (ct.id = mc.company_type_id)) AND (it2.id = mi.info_type_id)) AND (mi.movie_id = miidx.movie_id)) AND (miidx.movie_id = mc.movie_id)) AND (miidx.movie_id = t.id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT((t.title = ''))) AND (((t.title >= 'Champion') AND (t.title <= 'ChampionΓΏ')) OR ((t.title >= 'Loser') AND (t.title <= 'LoserΓΏ'))))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id]\n" + + " β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'release dates')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id name country_code]\n" + + " └─ TableAlias(miidx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: it.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as producing_company, min(miidx.info) as rating, min(t.title) as movie_about_winning]\n" + @@ -3417,65 +3435,66 @@ WHERE cn.country_code ='[us]' " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(miidx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((mi.movie_id = t.id) AND (kt.id = t.kind_id)) AND (mc.movie_id = t.id)) AND (miidx.movie_id = t.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT((t.title = ''))) AND (((t.title >= 'Champion') AND (t.title <= 'ChampionΓΏ')) OR ((t.title >= 'Loser') AND (t.title <= 'LoserΓΏ'))))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((it.id = miidx.info_type_id) AND (mi.movie_id = miidx.movie_id)) AND (miidx.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(miidx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it2.id = mi.info_type_id) AND (mi.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((cn.id = mc.company_id) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'rating')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[us]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”œβ”€ ((((((cn.id = mc.company_id) AND (ct.id = mc.company_type_id)) AND (it2.id = mi.info_type_id)) AND (mi.movie_id = miidx.movie_id)) AND (miidx.movie_id = mc.movie_id)) AND (miidx.movie_id = t.id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT((t.title = ''))) AND (((t.title >= 'Champion') AND (t.title <= 'ChampionΓΏ')) OR ((t.title >= 'Loser') AND (t.title <= 'LoserΓΏ'))))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id]\n" + + " β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'release dates')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id name country_code]\n" + + " └─ TableAlias(miidx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: it.id\n" + "", }, { @@ -3513,122 +3532,121 @@ WHERE cn.country_code ='[us]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->producing_company:0, min(miidx.info):1!null->rating:0, min(t.title):2!null->movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:20!null), MIN(miidx.info:5!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:17!null), MIN(miidx.info:21!null), MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.id:16!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.id:14!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_type_id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.info_type_id:6!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ kt.id:11!null\n" + - " β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ └─ miidx.movie_id:19!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:8!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ miidx.movie_id:19!null\n" + + " β”‚ β”‚ └─ mc.movie_id:7!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ miidx.movie_id:3!null\n" + - " β”‚ └─ t.id:0!null\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + + " β”‚ β”œβ”€ miidx.movie_id:19!null\n" + + " β”‚ └─ t.id:2!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ movie (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (31-42)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title kind_id]\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [t.id:2!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (21-25)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi.movie_id:5!null]\n" + + " β”‚ β”œβ”€ colSet: (16-20)\n" + + " β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ it.id:15!null\n" + - " β”‚ β”‚ β”‚ └─ miidx.info_type_id:4!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ β”‚ └─ miidx.movie_id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ miidx.movie_id:3!null\n" + - " β”‚ └─ mc.movie_id:8!null\n" + - " β”œβ”€ TableAlias(miidx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.id:13!null\n" + - " β”‚ β”‚ └─ mi.info_type_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ └─ mc.movie_id:8!null\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.id:19!null\n" + - " β”‚ β”‚ └─ mc.company_id:9!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ct.id:17!null\n" + - " β”‚ └─ mc.company_type_id:10!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ movie (longtext)\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ release dates (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (10,11)\n" + - " β”‚ └─ tableId: 3\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ β”‚ └─ production companies (longtext)\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ └─ [us] (longtext)\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ release dates (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (10,11)\n" + + " β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id name country_code]\n" + + " └─ TableAlias(miidx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”œβ”€ keys: [it.id:12!null]\n" + + " β”œβ”€ colSet: (26-30)\n" + + " β”œβ”€ tableId: 8\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_info_idx\n" + + " └─ columns: [movie_id info_type_id info]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as producing_company, min(miidx.info) as rating, min(t.title) as movie]\n" + @@ -3636,63 +3654,64 @@ WHERE cn.country_code ='[us]' " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(miidx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((mi.movie_id = t.id) AND (kt.id = t.kind_id)) AND (mc.movie_id = t.id)) AND (miidx.movie_id = t.id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((it.id = miidx.info_type_id) AND (mi.movie_id = miidx.movie_id)) AND (miidx.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(miidx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it2.id = mi.info_type_id) AND (mi.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((cn.id = mc.company_id) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'rating')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[us]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”œβ”€ ((((((cn.id = mc.company_id) AND (ct.id = mc.company_type_id)) AND (it2.id = mi.info_type_id)) AND (mi.movie_id = miidx.movie_id)) AND (miidx.movie_id = mc.movie_id)) AND (miidx.movie_id = t.id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id]\n" + + " β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'release dates')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id name country_code]\n" + + " └─ TableAlias(miidx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: it.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as producing_company, min(miidx.info) as rating, min(t.title) as movie]\n" + @@ -3700,63 +3719,64 @@ WHERE cn.country_code ='[us]' " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(miidx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((mi.movie_id = t.id) AND (kt.id = t.kind_id)) AND (mc.movie_id = t.id)) AND (miidx.movie_id = t.id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((it.id = miidx.info_type_id) AND (mi.movie_id = miidx.movie_id)) AND (miidx.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(miidx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it2.id = mi.info_type_id) AND (mi.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((cn.id = mc.company_id) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'rating')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[us]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”œβ”€ ((((((cn.id = mc.company_id) AND (ct.id = mc.company_type_id)) AND (it2.id = mi.info_type_id)) AND (mi.movie_id = miidx.movie_id)) AND (miidx.movie_id = mc.movie_id)) AND (miidx.movie_id = t.id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id]\n" + + " β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'release dates')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ CrossJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id name country_code]\n" + + " └─ TableAlias(miidx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: it.id\n" + "", }, { @@ -3805,183 +3825,187 @@ WHERE it1.info = 'countries' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi_idx.info):0!null->rating:0, min(t.title):1!null->northern_dark_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi_idx.info:8!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi_idx.info:17!null), MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:12!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:8!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ └─ mk.movie_id:11!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ └─ 2010 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:14!null\n" + - " β”‚ └─ mk.keyword_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:16!null\n" + - " β”‚ └─ mi_idx.info_type_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ LessThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + - " β”‚ β”‚ └─ 8.5 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ it1.id:18!null\n" + - " β”‚ └─ mi.info_type_id:10!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Denish (longtext), Norwegian (longtext), German (longtext), USA (longtext), American (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ movie (longtext)\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext), blood (longtext), violence (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ └─ countries (longtext)\n" + - " └─ TableAlias(it1)\n" + - " └─ Table\n" + - " β”œβ”€ name: info_type\n" + - " β”œβ”€ columns: [id info]\n" + - " β”œβ”€ colSet: (1,2)\n" + - " └─ tableId: 1\n" + - "", - ExpectedEstimates: "Project\n" + - " β”œβ”€ columns: [min(mi_idx.info) as rating, min(t.title) as northern_dark_movie]\n" + - " └─ GroupBy\n" + - " β”œβ”€ SelectedExprs(MIN(mi_idx.info), MIN(t.title))\n" + - " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2010)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + + " β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ └─ mi_idx.movie_id:15!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ movie (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ β”‚ └─ 2010 (int)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”œβ”€ colSet: (23-34)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: title\n" + + " β”‚ └─ columns: [id title kind_id production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.movie_id = mi_idx.movie_id) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (it1.id = mi.info_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (it1.info = 'countries')\n" + - " └─ TableAlias(it1)\n" + - " └─ Table\n" + - " β”œβ”€ name: info_type\n" + - " └─ columns: [id info]\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ k.id:18!null\n" + + " β”‚ └─ mk.keyword_id:12!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:8!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:15!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ mk.movie_id:11!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:15!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ countries (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Denish (longtext), Norwegian (longtext), German (longtext), USA (longtext), American (longtext))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [it1.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (10-14)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mi.movie_id:8!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (20-22)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + + " β”‚ β”‚ └─ tableId: 2\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ LessThan\n" + + " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + + " β”‚ β”‚ └─ 8.5 (longtext)\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it2.id:13!null]\n" + + " β”‚ β”œβ”€ colSet: (15-19)\n" + + " β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext), blood (longtext), violence (longtext))\n" + + " └─ TableAlias(k)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + + "", + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [min(mi_idx.info) as rating, min(t.title) as northern_dark_movie]\n" + + " └─ GroupBy\n" + + " β”œβ”€ SelectedExprs(MIN(mi_idx.info), MIN(t.title))\n" + + " β”œβ”€ Grouping()\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (((t.id = mi.movie_id) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (t.production_year > 2010)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ └─ keys: kt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (k.id = mk.keyword_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ ((mi.movie_id = mi_idx.movie_id) AND (mk.movie_id = mi_idx.movie_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'USA', 'American'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: it1.id\n" + + " β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ keys: mi.movie_id\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it2.id\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi_idx.info) as rating, min(t.title) as northern_dark_movie]\n" + @@ -3989,62 +4013,65 @@ WHERE it1.info = 'countries' " β”œβ”€ SelectedExprs(MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2010)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.movie_id = mi_idx.movie_id) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (it1.id = mi.info_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (it1.info = 'countries')\n" + - " └─ TableAlias(it1)\n" + - " └─ Table\n" + - " β”œβ”€ name: info_type\n" + - " └─ columns: [id info]\n" + + " β”œβ”€ (((t.id = mi.movie_id) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (t.production_year > 2010)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ └─ keys: kt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (k.id = mk.keyword_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ ((mi.movie_id = mi_idx.movie_id) AND (mk.movie_id = mi_idx.movie_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'USA', 'American'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: it1.id\n" + + " β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ keys: mi.movie_id\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it2.id\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", }, { @@ -4094,126 +4121,127 @@ WHERE it1.info = 'countries' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi_idx.info):0!null->rating:0, min(t.title):1!null->western_dark_production:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi_idx.info:8!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi_idx.info:17!null), MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:12!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:8!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ └─ mk.movie_id:11!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ β”‚ └─ 2010 (int)\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ Or\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.title LIKE '%murder%'\n" + - " β”‚ β”‚ β”‚ └─ t.title LIKE '%Murder%'\n" + - " β”‚ β”‚ └─ t.title LIKE '%Mord%'\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + + " β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ └─ mi_idx.movie_id:15!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ movie (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ β”‚ β”‚ └─ 2010 (int)\n" + + " β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”œβ”€ Or\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.title LIKE '%murder%'\n" + + " β”‚ β”‚ β”‚ └─ t.title LIKE '%Murder%'\n" + + " β”‚ β”‚ └─ t.title LIKE '%Mord%'\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”œβ”€ colSet: (23-34)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: title\n" + + " β”‚ └─ columns: [id title kind_id production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ k.id:18!null\n" + + " β”‚ └─ mk.keyword_id:12!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:8!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:15!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:14!null\n" + - " β”‚ └─ mk.keyword_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:16!null\n" + - " β”‚ └─ mi_idx.info_type_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + - " β”‚ β”‚ └─ 6.0 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ it1.id:18!null\n" + - " β”‚ └─ mi.info_type_id:10!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Denish (longtext), Norwegian (longtext), German (longtext), USA (longtext), American (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ movie (longtext)\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ └─ countries (longtext)\n" + - " └─ TableAlias(it1)\n" + - " └─ Table\n" + - " β”œβ”€ name: info_type\n" + - " β”œβ”€ columns: [id info]\n" + - " β”œβ”€ colSet: (1,2)\n" + - " └─ tableId: 1\n" + + " β”‚ β”‚ β”œβ”€ mk.movie_id:11!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:15!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ countries (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Denish (longtext), Norwegian (longtext), German (longtext), USA (longtext), American (longtext))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [it1.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (10-14)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mi.movie_id:8!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (20-22)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + + " β”‚ β”‚ └─ tableId: 2\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + + " β”‚ β”‚ └─ 6.0 (longtext)\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it2.id:13!null]\n" + + " β”‚ β”œβ”€ colSet: (15-19)\n" + + " β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext))\n" + + " └─ TableAlias(k)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi_idx.info) as rating, min(t.title) as western_dark_production]\n" + @@ -4221,62 +4249,65 @@ WHERE it1.info = 'countries' " β”œβ”€ SelectedExprs(MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year > 2010) AND ((t.title LIKE '%murder%' OR t.title LIKE '%Murder%') OR t.title LIKE '%Mord%'))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.movie_id = mi_idx.movie_id) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '6.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (it1.id = mi.info_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (it1.info = 'countries')\n" + - " └─ TableAlias(it1)\n" + - " └─ Table\n" + - " β”œβ”€ name: info_type\n" + - " └─ columns: [id info]\n" + + " β”œβ”€ (((t.id = mi.movie_id) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ ((t.production_year > 2010) AND ((t.title LIKE '%murder%' OR t.title LIKE '%Murder%') OR t.title LIKE '%Mord%'))\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ └─ keys: kt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (k.id = mk.keyword_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ ((mi.movie_id = mi_idx.movie_id) AND (mk.movie_id = mi_idx.movie_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'USA', 'American'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: it1.id\n" + + " β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ keys: mi.movie_id\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi_idx.info > '6.0')\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it2.id\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title'))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi_idx.info) as rating, min(t.title) as western_dark_production]\n" + @@ -4284,62 +4315,65 @@ WHERE it1.info = 'countries' " β”œβ”€ SelectedExprs(MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year > 2010) AND ((t.title LIKE '%murder%' OR t.title LIKE '%Murder%') OR t.title LIKE '%Mord%'))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.movie_id = mi_idx.movie_id) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '6.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (it1.id = mi.info_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (it1.info = 'countries')\n" + - " └─ TableAlias(it1)\n" + - " └─ Table\n" + - " β”œβ”€ name: info_type\n" + - " └─ columns: [id info]\n" + + " β”œβ”€ (((t.id = mi.movie_id) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ ((t.production_year > 2010) AND ((t.title LIKE '%murder%' OR t.title LIKE '%Murder%') OR t.title LIKE '%Mord%'))\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ └─ keys: kt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (k.id = mk.keyword_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ ((mi.movie_id = mi_idx.movie_id) AND (mk.movie_id = mi_idx.movie_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'USA', 'American'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: it1.id\n" + + " β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ keys: mi.movie_id\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi_idx.info > '6.0')\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it2.id\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title'))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", }, { @@ -4390,123 +4424,124 @@ WHERE it1.info = 'countries' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi_idx.info):0!null->rating:0, min(t.title):1!null->north_european_dark_production:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi_idx.info:8!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi_idx.info:17!null), MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:12!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:8!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ └─ mk.movie_id:11!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ └─ 2005 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + + " β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ └─ mi_idx.movie_id:15!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ TUPLE(movie (longtext), episode (longtext))\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ β”‚ └─ 2005 (int)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”œβ”€ colSet: (23-34)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: title\n" + + " β”‚ └─ columns: [id title kind_id production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ k.id:18!null\n" + + " β”‚ └─ mk.keyword_id:12!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:8!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:15!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:14!null\n" + - " β”‚ └─ mk.keyword_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ mk.movie_id:11!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:15!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ countries (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Danish (longtext), Norwegian (longtext), German (longtext), USA (longtext), American (longtext))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [it1.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (10-14)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mi.movie_id:8!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (20-22)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + + " β”‚ β”‚ └─ tableId: 2\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ LessThan\n" + + " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + + " β”‚ β”‚ └─ 8.5 (longtext)\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it2.id:13!null]\n" + + " β”‚ β”œβ”€ colSet: (15-19)\n" + + " β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ Filter\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:16!null\n" + - " β”‚ └─ mi_idx.info_type_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ LessThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + - " β”‚ β”‚ └─ 8.5 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ it1.id:18!null\n" + - " β”‚ └─ mi.info_type_id:10!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Danish (longtext), Norwegian (longtext), German (longtext), USA (longtext), American (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(movie (longtext), episode (longtext))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ k.keyword:1!null IS NULL\n" + - " β”‚ β”‚ └─ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext), blood (longtext), violence (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ └─ countries (longtext)\n" + - " └─ TableAlias(it1)\n" + - " └─ Table\n" + - " β”œβ”€ name: info_type\n" + - " β”œβ”€ columns: [id info]\n" + - " β”œβ”€ colSet: (1,2)\n" + - " └─ tableId: 1\n" + + " β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ └─ k.keyword:1!null IS NULL\n" + + " β”‚ └─ HashIn\n" + + " β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext), blood (longtext), violence (longtext))\n" + + " └─ TableAlias(k)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi_idx.info) as rating, min(t.title) as north_european_dark_production]\n" + @@ -4514,62 +4549,65 @@ WHERE it1.info = 'countries' " β”œβ”€ SelectedExprs(MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.movie_id = mi_idx.movie_id) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (it1.id = mi.info_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(k.keyword IS NULL)) AND (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence')))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (it1.info = 'countries')\n" + - " └─ TableAlias(it1)\n" + - " └─ Table\n" + - " β”œβ”€ name: info_type\n" + - " └─ columns: [id info]\n" + + " β”œβ”€ (((t.id = mi.movie_id) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (t.production_year > 2005)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ └─ keys: kt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (k.id = mk.keyword_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ ((mi.movie_id = mi_idx.movie_id) AND (mk.movie_id = mi_idx.movie_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: it1.id\n" + + " β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ keys: mi.movie_id\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it2.id\n" + + " └─ Filter\n" + + " β”œβ”€ ((NOT(k.keyword IS NULL)) AND (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence')))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi_idx.info) as rating, min(t.title) as north_european_dark_production]\n" + @@ -4577,62 +4615,65 @@ WHERE it1.info = 'countries' " β”œβ”€ SelectedExprs(MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.movie_id = mi_idx.movie_id) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (it1.id = mi.info_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(k.keyword IS NULL)) AND (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence')))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (it1.info = 'countries')\n" + - " └─ TableAlias(it1)\n" + - " └─ Table\n" + - " β”œβ”€ name: info_type\n" + - " └─ columns: [id info]\n" + + " β”œβ”€ (((t.id = mi.movie_id) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (t.production_year > 2005)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ └─ keys: kt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (k.id = mk.keyword_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ ((mi.movie_id = mi_idx.movie_id) AND (mk.movie_id = mi_idx.movie_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: it1.id\n" + + " β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ keys: mi.movie_id\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it2.id\n" + + " └─ Filter\n" + + " β”œβ”€ ((NOT(k.keyword IS NULL)) AND (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence')))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", }, { @@ -4674,7 +4715,7 @@ WHERE cn.country_code = '[us]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi.info):0!null->release_date:0, min(t.title):1!null->internet_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi.info:7!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi.info:14!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + @@ -4682,16 +4723,16 @@ WHERE cn.country_code = '[us]' " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ at.movie_id:19!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ at.movie_id:16!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:12!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:3!null\n" + + " β”‚ β”‚ └─ mk.movie_id:4!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:9!null\n" + + " β”‚ └─ mc.movie_id:8!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ GreaterThan\n" + " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + @@ -4704,103 +4745,99 @@ WHERE cn.country_code = '[us]' " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:9!null\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:12!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:3!null\n" + - " β”‚ β”‚ └─ at.movie_id:19!null\n" + + " β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + + " β”‚ β”‚ └─ mc.movie_id:8!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:13!null\n" + - " β”‚ └─ mk.keyword_id:4!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:9!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:5!null\n" + - " β”‚ β”‚ └─ at.movie_id:19!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:14!null\n" + - " β”‚ └─ mi.info_type_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ mi.note LIKE '%internet%'\n" + - " β”‚ β”‚ └─ mi.info LIKE 'USA:% 200%'\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”œβ”€ mk.movie_id:4!null\n" + + " β”‚ └─ at.movie_id:16!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (37-39)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ InnerJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ it1.id:18!null\n" + + " β”‚ └─ mi.info_type_id:13!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ct.id:17!null\n" + + " β”‚ β”‚ └─ mc.company_type_id:10!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note LIKE '%(200%)%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.note LIKE '%(worldwide)%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cn.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (27-31)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.note LIKE '%internet%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.info LIKE 'USA:% 200%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:8!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-36)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info note]\n" + + " β”‚ β”‚ └─ TableAlias(at)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(aka_title)\n" + + " β”‚ β”‚ β”œβ”€ index: [aka_title.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:8!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (1-12)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: aka_title\n" + + " β”‚ β”‚ └─ columns: [movie_id]\n" + + " β”‚ └─ TableAlias(ct)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ └─ at.movie_id:19!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.id:17!null\n" + - " β”‚ β”‚ └─ mc.company_id:10!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ct.id:16!null\n" + - " β”‚ └─ mc.company_type_id:11!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ mc.note LIKE '%(200%)%'\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(worldwide)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ release dates (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ TableAlias(at)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_title\n" + - " └─ columns: [movie_id]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + + " └─ Filter\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ └─ release dates (longtext)\n" + + " └─ TableAlias(it1)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: info_type\n" + + " └─ columns: [id info]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi.info) as release_date, min(t.title) as internet_movie]\n" + @@ -4816,55 +4853,59 @@ WHERE cn.country_code = '[us]' " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = at.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = at.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”œβ”€ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = at.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (it1.id = mi.info_type_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (ct.id = mc.company_type_id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mc.note LIKE '%(200%)%' AND mc.note LIKE '%(worldwide)%')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info note]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ TableAlias(at)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(aka_title)\n" + + " β”‚ β”‚ β”œβ”€ index: [aka_title.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id]\n" + + " β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ └─ TableAlias(ct)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = at.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mc.note LIKE '%(200%)%' AND mc.note LIKE '%(worldwide)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ TableAlias(at)\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_title\n" + - " └─ columns: [movie_id]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + + " └─ Filter\n" + + " β”œβ”€ (it1.info = 'release dates')\n" + + " └─ TableAlias(it1)\n" + + " └─ Table\n" + + " β”œβ”€ name: info_type\n" + + " └─ columns: [id info]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi.info) as release_date, min(t.title) as internet_movie]\n" + @@ -4880,55 +4921,59 @@ WHERE cn.country_code = '[us]' " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = at.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = at.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”œβ”€ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = at.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (it1.id = mi.info_type_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (ct.id = mc.company_type_id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mc.note LIKE '%(200%)%' AND mc.note LIKE '%(worldwide)%')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info note]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ TableAlias(at)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(aka_title)\n" + + " β”‚ β”‚ β”œβ”€ index: [aka_title.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id]\n" + + " β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ └─ TableAlias(ct)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = at.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mc.note LIKE '%(200%)%' AND mc.note LIKE '%(worldwide)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ TableAlias(at)\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_title\n" + - " └─ columns: [movie_id]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + + " └─ Filter\n" + + " β”œβ”€ (it1.info = 'release dates')\n" + + " └─ TableAlias(it1)\n" + + " └─ Table\n" + + " β”œβ”€ name: info_type\n" + + " └─ columns: [id info]\n" + "", }, { @@ -4971,7 +5016,7 @@ WHERE cn.country_code = '[us]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi.info):0!null->release_date:0, min(t.title):1!null->youtube_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi.info:7!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi.info:15!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + @@ -4979,13 +5024,13 @@ WHERE cn.country_code = '[us]' " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ at.movie_id:20!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ at.movie_id:17!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:13!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:3!null\n" + + " β”‚ β”‚ └─ mk.movie_id:4!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + " β”‚ └─ mc.movie_id:9!null\n" + @@ -5005,107 +5050,103 @@ WHERE cn.country_code = '[us]' " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:9!null\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:13!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:3!null\n" + - " β”‚ β”‚ └─ at.movie_id:20!null\n" + + " β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + + " β”‚ β”‚ └─ mc.movie_id:9!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:13!null\n" + - " β”‚ └─ mk.keyword_id:4!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”œβ”€ mk.movie_id:4!null\n" + + " β”‚ └─ at.movie_id:17!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (37-39)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:9!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:5!null\n" + - " β”‚ β”‚ └─ at.movie_id:20!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:14!null\n" + - " β”‚ └─ mi.info_type_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ mi.note LIKE '%internet%'\n" + - " β”‚ β”‚ └─ mi.info LIKE 'USA:% 200%'\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ it1.id:19!null\n" + + " β”‚ └─ mi.info_type_id:14!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ct.id:18!null\n" + + " β”‚ β”‚ └─ mc.company_type_id:11!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ YouTube (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note LIKE '%(200%)%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.note LIKE '%(worldwide)%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cn.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (27-31)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.note LIKE '%internet%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.info LIKE 'USA:% 200%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:9!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-36)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info note]\n" + + " β”‚ β”‚ └─ TableAlias(at)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(aka_title)\n" + + " β”‚ β”‚ β”œβ”€ index: [aka_title.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:9!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (1-12)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: aka_title\n" + + " β”‚ β”‚ └─ columns: [movie_id]\n" + + " β”‚ └─ TableAlias(ct)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ └─ at.movie_id:20!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.id:17!null\n" + - " β”‚ β”‚ └─ mc.company_id:10!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ct.id:16!null\n" + - " β”‚ └─ mc.company_type_id:11!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ mc.note LIKE '%(200%)%'\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(worldwide)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ release dates (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + - " β”‚ β”‚ └─ YouTube (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ TableAlias(at)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_title\n" + - " └─ columns: [movie_id]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + + " └─ Filter\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ └─ release dates (longtext)\n" + + " └─ TableAlias(it1)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: info_type\n" + + " └─ columns: [id info]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi.info) as release_date, min(t.title) as youtube_movie]\n" + @@ -5121,55 +5162,59 @@ WHERE cn.country_code = '[us]' " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = at.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = at.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”œβ”€ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = at.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (it1.id = mi.info_type_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (ct.id = mc.company_type_id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((cn.country_code = '[us]') AND (cn.name = 'YouTube'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mc.note LIKE '%(200%)%' AND mc.note LIKE '%(worldwide)%')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info note]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ TableAlias(at)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(aka_title)\n" + + " β”‚ β”‚ β”œβ”€ index: [aka_title.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id]\n" + + " β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ └─ TableAlias(ct)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = at.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mc.note LIKE '%(200%)%' AND mc.note LIKE '%(worldwide)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((cn.country_code = '[us]') AND (cn.name = 'YouTube'))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ TableAlias(at)\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_title\n" + - " └─ columns: [movie_id]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + + " └─ Filter\n" + + " β”œβ”€ (it1.info = 'release dates')\n" + + " └─ TableAlias(it1)\n" + + " └─ Table\n" + + " β”œβ”€ name: info_type\n" + + " └─ columns: [id info]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi.info) as release_date, min(t.title) as youtube_movie]\n" + @@ -5185,55 +5230,59 @@ WHERE cn.country_code = '[us]' " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = at.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = at.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”œβ”€ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = at.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (it1.id = mi.info_type_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (ct.id = mc.company_type_id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((cn.country_code = '[us]') AND (cn.name = 'YouTube'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mc.note LIKE '%(200%)%' AND mc.note LIKE '%(worldwide)%')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info note]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ TableAlias(at)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(aka_title)\n" + + " β”‚ β”‚ β”œβ”€ index: [aka_title.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id]\n" + + " β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ └─ TableAlias(ct)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = at.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mc.note LIKE '%(200%)%' AND mc.note LIKE '%(worldwide)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((cn.country_code = '[us]') AND (cn.name = 'YouTube'))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ TableAlias(at)\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_title\n" + - " └─ columns: [movie_id]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + + " └─ Filter\n" + + " β”œβ”€ (it1.info = 'release dates')\n" + + " └─ TableAlias(it1)\n" + + " └─ Table\n" + + " β”œβ”€ name: info_type\n" + + " └─ columns: [id info]\n" + "", }, { @@ -5275,7 +5324,7 @@ WHERE cn.country_code = '[us]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi.info):0!null->release_date:0, min(t.title):1!null->modern_american_internet_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi.info:7!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi.info:13!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + @@ -5283,16 +5332,16 @@ WHERE cn.country_code = '[us]' " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ at.movie_id:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ at.movie_id:15!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:11!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:3!null\n" + + " β”‚ β”‚ └─ mk.movie_id:4!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:9!null\n" + + " β”‚ └─ mc.movie_id:8!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ GreaterThan\n" + " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + @@ -5305,104 +5354,100 @@ WHERE cn.country_code = '[us]' " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:9!null\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:11!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:3!null\n" + - " β”‚ β”‚ └─ at.movie_id:18!null\n" + + " β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + + " β”‚ β”‚ └─ mc.movie_id:8!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:12!null\n" + - " β”‚ └─ mk.keyword_id:4!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”œβ”€ mk.movie_id:4!null\n" + + " β”‚ └─ at.movie_id:15!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (37-39)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:9!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:5!null\n" + - " β”‚ β”‚ └─ at.movie_id:18!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:13!null\n" + - " β”‚ └─ mi.info_type_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.note LIKE '%internet%'\n" + - " β”‚ β”‚ β”‚ └─ NOT\n" + - " β”‚ β”‚ β”‚ └─ mi.info:2!null IS NULL\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ mi.info LIKE 'USA:% 199%'\n" + - " β”‚ β”‚ └─ mi.info LIKE 'USA:% 200%'\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ it1.id:17!null\n" + + " β”‚ └─ mi.info_type_id:12!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ct.id:16!null\n" + + " β”‚ β”‚ └─ mc.company_type_id:10!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cn.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (27-31)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id company_type_id]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.note LIKE '%internet%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.info:2!null IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.info LIKE 'USA:% 199%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.info LIKE 'USA:% 200%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:8!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-36)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info note]\n" + + " β”‚ β”‚ └─ TableAlias(at)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(aka_title)\n" + + " β”‚ β”‚ β”œβ”€ index: [aka_title.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:8!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (1-12)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: aka_title\n" + + " β”‚ β”‚ └─ columns: [movie_id]\n" + + " β”‚ └─ TableAlias(ct)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ └─ at.movie_id:18!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.id:16!null\n" + - " β”‚ β”‚ └─ mc.company_id:10!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ct.id:15!null\n" + - " β”‚ └─ mc.company_type_id:11!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ release dates (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ TableAlias(at)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_title\n" + - " └─ columns: [movie_id]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + + " └─ Filter\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ └─ release dates (longtext)\n" + + " └─ TableAlias(it1)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: info_type\n" + + " └─ columns: [id info]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi.info) as release_date, min(t.title) as modern_american_internet_movie]\n" + @@ -5418,53 +5463,57 @@ WHERE cn.country_code = '[us]' " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = at.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = at.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((mi.note LIKE '%internet%' AND (NOT(mi.info IS NULL))) AND (mi.info LIKE 'USA:% 199%' OR mi.info LIKE 'USA:% 200%'))\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”œβ”€ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = at.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (it1.id = mi.info_type_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (ct.id = mc.company_type_id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((mi.note LIKE '%internet%' AND (NOT(mi.info IS NULL))) AND (mi.info LIKE 'USA:% 199%' OR mi.info LIKE 'USA:% 200%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info note]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ TableAlias(at)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(aka_title)\n" + + " β”‚ β”‚ β”œβ”€ index: [aka_title.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id]\n" + + " β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ └─ TableAlias(ct)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = at.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ TableAlias(at)\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_title\n" + - " └─ columns: [movie_id]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + + " └─ Filter\n" + + " β”œβ”€ (it1.info = 'release dates')\n" + + " └─ TableAlias(it1)\n" + + " └─ Table\n" + + " β”œβ”€ name: info_type\n" + + " └─ columns: [id info]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi.info) as release_date, min(t.title) as modern_american_internet_movie]\n" + @@ -5480,53 +5529,57 @@ WHERE cn.country_code = '[us]' " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = at.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = at.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((mi.note LIKE '%internet%' AND (NOT(mi.info IS NULL))) AND (mi.info LIKE 'USA:% 199%' OR mi.info LIKE 'USA:% 200%'))\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”œβ”€ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = at.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (it1.id = mi.info_type_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (ct.id = mc.company_type_id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((mi.note LIKE '%internet%' AND (NOT(mi.info IS NULL))) AND (mi.info LIKE 'USA:% 199%' OR mi.info LIKE 'USA:% 200%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info note]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ TableAlias(at)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(aka_title)\n" + + " β”‚ β”‚ β”œβ”€ index: [aka_title.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id]\n" + + " β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ └─ TableAlias(ct)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = at.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ TableAlias(at)\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_title\n" + - " └─ columns: [movie_id]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + + " └─ Filter\n" + + " β”œβ”€ (it1.info = 'release dates')\n" + + " └─ TableAlias(it1)\n" + + " └─ Table\n" + + " β”œβ”€ name: info_type\n" + + " └─ columns: [id info]\n" + "", }, { @@ -5565,7 +5618,7 @@ WHERE cn.country_code = '[us]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(at.title):0!null->aka_title:0, min(t.title):1!null->internet_movie_title:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(at.title:18!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(at.title:15!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + @@ -5573,13 +5626,13 @@ WHERE cn.country_code = '[us]' " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ at.movie_id:17!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ at.movie_id:14!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:11!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:3!null\n" + + " β”‚ β”‚ └─ mk.movie_id:4!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + " β”‚ └─ mc.movie_id:8!null\n" + @@ -5595,97 +5648,93 @@ WHERE cn.country_code = '[us]' " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:8!null\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:11!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:3!null\n" + - " β”‚ β”‚ └─ at.movie_id:17!null\n" + + " β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + + " β”‚ β”‚ └─ mc.movie_id:8!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:11!null\n" + - " β”‚ └─ mk.keyword_id:4!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”œβ”€ mk.movie_id:4!null\n" + + " β”‚ └─ at.movie_id:14!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (37-39)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:8!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:5!null\n" + - " β”‚ β”‚ └─ at.movie_id:17!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:12!null\n" + - " β”‚ └─ mi.info_type_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mi.note LIKE '%internet%'\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ it1.id:17!null\n" + + " β”‚ └─ mi.info_type_id:12!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ct.id:16!null\n" + + " β”‚ β”‚ └─ mc.company_type_id:10!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cn.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (27-31)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id company_type_id]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.note LIKE '%internet%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:8!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-36)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id note]\n" + + " β”‚ β”‚ └─ TableAlias(at)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(aka_title)\n" + + " β”‚ β”‚ β”œβ”€ index: [aka_title.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:8!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (1-12)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: aka_title\n" + + " β”‚ β”‚ └─ columns: [movie_id title]\n" + + " β”‚ └─ TableAlias(ct)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:8!null\n" + - " β”‚ β”‚ β”‚ └─ at.movie_id:17!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.id:15!null\n" + - " β”‚ β”‚ └─ mc.company_id:9!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ct.id:14!null\n" + - " β”‚ └─ mc.company_type_id:10!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ release dates (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ TableAlias(at)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_title\n" + - " └─ columns: [movie_id title]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + + " └─ Filter\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ └─ release dates (longtext)\n" + + " └─ TableAlias(it1)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: info_type\n" + + " └─ columns: [id info]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(at.title) as aka_title, min(t.title) as internet_movie_title]\n" + @@ -5701,53 +5750,57 @@ WHERE cn.country_code = '[us]' " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = at.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = at.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mi.note LIKE '%internet%'\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”œβ”€ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = at.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (it1.id = mi.info_type_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (ct.id = mc.company_type_id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.note LIKE '%internet%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id note]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ TableAlias(at)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(aka_title)\n" + + " β”‚ β”‚ β”œβ”€ index: [aka_title.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id title]\n" + + " β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ └─ TableAlias(ct)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = at.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ TableAlias(at)\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_title\n" + - " └─ columns: [movie_id title]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + + " └─ Filter\n" + + " β”œβ”€ (it1.info = 'release dates')\n" + + " └─ TableAlias(it1)\n" + + " └─ Table\n" + + " β”œβ”€ name: info_type\n" + + " └─ columns: [id info]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(at.title) as aka_title, min(t.title) as internet_movie_title]\n" + @@ -5763,53 +5816,57 @@ WHERE cn.country_code = '[us]' " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = at.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = at.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mi.note LIKE '%internet%'\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”œβ”€ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = at.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (it1.id = mi.info_type_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (ct.id = mc.company_type_id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.note LIKE '%internet%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id note]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ TableAlias(at)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(aka_title)\n" + + " β”‚ β”‚ β”œβ”€ index: [aka_title.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id title]\n" + + " β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ └─ TableAlias(ct)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = at.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ TableAlias(at)\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_title\n" + - " └─ columns: [movie_id title]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + + " └─ Filter\n" + + " β”œβ”€ (it1.info = 'release dates')\n" + + " └─ TableAlias(it1)\n" + + " └─ Table\n" + + " β”œβ”€ name: info_type\n" + + " └─ columns: [id info]\n" + "", }, { @@ -5850,14 +5907,14 @@ WHERE cn.country_code ='[us]' " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:13!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:5!null\n" + " β”‚ β”‚ β”‚ └─ t.id:0!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ └─ mk.movie_id:6!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:6!null\n" + + " β”‚ └─ mc.movie_id:10!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + @@ -5871,84 +5928,80 @@ WHERE cn.country_code ='[us]' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title episode_nr]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ an.person_id:14!null\n" + - " β”‚ β”‚ └─ n.id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ n.id:3!null\n" + - " β”‚ └─ ci.person_id:12!null\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.keyword_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ k.id:8!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:13!null\n" + - " β”‚ β”‚ └─ mk.movie_id:4!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:6!null\n" + - " β”‚ └─ mk.movie_id:4!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_id:7!null\n" + - " β”‚ β”‚ └─ cn.id:10!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:13!null\n" + - " β”‚ └─ mc.movie_id:6!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ character-name-in-title (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:12!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id name]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ an.person_id:14!null\n" + + " β”‚ └─ n.id:3!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ mk.keyword_id:7!null\n" + + " β”‚ β”‚ └─ k.id:12!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:6!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [n.id:3!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (9-15)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:5!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (31-33)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cn.id:8!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (26-30)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ └─ character-name-in-title (longtext)\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ keys: [ci.person_id:4!null]\n" + + " β”œβ”€ colSet: (1-8)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: aka_name\n" + + " └─ columns: [person_id name]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(an.name) as cool_actor_pseudonym, min(t.title) as series_named_after_char]\n" + @@ -5963,48 +6016,51 @@ WHERE cn.country_code ='[us]' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title episode_nr]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((an.person_id = n.id) AND (n.id = ci.person_id))\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an.person_id = n.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (mc.movie_id = mk.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(an.name) as cool_actor_pseudonym, min(t.title) as series_named_after_char]\n" + @@ -6019,48 +6075,51 @@ WHERE cn.country_code ='[us]' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title episode_nr]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((an.person_id = n.id) AND (n.id = ci.person_id))\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an.person_id = n.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (mc.movie_id = mk.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", }, { @@ -6099,97 +6158,93 @@ WHERE cn.country_code ='[us]' " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:12!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:4!null\n" + " β”‚ β”‚ β”‚ └─ t.id:0!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:3!null\n" + + " β”‚ β”‚ └─ mk.movie_id:5!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:5!null\n" + + " β”‚ └─ mc.movie_id:9!null\n" + " β”œβ”€ TableAlias(t)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ an.person_id:13!null\n" + + " β”‚ └─ n.id:2!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ an.person_id:13!null\n" + - " β”‚ β”‚ └─ n.id:2!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ n.id:2!null\n" + - " β”‚ └─ ci.person_id:11!null\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.keyword_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ k.id:7!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:12!null\n" + - " β”‚ β”‚ └─ mk.movie_id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:5!null\n" + - " β”‚ └─ mk.movie_id:3!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_id:6!null\n" + - " β”‚ β”‚ └─ cn.id:9!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:12!null\n" + - " β”‚ └─ mc.movie_id:5!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ character-name-in-title (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:11!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id name]\n" + + " β”‚ β”‚ β”œβ”€ mk.keyword_id:6!null\n" + + " β”‚ β”‚ └─ k.id:11!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:9!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [n.id:2!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (9-15)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:4!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (31-33)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cn.id:7!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (26-30)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ └─ character-name-in-title (longtext)\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ keys: [ci.person_id:3!null]\n" + + " β”œβ”€ colSet: (1-8)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: aka_name\n" + + " └─ columns: [person_id name]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(an.name) as cool_actor_pseudonym, min(t.title) as series_named_after_char]\n" + @@ -6202,48 +6257,51 @@ WHERE cn.country_code ='[us]' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((an.person_id = n.id) AND (n.id = ci.person_id))\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an.person_id = n.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (mc.movie_id = mk.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(an.name) as cool_actor_pseudonym, min(t.title) as series_named_after_char]\n" + @@ -6256,48 +6314,51 @@ WHERE cn.country_code ='[us]' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((an.person_id = n.id) AND (n.id = ci.person_id))\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an.person_id = n.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (mc.movie_id = mk.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", }, { @@ -6337,14 +6398,14 @@ WHERE cn.country_code ='[us]' " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:13!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:5!null\n" + " β”‚ β”‚ β”‚ └─ t.id:0!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ └─ mk.movie_id:6!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:6!null\n" + + " β”‚ └─ mc.movie_id:10!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ LessThan\n" + " β”‚ β”‚ β”œβ”€ t.episode_nr:2\n" + @@ -6354,84 +6415,80 @@ WHERE cn.country_code ='[us]' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title episode_nr]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ an.person_id:14!null\n" + + " β”‚ └─ n.id:3!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ an.person_id:14!null\n" + - " β”‚ β”‚ └─ n.id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ n.id:3!null\n" + - " β”‚ └─ ci.person_id:12!null\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.keyword_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ k.id:8!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:13!null\n" + - " β”‚ β”‚ └─ mk.movie_id:4!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:6!null\n" + - " β”‚ └─ mk.movie_id:4!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_id:7!null\n" + - " β”‚ β”‚ └─ cn.id:10!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:13!null\n" + - " β”‚ └─ mc.movie_id:6!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ character-name-in-title (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:12!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id name]\n" + + " β”‚ β”‚ β”œβ”€ mk.keyword_id:7!null\n" + + " β”‚ β”‚ └─ k.id:12!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:6!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [n.id:3!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (9-15)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:5!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (31-33)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cn.id:8!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (26-30)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ └─ character-name-in-title (longtext)\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ keys: [ci.person_id:4!null]\n" + + " β”œβ”€ colSet: (1-8)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: aka_name\n" + + " └─ columns: [person_id name]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(an.name) as cool_actor_pseudonym, min(t.title) as series_named_after_char]\n" + @@ -6446,48 +6503,51 @@ WHERE cn.country_code ='[us]' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title episode_nr]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((an.person_id = n.id) AND (n.id = ci.person_id))\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an.person_id = n.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (mc.movie_id = mk.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(an.name) as cool_actor_pseudonym, min(t.title) as series_named_after_char]\n" + @@ -6502,48 +6562,51 @@ WHERE cn.country_code ='[us]' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title episode_nr]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((an.person_id = n.id) AND (n.id = ci.person_id))\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an.person_id = n.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (mc.movie_id = mk.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", }, { @@ -6584,14 +6647,14 @@ WHERE cn.country_code ='[us]' " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:13!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:5!null\n" + " β”‚ β”‚ β”‚ └─ t.id:0!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ └─ mk.movie_id:6!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:6!null\n" + + " β”‚ └─ mc.movie_id:10!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + @@ -6605,84 +6668,80 @@ WHERE cn.country_code ='[us]' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title episode_nr]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ an.person_id:14!null\n" + + " β”‚ └─ n.id:3!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ an.person_id:14!null\n" + - " β”‚ β”‚ └─ n.id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ n.id:3!null\n" + - " β”‚ └─ ci.person_id:12!null\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.keyword_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ k.id:8!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:13!null\n" + - " β”‚ β”‚ └─ mk.movie_id:4!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:6!null\n" + - " β”‚ └─ mk.movie_id:4!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_id:7!null\n" + - " β”‚ β”‚ └─ cn.id:10!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:13!null\n" + - " β”‚ └─ mc.movie_id:6!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ character-name-in-title (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:12!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id name]\n" + + " β”‚ β”‚ β”œβ”€ mk.keyword_id:7!null\n" + + " β”‚ β”‚ └─ k.id:12!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:6!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [n.id:3!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (9-15)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:5!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (31-33)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cn.id:8!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (26-30)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ └─ character-name-in-title (longtext)\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ keys: [ci.person_id:4!null]\n" + + " β”œβ”€ colSet: (1-8)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: aka_name\n" + + " └─ columns: [person_id name]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(an.name) as cool_actor_pseudonym, min(t.title) as series_named_after_char]\n" + @@ -6691,54 +6750,57 @@ WHERE cn.country_code ='[us]' " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + " β”œβ”€ (((ci.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.episode_nr >= 5) AND (t.episode_nr < 100))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title episode_nr]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((an.person_id = n.id) AND (n.id = ci.person_id))\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ ((t.episode_nr >= 5) AND (t.episode_nr < 100))\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: title\n" + + " β”‚ └─ columns: [id title episode_nr]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an.person_id = n.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (mc.movie_id = mk.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(an.name) as cool_actor_pseudonym, min(t.title) as series_named_after_char]\n" + @@ -6753,48 +6815,51 @@ WHERE cn.country_code ='[us]' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title episode_nr]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((an.person_id = n.id) AND (n.id = ci.person_id))\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an.person_id = n.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (mc.movie_id = mk.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", }, { @@ -6835,10 +6900,10 @@ WHERE cn.country_code ='[us]' " β”‚ β”‚ β”‚ └─ t.id:0!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:3!null\n" + + " β”‚ β”‚ └─ mk.movie_id:5!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:5!null\n" + + " β”‚ └─ mc.movie_id:9!null\n" + " β”œβ”€ TableAlias(t)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + @@ -6863,59 +6928,60 @@ WHERE cn.country_code ='[us]' " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.keyword_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ k.id:7!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:12!null\n" + - " β”‚ β”‚ └─ mk.movie_id:3!null\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ci.movie_id:12!null\n" + + " β”‚ β”‚ └─ mk.movie_id:5!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:5!null\n" + - " β”‚ └─ mk.movie_id:3!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_id:6!null\n" + - " β”‚ β”‚ └─ cn.id:9!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:12!null\n" + - " β”‚ └─ mc.movie_id:5!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ character-name-in-title (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " β”‚ β”œβ”€ mc.movie_id:9!null\n" + + " β”‚ └─ mk.movie_id:5!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ └─ character-name-in-title (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (23-25)\n" + + " β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”œβ”€ keys: [cn.id:7!null]\n" + + " β”‚ β”œβ”€ colSet: (18-22)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ └─ columns: [movie_id company_id]\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ keys: [mc.movie_id:9!null]\n" + + " β”œβ”€ colSet: (1-7)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: cast_info\n" + + " └─ columns: [person_id movie_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(n.name) as member_in_charnamed_american_movie, min(n.name) as a1]\n" + @@ -6937,35 +7003,37 @@ WHERE cn.country_code ='[us]' " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " β”œβ”€ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ └─ keys: cn.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mc.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(n.name) as member_in_charnamed_american_movie, min(n.name) as a1]\n" + @@ -6987,35 +7055,37 @@ WHERE cn.country_code ='[us]' " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " β”œβ”€ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ └─ keys: cn.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mc.movie_id\n" + "", }, { @@ -7055,10 +7125,10 @@ WHERE k.keyword ='character-name-in-title' " β”‚ β”‚ β”‚ └─ t.id:0!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:3!null\n" + + " β”‚ β”‚ └─ mk.movie_id:5!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:5!null\n" + + " β”‚ └─ mc.movie_id:8!null\n" + " β”œβ”€ TableAlias(t)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + @@ -7083,55 +7153,56 @@ WHERE k.keyword ='character-name-in-title' " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.keyword_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ k.id:7!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + - " β”‚ β”‚ └─ mk.movie_id:3!null\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + + " β”‚ β”‚ └─ mk.movie_id:5!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:5!null\n" + - " β”‚ └─ mk.movie_id:3!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_id:6!null\n" + - " β”‚ β”‚ └─ cn.id:9!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:11!null\n" + - " β”‚ └─ mc.movie_id:5!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ character-name-in-title (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " β”‚ β”œβ”€ mc.movie_id:8!null\n" + + " β”‚ └─ mk.movie_id:5!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ └─ character-name-in-title (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (23-25)\n" + + " β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”œβ”€ keys: [cn.id:7!null]\n" + + " β”‚ β”œβ”€ colSet: (18-22)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ └─ columns: [movie_id company_id]\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ keys: [mc.movie_id:8!null]\n" + + " β”œβ”€ colSet: (1-7)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: cast_info\n" + + " └─ columns: [person_id movie_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(n.name) as member_in_charnamed_movie, min(n.name) as a1]\n" + @@ -7153,33 +7224,35 @@ WHERE k.keyword ='character-name-in-title' " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " β”œβ”€ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ └─ keys: cn.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mc.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(n.name) as member_in_charnamed_movie, min(n.name) as a1]\n" + @@ -7201,33 +7274,35 @@ WHERE k.keyword ='character-name-in-title' " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " β”œβ”€ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ └─ keys: cn.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mc.movie_id\n" + "", }, { @@ -7267,10 +7342,10 @@ WHERE k.keyword ='character-name-in-title' " β”‚ β”‚ β”‚ └─ t.id:0!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:3!null\n" + + " β”‚ β”‚ └─ mk.movie_id:5!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:5!null\n" + + " β”‚ └─ mc.movie_id:8!null\n" + " β”œβ”€ TableAlias(t)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + @@ -7295,55 +7370,56 @@ WHERE k.keyword ='character-name-in-title' " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.keyword_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ k.id:7!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + - " β”‚ β”‚ └─ mk.movie_id:3!null\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + + " β”‚ β”‚ └─ mk.movie_id:5!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:5!null\n" + - " β”‚ └─ mk.movie_id:3!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_id:6!null\n" + - " β”‚ β”‚ └─ cn.id:9!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:11!null\n" + - " β”‚ └─ mc.movie_id:5!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ character-name-in-title (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " β”‚ β”œβ”€ mc.movie_id:8!null\n" + + " β”‚ └─ mk.movie_id:5!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ └─ character-name-in-title (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (23-25)\n" + + " β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”œβ”€ keys: [cn.id:7!null]\n" + + " β”‚ β”œβ”€ colSet: (18-22)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ └─ columns: [movie_id company_id]\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ keys: [mc.movie_id:8!null]\n" + + " β”œβ”€ colSet: (1-7)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: cast_info\n" + + " └─ columns: [person_id movie_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(n.name) as member_in_charnamed_movie, min(n.name) as a1]\n" + @@ -7365,33 +7441,35 @@ WHERE k.keyword ='character-name-in-title' " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " β”œβ”€ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ └─ keys: cn.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mc.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(n.name) as member_in_charnamed_movie, min(n.name) as a1]\n" + @@ -7413,33 +7491,35 @@ WHERE k.keyword ='character-name-in-title' " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " β”œβ”€ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ └─ keys: cn.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mc.movie_id\n" + "", }, { @@ -7478,10 +7558,10 @@ WHERE k.keyword ='character-name-in-title' " β”‚ β”‚ β”‚ └─ t.id:0!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:3!null\n" + + " β”‚ β”‚ └─ mk.movie_id:5!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:5!null\n" + + " β”‚ └─ mc.movie_id:8!null\n" + " β”œβ”€ TableAlias(t)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + @@ -7500,55 +7580,56 @@ WHERE k.keyword ='character-name-in-title' " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.keyword_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ k.id:7!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + - " β”‚ β”‚ └─ mk.movie_id:3!null\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + + " β”‚ β”‚ └─ mk.movie_id:5!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:5!null\n" + - " β”‚ └─ mk.movie_id:3!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_id:6!null\n" + - " β”‚ β”‚ └─ cn.id:9!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:11!null\n" + - " β”‚ └─ mc.movie_id:5!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ character-name-in-title (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " β”‚ β”œβ”€ mc.movie_id:8!null\n" + + " β”‚ └─ mk.movie_id:5!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ └─ character-name-in-title (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (23-25)\n" + + " β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”œβ”€ keys: [cn.id:7!null]\n" + + " β”‚ β”œβ”€ colSet: (18-22)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ └─ columns: [movie_id company_id]\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ keys: [mc.movie_id:8!null]\n" + + " β”œβ”€ colSet: (1-7)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: cast_info\n" + + " └─ columns: [person_id movie_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(n.name) as member_in_charnamed_movie]\n" + @@ -7570,33 +7651,35 @@ WHERE k.keyword ='character-name-in-title' " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " β”œβ”€ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ └─ keys: cn.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mc.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(n.name) as member_in_charnamed_movie]\n" + @@ -7618,33 +7701,35 @@ WHERE k.keyword ='character-name-in-title' " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " β”œβ”€ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ └─ keys: cn.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mc.movie_id\n" + "", }, { @@ -7683,10 +7768,10 @@ WHERE cn.country_code ='[us]' " β”‚ β”‚ β”‚ └─ t.id:0!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:3!null\n" + + " β”‚ β”‚ └─ mk.movie_id:5!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:5!null\n" + + " β”‚ └─ mc.movie_id:9!null\n" + " β”œβ”€ TableAlias(t)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + @@ -7703,59 +7788,60 @@ WHERE cn.country_code ='[us]' " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.keyword_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ k.id:7!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:12!null\n" + - " β”‚ β”‚ └─ mk.movie_id:3!null\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ci.movie_id:12!null\n" + + " β”‚ β”‚ └─ mk.movie_id:5!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:5!null\n" + - " β”‚ └─ mk.movie_id:3!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_id:6!null\n" + - " β”‚ β”‚ └─ cn.id:9!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:12!null\n" + - " β”‚ └─ mc.movie_id:5!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ character-name-in-title (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " β”‚ β”œβ”€ mc.movie_id:9!null\n" + + " β”‚ └─ mk.movie_id:5!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ └─ character-name-in-title (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (23-25)\n" + + " β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”œβ”€ keys: [cn.id:7!null]\n" + + " β”‚ β”œβ”€ colSet: (18-22)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ └─ columns: [movie_id company_id]\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ keys: [mc.movie_id:9!null]\n" + + " β”œβ”€ colSet: (1-7)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: cast_info\n" + + " └─ columns: [person_id movie_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(n.name) as member_in_charnamed_movie]\n" + @@ -7775,35 +7861,37 @@ WHERE cn.country_code ='[us]' " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " β”œβ”€ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ └─ keys: cn.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mc.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(n.name) as member_in_charnamed_movie]\n" + @@ -7823,35 +7911,37 @@ WHERE cn.country_code ='[us]' " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " β”œβ”€ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ └─ keys: cn.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mc.movie_id\n" + "", }, { @@ -7890,10 +7980,10 @@ WHERE k.keyword ='character-name-in-title' " β”‚ β”‚ β”‚ └─ t.id:0!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:3!null\n" + + " β”‚ β”‚ └─ mk.movie_id:5!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:5!null\n" + + " β”‚ └─ mc.movie_id:8!null\n" + " β”œβ”€ TableAlias(t)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + @@ -7912,55 +8002,56 @@ WHERE k.keyword ='character-name-in-title' " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.keyword_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ k.id:7!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + - " β”‚ β”‚ └─ mk.movie_id:3!null\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + + " β”‚ β”‚ └─ mk.movie_id:5!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:5!null\n" + - " β”‚ └─ mk.movie_id:3!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_id:6!null\n" + - " β”‚ β”‚ └─ cn.id:9!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:11!null\n" + - " β”‚ └─ mc.movie_id:5!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ character-name-in-title (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " β”‚ β”œβ”€ mc.movie_id:8!null\n" + + " β”‚ └─ mk.movie_id:5!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ └─ character-name-in-title (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (23-25)\n" + + " β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”œβ”€ keys: [cn.id:7!null]\n" + + " β”‚ β”œβ”€ colSet: (18-22)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ └─ columns: [movie_id company_id]\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ keys: [mc.movie_id:8!null]\n" + + " β”œβ”€ colSet: (1-7)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: cast_info\n" + + " └─ columns: [person_id movie_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(n.name) as member_in_charnamed_movie]\n" + @@ -7982,33 +8073,35 @@ WHERE k.keyword ='character-name-in-title' " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " β”œβ”€ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ └─ keys: cn.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mc.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(n.name) as member_in_charnamed_movie]\n" + @@ -8030,33 +8123,35 @@ WHERE k.keyword ='character-name-in-title' " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (ci.movie_id = mk.movie_id)) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " β”œβ”€ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ └─ keys: cn.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mc.movie_id\n" + "", }, { @@ -8091,17 +8186,17 @@ WHERE ci.note IN ('(producer)', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi.info):0!null->movie_budget:0, min(mi_idx.info):1!null->movie_votes:0, min(t.title):2!null->movie_title:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi.info:10!null), MIN(mi_idx.info:7!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi.info:14!null), MIN(mi_idx.info:9!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:8!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:12!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:5!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + " β”‚ └─ ci.movie_id:16!null\n" + @@ -8127,64 +8222,65 @@ WHERE ci.note IN ('(producer)', " β”‚ └─ columns: [id name gender]\n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:16!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:5!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:8!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:5!null\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ci.movie_id:16!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:11!null\n" + - " β”‚ └─ mi_idx.info_type_id:6!null\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:16!null\n" + - " β”‚ β”‚ └─ mi.movie_id:8!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:13!null\n" + - " β”‚ └─ mi.info_type_id:9!null\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ votes (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ budget (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (8,9)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ Filter\n" + - " β”œβ”€ HashIn\n" + - " β”‚ β”œβ”€ ci.note:2\n" + - " β”‚ └─ TUPLE((producer) (longtext), (executive producer) (longtext))\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”‚ β”œβ”€ mi.movie_id:12!null\n" + + " β”‚ └─ mi_idx.movie_id:7!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ votes (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it2.id:5!null]\n" + + " β”‚ β”œβ”€ colSet: (17-21)\n" + + " β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ budget (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (8,9)\n" + + " β”‚ β”‚ └─ tableId: 2\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it1.id:10!null]\n" + + " β”‚ β”œβ”€ colSet: (12-16)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ ci.note:2\n" + + " β”‚ └─ TUPLE((producer) (longtext), (executive producer) (longtext))\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ keys: [mi.movie_id:12!null]\n" + + " β”œβ”€ colSet: (1-7)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: cast_info\n" + + " └─ columns: [person_id movie_id note]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(t.title) as movie_title]\n" + @@ -8206,37 +8302,39 @@ WHERE ci.note IN ('(producer)', " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name gender]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mi.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'budget')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ci.note HASH IN ('(producer)', '(executive producer)'))\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”œβ”€ ((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it2.id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it1.info = 'budget')\n" + + " β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it1.id\n" + + " └─ Filter\n" + + " β”œβ”€ (ci.note HASH IN ('(producer)', '(executive producer)'))\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id note]\n" + + " └─ keys: mi.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(t.title) as movie_title]\n" + @@ -8258,37 +8356,39 @@ WHERE ci.note IN ('(producer)', " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name gender]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mi.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'budget')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ci.note HASH IN ('(producer)', '(executive producer)'))\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”œβ”€ ((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it2.id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it1.info = 'budget')\n" + + " β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it1.id\n" + + " └─ Filter\n" + + " β”œβ”€ (ci.note HASH IN ('(producer)', '(executive producer)'))\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id note]\n" + + " └─ keys: mi.movie_id\n" + "", }, { @@ -8331,17 +8431,17 @@ WHERE ci.note IN ('(writer)', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi.info):0!null->movie_budget:0, min(mi_idx.info):1!null->movie_votes:0, min(t.title):2!null->movie_title:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi.info:10!null), MIN(mi_idx.info:7!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi.info:14!null), MIN(mi_idx.info:9!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:8!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:12!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:5!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + " β”‚ └─ ci.movie_id:17!null\n" + @@ -8376,74 +8476,75 @@ WHERE ci.note IN ('(writer)', " β”‚ └─ columns: [id gender]\n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:17!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:5!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:8!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:5!null\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ci.movie_id:17!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:12!null\n" + - " β”‚ └─ mi_idx.info_type_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + - " β”‚ β”‚ └─ 8.0 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:17!null\n" + - " β”‚ β”‚ └─ mi.movie_id:8!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:14!null\n" + - " β”‚ └─ mi.info_type_id:9!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ β”‚ └─ TUPLE(Horror (longtext), Thriller (longtext))\n" + - " β”‚ β”‚ └─ mi.note:3 IS NULL\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ genres (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (8,9)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ Filter\n" + - " β”œβ”€ HashIn\n" + - " β”‚ β”œβ”€ ci.note:2\n" + - " β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”‚ β”œβ”€ mi.movie_id:12!null\n" + + " β”‚ └─ mi_idx.movie_id:7!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + + " β”‚ β”‚ └─ 8.0 (longtext)\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it2.id:5!null]\n" + + " β”‚ β”œβ”€ colSet: (17-21)\n" + + " β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ genres (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (8,9)\n" + + " β”‚ β”‚ └─ tableId: 2\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ β”‚ └─ TUPLE(Horror (longtext), Thriller (longtext))\n" + + " β”‚ β”‚ └─ mi.note:3 IS NULL\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it1.id:10!null]\n" + + " β”‚ β”œβ”€ colSet: (12-16)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ └─ columns: [movie_id info_type_id info note]\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ ci.note:2\n" + + " β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ keys: [mi.movie_id:12!null]\n" + + " β”œβ”€ colSet: (1-7)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: cast_info\n" + + " └─ columns: [person_id movie_id note]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(t.title) as movie_title]\n" + @@ -8467,41 +8568,43 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id gender]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '8.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mi.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((mi.info HASH IN ('Horror', 'Thriller')) AND mi.note IS NULL)\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”œβ”€ ((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi_idx.info > '8.0')\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it2.id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ ((mi.info HASH IN ('Horror', 'Thriller')) AND mi.note IS NULL)\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info note]\n" + + " β”‚ └─ keys: it1.id\n" + + " └─ Filter\n" + + " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id note]\n" + + " └─ keys: mi.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(t.title) as movie_title]\n" + @@ -8525,41 +8628,43 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id gender]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '8.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mi.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((mi.info HASH IN ('Horror', 'Thriller')) AND mi.note IS NULL)\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”œβ”€ ((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi_idx.info > '8.0')\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it2.id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ ((mi.info HASH IN ('Horror', 'Thriller')) AND mi.note IS NULL)\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info note]\n" + + " β”‚ └─ keys: it1.id\n" + + " └─ Filter\n" + + " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id note]\n" + + " └─ keys: mi.movie_id\n" + "", }, { @@ -8602,17 +8707,17 @@ WHERE ci.note IN ('(writer)', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi.info):0!null->movie_budget:0, min(mi_idx.info):1!null->movie_votes:0, min(t.title):2!null->movie_title:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi.info:9!null), MIN(mi_idx.info:6!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi.info:13!null), MIN(mi_idx.info:8!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:7!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:11!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:4!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + " β”‚ └─ ci.movie_id:15!null\n" + @@ -8636,68 +8741,69 @@ WHERE ci.note IN ('(writer)', " β”‚ └─ columns: [id gender]\n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:15!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:4!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:7!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:4!null\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ci.movie_id:15!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:10!null\n" + - " β”‚ └─ mi_idx.info_type_id:5!null\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:15!null\n" + - " β”‚ β”‚ └─ mi.movie_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:12!null\n" + - " β”‚ └─ mi.info_type_id:8!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Horror (longtext), Action (longtext), Sci-Fi (longtext), Thriller (longtext), Crime (longtext), War (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ votes (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ genres (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (8,9)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ Filter\n" + - " β”œβ”€ HashIn\n" + - " β”‚ β”œβ”€ ci.note:2\n" + - " β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”‚ β”œβ”€ mi.movie_id:11!null\n" + + " β”‚ └─ mi_idx.movie_id:6!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ votes (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it2.id:4!null]\n" + + " β”‚ β”œβ”€ colSet: (17-21)\n" + + " β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ genres (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (8,9)\n" + + " β”‚ β”‚ └─ tableId: 2\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ └─ TUPLE(Horror (longtext), Action (longtext), Sci-Fi (longtext), Thriller (longtext), Crime (longtext), War (longtext))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it1.id:9!null]\n" + + " β”‚ β”œβ”€ colSet: (12-16)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ ci.note:2\n" + + " β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ keys: [mi.movie_id:11!null]\n" + + " β”œβ”€ colSet: (1-7)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: cast_info\n" + + " └─ columns: [person_id movie_id note]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(t.title) as movie_title]\n" + @@ -8719,39 +8825,41 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id gender]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mi.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Action', 'Sci-Fi', 'Thriller', 'Crime', 'War'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”œβ”€ ((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it2.id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Action', 'Sci-Fi', 'Thriller', 'Crime', 'War'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it1.id\n" + + " └─ Filter\n" + + " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id note]\n" + + " └─ keys: mi.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(t.title) as movie_title]\n" + @@ -8765,47 +8873,49 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.gender = 'm')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mi.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Action', 'Sci-Fi', 'Thriller', 'Crime', 'War'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”œβ”€ (n.id = ci.person_id)\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (n.gender = 'm')\n" + + " β”‚ └─ TableAlias(n)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: name\n" + + " β”‚ └─ columns: [id gender]\n" + + " └─ InnerJoin\n" + + " β”œβ”€ ((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it2.id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Action', 'Sci-Fi', 'Thriller', 'Crime', 'War'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it1.id\n" + + " └─ Filter\n" + + " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id note]\n" + + " └─ keys: mi.movie_id\n" + "", }, { @@ -8863,13 +8973,13 @@ WHERE ci.note IN ('(voice)', " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:8!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:14!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:11!null\n" + + " β”‚ β”‚ └─ mc.movie_id:19!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ ci.movie_id:19!null\n" + + " β”‚ └─ ci.movie_id:10!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + @@ -8886,7 +8996,7 @@ WHERE ci.note IN ('(voice)', " └─ InnerJoin\n" + " β”œβ”€ Eq\n" + " β”‚ β”œβ”€ rt.id:3!null\n" + - " β”‚ └─ ci.role_id:22!null\n" + + " β”‚ └─ ci.role_id:13!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + @@ -8900,7 +9010,7 @@ WHERE ci.note IN ('(voice)', " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ n.id:5!null\n" + - " β”‚ β”‚ └─ ci.person_id:18!null\n" + + " β”‚ β”‚ └─ ci.person_id:9!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ n.id:5!null\n" + " β”‚ └─ an.person_id:24!null\n" + @@ -8915,98 +9025,95 @@ WHERE ci.note IN ('(voice)', " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + + " └─ LookupJoin\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it.id:22!null\n" + + " β”‚ β”‚ └─ mi.info_type_id:15!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:11!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:8!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:8!null\n" + - " β”‚ β”‚ └─ ci.movie_id:19!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it.id:14!null\n" + - " β”‚ └─ mi.info_type_id:9!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ mi.info:2!null IS NULL\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ mi.info LIKE 'Japan:%200%'\n" + - " β”‚ β”‚ └─ mi.info LIKE 'USA:%200%'\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:11!null\n" + - " β”‚ β”‚ └─ ci.movie_id:19!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:16!null\n" + - " β”‚ └─ mc.company_id:12!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ mc.note:2 IS NULL\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ mc.note LIKE '%(USA)%'\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(worldwide)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ β”‚ └─ release dates (longtext)\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ chn.id:23!null\n" + - " β”‚ β”‚ └─ ci.person_role_id:20\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + - " β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice: Japanese version) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:18!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:19!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:14!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice: Japanese version) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [chn.id:8!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (16-22)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.info:2!null IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.info LIKE 'Japan:%200%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.info LIKE 'USA:%200%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:10!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (37-41)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.note:2 IS NULL\n" + + " β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.note LIKE '%(USA)%'\n" + + " β”‚ β”‚ β”‚ └─ mc.note LIKE '%(worldwide)%'\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cn.id:17!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (32-36)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id note]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ └─ release dates (longtext)\n" + + " β”‚ └─ TableAlias(it)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ keys: [ci.person_id:9!null]\n" + + " β”œβ”€ colSet: (1-8)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: aka_name\n" + + " └─ columns: [person_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(n.name) as voicing_actress, min(t.title) as voiced_movie]\n" + @@ -9037,54 +9144,56 @@ WHERE ci.note IN ('(voice)', " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id)) AND (it.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%200%' OR mi.info LIKE 'USA:%200%'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = ci.movie_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note IS NULL)) AND (mc.note LIKE '%(USA)%' OR mc.note LIKE '%(worldwide)%'))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it.id = mi.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (mc.movie_id = mi.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%200%' OR mi.info LIKE 'USA:%200%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((NOT(mc.note IS NULL)) AND (mc.note LIKE '%(USA)%' OR mc.note LIKE '%(worldwide)%'))\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id note]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it.info = 'release dates')\n" + + " β”‚ └─ TableAlias(it)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id]\n" + + " └─ keys: ci.person_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(n.name) as voicing_actress, min(t.title) as voiced_movie]\n" + @@ -9115,54 +9224,56 @@ WHERE ci.note IN ('(voice)', " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id)) AND (it.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%200%' OR mi.info LIKE 'USA:%200%'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = ci.movie_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note IS NULL)) AND (mc.note LIKE '%(USA)%' OR mc.note LIKE '%(worldwide)%'))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it.id = mi.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (mc.movie_id = mi.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%200%' OR mi.info LIKE 'USA:%200%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((NOT(mc.note IS NULL)) AND (mc.note LIKE '%(USA)%' OR mc.note LIKE '%(worldwide)%'))\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id note]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it.info = 'release dates')\n" + + " β”‚ └─ TableAlias(it)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id]\n" + + " └─ keys: ci.person_id\n" + "", }, { @@ -9218,13 +9329,13 @@ WHERE ci.note = '(voice)' " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:8!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:14!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:11!null\n" + + " β”‚ β”‚ └─ mc.movie_id:19!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ ci.movie_id:19!null\n" + + " β”‚ └─ ci.movie_id:10!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + @@ -9243,7 +9354,7 @@ WHERE ci.note = '(voice)' " └─ InnerJoin\n" + " β”œβ”€ Eq\n" + " β”‚ β”œβ”€ rt.id:3!null\n" + - " β”‚ └─ ci.role_id:22!null\n" + + " β”‚ └─ ci.role_id:13!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + @@ -9257,7 +9368,7 @@ WHERE ci.note = '(voice)' " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ n.id:5!null\n" + - " β”‚ β”‚ └─ ci.person_id:18!null\n" + + " β”‚ β”‚ └─ ci.person_id:9!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ n.id:5!null\n" + " β”‚ └─ an.person_id:24!null\n" + @@ -9272,97 +9383,94 @@ WHERE ci.note = '(voice)' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + + " └─ LookupJoin\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it.id:22!null\n" + + " β”‚ β”‚ └─ mi.info_type_id:15!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:11!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:8!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:8!null\n" + - " β”‚ β”‚ └─ ci.movie_id:19!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it.id:14!null\n" + - " β”‚ └─ mi.info_type_id:9!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ mi.info:2!null IS NULL\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ mi.info LIKE 'Japan:%2007%'\n" + - " β”‚ β”‚ └─ mi.info LIKE 'USA:%2008%'\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:11!null\n" + - " β”‚ β”‚ └─ ci.movie_id:19!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:16!null\n" + - " β”‚ └─ mc.company_id:12!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ mc.note LIKE '%(200%)%'\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ mc.note LIKE '%(USA)%'\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(worldwide)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ β”‚ └─ release dates (longtext)\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ chn.id:23!null\n" + - " β”‚ β”‚ └─ ci.person_role_id:20\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + - " β”‚ β”‚ β”‚ └─ (voice) (longtext)\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:18!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:19!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:14!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ (voice) (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [chn.id:8!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (16-22)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.info:2!null IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.info LIKE 'Japan:%2007%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.info LIKE 'USA:%2008%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:10!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (37-41)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.note LIKE '%(200%)%'\n" + + " β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.note LIKE '%(USA)%'\n" + + " β”‚ β”‚ β”‚ └─ mc.note LIKE '%(worldwide)%'\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cn.id:17!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (32-36)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id note]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ └─ release dates (longtext)\n" + + " β”‚ └─ TableAlias(it)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ keys: [ci.person_id:9!null]\n" + + " β”œβ”€ colSet: (1-8)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: aka_name\n" + + " └─ columns: [person_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(n.name) as voicing_actress, min(t.title) as kung_fu_panda]\n" + @@ -9393,54 +9501,56 @@ WHERE ci.note = '(voice)' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id)) AND (it.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%2007%' OR mi.info LIKE 'USA:%2008%'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = ci.movie_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mc.note LIKE '%(200%)%' AND (mc.note LIKE '%(USA)%' OR mc.note LIKE '%(worldwide)%'))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note = '(voice)')\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it.id = mi.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (mc.movie_id = mi.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note = '(voice)')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%2007%' OR mi.info LIKE 'USA:%2008%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mc.note LIKE '%(200%)%' AND (mc.note LIKE '%(USA)%' OR mc.note LIKE '%(worldwide)%'))\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id note]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it.info = 'release dates')\n" + + " β”‚ └─ TableAlias(it)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id]\n" + + " └─ keys: ci.person_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(n.name) as voicing_actress, min(t.title) as kung_fu_panda]\n" + @@ -9471,54 +9581,56 @@ WHERE ci.note = '(voice)' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id)) AND (it.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%2007%' OR mi.info LIKE 'USA:%2008%'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = ci.movie_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mc.note LIKE '%(200%)%' AND (mc.note LIKE '%(USA)%' OR mc.note LIKE '%(worldwide)%'))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note = '(voice)')\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it.id = mi.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (mc.movie_id = mi.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note = '(voice)')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%2007%' OR mi.info LIKE 'USA:%2008%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mc.note LIKE '%(200%)%' AND (mc.note LIKE '%(USA)%' OR mc.note LIKE '%(worldwide)%'))\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id note]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it.info = 'release dates')\n" + + " β”‚ └─ TableAlias(it)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id]\n" + + " └─ keys: ci.person_id\n" + "", }, { @@ -9573,13 +9685,13 @@ WHERE ci.note IN ('(voice)', " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:8!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:14!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:11!null\n" + + " β”‚ β”‚ └─ mc.movie_id:19!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ ci.movie_id:18!null\n" + + " β”‚ └─ ci.movie_id:10!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ GreaterThan\n" + " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + @@ -9592,7 +9704,7 @@ WHERE ci.note IN ('(voice)', " └─ InnerJoin\n" + " β”œβ”€ Eq\n" + " β”‚ β”œβ”€ rt.id:3!null\n" + - " β”‚ └─ ci.role_id:21!null\n" + + " β”‚ └─ ci.role_id:13!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + @@ -9606,7 +9718,7 @@ WHERE ci.note IN ('(voice)', " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ n.id:5!null\n" + - " β”‚ β”‚ └─ ci.person_id:17!null\n" + + " β”‚ β”‚ └─ ci.person_id:9!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ n.id:5!null\n" + " β”‚ └─ an.person_id:23!null\n" + @@ -9621,91 +9733,88 @@ WHERE ci.note IN ('(voice)', " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + + " └─ LookupJoin\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it.id:21!null\n" + + " β”‚ β”‚ └─ mi.info_type_id:15!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:11!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:8!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:8!null\n" + - " β”‚ β”‚ └─ ci.movie_id:18!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it.id:13!null\n" + - " β”‚ └─ mi.info_type_id:9!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ mi.info:2!null IS NULL\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ mi.info LIKE 'Japan:%200%'\n" + - " β”‚ β”‚ └─ mi.info LIKE 'USA:%200%'\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:11!null\n" + - " β”‚ β”‚ └─ ci.movie_id:18!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:15!null\n" + - " β”‚ └─ mc.company_id:12!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ β”‚ └─ release dates (longtext)\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ chn.id:22!null\n" + - " β”‚ β”‚ └─ ci.person_role_id:19\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + - " β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice: Japanese version) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:17!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:19!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:14!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice: Japanese version) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [chn.id:8!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (16-22)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.info:2!null IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.info LIKE 'Japan:%200%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.info LIKE 'USA:%200%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:10!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (37-41)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cn.id:17!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (32-36)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ └─ release dates (longtext)\n" + + " β”‚ └─ TableAlias(it)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ keys: [ci.person_id:9!null]\n" + + " β”œβ”€ colSet: (1-8)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: aka_name\n" + + " └─ columns: [person_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(n.name) as voicing_actress, min(t.title) as jap_engl_voiced_movie]\n" + @@ -9736,52 +9845,54 @@ WHERE ci.note IN ('(voice)', " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id)) AND (it.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%200%' OR mi.info LIKE 'USA:%200%'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = ci.movie_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it.id = mi.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (mc.movie_id = mi.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%200%' OR mi.info LIKE 'USA:%200%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it.info = 'release dates')\n" + + " β”‚ └─ TableAlias(it)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id]\n" + + " └─ keys: ci.person_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(n.name) as voicing_actress, min(t.title) as jap_engl_voiced_movie]\n" + @@ -9812,52 +9923,54 @@ WHERE ci.note IN ('(voice)', " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id)) AND (it.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%200%' OR mi.info LIKE 'USA:%200%'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = ci.movie_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it.id = mi.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (mc.movie_id = mi.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%200%' OR mi.info LIKE 'USA:%200%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it.info = 'release dates')\n" + + " β”‚ └─ TableAlias(it)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id]\n" + + " └─ keys: ci.person_id\n" + "", }, { @@ -9908,13 +10021,13 @@ WHERE ci.note IN ('(voice)', " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:8!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:14!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:10!null\n" + + " β”‚ β”‚ └─ mc.movie_id:18!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ ci.movie_id:17!null\n" + + " β”‚ └─ ci.movie_id:10!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ GreaterThan\n" + " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + @@ -9927,7 +10040,7 @@ WHERE ci.note IN ('(voice)', " └─ InnerJoin\n" + " β”œβ”€ Eq\n" + " β”‚ β”œβ”€ rt.id:3!null\n" + - " β”‚ └─ ci.role_id:20!null\n" + + " β”‚ └─ ci.role_id:13!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + @@ -9941,413 +10054,246 @@ WHERE ci.note IN ('(voice)', " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ n.id:5!null\n" + - " β”‚ β”‚ └─ ci.person_id:16!null\n" + + " β”‚ β”‚ └─ ci.person_id:9!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ n.id:5!null\n" + " β”‚ └─ an.person_id:22!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ n.gender:2\n" + - " β”‚ β”‚ └─ f (longtext)\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:10!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:8!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:8!null\n" + - " β”‚ β”‚ └─ ci.movie_id:17!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it.id:12!null\n" + - " β”‚ └─ mi.info_type_id:9!null\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:10!null\n" + - " β”‚ β”‚ └─ ci.movie_id:17!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:14!null\n" + - " β”‚ └─ mc.company_id:11!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ β”‚ └─ release dates (longtext)\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ chn.id:21!null\n" + - " β”‚ β”‚ └─ ci.person_role_id:18\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + - " β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice: Japanese version) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:16!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id]\n" + - "", - ExpectedEstimates: "Project\n" + - " β”œβ”€ columns: [min(n.name) as voicing_actress, min(t.title) as jap_engl_voiced_movie]\n" + - " └─ GroupBy\n" + - " β”œβ”€ SelectedExprs(MIN(n.name), MIN(t.title))\n" + - " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((t.id = mi.movie_id) AND (t.id = mc.movie_id)) AND (t.id = ci.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2000)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (rt.id = ci.role_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actress')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((n.id = ci.person_id) AND (n.id = an.person_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.gender = 'f')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id)) AND (it.id = mi.info_type_id))\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = ci.movie_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id]\n" + - " └─ keys: ci.person_id\n" + - "", - ExpectedAnalysis: "Project\n" + - " β”œβ”€ columns: [min(n.name) as voicing_actress, min(t.title) as jap_engl_voiced_movie]\n" + - " └─ GroupBy\n" + - " β”œβ”€ SelectedExprs(MIN(n.name), MIN(t.title))\n" + - " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((t.id = mi.movie_id) AND (t.id = mc.movie_id)) AND (t.id = ci.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2000)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (rt.id = ci.role_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actress')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((n.id = ci.person_id) AND (n.id = an.person_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.gender = 'f')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id)) AND (it.id = mi.info_type_id))\n" + - " β”œβ”€ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = ci.movie_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id]\n" + - " └─ keys: ci.person_id\n" + - "", - }, - { - Query: ` -SELECT MIN(mc.note) AS production_note, - MIN(t.title) AS movie_title, - MIN(t.production_year) AS movie_year -FROM company_type AS ct, - info_type AS it, - movie_companies AS mc, - movie_info_idx AS mi_idx, - title AS t -WHERE ct.kind = 'production companies' - AND it.info = 'top 250 rank' - AND mc.note NOT LIKE '%(as Metro-Goldwyn-Mayer Pictures)%' - AND (mc.note LIKE '%(co-production)%' - OR mc.note LIKE '%(presents)%') - AND ct.id = mc.company_type_id - AND t.id = mc.movie_id - AND t.id = mi_idx.movie_id - AND mc.movie_id = mi_idx.movie_id - AND it.id = mi_idx.info_type_id; - -`, - ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [min(mc.note):0!null->production_note:0, min(t.title):2!null->movie_title:0, min(t.production_year):1!null->movie_year:0]\n" + - " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mc.note:7), MIN(t.production_year:2), MIN(t.title:1!null)\n" + - " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:5!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mi_idx.movie_id:3!null\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:5!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it.id:8!null\n" + - " β”‚ └─ mi_idx.info_type_id:4!null\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ct.id:10!null\n" + - " β”‚ └─ mc.company_type_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ mc.note LIKE '%(co-production)%'\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(presents)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ f (longtext)\n" + + " β”‚ └─ TableAlias(n)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ name: name\n" + + " β”‚ └─ columns: [id name gender]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ β”‚ └─ top 250 rank (longtext)\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ └─ production companies (longtext)\n" + - " └─ TableAlias(ct)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " β”‚ β”‚ β”œβ”€ it.id:20!null\n" + + " β”‚ β”‚ └─ mi.info_type_id:15!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:18!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:14!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice: Japanese version) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [chn.id:8!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (16-22)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:10!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (37-41)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cn.id:16!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (32-36)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ └─ release dates (longtext)\n" + + " β”‚ └─ TableAlias(it)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ keys: [ci.person_id:9!null]\n" + + " β”œβ”€ colSet: (1-8)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: aka_name\n" + + " └─ columns: [person_id]\n" + "", ExpectedEstimates: "Project\n" + - " β”œβ”€ columns: [min(mc.note) as production_note, min(t.title) as movie_title, min(t.production_year) as movie_year]\n" + + " β”œβ”€ columns: [min(n.name) as voicing_actress, min(t.title) as jap_engl_voiced_movie]\n" + " └─ GroupBy\n" + - " β”œβ”€ SelectedExprs(MIN(mc.note), MIN(t.production_year), MIN(t.title))\n" + + " β”œβ”€ SelectedExprs(MIN(n.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mc.movie_id) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + + " β”œβ”€ (((t.id = mi.movie_id) AND (t.id = mc.movie_id)) AND (t.id = ci.movie_id))\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (t.production_year > 2000)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: title\n" + + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi_idx.movie_id) AND (it.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + + " β”œβ”€ (rt.id = ci.role_id)\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (rt.role = 'actress')\n" + + " β”‚ └─ TableAlias(rt)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: role_type\n" + + " β”‚ └─ columns: [id role]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (ct.id = mc.company_type_id)\n" + + " β”œβ”€ ((n.id = ci.person_id) AND (n.id = an.person_id))\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%')) AND (mc.note LIKE '%(co-production)%' OR mc.note LIKE '%(presents)%'))\n" + - " β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”œβ”€ (n.gender = 'f')\n" + + " β”‚ └─ TableAlias(n)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'top 250 rank')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ct.kind = 'production companies')\n" + - " └─ TableAlias(ct)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " β”‚ β”œβ”€ name: name\n" + + " β”‚ └─ columns: [id name gender]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it.id = mi.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (mc.movie_id = mi.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it.info = 'release dates')\n" + + " β”‚ └─ TableAlias(it)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id]\n" + + " └─ keys: ci.person_id\n" + "", ExpectedAnalysis: "Project\n" + - " β”œβ”€ columns: [min(mc.note) as production_note, min(t.title) as movie_title, min(t.production_year) as movie_year]\n" + + " β”œβ”€ columns: [min(n.name) as voicing_actress, min(t.title) as jap_engl_voiced_movie]\n" + " └─ GroupBy\n" + - " β”œβ”€ SelectedExprs(MIN(mc.note), MIN(t.production_year), MIN(t.title))\n" + + " β”œβ”€ SelectedExprs(MIN(n.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mc.movie_id) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + + " β”œβ”€ (((t.id = mi.movie_id) AND (t.id = mc.movie_id)) AND (t.id = ci.movie_id))\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (t.production_year > 2000)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: title\n" + + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi_idx.movie_id) AND (it.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + + " β”œβ”€ (rt.id = ci.role_id)\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (rt.role = 'actress')\n" + + " β”‚ └─ TableAlias(rt)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: role_type\n" + + " β”‚ └─ columns: [id role]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (ct.id = mc.company_type_id)\n" + + " β”œβ”€ ((n.id = ci.person_id) AND (n.id = an.person_id))\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%')) AND (mc.note LIKE '%(co-production)%' OR mc.note LIKE '%(presents)%'))\n" + - " β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”œβ”€ (n.gender = 'f')\n" + + " β”‚ └─ TableAlias(n)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'top 250 rank')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ct.kind = 'production companies')\n" + - " └─ TableAlias(ct)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " β”‚ β”œβ”€ name: name\n" + + " β”‚ └─ columns: [id name gender]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it.id = mi.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (mc.movie_id = mi.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it.info = 'release dates')\n" + + " β”‚ └─ TableAlias(it)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id]\n" + + " └─ keys: ci.person_id\n" + "", }, { @@ -10361,9 +10307,10 @@ FROM company_type AS ct, movie_info_idx AS mi_idx, title AS t WHERE ct.kind = 'production companies' - AND it.info = 'bottom 10 rank' + AND it.info = 'top 250 rank' AND mc.note NOT LIKE '%(as Metro-Goldwyn-Mayer Pictures)%' - AND t.production_year BETWEEN 2005 AND 2010 + AND (mc.note LIKE '%(co-production)%' + OR mc.note LIKE '%(presents)%') AND ct.id = mc.company_type_id AND t.id = mc.movie_id AND t.id = mi_idx.movie_id @@ -10374,155 +10321,150 @@ WHERE ct.kind = 'production companies' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mc.note):0!null->production_note:0, min(t.title):2!null->movie_title:0, min(t.production_year):1!null->movie_year:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mc.note:7), MIN(t.production_year:2), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mc.note:11), MIN(t.production_year:2), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ ct.id:5!null\n" + + " β”‚ β”‚ └─ mc.company_type_id:10!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mi_idx.movie_id:3!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ β”‚ └─ 2005 (smallint)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2010 (smallint)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + + " β”‚ └─ mc.movie_id:9!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + + " β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ top 250 rank (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (10-14)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ └─ columns: [movie_id info_type_id]\n" + + " └─ Filter\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:5!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it.id:8!null\n" + - " β”‚ └─ mi_idx.info_type_id:4!null\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ct.id:10!null\n" + - " β”‚ └─ mc.company_type_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ β”‚ └─ bottom 10 rank (longtext)\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ └─ production companies (longtext)\n" + - " └─ TableAlias(ct)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ └─ mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'\n" + + " β”‚ └─ Or\n" + + " β”‚ β”œβ”€ mc.note LIKE '%(co-production)%'\n" + + " β”‚ └─ mc.note LIKE '%(presents)%'\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mi_idx.movie_id:7!null]\n" + + " β”œβ”€ colSet: (5-9)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_type_id note]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mc.note) as production_note, min(t.title) as movie_title, min(t.production_year) as movie_year]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(mc.note), MIN(t.production_year), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mc.movie_id) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year >= 2005) AND (t.production_year <= 2010))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi_idx.movie_id) AND (it.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ct.id = mc.company_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT(mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'bottom 10 rank')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ct.kind = 'production companies')\n" + - " └─ TableAlias(ct)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((ct.id = mc.company_type_id) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mi_idx.movie_id)\n" + + " β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it.info = 'top 250 rank')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id]\n" + + " β”‚ └─ keys: it.id\n" + + " └─ Filter\n" + + " β”œβ”€ ((NOT(mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%')) AND (mc.note LIKE '%(co-production)%' OR mc.note LIKE '%(presents)%'))\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_type_id note]\n" + + " └─ keys: mi_idx.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mc.note) as production_note, min(t.title) as movie_title, min(t.production_year) as movie_year]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(mc.note), MIN(t.production_year), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mc.movie_id) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year >= 2005) AND (t.production_year <= 2010))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi_idx.movie_id) AND (it.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ct.id = mc.company_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT(mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'bottom 10 rank')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ct.kind = 'production companies')\n" + - " └─ TableAlias(ct)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((ct.id = mc.company_type_id) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mi_idx.movie_id)\n" + + " β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it.info = 'top 250 rank')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id]\n" + + " β”‚ └─ keys: it.id\n" + + " └─ Filter\n" + + " β”œβ”€ ((NOT(mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%')) AND (mc.note LIKE '%(co-production)%' OR mc.note LIKE '%(presents)%'))\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_type_id note]\n" + + " └─ keys: mi_idx.movie_id\n" + "", }, { @@ -10536,10 +10478,9 @@ FROM company_type AS ct, movie_info_idx AS mi_idx, title AS t WHERE ct.kind = 'production companies' - AND it.info = 'top 250 rank' + AND it.info = 'bottom 10 rank' AND mc.note NOT LIKE '%(as Metro-Goldwyn-Mayer Pictures)%' - AND (mc.note LIKE '%(co-production)%') - AND t.production_year >2010 + AND t.production_year BETWEEN 2005 AND 2010 AND ct.id = mc.company_type_id AND t.id = mc.movie_id AND t.id = mi_idx.movie_id @@ -10550,153 +10491,158 @@ WHERE ct.kind = 'production companies' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mc.note):0!null->production_note:0, min(t.title):2!null->movie_title:0, min(t.production_year):1!null->movie_year:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mc.note:7), MIN(t.production_year:2), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mc.note:11), MIN(t.production_year:2), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ ct.id:5!null\n" + + " β”‚ β”‚ └─ mc.company_type_id:10!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mi_idx.movie_id:3!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2010 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:5!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it.id:8!null\n" + - " β”‚ └─ mi_idx.info_type_id:4!null\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ct.id:10!null\n" + - " β”‚ └─ mc.company_type_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(co-production)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ β”‚ └─ top 250 rank (longtext)\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ └─ production companies (longtext)\n" + - " └─ TableAlias(ct)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " β”‚ └─ mc.movie_id:9!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 2005 (smallint)\n" + + " β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ └─ 2010 (smallint)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ bottom 10 rank (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (10-14)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ └─ columns: [movie_id info_type_id]\n" + + " └─ Filter\n" + + " β”œβ”€ NOT\n" + + " β”‚ └─ mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mi_idx.movie_id:7!null]\n" + + " β”œβ”€ colSet: (5-9)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_type_id note]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mc.note) as production_note, min(t.title) as movie_title, min(t.production_year) as movie_year]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(mc.note), MIN(t.production_year), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mc.movie_id) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2010)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi_idx.movie_id) AND (it.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ct.id = mc.company_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%')) AND mc.note LIKE '%(co-production)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'top 250 rank')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ct.kind = 'production companies')\n" + - " └─ TableAlias(ct)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((ct.id = mc.company_type_id) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mi_idx.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((t.production_year >= 2005) AND (t.production_year <= 2010))\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it.info = 'bottom 10 rank')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id]\n" + + " β”‚ └─ keys: it.id\n" + + " └─ Filter\n" + + " β”œβ”€ (NOT(mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'))\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_type_id note]\n" + + " └─ keys: mi_idx.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mc.note) as production_note, min(t.title) as movie_title, min(t.production_year) as movie_year]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(mc.note), MIN(t.production_year), MIN(t.title))\n" + - " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mc.movie_id) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2010)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi_idx.movie_id) AND (it.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ct.id = mc.company_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%')) AND mc.note LIKE '%(co-production)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'top 250 rank')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ct.kind = 'production companies')\n" + - " └─ TableAlias(ct)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " β”œβ”€ Grouping()\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((ct.id = mc.company_type_id) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mi_idx.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((t.production_year >= 2005) AND (t.production_year <= 2010))\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it.info = 'bottom 10 rank')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id]\n" + + " β”‚ └─ keys: it.id\n" + + " └─ Filter\n" + + " β”œβ”€ (NOT(mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'))\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_type_id note]\n" + + " └─ keys: mi_idx.movie_id\n" + "", }, { @@ -10710,9 +10656,10 @@ FROM company_type AS ct, movie_info_idx AS mi_idx, title AS t WHERE ct.kind = 'production companies' - AND it.info = 'bottom 10 rank' + AND it.info = 'top 250 rank' AND mc.note NOT LIKE '%(as Metro-Goldwyn-Mayer Pictures)%' - AND t.production_year >2000 + AND (mc.note LIKE '%(co-production)%') + AND t.production_year >2010 AND ct.id = mc.company_type_id AND t.id = mc.movie_id AND t.id = mi_idx.movie_id @@ -10723,473 +10670,330 @@ WHERE ct.kind = 'production companies' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mc.note):0!null->production_note:0, min(t.title):2!null->movie_title:0, min(t.production_year):1!null->movie_year:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mc.note:7), MIN(t.production_year:2), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mc.note:11), MIN(t.production_year:2), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ ct.id:5!null\n" + + " β”‚ β”‚ └─ mc.company_type_id:10!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mi_idx.movie_id:3!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2000 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + + " β”‚ └─ mc.movie_id:9!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ └─ 2010 (int)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ top 250 rank (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (10-14)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ └─ columns: [movie_id info_type_id]\n" + + " └─ Filter\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:5!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it.id:8!null\n" + - " β”‚ └─ mi_idx.info_type_id:4!null\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ct.id:10!null\n" + - " β”‚ └─ mc.company_type_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ β”‚ └─ bottom 10 rank (longtext)\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ └─ production companies (longtext)\n" + - " └─ TableAlias(ct)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ └─ mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'\n" + + " β”‚ └─ mc.note LIKE '%(co-production)%'\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mi_idx.movie_id:7!null]\n" + + " β”œβ”€ colSet: (5-9)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_type_id note]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mc.note) as production_note, min(t.title) as movie_title, min(t.production_year) as movie_year]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(mc.note), MIN(t.production_year), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mc.movie_id) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2000)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi_idx.movie_id) AND (it.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ct.id = mc.company_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT(mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'bottom 10 rank')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ct.kind = 'production companies')\n" + - " └─ TableAlias(ct)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((ct.id = mc.company_type_id) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mi_idx.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2010)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it.info = 'top 250 rank')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id]\n" + + " β”‚ └─ keys: it.id\n" + + " └─ Filter\n" + + " β”œβ”€ ((NOT(mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%')) AND mc.note LIKE '%(co-production)%')\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_type_id note]\n" + + " └─ keys: mi_idx.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mc.note) as production_note, min(t.title) as movie_title, min(t.production_year) as movie_year]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(mc.note), MIN(t.production_year), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mc.movie_id) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2000)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi_idx.movie_id) AND (it.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ct.id = mc.company_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT(mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'bottom 10 rank')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ct.kind = 'production companies')\n" + - " └─ TableAlias(ct)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((ct.id = mc.company_type_id) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mi_idx.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2010)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it.info = 'top 250 rank')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id]\n" + + " β”‚ └─ keys: it.id\n" + + " └─ Filter\n" + + " β”œβ”€ ((NOT(mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%')) AND mc.note LIKE '%(co-production)%')\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_type_id note]\n" + + " └─ keys: mi_idx.movie_id\n" + "", }, { Query: ` -SELECT MIN(t.title) AS complete_downey_ironman_movie -FROM complete_cast AS cc, - comp_cast_type AS cct1, - comp_cast_type AS cct2, - char_name AS chn, - cast_info AS ci, - keyword AS k, - kind_type AS kt, - movie_keyword AS mk, - name AS n, +SELECT MIN(mc.note) AS production_note, + MIN(t.title) AS movie_title, + MIN(t.production_year) AS movie_year +FROM company_type AS ct, + info_type AS it, + movie_companies AS mc, + movie_info_idx AS mi_idx, title AS t -WHERE cct1.kind = 'cast' - AND cct2.kind LIKE '%complete%' - AND chn.name NOT LIKE '%Sherlock%' - AND (chn.name LIKE '%Tony%Stark%' - OR chn.name LIKE '%Iron%Man%') - AND k.keyword IN ('superhero', - 'sequel', - 'second-part', - 'marvel-comics', - 'based-on-comic', - 'tv-special', - 'fight', - 'violence') - AND kt.kind = 'movie' - AND t.production_year > 1950 - AND kt.id = t.kind_id - AND t.id = mk.movie_id - AND t.id = ci.movie_id - AND t.id = cc.movie_id - AND mk.movie_id = ci.movie_id - AND mk.movie_id = cc.movie_id - AND ci.movie_id = cc.movie_id - AND chn.id = ci.person_role_id - AND n.id = ci.person_id - AND k.id = mk.keyword_id - AND cct1.id = cc.subject_id - AND cct2.id = cc.status_id; +WHERE ct.kind = 'production companies' + AND it.info = 'bottom 10 rank' + AND mc.note NOT LIKE '%(as Metro-Goldwyn-Mayer Pictures)%' + AND t.production_year >2000 + AND ct.id = mc.company_type_id + AND t.id = mc.movie_id + AND t.id = mi_idx.movie_id + AND mc.movie_id = mi_idx.movie_id + AND it.id = mi_idx.info_type_id; `, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [min(t.title):0!null->complete_downey_ironman_movie:0]\n" + + " β”œβ”€ columns: [min(mc.note):0!null->production_note:0, min(t.title):2!null->movie_title:0, min(t.production_year):1!null->movie_year:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mc.note:11), MIN(t.production_year:2), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:7!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ ci.movie_id:12!null\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ct.id:5!null\n" + + " β”‚ β”‚ └─ mc.company_type_id:10!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ cc.movie_id:20\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ └─ 1950 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ n.id:4!null\n" + - " β”‚ └─ ci.person_id:11!null\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ ci.movie_id:12!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ └─ cc.movie_id:20\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:9!null\n" + - " β”‚ └─ mk.keyword_id:6!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ movie (longtext)\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(superhero (longtext), sequel (longtext), second-part (longtext), marvel-comics (longtext), based-on-comic (longtext), tv-special (longtext), fight (longtext), violence (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:12!null\n" + - " β”‚ β”‚ └─ cc.movie_id:20\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ chn.id:14!null\n" + - " β”‚ └─ ci.person_role_id:13\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id person_role_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ chn.name LIKE '%Sherlock%'\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ chn.name LIKE '%Tony%Stark%'\n" + - " β”‚ β”‚ └─ chn.name LIKE '%Iron%Man%'\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct2.id:16!null\n" + - " β”‚ └─ cc.status_id:22!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct1.id:18!null\n" + - " β”‚ └─ cc.subject_id:21!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + - " β”‚ β”‚ └─ cast (longtext)\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ β”œβ”€ columns: [id kind]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ └─ mc.movie_id:9!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ └─ 2000 (int)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ bottom 10 rank (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (10-14)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ └─ columns: [movie_id info_type_id]\n" + + " └─ Filter\n" + + " β”œβ”€ NOT\n" + + " β”‚ └─ mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mi_idx.movie_id:7!null]\n" + + " β”œβ”€ colSet: (5-9)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_type_id note]\n" + "", ExpectedEstimates: "Project\n" + - " β”œβ”€ columns: [min(t.title) as complete_downey_ironman_movie]\n" + + " β”œβ”€ columns: [min(mc.note) as production_note, min(t.title) as movie_title, min(t.production_year) as movie_year]\n" + " └─ GroupBy\n" + - " β”œβ”€ SelectedExprs(MIN(t.title))\n" + + " β”œβ”€ SelectedExprs(MIN(mc.note), MIN(t.production_year), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((kt.id = t.kind_id) AND (t.id = mk.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 1950)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.movie_id = ci.movie_id) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = cc.movie_id) AND (chn.id = ci.person_role_id))\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id person_role_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(chn.name LIKE '%Sherlock%')) AND (chn.name LIKE '%Tony%Stark%' OR chn.name LIKE '%Iron%Man%'))\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((ct.id = mc.company_type_id) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mi_idx.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2000)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it.info = 'bottom 10 rank')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id]\n" + + " β”‚ └─ keys: it.id\n" + + " └─ Filter\n" + + " β”œβ”€ (NOT(mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'))\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_type_id note]\n" + + " └─ keys: mi_idx.movie_id\n" + "", ExpectedAnalysis: "Project\n" + - " β”œβ”€ columns: [min(t.title) as complete_downey_ironman_movie]\n" + + " β”œβ”€ columns: [min(mc.note) as production_note, min(t.title) as movie_title, min(t.production_year) as movie_year]\n" + " └─ GroupBy\n" + - " β”œβ”€ SelectedExprs(MIN(t.title))\n" + + " β”œβ”€ SelectedExprs(MIN(mc.note), MIN(t.production_year), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((kt.id = t.kind_id) AND (t.id = mk.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 1950)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.movie_id = ci.movie_id) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = cc.movie_id) AND (chn.id = ci.person_role_id))\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id person_role_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(chn.name LIKE '%Sherlock%')) AND (chn.name LIKE '%Tony%Stark%' OR chn.name LIKE '%Iron%Man%'))\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((ct.id = mc.company_type_id) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mi_idx.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2000)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it.info = 'bottom 10 rank')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id]\n" + + " β”‚ └─ keys: it.id\n" + + " └─ Filter\n" + + " β”œβ”€ (NOT(mc.note LIKE '%(as Metro-Goldwyn-Mayer Pictures)%'))\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_type_id note]\n" + + " └─ keys: mi_idx.movie_id\n" + "", }, { @@ -11219,8 +11023,7 @@ WHERE cct1.kind = 'cast' 'fight', 'violence') AND kt.kind = 'movie' - AND n.name LIKE '%Downey%Robert%' - AND t.production_year > 2000 + AND t.production_year > 1950 AND kt.id = t.kind_id AND t.id = mk.movie_id AND t.id = ci.movie_id @@ -11238,137 +11041,124 @@ WHERE cct1.kind = 'cast' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(t.title):0!null->complete_downey_ironman_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:8!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ ci.movie_id:13!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ cc.movie_id:21\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ └─ 2000 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ n.id:4!null\n" + - " β”‚ └─ ci.person_id:12!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ n.name LIKE '%Downey%Robert%'\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ ci.movie_id:13!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:6!null\n" + - " β”‚ β”‚ └─ cc.movie_id:21\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:10!null\n" + - " β”‚ └─ mk.keyword_id:7!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ movie (longtext)\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(superhero (longtext), sequel (longtext), second-part (longtext), marvel-comics (longtext), based-on-comic (longtext), tv-special (longtext), fight (longtext), violence (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:13!null\n" + - " β”‚ β”‚ └─ cc.movie_id:21\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ chn.id:15!null\n" + - " β”‚ └─ ci.person_role_id:14\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id person_role_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ chn.name LIKE '%Sherlock%'\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ chn.name LIKE '%Tony%Stark%'\n" + - " β”‚ β”‚ └─ chn.name LIKE '%Iron%Man%'\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct2.id:17!null\n" + - " β”‚ └─ cc.status_id:23!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct1.id:19!null\n" + - " β”‚ └─ cc.subject_id:22!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + - " β”‚ β”‚ └─ cast (longtext)\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ β”œβ”€ columns: [id kind]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ k.id:21!null\n" + + " β”‚ └─ mk.keyword_id:11!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ chn.id:19!null\n" + + " β”‚ β”‚ └─ ci.person_role_id:9\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:10!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ movie (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 1950 (int)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (40-51)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cct2.id:17!null\n" + + " β”‚ β”‚ β”‚ └─ cc.status_id:14!null\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.id:15!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cc.subject_id:13!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [n.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (16-22)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:8!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (28-30)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:8!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-4)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cast (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + + " β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”œβ”€ columns: [id kind]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (7,8)\n" + + " β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ └─ chn.name LIKE '%Sherlock%'\n" + + " β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”œβ”€ chn.name LIKE '%Tony%Stark%'\n" + + " β”‚ β”‚ └─ chn.name LIKE '%Iron%Man%'\n" + + " β”‚ └─ TableAlias(chn)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: char_name\n" + + " β”‚ └─ columns: [id name]\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ └─ TUPLE(superhero (longtext), sequel (longtext), second-part (longtext), marvel-comics (longtext), based-on-comic (longtext), tv-special (longtext), fight (longtext), violence (longtext))\n" + + " └─ TableAlias(k)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(t.title) as complete_downey_ironman_movie]\n" + @@ -11376,74 +11166,75 @@ WHERE cct1.kind = 'cast' " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((kt.id = t.kind_id) AND (t.id = mk.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2000)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ n.name LIKE '%Downey%Robert%'\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.movie_id = ci.movie_id) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = cc.movie_id) AND (chn.id = ci.person_role_id))\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id person_role_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(chn.name LIKE '%Sherlock%')) AND (chn.name LIKE '%Tony%Stark%' OR chn.name LIKE '%Iron%Man%'))\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”œβ”€ (k.id = mk.keyword_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 1950)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + + " β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ ((NOT(chn.name LIKE '%Sherlock%')) AND (chn.name LIKE '%Tony%Stark%' OR chn.name LIKE '%Iron%Man%'))\n" + + " β”‚ └─ TableAlias(chn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: char_name\n" + + " β”‚ └─ columns: [id name]\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(t.title) as complete_downey_ironman_movie]\n" + @@ -11451,80 +11242,80 @@ WHERE cct1.kind = 'cast' " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((kt.id = t.kind_id) AND (t.id = mk.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2000)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ n.name LIKE '%Downey%Robert%'\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.movie_id = ci.movie_id) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = cc.movie_id) AND (chn.id = ci.person_role_id))\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id person_role_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(chn.name LIKE '%Sherlock%')) AND (chn.name LIKE '%Tony%Stark%' OR chn.name LIKE '%Iron%Man%'))\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”œβ”€ (k.id = mk.keyword_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 1950)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + + " β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ ((NOT(chn.name LIKE '%Sherlock%')) AND (chn.name LIKE '%Tony%Stark%' OR chn.name LIKE '%Iron%Man%'))\n" + + " β”‚ └─ TableAlias(chn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: char_name\n" + + " β”‚ └─ columns: [id name]\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", }, { Query: ` -SELECT MIN(n.name) AS cast_member, - MIN(t.title) AS complete_dynamic_hero_movie +SELECT MIN(t.title) AS complete_downey_ironman_movie FROM complete_cast AS cc, comp_cast_type AS cct1, comp_cast_type AS cct2, @@ -11537,20 +11328,19 @@ FROM complete_cast AS cc, title AS t WHERE cct1.kind = 'cast' AND cct2.kind LIKE '%complete%' - AND chn.name IS NOT NULL - AND (chn.name LIKE '%man%' - OR chn.name LIKE '%Man%') + AND chn.name NOT LIKE '%Sherlock%' + AND (chn.name LIKE '%Tony%Stark%' + OR chn.name LIKE '%Iron%Man%') AND k.keyword IN ('superhero', + 'sequel', + 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', - 'violence', - 'magnet', - 'web', - 'claw', - 'laser') + 'violence') AND kt.kind = 'movie' + AND n.name LIKE '%Downey%Robert%' AND t.production_year > 2000 AND kt.id = t.kind_id AND t.id = mk.movie_id @@ -11567,137 +11357,452 @@ WHERE cct1.kind = 'cast' `, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [min(n.name):0!null->cast_member:0, min(t.title):1!null->complete_dynamic_hero_movie:0]\n" + + " β”œβ”€ columns: [min(t.title):0!null->complete_downey_ironman_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(n.name:5!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:8!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ ci.movie_id:13!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ cc.movie_id:21\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ └─ 2000 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ k.id:22!null\n" + + " β”‚ └─ mk.keyword_id:12!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ chn.id:20!null\n" + + " β”‚ β”‚ └─ ci.person_role_id:10\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:11!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ movie (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 2000 (int)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (40-51)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cct2.id:18!null\n" + + " β”‚ β”‚ β”‚ └─ cc.status_id:15!null\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.id:16!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cc.subject_id:14!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name LIKE '%Downey%Robert%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [n.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (16-22)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:9!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (28-30)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:9!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-4)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cast (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + + " β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”œβ”€ columns: [id kind]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (7,8)\n" + + " β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ └─ chn.name LIKE '%Sherlock%'\n" + + " β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”œβ”€ chn.name LIKE '%Tony%Stark%'\n" + + " β”‚ β”‚ └─ chn.name LIKE '%Iron%Man%'\n" + + " β”‚ └─ TableAlias(chn)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: char_name\n" + + " β”‚ └─ columns: [id name]\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ └─ TUPLE(superhero (longtext), sequel (longtext), second-part (longtext), marvel-comics (longtext), based-on-comic (longtext), tv-special (longtext), fight (longtext), violence (longtext))\n" + + " └─ TableAlias(k)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + + "", + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [min(t.title) as complete_downey_ironman_movie]\n" + + " └─ GroupBy\n" + + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + + " β”œβ”€ Grouping()\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (k.id = mk.keyword_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 2000)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name LIKE '%Downey%Robert%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + + " β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ ((NOT(chn.name LIKE '%Sherlock%')) AND (chn.name LIKE '%Tony%Stark%' OR chn.name LIKE '%Iron%Man%'))\n" + + " β”‚ └─ TableAlias(chn)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ n.id:4!null\n" + - " β”‚ └─ ci.person_id:12!null\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ ci.movie_id:13!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:6!null\n" + - " β”‚ β”‚ └─ cc.movie_id:21\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:10!null\n" + - " β”‚ └─ mk.keyword_id:7!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ movie (longtext)\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(superhero (longtext), marvel-comics (longtext), based-on-comic (longtext), tv-special (longtext), fight (longtext), violence (longtext), magnet (longtext), web (longtext), claw (longtext), laser (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:13!null\n" + - " β”‚ β”‚ └─ cc.movie_id:21\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ chn.id:15!null\n" + - " β”‚ └─ ci.person_role_id:14\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id person_role_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ chn.name:1!null IS NULL\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ chn.name LIKE '%man%'\n" + - " β”‚ β”‚ └─ chn.name LIKE '%Man%'\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct2.id:17!null\n" + - " β”‚ └─ cc.status_id:23!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct1.id:19!null\n" + - " β”‚ └─ cc.subject_id:22!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + - " β”‚ β”‚ └─ cast (longtext)\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ β”œβ”€ columns: [id kind]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”œβ”€ name: char_name\n" + + " β”‚ └─ columns: [id name]\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + + "", + ExpectedAnalysis: "Project\n" + + " β”œβ”€ columns: [min(t.title) as complete_downey_ironman_movie]\n" + + " └─ GroupBy\n" + + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + + " β”œβ”€ Grouping()\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (k.id = mk.keyword_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 2000)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name LIKE '%Downey%Robert%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + + " β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ ((NOT(chn.name LIKE '%Sherlock%')) AND (chn.name LIKE '%Tony%Stark%' OR chn.name LIKE '%Iron%Man%'))\n" + + " β”‚ └─ TableAlias(chn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: char_name\n" + + " β”‚ └─ columns: [id name]\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + + "", + }, + { + Query: ` +SELECT MIN(n.name) AS cast_member, + MIN(t.title) AS complete_dynamic_hero_movie +FROM complete_cast AS cc, + comp_cast_type AS cct1, + comp_cast_type AS cct2, + char_name AS chn, + cast_info AS ci, + keyword AS k, + kind_type AS kt, + movie_keyword AS mk, + name AS n, + title AS t +WHERE cct1.kind = 'cast' + AND cct2.kind LIKE '%complete%' + AND chn.name IS NOT NULL + AND (chn.name LIKE '%man%' + OR chn.name LIKE '%Man%') + AND k.keyword IN ('superhero', + 'marvel-comics', + 'based-on-comic', + 'tv-special', + 'fight', + 'violence', + 'magnet', + 'web', + 'claw', + 'laser') + AND kt.kind = 'movie' + AND t.production_year > 2000 + AND kt.id = t.kind_id + AND t.id = mk.movie_id + AND t.id = ci.movie_id + AND t.id = cc.movie_id + AND mk.movie_id = ci.movie_id + AND mk.movie_id = cc.movie_id + AND ci.movie_id = cc.movie_id + AND chn.id = ci.person_role_id + AND n.id = ci.person_id + AND k.id = mk.keyword_id + AND cct1.id = cc.subject_id + AND cct2.id = cc.status_id; + +`, + ExpectedPlan: "Project\n" + + " β”œβ”€ columns: [min(n.name):0!null->cast_member:0, min(t.title):1!null->complete_dynamic_hero_movie:0]\n" + + " └─ GroupBy\n" + + " β”œβ”€ select: MIN(n.name:7!null), MIN(t.title:3!null)\n" + + " β”œβ”€ group: \n" + + " └─ InnerJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ k.id:22!null\n" + + " β”‚ └─ mk.keyword_id:12!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ chn.id:20!null\n" + + " β”‚ β”‚ └─ ci.person_role_id:10\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:11!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ movie (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 2000 (int)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (40-51)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cct2.id:18!null\n" + + " β”‚ β”‚ β”‚ └─ cc.status_id:15!null\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.id:16!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cc.subject_id:14!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [n.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (16-22)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:9!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (28-30)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:9!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-4)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cast (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + + " β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”œβ”€ columns: [id kind]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (7,8)\n" + + " β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ └─ chn.name:1!null IS NULL\n" + + " β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”œβ”€ chn.name LIKE '%man%'\n" + + " β”‚ β”‚ └─ chn.name LIKE '%Man%'\n" + + " β”‚ └─ TableAlias(chn)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: char_name\n" + + " β”‚ └─ columns: [id name]\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ └─ TUPLE(superhero (longtext), marvel-comics (longtext), based-on-comic (longtext), tv-special (longtext), fight (longtext), violence (longtext), magnet (longtext), web (longtext), claw (longtext), laser (longtext))\n" + + " └─ TableAlias(k)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(n.name) as cast_member, min(t.title) as complete_dynamic_hero_movie]\n" + @@ -11705,72 +11810,75 @@ WHERE cct1.kind = 'cast' " β”œβ”€ SelectedExprs(MIN(n.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((kt.id = t.kind_id) AND (t.id = mk.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2000)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.movie_id = ci.movie_id) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence', 'magnet', 'web', 'claw', 'laser'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = cc.movie_id) AND (chn.id = ci.person_role_id))\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id person_role_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(chn.name IS NULL)) AND (chn.name LIKE '%man%' OR chn.name LIKE '%Man%'))\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”œβ”€ (k.id = mk.keyword_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 2000)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + + " β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ ((NOT(chn.name IS NULL)) AND (chn.name LIKE '%man%' OR chn.name LIKE '%Man%'))\n" + + " β”‚ └─ TableAlias(chn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: char_name\n" + + " β”‚ └─ columns: [id name]\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword HASH IN ('superhero', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence', 'magnet', 'web', 'claw', 'laser'))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(n.name) as cast_member, min(t.title) as complete_dynamic_hero_movie]\n" + @@ -11778,72 +11886,75 @@ WHERE cct1.kind = 'cast' " β”œβ”€ SelectedExprs(MIN(n.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((kt.id = t.kind_id) AND (t.id = mk.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2000)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.movie_id = ci.movie_id) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence', 'magnet', 'web', 'claw', 'laser'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = cc.movie_id) AND (chn.id = ci.person_role_id))\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id person_role_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(chn.name IS NULL)) AND (chn.name LIKE '%man%' OR chn.name LIKE '%Man%'))\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”œβ”€ (k.id = mk.keyword_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 2000)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + + " β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ ((NOT(chn.name IS NULL)) AND (chn.name LIKE '%man%' OR chn.name LIKE '%Man%'))\n" + + " β”‚ └─ TableAlias(chn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: char_name\n" + + " β”‚ └─ columns: [id name]\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword HASH IN ('superhero', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence', 'magnet', 'web', 'claw', 'laser'))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", }, { @@ -11895,23 +12006,23 @@ WHERE cn.country_code !='[pl]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->company_name:0, min(lt.link):1!null->link_type:0, min(t.title):2!null->western_follow_up:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:20!null), MIN(lt.link:14!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:8!null), MIN(lt.link:4!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:5!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:14!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:9!null\n" + + " β”‚ β”‚ └─ mc.movie_id:10!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi.movie_id:7!null\n" + + " β”‚ β”œβ”€ mi.movie_id:16!null\n" + " β”‚ └─ t.id:0!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ AND\n" + @@ -11929,111 +12040,111 @@ WHERE cn.country_code !='[pl]' " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.id:13!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ml.link_type_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:14!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ └─ mc.movie_id:9!null\n" + + " β”‚ β”‚ β”œβ”€ ml.movie_id:5!null\n" + + " β”‚ β”‚ └─ mc.movie_id:10!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ └─ mi.movie_id:7!null\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + + " β”‚ β”œβ”€ ml.movie_id:5!null\n" + + " β”‚ └─ mi.movie_id:16!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ └─ TableAlias(ml)\n" + + " β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”œβ”€ keys: [lt.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (28-31)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_link\n" + + " β”‚ └─ columns: [movie_id link_type_id]\n" + " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ mk.keyword_id:15!null\n" + + " β”‚ └─ k.id:20!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ mc.company_type_id:12!null\n" + + " β”‚ β”‚ └─ ct.id:18!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.keyword_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ k.id:15!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ └─ mc.movie_id:9!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ └─ mi.movie_id:7!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:14!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:16!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ [pl] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name LIKE '%Film%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cn.name LIKE '%Warner%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note:3 IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cn.id:7!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15-19)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:10!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (25-27)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Denish (longtext), Norwegian (longtext), German (longtext))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:10!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (20-24)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ └─ columns: [movie_id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ └─ TableAlias(ct)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id kind]\n" + + " └─ Filter\n" + " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:9!null\n" + - " β”‚ └─ mi.movie_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:1!null\n" + - " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Denish (longtext), Norwegian (longtext), German (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_type_id:11!null\n" + - " β”‚ β”‚ └─ ct.id:17!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.company_id:10!null\n" + - " β”‚ └─ cn.id:19!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note:3 IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ sequel (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ β”‚ └─ production companies (longtext)\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ β”‚ └─ [pl] (longtext)\n" + - " β”‚ └─ Or\n" + - " β”‚ β”œβ”€ cn.name LIKE '%Film%'\n" + - " β”‚ └─ cn.name LIKE '%Warner%'\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ └─ sequel (longtext)\n" + + " └─ TableAlias(k)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as company_name, min(lt.link) as link_type, min(t.title) as western_follow_up]\n" + @@ -12049,60 +12160,64 @@ WHERE cn.country_code !='[pl]' " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = mi.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = mi.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (mc.movie_id = mi.movie_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_type_id = ct.id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”œβ”€ (((ml.movie_id = mk.movie_id) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = mi.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ └─ TableAlias(ml)\n" + + " β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ └─ keys: lt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_type_id = ct.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ (mk.movie_id = mi.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German'))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info]\n" + + " β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ └─ TableAlias(ct)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id kind]\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword = 'sequel')\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as company_name, min(lt.link) as link_type, min(t.title) as western_follow_up]\n" + @@ -12118,60 +12233,64 @@ WHERE cn.country_code !='[pl]' " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = mi.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = mi.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (mc.movie_id = mi.movie_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_type_id = ct.id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”œβ”€ (((ml.movie_id = mk.movie_id) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = mi.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ └─ TableAlias(ml)\n" + + " β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ └─ keys: lt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_type_id = ct.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ (mk.movie_id = mi.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German'))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info]\n" + + " β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ └─ TableAlias(ct)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id kind]\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword = 'sequel')\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", }, { @@ -12217,23 +12336,23 @@ WHERE cn.country_code !='[pl]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->company_name:0, min(lt.link):1!null->link_type:0, min(t.title):2!null->german_follow_up:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:20!null), MIN(lt.link:14!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:8!null), MIN(lt.link:4!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:5!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:14!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:9!null\n" + + " β”‚ β”‚ └─ mc.movie_id:10!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi.movie_id:7!null\n" + + " β”‚ β”œβ”€ mi.movie_id:16!null\n" + " β”‚ └─ t.id:0!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ AND\n" + @@ -12251,111 +12370,111 @@ WHERE cn.country_code !='[pl]' " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.id:13!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ml.link_type_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:14!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ └─ mc.movie_id:9!null\n" + + " β”‚ β”‚ β”œβ”€ ml.movie_id:5!null\n" + + " β”‚ β”‚ └─ mc.movie_id:10!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ └─ mi.movie_id:7!null\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + + " β”‚ β”œβ”€ ml.movie_id:5!null\n" + + " β”‚ └─ mi.movie_id:16!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ └─ TableAlias(ml)\n" + + " β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”œβ”€ keys: [lt.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (28-31)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_link\n" + + " β”‚ └─ columns: [movie_id link_type_id]\n" + " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ mk.keyword_id:15!null\n" + + " β”‚ └─ k.id:20!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ mc.company_type_id:12!null\n" + + " β”‚ β”‚ └─ ct.id:18!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.keyword_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ k.id:15!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ └─ mc.movie_id:9!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ └─ mi.movie_id:7!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:14!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:16!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ [pl] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name LIKE '%Film%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cn.name LIKE '%Warner%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note:3 IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cn.id:7!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15-19)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:10!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (25-27)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ TUPLE(Germany (longtext), German (longtext))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:10!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (20-24)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ └─ columns: [movie_id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ └─ TableAlias(ct)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id kind]\n" + + " └─ Filter\n" + " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:9!null\n" + - " β”‚ └─ mi.movie_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:1!null\n" + - " β”‚ β”‚ └─ TUPLE(Germany (longtext), German (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_type_id:11!null\n" + - " β”‚ β”‚ └─ ct.id:17!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.company_id:10!null\n" + - " β”‚ └─ cn.id:19!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note:3 IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ sequel (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ β”‚ └─ production companies (longtext)\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ β”‚ └─ [pl] (longtext)\n" + - " β”‚ └─ Or\n" + - " β”‚ β”œβ”€ cn.name LIKE '%Film%'\n" + - " β”‚ └─ cn.name LIKE '%Warner%'\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ └─ sequel (longtext)\n" + + " └─ TableAlias(k)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as company_name, min(lt.link) as link_type, min(t.title) as german_follow_up]\n" + @@ -12371,60 +12490,64 @@ WHERE cn.country_code !='[pl]' " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = mi.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = mi.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (mc.movie_id = mi.movie_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Germany', 'German'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_type_id = ct.id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”œβ”€ (((ml.movie_id = mk.movie_id) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = mi.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ └─ TableAlias(ml)\n" + + " β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ └─ keys: lt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_type_id = ct.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ (mk.movie_id = mi.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Germany', 'German'))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info]\n" + + " β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ └─ TableAlias(ct)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id kind]\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword = 'sequel')\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as company_name, min(lt.link) as link_type, min(t.title) as german_follow_up]\n" + @@ -12440,60 +12563,64 @@ WHERE cn.country_code !='[pl]' " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = mi.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = mi.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (mc.movie_id = mi.movie_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Germany', 'German'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_type_id = ct.id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”œβ”€ (((ml.movie_id = mk.movie_id) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = mi.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ └─ TableAlias(ml)\n" + + " β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ └─ keys: lt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_type_id = ct.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ (mk.movie_id = mi.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Germany', 'German'))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info]\n" + + " β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ └─ TableAlias(ct)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id kind]\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword = 'sequel')\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", }, { @@ -12546,23 +12673,23 @@ WHERE cn.country_code !='[pl]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->company_name:0, min(lt.link):1!null->link_type:0, min(t.title):2!null->western_follow_up:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:20!null), MIN(lt.link:14!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:8!null), MIN(lt.link:4!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:5!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:14!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:9!null\n" + + " β”‚ β”‚ └─ mc.movie_id:10!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi.movie_id:7!null\n" + + " β”‚ β”œβ”€ mi.movie_id:16!null\n" + " β”‚ └─ t.id:0!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ AND\n" + @@ -12580,111 +12707,111 @@ WHERE cn.country_code !='[pl]' " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.id:13!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ml.link_type_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:14!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ └─ mc.movie_id:9!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ └─ mi.movie_id:7!null\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.keyword_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ k.id:15!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ └─ mc.movie_id:9!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ └─ mi.movie_id:7!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:9!null\n" + - " β”‚ └─ mi.movie_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:1!null\n" + - " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Denish (longtext), Norwegian (longtext), German (longtext), English (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_type_id:11!null\n" + - " β”‚ β”‚ └─ ct.id:17!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.company_id:10!null\n" + - " β”‚ └─ cn.id:19!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note:3 IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ sequel (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ β”‚ └─ production companies (longtext)\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ β”‚ └─ [pl] (longtext)\n" + - " β”‚ └─ Or\n" + - " β”‚ β”œβ”€ cn.name LIKE '%Film%'\n" + - " β”‚ └─ cn.name LIKE '%Warner%'\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”œβ”€ ml.movie_id:5!null\n" + + " β”‚ β”‚ └─ mc.movie_id:10!null\n" + + " β”‚ └─ Eq\n" + + " β”‚ β”œβ”€ ml.movie_id:5!null\n" + + " β”‚ └─ mi.movie_id:16!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ └─ TableAlias(ml)\n" + + " β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”œβ”€ keys: [lt.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (28-31)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_link\n" + + " β”‚ └─ columns: [movie_id link_type_id]\n" + + " └─ InnerJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ mk.keyword_id:15!null\n" + + " β”‚ └─ k.id:20!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ mc.company_type_id:12!null\n" + + " β”‚ β”‚ └─ ct.id:18!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:14!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:16!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ [pl] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name LIKE '%Film%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cn.name LIKE '%Warner%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note:3 IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cn.id:7!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15-19)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:10!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (25-27)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Denish (longtext), Norwegian (longtext), German (longtext), English (longtext))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:10!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (20-24)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ └─ columns: [movie_id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ └─ TableAlias(ct)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id kind]\n" + + " └─ Filter\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ └─ sequel (longtext)\n" + + " └─ TableAlias(k)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as company_name, min(lt.link) as link_type, min(t.title) as western_follow_up]\n" + @@ -12700,60 +12827,64 @@ WHERE cn.country_code !='[pl]' " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = mi.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = mi.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (mc.movie_id = mi.movie_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'English'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_type_id = ct.id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”œβ”€ (((ml.movie_id = mk.movie_id) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = mi.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ └─ TableAlias(ml)\n" + + " β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ └─ keys: lt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_type_id = ct.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ (mk.movie_id = mi.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'English'))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info]\n" + + " β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ └─ TableAlias(ct)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id kind]\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword = 'sequel')\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as company_name, min(lt.link) as link_type, min(t.title) as western_follow_up]\n" + @@ -12769,60 +12900,64 @@ WHERE cn.country_code !='[pl]' " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = mi.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = mi.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (mc.movie_id = mi.movie_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'English'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_type_id = ct.id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ Filter\n" + - " β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”œβ”€ (((ml.movie_id = mk.movie_id) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = mi.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ └─ TableAlias(ml)\n" + + " β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ └─ keys: lt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_type_id = ct.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ (mk.movie_id = mi.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'English'))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info]\n" + + " β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ └─ TableAlias(ct)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id kind]\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword = 'sequel')\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", }, { @@ -12879,337 +13014,329 @@ WHERE cn.country_code != '[us]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->movie_company:0, min(mi_idx.info):1!null->rating:0, min(t.title):2!null->western_violent_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:26!null), MIN(mi_idx.info:8!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:19!null), MIN(mi_idx.info:10!null), MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:16!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.id:17!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_type_id:26!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.id:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.company_id:25!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:24!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + + " β”‚ β”‚ β”œβ”€ mk.movie_id:6!null\n" + + " β”‚ β”‚ └─ mc.movie_id:24!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:12!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ └─ 2008 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + + " β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ └─ mc.movie_id:24!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it1.id:15!null\n" + + " β”‚ β”‚ └─ mi.info_type_id:22!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.id:13!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.info_type_id:9!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(movie (longtext), episode (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 2008 (int)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (37-48)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 11\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [t.id:2!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (34-36)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LessThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 7.0 (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [mk.movie_id:6!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (29-33)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext), blood (longtext), violence (longtext))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ countries (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (10,11)\n" + + " β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ └─ TUPLE(Germany (longtext), German (longtext), USA (longtext), American (longtext))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi_idx.movie_id:8!null]\n" + + " β”‚ β”œβ”€ colSet: (24-28)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ Filter\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ └─ mc.movie_id:12!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:18!null\n" + - " β”‚ └─ mk.keyword_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:12!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:20!null\n" + - " β”‚ └─ mi_idx.info_type_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ LessThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + - " β”‚ β”‚ └─ 7.0 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ └─ mc.movie_id:12!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:22!null\n" + - " β”‚ └─ mi.info_type_id:10!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Germany (longtext), German (longtext), USA (longtext), American (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.id:24!null\n" + - " β”‚ β”‚ └─ mc.company_type_id:14!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:25!null\n" + - " β”‚ └─ mc.company_id:13!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(200%)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(movie (longtext), episode (longtext))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext), blood (longtext), violence (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ countries (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (10,11)\n" + - " β”‚ └─ tableId: 3\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ NOT\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ └─ [us] (longtext)\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + + " β”‚ └─ mc.note LIKE '%(200%)%'\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mi.movie_id:21!null]\n" + + " β”œβ”€ colSet: (19-23)\n" + + " β”œβ”€ tableId: 7\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_id company_type_id note]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as western_violent_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2008)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info < '7.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.movie_id = mc.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Germany', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'countries')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((((ct.id = mc.company_type_id) AND (cn.id = mc.company_id)) AND (mc.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (it1.id = mi.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 2008)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi_idx.info < '7.0')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: mk.movie_id\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('Germany', 'German', 'USA', 'American'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: mi_idx.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " └─ keys: mi.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as western_violent_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2008)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info < '7.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.movie_id = mc.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Germany', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'countries')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((((ct.id = mc.company_type_id) AND (cn.id = mc.company_id)) AND (mc.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (it1.id = mi.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 2008)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi_idx.info < '7.0')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: mk.movie_id\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('Germany', 'German', 'USA', 'American'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: mi_idx.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " └─ keys: mi.movie_id\n" + "", }, { @@ -13266,337 +13393,329 @@ WHERE cn.country_code != '[us]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->movie_company:0, min(mi_idx.info):1!null->rating:0, min(t.title):2!null->western_violent_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:26!null), MIN(mi_idx.info:8!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:19!null), MIN(mi_idx.info:10!null), MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:16!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.id:17!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_type_id:26!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.id:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.company_id:25!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:24!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + + " β”‚ β”‚ β”œβ”€ mk.movie_id:6!null\n" + + " β”‚ β”‚ └─ mc.movie_id:24!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:12!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ └─ 2009 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ └─ mc.movie_id:12!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:18!null\n" + - " β”‚ └─ mk.keyword_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:12!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:20!null\n" + - " β”‚ └─ mi_idx.info_type_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ LessThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + - " β”‚ β”‚ └─ 7.0 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ └─ mc.movie_id:12!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:22!null\n" + - " β”‚ └─ mi.info_type_id:10!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Germany (longtext), German (longtext), USA (longtext), American (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.id:24!null\n" + - " β”‚ β”‚ └─ mc.company_type_id:14!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:25!null\n" + - " β”‚ └─ mc.company_id:13!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(200%)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(movie (longtext), episode (longtext))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext), blood (longtext), violence (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ countries (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (10,11)\n" + - " β”‚ └─ tableId: 3\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ NOT\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ └─ [us] (longtext)\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + - "", - ExpectedEstimates: "Project\n" + - " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as western_violent_movie]\n" + - " └─ GroupBy\n" + - " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + - " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2009)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info < '7.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.movie_id = mc.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Germany', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'countries')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ └─ mc.movie_id:24!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it1.id:15!null\n" + + " β”‚ β”‚ └─ mi.info_type_id:22!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.id:13!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.info_type_id:9!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(movie (longtext), episode (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 2009 (int)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (37-48)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 11\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [t.id:2!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (34-36)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LessThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 7.0 (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [mk.movie_id:6!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (29-33)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext), blood (longtext), violence (longtext))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ countries (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (10,11)\n" + + " β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ └─ TUPLE(Germany (longtext), German (longtext), USA (longtext), American (longtext))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi_idx.movie_id:8!null]\n" + + " β”‚ β”œβ”€ colSet: (24-28)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ Filter\n" + + " β”œβ”€ AND\n" + + " β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + + " β”‚ └─ mc.note LIKE '%(200%)%'\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mi.movie_id:21!null]\n" + + " β”œβ”€ colSet: (19-23)\n" + + " β”œβ”€ tableId: 7\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_id company_type_id note]\n" + + "", + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as western_violent_movie]\n" + + " └─ GroupBy\n" + + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + + " β”œβ”€ Grouping()\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((((ct.id = mc.company_type_id) AND (cn.id = mc.company_id)) AND (mc.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (it1.id = mi.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 2009)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi_idx.info < '7.0')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: mk.movie_id\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('Germany', 'German', 'USA', 'American'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: mi_idx.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " └─ keys: mi.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as western_violent_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2009)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info < '7.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.movie_id = mc.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Germany', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'countries')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((((ct.id = mc.company_type_id) AND (cn.id = mc.company_id)) AND (mc.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (it1.id = mi.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 2009)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi_idx.info < '7.0')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: mk.movie_id\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('Germany', 'German', 'USA', 'American'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: mi_idx.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " └─ keys: mi.movie_id\n" + "", }, { @@ -13659,337 +13778,329 @@ WHERE cn.country_code != '[us]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->movie_company:0, min(mi_idx.info):1!null->rating:0, min(t.title):2!null->western_violent_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:26!null), MIN(mi_idx.info:8!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:19!null), MIN(mi_idx.info:10!null), MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:16!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.id:17!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_type_id:26!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.id:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.company_id:25!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:24!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + + " β”‚ β”‚ β”œβ”€ mk.movie_id:6!null\n" + + " β”‚ β”‚ └─ mc.movie_id:24!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:12!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ └─ 2005 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + + " β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ └─ mc.movie_id:24!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it1.id:15!null\n" + + " β”‚ β”‚ └─ mi.info_type_id:22!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.id:13!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.info_type_id:9!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(movie (longtext), episode (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 2005 (int)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (37-48)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 11\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [t.id:2!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (34-36)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LessThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 8.5 (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [mk.movie_id:6!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (29-33)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext), blood (longtext), violence (longtext))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ countries (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (10,11)\n" + + " β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Danish (longtext), Norwegian (longtext), German (longtext), USA (longtext), American (longtext))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi_idx.movie_id:8!null]\n" + + " β”‚ β”œβ”€ colSet: (24-28)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ Filter\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ └─ mc.movie_id:12!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:18!null\n" + - " β”‚ └─ mk.keyword_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:12!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:20!null\n" + - " β”‚ └─ mi_idx.info_type_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ LessThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + - " β”‚ β”‚ └─ 8.5 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ └─ mc.movie_id:12!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:22!null\n" + - " β”‚ └─ mi.info_type_id:10!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Danish (longtext), Norwegian (longtext), German (longtext), USA (longtext), American (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.id:24!null\n" + - " β”‚ β”‚ └─ mc.company_type_id:14!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:25!null\n" + - " β”‚ └─ mc.company_id:13!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(200%)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(movie (longtext), episode (longtext))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext), blood (longtext), violence (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ countries (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (10,11)\n" + - " β”‚ └─ tableId: 3\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ NOT\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ └─ [us] (longtext)\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + + " β”‚ └─ mc.note LIKE '%(200%)%'\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mi.movie_id:21!null]\n" + + " β”œβ”€ colSet: (19-23)\n" + + " β”œβ”€ tableId: 7\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_id company_type_id note]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as western_violent_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.movie_id = mc.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'countries')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((((ct.id = mc.company_type_id) AND (cn.id = mc.company_id)) AND (mc.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (it1.id = mi.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 2005)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: mk.movie_id\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: mi_idx.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " └─ keys: mi.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as western_violent_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.movie_id = mc.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'countries')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((((ct.id = mc.company_type_id) AND (cn.id = mc.company_id)) AND (mc.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (it1.id = mi.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 2005)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: mk.movie_id\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: mi_idx.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " └─ keys: mi.movie_id\n" + "", }, { @@ -14050,328 +14161,320 @@ WHERE cn.country_code != '[us]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->movie_company:0, min(mi_idx.info):1!null->rating:0, min(t.title):2!null->western_violent_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:25!null), MIN(mi_idx.info:8!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:19!null), MIN(mi_idx.info:10!null), MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:15!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.id:17!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_type_id:26!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.id:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.company_id:25!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:24!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + + " β”‚ β”‚ β”œβ”€ mk.movie_id:6!null\n" + + " β”‚ β”‚ └─ mc.movie_id:24!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:12!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ └─ 2005 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ └─ mc.movie_id:12!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:17!null\n" + - " β”‚ └─ mk.keyword_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:12!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:19!null\n" + - " β”‚ └─ mi_idx.info_type_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ LessThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + - " β”‚ β”‚ └─ 8.5 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ └─ mc.movie_id:12!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:21!null\n" + - " β”‚ └─ mi.info_type_id:10!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Danish (longtext), Norwegian (longtext), German (longtext), USA (longtext), American (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.id:23!null\n" + - " β”‚ β”‚ └─ mc.company_type_id:14!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:24!null\n" + - " β”‚ └─ mc.company_id:13!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(movie (longtext), episode (longtext))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext), blood (longtext), violence (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ countries (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (10,11)\n" + - " β”‚ └─ tableId: 3\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ NOT\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ └─ [us] (longtext)\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ └─ mc.movie_id:24!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it1.id:15!null\n" + + " β”‚ β”‚ └─ mi.info_type_id:22!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.id:13!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.info_type_id:9!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(movie (longtext), episode (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 2005 (int)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (37-48)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 11\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [t.id:2!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (34-36)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LessThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 8.5 (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [mk.movie_id:6!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (29-33)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext), blood (longtext), violence (longtext))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ countries (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (10,11)\n" + + " β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Danish (longtext), Norwegian (longtext), German (longtext), USA (longtext), American (longtext))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi_idx.movie_id:8!null]\n" + + " β”‚ β”œβ”€ colSet: (24-28)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mi.movie_id:21!null]\n" + + " β”œβ”€ colSet: (19-23)\n" + + " β”œβ”€ tableId: 7\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_id company_type_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as western_violent_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.movie_id = mc.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'countries')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((((ct.id = mc.company_type_id) AND (cn.id = mc.company_id)) AND (mc.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (it1.id = mi.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 2005)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: mk.movie_id\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: mi_idx.movie_id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " └─ keys: mi.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as western_violent_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mi.movie_id = mc.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'countries')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((((ct.id = mc.company_type_id) AND (cn.id = mc.company_id)) AND (mc.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (it1.id = mi.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 2005)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: kt.id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: mk.movie_id\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: mi_idx.movie_id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " └─ keys: mi.movie_id\n" + "", }, { @@ -14419,161 +14522,159 @@ WHERE cct1.kind = 'complete+verified' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(kt.kind):0!null->movie_kind:0, min(t.title):1!null->complete_us_internet_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(kt.kind:14!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(kt.kind:1!null), MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:13!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:6!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:7!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:10!null\n" + + " β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ └─ mc.movie_id:13!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”œβ”€ t.id:2!null\n" + " β”‚ └─ cc.movie_id:23\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ └─ 2000 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ TUPLE(movie (longtext))\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ β”‚ └─ 2000 (int)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”œβ”€ colSet: (36-47)\n" + + " β”‚ β”œβ”€ tableId: 11\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: title\n" + + " β”‚ └─ columns: [id title kind_id production_year]\n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:6!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:13!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:23\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.id:19!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_id:14!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.id:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.company_type_id:15!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + + " β”‚ β”‚ β”‚ └─ cc.movie_id:23\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ └─ cc.movie_id:23\n" + + " β”‚ β”‚ β”œβ”€ it1.id:16!null\n" + + " β”‚ β”‚ └─ mi.info_type_id:10!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:15!null\n" + - " β”‚ └─ mk.keyword_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:10!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ β”‚ └─ cc.movie_id:23\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:16!null\n" + - " β”‚ └─ mi.info_type_id:7!null\n" + + " β”‚ β”œβ”€ mk.movie_id:7!null\n" + + " β”‚ └─ cc.movie_id:23\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [k.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (33-35)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.note LIKE '%internet%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.info:2!null IS NULL\n" + + " β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.info LIKE 'USA:% 199%'\n" + + " β”‚ β”‚ β”‚ └─ mi.info LIKE 'USA:% 200%'\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mk.movie_id:7!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (28-32)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id info note]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi.movie_id:9!null]\n" + + " β”‚ β”œβ”€ colSet: (23-27)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + + " └─ CrossJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.note LIKE '%internet%'\n" + - " β”‚ β”‚ β”‚ └─ NOT\n" + - " β”‚ β”‚ β”‚ └─ mi.info:2!null IS NULL\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ mi.info LIKE 'USA:% 199%'\n" + - " β”‚ β”‚ └─ mi.info LIKE 'USA:% 200%'\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ └─ release dates (longtext)\n" + + " β”‚ └─ TableAlias(it1)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:10!null\n" + - " β”‚ β”‚ β”‚ └─ cc.movie_id:23\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.id:19!null\n" + - " β”‚ β”‚ └─ mc.company_id:11!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ct.id:18!null\n" + - " β”‚ └─ mc.company_type_id:12!null\n" + - " β”œβ”€ TableAlias(mc)\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ CrossJoin\n" + + " β”œβ”€ TableAlias(ct)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + " └─ CrossJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(movie (longtext))\n" + - " β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ └─ TableAlias(cn)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ release dates (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct1.id:21!null\n" + - " β”‚ └─ cc.status_id:24!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + - " β”‚ β”‚ └─ complete+verified (longtext)\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id status_id]\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ InnerJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ cct1.id:21!null\n" + + " β”‚ └─ cc.status_id:24!null\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + + " β”‚ β”‚ └─ complete+verified (longtext)\n" + + " β”‚ └─ TableAlias(cct1)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ └─ columns: [id kind]\n" + + " └─ TableAlias(cc)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: complete_cast\n" + + " └─ columns: [movie_id status_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(kt.kind) as movie_kind, min(t.title) as complete_us_internet_movie]\n" + @@ -14581,76 +14682,78 @@ WHERE cct1.kind = 'complete+verified' " β”œβ”€ SelectedExprs(MIN(kt.kind), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2000)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id))\n" + + " β”œβ”€ ((((t.id = mi.movie_id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie'))\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (t.production_year > 2000)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ └─ keys: kt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ ((((((mc.movie_id = cc.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id)) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id)) AND (mk.movie_id = cc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: k.id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((mi.note LIKE '%internet%' AND (NOT(mi.info IS NULL))) AND (mi.info LIKE 'USA:% 199%' OR mi.info LIKE 'USA:% 200%'))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info note]\n" + + " β”‚ β”‚ └─ keys: mk.movie_id\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ CrossJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((mi.note LIKE '%internet%' AND (NOT(mi.info IS NULL))) AND (mi.info LIKE 'USA:% 199%' OR mi.info LIKE 'USA:% 200%'))\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + + " β”‚ └─ TableAlias(it1)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = cc.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ CrossJoin\n" + + " β”œβ”€ TableAlias(ct)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + " └─ CrossJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie'))\n" + - " β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'complete+verified')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id status_id]\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (cct1.id = cc.status_id)\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (cct1.kind = 'complete+verified')\n" + + " β”‚ └─ TableAlias(cct1)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ └─ columns: [id kind]\n" + + " └─ TableAlias(cc)\n" + + " └─ Table\n" + + " β”œβ”€ name: complete_cast\n" + + " └─ columns: [movie_id status_id]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(kt.kind) as movie_kind, min(t.title) as complete_us_internet_movie]\n" + @@ -14658,76 +14761,78 @@ WHERE cct1.kind = 'complete+verified' " β”œβ”€ SelectedExprs(MIN(kt.kind), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2000)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id))\n" + + " β”œβ”€ ((((t.id = mi.movie_id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie'))\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (t.production_year > 2000)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ └─ keys: kt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ ((((((mc.movie_id = cc.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id)) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id)) AND (mk.movie_id = cc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: k.id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((mi.note LIKE '%internet%' AND (NOT(mi.info IS NULL))) AND (mi.info LIKE 'USA:% 199%' OR mi.info LIKE 'USA:% 200%'))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info note]\n" + + " β”‚ β”‚ └─ keys: mk.movie_id\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ CrossJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((mi.note LIKE '%internet%' AND (NOT(mi.info IS NULL))) AND (mi.info LIKE 'USA:% 199%' OR mi.info LIKE 'USA:% 200%'))\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + + " β”‚ └─ TableAlias(it1)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = cc.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ CrossJoin\n" + + " β”œβ”€ TableAlias(ct)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + " └─ CrossJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie'))\n" + - " β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'complete+verified')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id status_id]\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (cct1.id = cc.status_id)\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (cct1.kind = 'complete+verified')\n" + + " β”‚ └─ TableAlias(cct1)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ └─ columns: [id kind]\n" + + " └─ TableAlias(cc)\n" + + " └─ Table\n" + + " β”œβ”€ name: complete_cast\n" + + " └─ columns: [movie_id status_id]\n" + "", }, { @@ -14777,160 +14882,158 @@ WHERE cct1.kind = 'complete+verified' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(kt.kind):0!null->movie_kind:0, min(t.title):1!null->complete_nerdy_internet_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(kt.kind:14!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(kt.kind:1!null), MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:13!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:6!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:10!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:8!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:10!null\n" + + " β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ └─ mc.movie_id:14!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”œβ”€ t.id:2!null\n" + " β”‚ └─ cc.movie_id:24\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ └─ 2000 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ TUPLE(movie (longtext))\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ β”‚ └─ 2000 (int)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”œβ”€ colSet: (36-47)\n" + + " β”‚ β”œβ”€ tableId: 11\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: title\n" + + " β”‚ └─ columns: [id title kind_id production_year]\n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:6!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:14!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:24\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.id:20!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_id:15!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.id:19!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.company_type_id:16!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ └─ cc.movie_id:24\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ └─ cc.movie_id:24\n" + + " β”‚ β”‚ β”œβ”€ it1.id:17!null\n" + + " β”‚ β”‚ └─ mi.info_type_id:11!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:15!null\n" + - " β”‚ └─ mk.keyword_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:10!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ β”‚ └─ cc.movie_id:24\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:17!null\n" + - " β”‚ └─ mi.info_type_id:7!null\n" + + " β”‚ β”œβ”€ mk.movie_id:8!null\n" + + " β”‚ └─ cc.movie_id:24\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(nerd (longtext), loner (longtext), alienation (longtext), dignity (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [k.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (33-35)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.note LIKE '%internet%'\n" + + " β”‚ β”‚ β”‚ └─ mi.info LIKE 'USA:% 200%'\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mk.movie_id:8!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (28-32)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id info note]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi.movie_id:10!null]\n" + + " β”‚ β”œβ”€ colSet: (23-27)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + + " └─ CrossJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ mi.note LIKE '%internet%'\n" + - " β”‚ β”‚ └─ mi.info LIKE 'USA:% 200%'\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ └─ release dates (longtext)\n" + + " β”‚ └─ TableAlias(it1)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:10!null\n" + - " β”‚ β”‚ β”‚ └─ cc.movie_id:24\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.id:20!null\n" + - " β”‚ β”‚ └─ mc.company_id:11!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ct.id:19!null\n" + - " β”‚ └─ mc.company_type_id:12!null\n" + - " β”œβ”€ TableAlias(mc)\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ CrossJoin\n" + + " β”œβ”€ TableAlias(ct)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + " └─ CrossJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(movie (longtext))\n" + - " β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ └─ TableAlias(cn)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ InnerJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ cct1.id:22!null\n" + + " β”‚ └─ cc.status_id:25!null\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(nerd (longtext), loner (longtext), alienation (longtext), dignity (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + + " β”‚ β”‚ └─ complete+verified (longtext)\n" + + " β”‚ └─ TableAlias(cct1)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ release dates (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct1.id:22!null\n" + - " β”‚ └─ cc.status_id:25!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + - " β”‚ β”‚ └─ complete+verified (longtext)\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id status_id]\n" + + " β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ └─ columns: [id kind]\n" + + " └─ TableAlias(cc)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: complete_cast\n" + + " └─ columns: [movie_id status_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(kt.kind) as movie_kind, min(t.title) as complete_nerdy_internet_movie]\n" + @@ -14938,78 +15041,80 @@ WHERE cct1.kind = 'complete+verified' " β”œβ”€ SelectedExprs(MIN(kt.kind), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2000)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id))\n" + + " β”œβ”€ ((((t.id = mi.movie_id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie'))\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (t.production_year > 2000)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ └─ keys: kt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ ((((((mc.movie_id = cc.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id)) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id)) AND (mk.movie_id = cc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('nerd', 'loner', 'alienation', 'dignity'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: k.id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info note]\n" + + " β”‚ β”‚ └─ keys: mk.movie_id\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ CrossJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + + " β”‚ └─ TableAlias(it1)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = cc.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ CrossJoin\n" + + " β”œβ”€ TableAlias(ct)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + " └─ CrossJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie'))\n" + - " β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (cct1.id = cc.status_id)\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('nerd', 'loner', 'alienation', 'dignity'))\n" + - " β”‚ └─ TableAlias(k)\n" + + " β”‚ β”œβ”€ (cct1.kind = 'complete+verified')\n" + + " β”‚ └─ TableAlias(cct1)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'complete+verified')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id status_id]\n" + + " β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ └─ columns: [id kind]\n" + + " └─ TableAlias(cc)\n" + + " └─ Table\n" + + " β”œβ”€ name: complete_cast\n" + + " └─ columns: [movie_id status_id]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(kt.kind) as movie_kind, min(t.title) as complete_nerdy_internet_movie]\n" + @@ -15017,78 +15122,80 @@ WHERE cct1.kind = 'complete+verified' " β”œβ”€ SelectedExprs(MIN(kt.kind), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2000)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id))\n" + + " β”œβ”€ ((((t.id = mi.movie_id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie'))\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (t.production_year > 2000)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ └─ keys: kt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ ((((((mc.movie_id = cc.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id)) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id)) AND (mk.movie_id = cc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('nerd', 'loner', 'alienation', 'dignity'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: k.id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info note]\n" + + " β”‚ β”‚ └─ keys: mk.movie_id\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ CrossJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + + " β”‚ └─ TableAlias(it1)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = cc.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ CrossJoin\n" + + " β”œβ”€ TableAlias(ct)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + " └─ CrossJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie'))\n" + - " β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (cct1.id = cc.status_id)\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('nerd', 'loner', 'alienation', 'dignity'))\n" + - " β”‚ └─ TableAlias(k)\n" + + " β”‚ β”œβ”€ (cct1.kind = 'complete+verified')\n" + + " β”‚ └─ TableAlias(cct1)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'complete+verified')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id status_id]\n" + + " β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ └─ columns: [id kind]\n" + + " └─ TableAlias(cc)\n" + + " └─ Table\n" + + " β”œβ”€ name: complete_cast\n" + + " └─ columns: [movie_id status_id]\n" + "", }, { @@ -15139,161 +15246,159 @@ WHERE cct1.kind = 'complete+verified' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(kt.kind):0!null->movie_kind:0, min(t.title):1!null->complete_us_internet_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(kt.kind:14!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(kt.kind:1!null), MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:13!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:6!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:7!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:10!null\n" + + " β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ └─ mc.movie_id:13!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ cc.movie_id:23\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ └─ 1990 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + + " β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ └─ cc.movie_id:23\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ TUPLE(movie (longtext), tv movie (longtext), video movie (longtext), video game (longtext))\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ β”‚ └─ 1990 (int)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”œβ”€ colSet: (36-47)\n" + + " β”‚ β”œβ”€ tableId: 11\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: title\n" + + " β”‚ └─ columns: [id title kind_id production_year]\n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:6!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:13!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:23\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.id:19!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_id:14!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.id:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.company_type_id:15!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + + " β”‚ β”‚ β”‚ └─ cc.movie_id:23\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ └─ cc.movie_id:23\n" + + " β”‚ β”‚ β”œβ”€ it1.id:16!null\n" + + " β”‚ β”‚ └─ mi.info_type_id:10!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:15!null\n" + - " β”‚ └─ mk.keyword_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:10!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:6!null\n" + - " β”‚ β”‚ └─ cc.movie_id:23\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:16!null\n" + - " β”‚ └─ mi.info_type_id:7!null\n" + + " β”‚ β”œβ”€ mk.movie_id:7!null\n" + + " β”‚ └─ cc.movie_id:23\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [k.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (33-35)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.note LIKE '%internet%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.info:2!null IS NULL\n" + + " β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.info LIKE 'USA:% 199%'\n" + + " β”‚ β”‚ β”‚ └─ mi.info LIKE 'USA:% 200%'\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mk.movie_id:7!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (28-32)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id info note]\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi.movie_id:9!null]\n" + + " β”‚ β”œβ”€ colSet: (23-27)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + + " └─ CrossJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.note LIKE '%internet%'\n" + - " β”‚ β”‚ β”‚ └─ NOT\n" + - " β”‚ β”‚ β”‚ └─ mi.info:2!null IS NULL\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ mi.info LIKE 'USA:% 199%'\n" + - " β”‚ β”‚ └─ mi.info LIKE 'USA:% 200%'\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ └─ release dates (longtext)\n" + + " β”‚ └─ TableAlias(it1)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:10!null\n" + - " β”‚ β”‚ β”‚ └─ cc.movie_id:23\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.id:19!null\n" + - " β”‚ β”‚ └─ mc.company_id:11!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ct.id:18!null\n" + - " β”‚ └─ mc.company_type_id:12!null\n" + - " β”œβ”€ TableAlias(mc)\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ CrossJoin\n" + + " β”œβ”€ TableAlias(ct)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + " └─ CrossJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(movie (longtext), tv movie (longtext), video movie (longtext), video game (longtext))\n" + - " β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ └─ TableAlias(cn)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ release dates (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct1.id:21!null\n" + - " β”‚ └─ cc.status_id:24!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + - " β”‚ β”‚ └─ complete+verified (longtext)\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id status_id]\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ InnerJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ cct1.id:21!null\n" + + " β”‚ └─ cc.status_id:24!null\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + + " β”‚ β”‚ └─ complete+verified (longtext)\n" + + " β”‚ └─ TableAlias(cct1)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ └─ columns: [id kind]\n" + + " └─ TableAlias(cc)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: complete_cast\n" + + " └─ columns: [movie_id status_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(kt.kind) as movie_kind, min(t.title) as complete_us_internet_movie]\n" + @@ -15301,76 +15406,78 @@ WHERE cct1.kind = 'complete+verified' " β”œβ”€ SelectedExprs(MIN(kt.kind), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 1990)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id))\n" + + " β”œβ”€ ((((t.id = mi.movie_id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'tv movie', 'video movie', 'video game'))\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (t.production_year > 1990)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ └─ keys: kt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ ((((((mc.movie_id = cc.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id)) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id)) AND (mk.movie_id = cc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: k.id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((mi.note LIKE '%internet%' AND (NOT(mi.info IS NULL))) AND (mi.info LIKE 'USA:% 199%' OR mi.info LIKE 'USA:% 200%'))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info note]\n" + + " β”‚ β”‚ └─ keys: mk.movie_id\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ CrossJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((mi.note LIKE '%internet%' AND (NOT(mi.info IS NULL))) AND (mi.info LIKE 'USA:% 199%' OR mi.info LIKE 'USA:% 200%'))\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + + " β”‚ └─ TableAlias(it1)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = cc.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ CrossJoin\n" + + " β”œβ”€ TableAlias(ct)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + " └─ CrossJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'tv movie', 'video movie', 'video game'))\n" + - " β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'complete+verified')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id status_id]\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (cct1.id = cc.status_id)\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (cct1.kind = 'complete+verified')\n" + + " β”‚ └─ TableAlias(cct1)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ └─ columns: [id kind]\n" + + " └─ TableAlias(cc)\n" + + " └─ Table\n" + + " β”œβ”€ name: complete_cast\n" + + " └─ columns: [movie_id status_id]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(kt.kind) as movie_kind, min(t.title) as complete_us_internet_movie]\n" + @@ -15378,76 +15485,78 @@ WHERE cct1.kind = 'complete+verified' " β”œβ”€ SelectedExprs(MIN(kt.kind), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 1990)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id))\n" + + " β”œβ”€ ((((t.id = mi.movie_id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'tv movie', 'video movie', 'video game'))\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (t.production_year > 1990)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ └─ keys: kt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ ((((((mc.movie_id = cc.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id)) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id)) AND (mk.movie_id = cc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: k.id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((mi.note LIKE '%internet%' AND (NOT(mi.info IS NULL))) AND (mi.info LIKE 'USA:% 199%' OR mi.info LIKE 'USA:% 200%'))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info note]\n" + + " β”‚ β”‚ └─ keys: mk.movie_id\n" + + " β”‚ └─ TableAlias(mc)\n" + + " β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id company_id company_type_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ CrossJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((mi.note LIKE '%internet%' AND (NOT(mi.info IS NULL))) AND (mi.info LIKE 'USA:% 199%' OR mi.info LIKE 'USA:% 200%'))\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + + " β”‚ └─ TableAlias(it1)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = cc.movie_id) AND (cn.id = mc.company_id)) AND (ct.id = mc.company_type_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ CrossJoin\n" + + " β”œβ”€ TableAlias(ct)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id]\n" + + " β”‚ β”œβ”€ name: company_type\n" + + " β”‚ └─ columns: [id]\n" + " └─ CrossJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'tv movie', 'video movie', 'video game'))\n" + - " β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'complete+verified')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id status_id]\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (cct1.id = cc.status_id)\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (cct1.kind = 'complete+verified')\n" + + " β”‚ └─ TableAlias(cct1)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ └─ columns: [id kind]\n" + + " └─ TableAlias(cc)\n" + + " └─ Table\n" + + " β”œβ”€ name: complete_cast\n" + + " └─ columns: [movie_id status_id]\n" + "", }, { @@ -15506,359 +15615,347 @@ WHERE ci.note IN ('(voice)', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(chn.name):0!null->voiced_char_name:0, min(n.name):1!null->voicing_actress_name:0, min(t.title):2!null->voiced_action_movie_jap_eng:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(chn.name:27!null), MIN(n.name:6!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(chn.name:10!null), MIN(n.name:17!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ n.id:16!null\n" + + " β”‚ └─ an.person_id:28!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:10!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:13!null\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:19!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ ci.movie_id:22!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mk.movie_id:8!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2010 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ rt.id:3!null\n" + - " β”‚ └─ ci.role_id:25!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + - " β”‚ β”‚ └─ actress (longtext)\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ n.id:5!null\n" + - " β”‚ β”‚ └─ ci.person_id:21!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ n.id:5!null\n" + - " β”‚ └─ an.person_id:28!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + - " β”‚ β”‚ β”‚ └─ f (longtext)\n" + - " β”‚ β”‚ └─ n.name LIKE '%An%'\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:13!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:8!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:10!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:8!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:22!null\n" + - " β”‚ β”‚ └─ mk.movie_id:8!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:15!null\n" + - " β”‚ └─ mk.keyword_id:9!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:13!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:10!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:10!null\n" + - " β”‚ β”‚ └─ ci.movie_id:22!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it.id:17!null\n" + - " β”‚ └─ mi.info_type_id:11!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ mi.info:2!null IS NULL\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ mi.info LIKE 'Japan:%201%'\n" + - " β”‚ β”‚ └─ mi.info LIKE 'USA:%201%'\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:13!null\n" + - " β”‚ β”‚ └─ ci.movie_id:22!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:19!null\n" + - " β”‚ └─ mc.company_id:14!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(hero (longtext), martial-arts (longtext), hand-to-hand-combat (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ β”‚ └─ release dates (longtext)\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ chn.id:26!null\n" + - " β”‚ β”‚ └─ ci.person_role_id:23\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + - " β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice: Japanese version) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:21!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id]\n" + + " β”‚ β”‚ β”œβ”€ mc.movie_id:5!null\n" + + " β”‚ β”‚ └─ mk.movie_id:26!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ β”‚ └─ mc.movie_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 2010 (int)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cn.id:3!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (35-39)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ mi.movie_id:19!null\n" + + " β”‚ β”‚ └─ mk.movie_id:26!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it.id:22!null\n" + + " β”‚ β”‚ β”‚ └─ mi.info_type_id:20!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.id:16!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ci.person_id:11!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ rt.id:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ci.role_id:15!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ actress (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice: Japanese version) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [chn.id:9!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (16-22)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ f (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ n.name LIKE '%An%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.info:2!null IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.info LIKE 'Japan:%201%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.info LIKE 'USA:%201%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:12!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (40-44)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ release dates (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ └─ TUPLE(hero (longtext), martial-arts (longtext), hand-to-hand-combat (longtext))\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:24!null]\n" + + " β”‚ β”œβ”€ colSet: (45-47)\n" + + " β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ keys: [ci.person_id:11!null]\n" + + " β”œβ”€ colSet: (1-8)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: aka_name\n" + + " └─ columns: [person_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(chn.name) as voiced_char_name, min(n.name) as voicing_actress_name, min(t.title) as voiced_action_movie_jap_eng]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(chn.name), MIN(n.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((t.id = mi.movie_id) AND (t.id = mc.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2010)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (rt.id = ci.role_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actress')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((n.id = ci.person_id) AND (n.id = an.person_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%An%')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mc.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (ci.movie_id = mk.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id)) AND (it.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%201%' OR mi.info LIKE 'USA:%201%'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = ci.movie_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('hero', 'martial-arts', 'hand-to-hand-combat'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (n.id = an.person_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ ((mc.movie_id = mi.movie_id) AND (mc.movie_id = mk.movie_id))\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (t.id = mc.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 2010)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ (mi.movie_id = mk.movie_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (it.id = mi.info_type_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.id = ci.role_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'actress')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%An%')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%201%' OR mi.info LIKE 'USA:%201%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'release dates')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('hero', 'martial-arts', 'hand-to-hand-combat'))\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id]\n" + + " └─ keys: ci.person_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(chn.name) as voiced_char_name, min(n.name) as voicing_actress_name, min(t.title) as voiced_action_movie_jap_eng]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(chn.name), MIN(n.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((t.id = mi.movie_id) AND (t.id = mc.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2010)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (rt.id = ci.role_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actress')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((n.id = ci.person_id) AND (n.id = an.person_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%An%')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mc.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (ci.movie_id = mk.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id)) AND (it.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%201%' OR mi.info LIKE 'USA:%201%'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = ci.movie_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('hero', 'martial-arts', 'hand-to-hand-combat'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (n.id = an.person_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ ((mc.movie_id = mi.movie_id) AND (mc.movie_id = mk.movie_id))\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (t.id = mc.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (t.production_year > 2010)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ (mi.movie_id = mk.movie_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (it.id = mi.info_type_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.id = ci.role_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'actress')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%An%')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%201%' OR mi.info LIKE 'USA:%201%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'release dates')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('hero', 'martial-arts', 'hand-to-hand-combat'))\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id]\n" + + " └─ keys: ci.person_id\n" + "", }, { @@ -15915,376 +16012,364 @@ WHERE ci.note IN ('(voice)', AND ci.person_id = an.person_id AND chn.id = ci.person_role_id AND k.id = mk.keyword_id; - -`, - ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [min(chn.name):0!null->voiced_char_name:0, min(n.name):1!null->voicing_actress_name:0, min(t.title):2!null->kung_fu_panda:0]\n" + - " └─ GroupBy\n" + - " β”œβ”€ select: MIN(chn.name:28!null), MIN(n.name:6!null), MIN(t.title:1!null)\n" + - " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:10!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:13!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ ci.movie_id:23!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mk.movie_id:8!null\n" + - " β”œβ”€ Filter\n" + + +`, + ExpectedPlan: "Project\n" + + " β”œβ”€ columns: [min(chn.name):0!null->voiced_char_name:0, min(n.name):1!null->voicing_actress_name:0, min(t.title):2!null->kung_fu_panda:0]\n" + + " └─ GroupBy\n" + + " β”œβ”€ select: MIN(chn.name:11!null), MIN(n.name:18!null), MIN(t.title:1!null)\n" + + " β”œβ”€ group: \n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ n.id:17!null\n" + + " β”‚ └─ an.person_id:29!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ β”‚ β”‚ └─ 2010 (int)\n" + - " β”‚ β”‚ β”‚ └─ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + - " β”‚ β”‚ β”‚ └─ Kung Fu Panda (longtext)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ t.title:1!null\n" + - " β”‚ β”‚ └─ Kung Fu PandaΓΏ (longtext)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ rt.id:3!null\n" + - " β”‚ └─ ci.role_id:26!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + - " β”‚ β”‚ └─ actress (longtext)\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ n.id:5!null\n" + - " β”‚ β”‚ └─ ci.person_id:22!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ n.id:5!null\n" + - " β”‚ └─ an.person_id:29!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + - " β”‚ β”‚ β”‚ └─ f (longtext)\n" + - " β”‚ β”‚ └─ n.name LIKE '%An%'\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:13!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:8!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:10!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:8!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:23!null\n" + - " β”‚ β”‚ └─ mk.movie_id:8!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:15!null\n" + - " β”‚ └─ mk.keyword_id:9!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:13!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:10!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:10!null\n" + - " β”‚ β”‚ └─ ci.movie_id:23!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it.id:17!null\n" + - " β”‚ └─ mi.info_type_id:11!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ mi.info:2!null IS NULL\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ mi.info LIKE 'Japan:%201%'\n" + - " β”‚ β”‚ └─ mi.info LIKE 'USA:%201%'\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:13!null\n" + - " β”‚ β”‚ └─ ci.movie_id:23!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:19!null\n" + - " β”‚ └─ mc.company_id:14!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(hero (longtext), martial-arts (longtext), hand-to-hand-combat (longtext), computer-animated-movie (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ β”‚ └─ release dates (longtext)\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + - " β”‚ β”‚ └─ DreamWorks Animation (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ chn.id:27!null\n" + - " β”‚ β”‚ └─ ci.person_role_id:24\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + - " β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice: Japanese version) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:22!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id]\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:6!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:20!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ mc.movie_id:6!null\n" + + " β”‚ β”‚ └─ mk.movie_id:27!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ β”‚ └─ mc.movie_id:6!null\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 2010 (int)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Kung Fu Panda (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Kung Fu PandaΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ DreamWorks Animation (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cn.id:3!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (35-39)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ mi.movie_id:20!null\n" + + " β”‚ β”‚ └─ mk.movie_id:27!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it.id:23!null\n" + + " β”‚ β”‚ β”‚ └─ mi.info_type_id:21!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.id:17!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ci.person_id:12!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ rt.id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ci.role_id:16!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ actress (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice: Japanese version) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [chn.id:10!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (16-22)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ f (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ n.name LIKE '%An%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.info:2!null IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.info LIKE 'Japan:%201%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.info LIKE 'USA:%201%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:13!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (40-44)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ release dates (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ └─ TUPLE(hero (longtext), martial-arts (longtext), hand-to-hand-combat (longtext), computer-animated-movie (longtext))\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:25!null]\n" + + " β”‚ β”œβ”€ colSet: (45-47)\n" + + " β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ keys: [ci.person_id:12!null]\n" + + " β”œβ”€ colSet: (1-8)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: aka_name\n" + + " └─ columns: [person_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(chn.name) as voiced_char_name, min(n.name) as voicing_actress_name, min(t.title) as kung_fu_panda]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(chn.name), MIN(n.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((t.id = mi.movie_id) AND (t.id = mc.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (((t.production_year > 2010) AND (t.title >= 'Kung Fu Panda')) AND (t.title <= 'Kung Fu PandaΓΏ'))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (rt.id = ci.role_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actress')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((n.id = ci.person_id) AND (n.id = an.person_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%An%')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mc.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (ci.movie_id = mk.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id)) AND (it.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%201%' OR mi.info LIKE 'USA:%201%'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = ci.movie_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('hero', 'martial-arts', 'hand-to-hand-combat', 'computer-animated-movie'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((cn.country_code = '[us]') AND (cn.name = 'DreamWorks Animation'))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (n.id = an.person_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ ((mc.movie_id = mi.movie_id) AND (mc.movie_id = mk.movie_id))\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (t.id = mc.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (((t.production_year > 2010) AND (t.title >= 'Kung Fu Panda')) AND (t.title <= 'Kung Fu PandaΓΏ'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((cn.country_code = '[us]') AND (cn.name = 'DreamWorks Animation'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ (mi.movie_id = mk.movie_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (it.id = mi.info_type_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.id = ci.role_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'actress')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%An%')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%201%' OR mi.info LIKE 'USA:%201%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'release dates')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('hero', 'martial-arts', 'hand-to-hand-combat', 'computer-animated-movie'))\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id]\n" + + " └─ keys: ci.person_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(chn.name) as voiced_char_name, min(n.name) as voicing_actress_name, min(t.title) as kung_fu_panda]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(chn.name), MIN(n.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((t.id = mi.movie_id) AND (t.id = mc.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (((t.production_year > 2010) AND (t.title >= 'Kung Fu Panda')) AND (t.title <= 'Kung Fu PandaΓΏ'))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (rt.id = ci.role_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actress')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((n.id = ci.person_id) AND (n.id = an.person_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%An%')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mc.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (ci.movie_id = mk.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id)) AND (it.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%201%' OR mi.info LIKE 'USA:%201%'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = ci.movie_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('hero', 'martial-arts', 'hand-to-hand-combat', 'computer-animated-movie'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'release dates')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((cn.country_code = '[us]') AND (cn.name = 'DreamWorks Animation'))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (n.id = an.person_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ ((mc.movie_id = mi.movie_id) AND (mc.movie_id = mk.movie_id))\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (t.id = mc.movie_id)\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (((t.production_year > 2010) AND (t.title >= 'Kung Fu Panda')) AND (t.title <= 'Kung Fu PandaΓΏ'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((cn.country_code = '[us]') AND (cn.name = 'DreamWorks Animation'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ (mi.movie_id = mk.movie_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (it.id = mi.info_type_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.id = ci.role_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'actress')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%An%')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%201%' OR mi.info LIKE 'USA:%201%'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'release dates')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('hero', 'martial-arts', 'hand-to-hand-combat', 'computer-animated-movie'))\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id]\n" + + " └─ keys: ci.person_id\n" + "", }, { @@ -16335,7 +16420,7 @@ WHERE ci.note IN ('(writer)', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi.info):0!null->movie_budget:0, min(mi_idx.info):1!null->movie_votes:0, min(n.name):2!null->male_writer:0, min(t.title):3!null->violent_movie_title:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi.info:12!null), MIN(mi_idx.info:9!null), MIN(n.name:3!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi.info:14!null), MIN(mi_idx.info:9!null), MIN(n.name:3!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + @@ -16343,129 +16428,130 @@ WHERE ci.note IN ('(writer)', " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:12!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ ci.movie_id:20!null\n" + + " β”‚ β”‚ └─ ci.movie_id:16!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ └─ mk.movie_id:20!null\n" + " β”œβ”€ TableAlias(t)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title]\n" + " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ n.id:2!null\n" + - " β”‚ └─ ci.person_id:19!null\n" + - " β”œβ”€ Filter\n" + + " β”œβ”€ AND\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:16!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:20!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ mi.movie_id:12!null\n" + + " β”‚ β”‚ └─ mk.movie_id:20!null\n" + + " β”‚ └─ Eq\n" + + " β”‚ β”œβ”€ mi_idx.movie_id:7!null\n" + + " β”‚ └─ mk.movie_id:20!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ n.gender:2\n" + - " β”‚ β”‚ └─ m (longtext)\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:20!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:10!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.movie_id:7!null\n" + - " β”‚ β”‚ └─ mk.movie_id:5!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:13!null\n" + - " β”‚ └─ mk.keyword_id:6!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:20!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:10!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:15!null\n" + - " β”‚ └─ mi_idx.info_type_id:8!null\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:20!null\n" + - " β”‚ β”‚ └─ mi.movie_id:10!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:17!null\n" + - " β”‚ └─ mi.info_type_id:11!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ Horror (longtext)\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), blood (longtext), gore (longtext), death (longtext), female-nudity (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ votes (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ genres (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (8,9)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ Filter\n" + - " β”œβ”€ HashIn\n" + - " β”‚ β”œβ”€ ci.note:2\n" + - " β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”‚ β”‚ β”œβ”€ n.id:2!null\n" + + " β”‚ β”‚ └─ ci.person_id:15!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + + " β”‚ β”‚ β”‚ └─ m (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:16!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ mi.movie_id:12!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ votes (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [it2.id:5!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (20-24)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ genres (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (8,9)\n" + + " β”‚ β”‚ β”‚ └─ tableId: 2\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ β”‚ └─ Horror (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [it1.id:10!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (15-19)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ ci.note:2\n" + + " β”‚ β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi.movie_id:12!null]\n" + + " β”‚ β”œβ”€ colSet: (1-7)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ └─ columns: [person_id movie_id note]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ └─ TUPLE(murder (longtext), blood (longtext), gore (longtext), death (longtext), female-nudity (longtext))\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”œβ”€ keys: [k.id:18!null]\n" + + " β”œβ”€ colSet: (25-27)\n" + + " β”œβ”€ tableId: 7\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_keyword\n" + + " └─ columns: [movie_id keyword_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(n.name) as male_writer, min(t.title) as violent_movie_title]\n" + @@ -16479,60 +16565,63 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.gender = 'm')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mi.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info = 'Horror')\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'blood', 'gore', 'death', 'female-nudity'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”œβ”€ (((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (n.gender = 'm')\n" + + " β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ ((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it2.id\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.info = 'Horror')\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it1.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [person_id movie_id note]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'blood', 'gore', 'death', 'female-nudity'))\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”œβ”€ columns: [movie_id keyword_id]\n" + + " └─ keys: k.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(n.name) as male_writer, min(t.title) as violent_movie_title]\n" + @@ -16546,60 +16635,63 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.gender = 'm')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mi.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info = 'Horror')\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'blood', 'gore', 'death', 'female-nudity'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”œβ”€ (((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (n.gender = 'm')\n" + + " β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ ((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it2.id\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.info = 'Horror')\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it1.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [person_id movie_id note]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'blood', 'gore', 'death', 'female-nudity'))\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”œβ”€ columns: [movie_id keyword_id]\n" + + " └─ keys: k.id\n" + "", }, { @@ -16652,7 +16744,7 @@ WHERE ci.note IN ('(writer)', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi.info):0!null->movie_budget:0, min(mi_idx.info):1!null->movie_votes:0, min(n.name):2!null->male_writer:0, min(t.title):3!null->violent_movie_title:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi.info:13!null), MIN(mi_idx.info:10!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi.info:15!null), MIN(mi_idx.info:10!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + @@ -16660,16 +16752,16 @@ WHERE ci.note IN ('(writer)', " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:11!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:13!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ ci.movie_id:21!null\n" + + " β”‚ β”‚ └─ ci.movie_id:17!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mk.movie_id:6!null\n" + + " β”‚ └─ mk.movie_id:21!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + @@ -16688,113 +16780,114 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ n.id:3!null\n" + - " β”‚ └─ ci.person_id:20!null\n" + - " β”œβ”€ Filter\n" + + " β”œβ”€ AND\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:17!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:21!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ mi.movie_id:13!null\n" + + " β”‚ β”‚ └─ mk.movie_id:21!null\n" + + " β”‚ └─ Eq\n" + + " β”‚ β”œβ”€ mi_idx.movie_id:8!null\n" + + " β”‚ └─ mk.movie_id:21!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ n.gender:2\n" + - " β”‚ β”‚ └─ m (longtext)\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:21!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:11!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.movie_id:8!null\n" + - " β”‚ β”‚ └─ mk.movie_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:14!null\n" + - " β”‚ └─ mk.keyword_id:7!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:21!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:11!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:16!null\n" + - " β”‚ └─ mi_idx.info_type_id:9!null\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:21!null\n" + - " β”‚ β”‚ └─ mi.movie_id:11!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:18!null\n" + - " β”‚ └─ mi.info_type_id:12!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ Horror (longtext)\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), blood (longtext), gore (longtext), death (longtext), female-nudity (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ votes (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ genres (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (8,9)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ Filter\n" + - " β”œβ”€ HashIn\n" + - " β”‚ β”œβ”€ ci.note:2\n" + - " β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”‚ β”‚ β”œβ”€ n.id:3!null\n" + + " β”‚ β”‚ └─ ci.person_id:16!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + + " β”‚ β”‚ β”‚ └─ m (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:17!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ mi.movie_id:13!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ votes (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [it2.id:6!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (20-24)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ genres (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (8,9)\n" + + " β”‚ β”‚ β”‚ └─ tableId: 2\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ β”‚ └─ Horror (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [it1.id:11!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (15-19)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ ci.note:2\n" + + " β”‚ β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi.movie_id:13!null]\n" + + " β”‚ β”œβ”€ colSet: (1-7)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ └─ columns: [person_id movie_id note]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ └─ TUPLE(murder (longtext), blood (longtext), gore (longtext), death (longtext), female-nudity (longtext))\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”œβ”€ keys: [k.id:19!null]\n" + + " β”œβ”€ colSet: (25-27)\n" + + " β”œβ”€ tableId: 7\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_keyword\n" + + " └─ columns: [movie_id keyword_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(n.name) as male_writer, min(t.title) as violent_movie_title]\n" + @@ -16810,60 +16903,63 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.gender = 'm')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mi.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info = 'Horror')\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'blood', 'gore', 'death', 'female-nudity'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”œβ”€ (((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (n.gender = 'm')\n" + + " β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ ((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it2.id\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.info = 'Horror')\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it1.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [person_id movie_id note]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'blood', 'gore', 'death', 'female-nudity'))\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”œβ”€ columns: [movie_id keyword_id]\n" + + " └─ keys: k.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(n.name) as male_writer, min(t.title) as violent_movie_title]\n" + @@ -16879,60 +16975,63 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.gender = 'm')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mi.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info = 'Horror')\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'blood', 'gore', 'death', 'female-nudity'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”œβ”€ (((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (n.gender = 'm')\n" + + " β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ ((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it2.id\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.info = 'Horror')\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it1.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [person_id movie_id note]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'blood', 'gore', 'death', 'female-nudity'))\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”œβ”€ columns: [movie_id keyword_id]\n" + + " └─ keys: k.id\n" + "", }, { @@ -16990,7 +17089,7 @@ WHERE ci.note IN ('(writer)', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi.info):0!null->movie_budget:0, min(mi_idx.info):1!null->movie_votes:0, min(n.name):2!null->male_writer:0, min(t.title):3!null->violent_movie_title:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi.info:12!null), MIN(mi_idx.info:9!null), MIN(n.name:3!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi.info:14!null), MIN(mi_idx.info:9!null), MIN(n.name:3!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + @@ -16998,129 +17097,130 @@ WHERE ci.note IN ('(writer)', " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:12!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ ci.movie_id:20!null\n" + + " β”‚ β”‚ └─ ci.movie_id:16!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ └─ mk.movie_id:20!null\n" + " β”œβ”€ TableAlias(t)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title]\n" + " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ n.id:2!null\n" + - " β”‚ └─ ci.person_id:19!null\n" + - " β”œβ”€ Filter\n" + + " β”œβ”€ AND\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:16!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:20!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ mi.movie_id:12!null\n" + + " β”‚ β”‚ └─ mk.movie_id:20!null\n" + + " β”‚ └─ Eq\n" + + " β”‚ β”œβ”€ mi_idx.movie_id:7!null\n" + + " β”‚ └─ mk.movie_id:20!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ n.gender:2\n" + - " β”‚ β”‚ └─ m (longtext)\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:20!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:10!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.movie_id:7!null\n" + - " β”‚ β”‚ └─ mk.movie_id:5!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:13!null\n" + - " β”‚ └─ mk.keyword_id:6!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:20!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:10!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:15!null\n" + - " β”‚ └─ mi_idx.info_type_id:8!null\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:20!null\n" + - " β”‚ β”‚ └─ mi.movie_id:10!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:17!null\n" + - " β”‚ └─ mi.info_type_id:11!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Horror (longtext), Action (longtext), Sci-Fi (longtext), Thriller (longtext), Crime (longtext), War (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), violence (longtext), blood (longtext), gore (longtext), death (longtext), female-nudity (longtext), hospital (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ votes (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ genres (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (8,9)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ Filter\n" + - " β”œβ”€ HashIn\n" + - " β”‚ β”œβ”€ ci.note:2\n" + - " β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”‚ β”‚ β”œβ”€ n.id:2!null\n" + + " β”‚ β”‚ └─ ci.person_id:15!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + + " β”‚ β”‚ β”‚ └─ m (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:16!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ mi.movie_id:12!null\n" + + " β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ votes (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [it2.id:5!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (20-24)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ genres (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (8,9)\n" + + " β”‚ β”‚ β”‚ └─ tableId: 2\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ β”‚ └─ TUPLE(Horror (longtext), Action (longtext), Sci-Fi (longtext), Thriller (longtext), Crime (longtext), War (longtext))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [it1.id:10!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (15-19)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ ci.note:2\n" + + " β”‚ β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi.movie_id:12!null]\n" + + " β”‚ β”œβ”€ colSet: (1-7)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ └─ columns: [person_id movie_id note]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ └─ TUPLE(murder (longtext), violence (longtext), blood (longtext), gore (longtext), death (longtext), female-nudity (longtext), hospital (longtext))\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”œβ”€ keys: [k.id:18!null]\n" + + " β”œβ”€ colSet: (25-27)\n" + + " β”œβ”€ tableId: 7\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_keyword\n" + + " └─ columns: [movie_id keyword_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(n.name) as male_writer, min(t.title) as violent_movie_title]\n" + @@ -17134,60 +17234,63 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.gender = 'm')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mi.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Action', 'Sci-Fi', 'Thriller', 'Crime', 'War'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”œβ”€ (((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (n.gender = 'm')\n" + + " β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ ((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it2.id\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Action', 'Sci-Fi', 'Thriller', 'Crime', 'War'))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it1.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [person_id movie_id note]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”œβ”€ columns: [movie_id keyword_id]\n" + + " └─ keys: k.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(n.name) as male_writer, min(t.title) as violent_movie_title]\n" + @@ -17201,60 +17304,63 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.gender = 'm')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mi.movie_id) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Action', 'Sci-Fi', 'Thriller', 'Crime', 'War'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ Filter\n" + - " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”œβ”€ (((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (n.gender = 'm')\n" + + " β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ └─ InnerJoin\n" + + " β”‚ β”œβ”€ ((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it2.id\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Action', 'Sci-Fi', 'Thriller', 'Crime', 'War'))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it1.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [person_id movie_id note]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”œβ”€ columns: [movie_id keyword_id]\n" + + " └─ keys: k.id\n" + "", }, { @@ -17316,174 +17422,166 @@ WHERE cct1.kind = 'cast' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(chn.name):0!null->character_name:0, min(mi_idx.info):1!null->rating:0, min(n.name):2!null->playing_actor:0, min(t.title):3!null->complete_hero_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(chn.name:21!null), MIN(mi_idx.info:10!null), MIN(n.name:5!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(chn.name:24!null), MIN(mi_idx.info:22!null), MIN(n.name:7!null), MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:11!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:6!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:11!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ ci.movie_id:18!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ β”‚ └─ ci.movie_id:9!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ cc.movie_id:26\n" + + " β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ └─ cc.movie_id:13\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mi_idx.movie_id:8!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ └─ 2000 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + + " β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ └─ mi_idx.movie_id:20!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ movie (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ β”‚ └─ 2000 (int)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”œβ”€ colSet: (47-58)\n" + + " β”‚ β”œβ”€ tableId: 12\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: title\n" + + " β”‚ └─ columns: [id title kind_id production_year]\n" + " └─ InnerJoin\n" + " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ n.id:4!null\n" + - " β”‚ └─ ci.person_id:17!null\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ci.movie_id:18!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ cc.movie_id:26\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:6!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:13!null\n" + - " β”‚ └─ mk.keyword_id:7!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:18!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cc.movie_id:26\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:15!null\n" + - " β”‚ └─ mi_idx.info_type_id:9!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + - " β”‚ β”‚ └─ 7.0 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ movie (longtext)\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(superhero (longtext), marvel-comics (longtext), based-on-comic (longtext), tv-special (longtext), fight (longtext), violence (longtext), magnet (longtext), web (longtext), claw (longtext), laser (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:18!null\n" + - " β”‚ β”‚ └─ cc.movie_id:26\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ chn.id:20!null\n" + - " β”‚ └─ ci.person_role_id:19\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id person_role_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ chn.name:1!null IS NULL\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ chn.name LIKE '%man%'\n" + - " β”‚ β”‚ └─ chn.name LIKE '%Man%'\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct2.id:22!null\n" + - " β”‚ └─ cc.status_id:28!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct1.id:24!null\n" + - " β”‚ └─ cc.subject_id:27!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + - " β”‚ β”‚ └─ cast (longtext)\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ β”œβ”€ columns: [id kind]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”œβ”€ k.id:27!null\n" + + " β”‚ └─ mk.keyword_id:12!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it2.id:25!null\n" + + " β”‚ β”‚ └─ mi_idx.info_type_id:21!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ chn.id:23!null\n" + + " β”‚ β”‚ β”‚ └─ ci.person_role_id:10\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:11!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:20!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.id:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.status_id:15!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.id:16!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.subject_id:14!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [n.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (16-22)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:9!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (35-37)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:9!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-4)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cast (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (7,8)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 7.0 (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:9!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (30-34)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ └─ chn.name:1!null IS NULL\n" + + " β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”œβ”€ chn.name LIKE '%man%'\n" + + " β”‚ β”‚ β”‚ └─ chn.name LIKE '%Man%'\n" + + " β”‚ β”‚ └─ TableAlias(chn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ └─ TableAlias(it2)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ └─ TUPLE(superhero (longtext), marvel-comics (longtext), based-on-comic (longtext), tv-special (longtext), fight (longtext), violence (longtext), magnet (longtext), web (longtext), claw (longtext), laser (longtext))\n" + + " └─ TableAlias(k)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(chn.name) as character_name, min(mi_idx.info) as rating, min(n.name) as playing_actor, min(t.title) as complete_hero_movie]\n" + @@ -17491,87 +17589,92 @@ WHERE cct1.kind = 'cast' " β”œβ”€ SelectedExprs(MIN(chn.name), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mk.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = cc.movie_id)) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2000)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = ci.movie_id) AND (mk.movie_id = cc.movie_id)) AND (mk.movie_id = mi_idx.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi_idx.movie_id) AND (cc.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '7.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence', 'magnet', 'web', 'claw', 'laser'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = cc.movie_id) AND (chn.id = ci.person_role_id))\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id person_role_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(chn.name IS NULL)) AND (chn.name LIKE '%man%' OR chn.name LIKE '%Man%'))\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”œβ”€ ((((t.id = mk.movie_id) AND (t.id = ci.movie_id)) AND (t.id = cc.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (t.production_year > 2000)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ └─ keys: kt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (k.id = mk.keyword_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mk.movie_id = mi_idx.movie_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi_idx.info > '7.0')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((NOT(chn.name IS NULL)) AND (chn.name LIKE '%man%' OR chn.name LIKE '%Man%'))\n" + + " β”‚ β”‚ └─ TableAlias(chn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ └─ TableAlias(it2)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword HASH IN ('superhero', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence', 'magnet', 'web', 'claw', 'laser'))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(chn.name) as character_name, min(mi_idx.info) as rating, min(n.name) as playing_actor, min(t.title) as complete_hero_movie]\n" + @@ -17579,87 +17682,92 @@ WHERE cct1.kind = 'cast' " β”œβ”€ SelectedExprs(MIN(chn.name), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mk.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = cc.movie_id)) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2000)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = ci.movie_id) AND (mk.movie_id = cc.movie_id)) AND (mk.movie_id = mi_idx.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi_idx.movie_id) AND (cc.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '7.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence', 'magnet', 'web', 'claw', 'laser'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = cc.movie_id) AND (chn.id = ci.person_role_id))\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id person_role_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(chn.name IS NULL)) AND (chn.name LIKE '%man%' OR chn.name LIKE '%Man%'))\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”œβ”€ ((((t.id = mk.movie_id) AND (t.id = ci.movie_id)) AND (t.id = cc.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (t.production_year > 2000)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ └─ keys: kt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (k.id = mk.keyword_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mk.movie_id = mi_idx.movie_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi_idx.info > '7.0')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((NOT(chn.name IS NULL)) AND (chn.name LIKE '%man%' OR chn.name LIKE '%Man%'))\n" + + " β”‚ β”‚ └─ TableAlias(chn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ └─ TableAlias(it2)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword HASH IN ('superhero', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence', 'magnet', 'web', 'claw', 'laser'))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", }, { @@ -17714,174 +17822,166 @@ WHERE cct1.kind = 'cast' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(chn.name):0!null->character_name:0, min(mi_idx.info):1!null->rating:0, min(t.title):2!null->complete_hero_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(chn.name:20!null), MIN(mi_idx.info:9!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(chn.name:23!null), MIN(mi_idx.info:21!null), MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:10!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ ci.movie_id:17!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ β”‚ └─ ci.movie_id:8!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ cc.movie_id:25\n" + + " β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ └─ cc.movie_id:12\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mi_idx.movie_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ └─ 2005 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ n.id:4!null\n" + - " β”‚ └─ ci.person_id:16!null\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ci.movie_id:17!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ cc.movie_id:25\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:12!null\n" + - " β”‚ └─ mk.keyword_id:6!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:17!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cc.movie_id:25\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:14!null\n" + - " β”‚ └─ mi_idx.info_type_id:8!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + - " β”‚ β”‚ └─ 8.0 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ movie (longtext)\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(superhero (longtext), marvel-comics (longtext), based-on-comic (longtext), fight (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:17!null\n" + - " β”‚ β”‚ └─ cc.movie_id:25\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ chn.id:19!null\n" + - " β”‚ └─ ci.person_role_id:18\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id person_role_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ chn.name:1!null IS NULL\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ chn.name LIKE '%man%'\n" + - " β”‚ β”‚ └─ chn.name LIKE '%Man%'\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct2.id:21!null\n" + - " β”‚ └─ cc.status_id:27!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct1.id:23!null\n" + - " β”‚ └─ cc.subject_id:26!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + - " β”‚ β”‚ └─ cast (longtext)\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ β”œβ”€ columns: [id kind]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ └─ mi_idx.movie_id:19!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ movie (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ β”‚ └─ 2005 (int)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”œβ”€ colSet: (47-58)\n" + + " β”‚ β”œβ”€ tableId: 12\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: title\n" + + " β”‚ └─ columns: [id title kind_id production_year]\n" + + " └─ InnerJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ k.id:26!null\n" + + " β”‚ └─ mk.keyword_id:11!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it2.id:24!null\n" + + " β”‚ β”‚ └─ mi_idx.info_type_id:20!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ chn.id:22!null\n" + + " β”‚ β”‚ β”‚ └─ ci.person_role_id:9\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:19!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.id:17!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.status_id:14!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.id:15!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.subject_id:13!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [n.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (16-22)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:8!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (35-37)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:8!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-4)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cast (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (7,8)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 8.0 (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:8!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (30-34)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ └─ chn.name:1!null IS NULL\n" + + " β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”œβ”€ chn.name LIKE '%man%'\n" + + " β”‚ β”‚ β”‚ └─ chn.name LIKE '%Man%'\n" + + " β”‚ β”‚ └─ TableAlias(chn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ └─ TableAlias(it2)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ └─ TUPLE(superhero (longtext), marvel-comics (longtext), based-on-comic (longtext), fight (longtext))\n" + + " └─ TableAlias(k)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(chn.name) as character_name, min(mi_idx.info) as rating, min(t.title) as complete_hero_movie]\n" + @@ -17889,87 +17989,92 @@ WHERE cct1.kind = 'cast' " β”œβ”€ SelectedExprs(MIN(chn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mk.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = cc.movie_id)) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = ci.movie_id) AND (mk.movie_id = cc.movie_id)) AND (mk.movie_id = mi_idx.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi_idx.movie_id) AND (cc.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '8.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'marvel-comics', 'based-on-comic', 'fight'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = cc.movie_id) AND (chn.id = ci.person_role_id))\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id person_role_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(chn.name IS NULL)) AND (chn.name LIKE '%man%' OR chn.name LIKE '%Man%'))\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”œβ”€ ((((t.id = mk.movie_id) AND (t.id = ci.movie_id)) AND (t.id = cc.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (t.production_year > 2005)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ └─ keys: kt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (k.id = mk.keyword_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mk.movie_id = mi_idx.movie_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi_idx.info > '8.0')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((NOT(chn.name IS NULL)) AND (chn.name LIKE '%man%' OR chn.name LIKE '%Man%'))\n" + + " β”‚ β”‚ └─ TableAlias(chn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ └─ TableAlias(it2)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword HASH IN ('superhero', 'marvel-comics', 'based-on-comic', 'fight'))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(chn.name) as character_name, min(mi_idx.info) as rating, min(t.title) as complete_hero_movie]\n" + @@ -17977,87 +18082,92 @@ WHERE cct1.kind = 'cast' " β”œβ”€ SelectedExprs(MIN(chn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mk.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = cc.movie_id)) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = ci.movie_id) AND (mk.movie_id = cc.movie_id)) AND (mk.movie_id = mi_idx.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi_idx.movie_id) AND (cc.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '8.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'marvel-comics', 'based-on-comic', 'fight'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = cc.movie_id) AND (chn.id = ci.person_role_id))\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id person_role_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(chn.name IS NULL)) AND (chn.name LIKE '%man%' OR chn.name LIKE '%Man%'))\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”œβ”€ ((((t.id = mk.movie_id) AND (t.id = ci.movie_id)) AND (t.id = cc.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (t.production_year > 2005)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ └─ keys: kt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (k.id = mk.keyword_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mk.movie_id = mi_idx.movie_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi_idx.info > '8.0')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((NOT(chn.name IS NULL)) AND (chn.name LIKE '%man%' OR chn.name LIKE '%Man%'))\n" + + " β”‚ β”‚ └─ TableAlias(chn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ └─ TableAlias(it2)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword HASH IN ('superhero', 'marvel-comics', 'based-on-comic', 'fight'))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", }, { @@ -18117,170 +18227,162 @@ WHERE cct1.kind = 'cast' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(chn.name):0!null->character_name:0, min(mi_idx.info):1!null->rating:0, min(t.title):2!null->complete_hero_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(chn.name:20!null), MIN(mi_idx.info:9!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(chn.name:23!null), MIN(mi_idx.info:21!null), MIN(t.title:3!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:10!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ ci.movie_id:17!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ β”‚ └─ ci.movie_id:8!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ cc.movie_id:25\n" + + " β”‚ β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ β”‚ └─ cc.movie_id:12\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mi_idx.movie_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ └─ 2000 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + + " β”‚ β”œβ”€ t.id:2!null\n" + + " β”‚ └─ mi_idx.movie_id:19!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ movie (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ β”‚ └─ 2000 (int)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ keys: [kt.id:0!null]\n" + + " β”‚ β”œβ”€ colSet: (47-58)\n" + + " β”‚ β”œβ”€ tableId: 12\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: title\n" + + " β”‚ └─ columns: [id title kind_id production_year]\n" + " └─ InnerJoin\n" + " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ n.id:4!null\n" + - " β”‚ └─ ci.person_id:16!null\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ci.movie_id:17!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ cc.movie_id:25\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:12!null\n" + - " β”‚ └─ mk.keyword_id:6!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:17!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cc.movie_id:25\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:14!null\n" + - " β”‚ └─ mi_idx.info_type_id:8!null\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ movie (longtext)\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(superhero (longtext), marvel-comics (longtext), based-on-comic (longtext), tv-special (longtext), fight (longtext), violence (longtext), magnet (longtext), web (longtext), claw (longtext), laser (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:17!null\n" + - " β”‚ β”‚ └─ cc.movie_id:25\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ chn.id:19!null\n" + - " β”‚ └─ ci.person_role_id:18\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id person_role_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ chn.name:1!null IS NULL\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ chn.name LIKE '%man%'\n" + - " β”‚ β”‚ └─ chn.name LIKE '%Man%'\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct2.id:21!null\n" + - " β”‚ └─ cc.status_id:27!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct1.id:23!null\n" + - " β”‚ └─ cc.subject_id:26!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + - " β”‚ β”‚ └─ cast (longtext)\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ β”œβ”€ columns: [id kind]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”œβ”€ k.id:26!null\n" + + " β”‚ └─ mk.keyword_id:11!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it2.id:24!null\n" + + " β”‚ β”‚ └─ mi_idx.info_type_id:20!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ chn.id:22!null\n" + + " β”‚ β”‚ β”‚ └─ ci.person_role_id:9\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:19!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.id:17!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.status_id:14!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.id:15!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.subject_id:13!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [n.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (16-22)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:8!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (35-37)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:8!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-4)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cast (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (7,8)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:8!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (30-34)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ └─ chn.name:1!null IS NULL\n" + + " β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”œβ”€ chn.name LIKE '%man%'\n" + + " β”‚ β”‚ β”‚ └─ chn.name LIKE '%Man%'\n" + + " β”‚ β”‚ └─ TableAlias(chn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ └─ TableAlias(it2)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ └─ TUPLE(superhero (longtext), marvel-comics (longtext), based-on-comic (longtext), tv-special (longtext), fight (longtext), violence (longtext), magnet (longtext), web (longtext), claw (longtext), laser (longtext))\n" + + " └─ TableAlias(k)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(chn.name) as character_name, min(mi_idx.info) as rating, min(t.title) as complete_hero_movie]\n" + @@ -18288,85 +18390,90 @@ WHERE cct1.kind = 'cast' " β”œβ”€ SelectedExprs(MIN(chn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mk.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = cc.movie_id)) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2000)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = ci.movie_id) AND (mk.movie_id = cc.movie_id)) AND (mk.movie_id = mi_idx.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi_idx.movie_id) AND (cc.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence', 'magnet', 'web', 'claw', 'laser'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = cc.movie_id) AND (chn.id = ci.person_role_id))\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id person_role_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(chn.name IS NULL)) AND (chn.name LIKE '%man%' OR chn.name LIKE '%Man%'))\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”œβ”€ ((((t.id = mk.movie_id) AND (t.id = ci.movie_id)) AND (t.id = cc.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (t.production_year > 2000)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ └─ keys: kt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (k.id = mk.keyword_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mk.movie_id = mi_idx.movie_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((NOT(chn.name IS NULL)) AND (chn.name LIKE '%man%' OR chn.name LIKE '%Man%'))\n" + + " β”‚ β”‚ └─ TableAlias(chn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ └─ TableAlias(it2)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword HASH IN ('superhero', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence', 'magnet', 'web', 'claw', 'laser'))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(chn.name) as character_name, min(mi_idx.info) as rating, min(t.title) as complete_hero_movie]\n" + @@ -18374,85 +18481,90 @@ WHERE cct1.kind = 'cast' " β”œβ”€ SelectedExprs(MIN(chn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((((kt.id = t.kind_id) AND (t.id = mk.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = cc.movie_id)) AND (t.id = mi_idx.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2000)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.movie_id = ci.movie_id) AND (mk.movie_id = cc.movie_id)) AND (mk.movie_id = mi_idx.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi_idx.movie_id) AND (cc.movie_id = mi_idx.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind = 'movie')\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence', 'magnet', 'web', 'claw', 'laser'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = cc.movie_id) AND (chn.id = ci.person_role_id))\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id person_role_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(chn.name IS NULL)) AND (chn.name LIKE '%man%' OR chn.name LIKE '%Man%'))\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”œβ”€ ((((t.id = mk.movie_id) AND (t.id = ci.movie_id)) AND (t.id = cc.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (kt.kind = 'movie')\n" + + " β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (t.production_year > 2000)\n" + + " β”‚ └─ TableAlias(t)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id production_year]\n" + + " β”‚ └─ keys: kt.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (k.id = mk.keyword_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mk.movie_id = mi_idx.movie_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.kind LIKE '%complete%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((NOT(chn.name IS NULL)) AND (chn.name LIKE '%man%' OR chn.name LIKE '%Man%'))\n" + + " β”‚ β”‚ └─ TableAlias(chn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ └─ TableAlias(it2)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ Filter\n" + + " β”œβ”€ (k.keyword HASH IN ('superhero', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence', 'magnet', 'web', 'claw', 'laser'))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " β”œβ”€ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", }, { @@ -18513,378 +18625,364 @@ WHERE cct1.kind IN ('cast', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->producing_company:0, min(lt.link):1!null->link_type:0, min(t.title):2!null->complete_western_sequel:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:20!null), MIN(lt.link:14!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:15!null), MIN(lt.link:7!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:27!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:3\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:9!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:27!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:7!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ ml.movie_id:8!null\n" + + " β”‚ β”‚ └─ mi.movie_id:27!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ cc.movie_id:26\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ β”‚ └─ 1950 (smallint)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2000 (smallint)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.id:13!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ml.link_type_id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:9!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ └─ mi.movie_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ └─ cc.movie_id:26\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.keyword_id:6!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ k.id:15!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:9!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ └─ mi.movie_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ └─ cc.movie_id:26\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:9!null\n" + - " β”‚ β”‚ └─ mi.movie_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi.movie_id:7!null\n" + - " β”‚ └─ cc.movie_id:26\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:1!null\n" + - " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Germany (longtext), Swedish (longtext), German (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.company_type_id:11!null\n" + - " β”‚ β”‚ β”‚ └─ ct.id:17!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_id:10!null\n" + - " β”‚ β”‚ └─ cn.id:19!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:9!null\n" + - " β”‚ └─ cc.movie_id:26\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note:3 IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ sequel (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ β”‚ └─ production companies (longtext)\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ β”‚ β”‚ └─ [pl] (longtext)\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ cn.name LIKE '%Film%'\n" + - " β”‚ β”‚ └─ cn.name LIKE '%Warner%'\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct2.id:22!null\n" + - " β”‚ └─ cc.status_id:28!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + - " β”‚ β”‚ └─ complete (longtext)\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct1.id:24!null\n" + - " β”‚ └─ cc.subject_id:27!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(cast (longtext), crew (longtext))\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ β”œβ”€ columns: [id kind]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + - "", - ExpectedEstimates: "Project\n" + - " β”œβ”€ columns: [min(cn.name) as producing_company, min(lt.link) as link_type, min(t.title) as complete_western_sequel]\n" + - " └─ GroupBy\n" + - " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(lt.link), MIN(t.title))\n" + - " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((ml.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id)) AND (mi.movie_id = t.id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year >= 1950) AND (t.production_year <= 2000))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = mi.movie_id)) AND (ml.movie_id = cc.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = mi.movie_id)) AND (mk.movie_id = cc.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi.movie_id) AND (mi.movie_id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Germany', 'Swedish', 'German'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.company_type_id = ct.id) AND (mc.company_id = cn.id)) AND (mc.movie_id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct2.kind = 'complete')\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind HASH IN ('cast', 'crew'))\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”œβ”€ mi.movie_id:27!null\n" + + " β”‚ └─ t.id:0!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ mk.keyword_id:11!null\n" + + " β”‚ β”‚ └─ k.id:25!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cct2.id:23!null\n" + + " β”‚ β”‚ β”‚ └─ cc.status_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.movie_id:17!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.id:12!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.subject_id:4!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1950 (smallint)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 2000 (smallint)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [t.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-4)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [lt.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (36-39)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 11\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_link\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ml.movie_id:8!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (33-35)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(cast (longtext), crew (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.company_type_id:19!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ct.id:21!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ [pl] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name LIKE '%Film%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cn.name LIKE '%Warner%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note:3 IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cn.id:14!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (23-27)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ complete (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”œβ”€ columns: [id kind]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (7,8)\n" + + " β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ └─ sequel (longtext)\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ mi.info:1!null\n" + + " β”‚ └─ TUPLE(Sweden (longtext), Germany (longtext), Swedish (longtext), German (longtext))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.movie_id]\n" + + " β”œβ”€ keys: [mc.movie_id:17!null]\n" + + " β”œβ”€ colSet: (28-32)\n" + + " β”œβ”€ tableId: 9\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_info\n" + + " └─ columns: [movie_id info]\n" + + "", + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [min(cn.name) as producing_company, min(lt.link) as link_type, min(t.title) as complete_western_sequel]\n" + + " └─ GroupBy\n" + + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(lt.link), MIN(t.title))\n" + + " β”œβ”€ Grouping()\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((mi.movie_id = cc.movie_id) AND (mk.movie_id = mi.movie_id)) AND (ml.movie_id = mi.movie_id)) AND (mi.movie_id = t.id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mk.movie_id = mc.movie_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ml.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 1950) AND (t.production_year <= 2000))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ml.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind HASH IN ('cast', 'crew'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mc.company_type_id = ct.id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cct2.kind = 'complete')\n" + + " β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ Filter\n" + + " β”œβ”€ (mi.info HASH IN ('Sweden', 'Germany', 'Swedish', 'German'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.movie_id]\n" + + " β”œβ”€ columns: [movie_id info]\n" + + " └─ keys: mc.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as producing_company, min(lt.link) as link_type, min(t.title) as complete_western_sequel]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(lt.link), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((ml.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id)) AND (mi.movie_id = t.id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year >= 1950) AND (t.production_year <= 2000))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = mi.movie_id)) AND (ml.movie_id = cc.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = mi.movie_id)) AND (mk.movie_id = cc.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi.movie_id) AND (mi.movie_id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Germany', 'Swedish', 'German'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.company_type_id = ct.id) AND (mc.company_id = cn.id)) AND (mc.movie_id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct2.kind = 'complete')\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind HASH IN ('cast', 'crew'))\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((mi.movie_id = cc.movie_id) AND (mk.movie_id = mi.movie_id)) AND (ml.movie_id = mi.movie_id)) AND (mi.movie_id = t.id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mk.movie_id = mc.movie_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ml.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 1950) AND (t.production_year <= 2000))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ml.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind HASH IN ('cast', 'crew'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mc.company_type_id = ct.id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cct2.kind = 'complete')\n" + + " β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ Filter\n" + + " β”œβ”€ (mi.info HASH IN ('Sweden', 'Germany', 'Swedish', 'German'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.movie_id]\n" + + " β”œβ”€ columns: [movie_id info]\n" + + " └─ keys: mc.movie_id\n" + "", }, { @@ -18945,374 +19043,360 @@ WHERE cct1.kind IN ('cast', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->producing_company:0, min(lt.link):1!null->link_type:0, min(t.title):2!null->complete_western_sequel:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:20!null), MIN(lt.link:14!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:15!null), MIN(lt.link:7!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:27!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:3\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:9!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:27!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:7!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ ml.movie_id:8!null\n" + + " β”‚ β”‚ └─ mi.movie_id:27!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ cc.movie_id:26\n" + - " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ mi.movie_id:27!null\n" + + " β”‚ └─ t.id:0!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 1998 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.id:13!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ml.link_type_id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:9!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ └─ mi.movie_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ └─ cc.movie_id:26\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.keyword_id:6!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ k.id:15!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:9!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ └─ mi.movie_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ └─ cc.movie_id:26\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:9!null\n" + - " β”‚ β”‚ └─ mi.movie_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi.movie_id:7!null\n" + - " β”‚ └─ cc.movie_id:26\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:1!null\n" + - " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Germany (longtext), Swedish (longtext), German (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.company_type_id:11!null\n" + - " β”‚ β”‚ β”‚ └─ ct.id:17!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_id:10!null\n" + - " β”‚ β”‚ └─ cn.id:19!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:9!null\n" + - " β”‚ └─ cc.movie_id:26\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note:3 IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ sequel (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ β”‚ └─ production companies (longtext)\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ β”‚ β”‚ └─ [pl] (longtext)\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ cn.name LIKE '%Film%'\n" + - " β”‚ β”‚ └─ cn.name LIKE '%Warner%'\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct2.id:22!null\n" + - " β”‚ └─ cc.status_id:28!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + - " β”‚ β”‚ └─ complete (longtext)\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct1.id:24!null\n" + - " β”‚ └─ cc.subject_id:27!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(cast (longtext), crew (longtext))\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ β”œβ”€ columns: [id kind]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”œβ”€ mk.keyword_id:11!null\n" + + " β”‚ β”‚ └─ k.id:25!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cct2.id:23!null\n" + + " β”‚ β”‚ β”‚ └─ cc.status_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.movie_id:17!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.id:12!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.subject_id:4!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1998 (int)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [t.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-4)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [lt.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (36-39)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 11\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_link\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ml.movie_id:8!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (33-35)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(cast (longtext), crew (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.company_type_id:19!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ct.id:21!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ [pl] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name LIKE '%Film%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cn.name LIKE '%Warner%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note:3 IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cn.id:14!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (23-27)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ complete (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”œβ”€ columns: [id kind]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (7,8)\n" + + " β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ └─ sequel (longtext)\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ mi.info:1!null\n" + + " β”‚ └─ TUPLE(Sweden (longtext), Germany (longtext), Swedish (longtext), German (longtext))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.movie_id]\n" + + " β”œβ”€ keys: [mc.movie_id:17!null]\n" + + " β”œβ”€ colSet: (28-32)\n" + + " β”œβ”€ tableId: 9\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_info\n" + + " └─ columns: [movie_id info]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as producing_company, min(lt.link) as link_type, min(t.title) as complete_western_sequel]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(lt.link), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((ml.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id)) AND (mi.movie_id = t.id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year = 1998)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = mi.movie_id)) AND (ml.movie_id = cc.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = mi.movie_id)) AND (mk.movie_id = cc.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi.movie_id) AND (mi.movie_id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Germany', 'Swedish', 'German'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.company_type_id = ct.id) AND (mc.company_id = cn.id)) AND (mc.movie_id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct2.kind = 'complete')\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind HASH IN ('cast', 'crew'))\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((mi.movie_id = cc.movie_id) AND (mk.movie_id = mi.movie_id)) AND (ml.movie_id = mi.movie_id)) AND (mi.movie_id = t.id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mk.movie_id = mc.movie_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ml.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (t.production_year = 1998)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ml.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind HASH IN ('cast', 'crew'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mc.company_type_id = ct.id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cct2.kind = 'complete')\n" + + " β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ Filter\n" + + " β”œβ”€ (mi.info HASH IN ('Sweden', 'Germany', 'Swedish', 'German'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.movie_id]\n" + + " β”œβ”€ columns: [movie_id info]\n" + + " └─ keys: mc.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as producing_company, min(lt.link) as link_type, min(t.title) as complete_western_sequel]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(lt.link), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((ml.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id)) AND (mi.movie_id = t.id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year = 1998)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = mi.movie_id)) AND (ml.movie_id = cc.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = mi.movie_id)) AND (mk.movie_id = cc.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi.movie_id) AND (mi.movie_id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Germany', 'Swedish', 'German'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.company_type_id = ct.id) AND (mc.company_id = cn.id)) AND (mc.movie_id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct2.kind = 'complete')\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind HASH IN ('cast', 'crew'))\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((mi.movie_id = cc.movie_id) AND (mk.movie_id = mi.movie_id)) AND (ml.movie_id = mi.movie_id)) AND (mi.movie_id = t.id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mk.movie_id = mc.movie_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ml.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (t.production_year = 1998)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ml.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind HASH IN ('cast', 'crew'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mc.company_type_id = ct.id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cct2.kind = 'complete')\n" + + " β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ Filter\n" + + " β”œβ”€ (mi.info HASH IN ('Sweden', 'Germany', 'Swedish', 'German'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.movie_id]\n" + + " β”œβ”€ columns: [movie_id info]\n" + + " └─ keys: mc.movie_id\n" + "", }, { @@ -19364,395 +19448,381 @@ WHERE cct1.kind = 'cast' AND cct2.id = cc.status_id AND ml.movie_id = mk.movie_id AND ml.movie_id = mc.movie_id - AND mk.movie_id = mc.movie_id - AND ml.movie_id = mi.movie_id - AND mk.movie_id = mi.movie_id - AND mc.movie_id = mi.movie_id - AND ml.movie_id = cc.movie_id - AND mk.movie_id = cc.movie_id - AND mc.movie_id = cc.movie_id - AND mi.movie_id = cc.movie_id; - -`, - ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [min(cn.name):0!null->producing_company:0, min(lt.link):1!null->link_type:0, min(t.title):2!null->complete_western_sequel:0]\n" + - " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:20!null), MIN(lt.link:14!null), MIN(t.title:1!null)\n" + - " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:9!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:7!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ cc.movie_id:26\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ β”‚ └─ 1950 (smallint)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2010 (smallint)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.id:13!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ml.link_type_id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:9!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ β”‚ └─ mi.movie_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ml.movie_id:3!null\n" + - " β”‚ └─ cc.movie_id:26\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.keyword_id:6!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ k.id:15!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:9!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ └─ mi.movie_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ └─ cc.movie_id:26\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:9!null\n" + - " β”‚ β”‚ └─ mi.movie_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi.movie_id:7!null\n" + - " β”‚ └─ cc.movie_id:26\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:1!null\n" + - " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Denish (longtext), Norwegian (longtext), German (longtext), English (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.company_type_id:11!null\n" + - " β”‚ β”‚ β”‚ └─ ct.id:17!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_id:10!null\n" + - " β”‚ β”‚ └─ cn.id:19!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:9!null\n" + - " β”‚ └─ cc.movie_id:26\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note:3 IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ sequel (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ β”‚ └─ production companies (longtext)\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ β”‚ β”‚ └─ [pl] (longtext)\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ cn.name LIKE '%Film%'\n" + - " β”‚ β”‚ └─ cn.name LIKE '%Warner%'\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct2.id:22!null\n" + - " β”‚ └─ cc.status_id:28!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + - " β”‚ β”‚ β”‚ └─ complete (longtext)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + - " β”‚ β”‚ └─ completeΓΏ (longtext)\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct1.id:24!null\n" + - " β”‚ └─ cc.subject_id:27!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + - " β”‚ β”‚ └─ cast (longtext)\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ β”œβ”€ columns: [id kind]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + AND mk.movie_id = mc.movie_id + AND ml.movie_id = mi.movie_id + AND mk.movie_id = mi.movie_id + AND mc.movie_id = mi.movie_id + AND ml.movie_id = cc.movie_id + AND mk.movie_id = cc.movie_id + AND mc.movie_id = cc.movie_id + AND mi.movie_id = cc.movie_id; + +`, + ExpectedPlan: "Project\n" + + " β”œβ”€ columns: [min(cn.name):0!null->producing_company:0, min(lt.link):1!null->link_type:0, min(t.title):2!null->complete_western_sequel:0]\n" + + " └─ GroupBy\n" + + " β”œβ”€ select: MIN(cn.name:15!null), MIN(lt.link:7!null), MIN(t.title:1!null)\n" + + " β”œβ”€ group: \n" + + " └─ LookupJoin\n" + + " β”œβ”€ AND\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:27!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:3\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ └─ mi.movie_id:27!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ ml.movie_id:8!null\n" + + " β”‚ β”‚ └─ mi.movie_id:27!null\n" + + " β”‚ └─ Eq\n" + + " β”‚ β”œβ”€ mi.movie_id:27!null\n" + + " β”‚ └─ t.id:0!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ mk.keyword_id:11!null\n" + + " β”‚ β”‚ └─ k.id:25!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cct2.id:23!null\n" + + " β”‚ β”‚ β”‚ └─ cc.status_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.movie_id:17!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.id:12!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.subject_id:4!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1950 (smallint)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 2010 (smallint)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [t.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-4)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [lt.id:6!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (36-39)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 11\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_link\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ml.movie_id:8!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (33-35)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ cast (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.company_type_id:19!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ct.id:21!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ [pl] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name LIKE '%Film%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cn.name LIKE '%Warner%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note:3 IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cn.id:14!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (23-27)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ complete (longtext)\n" + + " β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ completeΓΏ (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”œβ”€ columns: [id kind]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (7,8)\n" + + " β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ └─ sequel (longtext)\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ mi.info:1!null\n" + + " β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Denish (longtext), Norwegian (longtext), German (longtext), English (longtext))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.movie_id]\n" + + " β”œβ”€ keys: [mc.movie_id:17!null]\n" + + " β”œβ”€ colSet: (28-32)\n" + + " β”œβ”€ tableId: 9\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_info\n" + + " └─ columns: [movie_id info]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as producing_company, min(lt.link) as link_type, min(t.title) as complete_western_sequel]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(lt.link), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((ml.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id)) AND (mi.movie_id = t.id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year >= 1950) AND (t.production_year <= 2010))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = mi.movie_id)) AND (ml.movie_id = cc.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = mi.movie_id)) AND (mk.movie_id = cc.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi.movie_id) AND (mi.movie_id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'English'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.company_type_id = ct.id) AND (mc.company_id = cn.id)) AND (mc.movie_id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((cct2.kind >= 'complete') AND (cct2.kind <= 'completeΓΏ'))\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((mi.movie_id = cc.movie_id) AND (mk.movie_id = mi.movie_id)) AND (ml.movie_id = mi.movie_id)) AND (mi.movie_id = t.id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mk.movie_id = mc.movie_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ml.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 1950) AND (t.production_year <= 2010))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ml.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mc.company_type_id = ct.id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((cct2.kind >= 'complete') AND (cct2.kind <= 'completeΓΏ'))\n" + + " β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ Filter\n" + + " β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'English'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.movie_id]\n" + + " β”œβ”€ columns: [movie_id info]\n" + + " └─ keys: mc.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as producing_company, min(lt.link) as link_type, min(t.title) as complete_western_sequel]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(lt.link), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((ml.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id)) AND (mi.movie_id = t.id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year >= 1950) AND (t.production_year <= 2010))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((lt.id = ml.link_type_id) AND (ml.movie_id = mk.movie_id)) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = mi.movie_id)) AND (ml.movie_id = cc.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mk.keyword_id = k.id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = mi.movie_id)) AND (mk.movie_id = cc.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi.movie_id) AND (mi.movie_id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'English'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.company_type_id = ct.id) AND (mc.company_id = cn.id)) AND (mc.movie_id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note IS NULL\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + - " β”‚ └─ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((cct2.kind >= 'complete') AND (cct2.kind <= 'completeΓΏ'))\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((((mi.movie_id = cc.movie_id) AND (mk.movie_id = mi.movie_id)) AND (ml.movie_id = mi.movie_id)) AND (mi.movie_id = t.id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.keyword_id = k.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mk.movie_id = mc.movie_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ml.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 1950) AND (t.production_year <= 2010))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ml.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mc.company_type_id = ct.id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT((cn.country_code = '[pl]'))) AND (cn.name LIKE '%Film%' OR cn.name LIKE '%Warner%'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((cct2.kind >= 'complete') AND (cct2.kind <= 'completeΓΏ'))\n" + + " β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (k.keyword = 'sequel')\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ Filter\n" + + " β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'English'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.movie_id]\n" + + " β”œβ”€ columns: [movie_id info]\n" + + " └─ keys: mc.movie_id\n" + "", }, { @@ -19827,433 +19897,443 @@ WHERE cct1.kind = 'crew' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->movie_company:0, min(mi_idx.info):1!null->rating:0, min(t.title):2!null->complete_euro_dark_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:26!null), MIN(mi_idx.info:8!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:10!null), MIN(mi_idx.info:28!null), MIN(t.title:32!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:16!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:31!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:23!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:31!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:29!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:31!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:26!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:12!null\n" + + " β”‚ β”‚ β”œβ”€ t.id:31!null\n" + + " β”‚ β”‚ └─ mc.movie_id:19!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ cc.movie_id:32\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ └─ 2000 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + + " β”‚ β”œβ”€ t.id:31!null\n" + + " β”‚ └─ cc.movie_id:16\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:29!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:26!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:29!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.movie_id:19!null\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:29!null\n" + + " β”‚ β”‚ β”‚ └─ cc.movie_id:16\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ k.id:2!null\n" + + " β”‚ β”‚ └─ mk.keyword_id:30!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:19!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:26!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi_idx.movie_id:26!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:16\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.id:4!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.info_type_id:27!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:23!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:16\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.id:6!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.info_type_id:24!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_type_id:21!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_id:20!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(movie (longtext), episode (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext), blood (longtext), violence (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ countries (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (18,19)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 6\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.id:12!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.status_id:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ complete+verified (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.id:14!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.subject_id:17!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ crew (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (5,6)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.note LIKE '%(200%)%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cc.movie_id:16]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (27-31)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Danish (longtext), Norwegian (longtext), German (longtext), USA (longtext), American (longtext))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:19!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-36)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 11\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ LessThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + + " β”‚ β”‚ β”‚ └─ 8.5 (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mi.movie_id:23!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (37-41)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 12\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi.movie_id:23!null]\n" + + " β”‚ β”œβ”€ colSet: (42-44)\n" + + " β”‚ β”œβ”€ tableId: 13\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:12!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ └─ cc.movie_id:32\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:18!null\n" + - " β”‚ └─ mk.keyword_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:12!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ └─ cc.movie_id:32\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:20!null\n" + - " β”‚ └─ mi_idx.info_type_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ LessThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + - " β”‚ β”‚ └─ 8.5 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:12!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ └─ cc.movie_id:32\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:22!null\n" + - " β”‚ └─ mi.info_type_id:10!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Danish (longtext), Norwegian (longtext), German (longtext), USA (longtext), American (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:12!null\n" + - " β”‚ β”‚ β”‚ └─ cc.movie_id:32\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.id:24!null\n" + - " β”‚ β”‚ └─ mc.company_type_id:14!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:25!null\n" + - " β”‚ └─ mc.company_id:13!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(200%)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(movie (longtext), episode (longtext))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext), blood (longtext), violence (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ countries (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (18,19)\n" + - " β”‚ └─ tableId: 6\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct2.id:28!null\n" + - " β”‚ └─ cc.status_id:34!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + - " β”‚ β”‚ └─ complete+verified (longtext)\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct1.id:30!null\n" + - " β”‚ └─ cc.subject_id:33!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + - " β”‚ β”‚ └─ crew (longtext)\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ β”œβ”€ columns: [id kind]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\n" + + " β”œβ”€ GreaterThan\n" + + " β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ └─ 2000 (int)\n" + + " └─ TableAlias(t)\n" + + " └─ IndexedTableAccess(title)\n" + + " β”œβ”€ index: [title.kind_id]\n" + + " β”œβ”€ keys: [kt.id:0!null]\n" + + " β”œβ”€ colSet: (45-56)\n" + + " β”œβ”€ tableId: 14\n" + + " └─ Table\n" + + " β”œβ”€ name: title\n" + + " └─ columns: [id title kind_id production_year]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as complete_euro_dark_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2000)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = cc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = cc.movie_id) AND (ct.id = mc.company_type_id)) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'countries')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT((cct2.kind = 'complete+verified')))\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'crew')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((((t.id = mi.movie_id) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ ((((mk.movie_id = mi_idx.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ (((mc.movie_id = mi_idx.movie_id) AND (mi_idx.movie_id = cc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((mi.movie_id = cc.movie_id) AND (it1.id = mi.info_type_id))\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cct2.kind = 'complete+verified')))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'crew')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cc.movie_id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: mi.movie_id\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ (t.production_year > 2000)\n" + + " └─ TableAlias(t)\n" + + " └─ IndexedTableAccess(title)\n" + + " β”œβ”€ index: [title.kind_id]\n" + + " β”œβ”€ columns: [id title kind_id production_year]\n" + + " └─ keys: kt.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as complete_euro_dark_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2000)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = cc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = cc.movie_id) AND (ct.id = mc.company_type_id)) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'countries')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT((cct2.kind = 'complete+verified')))\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'crew')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((((t.id = mi.movie_id) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ ((((mk.movie_id = mi_idx.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ (((mc.movie_id = mi_idx.movie_id) AND (mi_idx.movie_id = cc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((mi.movie_id = cc.movie_id) AND (it1.id = mi.info_type_id))\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cct2.kind = 'complete+verified')))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'crew')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cc.movie_id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: mi.movie_id\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ (t.production_year > 2000)\n" + + " └─ TableAlias(t)\n" + + " └─ IndexedTableAccess(title)\n" + + " β”œβ”€ index: [title.kind_id]\n" + + " β”œβ”€ columns: [id title kind_id production_year]\n" + + " └─ keys: kt.id\n" + "", }, { @@ -20322,433 +20402,443 @@ WHERE cct1.kind = 'crew' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->movie_company:0, min(mi_idx.info):1!null->rating:0, min(t.title):2!null->complete_euro_dark_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:26!null), MIN(mi_idx.info:8!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:10!null), MIN(mi_idx.info:28!null), MIN(t.title:32!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:16!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:31!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:23!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:31!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:29!null\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:31!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:26!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ t.id:31!null\n" + + " β”‚ β”‚ └─ mc.movie_id:19!null\n" + + " β”‚ └─ Eq\n" + + " β”‚ β”œβ”€ t.id:31!null\n" + + " β”‚ └─ cc.movie_id:16\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:29!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:26!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:29!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.movie_id:19!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:29!null\n" + + " β”‚ β”‚ β”‚ └─ cc.movie_id:16\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:12!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ cc.movie_id:32\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ └─ 2005 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”œβ”€ k.id:2!null\n" + + " β”‚ β”‚ └─ mk.keyword_id:30!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:19!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:26!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi_idx.movie_id:26!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:16\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.id:4!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.info_type_id:27!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:23!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:16\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.id:6!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.info_type_id:24!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_type_id:21!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_id:20!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(movie (longtext), episode (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext), blood (longtext), violence (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ countries (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (18,19)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 6\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.id:12!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.status_id:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ complete+verified (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.id:14!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.subject_id:17!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ crew (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (5,6)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.note LIKE '%(200%)%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cc.movie_id:16]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (27-31)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TUPLE(Sweden (longtext), Germany (longtext), Swedish (longtext), German (longtext))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:19!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-36)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 11\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + + " β”‚ β”‚ β”‚ └─ 6.5 (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mi.movie_id:23!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (37-41)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 12\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi.movie_id:23!null]\n" + + " β”‚ β”œβ”€ colSet: (42-44)\n" + + " β”‚ β”œβ”€ tableId: 13\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:12!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ └─ cc.movie_id:32\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:18!null\n" + - " β”‚ └─ mk.keyword_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:12!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ └─ cc.movie_id:32\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:20!null\n" + - " β”‚ └─ mi_idx.info_type_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + - " β”‚ β”‚ └─ 6.5 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:12!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ └─ cc.movie_id:32\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:22!null\n" + - " β”‚ └─ mi.info_type_id:10!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Germany (longtext), Swedish (longtext), German (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:12!null\n" + - " β”‚ β”‚ β”‚ └─ cc.movie_id:32\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.id:24!null\n" + - " β”‚ β”‚ └─ mc.company_type_id:14!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:25!null\n" + - " β”‚ └─ mc.company_id:13!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(200%)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(movie (longtext), episode (longtext))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext), blood (longtext), violence (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ countries (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (18,19)\n" + - " β”‚ └─ tableId: 6\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct2.id:28!null\n" + - " β”‚ └─ cc.status_id:34!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + - " β”‚ β”‚ └─ complete+verified (longtext)\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct1.id:30!null\n" + - " β”‚ └─ cc.subject_id:33!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + - " β”‚ β”‚ └─ crew (longtext)\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ β”œβ”€ columns: [id kind]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\n" + + " β”œβ”€ GreaterThan\n" + + " β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ └─ 2005 (int)\n" + + " └─ TableAlias(t)\n" + + " └─ IndexedTableAccess(title)\n" + + " β”œβ”€ index: [title.kind_id]\n" + + " β”œβ”€ keys: [kt.id:0!null]\n" + + " β”œβ”€ colSet: (45-56)\n" + + " β”œβ”€ tableId: 14\n" + + " └─ Table\n" + + " β”œβ”€ name: title\n" + + " └─ columns: [id title kind_id production_year]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as complete_euro_dark_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = cc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '6.5')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Germany', 'Swedish', 'German'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = cc.movie_id) AND (ct.id = mc.company_type_id)) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'countries')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT((cct2.kind = 'complete+verified')))\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'crew')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((((t.id = mi.movie_id) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ ((((mk.movie_id = mi_idx.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ (((mc.movie_id = mi_idx.movie_id) AND (mi_idx.movie_id = cc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((mi.movie_id = cc.movie_id) AND (it1.id = mi.info_type_id))\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cct2.kind = 'complete+verified')))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'crew')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cc.movie_id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Germany', 'Swedish', 'German'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi_idx.info > '6.5')\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: mi.movie_id\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ (t.production_year > 2005)\n" + + " └─ TableAlias(t)\n" + + " └─ IndexedTableAccess(title)\n" + + " β”œβ”€ index: [title.kind_id]\n" + + " β”œβ”€ columns: [id title kind_id production_year]\n" + + " └─ keys: kt.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as complete_euro_dark_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = cc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '6.5')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Germany', 'Swedish', 'German'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = cc.movie_id) AND (ct.id = mc.company_type_id)) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'countries')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT((cct2.kind = 'complete+verified')))\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'crew')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((((t.id = mi.movie_id) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ ((((mk.movie_id = mi_idx.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ (((mc.movie_id = mi_idx.movie_id) AND (mi_idx.movie_id = cc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((mi.movie_id = cc.movie_id) AND (it1.id = mi.info_type_id))\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cct2.kind = 'complete+verified')))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'crew')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cc.movie_id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Germany', 'Swedish', 'German'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi_idx.info > '6.5')\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: mi.movie_id\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ (t.production_year > 2005)\n" + + " └─ TableAlias(t)\n" + + " └─ IndexedTableAccess(title)\n" + + " β”œβ”€ index: [title.kind_id]\n" + + " β”œβ”€ columns: [id title kind_id production_year]\n" + + " └─ keys: kt.id\n" + "", }, { @@ -20823,432 +20913,442 @@ WHERE cct1.kind = 'cast' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn.name):0!null->movie_company:0, min(mi_idx.info):1!null->rating:0, min(t.title):2!null->complete_euro_dark_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn.name:26!null), MIN(mi_idx.info:8!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(cn.name:10!null), MIN(mi_idx.info:28!null), MIN(t.title:32!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.id:16!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.kind_id:2!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:31!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:23!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:31!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:29!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.id:31!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:26!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mc.movie_id:12!null\n" + + " β”‚ β”‚ β”œβ”€ t.id:31!null\n" + + " β”‚ β”‚ └─ mc.movie_id:19!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ cc.movie_id:32\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:3\n" + - " β”‚ β”‚ └─ 2005 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + + " β”‚ β”œβ”€ t.id:31!null\n" + + " β”‚ └─ cc.movie_id:16\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:29!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:26!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:29!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.movie_id:19!null\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:29!null\n" + + " β”‚ β”‚ β”‚ └─ cc.movie_id:16\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ k.id:2!null\n" + + " β”‚ β”‚ └─ mk.keyword_id:30!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:19!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:26!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi_idx.movie_id:26!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:16\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.id:4!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.info_type_id:27!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:23!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:16\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.id:6!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi.info_type_id:24!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_type_id:21!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_id:20!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(movie (longtext), episode (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext), blood (longtext), violence (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ countries (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (18,19)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 6\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.id:12!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.status_id:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ complete (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.id:14!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.subject_id:17!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cast (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (5,6)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.note LIKE '%(200%)%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cc.movie_id:16]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (27-31)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Danish (longtext), Norwegian (longtext), German (longtext), USA (longtext), American (longtext))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:19!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-36)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 11\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ LessThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + + " β”‚ β”‚ β”‚ └─ 8.5 (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mi.movie_id:23!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (37-41)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 12\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mi.movie_id:23!null]\n" + + " β”‚ β”œβ”€ colSet: (42-44)\n" + + " β”‚ β”œβ”€ tableId: 13\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:12!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ └─ cc.movie_id:32\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:18!null\n" + - " β”‚ └─ mk.keyword_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:12!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ └─ cc.movie_id:32\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:20!null\n" + - " β”‚ └─ mi_idx.info_type_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ LessThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + - " β”‚ β”‚ └─ 8.5 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ └─ mc.movie_id:12!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ └─ cc.movie_id:32\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:22!null\n" + - " β”‚ └─ mi.info_type_id:10!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Danish (longtext), Norwegian (longtext), German (longtext), USA (longtext), American (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:12!null\n" + - " β”‚ β”‚ β”‚ └─ cc.movie_id:32\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ct.id:24!null\n" + - " β”‚ β”‚ └─ mc.company_type_id:14!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:25!null\n" + - " β”‚ └─ mc.company_id:13!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(200%)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ kt.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(movie (longtext), episode (longtext))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), murder-in-title (longtext), blood (longtext), violence (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ countries (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (18,19)\n" + - " β”‚ └─ tableId: 6\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:2\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct2.id:28!null\n" + - " β”‚ └─ cc.status_id:34!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + - " β”‚ β”‚ └─ complete (longtext)\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct1.id:30!null\n" + - " β”‚ └─ cc.subject_id:33!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + - " β”‚ β”‚ └─ cast (longtext)\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ β”œβ”€ columns: [id kind]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\n" + + " β”œβ”€ GreaterThan\n" + + " β”‚ β”œβ”€ t.production_year:3\n" + + " β”‚ └─ 2005 (int)\n" + + " └─ TableAlias(t)\n" + + " └─ IndexedTableAccess(title)\n" + + " β”œβ”€ index: [title.kind_id]\n" + + " β”œβ”€ keys: [kt.id:0!null]\n" + + " β”œβ”€ colSet: (45-56)\n" + + " β”œβ”€ tableId: 14\n" + + " └─ Table\n" + + " β”œβ”€ name: title\n" + + " └─ columns: [id title kind_id production_year]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as complete_euro_dark_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = cc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = cc.movie_id) AND (ct.id = mc.company_type_id)) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'countries')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct2.kind = 'complete')\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((((t.id = mi.movie_id) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ ((((mk.movie_id = mi_idx.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ (((mc.movie_id = mi_idx.movie_id) AND (mi_idx.movie_id = cc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((mi.movie_id = cc.movie_id) AND (it1.id = mi.info_type_id))\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.kind = 'complete')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cc.movie_id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: mi.movie_id\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ (t.production_year > 2005)\n" + + " └─ TableAlias(t)\n" + + " └─ IndexedTableAccess(title)\n" + + " β”œβ”€ index: [title.kind_id]\n" + + " β”œβ”€ columns: [id title kind_id production_year]\n" + + " └─ keys: kt.id\n" + "", ExpectedAnalysis: "Project\n" + - " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as complete_euro_dark_movie]\n" + - " └─ GroupBy\n" + - " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + - " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((((kt.id = t.kind_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = cc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((mc.movie_id = cc.movie_id) AND (ct.id = mc.company_type_id)) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + - " β”‚ └─ TableAlias(kt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'countries')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name country_code]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct2.kind = 'complete')\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”œβ”€ columns: [min(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as complete_euro_dark_movie]\n" + + " └─ GroupBy\n" + + " β”œβ”€ SelectedExprs(MIN(cn.name), MIN(mi_idx.info), MIN(t.title))\n" + + " β”œβ”€ Grouping()\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((((t.id = mi.movie_id) AND (t.id = mk.movie_id)) AND (t.id = mi_idx.movie_id)) AND (t.id = mc.movie_id)) AND (t.id = cc.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ ((((mk.movie_id = mi_idx.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ (((mc.movie_id = mi_idx.movie_id) AND (mi_idx.movie_id = cc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((mi.movie_id = cc.movie_id) AND (it1.id = mi.info_type_id))\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((ct.id = mc.company_type_id) AND (cn.id = mc.company_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt.kind HASH IN ('movie', 'episode'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'murder-in-title', 'blood', 'violence'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'countries')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cn.country_code = '[us]')))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.kind = 'complete')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(USA)%')) AND mc.note LIKE '%(200%)%')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id company_type_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cc.movie_id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Danish', 'Norwegian', 'German', 'USA', 'American'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi_idx.info < '8.5')\n" + + " β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: mi.movie_id\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: mi.movie_id\n" + + " └─ Filter\n" + + " β”œβ”€ (t.production_year > 2005)\n" + + " └─ TableAlias(t)\n" + + " └─ IndexedTableAccess(title)\n" + + " β”œβ”€ index: [title.kind_id]\n" + + " β”œβ”€ columns: [id title kind_id production_year]\n" + + " └─ keys: kt.id\n" + "", }, { @@ -21350,15 +21450,11 @@ WHERE cct1.kind ='cast' " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ rt.id:35!null\n" + " β”‚ β”‚ └─ ci.role_id:14!null\n" + - " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.id:30!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ pi.person_id:33!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.person_id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ pi.person_id:33!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.person_id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ pi.person_id:33!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ it3.id:19!null\n" + " β”‚ β”‚ β”‚ └─ pi.info_type_id:34!null\n" + @@ -21370,17 +21466,13 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.id:30!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ an.person_id:0!null\n" + - " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:23!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:28!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:25!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:28!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:25!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:28!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:28!null\n" + @@ -21390,31 +21482,23 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.id:21!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.keyword_id:29!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:23!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:25!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:25!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ci.movie_id:11!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:25!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ci.movie_id:11!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:25!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:1\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it.id:17!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.info_type_id:26!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:23!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ci.movie_id:11!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:23!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:23!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:1\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.id:15!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_id:24!null\n" + @@ -21422,18 +21506,14 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:1\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.person_id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ an.person_id:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:1\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ chn.id:8!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ci.person_role_id:12\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.person_id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ an.person_id:0!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + @@ -21487,7 +21567,11 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [chn.id:8!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-30)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + @@ -21529,7 +21613,11 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:11!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (45-49)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 11\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id]\n" + @@ -21541,12 +21629,20 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.info LIKE 'Japan:%200%'\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.info LIKE 'USA:%200%'\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:23!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (50-54)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 12\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:23!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (55-57)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 13\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + @@ -21562,7 +21658,11 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + " β”‚ β”‚ └─ TableAlias(pi)\n" + - " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ IndexedTableAccess(person_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [person_info.person_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [n.id:30!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (67-71)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 15\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: person_info\n" + " β”‚ β”‚ └─ columns: [person_id info_type_id]\n" + @@ -21602,22 +21702,22 @@ WHERE cct1.kind ='cast' " β”œβ”€ (((((t.id = mi.movie_id) AND (t.id = mc.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = cc.movie_id))\n" + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ (rt.id = ci.role_id)\n" + - " β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”œβ”€ (((n.id = pi.person_id) AND (ci.person_id = pi.person_id)) AND (it3.id = pi.info_type_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ ((ci.person_id = pi.person_id) AND (it3.id = pi.info_type_id))\n" + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ ((n.id = ci.person_id) AND (n.id = an.person_id))\n" + - " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((((mc.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (ci.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id)) AND (mi.movie_id = cc.movie_id)) AND (it.id = mi.info_type_id))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((mc.movie_id = ci.movie_id) AND (mc.movie_id = cc.movie_id)) AND (cn.id = mc.company_id))\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((((mi.movie_id = mk.movie_id) AND (ci.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((mi.movie_id = ci.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it.id = mi.info_type_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((mc.movie_id = cc.movie_id) AND (cn.id = mc.company_id))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((ci.movie_id = cc.movie_id) AND (ci.person_id = an.person_id)) AND (chn.id = ci.person_role_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((ci.movie_id = cc.movie_id) AND (ci.person_id = an.person_id))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + @@ -21653,9 +21753,10 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice) (uncredited)', '(voice: English version)'))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + @@ -21681,19 +21782,22 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%200%' OR mi.info LIKE 'USA:%200%'))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + " β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%An%')\n" + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + @@ -21701,9 +21805,10 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + " β”‚ β”‚ └─ TableAlias(pi)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: person_info\n" + - " β”‚ β”‚ └─ columns: [person_id info_type_id]\n" + + " β”‚ β”‚ └─ IndexedTableAccess(person_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [person_info.person_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [person_id info_type_id]\n" + + " β”‚ β”‚ └─ keys: n.id\n" + " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ (rt.role = 'actress')\n" + " β”‚ └─ TableAlias(rt)\n" + @@ -21726,22 +21831,22 @@ WHERE cct1.kind ='cast' " β”œβ”€ (((((t.id = mi.movie_id) AND (t.id = mc.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = cc.movie_id))\n" + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ (rt.id = ci.role_id)\n" + - " β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”œβ”€ (((n.id = pi.person_id) AND (ci.person_id = pi.person_id)) AND (it3.id = pi.info_type_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ ((ci.person_id = pi.person_id) AND (it3.id = pi.info_type_id))\n" + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ ((n.id = ci.person_id) AND (n.id = an.person_id))\n" + - " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((((mc.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (ci.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id)) AND (mi.movie_id = cc.movie_id)) AND (it.id = mi.info_type_id))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((mc.movie_id = ci.movie_id) AND (mc.movie_id = cc.movie_id)) AND (cn.id = mc.company_id))\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((((mi.movie_id = mk.movie_id) AND (ci.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((mi.movie_id = ci.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it.id = mi.info_type_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((mc.movie_id = cc.movie_id) AND (cn.id = mc.company_id))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((ci.movie_id = cc.movie_id) AND (ci.person_id = an.person_id)) AND (chn.id = ci.person_role_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((ci.movie_id = cc.movie_id) AND (ci.person_id = an.person_id))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + @@ -21777,9 +21882,10 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice) (uncredited)', '(voice: English version)'))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + @@ -21805,19 +21911,22 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%200%' OR mi.info LIKE 'USA:%200%'))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + " β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%An%')\n" + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + @@ -21825,9 +21934,10 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + " β”‚ β”‚ └─ TableAlias(pi)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: person_info\n" + - " β”‚ β”‚ └─ columns: [person_id info_type_id]\n" + + " β”‚ β”‚ └─ IndexedTableAccess(person_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [person_info.person_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [person_id info_type_id]\n" + + " β”‚ β”‚ └─ keys: n.id\n" + " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ (rt.role = 'actress')\n" + " β”‚ └─ TableAlias(rt)\n" + @@ -21939,15 +22049,11 @@ WHERE cct1.kind ='cast' " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ rt.id:35!null\n" + " β”‚ β”‚ └─ ci.role_id:14!null\n" + - " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.id:30!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ pi.person_id:33!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.person_id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ pi.person_id:33!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.person_id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ pi.person_id:33!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ it3.id:19!null\n" + " β”‚ β”‚ β”‚ └─ pi.info_type_id:34!null\n" + @@ -21959,17 +22065,13 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.id:30!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ an.person_id:0!null\n" + - " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:23!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:28!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:25!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:28!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:25!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:28!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:28!null\n" + @@ -21979,31 +22081,23 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.id:21!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.keyword_id:29!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:23!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:25!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:25!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ci.movie_id:11!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:25!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ci.movie_id:11!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:25!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:1\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it.id:17!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.info_type_id:26!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:23!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ci.movie_id:11!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:23!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:23!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:1\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.id:15!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_id:24!null\n" + @@ -22011,18 +22105,14 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:1\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.person_id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ an.person_id:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:1\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ chn.id:8!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ci.person_role_id:12\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.person_id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ an.person_id:0!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + @@ -22076,7 +22166,11 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [chn.id:8!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-30)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + @@ -22118,19 +22212,31 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:11!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (45-49)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 11\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.info LIKE 'USA:%200%'\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:23!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (50-54)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 12\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:23!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (55-57)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 13\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + @@ -22146,7 +22252,11 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + " β”‚ β”‚ └─ TableAlias(pi)\n" + - " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ IndexedTableAccess(person_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [person_info.person_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [n.id:30!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (67-71)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 15\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: person_info\n" + " β”‚ β”‚ └─ columns: [person_id info_type_id]\n" + @@ -22186,22 +22296,22 @@ WHERE cct1.kind ='cast' " β”œβ”€ (((((t.id = mi.movie_id) AND (t.id = mc.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = cc.movie_id))\n" + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ (rt.id = ci.role_id)\n" + - " β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”œβ”€ (((n.id = pi.person_id) AND (ci.person_id = pi.person_id)) AND (it3.id = pi.info_type_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ ((ci.person_id = pi.person_id) AND (it3.id = pi.info_type_id))\n" + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ ((n.id = ci.person_id) AND (n.id = an.person_id))\n" + - " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((((mc.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (ci.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id)) AND (mi.movie_id = cc.movie_id)) AND (it.id = mi.info_type_id))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((mc.movie_id = ci.movie_id) AND (mc.movie_id = cc.movie_id)) AND (cn.id = mc.company_id))\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((((mi.movie_id = mk.movie_id) AND (ci.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((mi.movie_id = ci.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it.id = mi.info_type_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((mc.movie_id = cc.movie_id) AND (cn.id = mc.company_id))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((ci.movie_id = cc.movie_id) AND (ci.person_id = an.person_id)) AND (chn.id = ci.person_role_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((ci.movie_id = cc.movie_id) AND (ci.person_id = an.person_id))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + @@ -22237,9 +22347,10 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice) (uncredited)', '(voice: English version)'))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + @@ -22265,19 +22376,22 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.info LIKE 'USA:%200%'\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + " β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%An%')\n" + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + @@ -22285,9 +22399,10 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + " β”‚ β”‚ └─ TableAlias(pi)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: person_info\n" + - " β”‚ β”‚ └─ columns: [person_id info_type_id]\n" + + " β”‚ β”‚ └─ IndexedTableAccess(person_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [person_info.person_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [person_id info_type_id]\n" + + " β”‚ β”‚ └─ keys: n.id\n" + " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ (rt.role = 'actress')\n" + " β”‚ └─ TableAlias(rt)\n" + @@ -22310,22 +22425,22 @@ WHERE cct1.kind ='cast' " β”œβ”€ (((((t.id = mi.movie_id) AND (t.id = mc.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = cc.movie_id))\n" + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ (rt.id = ci.role_id)\n" + - " β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”œβ”€ (((n.id = pi.person_id) AND (ci.person_id = pi.person_id)) AND (it3.id = pi.info_type_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ ((ci.person_id = pi.person_id) AND (it3.id = pi.info_type_id))\n" + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ ((n.id = ci.person_id) AND (n.id = an.person_id))\n" + - " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((((mc.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (ci.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id)) AND (mi.movie_id = cc.movie_id)) AND (it.id = mi.info_type_id))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((mc.movie_id = ci.movie_id) AND (mc.movie_id = cc.movie_id)) AND (cn.id = mc.company_id))\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((((mi.movie_id = mk.movie_id) AND (ci.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((mi.movie_id = ci.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it.id = mi.info_type_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((mc.movie_id = cc.movie_id) AND (cn.id = mc.company_id))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((ci.movie_id = cc.movie_id) AND (ci.person_id = an.person_id)) AND (chn.id = ci.person_role_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((ci.movie_id = cc.movie_id) AND (ci.person_id = an.person_id))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + @@ -22361,9 +22476,10 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice) (uncredited)', '(voice: English version)'))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + @@ -22389,19 +22505,22 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.info LIKE 'USA:%200%'\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + " β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%An%')\n" + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + @@ -22409,9 +22528,10 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + " β”‚ β”‚ └─ TableAlias(pi)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: person_info\n" + - " β”‚ β”‚ └─ columns: [person_id info_type_id]\n" + + " β”‚ β”‚ └─ IndexedTableAccess(person_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [person_info.person_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [person_id info_type_id]\n" + + " β”‚ β”‚ └─ keys: n.id\n" + " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ (rt.role = 'actress')\n" + " β”‚ └─ TableAlias(rt)\n" + @@ -22524,15 +22644,11 @@ WHERE cct1.kind ='cast' " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ rt.id:35!null\n" + " β”‚ β”‚ └─ ci.role_id:14!null\n" + - " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.id:30!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ pi.person_id:33!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.person_id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ pi.person_id:33!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.person_id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ pi.person_id:33!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ it3.id:19!null\n" + " β”‚ β”‚ β”‚ └─ pi.info_type_id:34!null\n" + @@ -22544,17 +22660,13 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.id:30!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ an.person_id:0!null\n" + - " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:23!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:28!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:25!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:28!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:25!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:28!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:28!null\n" + @@ -22564,31 +22676,23 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.id:21!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.keyword_id:29!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:23!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:25!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:25!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ci.movie_id:11!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:25!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ci.movie_id:11!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:25!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:1\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it.id:17!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.info_type_id:26!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:23!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ci.movie_id:11!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:23!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.movie_id:23!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:1\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.id:15!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.company_id:24!null\n" + @@ -22596,18 +22700,14 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:1\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.person_id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ an.person_id:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:11!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:1\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ chn.id:8!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ci.person_role_id:12\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.person_id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ an.person_id:0!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + @@ -22657,7 +22757,11 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice: Japanese version) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [chn.id:8!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-30)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + @@ -22699,7 +22803,11 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:11!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (45-49)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 11\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id]\n" + @@ -22711,12 +22819,20 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.info LIKE 'Japan:%200%'\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.info LIKE 'USA:%200%'\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:23!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (50-54)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 12\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [mc.movie_id:23!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (55-57)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 13\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + @@ -22732,7 +22848,11 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + " β”‚ β”‚ └─ TableAlias(pi)\n" + - " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ IndexedTableAccess(person_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [person_info.person_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [n.id:30!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (67-71)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 15\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: person_info\n" + " β”‚ β”‚ └─ columns: [person_id info_type_id]\n" + @@ -22768,22 +22888,22 @@ WHERE cct1.kind ='cast' " β”œβ”€ (((((t.id = mi.movie_id) AND (t.id = mc.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = cc.movie_id))\n" + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ (rt.id = ci.role_id)\n" + - " β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”œβ”€ (((n.id = pi.person_id) AND (ci.person_id = pi.person_id)) AND (it3.id = pi.info_type_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ ((ci.person_id = pi.person_id) AND (it3.id = pi.info_type_id))\n" + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ ((n.id = ci.person_id) AND (n.id = an.person_id))\n" + - " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((((mc.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (ci.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id)) AND (mi.movie_id = cc.movie_id)) AND (it.id = mi.info_type_id))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((mc.movie_id = ci.movie_id) AND (mc.movie_id = cc.movie_id)) AND (cn.id = mc.company_id))\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((((mi.movie_id = mk.movie_id) AND (ci.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((mi.movie_id = ci.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it.id = mi.info_type_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((mc.movie_id = cc.movie_id) AND (cn.id = mc.company_id))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((ci.movie_id = cc.movie_id) AND (ci.person_id = an.person_id)) AND (chn.id = ci.person_role_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((ci.movie_id = cc.movie_id) AND (ci.person_id = an.person_id))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + @@ -22817,9 +22937,10 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + @@ -22845,19 +22966,22 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%200%' OR mi.info LIKE 'USA:%200%'))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + " β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%An%')\n" + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + @@ -22865,9 +22989,10 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + " β”‚ β”‚ └─ TableAlias(pi)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: person_info\n" + - " β”‚ β”‚ └─ columns: [person_id info_type_id]\n" + + " β”‚ β”‚ └─ IndexedTableAccess(person_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [person_info.person_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [person_id info_type_id]\n" + + " β”‚ β”‚ └─ keys: n.id\n" + " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ (rt.role = 'actress')\n" + " β”‚ └─ TableAlias(rt)\n" + @@ -22890,22 +23015,22 @@ WHERE cct1.kind ='cast' " β”œβ”€ (((((t.id = mi.movie_id) AND (t.id = mc.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = cc.movie_id))\n" + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ (rt.id = ci.role_id)\n" + - " β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”œβ”€ (((n.id = pi.person_id) AND (ci.person_id = pi.person_id)) AND (it3.id = pi.info_type_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ ((ci.person_id = pi.person_id) AND (it3.id = pi.info_type_id))\n" + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ ((n.id = ci.person_id) AND (n.id = an.person_id))\n" + - " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((((mc.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (ci.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id)) AND (mi.movie_id = cc.movie_id)) AND (it.id = mi.info_type_id))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((mc.movie_id = ci.movie_id) AND (mc.movie_id = cc.movie_id)) AND (cn.id = mc.company_id))\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((((mi.movie_id = mk.movie_id) AND (ci.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((mi.movie_id = ci.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it.id = mi.info_type_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((mc.movie_id = cc.movie_id) AND (cn.id = mc.company_id))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((ci.movie_id = cc.movie_id) AND (ci.person_id = an.person_id)) AND (chn.id = ci.person_role_id))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((ci.movie_id = cc.movie_id) AND (ci.person_id = an.person_id))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + @@ -22939,9 +23064,10 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + @@ -22967,19 +23093,22 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((NOT(mi.info IS NULL)) AND (mi.info LIKE 'Japan:%200%' OR mi.info LIKE 'USA:%200%'))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mk)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: mc.movie_id\n" + " β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%An%')\n" + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + @@ -22987,9 +23116,10 @@ WHERE cct1.kind ='cast' " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + " β”‚ β”‚ └─ TableAlias(pi)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: person_info\n" + - " β”‚ β”‚ └─ columns: [person_id info_type_id]\n" + + " β”‚ β”‚ └─ IndexedTableAccess(person_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [person_info.person_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [person_id info_type_id]\n" + + " β”‚ β”‚ └─ keys: n.id\n" + " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ (rt.role = 'actress')\n" + " β”‚ └─ TableAlias(rt)\n" + @@ -23026,134 +23156,137 @@ WHERE cn.country_code ='[de]' " └─ GroupBy\n" + " β”œβ”€ select: MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:4!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ cn.id:4!null\n" + + " β”‚ β”‚ └─ mc.company_id:9!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mk.movie_id:2!null\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.keyword_id:3!null\n" + - " β”‚ β”‚ └─ k.id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:4!null\n" + - " β”‚ └─ mk.movie_id:2!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn.id:8!null\n" + - " β”‚ └─ mc.company_id:5!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ character-name-in-title (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ └─ [de] (longtext)\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id country_code]\n" + + " β”‚ β”œβ”€ mc.movie_id:8!null\n" + + " β”‚ └─ t.id:0!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ └─ mk.movie_id:6!null\n" + + " β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ character-name-in-title (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ └─ [de] (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:2!null]\n" + + " β”‚ β”œβ”€ colSet: (16-18)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:6!null]\n" + + " β”œβ”€ colSet: (11-15)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = t.id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.keyword_id = k.id) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn.id = mc.company_id)\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[de]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((cn.id = mc.company_id) AND (mc.movie_id = t.id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cn.country_code = '[de]')\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = t.id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.keyword_id = k.id) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn.id = mc.company_id)\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[de]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((cn.id = mc.company_id) AND (mc.movie_id = t.id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cn.country_code = '[de]')\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -23178,134 +23311,137 @@ WHERE cn.country_code ='[nl]' " └─ GroupBy\n" + " β”œβ”€ select: MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:4!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ cn.id:4!null\n" + + " β”‚ β”‚ └─ mc.company_id:9!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mk.movie_id:2!null\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.keyword_id:3!null\n" + - " β”‚ β”‚ └─ k.id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:4!null\n" + - " β”‚ └─ mk.movie_id:2!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn.id:8!null\n" + - " β”‚ └─ mc.company_id:5!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ character-name-in-title (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ └─ [nl] (longtext)\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id country_code]\n" + + " β”‚ β”œβ”€ mc.movie_id:8!null\n" + + " β”‚ └─ t.id:0!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ └─ mk.movie_id:6!null\n" + + " β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ character-name-in-title (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ └─ [nl] (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:2!null]\n" + + " β”‚ β”œβ”€ colSet: (16-18)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:6!null]\n" + + " β”œβ”€ colSet: (11-15)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = t.id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.keyword_id = k.id) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn.id = mc.company_id)\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[nl]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((cn.id = mc.company_id) AND (mc.movie_id = t.id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cn.country_code = '[nl]')\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = t.id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.keyword_id = k.id) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn.id = mc.company_id)\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[nl]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((cn.id = mc.company_id) AND (mc.movie_id = t.id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cn.country_code = '[nl]')\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -23330,134 +23466,137 @@ WHERE cn.country_code ='[sm]' " └─ GroupBy\n" + " β”œβ”€ select: MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:4!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ cn.id:4!null\n" + + " β”‚ β”‚ └─ mc.company_id:9!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mk.movie_id:2!null\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.keyword_id:3!null\n" + - " β”‚ β”‚ └─ k.id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:4!null\n" + - " β”‚ └─ mk.movie_id:2!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn.id:8!null\n" + - " β”‚ └─ mc.company_id:5!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ character-name-in-title (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ └─ [sm] (longtext)\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id country_code]\n" + + " β”‚ β”œβ”€ mc.movie_id:8!null\n" + + " β”‚ └─ t.id:0!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ └─ mk.movie_id:6!null\n" + + " β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ character-name-in-title (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ └─ [sm] (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:2!null]\n" + + " β”‚ β”œβ”€ colSet: (16-18)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:6!null]\n" + + " β”œβ”€ colSet: (11-15)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = t.id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.keyword_id = k.id) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn.id = mc.company_id)\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[sm]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((cn.id = mc.company_id) AND (mc.movie_id = t.id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cn.country_code = '[sm]')\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = t.id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.keyword_id = k.id) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn.id = mc.company_id)\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[sm]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((cn.id = mc.company_id) AND (mc.movie_id = t.id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cn.country_code = '[sm]')\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -23482,134 +23621,137 @@ WHERE cn.country_code ='[us]' " └─ GroupBy\n" + " β”œβ”€ select: MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:4!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ cn.id:4!null\n" + + " β”‚ β”‚ └─ mc.company_id:9!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mk.movie_id:2!null\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.keyword_id:3!null\n" + - " β”‚ β”‚ └─ k.id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.movie_id:4!null\n" + - " β”‚ └─ mk.movie_id:2!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn.id:8!null\n" + - " β”‚ └─ mc.company_id:5!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ character-name-in-title (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ └─ [us] (longtext)\n" + - " └─ TableAlias(cn)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id country_code]\n" + + " β”‚ β”œβ”€ mc.movie_id:8!null\n" + + " β”‚ └─ t.id:0!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ └─ mk.movie_id:6!null\n" + + " β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ character-name-in-title (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:2!null]\n" + + " β”‚ β”œβ”€ colSet: (16-18)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:6!null]\n" + + " β”œβ”€ colSet: (11-15)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = t.id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.keyword_id = k.id) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn.id = mc.company_id)\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[us]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((cn.id = mc.company_id) AND (mc.movie_id = t.id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = t.id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.keyword_id = k.id) AND (mc.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn.id = mc.company_id)\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn.country_code = '[us]')\n" + - " └─ TableAlias(cn)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((cn.id = mc.company_id) AND (mc.movie_id = t.id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ └─ columns: [id country_code]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_id]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -23677,7 +23819,7 @@ WHERE cct1.kind IN ('cast', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi.info):0!null->movie_budget:0, min(mi_idx.info):1!null->movie_votes:0, min(n.name):2!null->writer:0, min(t.title):3!null->complete_violent_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi.info:13!null), MIN(mi_idx.info:10!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi.info:23!null), MIN(mi_idx.info:11!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + @@ -23686,19 +23828,19 @@ WHERE cct1.kind IN ('cast', " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:11!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:21!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:9!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ ci.movie_id:21!null\n" + + " β”‚ β”‚ β”‚ └─ ci.movie_id:7!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:6!null\n" + + " β”‚ β”‚ └─ mk.movie_id:28!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ cc.movie_id:27\n" + + " β”‚ └─ cc.movie_id:12\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ GreaterThan\n" + " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + @@ -23709,161 +23851,162 @@ WHERE cct1.kind IN ('cast', " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ n.id:3!null\n" + - " β”‚ └─ ci.person_id:20!null\n" + - " β”œβ”€ Filter\n" + + " β”œβ”€ AND\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:28!null\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:21!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:28!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ mi_idx.movie_id:9!null\n" + + " β”‚ β”‚ └─ mk.movie_id:28!null\n" + + " β”‚ └─ Eq\n" + + " β”‚ β”œβ”€ mk.movie_id:28!null\n" + + " β”‚ └─ cc.movie_id:12\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ n.gender:2\n" + - " β”‚ β”‚ └─ m (longtext)\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”œβ”€ it2.id:24!null\n" + + " β”‚ β”‚ └─ mi_idx.info_type_id:10!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:21!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:21!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:12\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:21!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:9!null\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.id:17!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cc.status_id:14!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.id:15!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.subject_id:13!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi_idx.movie_id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:12\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ m (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.note:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [n.id:3!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (9-15)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:7!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (28-32)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:7!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-4)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(cast (longtext), crew (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ complete+verified (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (7,8)\n" + + " β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ genres (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ β”‚ └─ TUPLE(Horror (longtext), Thriller (longtext))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [it1.id:19!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (23-27)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ └─ votes (longtext)\n" + + " β”‚ └─ TableAlias(it2)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:21!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:11!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi_idx.movie_id:8!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:6!null\n" + - " β”‚ β”‚ └─ cc.movie_id:27\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:14!null\n" + - " β”‚ └─ mk.keyword_id:7!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:21!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:11!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.movie_id:8!null\n" + - " β”‚ β”‚ └─ cc.movie_id:27\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:16!null\n" + - " β”‚ └─ mi_idx.info_type_id:9!null\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:21!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:11!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:11!null\n" + - " β”‚ β”‚ └─ cc.movie_id:27\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:18!null\n" + - " β”‚ └─ mi.info_type_id:12!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Horror (longtext), Thriller (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), violence (longtext), blood (longtext), gore (longtext), death (longtext), female-nudity (longtext), hospital (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ votes (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ genres (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (16,17)\n" + - " β”‚ └─ tableId: 5\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:21!null\n" + - " β”‚ └─ cc.movie_id:27\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ ci.note:2\n" + - " β”‚ β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct2.id:23!null\n" + - " β”‚ └─ cc.status_id:29!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + - " β”‚ β”‚ └─ complete+verified (longtext)\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct1.id:25!null\n" + - " β”‚ └─ cc.subject_id:28!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(cast (longtext), crew (longtext))\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ β”œβ”€ columns: [id kind]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”œβ”€ colSet: (18,19)\n" + + " β”‚ └─ tableId: 6\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ └─ TUPLE(murder (longtext), violence (longtext), blood (longtext), gore (longtext), death (longtext), female-nudity (longtext), hospital (longtext))\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”œβ”€ keys: [k.id:26!null]\n" + + " β”œβ”€ colSet: (33-35)\n" + + " β”œβ”€ tableId: 10\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_keyword\n" + + " └─ columns: [movie_id keyword_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(n.name) as writer, min(t.title) as complete_violent_movie]\n" + @@ -23879,82 +24022,86 @@ WHERE cct1.kind IN ('cast', " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.gender = 'm')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = cc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Thriller'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.movie_id = cc.movie_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct2.kind = 'complete+verified')\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind HASH IN ('cast', 'crew'))\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”œβ”€ ((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (((ci.movie_id = mi.movie_id) AND (mi.movie_id = cc.movie_id)) AND (mi.movie_id = mi_idx.movie_id))\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mi_idx.movie_id = cc.movie_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (n.gender = 'm')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind HASH IN ('cast', 'crew'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct2.kind = 'complete+verified')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Thriller'))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it1.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ └─ TableAlias(it2)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”œβ”€ columns: [movie_id keyword_id]\n" + + " └─ keys: k.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(n.name) as writer, min(t.title) as complete_violent_movie]\n" + @@ -23970,82 +24117,86 @@ WHERE cct1.kind IN ('cast', " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.gender = 'm')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = cc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Thriller'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.movie_id = cc.movie_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct2.kind = 'complete+verified')\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind HASH IN ('cast', 'crew'))\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”œβ”€ ((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (((ci.movie_id = mi.movie_id) AND (mi.movie_id = cc.movie_id)) AND (mi.movie_id = mi_idx.movie_id))\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mi_idx.movie_id = cc.movie_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (n.gender = 'm')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind HASH IN ('cast', 'crew'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct2.kind = 'complete+verified')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Thriller'))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it1.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ └─ TableAlias(it2)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”œβ”€ columns: [movie_id keyword_id]\n" + + " └─ keys: k.id\n" + "", }, { @@ -24116,7 +24267,7 @@ WHERE cct1.kind IN ('cast', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi.info):0!null->movie_budget:0, min(mi_idx.info):1!null->movie_votes:0, min(n.name):2!null->writer:0, min(t.title):3!null->complete_gore_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi.info:13!null), MIN(mi_idx.info:10!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi.info:23!null), MIN(mi_idx.info:11!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + @@ -24125,19 +24276,19 @@ WHERE cct1.kind IN ('cast', " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:11!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:21!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:9!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ ci.movie_id:21!null\n" + + " β”‚ β”‚ β”‚ └─ ci.movie_id:7!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:6!null\n" + + " β”‚ β”‚ └─ mk.movie_id:28!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ cc.movie_id:27\n" + + " β”‚ └─ cc.movie_id:12\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + @@ -24160,161 +24311,162 @@ WHERE cct1.kind IN ('cast', " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ n.id:3!null\n" + - " β”‚ └─ ci.person_id:20!null\n" + - " β”œβ”€ Filter\n" + + " β”œβ”€ AND\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:28!null\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:21!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:28!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ mi_idx.movie_id:9!null\n" + + " β”‚ β”‚ └─ mk.movie_id:28!null\n" + + " β”‚ └─ Eq\n" + + " β”‚ β”œβ”€ mk.movie_id:28!null\n" + + " β”‚ └─ cc.movie_id:12\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ n.gender:2\n" + - " β”‚ β”‚ └─ m (longtext)\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”œβ”€ it2.id:24!null\n" + + " β”‚ β”‚ └─ mi_idx.info_type_id:10!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:21!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:21!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:12\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:21!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:9!null\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.id:17!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cc.status_id:14!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.id:15!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.subject_id:13!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi_idx.movie_id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:12\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ m (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.note:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [n.id:3!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (9-15)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:7!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (28-32)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:7!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-4)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(cast (longtext), crew (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ complete+verified (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (7,8)\n" + + " β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ genres (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ β”‚ └─ TUPLE(Horror (longtext), Thriller (longtext))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [it1.id:19!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (23-27)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ └─ votes (longtext)\n" + + " β”‚ └─ TableAlias(it2)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:21!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:11!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi_idx.movie_id:8!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:6!null\n" + - " β”‚ β”‚ └─ cc.movie_id:27\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:14!null\n" + - " β”‚ └─ mk.keyword_id:7!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:21!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:11!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.movie_id:8!null\n" + - " β”‚ β”‚ └─ cc.movie_id:27\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:16!null\n" + - " β”‚ └─ mi_idx.info_type_id:9!null\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:21!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:11!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:11!null\n" + - " β”‚ β”‚ └─ cc.movie_id:27\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:18!null\n" + - " β”‚ └─ mi.info_type_id:12!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Horror (longtext), Thriller (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), violence (longtext), blood (longtext), gore (longtext), death (longtext), female-nudity (longtext), hospital (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ votes (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ genres (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (16,17)\n" + - " β”‚ └─ tableId: 5\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:21!null\n" + - " β”‚ └─ cc.movie_id:27\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ ci.note:2\n" + - " β”‚ β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct2.id:23!null\n" + - " β”‚ └─ cc.status_id:29!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + - " β”‚ β”‚ └─ complete+verified (longtext)\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct1.id:25!null\n" + - " β”‚ └─ cc.subject_id:28!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(cast (longtext), crew (longtext))\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ β”œβ”€ columns: [id kind]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”œβ”€ colSet: (18,19)\n" + + " β”‚ └─ tableId: 6\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ └─ TUPLE(murder (longtext), violence (longtext), blood (longtext), gore (longtext), death (longtext), female-nudity (longtext), hospital (longtext))\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”œβ”€ keys: [k.id:26!null]\n" + + " β”œβ”€ colSet: (33-35)\n" + + " β”œβ”€ tableId: 10\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_keyword\n" + + " └─ columns: [movie_id keyword_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(n.name) as writer, min(t.title) as complete_gore_movie]\n" + @@ -24330,82 +24482,86 @@ WHERE cct1.kind IN ('cast', " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.gender = 'm')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = cc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Thriller'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.movie_id = cc.movie_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct2.kind = 'complete+verified')\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind HASH IN ('cast', 'crew'))\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”œβ”€ ((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (((ci.movie_id = mi.movie_id) AND (mi.movie_id = cc.movie_id)) AND (mi.movie_id = mi_idx.movie_id))\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mi_idx.movie_id = cc.movie_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (n.gender = 'm')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind HASH IN ('cast', 'crew'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct2.kind = 'complete+verified')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Thriller'))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it1.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ └─ TableAlias(it2)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”œβ”€ columns: [movie_id keyword_id]\n" + + " └─ keys: k.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(n.name) as writer, min(t.title) as complete_gore_movie]\n" + @@ -24421,82 +24577,86 @@ WHERE cct1.kind IN ('cast', " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.gender = 'm')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = cc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Thriller'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.movie_id = cc.movie_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct2.kind = 'complete+verified')\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind HASH IN ('cast', 'crew'))\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”œβ”€ ((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (((ci.movie_id = mi.movie_id) AND (mi.movie_id = cc.movie_id)) AND (mi.movie_id = mi_idx.movie_id))\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mi_idx.movie_id = cc.movie_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (n.gender = 'm')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind HASH IN ('cast', 'crew'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct2.kind = 'complete+verified')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Thriller'))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it1.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ └─ TableAlias(it2)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”œβ”€ columns: [movie_id keyword_id]\n" + + " └─ keys: k.id\n" + "", }, { @@ -24566,7 +24726,7 @@ WHERE cct1.kind = 'cast' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi.info):0!null->movie_budget:0, min(mi_idx.info):1!null->movie_votes:0, min(n.name):2!null->writer:0, min(t.title):3!null->complete_violent_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi.info:12!null), MIN(mi_idx.info:9!null), MIN(n.name:3!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi.info:22!null), MIN(mi_idx.info:10!null), MIN(n.name:3!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + @@ -24575,180 +24735,181 @@ WHERE cct1.kind = 'cast' " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:20!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ ci.movie_id:20!null\n" + + " β”‚ β”‚ β”‚ └─ ci.movie_id:6!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ └─ mk.movie_id:27!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ cc.movie_id:26\n" + + " β”‚ └─ cc.movie_id:11\n" + " β”œβ”€ TableAlias(t)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title]\n" + " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ n.id:2!null\n" + - " β”‚ └─ ci.person_id:19!null\n" + - " β”œβ”€ Filter\n" + + " β”œβ”€ AND\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:6!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:27!null\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:20!null\n" + + " β”‚ β”‚ β”‚ └─ mk.movie_id:27!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ mi_idx.movie_id:8!null\n" + + " β”‚ β”‚ └─ mk.movie_id:27!null\n" + + " β”‚ └─ Eq\n" + + " β”‚ β”œβ”€ mk.movie_id:27!null\n" + + " β”‚ └─ cc.movie_id:11\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ n.gender:2\n" + - " β”‚ β”‚ └─ m (longtext)\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”œβ”€ it2.id:23!null\n" + + " β”‚ β”‚ └─ mi_idx.info_type_id:9!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:6!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:20!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:20!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:11\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:20!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.id:16!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ cc.status_id:13!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.id:14!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.subject_id:12!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi_idx.movie_id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ cc.movie_id:11\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ m (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.note:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [n.id:2!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (9-15)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:6!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (28-32)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:6!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-4)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: complete_cast\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ cast (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ complete+verified (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (7,8)\n" + + " β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ genres (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ β”‚ └─ TUPLE(Horror (longtext), Action (longtext), Sci-Fi (longtext), Thriller (longtext), Crime (longtext), War (longtext))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [it1.id:18!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (23-27)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ └─ votes (longtext)\n" + + " β”‚ └─ TableAlias(it2)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:20!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi_idx.movie_id:7!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ └─ cc.movie_id:26\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:13!null\n" + - " β”‚ └─ mk.keyword_id:6!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:20!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:10!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.movie_id:7!null\n" + - " β”‚ β”‚ └─ cc.movie_id:26\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:15!null\n" + - " β”‚ └─ mi_idx.info_type_id:8!null\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:20!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:10!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:10!null\n" + - " β”‚ β”‚ └─ cc.movie_id:26\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:17!null\n" + - " β”‚ └─ mi.info_type_id:11!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Horror (longtext), Action (longtext), Sci-Fi (longtext), Thriller (longtext), Crime (longtext), War (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), violence (longtext), blood (longtext), gore (longtext), death (longtext), female-nudity (longtext), hospital (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ votes (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ genres (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (16,17)\n" + - " β”‚ └─ tableId: 5\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:20!null\n" + - " β”‚ └─ cc.movie_id:26\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ ci.note:2\n" + - " β”‚ β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct2.id:22!null\n" + - " β”‚ └─ cc.status_id:28!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct2.kind:1!null\n" + - " β”‚ β”‚ └─ complete+verified (longtext)\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cct1.id:24!null\n" + - " β”‚ └─ cc.subject_id:27!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cct1.kind:1!null\n" + - " β”‚ β”‚ └─ cast (longtext)\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ β”œβ”€ columns: [id kind]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ └─ tableId: 2\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”œβ”€ colSet: (18,19)\n" + + " β”‚ └─ tableId: 6\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ └─ TUPLE(murder (longtext), violence (longtext), blood (longtext), gore (longtext), death (longtext), female-nudity (longtext), hospital (longtext))\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”œβ”€ keys: [k.id:25!null]\n" + + " β”œβ”€ colSet: (33-35)\n" + + " β”œβ”€ tableId: 10\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_keyword\n" + + " └─ columns: [movie_id keyword_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(n.name) as writer, min(t.title) as complete_violent_movie]\n" + @@ -24762,82 +24923,86 @@ WHERE cct1.kind = 'cast' " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.gender = 'm')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = cc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Action', 'Sci-Fi', 'Thriller', 'Crime', 'War'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.movie_id = cc.movie_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct2.kind = 'complete+verified')\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”œβ”€ ((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (((ci.movie_id = mi.movie_id) AND (mi.movie_id = cc.movie_id)) AND (mi.movie_id = mi_idx.movie_id))\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mi_idx.movie_id = cc.movie_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (n.gender = 'm')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct2.kind = 'complete+verified')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Action', 'Sci-Fi', 'Thriller', 'Crime', 'War'))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it1.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ └─ TableAlias(it2)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”œβ”€ columns: [movie_id keyword_id]\n" + + " └─ keys: k.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(n.name) as writer, min(t.title) as complete_violent_movie]\n" + @@ -24851,82 +25016,86 @@ WHERE cct1.kind = 'cast' " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id title]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (n.id = ci.person_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.gender = 'm')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = cc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi.movie_id) AND (mi.movie_id = cc.movie_id)) AND (it1.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Action', 'Sci-Fi', 'Thriller', 'Crime', 'War'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.movie_id = cc.movie_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct2.id = cc.status_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct2.kind = 'complete+verified')\n" + - " β”‚ └─ TableAlias(cct2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cct1.id = cc.subject_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + - " β”‚ └─ TableAlias(cct1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: comp_cast_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ TableAlias(cc)\n" + - " └─ Table\n" + - " β”œβ”€ name: complete_cast\n" + - " └─ columns: [movie_id subject_id status_id]\n" + + " β”œβ”€ ((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (mk.movie_id = cc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (it2.id = mi_idx.info_type_id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (((ci.movie_id = mi.movie_id) AND (mi.movie_id = cc.movie_id)) AND (mi.movie_id = mi_idx.movie_id))\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct2.id = cc.status_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.id = cc.subject_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mi_idx.movie_id = cc.movie_id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (n.gender = 'm')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id note]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cc)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(complete_cast)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [complete_cast.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id subject_id status_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cct1.kind = 'cast')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cct1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (cct2.kind = 'complete+verified')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cct2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: comp_cast_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Action', 'Sci-Fi', 'Thriller', 'Crime', 'War'))\n" + + " β”‚ β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ keys: it1.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ └─ TableAlias(it2)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + + " β”‚ └─ TableAlias(k)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: keyword\n" + + " β”‚ └─ columns: [id keyword]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”œβ”€ columns: [movie_id keyword_id]\n" + + " └─ keys: k.id\n" + "", }, { @@ -24989,7 +25158,7 @@ WHERE ci.note IN ('(writer)', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi.info):0!null->movie_budget:0, min(mi_idx.info):1!null->movie_votes:0, min(n.name):2!null->writer:0, min(t.title):3!null->violent_liongate_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi.info:12!null), MIN(mi_idx.info:9!null), MIN(n.name:3!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi.info:25!null), MIN(mi_idx.info:20!null), MIN(n.name:3!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + @@ -24998,19 +25167,19 @@ WHERE ci.note IN ('(writer)', " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:23!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:18!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ ci.movie_id:24!null\n" + + " β”‚ β”‚ β”‚ └─ ci.movie_id:14!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ └─ mk.movie_id:7!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:13!null\n" + + " β”‚ └─ mc.movie_id:11!null\n" + " β”œβ”€ TableAlias(t)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + @@ -25019,7 +25188,7 @@ WHERE ci.note IN ('(writer)', " └─ InnerJoin\n" + " β”œβ”€ Eq\n" + " β”‚ β”œβ”€ n.id:2!null\n" + - " β”‚ └─ ci.person_id:23!null\n" + + " β”‚ └─ ci.person_id:13!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ n.gender:2\n" + @@ -25034,135 +25203,132 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:24!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:14!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:23!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:23!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.movie_id:11!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:14!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:18!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi_idx.movie_id:7!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi_idx.movie_id:18!null\n" + + " β”‚ β”‚ β”‚ └─ mc.movie_id:11!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:5!null\n" + - " β”‚ β”‚ └─ mc.movie_id:13!null\n" + + " β”‚ β”‚ β”œβ”€ mi.movie_id:23!null\n" + + " β”‚ β”‚ └─ mk.movie_id:7!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:15!null\n" + - " β”‚ └─ mk.keyword_id:6!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”œβ”€ mi_idx.movie_id:18!null\n" + + " β”‚ └─ mk.movie_id:7!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ mk.movie_id:7!null\n" + + " β”‚ β”‚ └─ mc.movie_id:11!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TUPLE(murder (longtext), violence (longtext), blood (longtext), gore (longtext), death (longtext), female-nudity (longtext), hospital (longtext))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [k.id:5!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (37-39)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Lionsgate (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LionsgateΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cn.id:9!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (22-26)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ ci.note:2\n" + + " β”‚ β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mc.movie_id:11!null]\n" + + " β”‚ β”œβ”€ colSet: (1-7)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ └─ columns: [person_id movie_id note]\n" + " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:24!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:10!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:7!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.movie_id:7!null\n" + - " β”‚ β”‚ └─ mc.movie_id:13!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:17!null\n" + - " β”‚ └─ mi_idx.info_type_id:8!null\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:24!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:10!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:10!null\n" + - " β”‚ β”‚ └─ mc.movie_id:13!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:19!null\n" + - " β”‚ └─ mi.info_type_id:11!null\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ mi.movie_id:23!null\n" + + " β”‚ └─ mi_idx.movie_id:18!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ votes (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it2.id:16!null]\n" + + " β”‚ β”œβ”€ colSet: (32-36)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ LookupJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Horror (longtext), Thriller (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:24!null\n" + - " β”‚ β”‚ └─ mc.movie_id:13!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:21!null\n" + - " β”‚ └─ mc.company_id:14!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), violence (longtext), blood (longtext), gore (longtext), death (longtext), female-nudity (longtext), hospital (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ votes (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ genres (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (15,16)\n" + - " β”‚ └─ tableId: 3\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + - " β”‚ β”‚ β”‚ └─ Lionsgate (longtext)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + - " β”‚ β”‚ └─ LionsgateΓΏ (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ Filter\n" + - " β”œβ”€ HashIn\n" + - " β”‚ β”œβ”€ ci.note:2\n" + - " β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ └─ genres (longtext)\n" + + " β”‚ └─ TableAlias(it1)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”œβ”€ colSet: (15,16)\n" + + " β”‚ └─ tableId: 3\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ └─ TUPLE(Horror (longtext), Thriller (longtext))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”œβ”€ keys: [it1.id:21!null]\n" + + " β”œβ”€ colSet: (27-31)\n" + + " β”œβ”€ tableId: 7\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_info\n" + + " └─ columns: [movie_id info_type_id info]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(n.name) as writer, min(t.title) as violent_liongate_movie]\n" + @@ -25184,65 +25350,69 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name gender]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”œβ”€ ((((((ci.movie_id = mi.movie_id) AND (mi.movie_id = mc.movie_id)) AND (ci.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = mc.movie_id)) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.movie_id = mc.movie_id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ keys: k.id\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((cn.name >= 'Lionsgate') AND (cn.name <= 'LionsgateΓΏ'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [person_id movie_id note]\n" + + " β”‚ └─ keys: mc.movie_id\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = mc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi.movie_id) AND (mi.movie_id = mc.movie_id)) AND (it1.id = mi.info_type_id))\n" + + " β”œβ”€ (mi.movie_id = mi_idx.movie_id)\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it2.id\n" + + " └─ LookupJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Thriller'))\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ └─ TableAlias(it1)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mc.movie_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((cn.name >= 'Lionsgate') AND (cn.name <= 'LionsgateΓΏ'))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ Filter\n" + - " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ Filter\n" + + " β”œβ”€ (mi.info HASH IN ('Horror', 'Thriller'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: it1.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(n.name) as writer, min(t.title) as violent_liongate_movie]\n" + @@ -25264,65 +25434,69 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name gender]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”œβ”€ ((((((ci.movie_id = mi.movie_id) AND (mi.movie_id = mc.movie_id)) AND (ci.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = mc.movie_id)) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.movie_id = mc.movie_id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ keys: k.id\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((cn.name >= 'Lionsgate') AND (cn.name <= 'LionsgateΓΏ'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [person_id movie_id note]\n" + + " β”‚ └─ keys: mc.movie_id\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = mc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi.movie_id) AND (mi.movie_id = mc.movie_id)) AND (it1.id = mi.info_type_id))\n" + + " β”œβ”€ (mi.movie_id = mi_idx.movie_id)\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it2.id\n" + + " └─ LookupJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Thriller'))\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ └─ TableAlias(it1)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mc.movie_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((cn.name >= 'Lionsgate') AND (cn.name <= 'LionsgateΓΏ'))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ Filter\n" + - " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ Filter\n" + + " β”œβ”€ (mi.info HASH IN ('Horror', 'Thriller'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: it1.id\n" + "", }, { @@ -25390,7 +25564,7 @@ WHERE ci.note IN ('(writer)', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi.info):0!null->movie_budget:0, min(mi_idx.info):1!null->movie_votes:0, min(n.name):2!null->writer:0, min(t.title):3!null->violent_liongate_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi.info:13!null), MIN(mi_idx.info:10!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi.info:27!null), MIN(mi_idx.info:22!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + @@ -25399,19 +25573,19 @@ WHERE ci.note IN ('(writer)', " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:11!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:25!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:20!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ ci.movie_id:26!null\n" + + " β”‚ β”‚ β”‚ └─ ci.movie_id:16!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:6!null\n" + + " β”‚ β”‚ └─ mk.movie_id:8!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:14!null\n" + + " β”‚ └─ mc.movie_id:12!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + @@ -25436,7 +25610,7 @@ WHERE ci.note IN ('(writer)', " └─ InnerJoin\n" + " β”œβ”€ Eq\n" + " β”‚ β”œβ”€ n.id:3!null\n" + - " β”‚ └─ ci.person_id:25!null\n" + + " β”‚ └─ ci.person_id:15!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ n.gender:2\n" + @@ -25451,137 +25625,134 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:26!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:6!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:16!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:25!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:25!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.movie_id:12!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:11!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:6!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:16!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:20!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi_idx.movie_id:8!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:6!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi_idx.movie_id:20!null\n" + + " β”‚ β”‚ β”‚ └─ mc.movie_id:12!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:6!null\n" + - " β”‚ β”‚ └─ mc.movie_id:14!null\n" + + " β”‚ β”‚ β”œβ”€ mi.movie_id:25!null\n" + + " β”‚ β”‚ └─ mk.movie_id:8!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:17!null\n" + - " β”‚ └─ mk.keyword_id:7!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”œβ”€ mi_idx.movie_id:20!null\n" + + " β”‚ └─ mk.movie_id:8!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ mk.movie_id:8!null\n" + + " β”‚ β”‚ └─ mc.movie_id:12!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TUPLE(murder (longtext), violence (longtext), blood (longtext), gore (longtext), death (longtext), female-nudity (longtext), hospital (longtext))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [k.id:6!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (37-39)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Lionsgate (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LionsgateΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ mc.note LIKE '%(Blu-ray)%'\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cn.id:10!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (22-26)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id note]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ ci.note:2\n" + + " β”‚ β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mc.movie_id:12!null]\n" + + " β”‚ β”œβ”€ colSet: (1-7)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ └─ columns: [person_id movie_id note]\n" + " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:26!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:11!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:8!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.movie_id:8!null\n" + - " β”‚ β”‚ └─ mc.movie_id:14!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:19!null\n" + - " β”‚ └─ mi_idx.info_type_id:9!null\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:26!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:11!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:11!null\n" + - " β”‚ β”‚ └─ mc.movie_id:14!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:21!null\n" + - " β”‚ └─ mi.info_type_id:12!null\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ mi.movie_id:25!null\n" + + " β”‚ └─ mi_idx.movie_id:20!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ votes (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it2.id:18!null]\n" + + " β”‚ β”œβ”€ colSet: (32-36)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ LookupJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Horror (longtext), Thriller (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:26!null\n" + - " β”‚ β”‚ └─ mc.movie_id:14!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:23!null\n" + - " β”‚ └─ mc.company_id:15!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note LIKE '%(Blu-ray)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), violence (longtext), blood (longtext), gore (longtext), death (longtext), female-nudity (longtext), hospital (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ votes (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ genres (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (15,16)\n" + - " β”‚ └─ tableId: 3\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + - " β”‚ β”‚ β”‚ └─ Lionsgate (longtext)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + - " β”‚ β”‚ └─ LionsgateΓΏ (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ Filter\n" + - " β”œβ”€ HashIn\n" + - " β”‚ β”œβ”€ ci.note:2\n" + - " β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ └─ genres (longtext)\n" + + " β”‚ └─ TableAlias(it1)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”œβ”€ colSet: (15,16)\n" + + " β”‚ └─ tableId: 3\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ └─ TUPLE(Horror (longtext), Thriller (longtext))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”œβ”€ keys: [it1.id:23!null]\n" + + " β”œβ”€ colSet: (27-31)\n" + + " β”œβ”€ tableId: 7\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_info\n" + + " └─ columns: [movie_id info_type_id info]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(n.name) as writer, min(t.title) as violent_liongate_movie]\n" + @@ -25605,67 +25776,71 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name gender]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”œβ”€ ((((((ci.movie_id = mi.movie_id) AND (mi.movie_id = mc.movie_id)) AND (ci.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = mc.movie_id)) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.movie_id = mc.movie_id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ keys: k.id\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((cn.name >= 'Lionsgate') AND (cn.name <= 'LionsgateΓΏ'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ mc.note LIKE '%(Blu-ray)%'\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id note]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [person_id movie_id note]\n" + + " β”‚ └─ keys: mc.movie_id\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = mc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi.movie_id) AND (mi.movie_id = mc.movie_id)) AND (it1.id = mi.info_type_id))\n" + + " β”œβ”€ (mi.movie_id = mi_idx.movie_id)\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it2.id\n" + + " └─ LookupJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Thriller'))\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ └─ TableAlias(it1)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mc.movie_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note LIKE '%(Blu-ray)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((cn.name >= 'Lionsgate') AND (cn.name <= 'LionsgateΓΏ'))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ Filter\n" + - " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ Filter\n" + + " β”œβ”€ (mi.info HASH IN ('Horror', 'Thriller'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: it1.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(n.name) as writer, min(t.title) as violent_liongate_movie]\n" + @@ -25689,67 +25864,71 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name gender]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”œβ”€ ((((((ci.movie_id = mi.movie_id) AND (mi.movie_id = mc.movie_id)) AND (ci.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = mc.movie_id)) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.movie_id = mc.movie_id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ keys: k.id\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((cn.name >= 'Lionsgate') AND (cn.name <= 'LionsgateΓΏ'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ mc.note LIKE '%(Blu-ray)%'\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id note]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [person_id movie_id note]\n" + + " β”‚ └─ keys: mc.movie_id\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = mc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi.movie_id) AND (mi.movie_id = mc.movie_id)) AND (it1.id = mi.info_type_id))\n" + + " β”œβ”€ (mi.movie_id = mi_idx.movie_id)\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it2.id\n" + + " └─ LookupJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Thriller'))\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ └─ TableAlias(it1)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mc.movie_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ mc.note LIKE '%(Blu-ray)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((cn.name >= 'Lionsgate') AND (cn.name <= 'LionsgateΓΏ'))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ Filter\n" + - " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ Filter\n" + + " β”œβ”€ (mi.info HASH IN ('Horror', 'Thriller'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: it1.id\n" + "", }, { @@ -25815,7 +25994,7 @@ WHERE ci.note IN ('(writer)', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi.info):0!null->movie_budget:0, min(mi_idx.info):1!null->movie_votes:0, min(n.name):2!null->writer:0, min(t.title):3!null->violent_liongate_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi.info:11!null), MIN(mi_idx.info:8!null), MIN(n.name:3!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi.info:24!null), MIN(mi_idx.info:19!null), MIN(n.name:3!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + @@ -25824,19 +26003,19 @@ WHERE ci.note IN ('(writer)', " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:22!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:17!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ ci.movie_id:23!null\n" + + " β”‚ β”‚ β”‚ └─ ci.movie_id:13!null\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ └─ mk.movie_id:6!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:12!null\n" + + " β”‚ └─ mc.movie_id:10!null\n" + " β”œβ”€ TableAlias(t)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + @@ -25845,7 +26024,7 @@ WHERE ci.note IN ('(writer)', " └─ InnerJoin\n" + " β”œβ”€ Eq\n" + " β”‚ β”œβ”€ n.id:2!null\n" + - " β”‚ └─ ci.person_id:22!null\n" + + " β”‚ └─ ci.person_id:12!null\n" + " β”œβ”€ TableAlias(n)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + @@ -25856,135 +26035,132 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:23!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:13!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi.movie_id:22!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:22!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc.movie_id:10!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:13!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:17!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:4!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mi_idx.movie_id:17!null\n" + + " β”‚ β”‚ β”‚ └─ mc.movie_id:10!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:4!null\n" + - " β”‚ β”‚ └─ mc.movie_id:12!null\n" + + " β”‚ β”‚ β”œβ”€ mi.movie_id:22!null\n" + + " β”‚ β”‚ └─ mk.movie_id:6!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:14!null\n" + - " β”‚ └─ mk.keyword_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ β”œβ”€ mi_idx.movie_id:17!null\n" + + " β”‚ └─ mk.movie_id:6!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ mk.movie_id:6!null\n" + + " β”‚ β”‚ └─ mc.movie_id:10!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TUPLE(murder (longtext), violence (longtext), blood (longtext), gore (longtext), death (longtext), female-nudity (longtext), hospital (longtext))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [k.id:4!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (37-39)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Lionsgate (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LionsgateΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cn.id:8!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (22-26)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ ci.note:2\n" + + " β”‚ β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”œβ”€ keys: [mc.movie_id:10!null]\n" + + " β”‚ β”œβ”€ colSet: (1-7)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ └─ columns: [person_id movie_id note]\n" + " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:23!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.movie_id:6!null\n" + - " β”‚ β”‚ └─ mc.movie_id:12!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it2.id:16!null\n" + - " β”‚ └─ mi_idx.info_type_id:7!null\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:23!null\n" + - " β”‚ β”‚ β”‚ └─ mi.movie_id:9!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ mi.movie_id:9!null\n" + - " β”‚ β”‚ └─ mc.movie_id:12!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it1.id:18!null\n" + - " β”‚ └─ mi.info_type_id:10!null\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ mi.movie_id:22!null\n" + + " β”‚ └─ mi_idx.movie_id:17!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ votes (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it2.id:15!null]\n" + + " β”‚ β”œβ”€ colSet: (32-36)\n" + + " β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ LookupJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Horror (longtext), Action (longtext), Sci-Fi (longtext), Thriller (longtext), Crime (longtext), War (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:23!null\n" + - " β”‚ β”‚ └─ mc.movie_id:12!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn.id:20!null\n" + - " β”‚ └─ mc.company_id:13!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(murder (longtext), violence (longtext), blood (longtext), gore (longtext), death (longtext), female-nudity (longtext), hospital (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ votes (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ genres (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (15,16)\n" + - " β”‚ └─ tableId: 3\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + - " β”‚ β”‚ β”‚ └─ Lionsgate (longtext)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ cn.name:1!null\n" + - " β”‚ β”‚ └─ LionsgateΓΏ (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ Filter\n" + - " β”œβ”€ HashIn\n" + - " β”‚ β”œβ”€ ci.note:2\n" + - " β”‚ └─ TUPLE((writer) (longtext), (head writer) (longtext), (written by) (longtext), (story) (longtext), (story editor) (longtext))\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ └─ genres (longtext)\n" + + " β”‚ └─ TableAlias(it1)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”œβ”€ colSet: (15,16)\n" + + " β”‚ └─ tableId: 3\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ └─ TUPLE(Horror (longtext), Action (longtext), Sci-Fi (longtext), Thriller (longtext), Crime (longtext), War (longtext))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”œβ”€ keys: [it1.id:20!null]\n" + + " β”œβ”€ colSet: (27-31)\n" + + " β”œβ”€ tableId: 7\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_info\n" + + " └─ columns: [movie_id info_type_id info]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(n.name) as writer, min(t.title) as violent_liongate_movie]\n" + @@ -26004,65 +26180,69 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”œβ”€ ((((((ci.movie_id = mi.movie_id) AND (mi.movie_id = mc.movie_id)) AND (ci.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = mc.movie_id)) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.movie_id = mc.movie_id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ keys: k.id\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((cn.name >= 'Lionsgate') AND (cn.name <= 'LionsgateΓΏ'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [person_id movie_id note]\n" + + " β”‚ └─ keys: mc.movie_id\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = mc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi.movie_id) AND (mi.movie_id = mc.movie_id)) AND (it1.id = mi.info_type_id))\n" + + " β”œβ”€ (mi.movie_id = mi_idx.movie_id)\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it2.id\n" + + " └─ LookupJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Action', 'Sci-Fi', 'Thriller', 'Crime', 'War'))\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ └─ TableAlias(it1)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mc.movie_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((cn.name >= 'Lionsgate') AND (cn.name <= 'LionsgateΓΏ'))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ Filter\n" + - " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ Filter\n" + + " β”œβ”€ (mi.info HASH IN ('Horror', 'Action', 'Sci-Fi', 'Thriller', 'Crime', 'War'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: it1.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi.info) as movie_budget, min(mi_idx.info) as movie_votes, min(n.name) as writer, min(t.title) as violent_liongate_movie]\n" + @@ -26082,65 +26262,69 @@ WHERE ci.note IN ('(writer)', " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + " └─ InnerJoin\n" + - " β”œβ”€ (((((ci.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + + " β”œβ”€ ((((((ci.movie_id = mi.movie_id) AND (mi.movie_id = mc.movie_id)) AND (ci.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = mc.movie_id)) AND (mi.movie_id = mk.movie_id)) AND (mi_idx.movie_id = mk.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mk.movie_id = mc.movie_id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ TableAlias(mk)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ β”‚ └─ keys: k.id\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((cn.name >= 'Lionsgate') AND (cn.name <= 'LionsgateΓΏ'))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(cn)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.company_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: cn.id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + + " β”‚ └─ TableAlias(ci)\n" + + " β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”œβ”€ columns: [person_id movie_id note]\n" + + " β”‚ └─ keys: mc.movie_id\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((ci.movie_id = mi_idx.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = mc.movie_id)) AND (it2.id = mi_idx.info_type_id))\n" + - " β”œβ”€ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((ci.movie_id = mi.movie_id) AND (mi.movie_id = mc.movie_id)) AND (it1.id = mi.info_type_id))\n" + + " β”œβ”€ (mi.movie_id = mi_idx.movie_id)\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it2.info = 'votes')\n" + + " β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mi_idx)\n" + + " β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it2.id\n" + + " └─ LookupJoin\n" + " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Horror', 'Action', 'Sci-Fi', 'Thriller', 'Crime', 'War'))\n" + - " β”‚ └─ TableAlias(mi)\n" + + " β”‚ β”œβ”€ (it1.info = 'genres')\n" + + " β”‚ └─ TableAlias(it1)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mc.movie_id) AND (cn.id = mc.company_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('murder', 'violence', 'blood', 'gore', 'death', 'female-nudity', 'hospital'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'votes')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'genres')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((cn.name >= 'Lionsgate') AND (cn.name <= 'LionsgateΓΏ'))\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ Filter\n" + - " β”œβ”€ (ci.note HASH IN ('(writer)', '(head writer)', '(written by)', '(story)', '(story editor)'))\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id note]\n" + + " β”‚ β”œβ”€ name: info_type\n" + + " β”‚ └─ columns: [id info]\n" + + " └─ Filter\n" + + " β”œβ”€ (mi.info HASH IN ('Horror', 'Action', 'Sci-Fi', 'Thriller', 'Crime', 'War'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: it1.id\n" + "", }, { @@ -26166,154 +26350,157 @@ WHERE k.keyword ='10,000-mile-club' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(lt.link):0!null->link_type:0, min(t1.title):1!null->first_movie:0, min(t2.title):2!null->second_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(lt.link:10!null), MIN(t1.title:3!null), MIN(t2.title:1!null)\n" + + " β”œβ”€ select: MIN(lt.link:3!null), MIN(t1.title:10!null), MIN(t2.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ml.linked_movie_id:5!null\n" + - " β”‚ └─ t2.id:0!null\n" + - " β”œβ”€ TableAlias(t2)\n" + - " β”‚ └─ ProcessTable\n" + + " └─ LookupJoin\n" + + " β”œβ”€ AND\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mk.keyword_id:12!null\n" + + " β”‚ β”‚ β”‚ └─ k.id:4!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ mk.movie_id:11!null\n" + + " β”‚ β”‚ └─ t1.id:9!null\n" + + " β”‚ └─ Eq\n" + + " β”‚ β”œβ”€ mk.movie_id:11!null\n" + + " β”‚ └─ ml.movie_id:6!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ml.movie_id:6!null\n" + + " β”‚ β”‚ └─ t1.id:9!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ml.linked_movie_id:7!null\n" + + " β”‚ β”‚ β”‚ └─ t2.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(t2)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 10,000-mile-club (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [lt.id:2!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (9-12)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_link\n" + + " β”‚ β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + + " β”‚ └─ TableAlias(t1)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t1.id:2!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:7!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ml.movie_id:4!null\n" + - " β”‚ β”‚ └─ t1.id:2!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mk.movie_id:7!null\n" + - " β”‚ └─ t1.id:2!null\n" + - " β”œβ”€ TableAlias(t1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ β”œβ”€ columns: [id title]\n" + - " β”‚ β”œβ”€ colSet: (13-24)\n" + - " β”‚ └─ tableId: 5\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ lt.id:9!null\n" + - " β”‚ β”‚ └─ ml.link_type_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mk.movie_id:7!null\n" + - " β”‚ └─ ml.movie_id:4!null\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ mk.keyword_id:8!null\n" + - " β”‚ └─ k.id:11!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(lt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ └─ 10,000-mile-club (longtext)\n" + - " └─ TableAlias(k)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: keyword\n" + - " └─ columns: [id keyword]\n" + + " β”‚ β”œβ”€ columns: [id title]\n" + + " β”‚ β”œβ”€ colSet: (13-24)\n" + + " β”‚ └─ tableId: 5\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”œβ”€ keys: [t1.id:9!null]\n" + + " β”œβ”€ colSet: (6-8)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_keyword\n" + + " └─ columns: [movie_id keyword_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(lt.link) as link_type, min(t1.title) as first_movie, min(t2.title) as second_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(lt.link), MIN(t1.title), MIN(t2.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ml.linked_movie_id = t2.id)\n" + - " β”œβ”€ TableAlias(t2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((t1.id = mk.movie_id) AND (ml.movie_id = t1.id)) AND (mk.movie_id = t1.id))\n" + - " β”œβ”€ TableAlias(t1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((lt.id = ml.link_type_id) AND (mk.movie_id = ml.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (mk.keyword_id = k.id)\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ Filter\n" + - " β”œβ”€ (k.keyword = '10,000-mile-club')\n" + - " └─ TableAlias(k)\n" + - " └─ Table\n" + - " β”œβ”€ name: keyword\n" + - " └─ columns: [id keyword]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((mk.keyword_id = k.id) AND (mk.movie_id = t1.id)) AND (mk.movie_id = ml.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (ml.movie_id = t1.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (ml.linked_movie_id = t2.id)\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(t2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword = '10,000-mile-club')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id linked_movie_id link_type_id]\n" + + " β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ └─ TableAlias(t1)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: title\n" + + " β”‚ └─ columns: [id title]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”œβ”€ columns: [movie_id keyword_id]\n" + + " └─ keys: t1.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(lt.link) as link_type, min(t1.title) as first_movie, min(t2.title) as second_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(lt.link), MIN(t1.title), MIN(t2.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ml.linked_movie_id = t2.id)\n" + - " β”œβ”€ TableAlias(t2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((t1.id = mk.movie_id) AND (ml.movie_id = t1.id)) AND (mk.movie_id = t1.id))\n" + - " β”œβ”€ TableAlias(t1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((lt.id = ml.link_type_id) AND (mk.movie_id = ml.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (mk.keyword_id = k.id)\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ Filter\n" + - " β”œβ”€ (k.keyword = '10,000-mile-club')\n" + - " └─ TableAlias(k)\n" + - " └─ Table\n" + - " β”œβ”€ name: keyword\n" + - " └─ columns: [id keyword]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((mk.keyword_id = k.id) AND (mk.movie_id = t1.id)) AND (mk.movie_id = ml.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (ml.movie_id = t1.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (ml.linked_movie_id = t2.id)\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(t2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword = '10,000-mile-club')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id linked_movie_id link_type_id]\n" + + " β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ └─ TableAlias(t1)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: title\n" + + " β”‚ └─ columns: [id title]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”œβ”€ columns: [movie_id keyword_id]\n" + + " └─ keys: t1.id\n" + "", }, { @@ -26339,154 +26526,157 @@ WHERE k.keyword ='character-name-in-title' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(lt.link):0!null->link_type:0, min(t1.title):1!null->first_movie:0, min(t2.title):2!null->second_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(lt.link:10!null), MIN(t1.title:3!null), MIN(t2.title:1!null)\n" + + " β”œβ”€ select: MIN(lt.link:3!null), MIN(t1.title:10!null), MIN(t2.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ml.linked_movie_id:5!null\n" + - " β”‚ └─ t2.id:0!null\n" + - " β”œβ”€ TableAlias(t2)\n" + - " β”‚ └─ ProcessTable\n" + + " └─ LookupJoin\n" + + " β”œβ”€ AND\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mk.keyword_id:12!null\n" + + " β”‚ β”‚ β”‚ └─ k.id:4!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ mk.movie_id:11!null\n" + + " β”‚ β”‚ └─ t1.id:9!null\n" + + " β”‚ └─ Eq\n" + + " β”‚ β”œβ”€ mk.movie_id:11!null\n" + + " β”‚ └─ ml.movie_id:6!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ ml.movie_id:6!null\n" + + " β”‚ β”‚ └─ t1.id:9!null\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ml.linked_movie_id:7!null\n" + + " β”‚ β”‚ β”‚ └─ t2.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(t2)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ character-name-in-title (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [lt.id:2!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (9-12)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_link\n" + + " β”‚ β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + + " β”‚ └─ TableAlias(t1)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t1.id:2!null\n" + - " β”‚ β”‚ β”‚ └─ mk.movie_id:7!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ml.movie_id:4!null\n" + - " β”‚ β”‚ └─ t1.id:2!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mk.movie_id:7!null\n" + - " β”‚ └─ t1.id:2!null\n" + - " β”œβ”€ TableAlias(t1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ β”œβ”€ columns: [id title]\n" + - " β”‚ β”œβ”€ colSet: (13-24)\n" + - " β”‚ └─ tableId: 5\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ lt.id:9!null\n" + - " β”‚ β”‚ └─ ml.link_type_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mk.movie_id:7!null\n" + - " β”‚ └─ ml.movie_id:4!null\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ mk.keyword_id:8!null\n" + - " β”‚ └─ k.id:11!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(lt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ └─ character-name-in-title (longtext)\n" + - " └─ TableAlias(k)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: keyword\n" + - " └─ columns: [id keyword]\n" + + " β”‚ β”œβ”€ columns: [id title]\n" + + " β”‚ β”œβ”€ colSet: (13-24)\n" + + " β”‚ └─ tableId: 5\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”œβ”€ keys: [t1.id:9!null]\n" + + " β”œβ”€ colSet: (6-8)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_keyword\n" + + " └─ columns: [movie_id keyword_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(lt.link) as link_type, min(t1.title) as first_movie, min(t2.title) as second_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(lt.link), MIN(t1.title), MIN(t2.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ml.linked_movie_id = t2.id)\n" + - " β”œβ”€ TableAlias(t2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((t1.id = mk.movie_id) AND (ml.movie_id = t1.id)) AND (mk.movie_id = t1.id))\n" + - " β”œβ”€ TableAlias(t1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((lt.id = ml.link_type_id) AND (mk.movie_id = ml.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (mk.keyword_id = k.id)\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ Filter\n" + - " β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " └─ TableAlias(k)\n" + - " └─ Table\n" + - " β”œβ”€ name: keyword\n" + - " └─ columns: [id keyword]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((mk.keyword_id = k.id) AND (mk.movie_id = t1.id)) AND (mk.movie_id = ml.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (ml.movie_id = t1.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (ml.linked_movie_id = t2.id)\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(t2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id linked_movie_id link_type_id]\n" + + " β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ └─ TableAlias(t1)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: title\n" + + " β”‚ └─ columns: [id title]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”œβ”€ columns: [movie_id keyword_id]\n" + + " └─ keys: t1.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(lt.link) as link_type, min(t1.title) as first_movie, min(t2.title) as second_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(lt.link), MIN(t1.title), MIN(t2.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ml.linked_movie_id = t2.id)\n" + - " β”œβ”€ TableAlias(t2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((t1.id = mk.movie_id) AND (ml.movie_id = t1.id)) AND (mk.movie_id = t1.id))\n" + - " β”œβ”€ TableAlias(t1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((lt.id = ml.link_type_id) AND (mk.movie_id = ml.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (mk.keyword_id = k.id)\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ Filter\n" + - " β”œβ”€ (k.keyword = 'character-name-in-title')\n" + - " └─ TableAlias(k)\n" + - " └─ Table\n" + - " β”œβ”€ name: keyword\n" + - " └─ columns: [id keyword]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((mk.keyword_id = k.id) AND (mk.movie_id = t1.id)) AND (mk.movie_id = ml.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (ml.movie_id = t1.id)\n" + + " β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”œβ”€ (ml.linked_movie_id = t2.id)\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(t2)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (k.keyword = 'character-name-in-title')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id linked_movie_id link_type_id]\n" + + " β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ └─ TableAlias(t1)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: title\n" + + " β”‚ └─ columns: [id title]\n" + + " └─ TableAlias(mk)\n" + + " └─ IndexedTableAccess(movie_keyword)\n" + + " β”œβ”€ index: [movie_keyword.movie_id]\n" + + " β”œβ”€ columns: [movie_id keyword_id]\n" + + " └─ keys: t1.id\n" + "", }, { @@ -26545,398 +26735,402 @@ WHERE cn1.country_code = '[us]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn1.name):0!null->first_company:0, min(cn2.name):1!null->second_company:0, min(mi_idx1.info):2!null->first_rating:0, min(mi_idx2.info):3!null->second_rating:0, min(t1.title):4!null->first_movie:0, min(t2.title):5!null->second_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn1.name:33!null), MIN(cn2.name:31!null), MIN(mi_idx1.info:15!null), MIN(mi_idx2.info:12!null), MIN(t1.title:5!null), MIN(t2.title:1!null)\n" + + " β”œβ”€ select: MIN(cn1.name:21!null), MIN(cn2.name:19!null), MIN(mi_idx1.info:9!null), MIN(mi_idx2.info:25!null), MIN(t1.title:29!null), MIN(t2.title:32!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t2.id:31!null\n" + + " β”‚ β”‚ β”‚ └─ ml.linked_movie_id:3!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ t2.id:31!null\n" + + " β”‚ β”‚ └─ mi_idx2.movie_id:23!null\n" + + " β”‚ └─ Eq\n" + + " β”‚ β”œβ”€ t2.id:31!null\n" + + " β”‚ └─ mc2.movie_id:5!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t2.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ml.linked_movie_id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t1.id:28!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ml.movie_id:2!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t2.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx2.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t1.id:28!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx1.movie_id:7!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ kt2.id:22!null\n" + - " β”‚ β”‚ └─ t2.kind_id:2!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t2.id:0!null\n" + - " β”‚ └─ mc2.movie_id:16!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t2.production_year:3\n" + - " β”‚ β”‚ β”‚ └─ 2005 (smallint)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ t2.production_year:3\n" + - " β”‚ β”‚ └─ 2008 (smallint)\n" + - " β”‚ └─ TableAlias(t2)\n" + - " β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”œβ”€ t1.id:28!null\n" + + " β”‚ β”‚ └─ mc1.movie_id:26!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn1.id:20!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc1.company_id:27!null\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:2!null\n" + + " β”‚ β”‚ β”‚ └─ mc1.movie_id:26!null\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn2.id:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc2.company_id:6!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.id:16!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi_idx1.info_type_id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.linked_movie_id:3!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi_idx2.movie_id:23!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(sequel (longtext), follows (longtext), followed by (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [lt.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (45-48)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 12\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_link\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ml.linked_movie_id:3!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (30-34)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi_idx1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ml.movie_id:2!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (35-39)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt2.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(tv series (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt1.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(tv series (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (19,20)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15,16)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cn2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn1.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-7)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ tableId: 1\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LessThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi_idx2.info:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 3.0 (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx2)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [it2.id:14!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (40-44)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 11\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ TableAlias(mc1)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mi_idx1.movie_id:7!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (25-29)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ └─ TableAlias(t1)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ keys: [kt1.id:12!null]\n" + + " β”‚ β”œβ”€ colSet: (49-60)\n" + + " β”‚ β”œβ”€ tableId: 13\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + + " β”‚ └─ columns: [id title kind_id]\n" + + " └─ Filter\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t1.id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ml.movie_id:7!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t1.id:4!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx1.movie_id:13!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ kt1.id:24!null\n" + - " β”‚ β”‚ └─ t1.kind_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t1.id:4!null\n" + - " β”‚ └─ mc1.movie_id:18!null\n" + - " β”œβ”€ TableAlias(t1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ β”œβ”€ columns: [id title kind_id]\n" + - " β”‚ β”œβ”€ colSet: (49-60)\n" + - " β”‚ └─ tableId: 13\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.id:20!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ml.link_type_id:9!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:7!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx1.movie_id:13!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:7!null\n" + - " β”‚ β”‚ β”‚ └─ mc1.movie_id:18!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ml.linked_movie_id:8!null\n" + - " β”‚ β”‚ └─ mi_idx2.movie_id:10!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ml.linked_movie_id:8!null\n" + - " β”‚ └─ mc2.movie_id:16!null\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.id:26!null\n" + - " β”‚ β”‚ └─ mi_idx2.info_type_id:11!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi_idx2.movie_id:10!null\n" + - " β”‚ └─ mc2.movie_id:16!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ LessThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx2.info:2!null\n" + - " β”‚ β”‚ └─ 3.0 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.id:28!null\n" + - " β”‚ β”‚ └─ mi_idx1.info_type_id:14!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi_idx1.movie_id:13!null\n" + - " β”‚ └─ mc1.movie_id:18!null\n" + - " β”œβ”€ TableAlias(mi_idx1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + - " β”‚ β”œβ”€ colSet: (35-39)\n" + - " β”‚ └─ tableId: 10\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn2.id:30!null\n" + - " β”‚ └─ mc2.company_id:17!null\n" + - " β”œβ”€ TableAlias(mc2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn1.id:32!null\n" + - " β”‚ └─ mc1.company_id:19!null\n" + - " β”œβ”€ TableAlias(mc1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ β”œβ”€ columns: [movie_id company_id]\n" + - " β”‚ β”œβ”€ colSet: (25-29)\n" + - " β”‚ └─ tableId: 8\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ lt.link:1!null\n" + - " β”‚ β”‚ └─ TUPLE(sequel (longtext), follows (longtext), followed by (longtext))\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ kt2.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(tv series (longtext))\n" + - " β”‚ └─ TableAlias(kt2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ kt1.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(tv series (longtext))\n" + - " β”‚ └─ TableAlias(kt1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ β”œβ”€ columns: [id kind]\n" + - " β”‚ β”œβ”€ colSet: (19,20)\n" + - " β”‚ └─ tableId: 5\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (15,16)\n" + - " β”‚ └─ tableId: 3\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn1.country_code:2\n" + - " β”‚ └─ [us] (longtext)\n" + - " └─ TableAlias(cn1)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " β”œβ”€ columns: [id name country_code]\n" + - " β”œβ”€ colSet: (1-7)\n" + - " └─ tableId: 1\n" + + " β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”œβ”€ t2.production_year:3\n" + + " β”‚ β”‚ └─ 2005 (smallint)\n" + + " β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”œβ”€ t2.production_year:3\n" + + " β”‚ └─ 2008 (smallint)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(title)\n" + + " β”œβ”€ index: [title.kind_id]\n" + + " β”œβ”€ keys: [kt2.id:10!null]\n" + + " β”œβ”€ colSet: (61-72)\n" + + " β”œβ”€ tableId: 14\n" + + " └─ Table\n" + + " β”œβ”€ name: title\n" + + " └─ columns: [id title kind_id production_year]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn1.name) as first_company, min(cn2.name) as second_company, min(mi_idx1.info) as first_rating, min(mi_idx2.info) as second_rating, min(t1.title) as first_movie, min(t2.title) as second_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn1.name), MIN(cn2.name), MIN(mi_idx1.info), MIN(mi_idx2.info), MIN(t1.title), MIN(t2.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((t2.id = ml.linked_movie_id) AND (t2.id = mi_idx2.movie_id)) AND (kt2.id = t2.kind_id)) AND (t2.id = mc2.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t2.production_year >= 2005) AND (t2.production_year <= 2008))\n" + - " β”‚ └─ TableAlias(t2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((t1.id = ml.movie_id) AND (t1.id = mi_idx1.movie_id)) AND (kt1.id = t1.kind_id)) AND (t1.id = mc1.movie_id))\n" + - " β”œβ”€ TableAlias(t1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((lt.id = ml.link_type_id) AND (ml.movie_id = mi_idx1.movie_id)) AND (ml.movie_id = mc1.movie_id)) AND (ml.linked_movie_id = mi_idx2.movie_id)) AND (ml.linked_movie_id = mc2.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it2.id = mi_idx2.info_type_id) AND (mi_idx2.movie_id = mc2.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx2.info < '3.0')\n" + - " β”‚ └─ TableAlias(mi_idx2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it1.id = mi_idx1.info_type_id) AND (mi_idx1.movie_id = mc1.movie_id))\n" + - " β”œβ”€ TableAlias(mi_idx1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn2.id = mc2.company_id)\n" + - " β”œβ”€ TableAlias(mc2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn1.id = mc1.company_id)\n" + - " β”œβ”€ TableAlias(mc1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (lt.link HASH IN ('sequel', 'follows', 'followed by'))\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt2.kind HASH IN ('tv series'))\n" + - " β”‚ └─ TableAlias(kt2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt1.kind HASH IN ('tv series'))\n" + - " β”‚ └─ TableAlias(kt1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'rating')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn1.country_code = '[us]')\n" + - " └─ TableAlias(cn1)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((t2.id = ml.linked_movie_id) AND (t2.id = mi_idx2.movie_id)) AND (t2.id = mc2.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (((t1.id = ml.movie_id) AND (t1.id = mi_idx1.movie_id)) AND (t1.id = mc1.movie_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ ((cn1.id = mc1.company_id) AND (ml.movie_id = mc1.movie_id))\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (((cn2.id = mc2.company_id) AND (it1.id = mi_idx1.info_type_id)) AND (ml.linked_movie_id = mi_idx2.movie_id))\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (lt.link HASH IN ('sequel', 'follows', 'followed by'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id linked_movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ml.linked_movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi_idx1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: ml.movie_id\n" + + " β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt2.kind HASH IN ('tv series'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt1.kind HASH IN ('tv series'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cn2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cn1.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi_idx2.info < '3.0')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx2)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: it2.id\n" + + " β”‚ β”‚ └─ TableAlias(mc1)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: mi_idx1.movie_id\n" + + " β”‚ └─ TableAlias(t1)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id]\n" + + " β”‚ └─ keys: kt1.id\n" + + " └─ Filter\n" + + " β”œβ”€ ((t2.production_year >= 2005) AND (t2.production_year <= 2008))\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(title)\n" + + " β”œβ”€ index: [title.kind_id]\n" + + " β”œβ”€ columns: [id title kind_id production_year]\n" + + " └─ keys: kt2.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn1.name) as first_company, min(cn2.name) as second_company, min(mi_idx1.info) as first_rating, min(mi_idx2.info) as second_rating, min(t1.title) as first_movie, min(t2.title) as second_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn1.name), MIN(cn2.name), MIN(mi_idx1.info), MIN(mi_idx2.info), MIN(t1.title), MIN(t2.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((t2.id = ml.linked_movie_id) AND (t2.id = mi_idx2.movie_id)) AND (kt2.id = t2.kind_id)) AND (t2.id = mc2.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t2.production_year >= 2005) AND (t2.production_year <= 2008))\n" + - " β”‚ └─ TableAlias(t2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((t1.id = ml.movie_id) AND (t1.id = mi_idx1.movie_id)) AND (kt1.id = t1.kind_id)) AND (t1.id = mc1.movie_id))\n" + - " β”œβ”€ TableAlias(t1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((lt.id = ml.link_type_id) AND (ml.movie_id = mi_idx1.movie_id)) AND (ml.movie_id = mc1.movie_id)) AND (ml.linked_movie_id = mi_idx2.movie_id)) AND (ml.linked_movie_id = mc2.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it2.id = mi_idx2.info_type_id) AND (mi_idx2.movie_id = mc2.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx2.info < '3.0')\n" + - " β”‚ └─ TableAlias(mi_idx2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it1.id = mi_idx1.info_type_id) AND (mi_idx1.movie_id = mc1.movie_id))\n" + - " β”œβ”€ TableAlias(mi_idx1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn2.id = mc2.company_id)\n" + - " β”œβ”€ TableAlias(mc2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn1.id = mc1.company_id)\n" + - " β”œβ”€ TableAlias(mc1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (lt.link HASH IN ('sequel', 'follows', 'followed by'))\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt2.kind HASH IN ('tv series'))\n" + - " β”‚ └─ TableAlias(kt2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt1.kind HASH IN ('tv series'))\n" + - " β”‚ └─ TableAlias(kt1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'rating')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn1.country_code = '[us]')\n" + - " └─ TableAlias(cn1)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((t2.id = ml.linked_movie_id) AND (t2.id = mi_idx2.movie_id)) AND (t2.id = mc2.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (((t1.id = ml.movie_id) AND (t1.id = mi_idx1.movie_id)) AND (t1.id = mc1.movie_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ ((cn1.id = mc1.company_id) AND (ml.movie_id = mc1.movie_id))\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (((cn2.id = mc2.company_id) AND (it1.id = mi_idx1.info_type_id)) AND (ml.linked_movie_id = mi_idx2.movie_id))\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (lt.link HASH IN ('sequel', 'follows', 'followed by'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id linked_movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ml.linked_movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi_idx1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: ml.movie_id\n" + + " β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt2.kind HASH IN ('tv series'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt1.kind HASH IN ('tv series'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cn2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cn1.country_code = '[us]')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi_idx2.info < '3.0')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx2)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: it2.id\n" + + " β”‚ β”‚ └─ TableAlias(mc1)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: mi_idx1.movie_id\n" + + " β”‚ └─ TableAlias(t1)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id]\n" + + " β”‚ └─ keys: kt1.id\n" + + " └─ Filter\n" + + " β”œβ”€ ((t2.production_year >= 2005) AND (t2.production_year <= 2008))\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(title)\n" + + " β”œβ”€ index: [title.kind_id]\n" + + " β”œβ”€ columns: [id title kind_id production_year]\n" + + " └─ keys: kt2.id\n" + "", }, { @@ -26993,392 +27187,396 @@ WHERE cn1.country_code = '[nl]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn1.name):0!null->first_company:0, min(cn2.name):1!null->second_company:0, min(mi_idx1.info):2!null->first_rating:0, min(mi_idx2.info):3!null->second_rating:0, min(t1.title):4!null->first_movie:0, min(t2.title):5!null->second_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn1.name:33!null), MIN(cn2.name:31!null), MIN(mi_idx1.info:15!null), MIN(mi_idx2.info:12!null), MIN(t1.title:5!null), MIN(t2.title:1!null)\n" + + " β”œβ”€ select: MIN(cn1.name:21!null), MIN(cn2.name:19!null), MIN(mi_idx1.info:9!null), MIN(mi_idx2.info:25!null), MIN(t1.title:29!null), MIN(t2.title:32!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t2.id:31!null\n" + + " β”‚ β”‚ β”‚ └─ ml.linked_movie_id:3!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ t2.id:31!null\n" + + " β”‚ β”‚ └─ mi_idx2.movie_id:23!null\n" + + " β”‚ └─ Eq\n" + + " β”‚ β”œβ”€ t2.id:31!null\n" + + " β”‚ └─ mc2.movie_id:5!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t2.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ml.linked_movie_id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t1.id:28!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ml.movie_id:2!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t2.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx2.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t1.id:28!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx1.movie_id:7!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ kt2.id:22!null\n" + - " β”‚ β”‚ └─ t2.kind_id:2!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t2.id:0!null\n" + - " β”‚ └─ mc2.movie_id:16!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ t2.production_year:3\n" + - " β”‚ β”‚ └─ 2007 (int)\n" + - " β”‚ └─ TableAlias(t2)\n" + - " β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”œβ”€ t1.id:28!null\n" + + " β”‚ β”‚ └─ mc1.movie_id:26!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn1.id:20!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc1.company_id:27!null\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:2!null\n" + + " β”‚ β”‚ β”‚ └─ mc1.movie_id:26!null\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn2.id:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc2.company_id:6!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.id:16!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi_idx1.info_type_id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.linked_movie_id:3!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi_idx2.movie_id:23!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [lt.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (45-48)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 12\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_link\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ml.linked_movie_id:3!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (30-34)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi_idx1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ml.movie_id:2!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (35-39)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt2.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(tv series (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt1.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(tv series (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (19,20)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15,16)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cn2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn1.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ [nl] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-7)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ tableId: 1\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LessThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi_idx2.info:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 3.0 (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx2)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [it2.id:14!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (40-44)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 11\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ TableAlias(mc1)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mi_idx1.movie_id:7!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (25-29)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ └─ TableAlias(t1)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ keys: [kt1.id:12!null]\n" + + " β”‚ β”œβ”€ colSet: (49-60)\n" + + " β”‚ β”œβ”€ tableId: 13\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t1.id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ml.movie_id:7!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t1.id:4!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx1.movie_id:13!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ kt1.id:24!null\n" + - " β”‚ β”‚ └─ t1.kind_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t1.id:4!null\n" + - " β”‚ └─ mc1.movie_id:18!null\n" + - " β”œβ”€ TableAlias(t1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ β”œβ”€ columns: [id title kind_id]\n" + - " β”‚ β”œβ”€ colSet: (49-60)\n" + - " β”‚ └─ tableId: 13\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.id:20!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ml.link_type_id:9!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:7!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx1.movie_id:13!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:7!null\n" + - " β”‚ β”‚ β”‚ └─ mc1.movie_id:18!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ml.linked_movie_id:8!null\n" + - " β”‚ β”‚ └─ mi_idx2.movie_id:10!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ml.linked_movie_id:8!null\n" + - " β”‚ └─ mc2.movie_id:16!null\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.id:26!null\n" + - " β”‚ β”‚ └─ mi_idx2.info_type_id:11!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi_idx2.movie_id:10!null\n" + - " β”‚ └─ mc2.movie_id:16!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ LessThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx2.info:2!null\n" + - " β”‚ β”‚ └─ 3.0 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.id:28!null\n" + - " β”‚ β”‚ └─ mi_idx1.info_type_id:14!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi_idx1.movie_id:13!null\n" + - " β”‚ └─ mc1.movie_id:18!null\n" + - " β”œβ”€ TableAlias(mi_idx1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + - " β”‚ β”œβ”€ colSet: (35-39)\n" + - " β”‚ └─ tableId: 10\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn2.id:30!null\n" + - " β”‚ └─ mc2.company_id:17!null\n" + - " β”œβ”€ TableAlias(mc2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn1.id:32!null\n" + - " β”‚ └─ mc1.company_id:19!null\n" + - " β”œβ”€ TableAlias(mc1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ β”œβ”€ columns: [movie_id company_id]\n" + - " β”‚ β”œβ”€ colSet: (25-29)\n" + - " β”‚ └─ tableId: 8\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ kt2.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(tv series (longtext))\n" + - " β”‚ └─ TableAlias(kt2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ kt1.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(tv series (longtext))\n" + - " β”‚ └─ TableAlias(kt1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ β”œβ”€ columns: [id kind]\n" + - " β”‚ β”œβ”€ colSet: (19,20)\n" + - " β”‚ └─ tableId: 5\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (15,16)\n" + - " β”‚ └─ tableId: 3\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn1.country_code:2\n" + - " β”‚ └─ [nl] (longtext)\n" + - " └─ TableAlias(cn1)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " β”œβ”€ columns: [id name country_code]\n" + - " β”œβ”€ colSet: (1-7)\n" + - " └─ tableId: 1\n" + + " β”‚ └─ columns: [id title kind_id]\n" + + " └─ Filter\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ t2.production_year:3\n" + + " β”‚ └─ 2007 (int)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(title)\n" + + " β”œβ”€ index: [title.kind_id]\n" + + " β”œβ”€ keys: [kt2.id:10!null]\n" + + " β”œβ”€ colSet: (61-72)\n" + + " β”œβ”€ tableId: 14\n" + + " └─ Table\n" + + " β”œβ”€ name: title\n" + + " └─ columns: [id title kind_id production_year]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn1.name) as first_company, min(cn2.name) as second_company, min(mi_idx1.info) as first_rating, min(mi_idx2.info) as second_rating, min(t1.title) as first_movie, min(t2.title) as second_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn1.name), MIN(cn2.name), MIN(mi_idx1.info), MIN(mi_idx2.info), MIN(t1.title), MIN(t2.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((t2.id = ml.linked_movie_id) AND (t2.id = mi_idx2.movie_id)) AND (kt2.id = t2.kind_id)) AND (t2.id = mc2.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t2.production_year = 2007)\n" + - " β”‚ └─ TableAlias(t2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((t1.id = ml.movie_id) AND (t1.id = mi_idx1.movie_id)) AND (kt1.id = t1.kind_id)) AND (t1.id = mc1.movie_id))\n" + - " β”œβ”€ TableAlias(t1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((lt.id = ml.link_type_id) AND (ml.movie_id = mi_idx1.movie_id)) AND (ml.movie_id = mc1.movie_id)) AND (ml.linked_movie_id = mi_idx2.movie_id)) AND (ml.linked_movie_id = mc2.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it2.id = mi_idx2.info_type_id) AND (mi_idx2.movie_id = mc2.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx2.info < '3.0')\n" + - " β”‚ └─ TableAlias(mi_idx2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it1.id = mi_idx1.info_type_id) AND (mi_idx1.movie_id = mc1.movie_id))\n" + - " β”œβ”€ TableAlias(mi_idx1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn2.id = mc2.company_id)\n" + - " β”œβ”€ TableAlias(mc2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn1.id = mc1.company_id)\n" + - " β”œβ”€ TableAlias(mc1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt2.kind HASH IN ('tv series'))\n" + - " β”‚ └─ TableAlias(kt2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt1.kind HASH IN ('tv series'))\n" + - " β”‚ └─ TableAlias(kt1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'rating')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn1.country_code = '[nl]')\n" + - " └─ TableAlias(cn1)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((t2.id = ml.linked_movie_id) AND (t2.id = mi_idx2.movie_id)) AND (t2.id = mc2.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (((t1.id = ml.movie_id) AND (t1.id = mi_idx1.movie_id)) AND (t1.id = mc1.movie_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ ((cn1.id = mc1.company_id) AND (ml.movie_id = mc1.movie_id))\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (((cn2.id = mc2.company_id) AND (it1.id = mi_idx1.info_type_id)) AND (ml.linked_movie_id = mi_idx2.movie_id))\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id linked_movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ml.linked_movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi_idx1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: ml.movie_id\n" + + " β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt2.kind HASH IN ('tv series'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt1.kind HASH IN ('tv series'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cn2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cn1.country_code = '[nl]')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi_idx2.info < '3.0')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx2)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: it2.id\n" + + " β”‚ β”‚ └─ TableAlias(mc1)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: mi_idx1.movie_id\n" + + " β”‚ └─ TableAlias(t1)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id]\n" + + " β”‚ └─ keys: kt1.id\n" + + " └─ Filter\n" + + " β”œβ”€ (t2.production_year = 2007)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(title)\n" + + " β”œβ”€ index: [title.kind_id]\n" + + " β”œβ”€ columns: [id title kind_id production_year]\n" + + " └─ keys: kt2.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn1.name) as first_company, min(cn2.name) as second_company, min(mi_idx1.info) as first_rating, min(mi_idx2.info) as second_rating, min(t1.title) as first_movie, min(t2.title) as second_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn1.name), MIN(cn2.name), MIN(mi_idx1.info), MIN(mi_idx2.info), MIN(t1.title), MIN(t2.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((t2.id = ml.linked_movie_id) AND (t2.id = mi_idx2.movie_id)) AND (kt2.id = t2.kind_id)) AND (t2.id = mc2.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t2.production_year = 2007)\n" + - " β”‚ └─ TableAlias(t2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((t1.id = ml.movie_id) AND (t1.id = mi_idx1.movie_id)) AND (kt1.id = t1.kind_id)) AND (t1.id = mc1.movie_id))\n" + - " β”œβ”€ TableAlias(t1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((lt.id = ml.link_type_id) AND (ml.movie_id = mi_idx1.movie_id)) AND (ml.movie_id = mc1.movie_id)) AND (ml.linked_movie_id = mi_idx2.movie_id)) AND (ml.linked_movie_id = mc2.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it2.id = mi_idx2.info_type_id) AND (mi_idx2.movie_id = mc2.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx2.info < '3.0')\n" + - " β”‚ └─ TableAlias(mi_idx2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it1.id = mi_idx1.info_type_id) AND (mi_idx1.movie_id = mc1.movie_id))\n" + - " β”œβ”€ TableAlias(mi_idx1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn2.id = mc2.company_id)\n" + - " β”œβ”€ TableAlias(mc2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn1.id = mc1.company_id)\n" + - " β”œβ”€ TableAlias(mc1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt2.kind HASH IN ('tv series'))\n" + - " β”‚ └─ TableAlias(kt2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt1.kind HASH IN ('tv series'))\n" + - " β”‚ └─ TableAlias(kt1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'rating')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ Filter\n" + - " β”œβ”€ (cn1.country_code = '[nl]')\n" + - " └─ TableAlias(cn1)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((t2.id = ml.linked_movie_id) AND (t2.id = mi_idx2.movie_id)) AND (t2.id = mc2.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (((t1.id = ml.movie_id) AND (t1.id = mi_idx1.movie_id)) AND (t1.id = mc1.movie_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ ((cn1.id = mc1.company_id) AND (ml.movie_id = mc1.movie_id))\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (((cn2.id = mc2.company_id) AND (it1.id = mi_idx1.info_type_id)) AND (ml.linked_movie_id = mi_idx2.movie_id))\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link LIKE '%follow%'\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id linked_movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ml.linked_movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi_idx1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: ml.movie_id\n" + + " β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt2.kind HASH IN ('tv series'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt1.kind HASH IN ('tv series'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cn2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cn1.country_code = '[nl]')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi_idx2.info < '3.0')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx2)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: it2.id\n" + + " β”‚ β”‚ └─ TableAlias(mc1)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: mi_idx1.movie_id\n" + + " β”‚ └─ TableAlias(t1)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id]\n" + + " β”‚ └─ keys: kt1.id\n" + + " └─ Filter\n" + + " β”œβ”€ (t2.production_year = 2007)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(title)\n" + + " β”œβ”€ index: [title.kind_id]\n" + + " β”œβ”€ columns: [id title kind_id production_year]\n" + + " └─ keys: kt2.id\n" + "", }, { @@ -27439,399 +27637,403 @@ WHERE cn1.country_code != '[us]' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(cn1.name):0!null->first_company:0, min(cn2.name):1!null->second_company:0, min(mi_idx1.info):2!null->first_rating:0, min(mi_idx2.info):3!null->second_rating:0, min(t1.title):4!null->first_movie:0, min(t2.title):5!null->second_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(cn1.name:33!null), MIN(cn2.name:31!null), MIN(mi_idx1.info:15!null), MIN(mi_idx2.info:12!null), MIN(t1.title:5!null), MIN(t2.title:1!null)\n" + + " β”œβ”€ select: MIN(cn1.name:21!null), MIN(cn2.name:19!null), MIN(mi_idx1.info:9!null), MIN(mi_idx2.info:25!null), MIN(t1.title:29!null), MIN(t2.title:32!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t2.id:31!null\n" + + " β”‚ β”‚ β”‚ └─ ml.linked_movie_id:3!null\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ t2.id:31!null\n" + + " β”‚ β”‚ └─ mi_idx2.movie_id:23!null\n" + + " β”‚ └─ Eq\n" + + " β”‚ β”œβ”€ t2.id:31!null\n" + + " β”‚ └─ mc2.movie_id:5!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t2.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ml.linked_movie_id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t1.id:28!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ml.movie_id:2!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t2.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx2.movie_id:10!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t1.id:28!null\n" + + " β”‚ β”‚ β”‚ └─ mi_idx1.movie_id:7!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ kt2.id:22!null\n" + - " β”‚ β”‚ └─ t2.kind_id:2!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t2.id:0!null\n" + - " β”‚ └─ mc2.movie_id:16!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t2.production_year:3\n" + - " β”‚ β”‚ β”‚ └─ 2000 (smallint)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ t2.production_year:3\n" + - " β”‚ β”‚ └─ 2010 (smallint)\n" + - " β”‚ └─ TableAlias(t2)\n" + - " β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”œβ”€ t1.id:28!null\n" + + " β”‚ β”‚ └─ mc1.movie_id:26!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn1.id:20!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc1.company_id:27!null\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:2!null\n" + + " β”‚ β”‚ β”‚ └─ mc1.movie_id:26!null\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn2.id:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ mc2.company_id:6!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.id:16!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mi_idx1.info_type_id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.linked_movie_id:3!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mi_idx2.movie_id:23!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.link:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(sequel (longtext), follows (longtext), followed by (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [lt.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (45-48)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 12\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_link\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ml.linked_movie_id:3!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (30-34)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi_idx1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ml.movie_id:2!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (35-39)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt2.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(tv series (longtext), episode (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ kt1.kind:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(tv series (longtext), episode (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (19,20)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15,16)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cn2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cn1.country_code:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-7)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ tableId: 1\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LessThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mi_idx2.info:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 3.5 (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx2)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [it2.id:14!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (40-44)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 11\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_info_idx\n" + + " β”‚ β”‚ β”‚ └─ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ └─ TableAlias(mc1)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mi_idx1.movie_id:7!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (25-29)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ └─ TableAlias(t1)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ keys: [kt1.id:12!null]\n" + + " β”‚ β”œβ”€ colSet: (49-60)\n" + + " β”‚ β”œβ”€ tableId: 13\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + + " β”‚ └─ columns: [id title kind_id]\n" + + " └─ Filter\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t1.id:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ml.movie_id:7!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t1.id:4!null\n" + - " β”‚ β”‚ β”‚ └─ mi_idx1.movie_id:13!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ kt1.id:24!null\n" + - " β”‚ β”‚ └─ t1.kind_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t1.id:4!null\n" + - " β”‚ └─ mc1.movie_id:18!null\n" + - " β”œβ”€ TableAlias(t1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ β”œβ”€ columns: [id title kind_id]\n" + - " β”‚ β”œβ”€ colSet: (49-60)\n" + - " β”‚ └─ tableId: 13\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lt.id:20!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ml.link_type_id:9!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:7!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mi_idx1.movie_id:13!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ml.movie_id:7!null\n" + - " β”‚ β”‚ β”‚ └─ mc1.movie_id:18!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ ml.linked_movie_id:8!null\n" + - " β”‚ β”‚ └─ mi_idx2.movie_id:10!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ml.linked_movie_id:8!null\n" + - " β”‚ └─ mc2.movie_id:16!null\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.id:26!null\n" + - " β”‚ β”‚ └─ mi_idx2.info_type_id:11!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi_idx2.movie_id:10!null\n" + - " β”‚ └─ mc2.movie_id:16!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ LessThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx2.info:2!null\n" + - " β”‚ β”‚ └─ 3.5 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.id:28!null\n" + - " β”‚ β”‚ └─ mi_idx1.info_type_id:14!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mi_idx1.movie_id:13!null\n" + - " β”‚ └─ mc1.movie_id:18!null\n" + - " β”œβ”€ TableAlias(mi_idx1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + - " β”‚ β”œβ”€ colSet: (35-39)\n" + - " β”‚ └─ tableId: 10\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn2.id:30!null\n" + - " β”‚ └─ mc2.company_id:17!null\n" + - " β”œβ”€ TableAlias(mc2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ cn1.id:32!null\n" + - " β”‚ └─ mc1.company_id:19!null\n" + - " β”œβ”€ TableAlias(mc1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ β”œβ”€ columns: [movie_id company_id]\n" + - " β”‚ β”œβ”€ colSet: (25-29)\n" + - " β”‚ └─ tableId: 8\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ lt.link:1!null\n" + - " β”‚ β”‚ └─ TUPLE(sequel (longtext), follows (longtext), followed by (longtext))\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ kt2.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(tv series (longtext), episode (longtext))\n" + - " β”‚ └─ TableAlias(kt2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ kt1.kind:1!null\n" + - " β”‚ β”‚ └─ TUPLE(tv series (longtext), episode (longtext))\n" + - " β”‚ └─ TableAlias(kt1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ β”œβ”€ columns: [id kind]\n" + - " β”‚ β”œβ”€ colSet: (19,20)\n" + - " β”‚ └─ tableId: 5\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it2.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it1.info:1!null\n" + - " β”‚ β”‚ └─ rating (longtext)\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ β”œβ”€ columns: [id info]\n" + - " β”‚ β”œβ”€ colSet: (15,16)\n" + - " β”‚ └─ tableId: 3\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn2)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ Filter\n" + - " β”œβ”€ NOT\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ cn1.country_code:2\n" + - " β”‚ └─ [us] (longtext)\n" + - " └─ TableAlias(cn1)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " β”œβ”€ columns: [id name country_code]\n" + - " β”œβ”€ colSet: (1-7)\n" + - " └─ tableId: 1\n" + + " β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”œβ”€ t2.production_year:3\n" + + " β”‚ β”‚ └─ 2000 (smallint)\n" + + " β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”œβ”€ t2.production_year:3\n" + + " β”‚ └─ 2010 (smallint)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(title)\n" + + " β”œβ”€ index: [title.kind_id]\n" + + " β”œβ”€ keys: [kt2.id:10!null]\n" + + " β”œβ”€ colSet: (61-72)\n" + + " β”œβ”€ tableId: 14\n" + + " └─ Table\n" + + " β”œβ”€ name: title\n" + + " └─ columns: [id title kind_id production_year]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(cn1.name) as first_company, min(cn2.name) as second_company, min(mi_idx1.info) as first_rating, min(mi_idx2.info) as second_rating, min(t1.title) as first_movie, min(t2.title) as second_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn1.name), MIN(cn2.name), MIN(mi_idx1.info), MIN(mi_idx2.info), MIN(t1.title), MIN(t2.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((t2.id = ml.linked_movie_id) AND (t2.id = mi_idx2.movie_id)) AND (kt2.id = t2.kind_id)) AND (t2.id = mc2.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t2.production_year >= 2000) AND (t2.production_year <= 2010))\n" + - " β”‚ └─ TableAlias(t2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((t1.id = ml.movie_id) AND (t1.id = mi_idx1.movie_id)) AND (kt1.id = t1.kind_id)) AND (t1.id = mc1.movie_id))\n" + - " β”œβ”€ TableAlias(t1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((lt.id = ml.link_type_id) AND (ml.movie_id = mi_idx1.movie_id)) AND (ml.movie_id = mc1.movie_id)) AND (ml.linked_movie_id = mi_idx2.movie_id)) AND (ml.linked_movie_id = mc2.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it2.id = mi_idx2.info_type_id) AND (mi_idx2.movie_id = mc2.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx2.info < '3.5')\n" + - " β”‚ └─ TableAlias(mi_idx2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it1.id = mi_idx1.info_type_id) AND (mi_idx1.movie_id = mc1.movie_id))\n" + - " β”œβ”€ TableAlias(mi_idx1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn2.id = mc2.company_id)\n" + - " β”œβ”€ TableAlias(mc2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn1.id = mc1.company_id)\n" + - " β”œβ”€ TableAlias(mc1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (lt.link HASH IN ('sequel', 'follows', 'followed by'))\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt2.kind HASH IN ('tv series', 'episode'))\n" + - " β”‚ └─ TableAlias(kt2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt1.kind HASH IN ('tv series', 'episode'))\n" + - " β”‚ └─ TableAlias(kt1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'rating')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ Filter\n" + - " β”œβ”€ (NOT((cn1.country_code = '[us]')))\n" + - " └─ TableAlias(cn1)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((t2.id = ml.linked_movie_id) AND (t2.id = mi_idx2.movie_id)) AND (t2.id = mc2.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (((t1.id = ml.movie_id) AND (t1.id = mi_idx1.movie_id)) AND (t1.id = mc1.movie_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ ((cn1.id = mc1.company_id) AND (ml.movie_id = mc1.movie_id))\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (((cn2.id = mc2.company_id) AND (it1.id = mi_idx1.info_type_id)) AND (ml.linked_movie_id = mi_idx2.movie_id))\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (lt.link HASH IN ('sequel', 'follows', 'followed by'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id linked_movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ml.linked_movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi_idx1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: ml.movie_id\n" + + " β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt2.kind HASH IN ('tv series', 'episode'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt1.kind HASH IN ('tv series', 'episode'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cn2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cn1.country_code = '[us]')))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi_idx2.info < '3.5')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx2)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: it2.id\n" + + " β”‚ β”‚ └─ TableAlias(mc1)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: mi_idx1.movie_id\n" + + " β”‚ └─ TableAlias(t1)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id]\n" + + " β”‚ └─ keys: kt1.id\n" + + " └─ Filter\n" + + " β”œβ”€ ((t2.production_year >= 2000) AND (t2.production_year <= 2010))\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(title)\n" + + " β”œβ”€ index: [title.kind_id]\n" + + " β”œβ”€ columns: [id title kind_id production_year]\n" + + " └─ keys: kt2.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(cn1.name) as first_company, min(cn2.name) as second_company, min(mi_idx1.info) as first_rating, min(mi_idx2.info) as second_rating, min(t1.title) as first_movie, min(t2.title) as second_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(cn1.name), MIN(cn2.name), MIN(mi_idx1.info), MIN(mi_idx2.info), MIN(t1.title), MIN(t2.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((t2.id = ml.linked_movie_id) AND (t2.id = mi_idx2.movie_id)) AND (kt2.id = t2.kind_id)) AND (t2.id = mc2.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t2.production_year >= 2000) AND (t2.production_year <= 2010))\n" + - " β”‚ └─ TableAlias(t2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((((t1.id = ml.movie_id) AND (t1.id = mi_idx1.movie_id)) AND (kt1.id = t1.kind_id)) AND (t1.id = mc1.movie_id))\n" + - " β”œβ”€ TableAlias(t1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (((((lt.id = ml.link_type_id) AND (ml.movie_id = mi_idx1.movie_id)) AND (ml.movie_id = mc1.movie_id)) AND (ml.linked_movie_id = mi_idx2.movie_id)) AND (ml.linked_movie_id = mc2.movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [movie_id linked_movie_id link_type_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it2.id = mi_idx2.info_type_id) AND (mi_idx2.movie_id = mc2.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx2.info < '3.5')\n" + - " β”‚ └─ TableAlias(mi_idx2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((it1.id = mi_idx1.info_type_id) AND (mi_idx1.movie_id = mc1.movie_id))\n" + - " β”œβ”€ TableAlias(mi_idx1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn2.id = mc2.company_id)\n" + - " β”œβ”€ TableAlias(mc2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (cn1.id = mc1.company_id)\n" + - " β”œβ”€ TableAlias(mc1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (lt.link HASH IN ('sequel', 'follows', 'followed by'))\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt2.kind HASH IN ('tv series', 'episode'))\n" + - " β”‚ └─ TableAlias(kt2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (kt1.kind HASH IN ('tv series', 'episode'))\n" + - " β”‚ └─ TableAlias(kt1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: kind_type\n" + - " β”‚ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it2.info = 'rating')\n" + - " β”‚ └─ TableAlias(it2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it1.info = 'rating')\n" + - " β”‚ └─ TableAlias(it1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(cn2)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ Filter\n" + - " β”œβ”€ (NOT((cn1.country_code = '[us]')))\n" + - " └─ TableAlias(cn1)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_name\n" + - " └─ columns: [id name country_code]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (((t2.id = ml.linked_movie_id) AND (t2.id = mi_idx2.movie_id)) AND (t2.id = mc2.movie_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (((t1.id = ml.movie_id) AND (t1.id = mi_idx1.movie_id)) AND (t1.id = mc1.movie_id))\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ ((cn1.id = mc1.company_id) AND (ml.movie_id = mc1.movie_id))\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (((cn2.id = mc2.company_id) AND (it1.id = mi_idx1.info_type_id)) AND (ml.linked_movie_id = mi_idx2.movie_id))\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (lt.link HASH IN ('sequel', 'follows', 'followed by'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(lt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: link_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id link]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id linked_movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: lt.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mc2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ml.linked_movie_id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mi_idx1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: ml.movie_id\n" + + " β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt2.kind HASH IN ('tv series', 'episode'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (kt1.kind HASH IN ('tv series', 'episode'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(kt1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: kind_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it2.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (it1.info = 'rating')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(it1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ CrossJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cn2)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cn1.country_code = '[us]')))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cn1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: company_name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name country_code]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (mi_idx2.info < '3.5')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(mi_idx2)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_info_idx)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_info_idx.info_type_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ β”‚ β”‚ └─ keys: it2.id\n" + + " β”‚ β”‚ └─ TableAlias(mc1)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: mi_idx1.movie_id\n" + + " β”‚ └─ TableAlias(t1)\n" + + " β”‚ └─ IndexedTableAccess(title)\n" + + " β”‚ β”œβ”€ index: [title.kind_id]\n" + + " β”‚ β”œβ”€ columns: [id title kind_id]\n" + + " β”‚ └─ keys: kt1.id\n" + + " └─ Filter\n" + + " β”œβ”€ ((t2.production_year >= 2000) AND (t2.production_year <= 2010))\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(title)\n" + + " β”œβ”€ index: [title.kind_id]\n" + + " β”œβ”€ columns: [id title kind_id production_year]\n" + + " └─ keys: kt2.id\n" + "", }, { @@ -27862,119 +28064,123 @@ WHERE k.keyword LIKE '%sequel%' " └─ GroupBy\n" + " β”œβ”€ select: MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ └─ mi.movie_id:7!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi.movie_id:5!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mk.movie_id:3!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2005 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:3!null\n" + - " β”‚ β”‚ └─ mi.movie_id:5!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:7!null\n" + - " β”‚ └─ mk.keyword_id:4!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:1!null\n" + - " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Denish (longtext), Norwegian (longtext), German (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ Filter\n" + - " β”œβ”€ k.keyword LIKE '%sequel%'\n" + - " └─ TableAlias(k)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: keyword\n" + - " └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ └─ 2005 (int)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (9-11)\n" + + " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ mi.info:1!null\n" + + " β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Denish (longtext), Norwegian (longtext), German (longtext))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:5!null]\n" + + " β”œβ”€ colSet: (4-8)\n" + + " β”œβ”€ tableId: 2\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_info\n" + + " └─ columns: [movie_id info]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mi.movie_id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.movie_id = mi.movie_id) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ Filter\n" + - " β”œβ”€ k.keyword LIKE '%sequel%'\n" + - " └─ TableAlias(k)\n" + - " └─ Table\n" + - " β”œβ”€ name: keyword\n" + - " └─ columns: [id keyword]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (t.id = mi.movie_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2005)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ Filter\n" + + " β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.movie_id]\n" + + " β”œβ”€ columns: [movie_id info]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mi.movie_id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.movie_id = mi.movie_id) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ Filter\n" + - " β”œβ”€ k.keyword LIKE '%sequel%'\n" + - " └─ TableAlias(k)\n" + - " └─ Table\n" + - " β”œβ”€ name: keyword\n" + - " └─ columns: [id keyword]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (t.id = mi.movie_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2005)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ Filter\n" + + " β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.movie_id]\n" + + " β”œβ”€ columns: [movie_id info]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -27998,119 +28204,123 @@ WHERE k.keyword LIKE '%sequel%' " └─ GroupBy\n" + " β”œβ”€ select: MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ └─ mi.movie_id:7!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi.movie_id:5!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mk.movie_id:3!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2010 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:3!null\n" + - " β”‚ β”‚ └─ mi.movie_id:5!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:7!null\n" + - " β”‚ └─ mk.keyword_id:4!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:1!null\n" + - " β”‚ β”‚ └─ TUPLE(Bulgaria (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ Filter\n" + - " β”œβ”€ k.keyword LIKE '%sequel%'\n" + - " └─ TableAlias(k)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: keyword\n" + - " └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ └─ 2010 (int)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (9-11)\n" + + " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ mi.info:1!null\n" + + " β”‚ └─ TUPLE(Bulgaria (longtext))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:5!null]\n" + + " β”œβ”€ colSet: (4-8)\n" + + " β”œβ”€ tableId: 2\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_info\n" + + " └─ columns: [movie_id info]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mi.movie_id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2010)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.movie_id = mi.movie_id) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Bulgaria'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ Filter\n" + - " β”œβ”€ k.keyword LIKE '%sequel%'\n" + - " └─ TableAlias(k)\n" + - " └─ Table\n" + - " β”œβ”€ name: keyword\n" + - " └─ columns: [id keyword]\n" + - "", - ExpectedAnalysis: "Project\n" + - " β”œβ”€ columns: [min(t.title) as movie_title]\n" + - " └─ GroupBy\n" + - " β”œβ”€ SelectedExprs(MIN(t.title))\n" + - " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mi.movie_id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2010)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.movie_id = mi.movie_id) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Bulgaria'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ Filter\n" + - " β”œβ”€ k.keyword LIKE '%sequel%'\n" + - " └─ TableAlias(k)\n" + - " └─ Table\n" + - " β”œβ”€ name: keyword\n" + - " └─ columns: [id keyword]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (t.id = mi.movie_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2010)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ Filter\n" + + " β”œβ”€ (mi.info HASH IN ('Bulgaria'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.movie_id]\n" + + " β”œβ”€ columns: [movie_id info]\n" + + " └─ keys: mk.movie_id\n" + + "", + ExpectedAnalysis: "Project\n" + + " β”œβ”€ columns: [min(t.title) as movie_title]\n" + + " └─ GroupBy\n" + + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + + " β”œβ”€ Grouping()\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (t.id = mi.movie_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2010)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ Filter\n" + + " β”œβ”€ (mi.info HASH IN ('Bulgaria'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.movie_id]\n" + + " β”œβ”€ columns: [movie_id info]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -28143,119 +28353,123 @@ WHERE k.keyword LIKE '%sequel%' " └─ GroupBy\n" + " β”œβ”€ select: MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ └─ mi.movie_id:7!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi.movie_id:5!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mk.movie_id:3!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 1990 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:3!null\n" + - " β”‚ β”‚ └─ mi.movie_id:5!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:7!null\n" + - " β”‚ └─ mk.keyword_id:4!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:1!null\n" + - " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Denish (longtext), Norwegian (longtext), German (longtext), USA (longtext), American (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ Filter\n" + - " β”œβ”€ k.keyword LIKE '%sequel%'\n" + - " └─ TableAlias(k)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: keyword\n" + - " └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ └─ 1990 (int)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (9-11)\n" + + " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ mi.info:1!null\n" + + " β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Denish (longtext), Norwegian (longtext), German (longtext), USA (longtext), American (longtext))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:5!null]\n" + + " β”œβ”€ colSet: (4-8)\n" + + " β”œβ”€ tableId: 2\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_info\n" + + " └─ columns: [movie_id info]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mi.movie_id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 1990)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.movie_id = mi.movie_id) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ Filter\n" + - " β”œβ”€ k.keyword LIKE '%sequel%'\n" + - " └─ TableAlias(k)\n" + - " └─ Table\n" + - " β”œβ”€ name: keyword\n" + - " └─ columns: [id keyword]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (t.id = mi.movie_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 1990)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ Filter\n" + + " β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'USA', 'American'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.movie_id]\n" + + " β”œβ”€ columns: [movie_id info]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mi.movie_id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 1990)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.movie_id = mi.movie_id) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info]\n" + - " └─ Filter\n" + - " β”œβ”€ k.keyword LIKE '%sequel%'\n" + - " └─ TableAlias(k)\n" + - " └─ Table\n" + - " β”œβ”€ name: keyword\n" + - " └─ columns: [id keyword]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (t.id = mi.movie_id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 1990)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ Filter\n" + + " β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'USA', 'American'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " β”œβ”€ index: [movie_info.movie_id]\n" + + " β”œβ”€ columns: [movie_id info]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -28281,150 +28495,153 @@ WHERE it.info ='rating' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi_idx.info):0!null->rating:0, min(t.title):1!null->movie_title:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi_idx.info:7!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi_idx.info:11!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ it.id:5!null\n" + + " β”‚ β”‚ └─ mi_idx.info_type_id:10!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mk.movie_id:3!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2005 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:3!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:5!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:8!null\n" + - " β”‚ └─ mk.keyword_id:4!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ it.id:10!null\n" + - " β”‚ └─ mi_idx.info_type_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + - " β”‚ β”‚ └─ 5.0 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ └─ rating (longtext)\n" + - " └─ TableAlias(it)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: info_type\n" + - " └─ columns: [id info]\n" + + " β”‚ └─ mi_idx.movie_id:9!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ └─ mk.movie_id:7!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ └─ 2005 (int)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (11-13)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\n" + + " β”œβ”€ GreaterThan\n" + + " β”‚ β”œβ”€ mi_idx.info:2!null\n" + + " β”‚ └─ 5.0 (longtext)\n" + + " └─ TableAlias(mi_idx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:7!null]\n" + + " β”œβ”€ colSet: (6-10)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_info_idx\n" + + " └─ columns: [movie_id info_type_id info]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi_idx.info) as rating, min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mi_idx.movie_id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.movie_id = mi_idx.movie_id) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (it.id = mi_idx.info_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '5.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ (it.info = 'rating')\n" + - " └─ TableAlias(it)\n" + - " └─ Table\n" + - " β”œβ”€ name: info_type\n" + - " └─ columns: [id info]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((it.id = mi_idx.info_type_id) AND (t.id = mi_idx.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2005)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ Filter\n" + + " β”œβ”€ (mi_idx.info > '5.0')\n" + + " └─ TableAlias(mi_idx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi_idx.info) as rating, min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mi_idx.movie_id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.movie_id = mi_idx.movie_id) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (it.id = mi_idx.info_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '5.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ (it.info = 'rating')\n" + - " └─ TableAlias(it)\n" + - " └─ Table\n" + - " β”œβ”€ name: info_type\n" + - " └─ columns: [id info]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((it.id = mi_idx.info_type_id) AND (t.id = mi_idx.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2005)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ Filter\n" + + " β”œβ”€ (mi_idx.info > '5.0')\n" + + " └─ TableAlias(mi_idx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -28450,150 +28667,153 @@ WHERE it.info ='rating' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi_idx.info):0!null->rating:0, min(t.title):1!null->movie_title:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi_idx.info:7!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi_idx.info:11!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ it.id:5!null\n" + + " β”‚ β”‚ └─ mi_idx.info_type_id:10!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mk.movie_id:3!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2010 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:3!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:5!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:8!null\n" + - " β”‚ └─ mk.keyword_id:4!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ it.id:10!null\n" + - " β”‚ └─ mi_idx.info_type_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + - " β”‚ β”‚ └─ 9.0 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ └─ rating (longtext)\n" + - " └─ TableAlias(it)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: info_type\n" + - " └─ columns: [id info]\n" + - "", - ExpectedEstimates: "Project\n" + - " β”œβ”€ columns: [min(mi_idx.info) as rating, min(t.title) as movie_title]\n" + - " └─ GroupBy\n" + - " β”œβ”€ SelectedExprs(MIN(mi_idx.info), MIN(t.title))\n" + - " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mi_idx.movie_id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2010)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.movie_id = mi_idx.movie_id) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (it.id = mi_idx.info_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '9.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ (it.info = 'rating')\n" + - " └─ TableAlias(it)\n" + - " └─ Table\n" + - " β”œβ”€ name: info_type\n" + - " └─ columns: [id info]\n" + + " β”‚ └─ mi_idx.movie_id:9!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ └─ mk.movie_id:7!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ └─ 2010 (int)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (11-13)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\n" + + " β”œβ”€ GreaterThan\n" + + " β”‚ β”œβ”€ mi_idx.info:2!null\n" + + " β”‚ └─ 9.0 (longtext)\n" + + " └─ TableAlias(mi_idx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:7!null]\n" + + " β”œβ”€ colSet: (6-10)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_info_idx\n" + + " └─ columns: [movie_id info_type_id info]\n" + + "", + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [min(mi_idx.info) as rating, min(t.title) as movie_title]\n" + + " └─ GroupBy\n" + + " β”œβ”€ SelectedExprs(MIN(mi_idx.info), MIN(t.title))\n" + + " β”œβ”€ Grouping()\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((it.id = mi_idx.info_type_id) AND (t.id = mi_idx.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2010)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ Filter\n" + + " β”œβ”€ (mi_idx.info > '9.0')\n" + + " └─ TableAlias(mi_idx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi_idx.info) as rating, min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mi_idx.movie_id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2010)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.movie_id = mi_idx.movie_id) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (it.id = mi_idx.info_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '9.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ (it.info = 'rating')\n" + - " └─ TableAlias(it)\n" + - " └─ Table\n" + - " β”œβ”€ name: info_type\n" + - " └─ columns: [id info]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((it.id = mi_idx.info_type_id) AND (t.id = mi_idx.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2010)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ Filter\n" + + " β”œβ”€ (mi_idx.info > '9.0')\n" + + " └─ TableAlias(mi_idx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -28619,150 +28839,153 @@ WHERE it.info ='rating' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(mi_idx.info):0!null->rating:0, min(t.title):1!null->movie_title:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(mi_idx.info:7!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(mi_idx.info:11!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:5!null\n" + + " β”‚ β”‚ β”œβ”€ it.id:5!null\n" + + " β”‚ β”‚ └─ mi_idx.info_type_id:10!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mk.movie_id:3!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 1990 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mk.movie_id:3!null\n" + - " β”‚ β”‚ └─ mi_idx.movie_id:5!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ k.id:8!null\n" + - " β”‚ └─ mk.keyword_id:4!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ it.id:10!null\n" + - " β”‚ └─ mi_idx.info_type_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ mi_idx.info:2!null\n" + - " β”‚ β”‚ └─ 2.0 (longtext)\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ └─ rating (longtext)\n" + - " └─ TableAlias(it)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: info_type\n" + - " └─ columns: [id info]\n" + + " β”‚ └─ mi_idx.movie_id:9!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ └─ mk.movie_id:7!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ └─ 1990 (int)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ rating (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (11-13)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\n" + + " β”œβ”€ GreaterThan\n" + + " β”‚ β”œβ”€ mi_idx.info:2!null\n" + + " β”‚ └─ 2.0 (longtext)\n" + + " └─ TableAlias(mi_idx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:7!null]\n" + + " β”œβ”€ colSet: (6-10)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_info_idx\n" + + " └─ columns: [movie_id info_type_id info]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(mi_idx.info) as rating, min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mi_idx.movie_id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 1990)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.movie_id = mi_idx.movie_id) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (it.id = mi_idx.info_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '2.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ (it.info = 'rating')\n" + - " └─ TableAlias(it)\n" + - " └─ Table\n" + - " β”œβ”€ name: info_type\n" + - " └─ columns: [id info]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((it.id = mi_idx.info_type_id) AND (t.id = mi_idx.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 1990)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ Filter\n" + + " β”œβ”€ (mi_idx.info > '2.0')\n" + + " └─ TableAlias(mi_idx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(mi_idx.info) as rating, min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(mi_idx.info), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mi_idx.movie_id) AND (t.id = mk.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 1990)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mk.movie_id = mi_idx.movie_id) AND (k.id = mk.keyword_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (it.id = mi_idx.info_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi_idx.info > '2.0')\n" + - " β”‚ └─ TableAlias(mi_idx)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info_idx\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ Filter\n" + - " β”œβ”€ (it.info = 'rating')\n" + - " └─ TableAlias(it)\n" + - " └─ Table\n" + - " β”œβ”€ name: info_type\n" + - " └─ columns: [id info]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((it.id = mi_idx.info_type_id) AND (t.id = mi_idx.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mk.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 1990)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword LIKE '%sequel%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'rating')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ Filter\n" + + " β”œβ”€ (mi_idx.info > '2.0')\n" + + " └─ TableAlias(mi_idx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " β”œβ”€ index: [movie_info_idx.movie_id]\n" + + " β”œβ”€ columns: [movie_id info_type_id info]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -28797,150 +29020,153 @@ WHERE ct.kind = 'production companies' " └─ GroupBy\n" + " β”œβ”€ select: MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi.movie_id:3!null\n" + + " β”‚ β”‚ β”œβ”€ ct.id:4!null\n" + + " β”‚ β”‚ └─ mc.company_type_id:10!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2005 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + + " β”‚ └─ mc.movie_id:9!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ └─ mi.movie_id:6!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ └─ 2005 (int)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Denish (longtext), Norwegian (longtext), German (longtext))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (10-14)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ Filter\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:6!null\n" + - " β”‚ β”‚ └─ mi.movie_id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it.id:9!null\n" + - " β”‚ └─ mi.info_type_id:4!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Denish (longtext), Norwegian (longtext), German (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ct.id:10!null\n" + - " β”‚ └─ mc.company_type_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ mc.note LIKE '%(theatrical)%'\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(France)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(it)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ └─ production companies (longtext)\n" + - " └─ TableAlias(ct)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " β”‚ β”œβ”€ mc.note LIKE '%(theatrical)%'\n" + + " β”‚ └─ mc.note LIKE '%(France)%'\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mi.movie_id:6!null]\n" + + " β”œβ”€ colSet: (5-9)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_type_id note]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(t.title) as typical_european_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mi.movie_id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi.movie_id) AND (it.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ct.id = mc.company_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mc.note LIKE '%(theatrical)%' AND mc.note LIKE '%(France)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ (ct.kind = 'production companies')\n" + - " └─ TableAlias(ct)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((ct.id = mc.company_type_id) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mi.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2005)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it.id\n" + + " └─ Filter\n" + + " β”œβ”€ (mc.note LIKE '%(theatrical)%' AND mc.note LIKE '%(France)%')\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_type_id note]\n" + + " └─ keys: mi.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(t.title) as typical_european_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mi.movie_id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2005)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi.movie_id) AND (it.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ct.id = mc.company_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mc.note LIKE '%(theatrical)%' AND mc.note LIKE '%(France)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ (ct.kind = 'production companies')\n" + - " └─ TableAlias(ct)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((ct.id = mc.company_type_id) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mi.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2005)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it.id\n" + + " └─ Filter\n" + + " β”œβ”€ (mc.note LIKE '%(theatrical)%' AND mc.note LIKE '%(France)%')\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_type_id note]\n" + + " └─ keys: mi.movie_id\n" + "", }, { @@ -28970,152 +29196,155 @@ WHERE ct.kind = 'production companies' " └─ GroupBy\n" + " β”œβ”€ select: MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi.movie_id:3!null\n" + + " β”‚ β”‚ β”œβ”€ ct.id:4!null\n" + + " β”‚ β”‚ └─ mc.company_type_id:10!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2010 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:6!null\n" + - " β”‚ β”‚ └─ mi.movie_id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it.id:9!null\n" + - " β”‚ └─ mi.info_type_id:4!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(USA (longtext), America (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ct.id:10!null\n" + - " β”‚ └─ mc.company_type_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.note LIKE '%(VHS)%'\n" + - " β”‚ β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(1994)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(it)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ └─ production companies (longtext)\n" + - " └─ TableAlias(ct)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " β”‚ └─ mc.movie_id:9!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ └─ mi.movie_id:6!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ └─ 2010 (int)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ └─ TUPLE(USA (longtext), America (longtext))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (10-14)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ Filter\n" + + " β”œβ”€ AND\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ mc.note LIKE '%(VHS)%'\n" + + " β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + + " β”‚ └─ mc.note LIKE '%(1994)%'\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mi.movie_id:6!null]\n" + + " β”œβ”€ colSet: (5-9)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_type_id note]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(t.title) as american_vhs_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mi.movie_id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2010)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi.movie_id) AND (it.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('USA', 'America'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ct.id = mc.company_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((mc.note LIKE '%(VHS)%' AND mc.note LIKE '%(USA)%') AND mc.note LIKE '%(1994)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ (ct.kind = 'production companies')\n" + - " └─ TableAlias(ct)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((ct.id = mc.company_type_id) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mi.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2010)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('USA', 'America'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it.id\n" + + " └─ Filter\n" + + " β”œβ”€ ((mc.note LIKE '%(VHS)%' AND mc.note LIKE '%(USA)%') AND mc.note LIKE '%(1994)%')\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_type_id note]\n" + + " └─ keys: mi.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(t.title) as american_vhs_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mi.movie_id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 2010)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi.movie_id) AND (it.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('USA', 'America'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ct.id = mc.company_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((mc.note LIKE '%(VHS)%' AND mc.note LIKE '%(USA)%') AND mc.note LIKE '%(1994)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ (ct.kind = 'production companies')\n" + - " └─ TableAlias(ct)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((ct.id = mc.company_type_id) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mi.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 2010)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('USA', 'America'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it.id\n" + + " └─ Filter\n" + + " β”œβ”€ ((mc.note LIKE '%(VHS)%' AND mc.note LIKE '%(USA)%') AND mc.note LIKE '%(1994)%')\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_type_id note]\n" + + " └─ keys: mi.movie_id\n" + "", }, { @@ -29152,151 +29381,154 @@ WHERE ct.kind = 'production companies' " └─ GroupBy\n" + " β”œβ”€ select: MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mi.movie_id:3!null\n" + + " β”‚ β”‚ β”œβ”€ ct.id:4!null\n" + + " β”‚ β”‚ └─ mc.company_type_id:10!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 1990 (int)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + + " β”‚ └─ mc.movie_id:9!null\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + + " β”‚ β”‚ └─ mi.movie_id:6!null\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ └─ 1990 (int)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ct.kind:1!null\n" + + " β”‚ β”‚ β”‚ └─ production companies (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + + " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Denish (longtext), Norwegian (longtext), German (longtext), USA (longtext), American (longtext))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it.id:3!null]\n" + + " β”‚ β”œβ”€ colSet: (10-14)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_info\n" + + " β”‚ └─ columns: [movie_id info_type_id info]\n" + + " └─ Filter\n" + " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.movie_id:6!null\n" + - " β”‚ β”‚ └─ mi.movie_id:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ it.id:9!null\n" + - " β”‚ └─ mi.info_type_id:4!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ mi.info:2!null\n" + - " β”‚ β”‚ └─ TUPLE(Sweden (longtext), Norway (longtext), Germany (longtext), Denmark (longtext), Swedish (longtext), Denish (longtext), Norwegian (longtext), German (longtext), USA (longtext), American (longtext))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ct.id:10!null\n" + - " β”‚ └─ mc.company_type_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ mc.note LIKE '%(TV)%'\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(it)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ct.kind:1!null\n" + - " β”‚ └─ production companies (longtext)\n" + - " └─ TableAlias(ct)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ └─ mc.note LIKE '%(TV)%'\n" + + " β”‚ └─ mc.note LIKE '%(USA)%'\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ keys: [mi.movie_id:6!null]\n" + + " β”œβ”€ colSet: (5-9)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: movie_companies\n" + + " └─ columns: [movie_id company_type_id note]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(t.title) as american_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mi.movie_id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 1990)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi.movie_id) AND (it.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ct.id = mc.company_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(TV)%')) AND mc.note LIKE '%(USA)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ (ct.kind = 'production companies')\n" + - " └─ TableAlias(ct)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((ct.id = mc.company_type_id) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mi.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 1990)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'USA', 'American'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it.id\n" + + " └─ Filter\n" + + " β”œβ”€ ((NOT(mc.note LIKE '%(TV)%')) AND mc.note LIKE '%(USA)%')\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_type_id note]\n" + + " └─ keys: mi.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(t.title) as american_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((t.id = mi.movie_id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (t.production_year > 1990)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.movie_id = mi.movie_id) AND (it.id = mi.info_type_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'USA', 'American'))\n" + - " β”‚ └─ TableAlias(mi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_info\n" + - " β”‚ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ct.id = mc.company_type_id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note LIKE '%(TV)%')) AND mc.note LIKE '%(USA)%')\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_type_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id]\n" + - " └─ Filter\n" + - " β”œβ”€ (ct.kind = 'production companies')\n" + - " └─ TableAlias(ct)\n" + - " └─ Table\n" + - " β”œβ”€ name: company_type\n" + - " └─ columns: [id kind]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ((ct.id = mc.company_type_id) AND (t.id = mc.movie_id))\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (t.id = mi.movie_id)\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (t.production_year > 1990)\n" + + " β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ CrossJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(it)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (ct.kind = 'production companies')\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: company_type\n" + + " β”‚ β”‚ └─ columns: [id kind]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (mi.info HASH IN ('Sweden', 'Norway', 'Germany', 'Denmark', 'Swedish', 'Denish', 'Norwegian', 'German', 'USA', 'American'))\n" + + " β”‚ └─ TableAlias(mi)\n" + + " β”‚ └─ IndexedTableAccess(movie_info)\n" + + " β”‚ β”œβ”€ index: [movie_info.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id info_type_id info]\n" + + " β”‚ └─ keys: it.id\n" + + " └─ Filter\n" + + " β”œβ”€ ((NOT(mc.note LIKE '%(TV)%')) AND mc.note LIKE '%(USA)%')\n" + + " └─ TableAlias(mc)\n" + + " └─ IndexedTableAccess(movie_companies)\n" + + " β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”œβ”€ columns: [movie_id company_type_id note]\n" + + " └─ keys: mi.movie_id\n" + "", }, { @@ -29322,13 +29554,13 @@ WHERE k.keyword = 'marvel-cinematic-universe' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(k.keyword):0!null->movie_keyword:0, min(n.name):1!null->actor_name:0, min(t.title):2!null->marvel_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(k.keyword:8!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(k.keyword:6!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ └─ mk.movie_id:7!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + " β”‚ └─ ci.movie_id:10!null\n" + @@ -29352,34 +29584,35 @@ WHERE k.keyword = 'marvel-cinematic-universe' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.id:7!null\n" + - " β”‚ β”‚ └─ mk.keyword_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:10!null\n" + - " β”‚ └─ mk.movie_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ marvel-cinematic-universe (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ └─ marvel-cinematic-universe (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:5!null]\n" + + " β”‚ β”œβ”€ colSet: (11-13)\n" + + " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:7!null]\n" + + " β”œβ”€ colSet: (1-7)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: cast_info\n" + + " └─ columns: [person_id movie_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(k.keyword) as movie_keyword, min(n.name) as actor_name, min(t.title) as marvel_movie]\n" + @@ -29402,23 +29635,24 @@ WHERE k.keyword = 'marvel-cinematic-universe' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((k.id = mk.keyword_id) AND (ci.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'marvel-cinematic-universe')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword = 'marvel-cinematic-universe')\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(k.keyword) as movie_keyword, min(n.name) as actor_name, min(t.title) as marvel_movie]\n" + @@ -29441,23 +29675,24 @@ WHERE k.keyword = 'marvel-cinematic-universe' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((k.id = mk.keyword_id) AND (ci.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'marvel-cinematic-universe')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword = 'marvel-cinematic-universe')\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -29490,13 +29725,13 @@ WHERE k.keyword IN ('superhero', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(k.keyword):0!null->movie_keyword:0, min(n.name):1!null->actor_name:0, min(t.title):2!null->hero_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(k.keyword:8!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(k.keyword:6!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ └─ mk.movie_id:7!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + " β”‚ └─ ci.movie_id:10!null\n" + @@ -29520,34 +29755,35 @@ WHERE k.keyword IN ('superhero', " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.id:7!null\n" + - " β”‚ β”‚ └─ mk.keyword_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:10!null\n" + - " β”‚ └─ mk.movie_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(superhero (longtext), sequel (longtext), second-part (longtext), marvel-comics (longtext), based-on-comic (longtext), tv-special (longtext), fight (longtext), violence (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ └─ TUPLE(superhero (longtext), sequel (longtext), second-part (longtext), marvel-comics (longtext), based-on-comic (longtext), tv-special (longtext), fight (longtext), violence (longtext))\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:5!null]\n" + + " β”‚ β”œβ”€ colSet: (11-13)\n" + + " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:7!null]\n" + + " β”œβ”€ colSet: (1-7)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: cast_info\n" + + " └─ columns: [person_id movie_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(k.keyword) as movie_keyword, min(n.name) as actor_name, min(t.title) as hero_movie]\n" + @@ -29570,23 +29806,24 @@ WHERE k.keyword IN ('superhero', " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((k.id = mk.keyword_id) AND (ci.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(k.keyword) as movie_keyword, min(n.name) as actor_name, min(t.title) as hero_movie]\n" + @@ -29609,23 +29846,24 @@ WHERE k.keyword IN ('superhero', " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((k.id = mk.keyword_id) AND (ci.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -29651,13 +29889,13 @@ WHERE k.keyword = 'marvel-cinematic-universe' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(k.keyword):0!null->movie_keyword:0, min(n.name):1!null->actor_name:0, min(t.title):2!null->marvel_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(k.keyword:8!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(k.keyword:6!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ └─ mk.movie_id:7!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + " β”‚ └─ ci.movie_id:10!null\n" + @@ -29681,34 +29919,35 @@ WHERE k.keyword = 'marvel-cinematic-universe' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.id:7!null\n" + - " β”‚ β”‚ └─ mk.keyword_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:10!null\n" + - " β”‚ └─ mk.movie_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ marvel-cinematic-universe (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ └─ marvel-cinematic-universe (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:5!null]\n" + + " β”‚ β”œβ”€ colSet: (11-13)\n" + + " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:7!null]\n" + + " β”œβ”€ colSet: (1-7)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: cast_info\n" + + " └─ columns: [person_id movie_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(k.keyword) as movie_keyword, min(n.name) as actor_name, min(t.title) as marvel_movie]\n" + @@ -29731,23 +29970,24 @@ WHERE k.keyword = 'marvel-cinematic-universe' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((k.id = mk.keyword_id) AND (ci.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'marvel-cinematic-universe')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword = 'marvel-cinematic-universe')\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(k.keyword) as movie_keyword, min(n.name) as actor_name, min(t.title) as marvel_movie]\n" + @@ -29770,23 +30010,24 @@ WHERE k.keyword = 'marvel-cinematic-universe' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((k.id = mk.keyword_id) AND (ci.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'marvel-cinematic-universe')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword = 'marvel-cinematic-universe')\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -29819,13 +30060,13 @@ WHERE k.keyword IN ('superhero', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(k.keyword):0!null->movie_keyword:0, min(n.name):1!null->actor_name:0, min(t.title):2!null->hero_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(k.keyword:8!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(k.keyword:6!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ └─ mk.movie_id:7!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + " β”‚ └─ ci.movie_id:10!null\n" + @@ -29849,34 +30090,35 @@ WHERE k.keyword IN ('superhero', " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.id:7!null\n" + - " β”‚ β”‚ └─ mk.keyword_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:10!null\n" + - " β”‚ └─ mk.movie_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(superhero (longtext), sequel (longtext), second-part (longtext), marvel-comics (longtext), based-on-comic (longtext), tv-special (longtext), fight (longtext), violence (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ └─ TUPLE(superhero (longtext), sequel (longtext), second-part (longtext), marvel-comics (longtext), based-on-comic (longtext), tv-special (longtext), fight (longtext), violence (longtext))\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:5!null]\n" + + " β”‚ β”œβ”€ colSet: (11-13)\n" + + " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:7!null]\n" + + " β”œβ”€ colSet: (1-7)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: cast_info\n" + + " └─ columns: [person_id movie_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(k.keyword) as movie_keyword, min(n.name) as actor_name, min(t.title) as hero_movie]\n" + @@ -29899,23 +30141,24 @@ WHERE k.keyword IN ('superhero', " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((k.id = mk.keyword_id) AND (ci.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(k.keyword) as movie_keyword, min(n.name) as actor_name, min(t.title) as hero_movie]\n" + @@ -29938,23 +30181,24 @@ WHERE k.keyword IN ('superhero', " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((k.id = mk.keyword_id) AND (ci.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -29980,13 +30224,13 @@ WHERE k.keyword = 'marvel-cinematic-universe' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(k.keyword):0!null->movie_keyword:0, min(n.name):1!null->actor_name:0, min(t.title):2!null->marvel_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(k.keyword:8!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(k.keyword:6!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ └─ mk.movie_id:7!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + " β”‚ └─ ci.movie_id:10!null\n" + @@ -30010,34 +30254,35 @@ WHERE k.keyword = 'marvel-cinematic-universe' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.id:7!null\n" + - " β”‚ β”‚ └─ mk.keyword_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:10!null\n" + - " β”‚ └─ mk.movie_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ marvel-cinematic-universe (longtext)\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ └─ marvel-cinematic-universe (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:5!null]\n" + + " β”‚ β”œβ”€ colSet: (11-13)\n" + + " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:7!null]\n" + + " β”œβ”€ colSet: (1-7)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: cast_info\n" + + " └─ columns: [person_id movie_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(k.keyword) as movie_keyword, min(n.name) as actor_name, min(t.title) as marvel_movie]\n" + @@ -30060,23 +30305,24 @@ WHERE k.keyword = 'marvel-cinematic-universe' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((k.id = mk.keyword_id) AND (ci.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'marvel-cinematic-universe')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword = 'marvel-cinematic-universe')\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(k.keyword) as movie_keyword, min(n.name) as actor_name, min(t.title) as marvel_movie]\n" + @@ -30099,23 +30345,24 @@ WHERE k.keyword = 'marvel-cinematic-universe' " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((k.id = mk.keyword_id) AND (ci.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword = 'marvel-cinematic-universe')\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword = 'marvel-cinematic-universe')\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -30147,13 +30394,13 @@ WHERE k.keyword IN ('superhero', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(k.keyword):0!null->movie_keyword:0, min(n.name):1!null->actor_name:0, min(t.title):2!null->hero_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(k.keyword:8!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(k.keyword:6!null), MIN(n.name:4!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ mk.movie_id:5!null\n" + + " β”‚ β”‚ └─ mk.movie_id:7!null\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ t.id:0!null\n" + " β”‚ └─ ci.movie_id:10!null\n" + @@ -30175,34 +30422,35 @@ WHERE k.keyword IN ('superhero', " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ k.id:7!null\n" + - " β”‚ β”‚ └─ mk.keyword_id:6!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:10!null\n" + - " β”‚ └─ mk.movie_id:5!null\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + - " β”‚ β”‚ └─ TUPLE(superhero (longtext), sequel (longtext), second-part (longtext), marvel-comics (longtext), based-on-comic (longtext), tv-special (longtext), fight (longtext), violence (longtext))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”œβ”€ k.keyword:1!null\n" + + " β”‚ β”‚ β”‚ └─ TUPLE(superhero (longtext), sequel (longtext), second-part (longtext), marvel-comics (longtext), based-on-comic (longtext), tv-special (longtext), fight (longtext), violence (longtext))\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ keys: [k.id:5!null]\n" + + " β”‚ β”œβ”€ colSet: (11-13)\n" + + " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: movie_keyword\n" + + " β”‚ └─ columns: [movie_id keyword_id]\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ keys: [mk.movie_id:7!null]\n" + + " β”œβ”€ colSet: (1-7)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: cast_info\n" + + " └─ columns: [person_id movie_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(k.keyword) as movie_keyword, min(n.name) as actor_name, min(t.title) as hero_movie]\n" + @@ -30223,23 +30471,24 @@ WHERE k.keyword IN ('superhero', " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((k.id = mk.keyword_id) AND (ci.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mk.movie_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(k.keyword) as movie_keyword, min(n.name) as actor_name, min(t.title) as hero_movie]\n" + @@ -30260,23 +30509,24 @@ WHERE k.keyword IN ('superhero', " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: name\n" + " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((k.id = mk.keyword_id) AND (ci.movie_id = mk.movie_id))\n" + - " β”œβ”€ TableAlias(mk)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_keyword\n" + - " β”‚ └─ columns: [movie_id keyword_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + - " β”‚ └─ TableAlias(k)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: keyword\n" + - " β”‚ └─ columns: [id keyword]\n" + - " └─ TableAlias(ci)\n" + - " └─ Table\n" + - " β”œβ”€ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (k.keyword HASH IN ('superhero', 'sequel', 'second-part', 'marvel-comics', 'based-on-comic', 'tv-special', 'fight', 'violence'))\n" + + " β”‚ β”‚ └─ TableAlias(k)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: keyword\n" + + " β”‚ β”‚ └─ columns: [id keyword]\n" + + " β”‚ └─ TableAlias(mk)\n" + + " β”‚ └─ IndexedTableAccess(movie_keyword)\n" + + " β”‚ β”œβ”€ index: [movie_keyword.keyword_id]\n" + + " β”‚ β”œβ”€ columns: [movie_id keyword_id]\n" + + " β”‚ └─ keys: k.id\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(cast_info)\n" + + " β”œβ”€ index: [cast_info.movie_id]\n" + + " β”œβ”€ columns: [person_id movie_id]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -30324,80 +30574,82 @@ WHERE an.name LIKE '%a%' " β”‚ β”‚ β”œβ”€ n.id:5!null\n" + " β”‚ β”‚ └─ an.person_id:18!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ pi.person_id:13!null\n" + + " β”‚ β”œβ”€ pi.person_id:15!null\n" + " β”‚ └─ an.person_id:18!null\n" + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ n.id:5!null\n" + - " β”‚ β”‚ └─ pi.person_id:13!null\n" + + " β”‚ β”‚ └─ pi.person_id:15!null\n" + " β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ lt.id:11!null\n" + - " β”‚ β”‚ β”‚ └─ ml.link_type_id:4!null\n" + - " β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ml.linked_movie_id:3!null\n" + + " β”‚ β”‚ β”‚ └─ ml.link_type_id:10!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.linked_movie_id:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1980 (smallint)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1995 (smallint)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.person_id:3!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ n.id:5!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1980 (smallint)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1995 (smallint)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [t.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (9-15)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [linked_movie_id link_type_id]\n" + - " β”‚ β”‚ β”‚ └─ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.person_id:9!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ n.id:5!null\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name_pcode_cf:3\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ A (longtext)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name_pcode_cf:3\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ F (longtext)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ m (longtext)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ f (longtext)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ B (longtext)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ BΓΏ (longtext)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender name_pcode_cf]\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ β”‚ └─ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name_pcode_cf:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ A (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name_pcode_cf:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ F (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ m (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ f (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ B (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ BΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender name_pcode_cf]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.linked_movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:4!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (20-23)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_link\n" + + " β”‚ β”‚ β”‚ └─ columns: [linked_movie_id link_type_id]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ lt.link:1!null\n" + @@ -30407,34 +30659,35 @@ WHERE an.name LIKE '%a%' " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: link_type\n" + " β”‚ β”‚ └─ columns: [id link]\n" + - " β”‚ └─ InnerJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.id:16!null\n" + - " β”‚ β”‚ └─ pi.info_type_id:14!null\n" + + " β”‚ └─ LookupJoin\n" + " β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ pi.note:2\n" + - " β”‚ β”‚ β”‚ └─ Volker Boehm (longtext)\n" + - " β”‚ β”‚ └─ TableAlias(pi)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ mini biography (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + " β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: person_info\n" + - " β”‚ β”‚ └─ columns: [person_id info_type_id note]\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ β”‚ └─ mini biography (longtext)\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”œβ”€ pi.note:2\n" + + " β”‚ β”‚ └─ Volker Boehm (longtext)\n" + + " β”‚ └─ TableAlias(pi)\n" + + " β”‚ └─ IndexedTableAccess(person_info)\n" + + " β”‚ β”œβ”€ index: [person_info.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it.id:13!null]\n" + + " β”‚ β”œβ”€ colSet: (33-37)\n" + + " β”‚ β”œβ”€ tableId: 7\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + + " β”‚ β”œβ”€ name: person_info\n" + + " β”‚ └─ columns: [person_id info_type_id note]\n" + " └─ Filter\n" + " β”œβ”€ an.name LIKE '%a%'\n" + " └─ TableAlias(an)\n" + " └─ IndexedTableAccess(aka_name)\n" + " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:9!null]\n" + + " β”œβ”€ keys: [ci.person_id:3!null]\n" + " β”œβ”€ colSet: (1-8)\n" + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + @@ -30452,52 +30705,52 @@ WHERE an.name LIKE '%a%' " β”‚ β”œβ”€ (n.id = pi.person_id)\n" + " β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”œβ”€ (lt.id = ml.link_type_id)\n" + - " β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = ml.linked_movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ml.linked_movie_id = t.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 1980) AND (t.production_year <= 1995))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [linked_movie_id link_type_id]\n" + - " β”‚ β”‚ β”‚ └─ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (ci.person_id = n.id)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((n.name_pcode_cf >= 'A') AND (n.name_pcode_cf <= 'F')) AND ((n.gender = 'm') OR ((n.gender = 'f') AND ((n.name >= 'B') AND (n.name <= 'BΓΏ')))))\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender name_pcode_cf]\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ β”‚ └─ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.person_id = n.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 1980) AND (t.production_year <= 1995))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((n.name_pcode_cf >= 'A') AND (n.name_pcode_cf <= 'F')) AND ((n.gender = 'm') OR ((n.gender = 'f') AND ((n.name >= 'B') AND (n.name <= 'BΓΏ')))))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender name_pcode_cf]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.linked_movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [linked_movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ (lt.link = 'features')\n" + " β”‚ β”‚ └─ TableAlias(lt)\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: link_type\n" + " β”‚ β”‚ └─ columns: [id link]\n" + - " β”‚ └─ InnerJoin\n" + - " β”‚ β”œβ”€ (it.id = pi.info_type_id)\n" + + " β”‚ └─ LookupJoin\n" + " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (pi.note = 'Volker Boehm')\n" + - " β”‚ β”‚ └─ TableAlias(pi)\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'mini biography')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: person_info\n" + - " β”‚ β”‚ └─ columns: [person_id info_type_id note]\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'mini biography')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + + " β”‚ β”œβ”€ (pi.note = 'Volker Boehm')\n" + + " β”‚ └─ TableAlias(pi)\n" + + " β”‚ └─ IndexedTableAccess(person_info)\n" + + " β”‚ β”œβ”€ index: [person_info.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [person_id info_type_id note]\n" + + " β”‚ └─ keys: it.id\n" + " └─ Filter\n" + " β”œβ”€ an.name LIKE '%a%'\n" + " └─ TableAlias(an)\n" + @@ -30517,52 +30770,52 @@ WHERE an.name LIKE '%a%' " β”‚ β”œβ”€ (n.id = pi.person_id)\n" + " β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”œβ”€ (lt.id = ml.link_type_id)\n" + - " β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = ml.linked_movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ml.linked_movie_id = t.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 1980) AND (t.production_year <= 1995))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [linked_movie_id link_type_id]\n" + - " β”‚ β”‚ β”‚ └─ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (ci.person_id = n.id)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((n.name_pcode_cf >= 'A') AND (n.name_pcode_cf <= 'F')) AND ((n.gender = 'm') OR ((n.gender = 'f') AND ((n.name >= 'B') AND (n.name <= 'BΓΏ')))))\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender name_pcode_cf]\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ β”‚ └─ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.person_id = n.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 1980) AND (t.production_year <= 1995))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((n.name_pcode_cf >= 'A') AND (n.name_pcode_cf <= 'F')) AND ((n.gender = 'm') OR ((n.gender = 'f') AND ((n.name >= 'B') AND (n.name <= 'BΓΏ')))))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender name_pcode_cf]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.linked_movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [linked_movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ (lt.link = 'features')\n" + " β”‚ β”‚ └─ TableAlias(lt)\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: link_type\n" + " β”‚ β”‚ └─ columns: [id link]\n" + - " β”‚ └─ InnerJoin\n" + - " β”‚ β”œβ”€ (it.id = pi.info_type_id)\n" + + " β”‚ └─ LookupJoin\n" + " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (pi.note = 'Volker Boehm')\n" + - " β”‚ β”‚ └─ TableAlias(pi)\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'mini biography')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: person_info\n" + - " β”‚ β”‚ └─ columns: [person_id info_type_id note]\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'mini biography')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + + " β”‚ β”œβ”€ (pi.note = 'Volker Boehm')\n" + + " β”‚ └─ TableAlias(pi)\n" + + " β”‚ └─ IndexedTableAccess(person_info)\n" + + " β”‚ β”œβ”€ index: [person_info.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [person_id info_type_id note]\n" + + " β”‚ └─ keys: it.id\n" + " └─ Filter\n" + " β”œβ”€ an.name LIKE '%a%'\n" + " └─ TableAlias(an)\n" + @@ -30615,68 +30868,70 @@ WHERE an.name LIKE '%a%' " β”‚ β”‚ β”œβ”€ n.id:5!null\n" + " β”‚ β”‚ └─ an.person_id:18!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ pi.person_id:13!null\n" + + " β”‚ β”œβ”€ pi.person_id:15!null\n" + " β”‚ └─ an.person_id:18!null\n" + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ n.id:5!null\n" + - " β”‚ β”‚ └─ pi.person_id:13!null\n" + + " β”‚ β”‚ └─ pi.person_id:15!null\n" + " β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ lt.id:11!null\n" + - " β”‚ β”‚ β”‚ └─ ml.link_type_id:4!null\n" + - " β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ml.linked_movie_id:3!null\n" + + " β”‚ β”‚ β”‚ └─ ml.link_type_id:10!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ml.linked_movie_id:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1980 (smallint)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1984 (smallint)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.person_id:3!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ n.id:5!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1980 (smallint)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1984 (smallint)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [t.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (9-15)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [linked_movie_id link_type_id]\n" + - " β”‚ β”‚ β”‚ └─ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.person_id:9!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ n.id:5!null\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name_pcode_cf:3\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ D (longtext)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name_pcode_cf:3\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ DΓΏ (longtext)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ m (longtext)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender name_pcode_cf]\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ β”‚ └─ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name_pcode_cf:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ D (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name_pcode_cf:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ DΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ m (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender name_pcode_cf]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.linked_movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:4!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (20-23)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: movie_link\n" + + " β”‚ β”‚ β”‚ └─ columns: [linked_movie_id link_type_id]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ lt.link:1!null\n" + @@ -30686,34 +30941,35 @@ WHERE an.name LIKE '%a%' " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: link_type\n" + " β”‚ β”‚ └─ columns: [id link]\n" + - " β”‚ └─ InnerJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.id:16!null\n" + - " β”‚ β”‚ └─ pi.info_type_id:14!null\n" + + " β”‚ └─ LookupJoin\n" + " β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ pi.note:2\n" + - " β”‚ β”‚ β”‚ └─ Volker Boehm (longtext)\n" + - " β”‚ β”‚ └─ TableAlias(pi)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ mini biography (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + " β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: person_info\n" + - " β”‚ β”‚ └─ columns: [person_id info_type_id note]\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ β”‚ └─ mini biography (longtext)\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”œβ”€ pi.note:2\n" + + " β”‚ β”‚ └─ Volker Boehm (longtext)\n" + + " β”‚ └─ TableAlias(pi)\n" + + " β”‚ └─ IndexedTableAccess(person_info)\n" + + " β”‚ β”œβ”€ index: [person_info.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it.id:13!null]\n" + + " β”‚ β”œβ”€ colSet: (33-37)\n" + + " β”‚ β”œβ”€ tableId: 7\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + + " β”‚ β”œβ”€ name: person_info\n" + + " β”‚ └─ columns: [person_id info_type_id note]\n" + " └─ Filter\n" + " β”œβ”€ an.name LIKE '%a%'\n" + " └─ TableAlias(an)\n" + " └─ IndexedTableAccess(aka_name)\n" + " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:9!null]\n" + + " β”œβ”€ keys: [ci.person_id:3!null]\n" + " β”œβ”€ colSet: (1-8)\n" + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + @@ -30731,52 +30987,52 @@ WHERE an.name LIKE '%a%' " β”‚ β”œβ”€ (n.id = pi.person_id)\n" + " β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”œβ”€ (lt.id = ml.link_type_id)\n" + - " β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = ml.linked_movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ml.linked_movie_id = t.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 1980) AND (t.production_year <= 1984))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [linked_movie_id link_type_id]\n" + - " β”‚ β”‚ β”‚ └─ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (ci.person_id = n.id)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((n.name_pcode_cf >= 'D') AND (n.name_pcode_cf <= 'DΓΏ')) AND (n.gender = 'm'))\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender name_pcode_cf]\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ β”‚ └─ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.person_id = n.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 1980) AND (t.production_year <= 1984))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((n.name_pcode_cf >= 'D') AND (n.name_pcode_cf <= 'DΓΏ')) AND (n.gender = 'm'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender name_pcode_cf]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.linked_movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [linked_movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ (lt.link = 'features')\n" + " β”‚ β”‚ └─ TableAlias(lt)\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: link_type\n" + " β”‚ β”‚ └─ columns: [id link]\n" + - " β”‚ └─ InnerJoin\n" + - " β”‚ β”œβ”€ (it.id = pi.info_type_id)\n" + + " β”‚ └─ LookupJoin\n" + " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (pi.note = 'Volker Boehm')\n" + - " β”‚ β”‚ └─ TableAlias(pi)\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'mini biography')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: person_info\n" + - " β”‚ β”‚ └─ columns: [person_id info_type_id note]\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'mini biography')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + + " β”‚ β”œβ”€ (pi.note = 'Volker Boehm')\n" + + " β”‚ └─ TableAlias(pi)\n" + + " β”‚ └─ IndexedTableAccess(person_info)\n" + + " β”‚ β”œβ”€ index: [person_info.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [person_id info_type_id note]\n" + + " β”‚ └─ keys: it.id\n" + " └─ Filter\n" + " β”œβ”€ an.name LIKE '%a%'\n" + " └─ TableAlias(an)\n" + @@ -30796,52 +31052,52 @@ WHERE an.name LIKE '%a%' " β”‚ β”œβ”€ (n.id = pi.person_id)\n" + " β”‚ β”œβ”€ InnerJoin\n" + " β”‚ β”‚ β”œβ”€ (lt.id = ml.link_type_id)\n" + - " β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = ml.linked_movie_id)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ml.linked_movie_id = t.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 1980) AND (t.production_year <= 1984))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [linked_movie_id link_type_id]\n" + - " β”‚ β”‚ β”‚ └─ InnerJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (ci.person_id = n.id)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((n.name_pcode_cf >= 'D') AND (n.name_pcode_cf <= 'DΓΏ')) AND (n.gender = 'm'))\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender name_pcode_cf]\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ β”‚ └─ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.person_id = n.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 1980) AND (t.production_year <= 1984))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: t.id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((n.name_pcode_cf >= 'D') AND (n.name_pcode_cf <= 'DΓΏ')) AND (n.gender = 'm'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender name_pcode_cf]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [movie_link.linked_movie_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [linked_movie_id link_type_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: ci.movie_id\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ (lt.link = 'features')\n" + " β”‚ β”‚ └─ TableAlias(lt)\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: link_type\n" + " β”‚ β”‚ └─ columns: [id link]\n" + - " β”‚ └─ InnerJoin\n" + - " β”‚ β”œβ”€ (it.id = pi.info_type_id)\n" + + " β”‚ └─ LookupJoin\n" + " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (pi.note = 'Volker Boehm')\n" + - " β”‚ β”‚ └─ TableAlias(pi)\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'mini biography')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: person_info\n" + - " β”‚ β”‚ └─ columns: [person_id info_type_id note]\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'mini biography')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + + " β”‚ β”œβ”€ (pi.note = 'Volker Boehm')\n" + + " β”‚ └─ TableAlias(pi)\n" + + " β”‚ └─ IndexedTableAccess(person_info)\n" + + " β”‚ β”œβ”€ index: [person_info.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [person_id info_type_id note]\n" + + " β”‚ └─ keys: it.id\n" + " └─ Filter\n" + " β”œβ”€ an.name LIKE '%a%'\n" + " └─ TableAlias(an)\n" + @@ -30893,15 +31149,15 @@ WHERE an.name IS NOT NULL ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(n.name):0!null->cast_member_name:0, min(pi.info):1!null->cast_member_info:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(n.name:7!null), MIN(pi.info:4!null)\n" + + " β”œβ”€ select: MIN(n.name:9!null), MIN(pi.info:6!null)\n" + " β”œβ”€ group: \n" + " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ β”‚ └─ ci.movie_id:17!null\n" + + " β”‚ β”‚ └─ ci.movie_id:13!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ml.linked_movie_id:10!null\n" + + " β”‚ β”œβ”€ ml.linked_movie_id:14!null\n" + " β”‚ └─ t.id:0!null\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ AND\n" + @@ -30919,125 +31175,122 @@ WHERE an.name IS NOT NULL " └─ InnerJoin\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.id:6!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ pi.person_id:2!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ it.id:14!null\n" + - " β”‚ β”‚ β”‚ └─ pi.info_type_id:3!null\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ n.id:8!null\n" + + " β”‚ β”‚ β”‚ └─ pi.person_id:4!null\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ pi.person_id:2!null\n" + - " β”‚ β”‚ └─ an.person_id:18!null\n" + + " β”‚ β”‚ β”œβ”€ pi.person_id:4!null\n" + + " β”‚ β”‚ └─ an.person_id:16!null\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ pi.person_id:2!null\n" + - " β”‚ └─ ci.person_id:16!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ pi.note:3 IS NULL\n" + - " β”‚ └─ TableAlias(pi)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: person_info\n" + - " β”‚ └─ columns: [person_id info_type_id info note]\n" + + " β”‚ β”œβ”€ pi.person_id:4!null\n" + + " β”‚ └─ ci.person_id:12!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ it.info:1!null\n" + + " β”‚ β”‚ β”‚ └─ mini biography (longtext)\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ └─ pi.note:3 IS NULL\n" + + " β”‚ └─ TableAlias(pi)\n" + + " β”‚ └─ IndexedTableAccess(person_info)\n" + + " β”‚ β”œβ”€ index: [person_info.info_type_id]\n" + + " β”‚ β”œβ”€ keys: [it.id:2!null]\n" + + " β”‚ β”œβ”€ colSet: (33-37)\n" + + " β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: person_info\n" + + " β”‚ └─ columns: [person_id info_type_id info note]\n" + " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ n.id:6!null\n" + - " β”‚ β”‚ └─ an.person_id:18!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.person_id:16!null\n" + - " β”‚ └─ n.id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name_pcode_cf:3\n" + - " β”‚ β”‚ β”‚ β”‚ └─ A (longtext)\n" + - " β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ n.name_pcode_cf:3\n" + - " β”‚ β”‚ β”‚ └─ F (longtext)\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + - " β”‚ β”‚ β”‚ └─ m (longtext)\n" + - " β”‚ β”‚ └─ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + - " β”‚ β”‚ β”‚ └─ f (longtext)\n" + - " β”‚ β”‚ └─ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ n.name:1!null\n" + - " β”‚ β”‚ β”‚ └─ A (longtext)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ n.name:1!null\n" + - " β”‚ β”‚ └─ AΓΏ (longtext)\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender name_pcode_cf]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ lt.id:12!null\n" + - " β”‚ β”‚ └─ ml.link_type_id:11!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:17!null\n" + - " β”‚ └─ ml.linked_movie_id:10!null\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [linked_movie_id link_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ lt.link:1!null\n" + - " β”‚ β”‚ └─ TUPLE(references (longtext), referenced in (longtext), features (longtext), featured in (longtext))\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ it.info:1!null\n" + - " β”‚ β”‚ └─ mini biography (longtext)\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id]\n" + - " └─ Filter\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ an.name:1!null IS NULL\n" + - " β”‚ └─ Or\n" + - " β”‚ β”œβ”€ an.name LIKE '%a%'\n" + - " β”‚ └─ AND\n" + - " β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ an.name:1!null\n" + - " β”‚ β”‚ └─ A (longtext)\n" + - " β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”œβ”€ an.name:1!null\n" + - " β”‚ └─ AΓΏ (longtext)\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:16!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id name]\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ lt.id:18!null\n" + + " β”‚ └─ ml.link_type_id:15!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name_pcode_cf:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ A (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name_pcode_cf:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ F (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ m (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ f (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ A (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ AΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender name_pcode_cf]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [n.id:8!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (9-15)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ └─ columns: [person_id movie_id]\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.linked_movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:13!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (20-23)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_link\n" + + " β”‚ β”‚ └─ columns: [linked_movie_id link_type_id]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ └─ an.name:1!null IS NULL\n" + + " β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”œβ”€ an.name LIKE '%a%'\n" + + " β”‚ β”‚ └─ AND\n" + + " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”œβ”€ an.name:1!null\n" + + " β”‚ β”‚ β”‚ └─ A (longtext)\n" + + " β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”œβ”€ an.name:1!null\n" + + " β”‚ β”‚ └─ AΓΏ (longtext)\n" + + " β”‚ └─ TableAlias(an)\n" + + " β”‚ └─ IndexedTableAccess(aka_name)\n" + + " β”‚ β”œβ”€ index: [aka_name.person_id]\n" + + " β”‚ β”œβ”€ keys: [ci.person_id:12!null]\n" + + " β”‚ β”œβ”€ colSet: (1-8)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: aka_name\n" + + " β”‚ └─ columns: [person_id name]\n" + + " └─ Filter\n" + + " β”œβ”€ HashIn\n" + + " β”‚ β”œβ”€ lt.link:1!null\n" + + " β”‚ └─ TUPLE(references (longtext), referenced in (longtext), features (longtext), featured in (longtext))\n" + + " └─ TableAlias(lt)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: link_type\n" + + " └─ columns: [id link]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(n.name) as cast_member_name, min(pi.info) as cast_member_info]\n" + @@ -31053,53 +31306,55 @@ WHERE an.name IS NOT NULL " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((n.id = pi.person_id) AND (it.id = pi.info_type_id)) AND (pi.person_id = an.person_id)) AND (pi.person_id = ci.person_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT(pi.note IS NULL))\n" + - " β”‚ └─ TableAlias(pi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: person_info\n" + - " β”‚ └─ columns: [person_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((n.id = an.person_id) AND (ci.person_id = n.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (((n.name_pcode_cf >= 'A') AND (n.name_pcode_cf <= 'F')) AND ((n.gender = 'm') OR ((n.gender = 'f') AND ((n.name >= 'A') AND (n.name <= 'AΓΏ')))))\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender name_pcode_cf]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((lt.id = ml.link_type_id) AND (ci.movie_id = ml.linked_movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [linked_movie_id link_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (lt.link HASH IN ('references', 'referenced in', 'features', 'featured in'))\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'mini biography')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id]\n" + - " └─ Filter\n" + - " β”œβ”€ ((NOT(an.name IS NULL)) AND (an.name LIKE '%a%' OR ((an.name >= 'A') AND (an.name <= 'AΓΏ'))))\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " β”œβ”€ (((n.id = pi.person_id) AND (pi.person_id = an.person_id)) AND (pi.person_id = ci.person_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'mini biography')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (NOT(pi.note IS NULL))\n" + + " β”‚ └─ TableAlias(pi)\n" + + " β”‚ └─ IndexedTableAccess(person_info)\n" + + " β”‚ β”œβ”€ index: [person_info.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [person_id info_type_id info note]\n" + + " β”‚ └─ keys: it.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (lt.id = ml.link_type_id)\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((n.name_pcode_cf >= 'A') AND (n.name_pcode_cf <= 'F')) AND ((n.gender = 'm') OR ((n.gender = 'f') AND ((n.name >= 'A') AND (n.name <= 'AΓΏ')))))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender name_pcode_cf]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.linked_movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [linked_movie_id link_type_id]\n" + + " β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ ((NOT(an.name IS NULL)) AND (an.name LIKE '%a%' OR ((an.name >= 'A') AND (an.name <= 'AΓΏ'))))\n" + + " β”‚ └─ TableAlias(an)\n" + + " β”‚ └─ IndexedTableAccess(aka_name)\n" + + " β”‚ β”œβ”€ index: [aka_name.person_id]\n" + + " β”‚ β”œβ”€ columns: [person_id name]\n" + + " β”‚ └─ keys: ci.person_id\n" + + " └─ Filter\n" + + " β”œβ”€ (lt.link HASH IN ('references', 'referenced in', 'features', 'featured in'))\n" + + " └─ TableAlias(lt)\n" + + " └─ Table\n" + + " β”œβ”€ name: link_type\n" + + " └─ columns: [id link]\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(n.name) as cast_member_name, min(pi.info) as cast_member_info]\n" + @@ -31115,53 +31370,55 @@ WHERE an.name IS NOT NULL " β”‚ β”œβ”€ name: title\n" + " β”‚ └─ columns: [id production_year]\n" + " └─ InnerJoin\n" + - " β”œβ”€ ((((n.id = pi.person_id) AND (it.id = pi.info_type_id)) AND (pi.person_id = an.person_id)) AND (pi.person_id = ci.person_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (NOT(pi.note IS NULL))\n" + - " β”‚ └─ TableAlias(pi)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: person_info\n" + - " β”‚ └─ columns: [person_id info_type_id info note]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((n.id = an.person_id) AND (ci.person_id = n.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (((n.name_pcode_cf >= 'A') AND (n.name_pcode_cf <= 'F')) AND ((n.gender = 'm') OR ((n.gender = 'f') AND ((n.name >= 'A') AND (n.name <= 'AΓΏ')))))\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender name_pcode_cf]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((lt.id = ml.link_type_id) AND (ci.movie_id = ml.linked_movie_id))\n" + - " β”œβ”€ TableAlias(ml)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_link\n" + - " β”‚ └─ columns: [linked_movie_id link_type_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (lt.link HASH IN ('references', 'referenced in', 'features', 'featured in'))\n" + - " β”‚ └─ TableAlias(lt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: link_type\n" + - " β”‚ └─ columns: [id link]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (it.info = 'mini biography')\n" + - " β”‚ └─ TableAlias(it)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: info_type\n" + - " β”‚ └─ columns: [id info]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id]\n" + - " └─ Filter\n" + - " β”œβ”€ ((NOT(an.name IS NULL)) AND (an.name LIKE '%a%' OR ((an.name >= 'A') AND (an.name <= 'AΓΏ'))))\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " β”œβ”€ (((n.id = pi.person_id) AND (pi.person_id = an.person_id)) AND (pi.person_id = ci.person_id))\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (it.info = 'mini biography')\n" + + " β”‚ β”‚ └─ TableAlias(it)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: info_type\n" + + " β”‚ β”‚ └─ columns: [id info]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (NOT(pi.note IS NULL))\n" + + " β”‚ └─ TableAlias(pi)\n" + + " β”‚ └─ IndexedTableAccess(person_info)\n" + + " β”‚ β”œβ”€ index: [person_info.info_type_id]\n" + + " β”‚ β”œβ”€ columns: [person_id info_type_id info note]\n" + + " β”‚ └─ keys: it.id\n" + + " └─ InnerJoin\n" + + " β”œβ”€ (lt.id = ml.link_type_id)\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((n.name_pcode_cf >= 'A') AND (n.name_pcode_cf <= 'F')) AND ((n.gender = 'm') OR ((n.gender = 'f') AND ((n.name >= 'A') AND (n.name <= 'AΓΏ')))))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id name gender name_pcode_cf]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id]\n" + + " β”‚ β”‚ β”‚ └─ keys: n.id\n" + + " β”‚ β”‚ └─ TableAlias(ml)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_link)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_link.linked_movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [linked_movie_id link_type_id]\n" + + " β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ ((NOT(an.name IS NULL)) AND (an.name LIKE '%a%' OR ((an.name >= 'A') AND (an.name <= 'AΓΏ'))))\n" + + " β”‚ └─ TableAlias(an)\n" + + " β”‚ └─ IndexedTableAccess(aka_name)\n" + + " β”‚ β”œβ”€ index: [aka_name.person_id]\n" + + " β”‚ β”œβ”€ columns: [person_id name]\n" + + " β”‚ └─ keys: ci.person_id\n" + + " └─ Filter\n" + + " β”œβ”€ (lt.link HASH IN ('references', 'referenced in', 'features', 'featured in'))\n" + + " └─ TableAlias(lt)\n" + + " └─ Table\n" + + " β”œβ”€ name: link_type\n" + + " └─ columns: [id link]\n" + "", }, { @@ -31197,207 +31454,207 @@ WHERE ci.note ='(voice: English version)' " └─ GroupBy\n" + " β”œβ”€ select: MIN(an1.name:16!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ an1.person_id:15!null\n" + + " β”‚ └─ n1.id:8!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:12!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:6!null\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ci.role_id:14!null\n" + - " β”‚ └─ rt.id:2!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + - " β”‚ β”‚ └─ actress (longtext)\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ an1.person_id:15!null\n" + - " β”‚ β”‚ └─ n1.id:4!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ n1.id:4!null\n" + - " β”‚ └─ ci.person_id:11!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ n1.name LIKE '%Yo%'\n" + - " β”‚ β”‚ └─ NOT\n" + - " β”‚ β”‚ └─ n1.name LIKE '%Yu%'\n" + - " β”‚ └─ TableAlias(n1)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_id:7!null\n" + - " β”‚ β”‚ └─ cn.id:9!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:12!null\n" + - " β”‚ └─ mc.movie_id:6!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ mc.note LIKE '%(Japan)%'\n" + - " β”‚ β”‚ └─ NOT\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [jp] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.note:2\n" + - " β”‚ β”‚ └─ (voice: English version) (longtext)\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id note role_id]\n" + - " └─ TableAlias(an1)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:11!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id name]\n" + + " β”‚ β”‚ β”œβ”€ mc.company_id:11!null\n" + + " β”‚ β”‚ └─ cn.id:13!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ n1.id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ci.person_id:4!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ actress (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.note:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ (voice: English version) (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [rt.id:2!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (9-15)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id note role_id]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ n1.name LIKE '%Yo%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ └─ n1.name LIKE '%Yu%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n1)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.note LIKE '%(Japan)%'\n" + + " β”‚ β”‚ β”‚ └─ NOT\n" + + " β”‚ β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:5!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (23-27)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id note]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ └─ [jp] (longtext)\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an1)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ keys: [ci.person_id:4!null]\n" + + " β”œβ”€ colSet: (1-8)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: aka_name\n" + + " └─ columns: [person_id name]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(an1.name) as actress_pseudonym, min(t.title) as japanese_movie_dubbed]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(an1.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = t.id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.role_id = rt.id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actress')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((an1.person_id = n1.id) AND (n1.id = ci.person_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n1.name LIKE '%Yo%' AND (NOT(n1.name LIKE '%Yu%')))\n" + - " β”‚ └─ TableAlias(n1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mc.note LIKE '%(Japan)%' AND (NOT(mc.note LIKE '%(USA)%')))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[jp]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ci.note = '(voice: English version)')\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id note role_id]\n" + - " └─ TableAlias(an1)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an1.person_id = n1.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_id = cn.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n1.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'actress')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note = '(voice: English version)')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: rt.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n1.name LIKE '%Yo%' AND (NOT(n1.name LIKE '%Yu%')))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mc.note LIKE '%(Japan)%' AND (NOT(mc.note LIKE '%(USA)%')))\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id note]\n" + + " β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[jp]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an1)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(an1.name) as actress_pseudonym, min(t.title) as japanese_movie_dubbed]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(an1.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = t.id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.role_id = rt.id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actress')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((an1.person_id = n1.id) AND (n1.id = ci.person_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n1.name LIKE '%Yo%' AND (NOT(n1.name LIKE '%Yu%')))\n" + - " β”‚ └─ TableAlias(n1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mc.note LIKE '%(Japan)%' AND (NOT(mc.note LIKE '%(USA)%')))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[jp]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ci.note = '(voice: English version)')\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id note role_id]\n" + - " └─ TableAlias(an1)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an1.person_id = n1.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_id = cn.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n1.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'actress')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note = '(voice: English version)')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: rt.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n1.name LIKE '%Yo%' AND (NOT(n1.name LIKE '%Yu%')))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mc.note LIKE '%(Japan)%' AND (NOT(mc.note LIKE '%(USA)%')))\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id note]\n" + + " β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[jp]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an1)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", }, { @@ -31438,239 +31695,239 @@ WHERE ci.note ='(voice: English version)' " └─ GroupBy\n" + " β”œβ”€ select: MIN(an.name:17!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ an.person_id:16!null\n" + + " β”‚ └─ n.id:9!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:13!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ β”‚ β”‚ └─ 2006 (smallint)\n" + - " β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ β”‚ └─ 2007 (smallint)\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ One Piece (longtext)\n" + - " β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + - " β”‚ β”‚ β”‚ └─ One PieceΓΏ (longtext)\n" + - " β”‚ β”‚ └─ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + - " β”‚ β”‚ β”‚ └─ Dragon Ball Z (longtext)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ t.title:1!null\n" + - " β”‚ β”‚ └─ Dragon Ball ZΓΏ (longtext)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ci.role_id:15!null\n" + - " β”‚ └─ rt.id:3!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + - " β”‚ β”‚ └─ actress (longtext)\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ an.person_id:16!null\n" + - " β”‚ β”‚ └─ n.id:5!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ n.id:5!null\n" + - " β”‚ └─ ci.person_id:12!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ n.name LIKE '%Yo%'\n" + - " β”‚ β”‚ └─ NOT\n" + - " β”‚ β”‚ └─ n.name LIKE '%Yu%'\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_id:8!null\n" + - " β”‚ β”‚ └─ cn.id:10!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:13!null\n" + - " β”‚ └─ mc.movie_id:7!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mc.note LIKE '%(Japan)%'\n" + - " β”‚ β”‚ β”‚ └─ NOT\n" + - " β”‚ β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ mc.note LIKE '%(2006)%'\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(2007)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [jp] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.note:2\n" + - " β”‚ β”‚ └─ (voice: English version) (longtext)\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id note role_id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:12!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id name]\n" + - "", - ExpectedEstimates: "Project\n" + - " β”œβ”€ columns: [min(an.name) as acress_pseudonym, min(t.title) as japanese_anime_movie]\n" + - " └─ GroupBy\n" + - " β”œβ”€ SelectedExprs(MIN(an.name), MIN(t.title))\n" + - " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = t.id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (((t.production_year >= 2006) AND (t.production_year <= 2007)) AND (((t.title >= 'One Piece') AND (t.title <= 'One PieceΓΏ')) OR ((t.title >= 'Dragon Ball Z') AND (t.title <= 'Dragon Ball ZΓΏ'))))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.role_id = rt.id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actress')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((an.person_id = n.id) AND (n.id = ci.person_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.name LIKE '%Yo%' AND (NOT(n.name LIKE '%Yu%')))\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((mc.note LIKE '%(Japan)%' AND (NOT(mc.note LIKE '%(USA)%'))) AND (mc.note LIKE '%(2006)%' OR mc.note LIKE '%(2007)%'))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[jp]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ci.note = '(voice: English version)')\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id note role_id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " β”‚ β”‚ β”œβ”€ mc.company_id:12!null\n" + + " β”‚ β”‚ └─ cn.id:14!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ci.person_id:5!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:6!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 2006 (smallint)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 2007 (smallint)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ One Piece (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ One PieceΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Dragon Ball Z (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.title:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Dragon Ball ZΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ actress (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.note:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ (voice: English version) (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [rt.id:3!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (9-15)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id note role_id]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.name LIKE '%Yo%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ └─ n.name LIKE '%Yu%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mc.note LIKE '%(Japan)%'\n" + + " β”‚ β”‚ β”‚ β”‚ └─ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.note LIKE '%(USA)%'\n" + + " β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.note LIKE '%(2006)%'\n" + + " β”‚ β”‚ β”‚ └─ mc.note LIKE '%(2007)%'\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:6!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (23-27)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id note]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ └─ [jp] (longtext)\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ keys: [ci.person_id:5!null]\n" + + " β”œβ”€ colSet: (1-8)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: aka_name\n" + + " └─ columns: [person_id name]\n" + + "", + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [min(an.name) as acress_pseudonym, min(t.title) as japanese_anime_movie]\n" + + " └─ GroupBy\n" + + " β”œβ”€ SelectedExprs(MIN(an.name), MIN(t.title))\n" + + " β”œβ”€ Grouping()\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an.person_id = n.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_id = cn.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((t.production_year >= 2006) AND (t.production_year <= 2007)) AND (((t.title >= 'One Piece') AND (t.title <= 'One PieceΓΏ')) OR ((t.title >= 'Dragon Ball Z') AND (t.title <= 'Dragon Ball ZΓΏ'))))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'actress')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note = '(voice: English version)')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: rt.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n.name LIKE '%Yo%' AND (NOT(n.name LIKE '%Yu%')))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((mc.note LIKE '%(Japan)%' AND (NOT(mc.note LIKE '%(USA)%'))) AND (mc.note LIKE '%(2006)%' OR mc.note LIKE '%(2007)%'))\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id note]\n" + + " β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[jp]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(an.name) as acress_pseudonym, min(t.title) as japanese_anime_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(an.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = t.id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (((t.production_year >= 2006) AND (t.production_year <= 2007)) AND (((t.title >= 'One Piece') AND (t.title <= 'One PieceΓΏ')) OR ((t.title >= 'Dragon Ball Z') AND (t.title <= 'Dragon Ball ZΓΏ'))))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.role_id = rt.id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actress')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((an.person_id = n.id) AND (n.id = ci.person_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.name LIKE '%Yo%' AND (NOT(n.name LIKE '%Yu%')))\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((mc.note LIKE '%(Japan)%' AND (NOT(mc.note LIKE '%(USA)%'))) AND (mc.note LIKE '%(2006)%' OR mc.note LIKE '%(2007)%'))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[jp]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (ci.note = '(voice: English version)')\n" + - " β”‚ └─ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id note role_id]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an.person_id = n.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_id = cn.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (((t.production_year >= 2006) AND (t.production_year <= 2007)) AND (((t.title >= 'One Piece') AND (t.title <= 'One PieceΓΏ')) OR ((t.title >= 'Dragon Ball Z') AND (t.title <= 'Dragon Ball ZΓΏ'))))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'actress')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note = '(voice: English version)')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: rt.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n.name LIKE '%Yo%' AND (NOT(n.name LIKE '%Yu%')))\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((mc.note LIKE '%(Japan)%' AND (NOT(mc.note LIKE '%(USA)%'))) AND (mc.note LIKE '%(2006)%' OR mc.note LIKE '%(2007)%'))\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id note]\n" + + " β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[jp]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", }, { @@ -31701,181 +31958,181 @@ WHERE cn.country_code ='[us]' " └─ GroupBy\n" + " β”œβ”€ select: MIN(a1.name:13!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ a1.person_id:12!null\n" + + " β”‚ └─ n1.id:7!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:10!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:5!null\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ci.role_id:11!null\n" + - " β”‚ └─ rt.id:2!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + - " β”‚ β”‚ └─ writer (longtext)\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ a1.person_id:12!null\n" + - " β”‚ β”‚ └─ n1.id:4!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ n1.id:4!null\n" + - " β”‚ └─ ci.person_id:9!null\n" + - " β”œβ”€ TableAlias(n1)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_id:6!null\n" + - " β”‚ β”‚ └─ cn.id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:10!null\n" + - " β”‚ └─ mc.movie_id:5!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id role_id]\n" + - " └─ TableAlias(a1)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:9!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id name]\n" + + " β”‚ β”‚ β”œβ”€ mc.company_id:9!null\n" + + " β”‚ β”‚ └─ cn.id:10!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ n1.id:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ci.person_id:4!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ writer (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [rt.id:2!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (9-15)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id role_id]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n1)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:5!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (23-27)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(a1)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ keys: [ci.person_id:4!null]\n" + + " β”œβ”€ colSet: (1-8)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: aka_name\n" + + " └─ columns: [person_id name]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(a1.name) as writer_pseudo_name, min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(a1.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = t.id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.role_id = rt.id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'writer')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((a1.person_id = n1.id) AND (n1.id = ci.person_id))\n" + - " β”œβ”€ TableAlias(n1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id role_id]\n" + - " └─ TableAlias(a1)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (a1.person_id = n1.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_id = cn.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n1.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'writer')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: rt.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(a1)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(a1.name) as writer_pseudo_name, min(t.title) as movie_title]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(a1.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = t.id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.role_id = rt.id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'writer')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((a1.person_id = n1.id) AND (n1.id = ci.person_id))\n" + - " β”œβ”€ TableAlias(n1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id role_id]\n" + - " └─ TableAlias(a1)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (a1.person_id = n1.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_id = cn.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n1.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'writer')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: rt.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(a1)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", }, { @@ -31906,181 +32163,181 @@ WHERE cn.country_code ='[us]' " └─ GroupBy\n" + " β”œβ”€ select: MIN(an1.name:13!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ an1.person_id:12!null\n" + + " β”‚ └─ n1.id:7!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:10!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:5!null\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ci.role_id:11!null\n" + - " β”‚ └─ rt.id:2!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + - " β”‚ β”‚ └─ costume designer (longtext)\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ an1.person_id:12!null\n" + - " β”‚ β”‚ └─ n1.id:4!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ n1.id:4!null\n" + - " β”‚ └─ ci.person_id:9!null\n" + - " β”œβ”€ TableAlias(n1)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ mc.company_id:6!null\n" + - " β”‚ β”‚ └─ cn.id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ ci.movie_id:10!null\n" + - " β”‚ └─ mc.movie_id:5!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id role_id]\n" + - " └─ TableAlias(an1)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:9!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id name]\n" + + " β”‚ β”‚ β”œβ”€ mc.company_id:9!null\n" + + " β”‚ β”‚ └─ cn.id:10!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ n1.id:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ci.person_id:4!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:5!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ costume designer (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [rt.id:2!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (9-15)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id role_id]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n1)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:5!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (23-27)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an1)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ keys: [ci.person_id:4!null]\n" + + " β”œβ”€ colSet: (1-8)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: aka_name\n" + + " └─ columns: [person_id name]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(an1.name) as costume_designer_pseudo, min(t.title) as movie_with_costumes]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(an1.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = t.id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.role_id = rt.id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'costume designer')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((an1.person_id = n1.id) AND (n1.id = ci.person_id))\n" + - " β”œβ”€ TableAlias(n1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id role_id]\n" + - " └─ TableAlias(an1)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an1.person_id = n1.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_id = cn.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n1.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'costume designer')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: rt.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an1)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(an1.name) as costume_designer_pseudo, min(t.title) as movie_with_costumes]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(an1.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = t.id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.role_id = rt.id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'costume designer')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((an1.person_id = n1.id) AND (n1.id = ci.person_id))\n" + - " β”œβ”€ TableAlias(n1)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((mc.company_id = cn.id) AND (ci.movie_id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ TableAlias(ci)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ └─ columns: [person_id movie_id role_id]\n" + - " └─ TableAlias(an1)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an1.person_id = n1.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_id = cn.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n1.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'costume designer')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: rt.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n1)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an1)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", }, { @@ -32122,245 +32379,245 @@ WHERE ci.note IN ('(voice)', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(an.name):0!null->alternative_name:0, min(chn.name):1!null->character_name:0, min(t.title):2!null->movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(an.name:21!null), MIN(chn.name:19!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(an.name:21!null), MIN(chn.name:6!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ an.person_id:20!null\n" + + " β”‚ └─ n.id:12!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:14!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:8!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ β”‚ └─ 2005 (smallint)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2015 (smallint)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ci.role_id:17!null\n" + - " β”‚ └─ rt.id:3!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + - " β”‚ β”‚ └─ actress (longtext)\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ n.id:5!null\n" + - " β”‚ β”‚ └─ ci.person_id:13!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ an.person_id:20!null\n" + - " β”‚ └─ n.id:5!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + - " β”‚ β”‚ β”‚ └─ f (longtext)\n" + - " β”‚ β”‚ └─ n.name LIKE '%Ang%'\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:14!null\n" + - " β”‚ β”‚ └─ mc.movie_id:8!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.company_id:9!null\n" + - " β”‚ └─ cn.id:11!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ mc.note:2 IS NULL\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ mc.note LIKE '%(USA)%'\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(worldwide)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ chn.id:18!null\n" + - " β”‚ β”‚ └─ ci.person_role_id:15\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + - " β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice: Japanese version) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:13!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id name]\n" + + " β”‚ β”‚ β”œβ”€ mc.company_id:16!null\n" + + " β”‚ β”‚ └─ cn.id:18!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.id:12!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ci.person_id:7!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 2005 (smallint)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 2015 (smallint)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.role_id:11!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ rt.id:3!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ actress (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice: Japanese version) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [chn.id:5!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (16-22)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ f (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ n.name LIKE '%Ang%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ └─ mc.note:2 IS NULL\n" + + " β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.note LIKE '%(USA)%'\n" + + " β”‚ β”‚ β”‚ └─ mc.note LIKE '%(worldwide)%'\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:8!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (30-34)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id note]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ keys: [ci.person_id:7!null]\n" + + " β”œβ”€ colSet: (1-8)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: aka_name\n" + + " └─ columns: [person_id name]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(an.name) as alternative_name, min(chn.name) as character_name, min(t.title) as movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(an.name), MIN(chn.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = t.id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year >= 2005) AND (t.production_year <= 2015))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.role_id = rt.id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actress')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((n.id = ci.person_id) AND (an.person_id = n.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%Ang%')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mc.movie_id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note IS NULL)) AND (mc.note LIKE '%(USA)%' OR mc.note LIKE '%(worldwide)%'))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an.person_id = n.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_id = cn.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 2005) AND (t.production_year <= 2015))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.role_id = rt.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'actress')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%Ang%')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((NOT(mc.note IS NULL)) AND (mc.note LIKE '%(USA)%' OR mc.note LIKE '%(worldwide)%'))\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id note]\n" + + " β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(an.name) as alternative_name, min(chn.name) as character_name, min(t.title) as movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(an.name), MIN(chn.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = t.id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year >= 2005) AND (t.production_year <= 2015))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.role_id = rt.id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actress')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((n.id = ci.person_id) AND (an.person_id = n.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%Ang%')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mc.movie_id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((NOT(mc.note IS NULL)) AND (mc.note LIKE '%(USA)%' OR mc.note LIKE '%(worldwide)%'))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an.person_id = n.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_id = cn.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 2005) AND (t.production_year <= 2015))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.role_id = rt.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'actress')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%Ang%')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ ((NOT(mc.note IS NULL)) AND (mc.note LIKE '%(USA)%' OR mc.note LIKE '%(worldwide)%'))\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id note]\n" + + " β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", }, { @@ -32400,244 +32657,244 @@ WHERE ci.note = '(voice)' ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(an.name):0!null->alternative_name:0, min(chn.name):1!null->voiced_character:0, min(n.name):2!null->voicing_actress:0, min(t.title):3!null->american_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(an.name:21!null), MIN(chn.name:19!null), MIN(n.name:6!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(an.name:21!null), MIN(chn.name:6!null), MIN(n.name:13!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ an.person_id:20!null\n" + + " β”‚ └─ n.id:12!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:14!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:8!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ β”‚ └─ 2007 (smallint)\n" + - " β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”œβ”€ t.production_year:2\n" + - " β”‚ β”‚ └─ 2010 (smallint)\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ci.role_id:17!null\n" + - " β”‚ └─ rt.id:3!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + - " β”‚ β”‚ └─ actress (longtext)\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ n.id:5!null\n" + - " β”‚ β”‚ └─ ci.person_id:13!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ an.person_id:20!null\n" + - " β”‚ └─ n.id:5!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + - " β”‚ β”‚ β”‚ └─ f (longtext)\n" + - " β”‚ β”‚ └─ n.name LIKE '%Angel%'\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:14!null\n" + - " β”‚ β”‚ └─ mc.movie_id:8!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.company_id:9!null\n" + - " β”‚ └─ cn.id:11!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ mc.note LIKE '%(200%)%'\n" + - " β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”œβ”€ mc.note LIKE '%(USA)%'\n" + - " β”‚ β”‚ └─ mc.note LIKE '%(worldwide)%'\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ chn.id:18!null\n" + - " β”‚ β”‚ └─ ci.person_role_id:15\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + - " β”‚ β”‚ β”‚ └─ (voice) (longtext)\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:13!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id name]\n" + + " β”‚ β”‚ β”œβ”€ mc.company_id:16!null\n" + + " β”‚ β”‚ └─ cn.id:18!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.id:12!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ci.person_id:7!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 2007 (smallint)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ t.production_year:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 2010 (smallint)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.role_id:11!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ rt.id:3!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ actress (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ (voice) (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [chn.id:5!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (16-22)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ f (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ n.name LIKE '%Angel%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.note LIKE '%(200%)%'\n" + + " β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”œβ”€ mc.note LIKE '%(USA)%'\n" + + " β”‚ β”‚ β”‚ └─ mc.note LIKE '%(worldwide)%'\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:8!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (30-34)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id note]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ keys: [ci.person_id:7!null]\n" + + " β”œβ”€ colSet: (1-8)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: aka_name\n" + + " └─ columns: [person_id name]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(an.name) as alternative_name, min(chn.name) as voiced_character, min(n.name) as voicing_actress, min(t.title) as american_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(an.name), MIN(chn.name), MIN(n.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = t.id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year >= 2007) AND (t.production_year <= 2010))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.role_id = rt.id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actress')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((n.id = ci.person_id) AND (an.person_id = n.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%Angel%')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mc.movie_id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mc.note LIKE '%(200%)%' AND (mc.note LIKE '%(USA)%' OR mc.note LIKE '%(worldwide)%'))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note = '(voice)')\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an.person_id = n.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_id = cn.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 2007) AND (t.production_year <= 2010))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.role_id = rt.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'actress')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note = '(voice)')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%Angel%')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mc.note LIKE '%(200%)%' AND (mc.note LIKE '%(USA)%' OR mc.note LIKE '%(worldwide)%'))\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id note]\n" + + " β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(an.name) as alternative_name, min(chn.name) as voiced_character, min(n.name) as voicing_actress, min(t.title) as american_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(an.name), MIN(chn.name), MIN(n.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = t.id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((t.production_year >= 2007) AND (t.production_year <= 2010))\n" + - " β”‚ └─ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.role_id = rt.id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actress')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((n.id = ci.person_id) AND (an.person_id = n.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%Angel%')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mc.movie_id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (mc.note LIKE '%(200%)%' AND (mc.note LIKE '%(USA)%' OR mc.note LIKE '%(worldwide)%'))\n" + - " β”‚ └─ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id note]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note = '(voice)')\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an.person_id = n.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_id = cn.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((t.production_year >= 2007) AND (t.production_year <= 2010))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title production_year]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.role_id = rt.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'actress')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note = '(voice)')\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%Angel%')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”œβ”€ (mc.note LIKE '%(200%)%' AND (mc.note LIKE '%(USA)%' OR mc.note LIKE '%(worldwide)%'))\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id note]\n" + + " β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", }, { @@ -32676,222 +32933,222 @@ WHERE ci.note IN ('(voice)', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(an.name):0!null->alternative_name:0, min(chn.name):1!null->voiced_character_name:0, min(n.name):2!null->voicing_actress:0, min(t.title):3!null->american_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(an.name:19!null), MIN(chn.name:17!null), MIN(n.name:5!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(an.name:19!null), MIN(chn.name:5!null), MIN(n.name:12!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ an.person_id:18!null\n" + + " β”‚ └─ n.id:11!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:12!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:7!null\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ci.role_id:15!null\n" + - " β”‚ └─ rt.id:2!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + - " β”‚ β”‚ └─ actress (longtext)\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ n.id:4!null\n" + - " β”‚ β”‚ └─ ci.person_id:11!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ an.person_id:18!null\n" + - " β”‚ └─ n.id:4!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + - " β”‚ β”‚ β”‚ └─ f (longtext)\n" + - " β”‚ β”‚ └─ n.name LIKE '%An%'\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:12!null\n" + - " β”‚ β”‚ └─ mc.movie_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.company_id:8!null\n" + - " β”‚ └─ cn.id:9!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ chn.id:16!null\n" + - " β”‚ β”‚ └─ ci.person_role_id:13\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + - " β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice: Japanese version) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:11!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id name]\n" + + " β”‚ β”‚ β”œβ”€ mc.company_id:15!null\n" + + " β”‚ β”‚ └─ cn.id:16!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.id:11!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ci.person_id:6!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.role_id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ rt.id:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ actress (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice: Japanese version) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [chn.id:4!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (16-22)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ f (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ n.name LIKE '%An%'\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:7!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (30-34)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ keys: [ci.person_id:6!null]\n" + + " β”œβ”€ colSet: (1-8)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: aka_name\n" + + " └─ columns: [person_id name]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(an.name) as alternative_name, min(chn.name) as voiced_character_name, min(n.name) as voicing_actress, min(t.title) as american_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(an.name), MIN(chn.name), MIN(n.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = t.id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.role_id = rt.id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actress')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((n.id = ci.person_id) AND (an.person_id = n.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%An%')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mc.movie_id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an.person_id = n.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_id = cn.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.role_id = rt.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'actress')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%An%')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(an.name) as alternative_name, min(chn.name) as voiced_character_name, min(n.name) as voicing_actress, min(t.title) as american_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(an.name), MIN(chn.name), MIN(n.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = t.id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.role_id = rt.id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actress')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((n.id = ci.person_id) AND (an.person_id = n.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%An%')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mc.movie_id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an.person_id = n.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_id = cn.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.role_id = rt.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'actress')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((n.gender = 'f') AND n.name LIKE '%An%')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", }, { @@ -32929,220 +33186,220 @@ WHERE ci.note IN ('(voice)', ExpectedPlan: "Project\n" + " β”œβ”€ columns: [min(an.name):0!null->alternative_name:0, min(chn.name):1!null->voiced_char_name:0, min(n.name):2!null->voicing_actress:0, min(t.title):3!null->american_movie:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: MIN(an.name:19!null), MIN(chn.name:17!null), MIN(n.name:5!null), MIN(t.title:1!null)\n" + + " β”œβ”€ select: MIN(an.name:19!null), MIN(chn.name:5!null), MIN(n.name:12!null), MIN(t.title:1!null)\n" + " β”œβ”€ group: \n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ an.person_id:18!null\n" + + " β”‚ └─ n.id:11!null\n" + + " β”œβ”€ InnerJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:12!null\n" + - " β”‚ β”‚ └─ t.id:0!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ t.id:0!null\n" + - " β”‚ └─ mc.movie_id:7!null\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ci.role_id:15!null\n" + - " β”‚ └─ rt.id:2!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + - " β”‚ β”‚ └─ actress (longtext)\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ n.id:4!null\n" + - " β”‚ β”‚ └─ ci.person_id:11!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ an.person_id:18!null\n" + - " β”‚ └─ n.id:4!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ n.gender:2\n" + - " β”‚ β”‚ └─ f (longtext)\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ ci.movie_id:12!null\n" + - " β”‚ β”‚ └─ mc.movie_id:7!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ mc.company_id:8!null\n" + - " β”‚ └─ cn.id:9!null\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + - " β”‚ β”‚ └─ [us] (longtext)\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ chn.id:16!null\n" + - " β”‚ β”‚ └─ ci.person_role_id:13\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + - " β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice: Japanese version) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ keys: [ci.person_id:11!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: aka_name\n" + - " └─ columns: [person_id name]\n" + + " β”‚ β”‚ β”œβ”€ mc.company_id:15!null\n" + + " β”‚ β”‚ └─ cn.id:16!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.id:11!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ci.person_id:6!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.movie_id:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ t.id:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.role_id:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ rt.id:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ rt.role:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ actress (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.note:3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE((voice) (longtext), (voice: Japanese version) (longtext), (voice) (uncredited) (longtext), (voice: English version) (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [chn.id:4!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (16-22)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: cast_info\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ n.gender:2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ f (longtext)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ci.movie_id:7!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (30-34)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: movie_companies\n" + + " β”‚ β”‚ └─ columns: [movie_id company_id]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ cn.country_code:1\n" + + " β”‚ β”‚ └─ [us] (longtext)\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ keys: [ci.person_id:6!null]\n" + + " β”œβ”€ colSet: (1-8)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: aka_name\n" + + " └─ columns: [person_id name]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [min(an.name) as alternative_name, min(chn.name) as voiced_char_name, min(n.name) as voicing_actress, min(t.title) as american_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(an.name), MIN(chn.name), MIN(n.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = t.id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.role_id = rt.id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actress')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((n.id = ci.person_id) AND (an.person_id = n.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.gender = 'f')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mc.movie_id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an.person_id = n.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_id = cn.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.role_id = rt.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'actress')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n.gender = 'f')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [min(an.name) as alternative_name, min(chn.name) as voiced_char_name, min(n.name) as voicing_actress, min(t.title) as american_movie]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(MIN(an.name), MIN(chn.name), MIN(n.name), MIN(t.title))\n" + " β”œβ”€ Grouping()\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = t.id) AND (t.id = mc.movie_id))\n" + - " β”œβ”€ TableAlias(t)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: title\n" + - " β”‚ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (ci.role_id = rt.id)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (rt.role = 'actress')\n" + - " β”‚ └─ TableAlias(rt)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: role_type\n" + - " β”‚ └─ columns: [id role]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((n.id = ci.person_id) AND (an.person_id = n.id))\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (n.gender = 'f')\n" + - " β”‚ └─ TableAlias(n)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: name\n" + - " β”‚ └─ columns: [id name gender]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ ((ci.movie_id = mc.movie_id) AND (mc.company_id = cn.id))\n" + - " β”œβ”€ TableAlias(mc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: movie_companies\n" + - " β”‚ └─ columns: [movie_id company_id]\n" + - " └─ CrossJoin\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + - " β”‚ └─ TableAlias(cn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: company_name\n" + - " β”‚ └─ columns: [id country_code]\n" + - " └─ LookupJoin\n" + - " β”œβ”€ InnerJoin\n" + - " β”‚ β”œβ”€ (chn.id = ci.person_role_id)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + - " β”‚ β”‚ └─ TableAlias(ci)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: cast_info\n" + - " β”‚ β”‚ └─ columns: [person_id movie_id person_role_id note role_id]\n" + - " β”‚ └─ TableAlias(chn)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: char_name\n" + - " β”‚ └─ columns: [id name]\n" + - " └─ TableAlias(an)\n" + - " └─ IndexedTableAccess(aka_name)\n" + - " β”œβ”€ index: [aka_name.person_id]\n" + - " β”œβ”€ columns: [person_id name]\n" + - " └─ keys: ci.person_id\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (an.person_id = n.id)\n" + + " β”œβ”€ InnerJoin\n" + + " β”‚ β”œβ”€ (mc.company_id = cn.id)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n.id = ci.person_id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.movie_id = t.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(t)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: title\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id title]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ InnerJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.role_id = rt.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (rt.role = 'actress')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(rt)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: role_type\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id role]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(chn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: char_name\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id name]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ci.note HASH IN ('(voice)', '(voice: Japanese version)', '(voice) (uncredited)', '(voice: English version)'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(cast_info)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [cast_info.person_role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [person_id movie_id person_role_id note role_id]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: chn.id\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (n.gender = 'f')\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(n)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: name\n" + + " β”‚ β”‚ β”‚ └─ columns: [id name gender]\n" + + " β”‚ β”‚ └─ TableAlias(mc)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(movie_companies)\n" + + " β”‚ β”‚ β”œβ”€ index: [movie_companies.movie_id]\n" + + " β”‚ β”‚ β”œβ”€ columns: [movie_id company_id]\n" + + " β”‚ β”‚ └─ keys: ci.movie_id\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (cn.country_code = '[us]')\n" + + " β”‚ └─ TableAlias(cn)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: company_name\n" + + " β”‚ └─ columns: [id country_code]\n" + + " └─ TableAlias(an)\n" + + " └─ IndexedTableAccess(aka_name)\n" + + " β”œβ”€ index: [aka_name.person_id]\n" + + " β”œβ”€ columns: [person_id name]\n" + + " └─ keys: ci.person_id\n" + "", }, } diff --git a/enginetest/queries/integration_plans.go b/enginetest/queries/integration_plans.go index 1f6a8f6362..dbab89ae38 100644 --- a/enginetest/queries/integration_plans.go +++ b/enginetest/queries/integration_plans.go @@ -32,15 +32,8 @@ WHERE " β”œβ”€ columns: [YK2GW.id:0!null, YK2GW.FTQLQ:1!null, YK2GW.TUXML:2, YK2GW.PAEF5:3, YK2GW.RUCY4:4, YK2GW.TPNJ6:5!null, YK2GW.LBL53:6, YK2GW.NB3QS:7, YK2GW.EO7IV:8, YK2GW.MUHJF:9, YK2GW.FM34L:10, YK2GW.TY5RF:11, YK2GW.ZHTLH:12, YK2GW.NPB7W:13, YK2GW.SX3HH:14, YK2GW.ISBNF:15, YK2GW.YA7YB:16, YK2GW.C5YKB:17, YK2GW.QK7KT:18, YK2GW.FFGE6:19, YK2GW.FIIGJ:20, YK2GW.SH3NC:21, YK2GW.NTENA:22, YK2GW.M4AUB:23, YK2GW.X5AIR:24, YK2GW.SAB6M:25, YK2GW.G5QI5:26, YK2GW.ZVQVD:27, YK2GW.YKSSU:28, YK2GW.FHCYT:29]\n" + " └─ Filter\n" + " β”œβ”€ thnts.IXUXU:30 IS NULL\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ yk2gw.id:0!null\n" + - " β”‚ └─ thnts.IXUXU:30\n" + - " β”œβ”€ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-30)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: YK2GW\n" + " β”‚ └─ columns: [id ftqlq tuxml paef5 rucy4 tpnj6 lbl53 nb3qs eo7iv muhjf fm34l ty5rf zhtlh npb7w sx3hh isbnf ya7yb c5ykb qk7kt ffge6 fiigj sh3nc ntena m4aub x5air sab6m g5qi5 zvqvd ykssu fhcyt]\n" + @@ -48,7 +41,7 @@ WHERE " β”œβ”€ columns: [thnts.IXUXU:2]\n" + " └─ IndexedTableAccess(THNTS)\n" + " β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [yk2gw.id:0!null]\n" + " β”œβ”€ colSet: (31-34)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -61,16 +54,14 @@ WHERE " β”œβ”€ columns: [YK2GW.id, YK2GW.FTQLQ, YK2GW.TUXML, YK2GW.PAEF5, YK2GW.RUCY4, YK2GW.TPNJ6, YK2GW.LBL53, YK2GW.NB3QS, YK2GW.EO7IV, YK2GW.MUHJF, YK2GW.FM34L, YK2GW.TY5RF, YK2GW.ZHTLH, YK2GW.NPB7W, YK2GW.SX3HH, YK2GW.ISBNF, YK2GW.YA7YB, YK2GW.C5YKB, YK2GW.QK7KT, YK2GW.FFGE6, YK2GW.FIIGJ, YK2GW.SH3NC, YK2GW.NTENA, YK2GW.M4AUB, YK2GW.X5AIR, YK2GW.SAB6M, YK2GW.G5QI5, YK2GW.ZVQVD, YK2GW.YKSSU, YK2GW.FHCYT]\n" + " └─ Filter\n" + " β”œβ”€ thnts.IXUXU IS NULL\n" + - " └─ LeftOuterMergeJoin (estimated cost=5077.210 rows=3122)\n" + - " β”œβ”€ cmp: (yk2gw.id = thnts.IXUXU)\n" + - " β”œβ”€ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=2857.030 rows=3122)\n" + + " β”œβ”€ Table\n" + + " β”‚ └─ name: YK2GW\n" + " └─ Project\n" + " β”œβ”€ columns: [thnts.IXUXU]\n" + " └─ IndexedTableAccess(THNTS)\n" + " β”œβ”€ index: [THNTS.IXUXU]\n" + - " └─ filters: [{[NULL, ∞)}]\n" + + " └─ keys: yk2gw.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [yk2gw.id, yk2gw.FTQLQ]\n" + @@ -78,16 +69,14 @@ WHERE " β”œβ”€ columns: [YK2GW.id, YK2GW.FTQLQ, YK2GW.TUXML, YK2GW.PAEF5, YK2GW.RUCY4, YK2GW.TPNJ6, YK2GW.LBL53, YK2GW.NB3QS, YK2GW.EO7IV, YK2GW.MUHJF, YK2GW.FM34L, YK2GW.TY5RF, YK2GW.ZHTLH, YK2GW.NPB7W, YK2GW.SX3HH, YK2GW.ISBNF, YK2GW.YA7YB, YK2GW.C5YKB, YK2GW.QK7KT, YK2GW.FFGE6, YK2GW.FIIGJ, YK2GW.SH3NC, YK2GW.NTENA, YK2GW.M4AUB, YK2GW.X5AIR, YK2GW.SAB6M, YK2GW.G5QI5, YK2GW.ZVQVD, YK2GW.YKSSU, YK2GW.FHCYT]\n" + " └─ Filter\n" + " β”œβ”€ thnts.IXUXU IS NULL\n" + - " └─ LeftOuterMergeJoin (estimated cost=5077.210 rows=3122) (actual rows=0 loops=1)\n" + - " β”œβ”€ cmp: (yk2gw.id = thnts.IXUXU)\n" + - " β”œβ”€ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=2857.030 rows=3122) (actual rows=0 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ └─ name: YK2GW\n" + " └─ Project\n" + " β”œβ”€ columns: [thnts.IXUXU]\n" + " └─ IndexedTableAccess(THNTS)\n" + " β”œβ”€ index: [THNTS.IXUXU]\n" + - " └─ filters: [{[NULL, ∞)}]\n" + + " └─ keys: yk2gw.id\n" + "", }, { @@ -230,7 +219,7 @@ WHERE "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [pbmrx.id as id, pbmrx.TW55N as TEYBZ, pbmrx.ZH72S as FB6N7]\n" + - " └─ LookupJoin (estimated cost=405.900 rows=124)\n" + + " └─ LookupJoin (estimated cost=114.260 rows=124)\n" + " β”œβ”€ (NOT(pbmrx.ZH72S IS NULL))\n" + " β”œβ”€ SubqueryAlias\n" + " β”‚ β”œβ”€ name: cl3dt\n" + @@ -294,7 +283,7 @@ WHERE "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [pbmrx.id as id, pbmrx.TW55N as TEYBZ, pbmrx.ZH72S as FB6N7]\n" + - " └─ LookupJoin (estimated cost=405.900 rows=124) (actual rows=0 loops=1)\n" + + " └─ LookupJoin (estimated cost=114.260 rows=124) (actual rows=0 loops=1)\n" + " β”œβ”€ (NOT(pbmrx.ZH72S IS NULL))\n" + " β”œβ”€ SubqueryAlias\n" + " β”‚ β”œβ”€ name: cl3dt\n" + @@ -881,18 +870,18 @@ WHERE " β”œβ”€ columns: [WRZVO.id, WRZVO.TVNW2, WRZVO.ZHITY, WRZVO.SYPKF, WRZVO.IDUT2, WRZVO.O6QJ3, WRZVO.NO2JA, WRZVO.YKSSU, WRZVO.FHCYT, WRZVO.QZ6VT]\n" + " └─ Filter\n" + " β”œβ”€ hddvb.ETPQV IS NULL\n" + - " └─ LeftOuterLookupJoin (estimated cost=8316.400 rows=1389)\n" + - " β”œβ”€ LookupJoin (estimated cost=16833.300 rows=5101)\n" + + " └─ LeftOuterLookupJoin (estimated cost=5260.735 rows=1389)\n" + + " β”œβ”€ LookupJoin (estimated cost=11732.300 rows=5101)\n" + " β”‚ β”œβ”€ (tizhk.id = tizhk_1.id)\n" + " β”‚ β”œβ”€ Distinct\n" + " β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”œβ”€ columns: [tizhk_1.id]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ (aac.BTXC5 = tizhk_1.SYPKF)\n" + - " β”‚ β”‚ └─ LookupJoin (estimated cost=19806.600 rows=6002)\n" + - " β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=18627.300 rows=6002)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=15867.300 rows=4802)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=14907.300 rows=4802)\n" + + " β”‚ β”‚ └─ LookupJoin (estimated cost=13804.600 rows=6002)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=5492.230 rows=6002)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=5354.230 rows=4802)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=4394.230 rows=4802)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(j4jyp)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ name: E2I7U\n" + @@ -928,18 +917,18 @@ WHERE " β”œβ”€ columns: [WRZVO.id, WRZVO.TVNW2, WRZVO.ZHITY, WRZVO.SYPKF, WRZVO.IDUT2, WRZVO.O6QJ3, WRZVO.NO2JA, WRZVO.YKSSU, WRZVO.FHCYT, WRZVO.QZ6VT]\n" + " └─ Filter\n" + " β”œβ”€ hddvb.ETPQV IS NULL\n" + - " └─ LeftOuterLookupJoin (estimated cost=8316.400 rows=1389) (actual rows=0 loops=1)\n" + - " β”œβ”€ LookupJoin (estimated cost=16833.300 rows=5101) (actual rows=0 loops=1)\n" + + " └─ LeftOuterLookupJoin (estimated cost=5260.735 rows=1389) (actual rows=0 loops=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=11732.300 rows=5101) (actual rows=0 loops=1)\n" + " β”‚ β”œβ”€ (tizhk.id = tizhk_1.id)\n" + " β”‚ β”œβ”€ Distinct\n" + " β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”œβ”€ columns: [tizhk_1.id]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ (aac.BTXC5 = tizhk_1.SYPKF)\n" + - " β”‚ β”‚ └─ LookupJoin (estimated cost=19806.600 rows=6002) (actual rows=0 loops=1)\n" + - " β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=18627.300 rows=6002) (actual rows=0 loops=1)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=15867.300 rows=4802) (actual rows=0 loops=1)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=14907.300 rows=4802) (actual rows=0 loops=1)\n" + + " β”‚ β”‚ └─ LookupJoin (estimated cost=13804.600 rows=6002) (actual rows=0 loops=1)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=5492.230 rows=6002) (actual rows=0 loops=1)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=5354.230 rows=4802) (actual rows=0 loops=1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=4394.230 rows=4802) (actual rows=0 loops=1)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(j4jyp)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ name: E2I7U\n" + @@ -1089,18 +1078,18 @@ WHERE " β”œβ”€ columns: [WRZVO.id, WRZVO.TVNW2, WRZVO.ZHITY, WRZVO.SYPKF, WRZVO.IDUT2, WRZVO.O6QJ3, WRZVO.NO2JA, WRZVO.YKSSU, WRZVO.FHCYT, WRZVO.QZ6VT]\n" + " └─ Filter\n" + " β”œβ”€ hddvb.ETPQV IS NULL\n" + - " └─ LeftOuterLookupJoin (estimated cost=8316.400 rows=1389)\n" + - " β”œβ”€ LookupJoin (estimated cost=16833.300 rows=5101)\n" + + " └─ LeftOuterLookupJoin (estimated cost=5260.735 rows=1389)\n" + + " β”œβ”€ LookupJoin (estimated cost=11732.300 rows=5101)\n" + " β”‚ β”œβ”€ (tizhk.id = tizhk_1.id)\n" + " β”‚ β”œβ”€ Distinct\n" + " β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”œβ”€ columns: [tizhk_1.id]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ (aac.BTXC5 = tizhk_1.SYPKF)\n" + - " β”‚ β”‚ └─ LookupJoin (estimated cost=19806.600 rows=6002)\n" + - " β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=18627.300 rows=6002)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=15867.300 rows=4802)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=14907.300 rows=4802)\n" + + " β”‚ β”‚ └─ LookupJoin (estimated cost=13804.600 rows=6002)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=5492.230 rows=6002)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=5354.230 rows=4802)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=4394.230 rows=4802)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(j4jyp)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ name: E2I7U\n" + @@ -1136,18 +1125,18 @@ WHERE " β”œβ”€ columns: [WRZVO.id, WRZVO.TVNW2, WRZVO.ZHITY, WRZVO.SYPKF, WRZVO.IDUT2, WRZVO.O6QJ3, WRZVO.NO2JA, WRZVO.YKSSU, WRZVO.FHCYT, WRZVO.QZ6VT]\n" + " └─ Filter\n" + " β”œβ”€ hddvb.ETPQV IS NULL\n" + - " └─ LeftOuterLookupJoin (estimated cost=8316.400 rows=1389) (actual rows=0 loops=1)\n" + - " β”œβ”€ LookupJoin (estimated cost=16833.300 rows=5101) (actual rows=0 loops=1)\n" + + " └─ LeftOuterLookupJoin (estimated cost=5260.735 rows=1389) (actual rows=0 loops=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=11732.300 rows=5101) (actual rows=0 loops=1)\n" + " β”‚ β”œβ”€ (tizhk.id = tizhk_1.id)\n" + " β”‚ β”œβ”€ Distinct\n" + " β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”œβ”€ columns: [tizhk_1.id]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ (aac.BTXC5 = tizhk_1.SYPKF)\n" + - " β”‚ β”‚ └─ LookupJoin (estimated cost=19806.600 rows=6002) (actual rows=0 loops=1)\n" + - " β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=18627.300 rows=6002) (actual rows=0 loops=1)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=15867.300 rows=4802) (actual rows=0 loops=1)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=14907.300 rows=4802) (actual rows=0 loops=1)\n" + + " β”‚ β”‚ └─ LookupJoin (estimated cost=13804.600 rows=6002) (actual rows=0 loops=1)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=5492.230 rows=6002) (actual rows=0 loops=1)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=5354.230 rows=4802) (actual rows=0 loops=1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=4394.230 rows=4802) (actual rows=0 loops=1)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(j4jyp)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ name: E2I7U\n" + @@ -1318,7 +1307,7 @@ WHERE "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [pbmrx.id as id, pbmrx.TW55N as TEYBZ, pbmrx.ZH72S as FB6N7]\n" + - " └─ LookupJoin (estimated cost=405.900 rows=124)\n" + + " └─ LookupJoin (estimated cost=114.260 rows=124)\n" + " β”œβ”€ (NOT(pbmrx.ZH72S IS NULL))\n" + " β”œβ”€ SubqueryAlias\n" + " β”‚ β”œβ”€ name: cl3dt\n" + @@ -1382,7 +1371,7 @@ WHERE "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [pbmrx.id as id, pbmrx.TW55N as TEYBZ, pbmrx.ZH72S as FB6N7]\n" + - " └─ LookupJoin (estimated cost=405.900 rows=124) (actual rows=0 loops=1)\n" + + " └─ LookupJoin (estimated cost=114.260 rows=124) (actual rows=0 loops=1)\n" + " β”œβ”€ (NOT(pbmrx.ZH72S IS NULL))\n" + " β”œβ”€ SubqueryAlias\n" + " β”‚ β”œβ”€ name: cl3dt\n" + @@ -1508,12 +1497,12 @@ WHERE ) `, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [ct.id:0!null->id:0, ci.FTQLQ:33!null->VCGT3:0, nd.TW55N:15!null->UWBAI:0, aac.BTXC5:30->TPXBU:0, ct.V5DPX:8!null->V5DPX:0, ct.S3Q3Y:9!null->S3Q3Y:0, ct.ZRV3B:10!null->ZRV3B:0]\n" + + " β”œβ”€ columns: [ct.id:17!null->id:0, ci.FTQLQ:33!null->VCGT3:0, nd.TW55N:3!null->UWBAI:0, aac.BTXC5:30->TPXBU:0, ct.V5DPX:25!null->V5DPX:0, ct.S3Q3Y:26!null->S3Q3Y:0, ct.ZRV3B:27!null->ZRV3B:0]\n" + " └─ Filter\n" + " β”œβ”€ Or\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ ct.OCA7E:6 IS NULL\n" + + " β”‚ β”‚ β”‚ └─ ct.OCA7E:23 IS NULL\n" + " β”‚ β”‚ └─ Or\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ Subquery\n" + @@ -1524,11 +1513,11 @@ WHERE " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ i7hcr.id:37!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ct.OCA7E:6\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ct.OCA7E:23\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(i7hcr)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(EPZU6)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [EPZU6.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ct.OCA7E:6]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ct.OCA7E:23]\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (38-45)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + @@ -1553,11 +1542,11 @@ WHERE " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ i7hcr.id:54!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ct.OCA7E:6\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ct.OCA7E:23\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(i7hcr)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(EPZU6)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [EPZU6.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ct.OCA7E:6]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ct.OCA7E:23]\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (63-70)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 7\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + @@ -1569,12 +1558,12 @@ WHERE " β”‚ β”‚ β”‚ β”œβ”€ columns: [id dkcaj kng7t tw55n qrqxw ecxaj fgg57 zh72s fsk67 xqdyt tce7a iwv2h hpcms n5cc2 fhcyt etaq7 a75x7]\n" + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (46-62)\n" + " β”‚ β”‚ β”‚ └─ tableId: 6\n" + - " β”‚ β”‚ └─ ct.LUEVY:2!null\n" + + " β”‚ β”‚ └─ ct.LUEVY:19!null\n" + " β”‚ └─ AND\n" + " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ ct.NRURT:5 IS NULL\n" + + " β”‚ β”‚ └─ ct.NRURT:22 IS NULL\n" + " β”‚ └─ InSubquery\n" + - " β”‚ β”œβ”€ left: ct.NRURT:5\n" + + " β”‚ β”œβ”€ left: ct.NRURT:22\n" + " β”‚ └─ right: Subquery\n" + " β”‚ β”œβ”€ cacheable: true\n" + " β”‚ β”œβ”€ alias-string: select uct.id as FDL23 from EPZU6 as I7HCR join OUBDL as uct on uct.FTQLQ = I7HCR.TOFPN and uct.ZH72S = I7HCR.SJYN2 and uct.LJLUM = I7HCR.BTXC5 where I7HCR.SWCQV = 0 and I7HCR.id not in (select OCA7E from FLQLP where OCA7E is not null)\n" + @@ -1629,41 +1618,34 @@ WHERE " └─ HashJoin\n" + " β”œβ”€ Eq\n" + " β”‚ β”œβ”€ ci.id:32!null\n" + - " β”‚ └─ ct.FZ2R5:1!null\n" + + " β”‚ └─ ct.FZ2R5:18!null\n" + " β”œβ”€ LookupJoin\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ct.LUEVY:2!null\n" + - " β”‚ β”‚ β”‚ └─ nd.id:12!null\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(FLQLP)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.LUEVY]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-12)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(nd)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: FLQLP\n" + - " β”‚ β”‚ β”‚ └─ columns: [id fz2r5 luevy m22qn ove3e nrurt oca7e xmm6q v5dpx s3q3y zrv3b fhcyt]\n" + - " β”‚ β”‚ └─ TableAlias(nd)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (18-34)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ β”‚ └─ columns: [id dkcaj kng7t tw55n qrqxw ecxaj fgg57 zh72s fsk67 xqdyt tce7a iwv2h hpcms n5cc2 fhcyt etaq7 a75x7]\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(FLQLP)\n" + + " β”‚ β”‚ β”œβ”€ index: [FLQLP.LUEVY]\n" + + " β”‚ β”‚ β”œβ”€ keys: [nd.id:0!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (1-12)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 1\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: E2I7U\n" + - " β”‚ β”‚ └─ columns: [id dkcaj kng7t tw55n qrqxw ecxaj fgg57 zh72s fsk67 xqdyt tce7a iwv2h hpcms n5cc2 fhcyt etaq7 a75x7]\n" + + " β”‚ β”‚ β”œβ”€ name: FLQLP\n" + + " β”‚ β”‚ └─ columns: [id fz2r5 luevy m22qn ove3e nrurt oca7e xmm6q v5dpx s3q3y zrv3b fhcyt]\n" + " β”‚ └─ TableAlias(aac)\n" + " β”‚ └─ IndexedTableAccess(TPXBU)\n" + " β”‚ β”œβ”€ index: [TPXBU.id]\n" + - " β”‚ β”œβ”€ keys: [ct.M22QN:3!null]\n" + + " β”‚ β”œβ”€ keys: [ct.M22QN:20!null]\n" + " β”‚ β”œβ”€ colSet: (35-37)\n" + " β”‚ β”œβ”€ tableId: 4\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: TPXBU\n" + " β”‚ └─ columns: [id btxc5 fhcyt]\n" + " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(ct.FZ2R5:1!null)\n" + + " β”œβ”€ left-key: TUPLE(ct.FZ2R5:18!null)\n" + " β”œβ”€ right-key: TUPLE(ci.id:0!null)\n" + " └─ TableAlias(ci)\n" + " └─ ProcessTable\n" + @@ -1738,17 +1720,15 @@ WHERE " β”‚ ))\n" + " └─ HashJoin (estimated cost=16273.620 rows=14781)\n" + " β”œβ”€ (ci.id = ct.FZ2R5)\n" + - " β”œβ”€ LookupJoin (estimated cost=48777.300 rows=14781)\n" + - " β”‚ β”œβ”€ MergeJoin (estimated cost=18957.040 rows=14781)\n" + - " β”‚ β”‚ β”œβ”€ cmp: (ct.LUEVY = nd.id)\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(FLQLP)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.LUEVY]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ TableAlias(nd)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”œβ”€ LookupJoin (estimated cost=33996.300 rows=14781)\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=5541.815 rows=14781)\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(nd)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ └─ name: E2I7U\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(FLQLP)\n" + + " β”‚ β”‚ β”œβ”€ index: [FLQLP.LUEVY]\n" + + " β”‚ β”‚ └─ keys: nd.id\n" + " β”‚ └─ TableAlias(aac)\n" + " β”‚ └─ IndexedTableAccess(TPXBU)\n" + " β”‚ β”œβ”€ index: [TPXBU.id]\n" + @@ -1827,17 +1807,15 @@ WHERE " β”‚ ))\n" + " └─ HashJoin (estimated cost=16273.620 rows=14781) (actual rows=0 loops=1)\n" + " β”œβ”€ (ci.id = ct.FZ2R5)\n" + - " β”œβ”€ LookupJoin (estimated cost=48777.300 rows=14781) (actual rows=0 loops=1)\n" + - " β”‚ β”œβ”€ MergeJoin (estimated cost=18957.040 rows=14781) (actual rows=0 loops=1)\n" + - " β”‚ β”‚ β”œβ”€ cmp: (ct.LUEVY = nd.id)\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(FLQLP)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.LUEVY]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ TableAlias(nd)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”œβ”€ LookupJoin (estimated cost=33996.300 rows=14781) (actual rows=0 loops=1)\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=5541.815 rows=14781) (actual rows=0 loops=1)\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(nd)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ └─ name: E2I7U\n" + + " β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(FLQLP)\n" + + " β”‚ β”‚ β”œβ”€ index: [FLQLP.LUEVY]\n" + + " β”‚ β”‚ └─ keys: nd.id\n" + " β”‚ └─ TableAlias(aac)\n" + " β”‚ └─ IndexedTableAccess(TPXBU)\n" + " β”‚ β”œβ”€ index: [TPXBU.id]\n" + @@ -1968,7 +1946,7 @@ WHERE "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [uct.id, uct.FTQLQ, uct.ZH72S, uct.SFJ6L, uct.V5DPX, uct.LJLUM, uct.IDPK7, uct.NO52D, uct.ZRV3B, uct.VYO5E, uct.YKSSU, uct.FHCYT, uct.QZ6VT]\n" + - " └─ LookupJoin (estimated cost=330.000 rows=100)\n" + + " └─ LookupJoin (estimated cost=230.000 rows=100)\n" + " β”œβ”€ SubqueryAlias\n" + " β”‚ β”œβ”€ name: fzwbd\n" + " β”‚ β”œβ”€ outerVisibility: false\n" + @@ -2025,7 +2003,7 @@ WHERE "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [uct.id, uct.FTQLQ, uct.ZH72S, uct.SFJ6L, uct.V5DPX, uct.LJLUM, uct.IDPK7, uct.NO52D, uct.ZRV3B, uct.VYO5E, uct.YKSSU, uct.FHCYT, uct.QZ6VT]\n" + - " └─ LookupJoin (estimated cost=330.000 rows=100) (actual rows=0 loops=1)\n" + + " └─ LookupJoin (estimated cost=230.000 rows=100) (actual rows=0 loops=1)\n" + " β”œβ”€ SubqueryAlias\n" + " β”‚ β”œβ”€ name: fzwbd\n" + " β”‚ β”œβ”€ outerVisibility: false\n" + @@ -2113,49 +2091,42 @@ WHERE TVTJS.SWCQV = 1 `, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [ct.id:0!null->id:0, ci.FTQLQ:13!null->VCGT3:0, nd.TW55N:9!null->UWBAI:0, aac.BTXC5:11->TPXBU:0, ct.V5DPX:5!null->V5DPX:0, ct.S3Q3Y:6!null->S3Q3Y:0, ct.ZRV3B:7!null->ZRV3B:0]\n" + + " β”œβ”€ columns: [ct.id:2!null->id:0, ci.FTQLQ:13!null->VCGT3:0, nd.TW55N:1!null->UWBAI:0, aac.BTXC5:11->TPXBU:0, ct.V5DPX:7!null->V5DPX:0, ct.S3Q3Y:8!null->S3Q3Y:0, ct.ZRV3B:9!null->ZRV3B:0]\n" + " └─ HashJoin\n" + " β”œβ”€ Eq\n" + " β”‚ β”œβ”€ tvtjs.id:14!null\n" + - " β”‚ └─ ct.XMM6Q:4\n" + + " β”‚ └─ ct.XMM6Q:6\n" + " β”œβ”€ HashJoin\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ ci.id:12!null\n" + - " β”‚ β”‚ └─ ct.FZ2R5:1!null\n" + + " β”‚ β”‚ └─ ct.FZ2R5:3!null\n" + " β”‚ β”œβ”€ LookupJoin\n" + - " β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.LUEVY:2!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ nd.id:8!null\n" + - " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(FLQLP)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.LUEVY]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-12)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(nd)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: FLQLP\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id fz2r5 luevy m22qn xmm6q v5dpx s3q3y zrv3b]\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(nd)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (31-47)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(FLQLP)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.LUEVY]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [nd.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-12)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: E2I7U\n" + - " β”‚ β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: FLQLP\n" + + " β”‚ β”‚ β”‚ └─ columns: [id fz2r5 luevy m22qn xmm6q v5dpx s3q3y zrv3b]\n" + " β”‚ β”‚ └─ TableAlias(aac)\n" + " β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + " β”‚ β”‚ β”œβ”€ index: [TPXBU.id]\n" + - " β”‚ β”‚ β”œβ”€ keys: [ct.M22QN:3!null]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ct.M22QN:5!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (48-50)\n" + " β”‚ β”‚ β”œβ”€ tableId: 5\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: TPXBU\n" + " β”‚ β”‚ └─ columns: [id btxc5]\n" + " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: TUPLE(ct.FZ2R5:1!null)\n" + + " β”‚ β”œβ”€ left-key: TUPLE(ct.FZ2R5:3!null)\n" + " β”‚ β”œβ”€ right-key: TUPLE(ci.id:0!null)\n" + " β”‚ └─ TableAlias(ci)\n" + " β”‚ └─ ProcessTable\n" + @@ -2163,7 +2134,7 @@ WHERE " β”‚ β”œβ”€ name: JDLNA\n" + " β”‚ └─ columns: [id ftqlq]\n" + " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(ct.XMM6Q:4)\n" + + " β”œβ”€ left-key: TUPLE(ct.XMM6Q:6)\n" + " β”œβ”€ right-key: TUPLE(tvtjs.id:0!null)\n" + " └─ Filter\n" + " β”œβ”€ Eq\n" + @@ -2181,19 +2152,17 @@ WHERE " β”œβ”€ (tvtjs.id = ct.XMM6Q)\n" + " β”œβ”€ HashJoin (estimated cost=16273.620 rows=14781)\n" + " β”‚ β”œβ”€ (ci.id = ct.FZ2R5)\n" + - " β”‚ β”œβ”€ LookupJoin (estimated cost=48777.300 rows=14781)\n" + - " β”‚ β”‚ β”œβ”€ MergeJoin (estimated cost=18957.040 rows=14781)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cmp: (ct.LUEVY = nd.id)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(FLQLP)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.LUEVY]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id fz2r5 luevy m22qn xmm6q v5dpx s3q3y zrv3b]\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(nd)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=33996.300 rows=14781)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=5541.815 rows=14781)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(nd)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(FLQLP)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.LUEVY]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id fz2r5 luevy m22qn xmm6q v5dpx s3q3y zrv3b]\n" + + " β”‚ β”‚ β”‚ └─ keys: nd.id\n" + " β”‚ β”‚ └─ TableAlias(aac)\n" + " β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + " β”‚ β”‚ β”œβ”€ index: [TPXBU.id]\n" + @@ -2222,19 +2191,17 @@ WHERE " β”œβ”€ (tvtjs.id = ct.XMM6Q)\n" + " β”œβ”€ HashJoin (estimated cost=16273.620 rows=14781) (actual rows=0 loops=1)\n" + " β”‚ β”œβ”€ (ci.id = ct.FZ2R5)\n" + - " β”‚ β”œβ”€ LookupJoin (estimated cost=48777.300 rows=14781) (actual rows=0 loops=1)\n" + - " β”‚ β”‚ β”œβ”€ MergeJoin (estimated cost=18957.040 rows=14781) (actual rows=0 loops=1)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cmp: (ct.LUEVY = nd.id)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ct)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(FLQLP)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.LUEVY]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id fz2r5 luevy m22qn xmm6q v5dpx s3q3y zrv3b]\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(nd)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=33996.300 rows=14781) (actual rows=0 loops=1)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=5541.815 rows=14781) (actual rows=0 loops=1)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(nd)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(FLQLP)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.LUEVY]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id fz2r5 luevy m22qn xmm6q v5dpx s3q3y zrv3b]\n" + + " β”‚ β”‚ β”‚ └─ keys: nd.id\n" + " β”‚ β”‚ └─ TableAlias(aac)\n" + " β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + " β”‚ β”‚ β”œβ”€ index: [TPXBU.id]\n" + @@ -2388,98 +2355,84 @@ WHERE PV6R5.NUMK2 <> 1 `, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [rn.id:0!null->id:0, concat(nsplt.TW55N:18!null,FDNCN (longtext),lqncx.TW55N:16!null)->X37NA:0, concat(xlza5.TW55N:10!null,FDNCN (longtext),afjmd.TW55N:8!null)->THWCS:0, rn.HVHRZ:3!null->HVHRZ:0]\n" + + " β”œβ”€ columns: [rn.id:7!null->id:0, concat(nsplt.TW55N:18!null,FDNCN (longtext),lqncx.TW55N:12!null)->X37NA:0, concat(xlza5.TW55N:6!null,FDNCN (longtext),afjmd.TW55N:1!null)->THWCS:0, rn.HVHRZ:10!null->HVHRZ:0]\n" + " └─ Filter\n" + " β”œβ”€ Or\n" + " β”‚ β”œβ”€ NOT\n" + " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ pv6r5.FFTBJ:13!null\n" + - " β”‚ β”‚ └─ zyutc.BRQP2:5!null\n" + + " β”‚ β”‚ β”œβ”€ pv6r5.FFTBJ:15!null\n" + + " β”‚ β”‚ └─ zyutc.BRQP2:3!null\n" + " β”‚ └─ NOT\n" + " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ pv6r5.NUMK2:14!null\n" + + " β”‚ β”œβ”€ pv6r5.NUMK2:16!null\n" + " β”‚ └─ 1 (int)\n" + " └─ HashJoin\n" + " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ rn.WNUNU:1!null\n" + - " β”‚ └─ pv6r5.id:11!null\n" + - " β”œβ”€ HashJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ rn.HHVLX:2!null\n" + - " β”‚ β”‚ └─ zyutc.id:4!null\n" + - " β”‚ β”œβ”€ TableAlias(rn)\n" + - " β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: QYWQD\n" + - " β”‚ β”‚ └─ columns: [id wnunu hhvlx hvhrz]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: TUPLE(rn.HHVLX:2!null)\n" + - " β”‚ β”œβ”€ right-key: TUPLE(zyutc.id:0!null)\n" + - " β”‚ └─ HashJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ xlza5.id:9!null\n" + - " β”‚ β”‚ └─ zyutc.BRQP2:5!null\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ zyutc.FFTBJ:6!null\n" + - " β”‚ β”‚ β”‚ └─ afjmd.id:7!null\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(zyutc)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (17-26)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + - " β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj]\n" + - " β”‚ β”‚ └─ TableAlias(afjmd)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (78-94)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 7\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: E2I7U\n" + - " β”‚ β”‚ └─ columns: [id tw55n]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: TUPLE(zyutc.BRQP2:5!null)\n" + - " β”‚ β”œβ”€ right-key: TUPLE(xlza5.id:0!null)\n" + - " β”‚ └─ TableAlias(xlza5)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: E2I7U\n" + - " β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”œβ”€ rn.WNUNU:8!null\n" + + " β”‚ └─ pv6r5.id:13!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ HashJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ xlza5.id:5!null\n" + + " β”‚ β”‚ β”‚ └─ zyutc.BRQP2:3!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(afjmd)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(zyutc)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [afjmd.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (17-26)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + + " β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj]\n" + + " β”‚ β”‚ └─ HashLookup\n" + + " β”‚ β”‚ β”œβ”€ left-key: TUPLE(zyutc.BRQP2:3!null)\n" + + " β”‚ β”‚ β”œβ”€ right-key: TUPLE(xlza5.id:0!null)\n" + + " β”‚ β”‚ └─ TableAlias(xlza5)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ β”œβ”€ columns: [id tw55n]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (61-77)\n" + + " β”‚ β”‚ └─ tableId: 6\n" + + " β”‚ └─ TableAlias(rn)\n" + + " β”‚ └─ IndexedTableAccess(QYWQD)\n" + + " β”‚ β”œβ”€ index: [QYWQD.HHVLX]\n" + + " β”‚ β”œβ”€ keys: [zyutc.id:2!null]\n" + + " β”‚ β”œβ”€ colSet: (1-6)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: QYWQD\n" + + " β”‚ └─ columns: [id wnunu hhvlx hvhrz]\n" + " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(rn.WNUNU:1!null)\n" + - " β”œβ”€ right-key: TUPLE(pv6r5.id:0!null)\n" + + " β”œβ”€ left-key: TUPLE(rn.WNUNU:8!null)\n" + + " β”œβ”€ right-key: TUPLE(pv6r5.id:2!null)\n" + " └─ HashJoin\n" + " β”œβ”€ Eq\n" + " β”‚ β”œβ”€ nsplt.id:17!null\n" + - " β”‚ └─ pv6r5.BRQP2:12!null\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ pv6r5.FFTBJ:13!null\n" + - " β”‚ β”‚ └─ lqncx.id:15!null\n" + - " β”‚ β”œβ”€ TableAlias(pv6r5)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (7-16)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: NOXN3\n" + - " β”‚ β”‚ └─ columns: [id brqp2 fftbj numk2]\n" + - " β”‚ └─ TableAlias(lqncx)\n" + - " β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (44-60)\n" + - " β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ └─ pv6r5.BRQP2:14!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(lqncx)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ β”œβ”€ columns: [id tw55n]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (44-60)\n" + + " β”‚ β”‚ └─ tableId: 5\n" + + " β”‚ └─ TableAlias(pv6r5)\n" + + " β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + + " β”‚ β”œβ”€ keys: [lqncx.id:11!null]\n" + + " β”‚ β”œβ”€ colSet: (7-16)\n" + + " β”‚ β”œβ”€ tableId: 2\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: E2I7U\n" + - " β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”œβ”€ name: NOXN3\n" + + " β”‚ └─ columns: [id brqp2 fftbj numk2]\n" + " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(pv6r5.BRQP2:12!null)\n" + + " β”œβ”€ left-key: TUPLE(pv6r5.BRQP2:14!null)\n" + " β”œβ”€ right-key: TUPLE(nsplt.id:0!null)\n" + " └─ TableAlias(nsplt)\n" + " └─ Table\n" + @@ -2494,53 +2447,46 @@ WHERE " β”œβ”€ ((NOT((pv6r5.FFTBJ = zyutc.BRQP2))) OR (NOT((pv6r5.NUMK2 = 1))))\n" + " └─ HashJoin (estimated cost=107544.840 rows=70692)\n" + " β”œβ”€ (rn.WNUNU = pv6r5.id)\n" + - " β”œβ”€ HashJoin (estimated cost=107544.840 rows=70692)\n" + - " β”‚ β”œβ”€ (rn.HHVLX = zyutc.id)\n" + - " β”‚ β”œβ”€ TableAlias(rn)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: QYWQD\n" + - " β”‚ β”‚ └─ columns: [id wnunu hhvlx hvhrz]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (rn.HHVLX)\n" + - " β”‚ β”œβ”€ right-key: (zyutc.id)\n" + - " β”‚ └─ HashJoin\n" + - " β”‚ β”œβ”€ (xlza5.id = zyutc.BRQP2)\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (zyutc.FFTBJ = afjmd.id)\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(zyutc)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj]\n" + - " β”‚ β”‚ └─ TableAlias(afjmd)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id tw55n]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (zyutc.BRQP2)\n" + - " β”‚ β”œβ”€ right-key: (xlza5.id)\n" + - " β”‚ └─ TableAlias(xlza5)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: E2I7U\n" + - " β”‚ └─ columns: [id tw55n]\n" + + " β”œβ”€ LookupJoin (estimated cost=19942.580 rows=70692)\n" + + " β”‚ β”œβ”€ HashJoin (estimated cost=23575.260 rows=11813)\n" + + " β”‚ β”‚ β”œβ”€ (xlza5.id = zyutc.BRQP2)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=5200.495 rows=11813)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(afjmd)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(zyutc)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id brqp2 fftbj]\n" + + " β”‚ β”‚ β”‚ └─ keys: afjmd.id\n" + + " β”‚ β”‚ └─ HashLookup\n" + + " β”‚ β”‚ β”œβ”€ left-key: (zyutc.BRQP2)\n" + + " β”‚ β”‚ β”œβ”€ right-key: (xlza5.id)\n" + + " β”‚ β”‚ └─ TableAlias(xlza5)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ └─ TableAlias(rn)\n" + + " β”‚ └─ IndexedTableAccess(QYWQD)\n" + + " β”‚ β”œβ”€ index: [QYWQD.HHVLX]\n" + + " β”‚ β”œβ”€ columns: [id wnunu hhvlx hvhrz]\n" + + " β”‚ └─ keys: zyutc.id\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (rn.WNUNU)\n" + " β”œβ”€ right-key: (pv6r5.id)\n" + " └─ HashJoin\n" + " β”œβ”€ (nsplt.id = pv6r5.BRQP2)\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (pv6r5.FFTBJ = lqncx.id)\n" + - " β”‚ β”œβ”€ TableAlias(pv6r5)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id brqp2 fftbj numk2]\n" + - " β”‚ └─ TableAlias(lqncx)\n" + - " β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id tw55n]\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(lqncx)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ └─ TableAlias(pv6r5)\n" + + " β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + + " β”‚ β”œβ”€ columns: [id brqp2 fftbj numk2]\n" + + " β”‚ └─ keys: lqncx.id\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (pv6r5.BRQP2)\n" + " β”œβ”€ right-key: (nsplt.id)\n" + @@ -2555,53 +2501,46 @@ WHERE " β”œβ”€ ((NOT((pv6r5.FFTBJ = zyutc.BRQP2))) OR (NOT((pv6r5.NUMK2 = 1))))\n" + " └─ HashJoin (estimated cost=107544.840 rows=70692) (actual rows=0 loops=1)\n" + " β”œβ”€ (rn.WNUNU = pv6r5.id)\n" + - " β”œβ”€ HashJoin (estimated cost=107544.840 rows=70692) (actual rows=0 loops=1)\n" + - " β”‚ β”œβ”€ (rn.HHVLX = zyutc.id)\n" + - " β”‚ β”œβ”€ TableAlias(rn)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: QYWQD\n" + - " β”‚ β”‚ └─ columns: [id wnunu hhvlx hvhrz]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (rn.HHVLX)\n" + - " β”‚ β”œβ”€ right-key: (zyutc.id)\n" + - " β”‚ └─ HashJoin\n" + - " β”‚ β”œβ”€ (xlza5.id = zyutc.BRQP2)\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (zyutc.FFTBJ = afjmd.id)\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(zyutc)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj]\n" + - " β”‚ β”‚ └─ TableAlias(afjmd)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id tw55n]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (zyutc.BRQP2)\n" + - " β”‚ β”œβ”€ right-key: (xlza5.id)\n" + - " β”‚ └─ TableAlias(xlza5)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: E2I7U\n" + - " β”‚ └─ columns: [id tw55n]\n" + + " β”œβ”€ LookupJoin (estimated cost=19942.580 rows=70692) (actual rows=0 loops=1)\n" + + " β”‚ β”œβ”€ HashJoin (estimated cost=23575.260 rows=11813) (actual rows=0 loops=1)\n" + + " β”‚ β”‚ β”œβ”€ (xlza5.id = zyutc.BRQP2)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=5200.495 rows=11813) (actual rows=0 loops=1)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(afjmd)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(zyutc)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id brqp2 fftbj]\n" + + " β”‚ β”‚ β”‚ └─ keys: afjmd.id\n" + + " β”‚ β”‚ └─ HashLookup\n" + + " β”‚ β”‚ β”œβ”€ left-key: (zyutc.BRQP2)\n" + + " β”‚ β”‚ β”œβ”€ right-key: (xlza5.id)\n" + + " β”‚ β”‚ └─ TableAlias(xlza5)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ └─ TableAlias(rn)\n" + + " β”‚ └─ IndexedTableAccess(QYWQD)\n" + + " β”‚ β”œβ”€ index: [QYWQD.HHVLX]\n" + + " β”‚ β”œβ”€ columns: [id wnunu hhvlx hvhrz]\n" + + " β”‚ └─ keys: zyutc.id\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (rn.WNUNU)\n" + " β”œβ”€ right-key: (pv6r5.id)\n" + " └─ HashJoin\n" + " β”œβ”€ (nsplt.id = pv6r5.BRQP2)\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (pv6r5.FFTBJ = lqncx.id)\n" + - " β”‚ β”œβ”€ TableAlias(pv6r5)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id brqp2 fftbj numk2]\n" + - " β”‚ └─ TableAlias(lqncx)\n" + - " β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id tw55n]\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(lqncx)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ └─ TableAlias(pv6r5)\n" + + " β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + + " β”‚ β”œβ”€ columns: [id brqp2 fftbj numk2]\n" + + " β”‚ └─ keys: lqncx.id\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (pv6r5.BRQP2)\n" + " β”œβ”€ right-key: (nsplt.id)\n" + @@ -2653,7 +2592,7 @@ WHERE rn.WNUNU IS NULL AND rn.HHVLX IS NULL `, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [sn.id:5!null->DRIWM:0, concat(oe56m.TW55N:10!null,FDNCN (longtext),cgfrz.TW55N:12!null)->GRVSE:0, skpm6.id:0!null->JIEVY:0, concat(v5say.TW55N:14!null,FDNCN (longtext),fqthf.TW55N:4!null)->ENCM3:0, 1 (decimal(2,1))->OHD3R:99]\n" + + " β”œβ”€ columns: [sn.id:4!null->DRIWM:0, concat(oe56m.TW55N:9!null,FDNCN (longtext),cgfrz.TW55N:1!null)->GRVSE:0, skpm6.id:10!null->JIEVY:0, concat(v5say.TW55N:3!null,FDNCN (longtext),fqthf.TW55N:14!null)->ENCM3:0, 1 (decimal(2,1))->OHD3R:99]\n" + " └─ Filter\n" + " β”œβ”€ AND\n" + " β”‚ β”œβ”€ rn.WNUNU:15!null IS NULL\n" + @@ -2661,107 +2600,92 @@ WHERE " └─ LeftOuterLookupJoin\n" + " β”œβ”€ Eq\n" + " β”‚ β”œβ”€ rn.HHVLX:16!null\n" + - " β”‚ └─ skpm6.id:0!null\n" + + " β”‚ └─ skpm6.id:10!null\n" + " β”œβ”€ HashJoin\n" + - " β”‚ β”œβ”€ AND\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ fqthf.id:13!null\n" + + " β”‚ β”‚ └─ skpm6.FFTBJ:12!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ skpm6.BRQP2:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ sn.FFTBJ:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ v5say.id:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ skpm6.BRQP2:11!null\n" + " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ v5say.id:13!null\n" + - " β”‚ β”‚ β”‚ └─ skpm6.BRQP2:1!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ skpm6.BRQP2:1!null\n" + - " β”‚ β”‚ └─ cgfrz.id:11!null\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ skpm6.FFTBJ:2!null\n" + - " β”‚ β”‚ β”‚ └─ fqthf.id:3!null\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(skpm6)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (11-20)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + - " β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj]\n" + - " β”‚ β”‚ └─ TableAlias(fqthf)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (78-94)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 7\n" + + " β”‚ β”‚ β”‚ β”œβ”€ skpm6.BRQP2:11!null\n" + + " β”‚ β”‚ β”‚ └─ cgfrz.id:0!null\n" + + " β”‚ β”‚ β”œβ”€ HashJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ oe56m.id:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ sn.BRQP2:5!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ sn.FFTBJ:6!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ v5say.id:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cgfrz.id:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ v5say.id:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cgfrz)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (44-60)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(v5say)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (61-77)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ sn.NUMK2:3!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1 (int)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cgfrz.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-10)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj numk2]\n" + + " β”‚ β”‚ β”‚ └─ HashLookup\n" + + " β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(sn.BRQP2:5!null)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(oe56m.id:0!null)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(oe56m)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ └─ TableAlias(skpm6)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ β”œβ”€ keys: [sn.FFTBJ:6!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (11-20)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 2\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: E2I7U\n" + - " β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ β”œβ”€ name: NOXN3\n" + + " β”‚ β”‚ └─ columns: [id brqp2 fftbj]\n" + " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: TUPLE(skpm6.BRQP2:1!null, skpm6.BRQP2:1!null, skpm6.BRQP2:1!null)\n" + - " β”‚ β”œβ”€ right-key: TUPLE(sn.FFTBJ:2!null, v5say.id:8!null, cgfrz.id:6!null)\n" + - " β”‚ └─ HashJoin\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cgfrz.id:11!null\n" + - " β”‚ β”‚ β”‚ └─ sn.FFTBJ:7!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ sn.FFTBJ:7!null\n" + - " β”‚ β”‚ └─ v5say.id:13!null\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ sn.BRQP2:6!null\n" + - " β”‚ β”‚ β”‚ └─ oe56m.id:9!null\n" + - " β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ sn.NUMK2:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ 1 (int)\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-10)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + - " β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj numk2]\n" + - " β”‚ β”‚ └─ TableAlias(oe56m)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (27-43)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 4\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: E2I7U\n" + - " β”‚ β”‚ └─ columns: [id tw55n]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: TUPLE(sn.FFTBJ:7!null, sn.FFTBJ:7!null)\n" + - " β”‚ β”œβ”€ right-key: TUPLE(cgfrz.id:0!null, v5say.id:2!null)\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ cgfrz.id:11!null\n" + - " β”‚ β”‚ └─ v5say.id:13!null\n" + - " β”‚ β”œβ”€ TableAlias(cgfrz)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (44-60)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 5\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: E2I7U\n" + - " β”‚ β”‚ └─ columns: [id tw55n]\n" + - " β”‚ └─ TableAlias(v5say)\n" + - " β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (61-77)\n" + - " β”‚ β”œβ”€ tableId: 6\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: E2I7U\n" + - " β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”œβ”€ left-key: TUPLE(skpm6.FFTBJ:12!null)\n" + + " β”‚ β”œβ”€ right-key: TUPLE(fqthf.id:0!null)\n" + + " β”‚ └─ TableAlias(fqthf)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”œβ”€ columns: [id tw55n]\n" + + " β”‚ β”œβ”€ colSet: (78-94)\n" + + " β”‚ └─ tableId: 7\n" + " └─ TableAlias(rn)\n" + " └─ IndexedTableAccess(QYWQD)\n" + " β”œβ”€ index: [QYWQD.WNUNU]\n" + - " β”œβ”€ keys: [sn.id:5!null]\n" + + " β”œβ”€ keys: [sn.id:4!null]\n" + " β”œβ”€ colSet: (21-26)\n" + " β”œβ”€ tableId: 3\n" + " └─ Table\n" + @@ -2772,56 +2696,54 @@ WHERE " β”œβ”€ columns: [sn.id as DRIWM, concat(oe56m.TW55N,'FDNCN',cgfrz.TW55N) as GRVSE, skpm6.id as JIEVY, concat(v5say.TW55N,'FDNCN',fqthf.TW55N) as ENCM3, 1.0 as OHD3R]\n" + " └─ Filter\n" + " β”œβ”€ (rn.WNUNU IS NULL AND rn.HHVLX IS NULL)\n" + - " └─ LeftOuterLookupJoin (estimated cost=48654.100 rows=15688)\n" + + " └─ LeftOuterLookupJoin (estimated cost=14355.120 rows=15688)\n" + " β”œβ”€ (rn.HHVLX = skpm6.id)\n" + - " β”œβ”€ HashJoin (estimated cost=42179.640 rows=12551)\n" + - " β”‚ β”œβ”€ (((skpm6.BRQP2 = sn.FFTBJ) AND (v5say.id = skpm6.BRQP2)) AND (skpm6.BRQP2 = cgfrz.id))\n" + - " β”‚ β”œβ”€ MergeJoin (estimated cost=15929.680 rows=11813)\n" + - " β”‚ β”‚ β”œβ”€ cmp: (skpm6.FFTBJ = fqthf.id)\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(skpm6)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj]\n" + - " β”‚ β”‚ └─ TableAlias(fqthf)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”œβ”€ HashJoin (estimated cost=24328.020 rows=12551)\n" + + " β”‚ β”œβ”€ (fqthf.id = skpm6.FFTBJ)\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=11484.365 rows=12551)\n" + + " β”‚ β”‚ β”œβ”€ ((v5say.id = skpm6.BRQP2) AND (skpm6.BRQP2 = cgfrz.id))\n" + + " β”‚ β”‚ β”œβ”€ HashJoin (estimated cost=21767.820 rows=10041)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (oe56m.id = sn.BRQP2)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=4996.715 rows=10041)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (sn.FFTBJ = v5say.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin (estimated cost=7799.260 rows=3842)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (cgfrz.id = v5say.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cgfrz)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(v5say)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (sn.NUMK2 = 1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id brqp2 fftbj numk2]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cgfrz.id\n" + + " β”‚ β”‚ β”‚ └─ HashLookup\n" + + " β”‚ β”‚ β”‚ β”œβ”€ left-key: (sn.BRQP2)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ right-key: (oe56m.id)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(oe56m)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ └─ TableAlias(skpm6)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ β”œβ”€ columns: [id brqp2 fftbj]\n" + + " β”‚ β”‚ └─ keys: sn.FFTBJ\n" + " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (skpm6.BRQP2, skpm6.BRQP2, skpm6.BRQP2)\n" + - " β”‚ β”œβ”€ right-key: (sn.FFTBJ, v5say.id, cgfrz.id)\n" + - " β”‚ └─ HashJoin\n" + - " β”‚ β”œβ”€ ((cgfrz.id = sn.FFTBJ) AND (sn.FFTBJ = v5say.id))\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (sn.BRQP2 = oe56m.id)\n" + - " β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (sn.NUMK2 = 1)\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj numk2]\n" + - " β”‚ β”‚ └─ TableAlias(oe56m)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id tw55n]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (sn.FFTBJ, sn.FFTBJ)\n" + - " β”‚ β”œβ”€ right-key: (cgfrz.id, v5say.id)\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (cgfrz.id = v5say.id)\n" + - " β”‚ β”œβ”€ TableAlias(cgfrz)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id tw55n]\n" + - " β”‚ └─ TableAlias(v5say)\n" + - " β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”œβ”€ left-key: (skpm6.FFTBJ)\n" + + " β”‚ β”œβ”€ right-key: (fqthf.id)\n" + + " β”‚ └─ TableAlias(fqthf)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ └─ columns: [id tw55n]\n" + " └─ TableAlias(rn)\n" + " └─ IndexedTableAccess(QYWQD)\n" + " β”œβ”€ index: [QYWQD.WNUNU]\n" + @@ -2832,56 +2754,54 @@ WHERE " β”œβ”€ columns: [sn.id as DRIWM, concat(oe56m.TW55N,'FDNCN',cgfrz.TW55N) as GRVSE, skpm6.id as JIEVY, concat(v5say.TW55N,'FDNCN',fqthf.TW55N) as ENCM3, 1.0 as OHD3R]\n" + " └─ Filter\n" + " β”œβ”€ (rn.WNUNU IS NULL AND rn.HHVLX IS NULL)\n" + - " └─ LeftOuterLookupJoin (estimated cost=48654.100 rows=15688) (actual rows=0 loops=1)\n" + + " └─ LeftOuterLookupJoin (estimated cost=14355.120 rows=15688) (actual rows=0 loops=1)\n" + " β”œβ”€ (rn.HHVLX = skpm6.id)\n" + - " β”œβ”€ HashJoin (estimated cost=42179.640 rows=12551) (actual rows=0 loops=1)\n" + - " β”‚ β”œβ”€ (((skpm6.BRQP2 = sn.FFTBJ) AND (v5say.id = skpm6.BRQP2)) AND (skpm6.BRQP2 = cgfrz.id))\n" + - " β”‚ β”œβ”€ MergeJoin (estimated cost=15929.680 rows=11813) (actual rows=0 loops=1)\n" + - " β”‚ β”‚ β”œβ”€ cmp: (skpm6.FFTBJ = fqthf.id)\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(skpm6)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj]\n" + - " β”‚ β”‚ └─ TableAlias(fqthf)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”œβ”€ HashJoin (estimated cost=24328.020 rows=12551) (actual rows=0 loops=1)\n" + + " β”‚ β”œβ”€ (fqthf.id = skpm6.FFTBJ)\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=11484.365 rows=12551) (actual rows=0 loops=1)\n" + + " β”‚ β”‚ β”œβ”€ ((v5say.id = skpm6.BRQP2) AND (skpm6.BRQP2 = cgfrz.id))\n" + + " β”‚ β”‚ β”œβ”€ HashJoin (estimated cost=21767.820 rows=10041) (actual rows=0 loops=1)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (oe56m.id = sn.BRQP2)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin (estimated cost=4996.715 rows=10041) (actual rows=0 loops=1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (sn.FFTBJ = v5say.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin (estimated cost=7799.260 rows=3842) (actual rows=0 loops=1)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (cgfrz.id = v5say.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cgfrz)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(v5say)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (sn.NUMK2 = 1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id brqp2 fftbj numk2]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cgfrz.id\n" + + " β”‚ β”‚ β”‚ └─ HashLookup\n" + + " β”‚ β”‚ β”‚ β”œβ”€ left-key: (sn.BRQP2)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ right-key: (oe56m.id)\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(oe56m)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ └─ TableAlias(skpm6)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ β”œβ”€ columns: [id brqp2 fftbj]\n" + + " β”‚ β”‚ └─ keys: sn.FFTBJ\n" + " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (skpm6.BRQP2, skpm6.BRQP2, skpm6.BRQP2)\n" + - " β”‚ β”œβ”€ right-key: (sn.FFTBJ, v5say.id, cgfrz.id)\n" + - " β”‚ └─ HashJoin\n" + - " β”‚ β”œβ”€ ((cgfrz.id = sn.FFTBJ) AND (sn.FFTBJ = v5say.id))\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (sn.BRQP2 = oe56m.id)\n" + - " β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (sn.NUMK2 = 1)\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj numk2]\n" + - " β”‚ β”‚ └─ TableAlias(oe56m)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id tw55n]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (sn.FFTBJ, sn.FFTBJ)\n" + - " β”‚ β”œβ”€ right-key: (cgfrz.id, v5say.id)\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (cgfrz.id = v5say.id)\n" + - " β”‚ β”œβ”€ TableAlias(cgfrz)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id tw55n]\n" + - " β”‚ └─ TableAlias(v5say)\n" + - " β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”œβ”€ left-key: (skpm6.FFTBJ)\n" + + " β”‚ β”œβ”€ right-key: (fqthf.id)\n" + + " β”‚ └─ TableAlias(fqthf)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ └─ columns: [id tw55n]\n" + " └─ TableAlias(rn)\n" + " └─ IndexedTableAccess(QYWQD)\n" + " β”œβ”€ index: [QYWQD.WNUNU]\n" + @@ -3278,7 +3198,7 @@ WHERE "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [pbmrx.id as id, pbmrx.TW55N as UYOGN, pbmrx.ZH72S as H4JEA]\n" + - " └─ LookupJoin (estimated cost=405.900 rows=124)\n" + + " └─ LookupJoin (estimated cost=114.260 rows=124)\n" + " β”œβ”€ (NOT(pbmrx.ZH72S IS NULL))\n" + " β”œβ”€ SubqueryAlias\n" + " β”‚ β”œβ”€ name: cl3dt\n" + @@ -3342,7 +3262,7 @@ WHERE "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [pbmrx.id as id, pbmrx.TW55N as UYOGN, pbmrx.ZH72S as H4JEA]\n" + - " └─ LookupJoin (estimated cost=405.900 rows=124) (actual rows=0 loops=1)\n" + + " └─ LookupJoin (estimated cost=114.260 rows=124) (actual rows=0 loops=1)\n" + " β”œβ”€ (NOT(pbmrx.ZH72S IS NULL))\n" + " β”œβ”€ SubqueryAlias\n" + " β”‚ β”œβ”€ name: cl3dt\n" + @@ -3439,16 +3359,9 @@ WHERE " β”‚ β”‚ β”œβ”€ columns: [SISUT.id:0!null, SISUT.T4IBQ:1, SISUT.ZH72S:2, SISUT.AMYXQ:3, SISUT.KTNZ2:4, SISUT.HIID2:5, SISUT.DN3OQ:6, SISUT.VVKNB:7, SISUT.SH7TP:8, SISUT.SRZZO:9, SISUT.QZ6VT:10]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ amyxq.KKGN5:11 IS NULL\n" + - " β”‚ β”‚ └─ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ufc.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ amyxq.KKGN5:11\n" + + " β”‚ β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ TableAlias(ufc)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(SISUT)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [SISUT.id]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-11)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”œβ”€ name: SISUT\n" + " β”‚ β”‚ β”‚ └─ columns: [id t4ibq zh72s amyxq ktnz2 hiid2 dn3oq vvknb sh7tp srzzo qz6vt]\n" + @@ -3456,7 +3369,7 @@ WHERE " β”‚ β”‚ β”œβ”€ columns: [amyxq.KKGN5:7]\n" + " β”‚ β”‚ └─ IndexedTableAccess(AMYXQ)\n" + " β”‚ β”‚ β”œβ”€ index: [AMYXQ.KKGN5]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ufc.id:0!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (59-66)\n" + " β”‚ β”‚ β”œβ”€ tableId: 4\n" + " β”‚ β”‚ └─ Table\n" + @@ -3494,17 +3407,15 @@ WHERE " β”‚ β”‚ β”œβ”€ columns: [SISUT.id, SISUT.T4IBQ, SISUT.ZH72S, SISUT.AMYXQ, SISUT.KTNZ2, SISUT.HIID2, SISUT.DN3OQ, SISUT.VVKNB, SISUT.SH7TP, SISUT.SRZZO, SISUT.QZ6VT]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ amyxq.KKGN5 IS NULL\n" + - " β”‚ β”‚ └─ LeftOuterMergeJoin (estimated cost=109840579.580 rows=5983347)\n" + - " β”‚ β”‚ β”œβ”€ cmp: (ufc.id = amyxq.KKGN5)\n" + + " β”‚ β”‚ └─ LeftOuterLookupJoin (estimated cost=104595214.905 rows=5983347)\n" + " β”‚ β”‚ β”œβ”€ TableAlias(ufc)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(SISUT)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [SISUT.id]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ └─ name: SISUT\n" + " β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”œβ”€ columns: [amyxq.KKGN5]\n" + " β”‚ β”‚ └─ IndexedTableAccess(AMYXQ)\n" + " β”‚ β”‚ β”œβ”€ index: [AMYXQ.KKGN5]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ keys: ufc.id\n" + " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: (ufc.T4IBQ)\n" + " β”‚ β”œβ”€ right-key: (cla.FTQLQ)\n" + @@ -3530,17 +3441,15 @@ WHERE " β”‚ β”‚ β”œβ”€ columns: [SISUT.id, SISUT.T4IBQ, SISUT.ZH72S, SISUT.AMYXQ, SISUT.KTNZ2, SISUT.HIID2, SISUT.DN3OQ, SISUT.VVKNB, SISUT.SH7TP, SISUT.SRZZO, SISUT.QZ6VT]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ amyxq.KKGN5 IS NULL\n" + - " β”‚ β”‚ └─ LeftOuterMergeJoin (estimated cost=109840579.580 rows=5983347) (actual rows=0 loops=1)\n" + - " β”‚ β”‚ β”œβ”€ cmp: (ufc.id = amyxq.KKGN5)\n" + + " β”‚ β”‚ └─ LeftOuterLookupJoin (estimated cost=104595214.905 rows=5983347) (actual rows=0 loops=1)\n" + " β”‚ β”‚ β”œβ”€ TableAlias(ufc)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(SISUT)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [SISUT.id]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ └─ name: SISUT\n" + " β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”œβ”€ columns: [amyxq.KKGN5]\n" + " β”‚ β”‚ └─ IndexedTableAccess(AMYXQ)\n" + " β”‚ β”‚ β”œβ”€ index: [AMYXQ.KKGN5]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ keys: ufc.id\n" + " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: (ufc.T4IBQ)\n" + " β”‚ β”œβ”€ right-key: (cla.FTQLQ)\n" + @@ -3590,16 +3499,9 @@ WHERE " β”‚ β”‚ β”œβ”€ columns: [SISUT.id:0!null, SISUT.T4IBQ:1, SISUT.ZH72S:2, SISUT.AMYXQ:3, SISUT.KTNZ2:4, SISUT.HIID2:5, SISUT.DN3OQ:6, SISUT.VVKNB:7, SISUT.SH7TP:8, SISUT.SRZZO:9, SISUT.QZ6VT:10]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ amyxq.KKGN5:11 IS NULL\n" + - " β”‚ β”‚ └─ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ufc.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ amyxq.KKGN5:11\n" + + " β”‚ β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ TableAlias(ufc)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(SISUT)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [SISUT.id]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-11)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”œβ”€ name: SISUT\n" + " β”‚ β”‚ β”‚ └─ columns: [id t4ibq zh72s amyxq ktnz2 hiid2 dn3oq vvknb sh7tp srzzo qz6vt]\n" + @@ -3607,7 +3509,7 @@ WHERE " β”‚ β”‚ β”œβ”€ columns: [amyxq.KKGN5:7]\n" + " β”‚ β”‚ └─ IndexedTableAccess(AMYXQ)\n" + " β”‚ β”‚ β”œβ”€ index: [AMYXQ.KKGN5]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ufc.id:0!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (59-66)\n" + " β”‚ β”‚ β”œβ”€ tableId: 4\n" + " β”‚ β”‚ └─ Table\n" + @@ -3645,17 +3547,15 @@ WHERE " β”‚ β”‚ β”œβ”€ columns: [SISUT.id, SISUT.T4IBQ, SISUT.ZH72S, SISUT.AMYXQ, SISUT.KTNZ2, SISUT.HIID2, SISUT.DN3OQ, SISUT.VVKNB, SISUT.SH7TP, SISUT.SRZZO, SISUT.QZ6VT]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ amyxq.KKGN5 IS NULL\n" + - " β”‚ β”‚ └─ LeftOuterMergeJoin (estimated cost=109840579.580 rows=5983347)\n" + - " β”‚ β”‚ β”œβ”€ cmp: (ufc.id = amyxq.KKGN5)\n" + + " β”‚ β”‚ └─ LeftOuterLookupJoin (estimated cost=104595214.905 rows=5983347)\n" + " β”‚ β”‚ β”œβ”€ TableAlias(ufc)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(SISUT)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [SISUT.id]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ └─ name: SISUT\n" + " β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”œβ”€ columns: [amyxq.KKGN5]\n" + " β”‚ β”‚ └─ IndexedTableAccess(AMYXQ)\n" + " β”‚ β”‚ β”œβ”€ index: [AMYXQ.KKGN5]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ keys: ufc.id\n" + " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: (ufc.T4IBQ)\n" + " β”‚ β”œβ”€ right-key: (cla.FTQLQ)\n" + @@ -3681,17 +3581,15 @@ WHERE " β”‚ β”‚ β”œβ”€ columns: [SISUT.id, SISUT.T4IBQ, SISUT.ZH72S, SISUT.AMYXQ, SISUT.KTNZ2, SISUT.HIID2, SISUT.DN3OQ, SISUT.VVKNB, SISUT.SH7TP, SISUT.SRZZO, SISUT.QZ6VT]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ amyxq.KKGN5 IS NULL\n" + - " β”‚ β”‚ └─ LeftOuterMergeJoin (estimated cost=109840579.580 rows=5983347) (actual rows=0 loops=1)\n" + - " β”‚ β”‚ β”œβ”€ cmp: (ufc.id = amyxq.KKGN5)\n" + + " β”‚ β”‚ └─ LeftOuterLookupJoin (estimated cost=104595214.905 rows=5983347) (actual rows=0 loops=1)\n" + " β”‚ β”‚ β”œβ”€ TableAlias(ufc)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(SISUT)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [SISUT.id]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ └─ name: SISUT\n" + " β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”œβ”€ columns: [amyxq.KKGN5]\n" + " β”‚ β”‚ └─ IndexedTableAccess(AMYXQ)\n" + " β”‚ β”‚ β”œβ”€ index: [AMYXQ.KKGN5]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ keys: ufc.id\n" + " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: (ufc.T4IBQ)\n" + " β”‚ β”œβ”€ right-key: (cla.FTQLQ)\n" + @@ -3759,8 +3657,8 @@ WHERE " β”œβ”€ columns: [FG26Y.id, FG26Y.T4IBQ, FG26Y.ner, FG26Y.ber, FG26Y.hr, FG26Y.mmr, FG26Y.QZ6VT, YK2GW.id, YK2GW.FTQLQ, YK2GW.TUXML, YK2GW.PAEF5, YK2GW.RUCY4, YK2GW.TPNJ6, YK2GW.LBL53, YK2GW.NB3QS, YK2GW.EO7IV, YK2GW.MUHJF, YK2GW.FM34L, YK2GW.TY5RF, YK2GW.ZHTLH, YK2GW.NPB7W, YK2GW.SX3HH, YK2GW.ISBNF, YK2GW.YA7YB, YK2GW.C5YKB, YK2GW.QK7KT, YK2GW.FFGE6, YK2GW.FIIGJ, YK2GW.SH3NC, YK2GW.NTENA, YK2GW.M4AUB, YK2GW.X5AIR, YK2GW.SAB6M, YK2GW.G5QI5, YK2GW.ZVQVD, YK2GW.YKSSU, YK2GW.FHCYT]\n" + " └─ Filter\n" + " β”œβ”€ szqwj.JOGI6 IS NULL\n" + - " └─ LeftOuterLookupJoin (estimated cost=3899.000 rows=1251)\n" + - " β”œβ”€ LookupJoin (estimated cost=3303.300 rows=1001)\n" + + " └─ LeftOuterLookupJoin (estimated cost=1144.865 rows=1251)\n" + + " β”œβ”€ LookupJoin (estimated cost=2302.300 rows=1001)\n" + " β”‚ β”œβ”€ TableAlias(ums)\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ └─ name: FG26Y\n" + @@ -3780,8 +3678,8 @@ WHERE " β”œβ”€ columns: [FG26Y.id, FG26Y.T4IBQ, FG26Y.ner, FG26Y.ber, FG26Y.hr, FG26Y.mmr, FG26Y.QZ6VT, YK2GW.id, YK2GW.FTQLQ, YK2GW.TUXML, YK2GW.PAEF5, YK2GW.RUCY4, YK2GW.TPNJ6, YK2GW.LBL53, YK2GW.NB3QS, YK2GW.EO7IV, YK2GW.MUHJF, YK2GW.FM34L, YK2GW.TY5RF, YK2GW.ZHTLH, YK2GW.NPB7W, YK2GW.SX3HH, YK2GW.ISBNF, YK2GW.YA7YB, YK2GW.C5YKB, YK2GW.QK7KT, YK2GW.FFGE6, YK2GW.FIIGJ, YK2GW.SH3NC, YK2GW.NTENA, YK2GW.M4AUB, YK2GW.X5AIR, YK2GW.SAB6M, YK2GW.G5QI5, YK2GW.ZVQVD, YK2GW.YKSSU, YK2GW.FHCYT]\n" + " └─ Filter\n" + " β”œβ”€ szqwj.JOGI6 IS NULL\n" + - " └─ LeftOuterLookupJoin (estimated cost=3899.000 rows=1251) (actual rows=0 loops=1)\n" + - " β”œβ”€ LookupJoin (estimated cost=3303.300 rows=1001) (actual rows=0 loops=1)\n" + + " └─ LeftOuterLookupJoin (estimated cost=1144.865 rows=1251) (actual rows=0 loops=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=2302.300 rows=1001) (actual rows=0 loops=1)\n" + " β”‚ β”œβ”€ TableAlias(ums)\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ └─ name: FG26Y\n" + @@ -3861,12 +3759,12 @@ WHERE ) `, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [mf.id:0!null->id:0, cla.FTQLQ:42!null->T4IBQ:0, nd.TW55N:23!null->UWBAI:0, aac.BTXC5:18->TPXBU:0, mf.FSDY2:10!null->FSDY2:0]\n" + + " β”œβ”€ columns: [mf.id:3!null->id:0, cla.FTQLQ:38!null->T4IBQ:0, nd.TW55N:23!null->UWBAI:0, aac.BTXC5:1->TPXBU:0, mf.FSDY2:13!null->FSDY2:0]\n" + " └─ Filter\n" + " β”œβ”€ Or\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ └─ mf.QQV4M:15 IS NULL\n" + + " β”‚ β”‚ β”‚ └─ mf.QQV4M:18 IS NULL\n" + " β”‚ β”‚ └─ Or\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ Subquery\n" + @@ -3877,11 +3775,11 @@ WHERE " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tj5d2.id:71!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mf.QQV4M:15\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mf.QQV4M:18\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(tj5d2)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(SZW6V)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SZW6V.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [mf.QQV4M:15]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [mf.QQV4M:18]\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (72-79)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + @@ -3906,11 +3804,11 @@ WHERE " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tj5d2.id:88!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mf.QQV4M:15\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ mf.QQV4M:18\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(tj5d2)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(SZW6V)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SZW6V.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [mf.QQV4M:15]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [mf.QQV4M:18]\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (97-104)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 8\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + @@ -3922,12 +3820,12 @@ WHERE " β”‚ β”‚ β”‚ β”œβ”€ columns: [id dkcaj kng7t tw55n qrqxw ecxaj fgg57 zh72s fsk67 xqdyt tce7a iwv2h hpcms n5cc2 fhcyt etaq7 a75x7]\n" + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (80-96)\n" + " β”‚ β”‚ β”‚ └─ tableId: 7\n" + - " β”‚ β”‚ └─ mf.LUEVY:2!null\n" + + " β”‚ β”‚ └─ mf.LUEVY:5!null\n" + " β”‚ └─ AND\n" + " β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ └─ mf.TEUJA:14 IS NULL\n" + + " β”‚ β”‚ └─ mf.TEUJA:17 IS NULL\n" + " β”‚ └─ InSubquery\n" + - " β”‚ β”œβ”€ left: mf.TEUJA:14\n" + + " β”‚ β”œβ”€ left: mf.TEUJA:17\n" + " β”‚ └─ right: Subquery\n" + " β”‚ β”œβ”€ cacheable: true\n" + " β”‚ β”œβ”€ alias-string: select umf.id as ORB3K from SZW6V as TJ5D2 join NZKPM as umf on umf.T4IBQ = TJ5D2.T4IBQ and umf.FGG57 = TJ5D2.V7UFH and umf.SYPKF = TJ5D2.SYPKF where TJ5D2.SWCQV = 0 and TJ5D2.id not in (select QQV4M from HGMQ6 where QQV4M is not null)\n" + @@ -3978,36 +3876,29 @@ WHERE " β”‚ └─ columns: [id t4ibq fgg57 sshpj nla6o sfj6l tjpt7 arn5p sypkf ivfmk ide43 az6sp fsdy2 xosd4 hmw4h s76om vaf zroh6 qcgts lnfm6 tvawl hdlcl bhhw6 fhcyt qz6vt]\n" + " └─ HashJoin\n" + " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ bs.id:37!null\n" + - " β”‚ └─ mf.GXLUB:1!null\n" + + " β”‚ β”œβ”€ bs.id:67!null\n" + + " β”‚ └─ mf.GXLUB:4!null\n" + " β”œβ”€ HashJoin\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ nd.id:20!null\n" + - " β”‚ β”‚ └─ mf.LUEVY:2!null\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ mf.M22QN:3!null\n" + - " β”‚ β”‚ β”‚ └─ aac.id:17!null\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(mf)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.M22QN]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-17)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ └─ mf.LUEVY:5!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(aac)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + - " β”‚ β”‚ β”‚ └─ columns: [id gxlub luevy m22qn tjpt7 arn5p xosd4 ide43 hmw4h zbt6r fsdy2 lt7k6 sppyd qcgts teuja qqv4m fhcyt]\n" + - " β”‚ β”‚ └─ TableAlias(aac)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + - " β”‚ β”‚ β”œβ”€ index: [TPXBU.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (69-71)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: TPXBU\n" + + " β”‚ β”‚ β”‚ └─ columns: [id btxc5 fhcyt]\n" + + " β”‚ β”‚ └─ TableAlias(mf)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + + " β”‚ β”‚ β”œβ”€ index: [HGMQ6.M22QN]\n" + + " β”‚ β”‚ β”œβ”€ keys: [aac.id:0!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (1-17)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 1\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: TPXBU\n" + - " β”‚ β”‚ └─ columns: [id btxc5 fhcyt]\n" + + " β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + + " β”‚ β”‚ └─ columns: [id gxlub luevy m22qn tjpt7 arn5p xosd4 ide43 hmw4h zbt6r fsdy2 lt7k6 sppyd qcgts teuja qqv4m fhcyt]\n" + " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: TUPLE(mf.LUEVY:2!null)\n" + + " β”‚ β”œβ”€ left-key: TUPLE(mf.LUEVY:5!null)\n" + " β”‚ β”œβ”€ right-key: TUPLE(nd.id:0!null)\n" + " β”‚ └─ TableAlias(nd)\n" + " β”‚ └─ ProcessTable\n" + @@ -4015,30 +3906,23 @@ WHERE " β”‚ β”œβ”€ name: E2I7U\n" + " β”‚ └─ columns: [id dkcaj kng7t tw55n qrqxw ecxaj fgg57 zh72s fsk67 xqdyt tce7a iwv2h hpcms n5cc2 fhcyt etaq7 a75x7]\n" + " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(mf.GXLUB:1!null)\n" + - " β”œβ”€ right-key: TUPLE(bs.id:0!null)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ bs.IXUXU:39\n" + - " β”‚ └─ cla.id:41!null\n" + - " β”œβ”€ TableAlias(bs)\n" + - " β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (18-21)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " β”œβ”€ left-key: TUPLE(mf.GXLUB:4!null)\n" + + " β”œβ”€ right-key: TUPLE(bs.id:30!null)\n" + + " └─ LookupJoin\n" + + " β”œβ”€ TableAlias(cla)\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ └─ columns: [id nfryn ixuxu fhcyt]\n" + - " └─ TableAlias(cla)\n" + - " └─ IndexedTableAccess(YK2GW)\n" + - " β”œβ”€ index: [YK2GW.id]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (22-51)\n" + - " β”œβ”€ tableId: 3\n" + + " β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ └─ columns: [id ftqlq tuxml paef5 rucy4 tpnj6 lbl53 nb3qs eo7iv muhjf fm34l ty5rf zhtlh npb7w sx3hh isbnf ya7yb c5ykb qk7kt ffge6 fiigj sh3nc ntena m4aub x5air sab6m g5qi5 zvqvd ykssu fhcyt]\n" + + " └─ TableAlias(bs)\n" + + " └─ IndexedTableAccess(THNTS)\n" + + " β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”œβ”€ keys: [cla.id:37!null]\n" + + " β”œβ”€ colSet: (18-21)\n" + + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + - " β”œβ”€ name: YK2GW\n" + - " └─ columns: [id ftqlq tuxml paef5 rucy4 tpnj6 lbl53 nb3qs eo7iv muhjf fm34l ty5rf zhtlh npb7w sx3hh isbnf ya7yb c5ykb qk7kt ffge6 fiigj sh3nc ntena m4aub x5air sab6m g5qi5 zvqvd ykssu fhcyt]\n" + + " β”œβ”€ name: THNTS\n" + + " └─ columns: [id nfryn ixuxu fhcyt]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [mf.id as id, cla.FTQLQ as T4IBQ, nd.TW55N as UWBAI, aac.BTXC5 as TPXBU, mf.FSDY2 as FSDY2]\n" + @@ -4107,16 +3991,14 @@ WHERE " β”œβ”€ (bs.id = mf.GXLUB)\n" + " β”œβ”€ HashJoin (estimated cost=533734.380 rows=511969)\n" + " β”‚ β”œβ”€ (nd.id = mf.LUEVY)\n" + - " β”‚ β”œβ”€ MergeJoin (estimated cost=647314.050 rows=511969)\n" + - " β”‚ β”‚ β”œβ”€ cmp: (mf.M22QN = aac.id)\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(mf)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.M22QN]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ TableAlias(aac)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + - " β”‚ β”‚ β”œβ”€ index: [TPXBU.id]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=182743.435 rows=511969)\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(aac)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ └─ name: TPXBU\n" + + " β”‚ β”‚ └─ TableAlias(mf)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + + " β”‚ β”‚ β”œβ”€ index: [HGMQ6.M22QN]\n" + + " β”‚ β”‚ └─ keys: aac.id\n" + " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: (mf.LUEVY)\n" + " β”‚ β”œβ”€ right-key: (nd.id)\n" + @@ -4126,16 +4008,14 @@ WHERE " └─ HashLookup\n" + " β”œβ”€ left-key: (mf.GXLUB)\n" + " β”œβ”€ right-key: (bs.id)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (bs.IXUXU = cla.id)\n" + - " β”œβ”€ TableAlias(bs)\n" + - " β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ └─ filters: [{[NULL, ∞)}]\n" + - " └─ TableAlias(cla)\n" + - " └─ IndexedTableAccess(YK2GW)\n" + - " β”œβ”€ index: [YK2GW.id]\n" + - " └─ filters: [{[NULL, ∞)}]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ TableAlias(cla)\n" + + " β”‚ └─ Table\n" + + " β”‚ └─ name: YK2GW\n" + + " └─ TableAlias(bs)\n" + + " └─ IndexedTableAccess(THNTS)\n" + + " β”œβ”€ index: [THNTS.IXUXU]\n" + + " └─ keys: cla.id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [mf.id as id, cla.FTQLQ as T4IBQ, nd.TW55N as UWBAI, aac.BTXC5 as TPXBU, mf.FSDY2 as FSDY2]\n" + @@ -4204,16 +4084,14 @@ WHERE " β”œβ”€ (bs.id = mf.GXLUB)\n" + " β”œβ”€ HashJoin (estimated cost=533734.380 rows=511969) (actual rows=0 loops=1)\n" + " β”‚ β”œβ”€ (nd.id = mf.LUEVY)\n" + - " β”‚ β”œβ”€ MergeJoin (estimated cost=647314.050 rows=511969) (actual rows=0 loops=1)\n" + - " β”‚ β”‚ β”œβ”€ cmp: (mf.M22QN = aac.id)\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(mf)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.M22QN]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ TableAlias(aac)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + - " β”‚ β”‚ β”œβ”€ index: [TPXBU.id]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=182743.435 rows=511969) (actual rows=0 loops=1)\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(aac)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ └─ name: TPXBU\n" + + " β”‚ β”‚ └─ TableAlias(mf)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + + " β”‚ β”‚ β”œβ”€ index: [HGMQ6.M22QN]\n" + + " β”‚ β”‚ └─ keys: aac.id\n" + " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: (mf.LUEVY)\n" + " β”‚ β”œβ”€ right-key: (nd.id)\n" + @@ -4223,16 +4101,14 @@ WHERE " └─ HashLookup\n" + " β”œβ”€ left-key: (mf.GXLUB)\n" + " β”œβ”€ right-key: (bs.id)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (bs.IXUXU = cla.id)\n" + - " β”œβ”€ TableAlias(bs)\n" + - " β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ └─ filters: [{[NULL, ∞)}]\n" + - " └─ TableAlias(cla)\n" + - " └─ IndexedTableAccess(YK2GW)\n" + - " β”œβ”€ index: [YK2GW.id]\n" + - " └─ filters: [{[NULL, ∞)}]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ TableAlias(cla)\n" + + " β”‚ └─ Table\n" + + " β”‚ └─ name: YK2GW\n" + + " └─ TableAlias(bs)\n" + + " └─ IndexedTableAccess(THNTS)\n" + + " β”œβ”€ index: [THNTS.IXUXU]\n" + + " └─ keys: cla.id\n" + "", }, { @@ -4270,21 +4146,14 @@ WHERE " β”‚ β”‚ β”œβ”€ columns: [NZKPM.id:0!null, NZKPM.T4IBQ:1, NZKPM.FGG57:2, NZKPM.SSHPJ:3, NZKPM.NLA6O:4, NZKPM.SFJ6L:5, NZKPM.TJPT7:6, NZKPM.ARN5P:7, NZKPM.SYPKF:8, NZKPM.IVFMK:9, NZKPM.IDE43:10, NZKPM.AZ6SP:11, NZKPM.FSDY2:12, NZKPM.XOSD4:13, NZKPM.HMW4H:14, NZKPM.S76OM:15, NZKPM.vaf:16, NZKPM.ZROH6:17, NZKPM.QCGTS:18, NZKPM.LNFM6:19, NZKPM.TVAWL:20, NZKPM.HDLCL:21, NZKPM.BHHW6:22, NZKPM.FHCYT:23, NZKPM.QZ6VT:24]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ hgmq6.TEUJA:25 IS NULL\n" + - " β”‚ β”‚ └─ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ umf.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ hgmq6.TEUJA:25\n" + + " β”‚ β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ umf.ARN5P:7\n" + " β”‚ β”‚ β”‚ β”‚ └─ N/A (longtext)\n" + " β”‚ β”‚ β”‚ └─ TableAlias(umf)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NZKPM)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NZKPM.id]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-25)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”œβ”€ name: NZKPM\n" + " β”‚ β”‚ β”‚ └─ columns: [id t4ibq fgg57 sshpj nla6o sfj6l tjpt7 arn5p sypkf ivfmk ide43 az6sp fsdy2 xosd4 hmw4h s76om vaf zroh6 qcgts lnfm6 tvawl hdlcl bhhw6 fhcyt qz6vt]\n" + @@ -4292,7 +4161,7 @@ WHERE " β”‚ β”‚ β”œβ”€ columns: [hgmq6.TEUJA:14]\n" + " β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + " β”‚ β”‚ β”œβ”€ index: [HGMQ6.TEUJA]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”œβ”€ keys: [umf.id:0!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (73-89)\n" + " β”‚ β”‚ β”œβ”€ tableId: 4\n" + " β”‚ β”‚ └─ Table\n" + @@ -4329,19 +4198,17 @@ WHERE " β”‚ β”‚ β”œβ”€ columns: [NZKPM.id, NZKPM.T4IBQ, NZKPM.FGG57, NZKPM.SSHPJ, NZKPM.NLA6O, NZKPM.SFJ6L, NZKPM.TJPT7, NZKPM.ARN5P, NZKPM.SYPKF, NZKPM.IVFMK, NZKPM.IDE43, NZKPM.AZ6SP, NZKPM.FSDY2, NZKPM.XOSD4, NZKPM.HMW4H, NZKPM.S76OM, NZKPM.vaf, NZKPM.ZROH6, NZKPM.QCGTS, NZKPM.LNFM6, NZKPM.TVAWL, NZKPM.HDLCL, NZKPM.BHHW6, NZKPM.FHCYT, NZKPM.QZ6VT]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ hgmq6.TEUJA IS NULL\n" + - " β”‚ β”‚ └─ LeftOuterMergeJoin (estimated cost=16645873.910 rows=639961)\n" + - " β”‚ β”‚ β”œβ”€ cmp: (umf.id = hgmq6.TEUJA)\n" + + " β”‚ β”‚ └─ LeftOuterLookupJoin (estimated cost=16036353.515 rows=639961)\n" + " β”‚ β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”‚ β”œβ”€ (NOT((umf.ARN5P = 'N/A')))\n" + " β”‚ β”‚ β”‚ └─ TableAlias(umf)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NZKPM)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NZKPM.id]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ └─ name: NZKPM\n" + " β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”œβ”€ columns: [hgmq6.TEUJA]\n" + " β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + " β”‚ β”‚ β”œβ”€ index: [HGMQ6.TEUJA]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ keys: umf.id\n" + " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: (umf.T4IBQ)\n" + " β”‚ β”œβ”€ right-key: (cla.FTQLQ)\n" + @@ -4366,19 +4233,17 @@ WHERE " β”‚ β”‚ β”œβ”€ columns: [NZKPM.id, NZKPM.T4IBQ, NZKPM.FGG57, NZKPM.SSHPJ, NZKPM.NLA6O, NZKPM.SFJ6L, NZKPM.TJPT7, NZKPM.ARN5P, NZKPM.SYPKF, NZKPM.IVFMK, NZKPM.IDE43, NZKPM.AZ6SP, NZKPM.FSDY2, NZKPM.XOSD4, NZKPM.HMW4H, NZKPM.S76OM, NZKPM.vaf, NZKPM.ZROH6, NZKPM.QCGTS, NZKPM.LNFM6, NZKPM.TVAWL, NZKPM.HDLCL, NZKPM.BHHW6, NZKPM.FHCYT, NZKPM.QZ6VT]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ hgmq6.TEUJA IS NULL\n" + - " β”‚ β”‚ └─ LeftOuterMergeJoin (estimated cost=16645873.910 rows=639961) (actual rows=0 loops=1)\n" + - " β”‚ β”‚ β”œβ”€ cmp: (umf.id = hgmq6.TEUJA)\n" + + " β”‚ β”‚ └─ LeftOuterLookupJoin (estimated cost=16036353.515 rows=639961) (actual rows=0 loops=1)\n" + " β”‚ β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”‚ β”œβ”€ (NOT((umf.ARN5P = 'N/A')))\n" + " β”‚ β”‚ β”‚ └─ TableAlias(umf)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NZKPM)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NZKPM.id]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ └─ name: NZKPM\n" + " β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”œβ”€ columns: [hgmq6.TEUJA]\n" + " β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + " β”‚ β”‚ β”œβ”€ index: [HGMQ6.TEUJA]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ keys: umf.id\n" + " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: (umf.T4IBQ)\n" + " β”‚ β”œβ”€ right-key: (cla.FTQLQ)\n" + @@ -4553,7 +4418,7 @@ WHERE " β”‚ β”‚ └─ columns: [id btxc5]\n" + " β”‚ β”‚ ->TPXBU:0, sl3s5.NO52D:65!null->NO52D:0, sl3s5.IDPK7:66!null->IDPK7:0]\n" + " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [cla.id:37!null, cla.FTQLQ:38!null, cla.TUXML:39, cla.PAEF5:40, cla.RUCY4:41, cla.TPNJ6:42!null, cla.LBL53:43, cla.NB3QS:44, cla.EO7IV:45, cla.MUHJF:46, cla.FM34L:47, cla.TY5RF:48, cla.ZHTLH:49, cla.NPB7W:50, cla.SX3HH:51, cla.ISBNF:52, cla.YA7YB:53, cla.C5YKB:54, cla.QK7KT:55, cla.FFGE6:56, cla.FIIGJ:57, cla.SH3NC:58, cla.NTENA:59, cla.M4AUB:60, cla.X5AIR:61, cla.SAB6M:62, cla.G5QI5:63, cla.ZVQVD:64, cla.YKSSU:65, cla.FHCYT:66, bs.id:33!null, bs.NFRYN:34!null, bs.IXUXU:35, bs.FHCYT:36, mf.id:16!null, mf.GXLUB:17!null, mf.LUEVY:18!null, mf.M22QN:19!null, mf.TJPT7:20!null, mf.ARN5P:21!null, mf.XOSD4:22!null, mf.IDE43:23, mf.HMW4H:24, mf.ZBT6R:25, mf.FSDY2:26!null, mf.LT7K6:27, mf.SPPYD:28, mf.QCGTS:29, mf.TEUJA:30, mf.QQV4M:31, mf.FHCYT:32, sn.id:6!null, sn.BRQP2:7!null, sn.FFTBJ:8!null, sn.A7XO2:9, sn.KBO7R:10!null, sn.ECDKM:11, sn.NUMK2:12!null, sn.LETOE:13!null, sn.YKSSU:14, sn.FHCYT:15, sl3s5.BDNYB:0!null, sl3s5.TOFPN:1!null, sl3s5.M22QN:2!null, sl3s5.ADURZ:3!null, sl3s5.NO52D:4!null, sl3s5.IDPK7:5!null, cla.FTQLQ:38!null->T4IBQ:0, sl3s5.TOFPN:1!null->DL754:0, sn.id:6!null->BDNYB:0, sl3s5.ADURZ:3!null->ADURZ:0, Subquery\n" + + " β”‚ β”œβ”€ columns: [cla.id:37!null, cla.FTQLQ:38!null, cla.TUXML:39, cla.PAEF5:40, cla.RUCY4:41, cla.TPNJ6:42!null, cla.LBL53:43, cla.NB3QS:44, cla.EO7IV:45, cla.MUHJF:46, cla.FM34L:47, cla.TY5RF:48, cla.ZHTLH:49, cla.NPB7W:50, cla.SX3HH:51, cla.ISBNF:52, cla.YA7YB:53, cla.C5YKB:54, cla.QK7KT:55, cla.FFGE6:56, cla.FIIGJ:57, cla.SH3NC:58, cla.NTENA:59, cla.M4AUB:60, cla.X5AIR:61, cla.SAB6M:62, cla.G5QI5:63, cla.ZVQVD:64, cla.YKSSU:65, cla.FHCYT:66, bs.id:33!null, bs.NFRYN:34!null, bs.IXUXU:35, bs.FHCYT:36, mf.id:6!null, mf.GXLUB:7!null, mf.LUEVY:8!null, mf.M22QN:9!null, mf.TJPT7:10!null, mf.ARN5P:11!null, mf.XOSD4:12!null, mf.IDE43:13, mf.HMW4H:14, mf.ZBT6R:15, mf.FSDY2:16!null, mf.LT7K6:17, mf.SPPYD:18, mf.QCGTS:19, mf.TEUJA:20, mf.QQV4M:21, mf.FHCYT:22, sn.id:23!null, sn.BRQP2:24!null, sn.FFTBJ:25!null, sn.A7XO2:26, sn.KBO7R:27!null, sn.ECDKM:28, sn.NUMK2:29!null, sn.LETOE:30!null, sn.YKSSU:31, sn.FHCYT:32, sl3s5.BDNYB:0!null, sl3s5.TOFPN:1!null, sl3s5.M22QN:2!null, sl3s5.ADURZ:3!null, sl3s5.NO52D:4!null, sl3s5.IDPK7:5!null, cla.FTQLQ:38!null->T4IBQ:0, sl3s5.TOFPN:1!null->DL754:0, sn.id:23!null->BDNYB:0, sl3s5.ADURZ:3!null->ADURZ:0, Subquery\n" + " β”‚ β”‚ β”œβ”€ cacheable: false\n" + " β”‚ β”‚ β”œβ”€ alias-string: select aac.BTXC5 from TPXBU as aac where aac.id = SL3S5.M22QN\n" + " β”‚ β”‚ └─ Project\n" + @@ -4576,8 +4441,8 @@ WHERE " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ sn.BRQP2:7!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mf.LUEVY:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ sl3s5.BDNYB:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ sn.id:23!null\n" + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ SubqueryAlias\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: sl3s5\n" + @@ -4667,28 +4532,28 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [luevy m22qn]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [sl3s5.BDNYB:0!null]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (52-61)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.M22QN]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [sl3s5.M22QN:2!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (35-51)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.M22QN]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ keys: [sl3s5.M22QN:2!null]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (35-51)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id gxlub luevy m22qn tjpt7 arn5p xosd4 ide43 hmw4h zbt6r fsdy2 lt7k6 sppyd qcgts teuja qqv4m fhcyt]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [mf.LUEVY:8!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (52-61)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + - " β”‚ β”‚ β”‚ └─ columns: [id gxlub luevy m22qn tjpt7 arn5p xosd4 ide43 hmw4h zbt6r fsdy2 lt7k6 sppyd qcgts teuja qqv4m fhcyt]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + + " β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + " β”‚ β”‚ └─ TableAlias(bs)\n" + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”‚ β”œβ”€ index: [THNTS.id]\n" + - " β”‚ β”‚ β”œβ”€ keys: [mf.GXLUB:17!null]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mf.GXLUB:7!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (31-34)\n" + " β”‚ β”‚ β”œβ”€ tableId: 2\n" + " β”‚ β”‚ └─ Table\n" + @@ -4768,59 +4633,50 @@ WHERE " β”‚ β”‚ β”œβ”€ colSet: (192-197)\n" + " β”‚ β”‚ β”œβ”€ tableId: 19\n" + " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [sn.id:0!null->BDNYB:0, ci.FTQLQ:23!null->TOFPN:0, ct.M22QN:13!null->M22QN:0, cec.ADURZ:26!null->ADURZ:0, cec.NO52D:25!null->NO52D:0, ct.S3Q3Y:19!null->IDPK7:0]\n" + - " β”‚ β”‚ └─ HashJoin\n" + + " β”‚ β”‚ β”œβ”€ columns: [sn.id:17!null->BDNYB:0, ci.FTQLQ:16!null->TOFPN:0, ct.M22QN:6!null->M22QN:0, cec.ADURZ:2!null->ADURZ:0, cec.NO52D:1!null->NO52D:0, ct.S3Q3Y:12!null->IDPK7:0]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cec.id:24!null\n" + - " β”‚ β”‚ β”‚ └─ ct.OVE3E:14!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ct.M22QN:6!null\n" + + " β”‚ β”‚ β”‚ └─ Subquery\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cacheable: true\n" + + " β”‚ β”‚ β”‚ β”œβ”€ alias-string: select aac.id from TPXBU as aac where BTXC5 = 'WT'\n" + + " β”‚ β”‚ β”‚ └─ Project\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [aac.id:27!null]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.BTXC5]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ static: [{[WT, WT]}]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (172-174)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 16\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: TPXBU\n" + + " β”‚ β”‚ β”‚ └─ columns: [id btxc5]\n" + " β”‚ β”‚ β”œβ”€ HashJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.id:22!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ct.FZ2R5:11!null\n" + - " β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ sn.BRQP2:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ct.LUEVY:12!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ sel: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.M22QN:13!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Subquery\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cacheable: true\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ alias-string: select aac.id from TPXBU as aac where BTXC5 = 'WT'\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [aac.id:22!null]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.BTXC5]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[WT, WT]}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (172-174)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 16\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: TPXBU\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id btxc5]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (150-159)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 14\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.id:15!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ct.FZ2R5:4!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cec)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: SFEGG\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id no52d adurz]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (180-185)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 18\n" + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.ZRV3B:10!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ = (longtext)\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(FLQLP)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.LUEVY]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.OVE3E]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cec.id:0!null]\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (160-171)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 15\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: FLQLP\n" + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id fz2r5 luevy m22qn ove3e nrurt oca7e xmm6q v5dpx s3q3y zrv3b fhcyt]\n" + " β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(ct.FZ2R5:11!null)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(ct.FZ2R5:4!null)\n" + " β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(ci.id:0!null)\n" + " β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(JDLNA)\n" + @@ -4831,15 +4687,15 @@ WHERE " β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”œβ”€ name: JDLNA\n" + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + - " β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”œβ”€ left-key: TUPLE(ct.OVE3E:14!null)\n" + - " β”‚ β”‚ β”œβ”€ right-key: TUPLE(cec.id:0!null)\n" + - " β”‚ β”‚ └─ TableAlias(cec)\n" + + " β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ct.LUEVY:5!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (150-159)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 14\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: SFEGG\n" + - " β”‚ β”‚ β”œβ”€ columns: [id no52d adurz]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (180-185)\n" + - " β”‚ β”‚ └─ tableId: 18\n" + + " β”‚ β”‚ β”œβ”€ name: NOXN3\n" + + " β”‚ β”‚ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + " β”‚ └─ TableAlias(sn)\n" + " β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”œβ”€ index: [NOXN3.id]\n" + @@ -4905,7 +4761,7 @@ WHERE " β”‚ └─ LookupJoin\n" + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (sn.BRQP2 = mf.LUEVY)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (sl3s5.BDNYB = sn.id)\n" + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ SubqueryAlias\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: sl3s5\n" + @@ -4961,14 +4817,14 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.LUEVY]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [luevy m22qn]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: sn.BRQP2\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.id]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ keys: sl3s5.BDNYB\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.M22QN]\n" + - " β”‚ β”‚ β”‚ └─ keys: sl3s5.M22QN\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.M22QN]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: sl3s5.M22QN\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ β”‚ └─ keys: mf.LUEVY\n" + " β”‚ β”‚ └─ TableAlias(bs)\n" + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”‚ β”œβ”€ index: [THNTS.id]\n" + @@ -5023,32 +4879,30 @@ WHERE " β”‚ β”‚ β”œβ”€ cacheable: true\n" + " β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”œβ”€ columns: [sn.id as BDNYB, ci.FTQLQ as TOFPN, ct.M22QN as M22QN, cec.ADURZ as ADURZ, cec.NO52D as NO52D, ct.S3Q3Y as IDPK7]\n" + - " β”‚ β”‚ └─ HashJoin\n" + - " β”‚ β”‚ β”œβ”€ (cec.id = ct.OVE3E)\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ (ct.M22QN = Subquery\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cacheable: true\n" + + " β”‚ β”‚ β”‚ └─ Project\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [aac.id]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.BTXC5]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[WT, WT]}]\n" + + " β”‚ β”‚ β”‚ └─ columns: [id btxc5]\n" + + " β”‚ β”‚ β”‚ )\n" + " β”‚ β”‚ β”œβ”€ HashJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ (ci.id = ct.FZ2R5)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (sn.BRQP2 = ct.LUEVY)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ sel: (ct.M22QN = Subquery\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cacheable: true\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [aac.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.BTXC5]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[WT, WT]}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id btxc5]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ )\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cec)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: SFEGG\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id no52d adurz]\n" + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ct.ZRV3B = '=')\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(FLQLP)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.LUEVY]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.OVE3E]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cec.id\n" + " β”‚ β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”‚ β”œβ”€ left-key: (ct.FZ2R5)\n" + " β”‚ β”‚ β”‚ β”œβ”€ right-key: (ci.id)\n" + @@ -5057,13 +4911,10 @@ WHERE " β”‚ β”‚ β”‚ β”œβ”€ index: [JDLNA.FTQLQ]\n" + " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + - " β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”œβ”€ left-key: (ct.OVE3E)\n" + - " β”‚ β”‚ β”œβ”€ right-key: (cec.id)\n" + - " β”‚ β”‚ └─ TableAlias(cec)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: SFEGG\n" + - " β”‚ β”‚ └─ columns: [id no52d adurz]\n" + + " β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ └─ keys: ct.LUEVY\n" + " β”‚ └─ TableAlias(sn)\n" + " β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”œβ”€ index: [NOXN3.id]\n" + @@ -5122,7 +4973,7 @@ WHERE " β”‚ └─ LookupJoin\n" + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (sn.BRQP2 = mf.LUEVY)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (sl3s5.BDNYB = sn.id)\n" + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ SubqueryAlias\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: sl3s5\n" + @@ -5178,14 +5029,14 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.LUEVY]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [luevy m22qn]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: sn.BRQP2\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.id]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ keys: sl3s5.BDNYB\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.M22QN]\n" + - " β”‚ β”‚ β”‚ └─ keys: sl3s5.M22QN\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.M22QN]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: sl3s5.M22QN\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ β”‚ └─ keys: mf.LUEVY\n" + " β”‚ β”‚ └─ TableAlias(bs)\n" + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”‚ β”œβ”€ index: [THNTS.id]\n" + @@ -5240,32 +5091,30 @@ WHERE " β”‚ β”‚ β”œβ”€ cacheable: true\n" + " β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”œβ”€ columns: [sn.id as BDNYB, ci.FTQLQ as TOFPN, ct.M22QN as M22QN, cec.ADURZ as ADURZ, cec.NO52D as NO52D, ct.S3Q3Y as IDPK7]\n" + - " β”‚ β”‚ └─ HashJoin\n" + - " β”‚ β”‚ β”œβ”€ (cec.id = ct.OVE3E)\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ (ct.M22QN = Subquery\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cacheable: true\n" + + " β”‚ β”‚ β”‚ └─ Project\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [aac.id]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.BTXC5]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[WT, WT]}]\n" + + " β”‚ β”‚ β”‚ └─ columns: [id btxc5]\n" + + " β”‚ β”‚ β”‚ )\n" + " β”‚ β”‚ β”œβ”€ HashJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ (ci.id = ct.FZ2R5)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (sn.BRQP2 = ct.LUEVY)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ sel: (ct.M22QN = Subquery\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cacheable: true\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [aac.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.BTXC5]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[WT, WT]}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id btxc5]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ )\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cec)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: SFEGG\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id no52d adurz]\n" + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ct.ZRV3B = '=')\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(FLQLP)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.LUEVY]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.OVE3E]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cec.id\n" + " β”‚ β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”‚ β”œβ”€ left-key: (ct.FZ2R5)\n" + " β”‚ β”‚ β”‚ β”œβ”€ right-key: (ci.id)\n" + @@ -5274,13 +5123,10 @@ WHERE " β”‚ β”‚ β”‚ β”œβ”€ index: [JDLNA.FTQLQ]\n" + " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + - " β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”œβ”€ left-key: (ct.OVE3E)\n" + - " β”‚ β”‚ β”œβ”€ right-key: (cec.id)\n" + - " β”‚ β”‚ └─ TableAlias(cec)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: SFEGG\n" + - " β”‚ β”‚ └─ columns: [id no52d adurz]\n" + + " β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ └─ keys: ct.LUEVY\n" + " β”‚ └─ TableAlias(sn)\n" + " β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”œβ”€ index: [NOXN3.id]\n" + @@ -5435,7 +5281,7 @@ WHERE " β”‚ β”‚ └─ columns: [id btxc5]\n" + " β”‚ β”‚ ->TPXBU:0, sl3s5.NO52D:65!null->NO52D:0, sl3s5.IDPK7:66!null->IDPK7:0]\n" + " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [cla.id:37!null, cla.FTQLQ:38!null, cla.TUXML:39, cla.PAEF5:40, cla.RUCY4:41, cla.TPNJ6:42!null, cla.LBL53:43, cla.NB3QS:44, cla.EO7IV:45, cla.MUHJF:46, cla.FM34L:47, cla.TY5RF:48, cla.ZHTLH:49, cla.NPB7W:50, cla.SX3HH:51, cla.ISBNF:52, cla.YA7YB:53, cla.C5YKB:54, cla.QK7KT:55, cla.FFGE6:56, cla.FIIGJ:57, cla.SH3NC:58, cla.NTENA:59, cla.M4AUB:60, cla.X5AIR:61, cla.SAB6M:62, cla.G5QI5:63, cla.ZVQVD:64, cla.YKSSU:65, cla.FHCYT:66, bs.id:33!null, bs.NFRYN:34!null, bs.IXUXU:35, bs.FHCYT:36, mf.id:16!null, mf.GXLUB:17!null, mf.LUEVY:18!null, mf.M22QN:19!null, mf.TJPT7:20!null, mf.ARN5P:21!null, mf.XOSD4:22!null, mf.IDE43:23, mf.HMW4H:24, mf.ZBT6R:25, mf.FSDY2:26!null, mf.LT7K6:27, mf.SPPYD:28, mf.QCGTS:29, mf.TEUJA:30, mf.QQV4M:31, mf.FHCYT:32, sn.id:6!null, sn.BRQP2:7!null, sn.FFTBJ:8!null, sn.A7XO2:9, sn.KBO7R:10!null, sn.ECDKM:11, sn.NUMK2:12!null, sn.LETOE:13!null, sn.YKSSU:14, sn.FHCYT:15, sl3s5.BDNYB:0!null, sl3s5.TOFPN:1!null, sl3s5.M22QN:2!null, sl3s5.ADURZ:3!null, sl3s5.NO52D:4!null, sl3s5.IDPK7:5!null, cla.FTQLQ:38!null->T4IBQ:0, sl3s5.TOFPN:1!null->DL754:0, sn.id:6!null->BDNYB:0, sl3s5.ADURZ:3!null->ADURZ:0, Subquery\n" + + " β”‚ β”œβ”€ columns: [cla.id:37!null, cla.FTQLQ:38!null, cla.TUXML:39, cla.PAEF5:40, cla.RUCY4:41, cla.TPNJ6:42!null, cla.LBL53:43, cla.NB3QS:44, cla.EO7IV:45, cla.MUHJF:46, cla.FM34L:47, cla.TY5RF:48, cla.ZHTLH:49, cla.NPB7W:50, cla.SX3HH:51, cla.ISBNF:52, cla.YA7YB:53, cla.C5YKB:54, cla.QK7KT:55, cla.FFGE6:56, cla.FIIGJ:57, cla.SH3NC:58, cla.NTENA:59, cla.M4AUB:60, cla.X5AIR:61, cla.SAB6M:62, cla.G5QI5:63, cla.ZVQVD:64, cla.YKSSU:65, cla.FHCYT:66, bs.id:33!null, bs.NFRYN:34!null, bs.IXUXU:35, bs.FHCYT:36, mf.id:6!null, mf.GXLUB:7!null, mf.LUEVY:8!null, mf.M22QN:9!null, mf.TJPT7:10!null, mf.ARN5P:11!null, mf.XOSD4:12!null, mf.IDE43:13, mf.HMW4H:14, mf.ZBT6R:15, mf.FSDY2:16!null, mf.LT7K6:17, mf.SPPYD:18, mf.QCGTS:19, mf.TEUJA:20, mf.QQV4M:21, mf.FHCYT:22, sn.id:23!null, sn.BRQP2:24!null, sn.FFTBJ:25!null, sn.A7XO2:26, sn.KBO7R:27!null, sn.ECDKM:28, sn.NUMK2:29!null, sn.LETOE:30!null, sn.YKSSU:31, sn.FHCYT:32, sl3s5.BDNYB:0!null, sl3s5.TOFPN:1!null, sl3s5.M22QN:2!null, sl3s5.ADURZ:3!null, sl3s5.NO52D:4!null, sl3s5.IDPK7:5!null, cla.FTQLQ:38!null->T4IBQ:0, sl3s5.TOFPN:1!null->DL754:0, sn.id:23!null->BDNYB:0, sl3s5.ADURZ:3!null->ADURZ:0, Subquery\n" + " β”‚ β”‚ β”œβ”€ cacheable: false\n" + " β”‚ β”‚ β”œβ”€ alias-string: select aac.BTXC5 from TPXBU as aac where aac.id = SL3S5.M22QN\n" + " β”‚ β”‚ └─ Project\n" + @@ -5458,8 +5304,8 @@ WHERE " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ sn.BRQP2:7!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ mf.LUEVY:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ sl3s5.BDNYB:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ sn.id:23!null\n" + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ SubqueryAlias\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: sl3s5\n" + @@ -5537,28 +5383,28 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: SFEGG\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id no52d adurz]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [sl3s5.BDNYB:0!null]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (52-61)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.M22QN]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [sl3s5.M22QN:2!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (35-51)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.M22QN]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ keys: [sl3s5.M22QN:2!null]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (35-51)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id gxlub luevy m22qn tjpt7 arn5p xosd4 ide43 hmw4h zbt6r fsdy2 lt7k6 sppyd qcgts teuja qqv4m fhcyt]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [mf.LUEVY:8!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (52-61)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + - " β”‚ β”‚ β”‚ └─ columns: [id gxlub luevy m22qn tjpt7 arn5p xosd4 ide43 hmw4h zbt6r fsdy2 lt7k6 sppyd qcgts teuja qqv4m fhcyt]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + + " β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + " β”‚ β”‚ └─ TableAlias(bs)\n" + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”‚ β”œβ”€ index: [THNTS.id]\n" + - " β”‚ β”‚ β”œβ”€ keys: [mf.GXLUB:17!null]\n" + + " β”‚ β”‚ β”œβ”€ keys: [mf.GXLUB:7!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (31-34)\n" + " β”‚ β”‚ β”œβ”€ tableId: 2\n" + " β”‚ β”‚ └─ Table\n" + @@ -5638,59 +5484,50 @@ WHERE " β”‚ β”‚ β”œβ”€ colSet: (192-197)\n" + " β”‚ β”‚ β”œβ”€ tableId: 19\n" + " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [sn.id:0!null->BDNYB:0, ci.FTQLQ:23!null->TOFPN:0, ct.M22QN:13!null->M22QN:0, cec.ADURZ:26!null->ADURZ:0, cec.NO52D:25!null->NO52D:0, ct.S3Q3Y:19!null->IDPK7:0]\n" + - " β”‚ β”‚ └─ HashJoin\n" + + " β”‚ β”‚ β”œβ”€ columns: [sn.id:17!null->BDNYB:0, ci.FTQLQ:16!null->TOFPN:0, ct.M22QN:6!null->M22QN:0, cec.ADURZ:2!null->ADURZ:0, cec.NO52D:1!null->NO52D:0, ct.S3Q3Y:12!null->IDPK7:0]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cec.id:24!null\n" + - " β”‚ β”‚ β”‚ └─ ct.OVE3E:14!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ct.M22QN:6!null\n" + + " β”‚ β”‚ β”‚ └─ Subquery\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cacheable: true\n" + + " β”‚ β”‚ β”‚ β”œβ”€ alias-string: select aac.id from TPXBU as aac where BTXC5 = 'WT'\n" + + " β”‚ β”‚ β”‚ └─ Project\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [aac.id:27!null]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.BTXC5]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ static: [{[WT, WT]}]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (172-174)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 16\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: TPXBU\n" + + " β”‚ β”‚ β”‚ └─ columns: [id btxc5]\n" + " β”‚ β”‚ β”œβ”€ HashJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.id:22!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ct.FZ2R5:11!null\n" + - " β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ sn.BRQP2:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ct.LUEVY:12!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ sel: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.M22QN:13!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Subquery\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cacheable: true\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ alias-string: select aac.id from TPXBU as aac where BTXC5 = 'WT'\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [aac.id:22!null]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.BTXC5]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[WT, WT]}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (172-174)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 16\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: TPXBU\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id btxc5]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (150-159)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 14\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ci.id:15!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ct.FZ2R5:4!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cec)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: SFEGG\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id no52d adurz]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (180-185)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 18\n" + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ct.ZRV3B:10!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ = (longtext)\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(FLQLP)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.LUEVY]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.OVE3E]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cec.id:0!null]\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (160-171)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 15\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: FLQLP\n" + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id fz2r5 luevy m22qn ove3e nrurt oca7e xmm6q v5dpx s3q3y zrv3b fhcyt]\n" + " β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(ct.FZ2R5:11!null)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(ct.FZ2R5:4!null)\n" + " β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(ci.id:0!null)\n" + " β”‚ β”‚ β”‚ └─ TableAlias(ci)\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(JDLNA)\n" + @@ -5701,15 +5538,15 @@ WHERE " β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”œβ”€ name: JDLNA\n" + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + - " β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”œβ”€ left-key: TUPLE(ct.OVE3E:14!null)\n" + - " β”‚ β”‚ β”œβ”€ right-key: TUPLE(cec.id:0!null)\n" + - " β”‚ β”‚ └─ TableAlias(cec)\n" + + " β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ct.LUEVY:5!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (150-159)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 14\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: SFEGG\n" + - " β”‚ β”‚ β”œβ”€ columns: [id no52d adurz]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (180-185)\n" + - " β”‚ β”‚ └─ tableId: 18\n" + + " β”‚ β”‚ β”œβ”€ name: NOXN3\n" + + " β”‚ β”‚ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + " β”‚ └─ TableAlias(sn)\n" + " β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”œβ”€ index: [NOXN3.id]\n" + @@ -5775,7 +5612,7 @@ WHERE " β”‚ └─ LookupJoin\n" + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (sn.BRQP2 = mf.LUEVY)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (sl3s5.BDNYB = sn.id)\n" + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ SubqueryAlias\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: sl3s5\n" + @@ -5825,14 +5662,14 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SFEGG.id]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id no52d adurz]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ct.OVE3E\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.id]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ keys: sl3s5.BDNYB\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.M22QN]\n" + - " β”‚ β”‚ β”‚ └─ keys: sl3s5.M22QN\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.M22QN]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: sl3s5.M22QN\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ β”‚ └─ keys: mf.LUEVY\n" + " β”‚ β”‚ └─ TableAlias(bs)\n" + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”‚ β”œβ”€ index: [THNTS.id]\n" + @@ -5887,32 +5724,30 @@ WHERE " β”‚ β”‚ β”œβ”€ cacheable: true\n" + " β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”œβ”€ columns: [sn.id as BDNYB, ci.FTQLQ as TOFPN, ct.M22QN as M22QN, cec.ADURZ as ADURZ, cec.NO52D as NO52D, ct.S3Q3Y as IDPK7]\n" + - " β”‚ β”‚ └─ HashJoin\n" + - " β”‚ β”‚ β”œβ”€ (cec.id = ct.OVE3E)\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ (ct.M22QN = Subquery\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cacheable: true\n" + + " β”‚ β”‚ β”‚ └─ Project\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [aac.id]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.BTXC5]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[WT, WT]}]\n" + + " β”‚ β”‚ β”‚ └─ columns: [id btxc5]\n" + + " β”‚ β”‚ β”‚ )\n" + " β”‚ β”‚ β”œβ”€ HashJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ (ci.id = ct.FZ2R5)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (sn.BRQP2 = ct.LUEVY)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ sel: (ct.M22QN = Subquery\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cacheable: true\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [aac.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.BTXC5]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[WT, WT]}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id btxc5]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ )\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cec)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: SFEGG\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id no52d adurz]\n" + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ct.ZRV3B = '=')\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(FLQLP)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.LUEVY]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.OVE3E]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cec.id\n" + " β”‚ β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”‚ β”œβ”€ left-key: (ct.FZ2R5)\n" + " β”‚ β”‚ β”‚ β”œβ”€ right-key: (ci.id)\n" + @@ -5921,13 +5756,10 @@ WHERE " β”‚ β”‚ β”‚ β”œβ”€ index: [JDLNA.FTQLQ]\n" + " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + - " β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”œβ”€ left-key: (ct.OVE3E)\n" + - " β”‚ β”‚ β”œβ”€ right-key: (cec.id)\n" + - " β”‚ β”‚ └─ TableAlias(cec)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: SFEGG\n" + - " β”‚ β”‚ └─ columns: [id no52d adurz]\n" + + " β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ └─ keys: ct.LUEVY\n" + " β”‚ └─ TableAlias(sn)\n" + " β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”œβ”€ index: [NOXN3.id]\n" + @@ -5986,7 +5818,7 @@ WHERE " β”‚ └─ LookupJoin\n" + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (sn.BRQP2 = mf.LUEVY)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ (sl3s5.BDNYB = sn.id)\n" + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ SubqueryAlias\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: sl3s5\n" + @@ -6036,14 +5868,14 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SFEGG.id]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id no52d adurz]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ct.OVE3E\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.id]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ keys: sl3s5.BDNYB\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.M22QN]\n" + - " β”‚ β”‚ β”‚ └─ keys: sl3s5.M22QN\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.M22QN]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: sl3s5.M22QN\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ β”‚ └─ keys: mf.LUEVY\n" + " β”‚ β”‚ └─ TableAlias(bs)\n" + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”‚ β”œβ”€ index: [THNTS.id]\n" + @@ -6098,32 +5930,30 @@ WHERE " β”‚ β”‚ β”œβ”€ cacheable: true\n" + " β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”œβ”€ columns: [sn.id as BDNYB, ci.FTQLQ as TOFPN, ct.M22QN as M22QN, cec.ADURZ as ADURZ, cec.NO52D as NO52D, ct.S3Q3Y as IDPK7]\n" + - " β”‚ β”‚ └─ HashJoin\n" + - " β”‚ β”‚ β”œβ”€ (cec.id = ct.OVE3E)\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ (ct.M22QN = Subquery\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cacheable: true\n" + + " β”‚ β”‚ β”‚ └─ Project\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [aac.id]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.BTXC5]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[WT, WT]}]\n" + + " β”‚ β”‚ β”‚ └─ columns: [id btxc5]\n" + + " β”‚ β”‚ β”‚ )\n" + " β”‚ β”‚ β”œβ”€ HashJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ (ci.id = ct.FZ2R5)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (sn.BRQP2 = ct.LUEVY)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ sel: (ct.M22QN = Subquery\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cacheable: true\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [aac.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.BTXC5]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[WT, WT]}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id btxc5]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ )\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cec)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: SFEGG\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id no52d adurz]\n" + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (ct.ZRV3B = '=')\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ct)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(FLQLP)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.LUEVY]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [FLQLP.OVE3E]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cec.id\n" + " β”‚ β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”‚ β”œβ”€ left-key: (ct.FZ2R5)\n" + " β”‚ β”‚ β”‚ β”œβ”€ right-key: (ci.id)\n" + @@ -6132,13 +5962,10 @@ WHERE " β”‚ β”‚ β”‚ β”œβ”€ index: [JDLNA.FTQLQ]\n" + " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + - " β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”œβ”€ left-key: (ct.OVE3E)\n" + - " β”‚ β”‚ β”œβ”€ right-key: (cec.id)\n" + - " β”‚ β”‚ └─ TableAlias(cec)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: SFEGG\n" + - " β”‚ β”‚ └─ columns: [id no52d adurz]\n" + + " β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ └─ keys: ct.LUEVY\n" + " β”‚ └─ TableAlias(sn)\n" + " β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”œβ”€ index: [NOXN3.id]\n" + @@ -6456,45 +6283,39 @@ WHERE " β”œβ”€ columns: [row_number() over ( order by sn.id asc):0!null, s7egw.TW55N:1!null, tymvl.TW55N:2!null, sn.NUMK2:3!null, sn.LETOE:4!null, sn.id:5!null, (row_number() over ( order by sn.id asc):0!null - 1 (tinyint))->M6T2N:0, s7egw.TW55N:1!null->FJVD7:0, tymvl.TW55N:2!null->KBXXJ:0, sn.id:5!null->XLFIA:0]\n" + " └─ Window\n" + " β”œβ”€ row_number() over ( order by sn.id ASC)\n" + - " β”œβ”€ s7egw.TW55N:6!null\n" + + " β”œβ”€ s7egw.TW55N:1!null\n" + " β”œβ”€ tymvl.TW55N:8!null\n" + - " β”œβ”€ sn.NUMK2:3!null\n" + - " β”œβ”€ sn.LETOE:4!null\n" + - " β”œβ”€ sn.id:0!null\n" + + " β”œβ”€ sn.NUMK2:5!null\n" + + " β”œβ”€ sn.LETOE:6!null\n" + + " β”œβ”€ sn.id:2!null\n" + " └─ HashJoin\n" + " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ sn.FFTBJ:2!null\n" + + " β”‚ β”œβ”€ sn.FFTBJ:4!null\n" + " β”‚ └─ tymvl.id:7!null\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ sn.BRQP2:1!null\n" + - " β”‚ β”‚ └─ s7egw.id:5!null\n" + - " β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (1-10)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(s7egw)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: NOXN3\n" + - " β”‚ β”‚ └─ columns: [id brqp2 fftbj numk2 letoe]\n" + - " β”‚ └─ TableAlias(s7egw)\n" + - " β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (11-27)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ └─ TableAlias(sn)\n" + + " β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”œβ”€ keys: [s7egw.id:0!null]\n" + + " β”‚ β”œβ”€ colSet: (1-10)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: E2I7U\n" + - " β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”œβ”€ name: NOXN3\n" + + " β”‚ └─ columns: [id brqp2 fftbj numk2 letoe]\n" + " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(sn.FFTBJ:2!null)\n" + + " β”œβ”€ left-key: TUPLE(sn.FFTBJ:4!null)\n" + " β”œβ”€ right-key: TUPLE(tymvl.id:0!null)\n" + " └─ TableAlias(tymvl)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: E2I7U\n" + - " └─ columns: [id tw55n]\n" + + " └─ Table\n" + + " β”œβ”€ name: E2I7U\n" + + " β”œβ”€ columns: [id tw55n]\n" + + " β”œβ”€ colSet: (28-44)\n" + + " └─ tableId: 3\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [(row_number() over ( order by sn.id asc) - 1) as M6T2N, s7egw.TW55N as FJVD7, tymvl.TW55N as KBXXJ, sn.NUMK2, sn.LETOE, sn.id as XLFIA]\n" + @@ -6504,18 +6325,16 @@ WHERE " └─ Window(row_number() over ( order by sn.id ASC), s7egw.TW55N, tymvl.TW55N, sn.NUMK2, sn.LETOE, sn.id)\n" + " └─ HashJoin\n" + " β”œβ”€ (sn.FFTBJ = tymvl.id)\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (sn.BRQP2 = s7egw.id)\n" + - " β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id brqp2 fftbj numk2 letoe]\n" + - " β”‚ └─ TableAlias(s7egw)\n" + - " β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id tw55n]\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(s7egw)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ └─ TableAlias(sn)\n" + + " β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”œβ”€ columns: [id brqp2 fftbj numk2 letoe]\n" + + " β”‚ └─ keys: s7egw.id\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (sn.FFTBJ)\n" + " β”œβ”€ right-key: (tymvl.id)\n" + @@ -6532,18 +6351,16 @@ WHERE " └─ Window(row_number() over ( order by sn.id ASC), s7egw.TW55N, tymvl.TW55N, sn.NUMK2, sn.LETOE, sn.id)\n" + " └─ HashJoin\n" + " β”œβ”€ (sn.FFTBJ = tymvl.id)\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (sn.BRQP2 = s7egw.id)\n" + - " β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id brqp2 fftbj numk2 letoe]\n" + - " β”‚ └─ TableAlias(s7egw)\n" + - " β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id tw55n]\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(s7egw)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ └─ TableAlias(sn)\n" + + " β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”œβ”€ columns: [id brqp2 fftbj numk2 letoe]\n" + + " β”‚ └─ keys: s7egw.id\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (sn.FFTBJ)\n" + " β”œβ”€ right-key: (tymvl.id)\n" + @@ -6839,27 +6656,20 @@ WHERE " β”‚ β”œβ”€ tableId: 3\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [bs.id:2!null->B2TX3:0, cla.FTQLQ:1!null->T4IBQ:0]\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ cla.id:0!null\n" + - " β”‚ β”‚ └─ bs.IXUXU:3\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:1!null\n" + - " β”‚ β”‚ β”‚ └─ TUPLE(SQ1 (longtext))\n" + - " β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (1-30)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”œβ”€ static: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (1-30)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ └─ columns: [id ftqlq]\n" + " β”‚ └─ TableAlias(bs)\n" + " β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”œβ”€ keys: [cla.id:0!null]\n" + " β”‚ β”œβ”€ colSet: (31-34)\n" + " β”‚ β”œβ”€ tableId: 2\n" + " β”‚ └─ Table\n" + @@ -6924,20 +6734,17 @@ WHERE " β”‚ β”œβ”€ cacheable: true\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [bs.id as B2TX3, cla.FTQLQ as T4IBQ]\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (cla.id = bs.IXUXU)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ └─ columns: [id ftqlq]\n" + " β”‚ └─ TableAlias(bs)\n" + " β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id ixuxu]\n" + + " β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ └─ keys: cla.id\n" + " └─ TableAlias(fc)\n" + " └─ IndexedTableAccess(AMYXQ)\n" + " β”œβ”€ index: [AMYXQ.GXLUB,AMYXQ.LUEVY]\n" + @@ -6993,20 +6800,17 @@ WHERE " β”‚ β”œβ”€ cacheable: true\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [bs.id as B2TX3, cla.FTQLQ as T4IBQ]\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (cla.id = bs.IXUXU)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ └─ columns: [id ftqlq]\n" + " β”‚ └─ TableAlias(bs)\n" + " β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id ixuxu]\n" + + " β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ └─ keys: cla.id\n" + " └─ TableAlias(fc)\n" + " └─ IndexedTableAccess(AMYXQ)\n" + " β”œβ”€ index: [AMYXQ.GXLUB,AMYXQ.LUEVY]\n" + @@ -7169,15 +6973,12 @@ WHERE " β”œβ”€ colSet: (201-207)\n" + " β”œβ”€ tableId: 23\n" + " └─ Project\n" + - " β”œβ”€ columns: [bs.T4IBQ:1!null->T4IBQ:0, pa.DZLIM:6!null->ECUWU:0, pga.DZLIM:12!null->GSTQA:0, pog.B5OUF:10, fc.OZTQF:20!null, f26zw.YHYLK:24, nd.TW55N:16!null->TW55N:0]\n" + + " β”œβ”€ columns: [bs.T4IBQ:1!null->T4IBQ:0, pa.DZLIM:3!null->ECUWU:0, pga.DZLIM:12!null->GSTQA:0, pog.B5OUF:10, fc.OZTQF:20!null, f26zw.YHYLK:24, nd.TW55N:16!null->TW55N:0]\n" + " └─ Filter\n" + " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ms.D237E:4!null\n" + + " β”‚ β”œβ”€ ms.D237E:6!null\n" + " β”‚ └─ 1 (int)\n" + - " └─ LeftOuterHashJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ nd.HPCMS:17!null\n" + - " β”‚ └─ nma.id:25!null\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ LeftOuterHashJoin\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + @@ -7189,7 +6990,7 @@ WHERE " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ms.GXLUB:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ms.GXLUB:4!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ bs.id:0!null\n" + " β”‚ β”‚ β”‚ β”œβ”€ SubqueryAlias\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: bs\n" + @@ -7203,30 +7004,24 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ T4IBQ:1!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(SQ1 (longtext))\n" + " β”‚ β”‚ β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [thnts.id:0!null, yk2gw.FTQLQ:3!null->T4IBQ:0]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ thnts.IXUXU:1\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ yk2gw.id:2!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (39-42)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 7\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (43-72)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [thnts.id:2!null, yk2gw.FTQLQ:1!null->T4IBQ:0]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (43-72)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 8\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [yk2gw.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (39-42)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 7\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + " β”‚ β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(bs.id:0!null)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(ms.GXLUB:0!null)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(ms.GXLUB:2!null)\n" + " β”‚ β”‚ β”‚ └─ LookupJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashJoin\n" + @@ -7234,32 +7029,26 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ pog.XVSBH:9\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ pga.id:11!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ms.CH3FR:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ pa.id:5!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ms)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(SZQWJ)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SZQWJ.CH3FR]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-5)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: SZQWJ\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [gxlub ch3fr d237e]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(pa)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(XOAOP)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [XOAOP.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (6-8)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(pa)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: XOAOP\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id dzlim]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (6-8)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ms)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(SZQWJ)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SZQWJ.CH3FR]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [pa.id:2!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-5)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: XOAOP\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id dzlim]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: SZQWJ\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [gxlub ch3fr d237e]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(pog)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NPCYY)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NPCYY.CH3FR]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [pa.id:5!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NPCYY.CH3FR,NPCYY.XVSBH]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [pa.id:2!null]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (9-12)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + @@ -7382,10 +7171,7 @@ WHERE " β”‚ β”‚ β”œβ”€ iq.IDWIO:4!null\n" + " β”‚ β”‚ └─ TSG (longtext)\n" + " β”‚ β”‚ THEN 0 (tinyint) ELSE NULL (null) END->YHYLK:0]\n" + - " β”‚ └─ LeftOuterHashJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ w2mao.YH4XB:6!null\n" + - " β”‚ β”‚ └─ vc.id:7!null\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ SubqueryAlias\n" + " β”‚ β”‚ β”‚ β”œβ”€ name: iq\n" + @@ -7400,27 +7186,20 @@ WHERE " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mf.GXLUB:5!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ bs.id:2!null\n" + - " β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cla.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ bs.IXUXU:3\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(SQ1 (longtext))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (105-134)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 13\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (105-134)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 13\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(bs)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cla.id:0!null]\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (101-104)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 12\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + @@ -7487,24 +7266,24 @@ WHERE " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: SEQS3\n" + " β”‚ β”‚ └─ columns: [z7cp5 yh4xb]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: TUPLE(w2mao.YH4XB:6!null)\n" + - " β”‚ β”œβ”€ right-key: TUPLE(vc.id:0!null)\n" + - " β”‚ └─ TableAlias(vc)\n" + + " β”‚ └─ TableAlias(vc)\n" + + " β”‚ └─ IndexedTableAccess(D34QP)\n" + + " β”‚ β”œβ”€ index: [D34QP.id]\n" + + " β”‚ β”œβ”€ keys: [w2mao.YH4XB:6!null]\n" + + " β”‚ β”œβ”€ colSet: (176-181)\n" + + " β”‚ β”œβ”€ tableId: 19\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: D34QP\n" + - " β”‚ β”œβ”€ columns: [id znp4p]\n" + - " β”‚ β”œβ”€ colSet: (176-181)\n" + - " β”‚ └─ tableId: 19\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(nd.HPCMS:17!null)\n" + - " β”œβ”€ right-key: TUPLE(nma.id:0!null)\n" + - " └─ TableAlias(nma)\n" + + " β”‚ └─ columns: [id znp4p]\n" + + " └─ TableAlias(nma)\n" + + " └─ IndexedTableAccess(TNMXI)\n" + + " β”œβ”€ index: [TNMXI.id]\n" + + " β”œβ”€ keys: [nd.HPCMS:17!null]\n" + + " β”œβ”€ colSet: (187-189)\n" + + " β”œβ”€ tableId: 21\n" + " └─ Table\n" + " β”œβ”€ name: TNMXI\n" + - " β”œβ”€ columns: [id]\n" + - " β”œβ”€ colSet: (187-189)\n" + - " └─ tableId: 21\n" + + " └─ columns: [id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [xprw6.T4IBQ as T4IBQ, xprw6.ECUWU as ECUWU, sum(xprw6.b5ouf) as B5OUF, sum(xprw6.sp4si) as SP4SI]\n" + @@ -7538,8 +7317,7 @@ WHERE " β”œβ”€ columns: [bs.T4IBQ as T4IBQ, pa.DZLIM as ECUWU, pga.DZLIM as GSTQA, pog.B5OUF, fc.OZTQF, f26zw.YHYLK, nd.TW55N as TW55N]\n" + " └─ Filter\n" + " β”œβ”€ (ms.D237E = 1)\n" + - " └─ LeftOuterHashJoin\n" + - " β”œβ”€ (nd.HPCMS = nma.id)\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ LeftOuterHashJoin\n" + " β”‚ β”œβ”€ ((f26zw.T4IBQ = bs.T4IBQ) AND (f26zw.BRQP2 = nd.id))\n" + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + @@ -7554,16 +7332,14 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (T4IBQ HASH IN ('SQ1'))\n" + " β”‚ β”‚ β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [thnts.id, yk2gw.FTQLQ as T4IBQ]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (thnts.IXUXU = yk2gw.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: yk2gw.id\n" + " β”‚ β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”‚ β”œβ”€ left-key: (bs.id)\n" + " β”‚ β”‚ β”‚ β”œβ”€ right-key: (ms.GXLUB)\n" + @@ -7572,21 +7348,19 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (pog.XVSBH = pga.id)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (ms.CH3FR = pa.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ms)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(SZQWJ)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SZQWJ.CH3FR]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [gxlub ch3fr d237e]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(pa)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(XOAOP)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [XOAOP.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id dzlim]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(pa)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: XOAOP\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id dzlim]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ms)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(SZQWJ)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SZQWJ.CH3FR]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [gxlub ch3fr d237e]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: pa.id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(pog)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NPCYY)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NPCYY.CH3FR]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NPCYY.CH3FR,NPCYY.XVSBH]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id ch3fr xvsbh b5ouf]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: pa.id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + @@ -7621,8 +7395,7 @@ WHERE " β”‚ β”œβ”€ cacheable: true\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [iq.T4IBQ, iq.BRQP2, iq.Z7CP5, CASE WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (vc.ZNP4P = 'L5Q44')) AND (iq.IDWIO = 'KAOAS')) THEN 0 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (vc.ZNP4P = 'L5Q44')) AND (iq.IDWIO = 'OG')) THEN 0 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (vc.ZNP4P = 'L5Q44')) AND (iq.IDWIO = 'TSG')) THEN 0 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (NOT((vc.ZNP4P = 'L5Q44')))) AND (iq.IDWIO = 'W6W24')) THEN 1 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (NOT((vc.ZNP4P = 'L5Q44')))) AND (iq.IDWIO = 'OG')) THEN 1 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (NOT((vc.ZNP4P = 'L5Q44')))) AND (iq.IDWIO = 'TSG')) THEN 0 ELSE NULL END as YHYLK]\n" + - " β”‚ └─ LeftOuterHashJoin\n" + - " β”‚ β”œβ”€ (w2mao.YH4XB = vc.id)\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ SubqueryAlias\n" + " β”‚ β”‚ β”‚ β”œβ”€ name: iq\n" + @@ -7633,20 +7406,17 @@ WHERE " β”‚ β”‚ β”‚ β”œβ”€ columns: [cla.FTQLQ as T4IBQ, sn.BRQP2, mf.id as Z7CP5, mf.FSDY2, nma.DZLIM as IDWIO]\n" + " β”‚ β”‚ β”‚ └─ HashJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ (mf.GXLUB = bs.id)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (cla.id = bs.IXUXU)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(bs)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cla.id\n" + " β”‚ β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”‚ β”œβ”€ left-key: (bs.id)\n" + " β”‚ β”‚ β”‚ β”œβ”€ right-key: (mf.GXLUB)\n" + @@ -7682,20 +7452,16 @@ WHERE " β”‚ β”‚ β”œβ”€ index: [SEQS3.Z7CP5]\n" + " β”‚ β”‚ β”œβ”€ columns: [z7cp5 yh4xb]\n" + " β”‚ β”‚ └─ keys: iq.Z7CP5\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (w2mao.YH4XB)\n" + - " β”‚ β”œβ”€ right-key: (vc.id)\n" + - " β”‚ └─ TableAlias(vc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: D34QP\n" + - " β”‚ └─ columns: [id znp4p]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (nd.HPCMS)\n" + - " β”œβ”€ right-key: (nma.id)\n" + - " └─ TableAlias(nma)\n" + - " └─ Table\n" + - " β”œβ”€ name: TNMXI\n" + - " └─ columns: [id]\n" + + " β”‚ └─ TableAlias(vc)\n" + + " β”‚ └─ IndexedTableAccess(D34QP)\n" + + " β”‚ β”œβ”€ index: [D34QP.id]\n" + + " β”‚ β”œβ”€ columns: [id znp4p]\n" + + " β”‚ └─ keys: w2mao.YH4XB\n" + + " └─ TableAlias(nma)\n" + + " └─ IndexedTableAccess(TNMXI)\n" + + " β”œβ”€ index: [TNMXI.id]\n" + + " β”œβ”€ columns: [id]\n" + + " └─ keys: nd.HPCMS\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [xprw6.T4IBQ as T4IBQ, xprw6.ECUWU as ECUWU, sum(xprw6.b5ouf) as B5OUF, sum(xprw6.sp4si) as SP4SI]\n" + @@ -7729,8 +7495,7 @@ WHERE " β”œβ”€ columns: [bs.T4IBQ as T4IBQ, pa.DZLIM as ECUWU, pga.DZLIM as GSTQA, pog.B5OUF, fc.OZTQF, f26zw.YHYLK, nd.TW55N as TW55N]\n" + " └─ Filter\n" + " β”œβ”€ (ms.D237E = 1)\n" + - " └─ LeftOuterHashJoin\n" + - " β”œβ”€ (nd.HPCMS = nma.id)\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ LeftOuterHashJoin\n" + " β”‚ β”œβ”€ ((f26zw.T4IBQ = bs.T4IBQ) AND (f26zw.BRQP2 = nd.id))\n" + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + @@ -7745,16 +7510,14 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (T4IBQ HASH IN ('SQ1'))\n" + " β”‚ β”‚ β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [thnts.id, yk2gw.FTQLQ as T4IBQ]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (thnts.IXUXU = yk2gw.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: yk2gw.id\n" + " β”‚ β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”‚ β”œβ”€ left-key: (bs.id)\n" + " β”‚ β”‚ β”‚ β”œβ”€ right-key: (ms.GXLUB)\n" + @@ -7763,21 +7526,19 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (pog.XVSBH = pga.id)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (ms.CH3FR = pa.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ms)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(SZQWJ)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SZQWJ.CH3FR]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [gxlub ch3fr d237e]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(pa)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(XOAOP)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [XOAOP.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id dzlim]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(pa)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: XOAOP\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id dzlim]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ms)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(SZQWJ)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SZQWJ.CH3FR]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [gxlub ch3fr d237e]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: pa.id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(pog)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NPCYY)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NPCYY.CH3FR]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NPCYY.CH3FR,NPCYY.XVSBH]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id ch3fr xvsbh b5ouf]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: pa.id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + @@ -7812,8 +7573,7 @@ WHERE " β”‚ β”œβ”€ cacheable: true\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [iq.T4IBQ, iq.BRQP2, iq.Z7CP5, CASE WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (vc.ZNP4P = 'L5Q44')) AND (iq.IDWIO = 'KAOAS')) THEN 0 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (vc.ZNP4P = 'L5Q44')) AND (iq.IDWIO = 'OG')) THEN 0 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (vc.ZNP4P = 'L5Q44')) AND (iq.IDWIO = 'TSG')) THEN 0 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (NOT((vc.ZNP4P = 'L5Q44')))) AND (iq.IDWIO = 'W6W24')) THEN 1 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (NOT((vc.ZNP4P = 'L5Q44')))) AND (iq.IDWIO = 'OG')) THEN 1 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (NOT((vc.ZNP4P = 'L5Q44')))) AND (iq.IDWIO = 'TSG')) THEN 0 ELSE NULL END as YHYLK]\n" + - " β”‚ └─ LeftOuterHashJoin\n" + - " β”‚ β”œβ”€ (w2mao.YH4XB = vc.id)\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ SubqueryAlias\n" + " β”‚ β”‚ β”‚ β”œβ”€ name: iq\n" + @@ -7824,20 +7584,17 @@ WHERE " β”‚ β”‚ β”‚ β”œβ”€ columns: [cla.FTQLQ as T4IBQ, sn.BRQP2, mf.id as Z7CP5, mf.FSDY2, nma.DZLIM as IDWIO]\n" + " β”‚ β”‚ β”‚ └─ HashJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ (mf.GXLUB = bs.id)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (cla.id = bs.IXUXU)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(bs)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cla.id\n" + " β”‚ β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”‚ β”œβ”€ left-key: (bs.id)\n" + " β”‚ β”‚ β”‚ β”œβ”€ right-key: (mf.GXLUB)\n" + @@ -7873,20 +7630,16 @@ WHERE " β”‚ β”‚ β”œβ”€ index: [SEQS3.Z7CP5]\n" + " β”‚ β”‚ β”œβ”€ columns: [z7cp5 yh4xb]\n" + " β”‚ β”‚ └─ keys: iq.Z7CP5\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (w2mao.YH4XB)\n" + - " β”‚ β”œβ”€ right-key: (vc.id)\n" + - " β”‚ └─ TableAlias(vc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: D34QP\n" + - " β”‚ └─ columns: [id znp4p]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (nd.HPCMS)\n" + - " β”œβ”€ right-key: (nma.id)\n" + - " └─ TableAlias(nma)\n" + - " └─ Table\n" + - " β”œβ”€ name: TNMXI\n" + - " └─ columns: [id]\n" + + " β”‚ └─ TableAlias(vc)\n" + + " β”‚ └─ IndexedTableAccess(D34QP)\n" + + " β”‚ β”œβ”€ index: [D34QP.id]\n" + + " β”‚ β”œβ”€ columns: [id znp4p]\n" + + " β”‚ └─ keys: w2mao.YH4XB\n" + + " └─ TableAlias(nma)\n" + + " └─ IndexedTableAccess(TNMXI)\n" + + " β”œβ”€ index: [TNMXI.id]\n" + + " β”œβ”€ columns: [id]\n" + + " └─ keys: nd.HPCMS\n" + "", }, { @@ -8044,15 +7797,12 @@ WHERE " β”œβ”€ colSet: (201-207)\n" + " β”œβ”€ tableId: 23\n" + " └─ Project\n" + - " β”œβ”€ columns: [bs.T4IBQ:1!null->T4IBQ:0, pa.DZLIM:6!null->ECUWU:0, pga.DZLIM:12!null->GSTQA:0, pog.B5OUF:10, fc.OZTQF:20!null, f26zw.YHYLK:24, nd.TW55N:16!null->TW55N:0]\n" + + " β”œβ”€ columns: [bs.T4IBQ:1!null->T4IBQ:0, pa.DZLIM:3!null->ECUWU:0, pga.DZLIM:12!null->GSTQA:0, pog.B5OUF:10, fc.OZTQF:20!null, f26zw.YHYLK:24, nd.TW55N:16!null->TW55N:0]\n" + " └─ Filter\n" + " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ms.D237E:4!null\n" + + " β”‚ β”œβ”€ ms.D237E:6!null\n" + " β”‚ └─ 1 (int)\n" + - " └─ LeftOuterHashJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ nd.HPCMS:17!null\n" + - " β”‚ └─ nma.id:25!null\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ LeftOuterHashJoin\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + @@ -8064,7 +7814,7 @@ WHERE " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ms.GXLUB:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ms.GXLUB:4!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ bs.id:0!null\n" + " β”‚ β”‚ β”‚ β”œβ”€ SubqueryAlias\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: bs\n" + @@ -8078,30 +7828,24 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ T4IBQ:1!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(SQ1 (longtext))\n" + " β”‚ β”‚ β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [thnts.id:0!null, yk2gw.FTQLQ:3!null->T4IBQ:0]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ thnts.IXUXU:1\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ yk2gw.id:2!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (39-42)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 7\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (43-72)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 8\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [thnts.id:2!null, yk2gw.FTQLQ:1!null->T4IBQ:0]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (43-72)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 8\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [yk2gw.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (39-42)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 7\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + " β”‚ β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(bs.id:0!null)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(ms.GXLUB:0!null)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(ms.GXLUB:2!null)\n" + " β”‚ β”‚ β”‚ └─ LookupJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashJoin\n" + @@ -8109,32 +7853,26 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ pog.XVSBH:9\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ pga.id:11!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ms.CH3FR:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ pa.id:5!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ms)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(SZQWJ)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SZQWJ.CH3FR]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-5)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: SZQWJ\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [gxlub ch3fr d237e]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(pa)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(XOAOP)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [XOAOP.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (6-8)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(pa)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: XOAOP\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id dzlim]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (6-8)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 2\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ms)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(SZQWJ)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SZQWJ.CH3FR]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [pa.id:2!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-5)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: XOAOP\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id dzlim]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: SZQWJ\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [gxlub ch3fr d237e]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(pog)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NPCYY)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NPCYY.CH3FR]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [pa.id:5!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NPCYY.CH3FR,NPCYY.XVSBH]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [pa.id:2!null]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (9-12)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + @@ -8257,10 +7995,7 @@ WHERE " β”‚ β”‚ β”œβ”€ iq.IDWIO:4!null\n" + " β”‚ β”‚ └─ TSG (longtext)\n" + " β”‚ β”‚ THEN 0 (tinyint) ELSE NULL (null) END->YHYLK:0]\n" + - " β”‚ └─ LeftOuterHashJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ w2mao.YH4XB:6!null\n" + - " β”‚ β”‚ └─ vc.id:7!null\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ SubqueryAlias\n" + " β”‚ β”‚ β”‚ β”œβ”€ name: iq\n" + @@ -8270,54 +8005,45 @@ WHERE " β”‚ β”‚ β”‚ β”œβ”€ colSet: (168-172)\n" + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 17\n" + " β”‚ β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”‚ β”œβ”€ columns: [cla.FTQLQ:12!null->T4IBQ:0, sn.BRQP2:0!null, mf.id:5!null->Z7CP5:0, mf.FSDY2:8!null, nma.DZLIM:4!null->IDWIO:0]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [cla.FTQLQ:10!null->T4IBQ:0, sn.BRQP2:4!null, mf.id:5!null->Z7CP5:0, mf.FSDY2:8!null, nma.DZLIM:1!null->IDWIO:0]\n" + " β”‚ β”‚ β”‚ └─ HashJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mf.GXLUB:6!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ bs.id:9!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ bs.id:11!null\n" + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mf.LUEVY:7!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ sn.BRQP2:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ sn.BRQP2:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ nd.id:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [brqp2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (155-164)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 16\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(sn.BRQP2:0!null)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(nd.id:0!null)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ nd.HPCMS:2!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ nma.id:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(nd)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.HPCMS]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (135-151)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 14\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: E2I7U\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id hpcms]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nma)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TNMXI)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TNMXI.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (152-154)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 15\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: TNMXI\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id dzlim]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ sn.BRQP2:4!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(nma)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: TNMXI\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id dzlim]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (152-154)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 15\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nd)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.HPCMS]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [nma.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (135-151)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 14\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id hpcms]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [nd.id:2!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (155-164)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 16\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [brqp2]\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.LUEVY]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [nd.id:1!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [nd.id:2!null]\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (84-100)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 11\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + @@ -8325,33 +8051,26 @@ WHERE " β”‚ β”‚ β”‚ β”‚ └─ columns: [id gxlub luevy fsdy2]\n" + " β”‚ β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(mf.GXLUB:6!null)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(bs.id:0!null)\n" + - " β”‚ β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ bs.IXUXU:10\n" + - " β”‚ β”‚ β”‚ β”‚ └─ cla.id:11!null\n" + - " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (101-104)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 12\n" + + " β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(bs.id:2!null)\n" + + " β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (105-134)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 13\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TUPLE(SQ1 (longtext))\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (105-134)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 13\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [cla.id:9!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (101-104)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 12\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + " β”‚ β”‚ └─ TableAlias(w2mao)\n" + " β”‚ β”‚ └─ IndexedTableAccess(SEQS3)\n" + " β”‚ β”‚ β”œβ”€ index: [SEQS3.Z7CP5]\n" + @@ -8361,24 +8080,24 @@ WHERE " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: SEQS3\n" + " β”‚ β”‚ └─ columns: [z7cp5 yh4xb]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: TUPLE(w2mao.YH4XB:6!null)\n" + - " β”‚ β”œβ”€ right-key: TUPLE(vc.id:0!null)\n" + - " β”‚ └─ TableAlias(vc)\n" + + " β”‚ └─ TableAlias(vc)\n" + + " β”‚ └─ IndexedTableAccess(D34QP)\n" + + " β”‚ β”œβ”€ index: [D34QP.id]\n" + + " β”‚ β”œβ”€ keys: [w2mao.YH4XB:6!null]\n" + + " β”‚ β”œβ”€ colSet: (176-181)\n" + + " β”‚ β”œβ”€ tableId: 19\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: D34QP\n" + - " β”‚ β”œβ”€ columns: [id znp4p]\n" + - " β”‚ β”œβ”€ colSet: (176-181)\n" + - " β”‚ └─ tableId: 19\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(nd.HPCMS:17!null)\n" + - " β”œβ”€ right-key: TUPLE(nma.id:0!null)\n" + - " └─ TableAlias(nma)\n" + + " β”‚ └─ columns: [id znp4p]\n" + + " └─ TableAlias(nma)\n" + + " └─ IndexedTableAccess(TNMXI)\n" + + " β”œβ”€ index: [TNMXI.id]\n" + + " β”œβ”€ keys: [nd.HPCMS:17!null]\n" + + " β”œβ”€ colSet: (187-189)\n" + + " β”œβ”€ tableId: 21\n" + " └─ Table\n" + " β”œβ”€ name: TNMXI\n" + - " β”œβ”€ columns: [id]\n" + - " β”œβ”€ colSet: (187-189)\n" + - " └─ tableId: 21\n" + + " └─ columns: [id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [xprw6.T4IBQ as T4IBQ, xprw6.ECUWU as ECUWU, sum(xprw6.b5ouf) as B5OUF, sum(xprw6.sp4si) as SP4SI]\n" + @@ -8412,8 +8131,7 @@ WHERE " β”œβ”€ columns: [bs.T4IBQ as T4IBQ, pa.DZLIM as ECUWU, pga.DZLIM as GSTQA, pog.B5OUF, fc.OZTQF, f26zw.YHYLK, nd.TW55N as TW55N]\n" + " └─ Filter\n" + " β”œβ”€ (ms.D237E = 1)\n" + - " └─ LeftOuterHashJoin\n" + - " β”œβ”€ (nd.HPCMS = nma.id)\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ LeftOuterHashJoin\n" + " β”‚ β”œβ”€ ((f26zw.T4IBQ = bs.T4IBQ) AND (f26zw.BRQP2 = nd.id))\n" + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + @@ -8428,16 +8146,14 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (T4IBQ HASH IN ('SQ1'))\n" + " β”‚ β”‚ β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [thnts.id, yk2gw.FTQLQ as T4IBQ]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (thnts.IXUXU = yk2gw.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: yk2gw.id\n" + " β”‚ β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”‚ β”œβ”€ left-key: (bs.id)\n" + " β”‚ β”‚ β”‚ β”œβ”€ right-key: (ms.GXLUB)\n" + @@ -8446,21 +8162,19 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (pog.XVSBH = pga.id)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (ms.CH3FR = pa.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ms)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(SZQWJ)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SZQWJ.CH3FR]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [gxlub ch3fr d237e]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(pa)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(XOAOP)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [XOAOP.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id dzlim]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(pa)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: XOAOP\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id dzlim]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ms)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(SZQWJ)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SZQWJ.CH3FR]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [gxlub ch3fr d237e]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: pa.id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(pog)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NPCYY)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NPCYY.CH3FR]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NPCYY.CH3FR,NPCYY.XVSBH]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id ch3fr xvsbh b5ouf]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: pa.id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + @@ -8495,8 +8209,7 @@ WHERE " β”‚ β”œβ”€ cacheable: true\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [iq.T4IBQ, iq.BRQP2, iq.Z7CP5, CASE WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (vc.ZNP4P = 'L5Q44')) AND (iq.IDWIO = 'KAOAS')) THEN 0 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (vc.ZNP4P = 'L5Q44')) AND (iq.IDWIO = 'OG')) THEN 0 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (vc.ZNP4P = 'L5Q44')) AND (iq.IDWIO = 'TSG')) THEN 0 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (NOT((vc.ZNP4P = 'L5Q44')))) AND (iq.IDWIO = 'W6W24')) THEN 1 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (NOT((vc.ZNP4P = 'L5Q44')))) AND (iq.IDWIO = 'OG')) THEN 1 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (NOT((vc.ZNP4P = 'L5Q44')))) AND (iq.IDWIO = 'TSG')) THEN 0 ELSE NULL END as YHYLK]\n" + - " β”‚ └─ LeftOuterHashJoin\n" + - " β”‚ β”œβ”€ (w2mao.YH4XB = vc.id)\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ SubqueryAlias\n" + " β”‚ β”‚ β”‚ β”œβ”€ name: iq\n" + @@ -8509,27 +8222,22 @@ WHERE " β”‚ β”‚ β”‚ β”œβ”€ (mf.GXLUB = bs.id)\n" + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mf.LUEVY = sn.BRQP2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (sn.BRQP2 = nd.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [brqp2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (sn.BRQP2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (nd.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (nd.HPCMS = nma.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(nd)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.HPCMS]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id hpcms]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nma)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TNMXI)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TNMXI.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id dzlim]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(nma)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: TNMXI\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id dzlim]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nd)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.HPCMS]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id hpcms]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: nma.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [brqp2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: nd.id\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.LUEVY]\n" + @@ -8538,39 +8246,32 @@ WHERE " β”‚ β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”‚ β”œβ”€ left-key: (mf.GXLUB)\n" + " β”‚ β”‚ β”‚ β”œβ”€ right-key: (bs.id)\n" + - " β”‚ β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cmp: (bs.IXUXU = cla.id)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ └─ keys: cla.id\n" + " β”‚ β”‚ └─ TableAlias(w2mao)\n" + " β”‚ β”‚ └─ IndexedTableAccess(SEQS3)\n" + " β”‚ β”‚ β”œβ”€ index: [SEQS3.Z7CP5]\n" + " β”‚ β”‚ β”œβ”€ columns: [z7cp5 yh4xb]\n" + " β”‚ β”‚ └─ keys: iq.Z7CP5\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (w2mao.YH4XB)\n" + - " β”‚ β”œβ”€ right-key: (vc.id)\n" + - " β”‚ └─ TableAlias(vc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: D34QP\n" + - " β”‚ └─ columns: [id znp4p]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (nd.HPCMS)\n" + - " β”œβ”€ right-key: (nma.id)\n" + - " └─ TableAlias(nma)\n" + - " └─ Table\n" + - " β”œβ”€ name: TNMXI\n" + - " └─ columns: [id]\n" + + " β”‚ └─ TableAlias(vc)\n" + + " β”‚ └─ IndexedTableAccess(D34QP)\n" + + " β”‚ β”œβ”€ index: [D34QP.id]\n" + + " β”‚ β”œβ”€ columns: [id znp4p]\n" + + " β”‚ └─ keys: w2mao.YH4XB\n" + + " └─ TableAlias(nma)\n" + + " └─ IndexedTableAccess(TNMXI)\n" + + " β”œβ”€ index: [TNMXI.id]\n" + + " β”œβ”€ columns: [id]\n" + + " └─ keys: nd.HPCMS\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [xprw6.T4IBQ as T4IBQ, xprw6.ECUWU as ECUWU, sum(xprw6.b5ouf) as B5OUF, sum(xprw6.sp4si) as SP4SI]\n" + @@ -8604,8 +8305,7 @@ WHERE " β”œβ”€ columns: [bs.T4IBQ as T4IBQ, pa.DZLIM as ECUWU, pga.DZLIM as GSTQA, pog.B5OUF, fc.OZTQF, f26zw.YHYLK, nd.TW55N as TW55N]\n" + " └─ Filter\n" + " β”œβ”€ (ms.D237E = 1)\n" + - " └─ LeftOuterHashJoin\n" + - " β”œβ”€ (nd.HPCMS = nma.id)\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ LeftOuterHashJoin\n" + " β”‚ β”œβ”€ ((f26zw.T4IBQ = bs.T4IBQ) AND (f26zw.BRQP2 = nd.id))\n" + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + @@ -8620,16 +8320,14 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (T4IBQ HASH IN ('SQ1'))\n" + " β”‚ β”‚ β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [thnts.id, yk2gw.FTQLQ as T4IBQ]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (thnts.IXUXU = yk2gw.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: yk2gw.id\n" + " β”‚ β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”‚ β”œβ”€ left-key: (bs.id)\n" + " β”‚ β”‚ β”‚ β”œβ”€ right-key: (ms.GXLUB)\n" + @@ -8638,21 +8336,19 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (pog.XVSBH = pga.id)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (ms.CH3FR = pa.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ms)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(SZQWJ)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SZQWJ.CH3FR]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [gxlub ch3fr d237e]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(pa)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(XOAOP)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [XOAOP.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id dzlim]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(pa)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: XOAOP\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id dzlim]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ms)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(SZQWJ)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SZQWJ.CH3FR]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [gxlub ch3fr d237e]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: pa.id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(pog)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NPCYY)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NPCYY.CH3FR]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NPCYY.CH3FR,NPCYY.XVSBH]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id ch3fr xvsbh b5ouf]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: pa.id\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + @@ -8687,8 +8383,7 @@ WHERE " β”‚ β”œβ”€ cacheable: true\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [iq.T4IBQ, iq.BRQP2, iq.Z7CP5, CASE WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (vc.ZNP4P = 'L5Q44')) AND (iq.IDWIO = 'KAOAS')) THEN 0 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (vc.ZNP4P = 'L5Q44')) AND (iq.IDWIO = 'OG')) THEN 0 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (vc.ZNP4P = 'L5Q44')) AND (iq.IDWIO = 'TSG')) THEN 0 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (NOT((vc.ZNP4P = 'L5Q44')))) AND (iq.IDWIO = 'W6W24')) THEN 1 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (NOT((vc.ZNP4P = 'L5Q44')))) AND (iq.IDWIO = 'OG')) THEN 1 WHEN (((iq.FSDY2 IN ('SRARY', 'UBQWG')) AND (NOT((vc.ZNP4P = 'L5Q44')))) AND (iq.IDWIO = 'TSG')) THEN 0 ELSE NULL END as YHYLK]\n" + - " β”‚ └─ LeftOuterHashJoin\n" + - " β”‚ β”œβ”€ (w2mao.YH4XB = vc.id)\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ SubqueryAlias\n" + " β”‚ β”‚ β”‚ β”œβ”€ name: iq\n" + @@ -8701,27 +8396,22 @@ WHERE " β”‚ β”‚ β”‚ β”œβ”€ (mf.GXLUB = bs.id)\n" + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mf.LUEVY = sn.BRQP2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (sn.BRQP2 = nd.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [brqp2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (sn.BRQP2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (nd.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (nd.HPCMS = nma.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(nd)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.HPCMS]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id hpcms]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nma)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TNMXI)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TNMXI.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id dzlim]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(nma)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: TNMXI\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id dzlim]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nd)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.HPCMS]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id hpcms]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: nma.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [brqp2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: nd.id\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.LUEVY]\n" + @@ -8730,39 +8420,32 @@ WHERE " β”‚ β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”‚ β”œβ”€ left-key: (mf.GXLUB)\n" + " β”‚ β”‚ β”‚ β”œβ”€ right-key: (bs.id)\n" + - " β”‚ β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cmp: (bs.IXUXU = cla.id)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ └─ keys: cla.id\n" + " β”‚ β”‚ └─ TableAlias(w2mao)\n" + " β”‚ β”‚ └─ IndexedTableAccess(SEQS3)\n" + " β”‚ β”‚ β”œβ”€ index: [SEQS3.Z7CP5]\n" + " β”‚ β”‚ β”œβ”€ columns: [z7cp5 yh4xb]\n" + " β”‚ β”‚ └─ keys: iq.Z7CP5\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (w2mao.YH4XB)\n" + - " β”‚ β”œβ”€ right-key: (vc.id)\n" + - " β”‚ └─ TableAlias(vc)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: D34QP\n" + - " β”‚ └─ columns: [id znp4p]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (nd.HPCMS)\n" + - " β”œβ”€ right-key: (nma.id)\n" + - " └─ TableAlias(nma)\n" + - " └─ Table\n" + - " β”œβ”€ name: TNMXI\n" + - " └─ columns: [id]\n" + + " β”‚ └─ TableAlias(vc)\n" + + " β”‚ └─ IndexedTableAccess(D34QP)\n" + + " β”‚ β”œβ”€ index: [D34QP.id]\n" + + " β”‚ β”œβ”€ columns: [id znp4p]\n" + + " β”‚ └─ keys: w2mao.YH4XB\n" + + " └─ TableAlias(nma)\n" + + " └─ IndexedTableAccess(TNMXI)\n" + + " β”œβ”€ index: [TNMXI.id]\n" + + " β”œβ”€ columns: [id]\n" + + " └─ keys: nd.HPCMS\n" + "", }, { @@ -9355,85 +9038,72 @@ WHERE " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ vc.id:18!null\n" + " β”‚ β”‚ β”‚ └─ w2mao.YH4XB:17!null\n" + - " β”‚ β”‚ β”œβ”€ HashJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mf.GXLUB:5!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ bs.id:2!null\n" + - " β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cla.id:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ bs.IXUXU:3\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(SQ1 (longtext))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-30)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mf.GXLUB:5!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ bs.id:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-30)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cla.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (31-34)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (31-34)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(bs.id:2!null)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(mf.GXLUB:1!null)\n" + - " β”‚ β”‚ β”‚ └─ LookupJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mf.LUEVY:6!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ sn.BRQP2:13!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mf.FSDY2:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(SRARY (longtext), UBQWG (longtext))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.LUEVY]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (35-51)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id gxlub luevy m22qn fsdy2 lt7k6 sppyd qcgts]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (52-61)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id brqp2]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [mf.M22QN:7!null]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (62-64)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: TPXBU\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id btxc5]\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(w2mao)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(SEQS3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [SEQS3.Z7CP5]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ keys: [mf.id:4!null]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (65-67)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: SEQS3\n" + - " β”‚ β”‚ β”‚ └─ columns: [z7cp5 yh4xb]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(bs.id:2!null)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(mf.GXLUB:1!null)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mf.FSDY2:4!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(SRARY (longtext), UBQWG (longtext))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id gxlub luevy m22qn fsdy2 lt7k6 sppyd qcgts]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (35-51)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [mf.LUEVY:6!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (52-61)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id brqp2]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [mf.M22QN:7!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (62-64)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: TPXBU\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id btxc5]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(w2mao)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(SEQS3)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [SEQS3.Z7CP5]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [mf.id:4!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (65-67)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: SEQS3\n" + + " β”‚ β”‚ β”‚ └─ columns: [z7cp5 yh4xb]\n" + " β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”œβ”€ left-key: TUPLE(w2mao.YH4XB:17!null)\n" + " β”‚ β”‚ β”œβ”€ right-key: TUPLE(vc.id:0!null)\n" + @@ -9465,23 +9135,17 @@ WHERE " β”‚ β”‚ β”œβ”€ nma.DZLIM:7!null\n" + " β”‚ β”‚ └─ Q5I4E (longtext)\n" + " β”‚ └─ LeftOuterLookupJoin\n" + - " β”‚ β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ sn.BRQP2:1!null\n" + - " β”‚ β”‚ β”‚ └─ nd.id:2!null\n" + + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id brqp2]\n" + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (88-97)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + - " β”‚ β”‚ β”‚ └─ columns: [id brqp2]\n" + + " β”‚ β”‚ β”‚ └─ tableId: 10\n" + " β”‚ β”‚ └─ TableAlias(nd)\n" + " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”œβ”€ keys: [sn.BRQP2:1!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (98-114)\n" + " β”‚ β”‚ β”œβ”€ tableId: 11\n" + " β”‚ β”‚ └─ Table\n" + @@ -9534,51 +9198,46 @@ WHERE " β”‚ β”‚ β”œβ”€ columns: [cla.FTQLQ as T4IBQ, sn.id as BDNYB, aac.BTXC5 as BTXC5, mf.id as Z7CP5, CASE WHEN (NOT(mf.LT7K6 IS NULL)) THEN mf.LT7K6 ELSE mf.SPPYD END as vaf, CASE WHEN (NOT(mf.QCGTS IS NULL)) THEN mf.QCGTS ELSE 0.5 END as QCGTS, CASE WHEN (vc.ZNP4P = 'L5Q44') THEN 1 ELSE 0 END as SNY4H]\n" + " β”‚ β”‚ └─ HashJoin\n" + " β”‚ β”‚ β”œβ”€ (vc.id = w2mao.YH4XB)\n" + - " β”‚ β”‚ β”œβ”€ HashJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (mf.GXLUB = bs.id)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (cla.id = bs.IXUXU)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”œβ”€ left-key: (bs.id)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ right-key: (mf.GXLUB)\n" + - " β”‚ β”‚ β”‚ └─ LookupJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (mf.LUEVY = sn.BRQP2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mf.FSDY2 HASH IN ('SRARY', 'UBQWG'))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.LUEVY]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id gxlub luevy m22qn fsdy2 lt7k6 sppyd qcgts]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id brqp2]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id btxc5]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ keys: mf.M22QN\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(w2mao)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(SEQS3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [SEQS3.Z7CP5]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ columns: [z7cp5 yh4xb]\n" + - " β”‚ β”‚ β”‚ └─ keys: mf.id\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mf.GXLUB = bs.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: cla.id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (bs.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (mf.GXLUB)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mf.FSDY2 HASH IN ('SRARY', 'UBQWG'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id gxlub luevy m22qn fsdy2 lt7k6 sppyd qcgts]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id brqp2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: mf.LUEVY\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id btxc5]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: mf.M22QN\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(w2mao)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(SEQS3)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [SEQS3.Z7CP5]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [z7cp5 yh4xb]\n" + + " β”‚ β”‚ β”‚ └─ keys: mf.id\n" + " β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”œβ”€ left-key: (w2mao.YH4XB)\n" + " β”‚ β”‚ β”œβ”€ right-key: (vc.id)\n" + @@ -9600,18 +9259,16 @@ WHERE " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ (NOT((nma.DZLIM = 'Q5I4E')))\n" + " β”‚ └─ LeftOuterLookupJoin\n" + - " β”‚ β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (sn.BRQP2 = nd.id)\n" + + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + " β”‚ β”‚ β”‚ └─ columns: [id brqp2]\n" + " β”‚ β”‚ └─ TableAlias(nd)\n" + " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id tw55n tce7a hpcms]\n" + + " β”‚ β”‚ β”œβ”€ columns: [id tw55n tce7a hpcms]\n" + + " β”‚ β”‚ └─ keys: sn.BRQP2\n" + " β”‚ └─ TableAlias(nma)\n" + " β”‚ └─ IndexedTableAccess(TNMXI)\n" + " β”‚ β”œβ”€ index: [TNMXI.id]\n" + @@ -9649,51 +9306,46 @@ WHERE " β”‚ β”‚ β”œβ”€ columns: [cla.FTQLQ as T4IBQ, sn.id as BDNYB, aac.BTXC5 as BTXC5, mf.id as Z7CP5, CASE WHEN (NOT(mf.LT7K6 IS NULL)) THEN mf.LT7K6 ELSE mf.SPPYD END as vaf, CASE WHEN (NOT(mf.QCGTS IS NULL)) THEN mf.QCGTS ELSE 0.5 END as QCGTS, CASE WHEN (vc.ZNP4P = 'L5Q44') THEN 1 ELSE 0 END as SNY4H]\n" + " β”‚ β”‚ └─ HashJoin\n" + " β”‚ β”‚ β”œβ”€ (vc.id = w2mao.YH4XB)\n" + - " β”‚ β”‚ β”œβ”€ HashJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (mf.GXLUB = bs.id)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (cla.id = bs.IXUXU)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”œβ”€ left-key: (bs.id)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ right-key: (mf.GXLUB)\n" + - " β”‚ β”‚ β”‚ └─ LookupJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (mf.LUEVY = sn.BRQP2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mf.FSDY2 HASH IN ('SRARY', 'UBQWG'))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.LUEVY]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id gxlub luevy m22qn fsdy2 lt7k6 sppyd qcgts]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id brqp2]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id btxc5]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ keys: mf.M22QN\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(w2mao)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(SEQS3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [SEQS3.Z7CP5]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ columns: [z7cp5 yh4xb]\n" + - " β”‚ β”‚ β”‚ └─ keys: mf.id\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mf.GXLUB = bs.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: cla.id\n" + + " β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (bs.id)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (mf.GXLUB)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mf.FSDY2 HASH IN ('SRARY', 'UBQWG'))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(mf)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id gxlub luevy m22qn fsdy2 lt7k6 sppyd qcgts]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id brqp2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: mf.LUEVY\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id btxc5]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: mf.M22QN\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(w2mao)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(SEQS3)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [SEQS3.Z7CP5]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [z7cp5 yh4xb]\n" + + " β”‚ β”‚ β”‚ └─ keys: mf.id\n" + " β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”œβ”€ left-key: (w2mao.YH4XB)\n" + " β”‚ β”‚ β”œβ”€ right-key: (vc.id)\n" + @@ -9715,18 +9367,16 @@ WHERE " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ (NOT((nma.DZLIM = 'Q5I4E')))\n" + " β”‚ └─ LeftOuterLookupJoin\n" + - " β”‚ β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (sn.BRQP2 = nd.id)\n" + + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + " β”‚ β”‚ β”‚ └─ columns: [id brqp2]\n" + " β”‚ β”‚ └─ TableAlias(nd)\n" + " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id tw55n tce7a hpcms]\n" + + " β”‚ β”‚ β”œβ”€ columns: [id tw55n tce7a hpcms]\n" + + " β”‚ β”‚ └─ keys: sn.BRQP2\n" + " β”‚ └─ TableAlias(nma)\n" + " β”‚ └─ IndexedTableAccess(TNMXI)\n" + " β”‚ β”œβ”€ index: [TNMXI.id]\n" + @@ -9834,7 +9484,7 @@ WHERE " β”‚ β”‚ β”œβ”€ colSet: (126-132)\n" + " β”‚ β”‚ β”œβ”€ tableId: 15\n" + " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [cla.FTQLQ:15!null->T4IBQ:0, sn.id:0!null->BDNYB:0, aac.BTXC5:13->BTXC5:0, mf.id:2!null->Z7CP5:0, CASE WHEN NOT\n" + + " β”‚ β”‚ β”œβ”€ columns: [cla.FTQLQ:13!null->T4IBQ:0, sn.id:0!null->BDNYB:0, aac.BTXC5:11->BTXC5:0, mf.id:2!null->Z7CP5:0, CASE WHEN NOT\n" + " β”‚ β”‚ β”‚ └─ mf.LT7K6:7 IS NULL\n" + " β”‚ β”‚ β”‚ THEN mf.LT7K6:7 ELSE mf.SPPYD:8 END->vaf:0, CASE WHEN NOT\n" + " β”‚ β”‚ β”‚ └─ mf.QCGTS:9 IS NULL\n" + @@ -9845,12 +9495,12 @@ WHERE " β”‚ β”‚ └─ HashJoin\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ vc.id:18!null\n" + - " β”‚ β”‚ β”‚ └─ w2mao.YH4XB:11!null\n" + - " β”‚ β”‚ β”œβ”€ HashJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ mf.GXLUB:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ bs.id:16!null\n" + - " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ └─ w2mao.YH4XB:17!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ mf.GXLUB:3!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ bs.id:14!null\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + @@ -9872,55 +9522,48 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id gxlub luevy m22qn fsdy2 lt7k6 sppyd qcgts]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(w2mao)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(SEQS3)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SEQS3.Z7CP5]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [mf.id:2!null]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (65-67)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [mf.M22QN:5!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (62-64)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: SEQS3\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [z7cp5 yh4xb]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [mf.M22QN:5!null]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (62-64)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: TPXBU\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id btxc5]\n" + - " β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(mf.GXLUB:3!null)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(bs.id:2!null)\n" + - " β”‚ β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cla.id:14!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ bs.IXUXU:17\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TUPLE(SQ1 (longtext))\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-30)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (31-34)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: TPXBU\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id btxc5]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(mf.GXLUB:3!null)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(bs.id:2!null)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-30)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [cla.id:12!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (31-34)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(w2mao)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(SEQS3)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [SEQS3.Z7CP5]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [mf.id:2!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (65-67)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: SEQS3\n" + + " β”‚ β”‚ β”‚ └─ columns: [z7cp5 yh4xb]\n" + " β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”œβ”€ left-key: TUPLE(w2mao.YH4XB:11!null)\n" + + " β”‚ β”‚ β”œβ”€ left-key: TUPLE(w2mao.YH4XB:17!null)\n" + " β”‚ β”‚ β”œβ”€ right-key: TUPLE(vc.id:0!null)\n" + " β”‚ β”‚ └─ TableAlias(vc)\n" + " β”‚ β”‚ └─ Table\n" + @@ -9950,23 +9593,17 @@ WHERE " β”‚ β”‚ β”œβ”€ nma.DZLIM:7!null\n" + " β”‚ β”‚ └─ Q5I4E (longtext)\n" + " β”‚ └─ LeftOuterLookupJoin\n" + - " β”‚ β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ sn.BRQP2:1!null\n" + - " β”‚ β”‚ β”‚ └─ nd.id:2!null\n" + + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id brqp2]\n" + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (88-97)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 10\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + - " β”‚ β”‚ β”‚ └─ columns: [id brqp2]\n" + + " β”‚ β”‚ β”‚ └─ tableId: 10\n" + " β”‚ β”‚ └─ TableAlias(nd)\n" + " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”œβ”€ keys: [sn.BRQP2:1!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (98-114)\n" + " β”‚ β”‚ β”œβ”€ tableId: 11\n" + " β”‚ β”‚ └─ Table\n" + @@ -10019,9 +9656,9 @@ WHERE " β”‚ β”‚ β”œβ”€ columns: [cla.FTQLQ as T4IBQ, sn.id as BDNYB, aac.BTXC5 as BTXC5, mf.id as Z7CP5, CASE WHEN (NOT(mf.LT7K6 IS NULL)) THEN mf.LT7K6 ELSE mf.SPPYD END as vaf, CASE WHEN (NOT(mf.QCGTS IS NULL)) THEN mf.QCGTS ELSE 0.5 END as QCGTS, CASE WHEN (vc.ZNP4P = 'L5Q44') THEN 1 ELSE 0 END as SNY4H]\n" + " β”‚ β”‚ └─ HashJoin\n" + " β”‚ β”‚ β”œβ”€ (vc.id = w2mao.YH4XB)\n" + - " β”‚ β”‚ β”œβ”€ HashJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (mf.GXLUB = bs.id)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mf.GXLUB = bs.id)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + @@ -10035,33 +9672,30 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.LUEVY]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id gxlub luevy m22qn fsdy2 lt7k6 sppyd qcgts]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: sn.BRQP2\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(w2mao)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(SEQS3)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SEQS3.Z7CP5]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [z7cp5 yh4xb]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: mf.id\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id btxc5]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ keys: mf.M22QN\n" + - " β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”œβ”€ left-key: (mf.GXLUB)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ right-key: (bs.id)\n" + - " β”‚ β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cmp: (cla.id = bs.IXUXU)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id btxc5]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: mf.M22QN\n" + + " β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (mf.GXLUB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (bs.id)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cla.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(w2mao)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(SEQS3)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [SEQS3.Z7CP5]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [z7cp5 yh4xb]\n" + + " β”‚ β”‚ β”‚ └─ keys: mf.id\n" + " β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”œβ”€ left-key: (w2mao.YH4XB)\n" + " β”‚ β”‚ β”œβ”€ right-key: (vc.id)\n" + @@ -10083,18 +9717,16 @@ WHERE " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ (NOT((nma.DZLIM = 'Q5I4E')))\n" + " β”‚ └─ LeftOuterLookupJoin\n" + - " β”‚ β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (sn.BRQP2 = nd.id)\n" + + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + " β”‚ β”‚ β”‚ └─ columns: [id brqp2]\n" + " β”‚ β”‚ └─ TableAlias(nd)\n" + " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id tw55n tce7a hpcms]\n" + + " β”‚ β”‚ β”œβ”€ columns: [id tw55n tce7a hpcms]\n" + + " β”‚ β”‚ └─ keys: sn.BRQP2\n" + " β”‚ └─ TableAlias(nma)\n" + " β”‚ └─ IndexedTableAccess(TNMXI)\n" + " β”‚ β”œβ”€ index: [TNMXI.id]\n" + @@ -10132,9 +9764,9 @@ WHERE " β”‚ β”‚ β”œβ”€ columns: [cla.FTQLQ as T4IBQ, sn.id as BDNYB, aac.BTXC5 as BTXC5, mf.id as Z7CP5, CASE WHEN (NOT(mf.LT7K6 IS NULL)) THEN mf.LT7K6 ELSE mf.SPPYD END as vaf, CASE WHEN (NOT(mf.QCGTS IS NULL)) THEN mf.QCGTS ELSE 0.5 END as QCGTS, CASE WHEN (vc.ZNP4P = 'L5Q44') THEN 1 ELSE 0 END as SNY4H]\n" + " β”‚ β”‚ └─ HashJoin\n" + " β”‚ β”‚ β”œβ”€ (vc.id = w2mao.YH4XB)\n" + - " β”‚ β”‚ β”œβ”€ HashJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (mf.GXLUB = bs.id)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ HashJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (mf.GXLUB = bs.id)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + @@ -10148,33 +9780,30 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HGMQ6.LUEVY]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id gxlub luevy m22qn fsdy2 lt7k6 sppyd qcgts]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: sn.BRQP2\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(w2mao)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(SEQS3)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [SEQS3.Z7CP5]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [z7cp5 yh4xb]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: mf.id\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id btxc5]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ keys: mf.M22QN\n" + - " β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”œβ”€ left-key: (mf.GXLUB)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ right-key: (bs.id)\n" + - " β”‚ β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cmp: (cla.id = bs.IXUXU)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(aac)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(TPXBU)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [TPXBU.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id btxc5]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: mf.M22QN\n" + + " β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (mf.GXLUB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (bs.id)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: cla.id\n" + + " β”‚ β”‚ β”‚ └─ TableAlias(w2mao)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(SEQS3)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [SEQS3.Z7CP5]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [z7cp5 yh4xb]\n" + + " β”‚ β”‚ β”‚ └─ keys: mf.id\n" + " β”‚ β”‚ └─ HashLookup\n" + " β”‚ β”‚ β”œβ”€ left-key: (w2mao.YH4XB)\n" + " β”‚ β”‚ β”œβ”€ right-key: (vc.id)\n" + @@ -10196,18 +9825,16 @@ WHERE " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ (NOT((nma.DZLIM = 'Q5I4E')))\n" + " β”‚ └─ LeftOuterLookupJoin\n" + - " β”‚ β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (sn.BRQP2 = nd.id)\n" + + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + " β”‚ β”‚ β”‚ └─ columns: [id brqp2]\n" + " β”‚ β”‚ └─ TableAlias(nd)\n" + " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id tw55n tce7a hpcms]\n" + + " β”‚ β”‚ β”œβ”€ columns: [id tw55n tce7a hpcms]\n" + + " β”‚ β”‚ └─ keys: sn.BRQP2\n" + " β”‚ └─ TableAlias(nma)\n" + " β”‚ └─ IndexedTableAccess(TNMXI)\n" + " β”‚ β”œβ”€ index: [TNMXI.id]\n" + @@ -10653,19 +10280,19 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ NOT\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TDEIU:10!null IS NULL\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [ism.FV24E:0!null->FJDP5:0, cpmfe.id:12!null->BJUF2:0, cpmfe.TW55N:13!null->PSMU6:0, ism.M22QN:2!null->M22QN:0, g3yxs.GE5EL:8, g3yxs.F7A4Q:9, g3yxs.ESFVY:6!null, CASE WHEN IN\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [ism.FV24E:5!null->FJDP5:0, cpmfe.id:12!null->BJUF2:0, cpmfe.TW55N:13!null->PSMU6:0, ism.M22QN:7!null->M22QN:0, g3yxs.GE5EL:3, g3yxs.F7A4Q:4, g3yxs.ESFVY:1!null, CASE WHEN IN\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:2!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ right: TUPLE(FO422 (longtext), SJ53H (longtext))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ THEN 0 (tinyint) WHEN IN\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:2!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ right: TUPLE(DCV4Z (longtext), UOSM4 (longtext), FUGIP (longtext), H5MCC (longtext), YKEQE (longtext), D3AKL (longtext))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ THEN 1 (tinyint) WHEN IN\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:2!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ right: TUPLE(QJEXM (longtext), J6S7P (longtext), VT7FI (longtext))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ THEN 2 (tinyint) WHEN IN\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:2!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ right: TUPLE(Y62X7 (longtext))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ THEN 3 (tinyint) END->CC4AX:0, g3yxs.SL76B:7!null->SL76B:0, yqif4.id:15!null->QNI57:0, yvhjz.id:18!null->TDEIU:0]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ THEN 3 (tinyint) END->CC4AX:0, g3yxs.SL76B:2!null->SL76B:0, yqif4.id:15!null->QNI57:0, yvhjz.id:18!null->TDEIU:0]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Or\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + @@ -10675,51 +10302,42 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ yvhjz.BRQP2:19!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.UJ6XY:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.UJ6XY:6!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ yqif4.BRQP2:16!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:5!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cpmfe.id:12!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ nhmxw.id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.PRUV2:4\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ism.NZ4MQ:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ g3yxs.id:5!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15-23)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HDDVB\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-31)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:5!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(g3yxs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id esfvy sl76b ge5el f7a4q]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-31)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [g3yxs.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15-23)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy sl76b ge5el f7a4q]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(ism.PRUV2:4)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(nhmxw.id:0!null)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HDDVB\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.PRUV2:9]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-41)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-41)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 6\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -10732,7 +10350,7 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(yqif4)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.UJ6XY:1!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.UJ6XY:6!null]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (59-68)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 8\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + @@ -10741,7 +10359,7 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(yvhjz)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.FV24E:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.FV24E:5!null]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (69-78)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + @@ -10768,19 +10386,19 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ └─ NOT\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TDEIU:10!null IS NULL\n" + " β”‚ β”‚ β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [ism.FV24E:0!null->FJDP5:0, cpmfe.id:12!null->BJUF2:0, cpmfe.TW55N:13!null->PSMU6:0, ism.M22QN:2!null->M22QN:0, g3yxs.GE5EL:8, g3yxs.F7A4Q:9, g3yxs.ESFVY:6!null, CASE WHEN IN\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [ism.FV24E:5!null->FJDP5:0, cpmfe.id:12!null->BJUF2:0, cpmfe.TW55N:13!null->PSMU6:0, ism.M22QN:7!null->M22QN:0, g3yxs.GE5EL:3, g3yxs.F7A4Q:4, g3yxs.ESFVY:1!null, CASE WHEN IN\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:2!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ right: TUPLE(FO422 (longtext), SJ53H (longtext))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ THEN 0 (tinyint) WHEN IN\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:2!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ right: TUPLE(DCV4Z (longtext), UOSM4 (longtext), FUGIP (longtext), H5MCC (longtext), YKEQE (longtext), D3AKL (longtext))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ THEN 1 (tinyint) WHEN IN\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:2!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ right: TUPLE(QJEXM (longtext), J6S7P (longtext), VT7FI (longtext))\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ THEN 2 (tinyint) WHEN IN\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:2!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ right: TUPLE(Y62X7 (longtext))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ THEN 3 (tinyint) END->CC4AX:0, g3yxs.SL76B:7!null->SL76B:0, yqif4.id:15!null->QNI57:0, yvhjz.id:18!null->TDEIU:0]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ THEN 3 (tinyint) END->CC4AX:0, g3yxs.SL76B:2!null->SL76B:0, yqif4.id:15!null->QNI57:0, yvhjz.id:18!null->TDEIU:0]\n" + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Or\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + @@ -10790,51 +10408,42 @@ WHERE " β”‚ β”‚ β”‚ β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ yvhjz.BRQP2:19!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.UJ6XY:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.UJ6XY:6!null\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ yqif4.BRQP2:16!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:5!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cpmfe.id:12!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ nhmxw.id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.PRUV2:4\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ism.NZ4MQ:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ g3yxs.id:5!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15-23)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HDDVB\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-31)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:5!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(g3yxs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id esfvy sl76b ge5el f7a4q]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-31)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [g3yxs.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15-23)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy sl76b ge5el f7a4q]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(ism.PRUV2:4)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(nhmxw.id:0!null)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HDDVB\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.PRUV2:9]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-41)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-41)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 6\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -10847,7 +10456,7 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(yqif4)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.UJ6XY:1!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.UJ6XY:6!null]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (59-68)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 8\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + @@ -10856,7 +10465,7 @@ WHERE " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(yvhjz)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.FV24E:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.FV24E:5!null]\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (69-78)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + @@ -10886,19 +10495,19 @@ WHERE " β”‚ β”‚ β”‚ β”‚ └─ NOT\n" + " β”‚ β”‚ β”‚ β”‚ └─ TDEIU:10!null IS NULL\n" + " β”‚ β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”‚ β”œβ”€ columns: [ism.FV24E:0!null->FJDP5:0, cpmfe.id:12!null->BJUF2:0, cpmfe.TW55N:13!null->PSMU6:0, ism.M22QN:2!null->M22QN:0, g3yxs.GE5EL:8, g3yxs.F7A4Q:9, g3yxs.ESFVY:6!null, CASE WHEN IN\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:7!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [ism.FV24E:5!null->FJDP5:0, cpmfe.id:12!null->BJUF2:0, cpmfe.TW55N:13!null->PSMU6:0, ism.M22QN:7!null->M22QN:0, g3yxs.GE5EL:3, g3yxs.F7A4Q:4, g3yxs.ESFVY:1!null, CASE WHEN IN\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:2!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ right: TUPLE(FO422 (longtext), SJ53H (longtext))\n" + " β”‚ β”‚ β”‚ β”‚ THEN 0 (tinyint) WHEN IN\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:2!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ right: TUPLE(DCV4Z (longtext), UOSM4 (longtext), FUGIP (longtext), H5MCC (longtext), YKEQE (longtext), D3AKL (longtext))\n" + " β”‚ β”‚ β”‚ β”‚ THEN 1 (tinyint) WHEN IN\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:2!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ right: TUPLE(QJEXM (longtext), J6S7P (longtext), VT7FI (longtext))\n" + " β”‚ β”‚ β”‚ β”‚ THEN 2 (tinyint) WHEN IN\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ left: g3yxs.SL76B:2!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ right: TUPLE(Y62X7 (longtext))\n" + - " β”‚ β”‚ β”‚ β”‚ THEN 3 (tinyint) END->CC4AX:0, g3yxs.SL76B:7!null->SL76B:0, yqif4.id:15!null->QNI57:0, yvhjz.id:18!null->TDEIU:0]\n" + + " β”‚ β”‚ β”‚ β”‚ THEN 3 (tinyint) END->CC4AX:0, g3yxs.SL76B:2!null->SL76B:0, yqif4.id:15!null->QNI57:0, yvhjz.id:18!null->TDEIU:0]\n" + " β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”œβ”€ Or\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + @@ -10908,51 +10517,42 @@ WHERE " β”‚ β”‚ β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ yvhjz.BRQP2:19!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ism.UJ6XY:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ism.UJ6XY:6!null\n" + " β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ yqif4.BRQP2:16!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:5!null\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cpmfe.id:12!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ nhmxw.id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.PRUV2:4\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ism.NZ4MQ:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ g3yxs.id:5!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15-23)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HDDVB\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-31)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:5!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(g3yxs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id esfvy sl76b ge5el f7a4q]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-31)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [g3yxs.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15-23)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy sl76b ge5el f7a4q]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(ism.PRUV2:4)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(nhmxw.id:0!null)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HDDVB\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.PRUV2:9]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-41)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-41)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 6\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -10965,7 +10565,7 @@ WHERE " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(yqif4)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.UJ6XY:1!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.UJ6XY:6!null]\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (59-68)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 8\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + @@ -10974,7 +10574,7 @@ WHERE " β”‚ β”‚ β”‚ └─ TableAlias(yvhjz)\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.FV24E:0!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.FV24E:5!null]\n" + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (69-78)\n" + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + " β”‚ β”‚ β”‚ └─ Table\n" + @@ -10996,46 +10596,36 @@ WHERE " β”‚ β”œβ”€ colSet: (246-248)\n" + " β”‚ β”œβ”€ tableId: 24\n" + " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [cla.FTQLQ:4!null, mf.LUEVY:1!null, mf.M22QN:2!null]\n" + - " β”‚ └─ HashJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ bs.id:5!null\n" + - " β”‚ β”‚ └─ mf.GXLUB:0!null\n" + - " β”‚ β”œβ”€ TableAlias(mf)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + - " β”‚ β”‚ β”œβ”€ columns: [gxlub luevy m22qn]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (229-245)\n" + - " β”‚ β”‚ └─ tableId: 23\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: TUPLE(mf.GXLUB:0!null)\n" + - " β”‚ β”œβ”€ right-key: TUPLE(bs.id:2!null)\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ cla.id:3!null\n" + - " β”‚ β”‚ └─ bs.IXUXU:6\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:1!null\n" + - " β”‚ β”‚ β”‚ └─ TUPLE(SQ1 (longtext))\n" + - " β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (195-224)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 21\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ β”‚ └─ columns: [id ftqlq]\n" + - " β”‚ └─ TableAlias(bs)\n" + - " β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (225-228)\n" + - " β”‚ β”œβ”€ tableId: 22\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ └─ columns: [id ixuxu]\n" + + " β”‚ β”œβ”€ columns: [cla.FTQLQ:1!null, mf.LUEVY:5!null, mf.M22QN:6!null]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ static: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (195-224)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 21\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cla.id:0!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (225-228)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 22\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ β”‚ └─ columns: [id ixuxu]\n" + + " β”‚ └─ TableAlias(mf)\n" + + " β”‚ └─ IndexedTableAccess(HGMQ6)\n" + + " β”‚ β”œβ”€ index: [HGMQ6.GXLUB]\n" + + " β”‚ β”œβ”€ keys: [bs.id:2!null]\n" + + " β”‚ β”œβ”€ colSet: (229-245)\n" + + " β”‚ β”œβ”€ tableId: 23\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: HGMQ6\n" + + " β”‚ └─ columns: [gxlub luevy m22qn]\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: TUPLE(mjr3d.M22QN:3!null)\n" + " β”œβ”€ right-key: TUPLE(aac.id:0!null)\n" + @@ -11197,27 +10787,22 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (yqif4.BRQP2 = ism.FV24E)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cpmfe.id = ism.FV24E)))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (nhmxw.id = ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (ism.NZ4MQ = g3yxs.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy sl76b ge5el f7a4q]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (nhmxw.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(g3yxs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy sl76b ge5el f7a4q]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: g3yxs.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ism.PRUV2\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -11254,27 +10839,22 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (yqif4.BRQP2 = ism.FV24E)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cpmfe.id = ism.FV24E)))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (nhmxw.id = ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (ism.NZ4MQ = g3yxs.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy sl76b ge5el f7a4q]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (nhmxw.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(g3yxs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy sl76b ge5el f7a4q]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: g3yxs.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ism.PRUV2\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -11311,27 +10891,22 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (yqif4.BRQP2 = ism.FV24E)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cpmfe.id = ism.FV24E)))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (nhmxw.id = ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (ism.NZ4MQ = g3yxs.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy sl76b ge5el f7a4q]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (nhmxw.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(g3yxs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy sl76b ge5el f7a4q]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: g3yxs.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ism.PRUV2\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -11360,29 +10935,23 @@ WHERE " β”‚ β”œβ”€ cacheable: true\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [cla.FTQLQ, mf.LUEVY, mf.M22QN]\n" + - " β”‚ └─ HashJoin\n" + - " β”‚ β”œβ”€ (bs.id = mf.GXLUB)\n" + - " β”‚ β”œβ”€ TableAlias(mf)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + - " β”‚ β”‚ └─ columns: [gxlub luevy m22qn]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (mf.GXLUB)\n" + - " β”‚ β”œβ”€ right-key: (bs.id)\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (cla.id = bs.IXUXU)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id ftqlq]\n" + - " β”‚ └─ TableAlias(bs)\n" + - " β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id ixuxu]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ β”‚ └─ keys: cla.id\n" + + " β”‚ └─ TableAlias(mf)\n" + + " β”‚ └─ IndexedTableAccess(HGMQ6)\n" + + " β”‚ β”œβ”€ index: [HGMQ6.GXLUB]\n" + + " β”‚ β”œβ”€ columns: [gxlub luevy m22qn]\n" + + " β”‚ └─ keys: bs.id\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (mjr3d.M22QN)\n" + " β”œβ”€ right-key: (aac.id)\n" + @@ -11540,27 +11109,22 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (yqif4.BRQP2 = ism.FV24E)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cpmfe.id = ism.FV24E)))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (nhmxw.id = ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (ism.NZ4MQ = g3yxs.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy sl76b ge5el f7a4q]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (nhmxw.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(g3yxs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy sl76b ge5el f7a4q]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: g3yxs.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ism.PRUV2\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -11597,27 +11161,22 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (yqif4.BRQP2 = ism.FV24E)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cpmfe.id = ism.FV24E)))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (nhmxw.id = ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (ism.NZ4MQ = g3yxs.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy sl76b ge5el f7a4q]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (nhmxw.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(g3yxs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy sl76b ge5el f7a4q]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: g3yxs.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ism.PRUV2\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -11654,27 +11213,22 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (yqif4.BRQP2 = ism.FV24E)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cpmfe.id = ism.FV24E)))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (nhmxw.id = ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (ism.NZ4MQ = g3yxs.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy sl76b ge5el f7a4q]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (nhmxw.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(g3yxs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy sl76b ge5el f7a4q]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: g3yxs.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ism.PRUV2\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -11703,29 +11257,23 @@ WHERE " β”‚ β”œβ”€ cacheable: true\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [cla.FTQLQ, mf.LUEVY, mf.M22QN]\n" + - " β”‚ └─ HashJoin\n" + - " β”‚ β”œβ”€ (bs.id = mf.GXLUB)\n" + - " β”‚ β”œβ”€ TableAlias(mf)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + - " β”‚ β”‚ └─ columns: [gxlub luevy m22qn]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (mf.GXLUB)\n" + - " β”‚ β”œβ”€ right-key: (bs.id)\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (cla.id = bs.IXUXU)\n" + - " β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id ftqlq]\n" + - " β”‚ └─ TableAlias(bs)\n" + - " β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id ixuxu]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ β”‚ └─ keys: cla.id\n" + + " β”‚ └─ TableAlias(mf)\n" + + " β”‚ └─ IndexedTableAccess(HGMQ6)\n" + + " β”‚ β”œβ”€ index: [HGMQ6.GXLUB]\n" + + " β”‚ β”œβ”€ columns: [gxlub luevy m22qn]\n" + + " β”‚ └─ keys: bs.id\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (mjr3d.M22QN)\n" + " β”œβ”€ right-key: (aac.id)\n" + @@ -12150,7 +11698,7 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 18\n" + " β”‚ β”‚ β”‚ β”‚ └─ Distinct\n" + " β”‚ β”‚ β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [ism.FV24E:0!null->FJDP5:0, cpmfe.id:10!null->BJUF2:0, ism.M22QN:2!null->M22QN:0, g3yxs.TUV25:7->TUV25:0, g3yxs.ESFVY:6!null->ESFVY:0, yqif4.id:12!null->QNI57:0, yvhjz.id:15!null->TDEIU:0]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [ism.FV24E:3!null->FJDP5:0, cpmfe.id:10!null->BJUF2:0, ism.M22QN:5!null->M22QN:0, g3yxs.TUV25:2->TUV25:0, g3yxs.ESFVY:1!null->ESFVY:0, yqif4.id:12!null->QNI57:0, yvhjz.id:15!null->TDEIU:0]\n" + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Or\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + @@ -12160,54 +11708,45 @@ WHERE " β”‚ β”‚ β”‚ β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ yvhjz.BRQP2:16!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.UJ6XY:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.UJ6XY:4!null\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ yqif4.BRQP2:13!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:3!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cpmfe.id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ nhmxw.id:8!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.PRUV2:4\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ism.NZ4MQ:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ g3yxs.id:5!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15-23)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:3!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ g3yxs.TUV25:2 IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HDDVB\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ g3yxs.TUV25:2 IS NULL\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-31)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(ism.PRUV2:4)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(nhmxw.id:0!null)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id esfvy tuv25]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-31)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [g3yxs.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15-23)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HDDVB\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.PRUV2:7]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-41)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-41)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 6\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -12220,7 +11759,7 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(yqif4)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.UJ6XY:1!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.UJ6XY:4!null]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (59-68)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 8\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + @@ -12229,7 +11768,7 @@ WHERE " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(yvhjz)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.FV24E:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.FV24E:3!null]\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (69-78)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + @@ -12276,27 +11815,20 @@ WHERE " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ bs.id:2!null\n" + " β”‚ β”‚ └─ mf.GXLUB:4!null\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cla.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ bs.IXUXU:3\n" + - " β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TUPLE(SQ1 (longtext))\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (114-143)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 14\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ static: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (114-143)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 14\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + " β”‚ β”‚ └─ TableAlias(bs)\n" + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cla.id:0!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (110-113)\n" + " β”‚ β”‚ β”œβ”€ tableId: 13\n" + " β”‚ β”‚ └─ Table\n" + @@ -12305,23 +11837,17 @@ WHERE " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: TUPLE(bs.id:2!null)\n" + " β”‚ β”œβ”€ right-key: TUPLE(mf.GXLUB:0!null)\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ mf.LUEVY:5!null\n" + - " β”‚ β”‚ └─ sn.BRQP2:8!null\n" + + " β”‚ └─ LookupJoin\n" + " β”‚ β”œβ”€ TableAlias(mf)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”œβ”€ index: [HGMQ6.LUEVY]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + + " β”‚ β”‚ β”œβ”€ columns: [gxlub luevy m22qn]\n" + " β”‚ β”‚ β”œβ”€ colSet: (93-109)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 12\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + - " β”‚ β”‚ └─ columns: [gxlub luevy m22qn]\n" + + " β”‚ β”‚ └─ tableId: 12\n" + " β”‚ └─ TableAlias(sn)\n" + " β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”œβ”€ keys: [mf.LUEVY:5!null]\n" + " β”‚ β”œβ”€ colSet: (144-153)\n" + " β”‚ β”œβ”€ tableId: 15\n" + " β”‚ └─ Table\n" + @@ -12364,27 +11890,20 @@ WHERE " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ bs.id:2!null\n" + " β”‚ β”‚ └─ mf.GXLUB:4!null\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cla.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ bs.IXUXU:3\n" + - " β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ TUPLE(SQ1 (longtext))\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (114-143)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 14\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ static: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (114-143)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 14\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + " β”‚ β”‚ └─ TableAlias(bs)\n" + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cla.id:0!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (110-113)\n" + " β”‚ β”‚ β”œβ”€ tableId: 13\n" + " β”‚ β”‚ └─ Table\n" + @@ -12393,23 +11912,17 @@ WHERE " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: TUPLE(bs.id:2!null)\n" + " β”‚ β”œβ”€ right-key: TUPLE(mf.GXLUB:0!null)\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ mf.LUEVY:5!null\n" + - " β”‚ β”‚ └─ sn.BRQP2:8!null\n" + + " β”‚ └─ LookupJoin\n" + " β”‚ β”œβ”€ TableAlias(mf)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”œβ”€ index: [HGMQ6.LUEVY]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + + " β”‚ β”‚ β”œβ”€ columns: [gxlub luevy m22qn]\n" + " β”‚ β”‚ β”œβ”€ colSet: (93-109)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 12\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + - " β”‚ β”‚ └─ columns: [gxlub luevy m22qn]\n" + + " β”‚ β”‚ └─ tableId: 12\n" + " β”‚ └─ TableAlias(sn)\n" + " β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”œβ”€ keys: [mf.LUEVY:5!null]\n" + " β”‚ β”œβ”€ colSet: (144-153)\n" + " β”‚ β”œβ”€ tableId: 15\n" + " β”‚ └─ Table\n" + @@ -12640,7 +12153,7 @@ WHERE " β”‚ β”‚ β”œβ”€ tableId: 18\n" + " β”‚ β”‚ └─ Distinct\n" + " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [ism.FV24E:0!null->FJDP5:0, cpmfe.id:10!null->BJUF2:0, ism.M22QN:2!null->M22QN:0, g3yxs.TUV25:7->TUV25:0, g3yxs.ESFVY:6!null->ESFVY:0, yqif4.id:12!null->QNI57:0, yvhjz.id:15!null->TDEIU:0]\n" + + " β”‚ β”‚ β”œβ”€ columns: [ism.FV24E:3!null->FJDP5:0, cpmfe.id:10!null->BJUF2:0, ism.M22QN:5!null->M22QN:0, g3yxs.TUV25:2->TUV25:0, g3yxs.ESFVY:1!null->ESFVY:0, yqif4.id:12!null->QNI57:0, yvhjz.id:15!null->TDEIU:0]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ Or\n" + " β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + @@ -12650,54 +12163,45 @@ WHERE " β”‚ β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ yvhjz.BRQP2:16!null\n" + - " β”‚ β”‚ β”‚ └─ ism.UJ6XY:1!null\n" + + " β”‚ β”‚ β”‚ └─ ism.UJ6XY:4!null\n" + " β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ yqif4.BRQP2:13!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:3!null\n" + " β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cpmfe.id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ nhmxw.id:8!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.PRUV2:4\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ism.NZ4MQ:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ g3yxs.id:5!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15-23)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:3!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ g3yxs.TUV25:2 IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HDDVB\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ g3yxs.TUV25:2 IS NULL\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-31)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(ism.PRUV2:4)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(nhmxw.id:0!null)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id esfvy tuv25]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-31)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [g3yxs.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15-23)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HDDVB\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.PRUV2:7]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-41)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-41)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 6\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -12710,7 +12214,7 @@ WHERE " β”‚ β”‚ β”‚ └─ TableAlias(yqif4)\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.UJ6XY:1!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.UJ6XY:4!null]\n" + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (59-68)\n" + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 8\n" + " β”‚ β”‚ β”‚ └─ Table\n" + @@ -12719,7 +12223,7 @@ WHERE " β”‚ β”‚ └─ TableAlias(yvhjz)\n" + " β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”œβ”€ keys: [ism.FV24E:0!null]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ism.FV24E:3!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (69-78)\n" + " β”‚ β”‚ β”œβ”€ tableId: 9\n" + " β”‚ β”‚ └─ Table\n" + @@ -12900,29 +12404,24 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (yqif4.BRQP2 = ism.FV24E)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cpmfe.id = ism.FV24E)))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (nhmxw.id = ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (ism.NZ4MQ = g3yxs.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT(g3yxs.TUV25 IS NULL))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (nhmxw.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT(g3yxs.TUV25 IS NULL))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: g3yxs.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ism.PRUV2\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -12965,35 +12464,30 @@ WHERE " β”‚ β”œβ”€ columns: [cla.FTQLQ as T4IBQ, sn.id as BDNYB, mf.M22QN as M22QN]\n" + " β”‚ └─ HashJoin\n" + " β”‚ β”œβ”€ (bs.id = mf.GXLUB)\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (cla.id = bs.IXUXU)\n" + - " β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + " β”‚ β”‚ └─ TableAlias(bs)\n" + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ β”‚ └─ keys: cla.id\n" + " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: (bs.id)\n" + " β”‚ β”œβ”€ right-key: (mf.GXLUB)\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (mf.LUEVY = sn.BRQP2)\n" + + " β”‚ └─ LookupJoin\n" + " β”‚ β”œβ”€ TableAlias(mf)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”œβ”€ index: [HGMQ6.LUEVY]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + " β”‚ β”‚ └─ columns: [gxlub luevy m22qn]\n" + " β”‚ └─ TableAlias(sn)\n" + " β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id brqp2]\n" + + " β”‚ β”œβ”€ columns: [id brqp2]\n" + + " β”‚ └─ keys: mf.LUEVY\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: ((fs.T4IBQ, fs.M6T2N, fs.BTXC5, fs.TUV25))\n" + " β”œβ”€ right-key: ((zmspr.T4IBQ, zmspr.M6T2N, zmspr.BTXC5, zmspr.TUV25))\n" + @@ -13018,35 +12512,30 @@ WHERE " β”‚ β”œβ”€ columns: [cla.FTQLQ as T4IBQ, sn.id as BDNYB, mf.M22QN as M22QN]\n" + " β”‚ └─ HashJoin\n" + " β”‚ β”œβ”€ (bs.id = mf.GXLUB)\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (cla.id = bs.IXUXU)\n" + - " β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + " β”‚ β”‚ └─ TableAlias(bs)\n" + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ β”‚ └─ keys: cla.id\n" + " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: (bs.id)\n" + " β”‚ β”œβ”€ right-key: (mf.GXLUB)\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (mf.LUEVY = sn.BRQP2)\n" + + " β”‚ └─ LookupJoin\n" + " β”‚ β”œβ”€ TableAlias(mf)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”œβ”€ index: [HGMQ6.LUEVY]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + " β”‚ β”‚ └─ columns: [gxlub luevy m22qn]\n" + " β”‚ └─ TableAlias(sn)\n" + " β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id brqp2]\n" + + " β”‚ β”œβ”€ columns: [id brqp2]\n" + + " β”‚ └─ keys: mf.LUEVY\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (cld.BDNYB, cld.M22QN)\n" + " β”œβ”€ right-key: (p4pjz.LWQ6O, p4pjz.NTOFG)\n" + @@ -13185,29 +12674,24 @@ WHERE " β”‚ β”‚ β”‚ β”œβ”€ (yqif4.BRQP2 = ism.FV24E)\n" + " β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cpmfe.id = ism.FV24E)))\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (nhmxw.id = ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (ism.NZ4MQ = g3yxs.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT(g3yxs.TUV25 IS NULL))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (nhmxw.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT(g3yxs.TUV25 IS NULL))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: g3yxs.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ism.PRUV2\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -13390,29 +12874,24 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (yqif4.BRQP2 = ism.FV24E)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cpmfe.id = ism.FV24E)))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (nhmxw.id = ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (ism.NZ4MQ = g3yxs.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT(g3yxs.TUV25 IS NULL))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (nhmxw.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT(g3yxs.TUV25 IS NULL))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: g3yxs.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ism.PRUV2\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -13455,35 +12934,30 @@ WHERE " β”‚ β”œβ”€ columns: [cla.FTQLQ as T4IBQ, sn.id as BDNYB, mf.M22QN as M22QN]\n" + " β”‚ └─ HashJoin\n" + " β”‚ β”œβ”€ (bs.id = mf.GXLUB)\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (cla.id = bs.IXUXU)\n" + - " β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + " β”‚ β”‚ └─ TableAlias(bs)\n" + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ β”‚ └─ keys: cla.id\n" + " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: (bs.id)\n" + " β”‚ β”œβ”€ right-key: (mf.GXLUB)\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (mf.LUEVY = sn.BRQP2)\n" + + " β”‚ └─ LookupJoin\n" + " β”‚ β”œβ”€ TableAlias(mf)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”œβ”€ index: [HGMQ6.LUEVY]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + " β”‚ β”‚ └─ columns: [gxlub luevy m22qn]\n" + " β”‚ └─ TableAlias(sn)\n" + " β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id brqp2]\n" + + " β”‚ β”œβ”€ columns: [id brqp2]\n" + + " β”‚ └─ keys: mf.LUEVY\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: ((fs.T4IBQ, fs.M6T2N, fs.BTXC5, fs.TUV25))\n" + " β”œβ”€ right-key: ((zmspr.T4IBQ, zmspr.M6T2N, zmspr.BTXC5, zmspr.TUV25))\n" + @@ -13508,35 +12982,30 @@ WHERE " β”‚ β”œβ”€ columns: [cla.FTQLQ as T4IBQ, sn.id as BDNYB, mf.M22QN as M22QN]\n" + " β”‚ └─ HashJoin\n" + " β”‚ β”œβ”€ (bs.id = mf.GXLUB)\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (cla.id = bs.IXUXU)\n" + - " β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + " β”‚ β”‚ └─ TableAlias(bs)\n" + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id ixuxu]\n" + + " β”‚ β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ β”‚ └─ keys: cla.id\n" + " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: (bs.id)\n" + " β”‚ β”œβ”€ right-key: (mf.GXLUB)\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (mf.LUEVY = sn.BRQP2)\n" + + " β”‚ └─ LookupJoin\n" + " β”‚ β”œβ”€ TableAlias(mf)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”œβ”€ index: [HGMQ6.LUEVY]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + " β”‚ β”‚ └─ columns: [gxlub luevy m22qn]\n" + " β”‚ └─ TableAlias(sn)\n" + " β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id brqp2]\n" + + " β”‚ β”œβ”€ columns: [id brqp2]\n" + + " β”‚ └─ keys: mf.LUEVY\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (cld.BDNYB, cld.M22QN)\n" + " β”œβ”€ right-key: (p4pjz.LWQ6O, p4pjz.NTOFG)\n" + @@ -13675,29 +13144,24 @@ WHERE " β”‚ β”‚ β”‚ β”œβ”€ (yqif4.BRQP2 = ism.FV24E)\n" + " β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cpmfe.id = ism.FV24E)))\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (nhmxw.id = ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (ism.NZ4MQ = g3yxs.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT(g3yxs.TUV25 IS NULL))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (nhmxw.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT(g3yxs.TUV25 IS NULL))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: g3yxs.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ism.PRUV2\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -14134,7 +13598,7 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 18\n" + " β”‚ β”‚ β”‚ β”‚ └─ Distinct\n" + " β”‚ β”‚ β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [ism.FV24E:0!null->FJDP5:0, cpmfe.id:10!null->BJUF2:0, ism.M22QN:2!null->M22QN:0, g3yxs.TUV25:7->TUV25:0, g3yxs.ESFVY:6!null->ESFVY:0, yqif4.id:12!null->QNI57:0, yvhjz.id:15!null->TDEIU:0]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [ism.FV24E:3!null->FJDP5:0, cpmfe.id:10!null->BJUF2:0, ism.M22QN:5!null->M22QN:0, g3yxs.TUV25:2->TUV25:0, g3yxs.ESFVY:1!null->ESFVY:0, yqif4.id:12!null->QNI57:0, yvhjz.id:15!null->TDEIU:0]\n" + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Or\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + @@ -14144,54 +13608,45 @@ WHERE " β”‚ β”‚ β”‚ β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ yvhjz.BRQP2:16!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.UJ6XY:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.UJ6XY:4!null\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ yqif4.BRQP2:13!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:3!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cpmfe.id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ nhmxw.id:8!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.PRUV2:4\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ism.NZ4MQ:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ g3yxs.id:5!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15-23)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:3!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ g3yxs.TUV25:2 IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HDDVB\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ g3yxs.TUV25:2 IS NULL\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-31)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(ism.PRUV2:4)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(nhmxw.id:0!null)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id esfvy tuv25]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-31)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [g3yxs.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15-23)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HDDVB\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.PRUV2:7]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-41)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-41)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 6\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -14204,7 +13659,7 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(yqif4)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.UJ6XY:1!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.UJ6XY:4!null]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (59-68)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 8\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + @@ -14213,7 +13668,7 @@ WHERE " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(yvhjz)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.FV24E:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.FV24E:3!null]\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (69-78)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 9\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + @@ -14255,10 +13710,10 @@ WHERE " β”‚ β”œβ”€ colSet: (232-234)\n" + " β”‚ β”œβ”€ tableId: 17\n" + " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [cla.FTQLQ:8!null->T4IBQ:0, sn.id:0!null->BDNYB:0, mf.M22QN:4!null->M22QN:0]\n" + + " β”‚ β”œβ”€ columns: [cla.FTQLQ:6!null->T4IBQ:0, sn.id:0!null->BDNYB:0, mf.M22QN:4!null->M22QN:0]\n" + " β”‚ └─ HashJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ bs.id:5!null\n" + + " β”‚ β”‚ β”œβ”€ bs.id:7!null\n" + " β”‚ β”‚ └─ mf.GXLUB:2!null\n" + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + @@ -14278,33 +13733,26 @@ WHERE " β”‚ β”‚ └─ columns: [gxlub luevy m22qn]\n" + " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: TUPLE(mf.GXLUB:2!null)\n" + - " β”‚ β”œβ”€ right-key: TUPLE(bs.id:0!null)\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ bs.IXUXU:6\n" + - " β”‚ β”‚ └─ cla.id:7!null\n" + - " β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (110-113)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 13\n" + + " β”‚ β”œβ”€ right-key: TUPLE(bs.id:2!null)\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”œβ”€ static: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (114-143)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 14\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ cla.FTQLQ:1!null\n" + - " β”‚ β”‚ └─ TUPLE(SQ1 (longtext))\n" + - " β”‚ └─ TableAlias(cla)\n" + - " β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (114-143)\n" + - " β”‚ β”œβ”€ tableId: 14\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ └─ TableAlias(bs)\n" + + " β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”œβ”€ keys: [cla.id:5!null]\n" + + " β”‚ β”œβ”€ colSet: (110-113)\n" + + " β”‚ β”œβ”€ tableId: 13\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ └─ columns: [id ixuxu]\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: TUPLE(TUPLE(fs.T4IBQ:0!null, fs.M6T2N:1, fs.BTXC5:2, fs.TUV25:3))\n" + " β”œβ”€ right-key: TUPLE(TUPLE(zmspr.T4IBQ:0!null, zmspr.M6T2N:1, zmspr.BTXC5:2, zmspr.TUV25:3))\n" + @@ -14337,10 +13785,10 @@ WHERE " β”‚ β”œβ”€ colSet: (244-246)\n" + " β”‚ β”œβ”€ tableId: 32\n" + " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [cla.FTQLQ:8!null->T4IBQ:0, sn.id:0!null->BDNYB:0, mf.M22QN:4!null->M22QN:0]\n" + + " β”‚ β”œβ”€ columns: [cla.FTQLQ:6!null->T4IBQ:0, sn.id:0!null->BDNYB:0, mf.M22QN:4!null->M22QN:0]\n" + " β”‚ └─ HashJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ bs.id:5!null\n" + + " β”‚ β”‚ β”œβ”€ bs.id:7!null\n" + " β”‚ β”‚ └─ mf.GXLUB:2!null\n" + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + @@ -14360,33 +13808,26 @@ WHERE " β”‚ β”‚ └─ columns: [gxlub luevy m22qn]\n" + " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: TUPLE(mf.GXLUB:2!null)\n" + - " β”‚ β”œβ”€ right-key: TUPLE(bs.id:0!null)\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ bs.IXUXU:6\n" + - " β”‚ β”‚ └─ cla.id:7!null\n" + - " β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (110-113)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 13\n" + + " β”‚ β”œβ”€ right-key: TUPLE(bs.id:2!null)\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”œβ”€ static: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (114-143)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 14\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ HashIn\n" + - " β”‚ β”‚ β”œβ”€ cla.FTQLQ:1!null\n" + - " β”‚ β”‚ └─ TUPLE(SQ1 (longtext))\n" + - " β”‚ └─ TableAlias(cla)\n" + - " β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (114-143)\n" + - " β”‚ β”œβ”€ tableId: 14\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ └─ TableAlias(bs)\n" + + " β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”œβ”€ keys: [cla.id:5!null]\n" + + " β”‚ β”œβ”€ colSet: (110-113)\n" + + " β”‚ β”œβ”€ tableId: 13\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ └─ columns: [id ixuxu]\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: TUPLE(cld.BDNYB:1!null, cld.M22QN:2!null)\n" + " β”œβ”€ right-key: TUPLE(p4pjz.LWQ6O:3!null, p4pjz.NTOFG:2!null)\n" + @@ -14612,7 +14053,7 @@ WHERE " β”‚ β”‚ β”œβ”€ tableId: 18\n" + " β”‚ β”‚ └─ Distinct\n" + " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [ism.FV24E:0!null->FJDP5:0, cpmfe.id:10!null->BJUF2:0, ism.M22QN:2!null->M22QN:0, g3yxs.TUV25:7->TUV25:0, g3yxs.ESFVY:6!null->ESFVY:0, yqif4.id:12!null->QNI57:0, yvhjz.id:15!null->TDEIU:0]\n" + + " β”‚ β”‚ β”œβ”€ columns: [ism.FV24E:3!null->FJDP5:0, cpmfe.id:10!null->BJUF2:0, ism.M22QN:5!null->M22QN:0, g3yxs.TUV25:2->TUV25:0, g3yxs.ESFVY:1!null->ESFVY:0, yqif4.id:12!null->QNI57:0, yvhjz.id:15!null->TDEIU:0]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ Or\n" + " β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + @@ -14622,54 +14063,45 @@ WHERE " β”‚ β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ yvhjz.BRQP2:16!null\n" + - " β”‚ β”‚ β”‚ └─ ism.UJ6XY:1!null\n" + + " β”‚ β”‚ β”‚ └─ ism.UJ6XY:4!null\n" + " β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ yqif4.BRQP2:13!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:3!null\n" + " β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cpmfe.id:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ nhmxw.id:8!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.PRUV2:4\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ism.NZ4MQ:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ g3yxs.id:5!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15-23)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ism.FV24E:3!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ g3yxs.TUV25:2 IS NULL\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HDDVB\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ g3yxs.TUV25:2 IS NULL\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-31)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 5\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: TUPLE(ism.PRUV2:4)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: TUPLE(nhmxw.id:0!null)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id esfvy tuv25]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-31)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [g3yxs.id:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (15-23)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: HDDVB\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.PRUV2:7]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-41)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (32-41)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 6\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -14682,7 +14114,7 @@ WHERE " β”‚ β”‚ β”‚ └─ TableAlias(yqif4)\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.UJ6XY:1!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ism.UJ6XY:4!null]\n" + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (59-68)\n" + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 8\n" + " β”‚ β”‚ β”‚ └─ Table\n" + @@ -14691,7 +14123,7 @@ WHERE " β”‚ β”‚ └─ TableAlias(yvhjz)\n" + " β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”œβ”€ keys: [ism.FV24E:0!null]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ism.FV24E:3!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (69-78)\n" + " β”‚ β”‚ β”œβ”€ tableId: 9\n" + " β”‚ β”‚ └─ Table\n" + @@ -14872,29 +14304,24 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (yqif4.BRQP2 = ism.FV24E)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cpmfe.id = ism.FV24E)))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (nhmxw.id = ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (ism.NZ4MQ = g3yxs.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT(g3yxs.TUV25 IS NULL))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (nhmxw.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT(g3yxs.TUV25 IS NULL))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: g3yxs.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ism.PRUV2\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -14950,20 +14377,17 @@ WHERE " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: (mf.GXLUB)\n" + " β”‚ β”œβ”€ right-key: (bs.id)\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (bs.IXUXU = cla.id)\n" + - " β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ └─ TableAlias(cla)\n" + - " β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ └─ TableAlias(bs)\n" + + " β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ └─ keys: cla.id\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: ((fs.T4IBQ, fs.M6T2N, fs.BTXC5, fs.TUV25))\n" + " β”œβ”€ right-key: ((zmspr.T4IBQ, zmspr.M6T2N, zmspr.BTXC5, zmspr.TUV25))\n" + @@ -15001,20 +14425,17 @@ WHERE " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: (mf.GXLUB)\n" + " β”‚ β”œβ”€ right-key: (bs.id)\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (bs.IXUXU = cla.id)\n" + - " β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ └─ TableAlias(cla)\n" + - " β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ └─ TableAlias(bs)\n" + + " β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ └─ keys: cla.id\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (cld.BDNYB, cld.M22QN)\n" + " β”œβ”€ right-key: (p4pjz.LWQ6O, p4pjz.NTOFG)\n" + @@ -15153,29 +14574,24 @@ WHERE " β”‚ β”‚ β”‚ β”œβ”€ (yqif4.BRQP2 = ism.FV24E)\n" + " β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cpmfe.id = ism.FV24E)))\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (nhmxw.id = ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (ism.NZ4MQ = g3yxs.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT(g3yxs.TUV25 IS NULL))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (nhmxw.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT(g3yxs.TUV25 IS NULL))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: g3yxs.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ism.PRUV2\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -15358,29 +14774,24 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (yqif4.BRQP2 = ism.FV24E)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cpmfe.id = ism.FV24E)))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (nhmxw.id = ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (ism.NZ4MQ = g3yxs.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT(g3yxs.TUV25 IS NULL))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (nhmxw.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT(g3yxs.TUV25 IS NULL))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: g3yxs.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ism.PRUV2\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -15436,20 +14847,17 @@ WHERE " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: (mf.GXLUB)\n" + " β”‚ β”œβ”€ right-key: (bs.id)\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (bs.IXUXU = cla.id)\n" + - " β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ └─ TableAlias(cla)\n" + - " β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ └─ TableAlias(bs)\n" + + " β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ └─ keys: cla.id\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: ((fs.T4IBQ, fs.M6T2N, fs.BTXC5, fs.TUV25))\n" + " β”œβ”€ right-key: ((zmspr.T4IBQ, zmspr.M6T2N, zmspr.BTXC5, zmspr.TUV25))\n" + @@ -15487,20 +14895,17 @@ WHERE " β”‚ └─ HashLookup\n" + " β”‚ β”œβ”€ left-key: (mf.GXLUB)\n" + " β”‚ β”œβ”€ right-key: (bs.id)\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (bs.IXUXU = cla.id)\n" + - " β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ (cla.FTQLQ HASH IN ('SQ1'))\n" + - " β”‚ └─ TableAlias(cla)\n" + - " β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”œβ”€ filters: [{[SQ1, SQ1]}]\n" + + " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ └─ TableAlias(bs)\n" + + " β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ └─ keys: cla.id\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (cld.BDNYB, cld.M22QN)\n" + " β”œβ”€ right-key: (p4pjz.LWQ6O, p4pjz.NTOFG)\n" + @@ -15639,29 +15044,24 @@ WHERE " β”‚ β”‚ β”‚ β”œβ”€ (yqif4.BRQP2 = ism.FV24E)\n" + " β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT((cpmfe.id = ism.FV24E)))\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (nhmxw.id = ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (ism.NZ4MQ = g3yxs.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(ism)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT(g3yxs.TUV25 IS NULL))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(YYBCX)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [YYBCX.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ HashLookup\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ left-key: (ism.PRUV2)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ right-key: (nhmxw.id)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (NOT(g3yxs.TUV25 IS NULL))\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(g3yxs)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: YYBCX\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id esfvy tuv25]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(ism)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(HDDVB)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [HDDVB.NZ4MQ]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [fv24e uj6xy m22qn nz4mq pruv2]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: g3yxs.id\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.id]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ keys: ism.PRUV2\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(cpmfe)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -16292,35 +15692,26 @@ ORDER BY cla.FTQLQ ASC`, " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [bs.IXUXU:2]\n" + " β”‚ └─ SemiLookupJoin\n" + - " β”‚ β”œβ”€ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [bs.id:0!null, bs.NFRYN:1!null, bs.IXUXU:2, bs.FHCYT:3]\n" + - " β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ bs.id:0!null\n" + - " β”‚ β”‚ β”‚ └─ hgmq6.GXLUB:4!null\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.id]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (31-34)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ β”‚ β”‚ └─ columns: [id nfryn ixuxu fhcyt]\n" + - " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [hgmq6.GXLUB:1!null]\n" + - " β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”œβ”€ index: [HGMQ6.GXLUB]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (35-51)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + - " β”‚ β”‚ └─ columns: [id gxlub luevy m22qn tjpt7 arn5p xosd4 ide43 hmw4h zbt6r fsdy2 lt7k6 sppyd qcgts teuja qqv4m fhcyt]\n" + + " β”‚ β”œβ”€ SemiLookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(bs)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ β”‚ β”‚ └─ columns: [id nfryn ixuxu fhcyt]\n" + + " β”‚ β”‚ └─ Project\n" + + " β”‚ β”‚ β”œβ”€ columns: [hgmq6.GXLUB:1!null]\n" + + " β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + + " β”‚ β”‚ β”œβ”€ index: [HGMQ6.GXLUB]\n" + + " β”‚ β”‚ β”œβ”€ keys: [bs.id:0!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (35-51)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: HGMQ6\n" + + " β”‚ β”‚ └─ columns: [id gxlub luevy m22qn tjpt7 arn5p xosd4 ide43 hmw4h zbt6r fsdy2 lt7k6 sppyd qcgts teuja qqv4m fhcyt]\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [amyxq.GXLUB:1!null]\n" + " β”‚ └─ IndexedTableAccess(AMYXQ)\n" + - " β”‚ β”œβ”€ index: [AMYXQ.GXLUB]\n" + + " β”‚ β”œβ”€ index: [AMYXQ.GXLUB,AMYXQ.LUEVY]\n" + " β”‚ β”œβ”€ keys: [bs.id:0!null]\n" + " β”‚ β”œβ”€ colSet: (52-59)\n" + " β”‚ β”œβ”€ tableId: 4\n" + @@ -16348,23 +15739,19 @@ ORDER BY cla.FTQLQ ASC`, " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [bs.IXUXU]\n" + " β”‚ └─ SemiLookupJoin\n" + - " β”‚ β”œβ”€ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [bs.id, bs.NFRYN, bs.IXUXU, bs.FHCYT]\n" + - " β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (bs.id = hgmq6.GXLUB)\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.id]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [hgmq6.GXLUB]\n" + - " β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”œβ”€ index: [HGMQ6.GXLUB]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”œβ”€ SemiLookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(bs)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ └─ name: THNTS\n" + + " β”‚ β”‚ └─ Project\n" + + " β”‚ β”‚ β”œβ”€ columns: [hgmq6.GXLUB]\n" + + " β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + + " β”‚ β”‚ β”œβ”€ index: [HGMQ6.GXLUB]\n" + + " β”‚ β”‚ └─ keys: bs.id\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [amyxq.GXLUB]\n" + " β”‚ └─ IndexedTableAccess(AMYXQ)\n" + - " β”‚ β”œβ”€ index: [AMYXQ.GXLUB]\n" + + " β”‚ β”œβ”€ index: [AMYXQ.GXLUB,AMYXQ.LUEVY]\n" + " β”‚ └─ keys: bs.id\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (bs.IXUXU)\n" + @@ -16385,23 +15772,19 @@ ORDER BY cla.FTQLQ ASC`, " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [bs.IXUXU]\n" + " β”‚ └─ SemiLookupJoin\n" + - " β”‚ β”œβ”€ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [bs.id, bs.NFRYN, bs.IXUXU, bs.FHCYT]\n" + - " β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (bs.id = hgmq6.GXLUB)\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.id]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [hgmq6.GXLUB]\n" + - " β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + - " β”‚ β”‚ β”œβ”€ index: [HGMQ6.GXLUB]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”œβ”€ SemiLookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(bs)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ └─ name: THNTS\n" + + " β”‚ β”‚ └─ Project\n" + + " β”‚ β”‚ β”œβ”€ columns: [hgmq6.GXLUB]\n" + + " β”‚ β”‚ └─ IndexedTableAccess(HGMQ6)\n" + + " β”‚ β”‚ β”œβ”€ index: [HGMQ6.GXLUB]\n" + + " β”‚ β”‚ └─ keys: bs.id\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [amyxq.GXLUB]\n" + " β”‚ └─ IndexedTableAccess(AMYXQ)\n" + - " β”‚ β”œβ”€ index: [AMYXQ.GXLUB]\n" + + " β”‚ β”œβ”€ index: [AMYXQ.GXLUB,AMYXQ.LUEVY]\n" + " β”‚ └─ keys: bs.id\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (bs.IXUXU)\n" + @@ -16424,93 +15807,74 @@ ORDER BY cla.FTQLQ ASC`, ExpectedPlan: "Sort(cla.FTQLQ:0!null ASC nullsFirst)\n" + " └─ Distinct\n" + " └─ Project\n" + - " β”œβ”€ columns: [cla.FTQLQ:4!null]\n" + - " └─ HashJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ mf.GXLUB:0!null\n" + - " β”‚ └─ bs.id:1!null\n" + - " β”œβ”€ TableAlias(mf)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: HGMQ6\n" + - " β”‚ └─ columns: [gxlub]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(mf.GXLUB:0!null)\n" + - " β”œβ”€ right-key: TUPLE(bs.id:0!null)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ bs.IXUXU:2\n" + - " β”‚ └─ cla.id:3!null\n" + - " β”œβ”€ TableAlias(bs)\n" + - " β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (18-21)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ └─ columns: [id ixuxu]\n" + - " └─ TableAlias(cla)\n" + - " └─ IndexedTableAccess(YK2GW)\n" + - " β”œβ”€ index: [YK2GW.id]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (22-51)\n" + - " β”œβ”€ tableId: 3\n" + - " └─ Table\n" + - " β”œβ”€ name: YK2GW\n" + - " └─ columns: [id ftqlq]\n" + + " β”œβ”€ columns: [cla.FTQLQ:1!null]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ └─ TableAlias(bs)\n" + + " β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”œβ”€ keys: [cla.id:0!null]\n" + + " β”‚ β”œβ”€ colSet: (18-21)\n" + + " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ └─ columns: [id ixuxu]\n" + + " └─ TableAlias(mf)\n" + + " └─ IndexedTableAccess(HGMQ6)\n" + + " β”œβ”€ index: [HGMQ6.GXLUB]\n" + + " β”œβ”€ keys: [bs.id:2!null]\n" + + " β”œβ”€ colSet: (1-17)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: HGMQ6\n" + + " └─ columns: [gxlub]\n" + "", ExpectedEstimates: "Sort(cla.FTQLQ ASC)\n" + " └─ Distinct\n" + " └─ Project\n" + " β”œβ”€ columns: [cla.FTQLQ]\n" + - " └─ HashJoin\n" + - " β”œβ”€ (mf.GXLUB = bs.id)\n" + - " β”œβ”€ TableAlias(mf)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: HGMQ6\n" + - " β”‚ └─ columns: [gxlub]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (mf.GXLUB)\n" + - " β”œβ”€ right-key: (bs.id)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (bs.IXUXU = cla.id)\n" + - " β”œβ”€ TableAlias(bs)\n" + - " β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id ixuxu]\n" + - " └─ TableAlias(cla)\n" + - " └─ IndexedTableAccess(YK2GW)\n" + - " β”œβ”€ index: [YK2GW.id]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [id ftqlq]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ └─ TableAlias(bs)\n" + + " β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ └─ keys: cla.id\n" + + " └─ TableAlias(mf)\n" + + " └─ IndexedTableAccess(HGMQ6)\n" + + " β”œβ”€ index: [HGMQ6.GXLUB]\n" + + " β”œβ”€ columns: [gxlub]\n" + + " └─ keys: bs.id\n" + "", ExpectedAnalysis: "Sort(cla.FTQLQ ASC)\n" + " └─ Distinct\n" + " └─ Project\n" + " β”œβ”€ columns: [cla.FTQLQ]\n" + - " └─ HashJoin\n" + - " β”œβ”€ (mf.GXLUB = bs.id)\n" + - " β”œβ”€ TableAlias(mf)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: HGMQ6\n" + - " β”‚ └─ columns: [gxlub]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (mf.GXLUB)\n" + - " β”œβ”€ right-key: (bs.id)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (bs.IXUXU = cla.id)\n" + - " β”œβ”€ TableAlias(bs)\n" + - " β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [id ixuxu]\n" + - " └─ TableAlias(cla)\n" + - " └─ IndexedTableAccess(YK2GW)\n" + - " β”œβ”€ index: [YK2GW.id]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [id ftqlq]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ └─ TableAlias(bs)\n" + + " β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”œβ”€ columns: [id ixuxu]\n" + + " β”‚ └─ keys: cla.id\n" + + " └─ TableAlias(mf)\n" + + " └─ IndexedTableAccess(HGMQ6)\n" + + " β”œβ”€ index: [HGMQ6.GXLUB]\n" + + " β”œβ”€ columns: [gxlub]\n" + + " └─ keys: bs.id\n" + "", }, { @@ -16535,31 +15899,22 @@ ORDER BY cla.FTQLQ ASC`, " β”œβ”€ Distinct\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [bs.IXUXU:2]\n" + - " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [bs.id:0!null, bs.NFRYN:1!null, bs.IXUXU:2, bs.FHCYT:3]\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ bs.id:0!null\n" + - " β”‚ β”‚ └─ amyxq.GXLUB:4!null\n" + - " β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”œβ”€ index: [THNTS.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (31-34)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ β”‚ └─ columns: [id nfryn ixuxu fhcyt]\n" + - " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [amyxq.GXLUB:1!null]\n" + - " β”‚ └─ IndexedTableAccess(AMYXQ)\n" + - " β”‚ β”œβ”€ index: [AMYXQ.GXLUB,AMYXQ.LUEVY]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (35-42)\n" + - " β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: AMYXQ\n" + - " β”‚ └─ columns: [id gxlub luevy xqdyt amyxq oztqf z35gy kkgn5]\n" + + " β”‚ └─ SemiLookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(bs)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ β”‚ └─ columns: [id nfryn ixuxu fhcyt]\n" + + " β”‚ └─ Project\n" + + " β”‚ β”œβ”€ columns: [amyxq.GXLUB:1!null]\n" + + " β”‚ └─ IndexedTableAccess(AMYXQ)\n" + + " β”‚ β”œβ”€ index: [AMYXQ.GXLUB,AMYXQ.LUEVY]\n" + + " β”‚ β”œβ”€ keys: [bs.id:0!null]\n" + + " β”‚ β”œβ”€ colSet: (35-42)\n" + + " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: AMYXQ\n" + + " β”‚ └─ columns: [id gxlub luevy xqdyt amyxq oztqf z35gy kkgn5]\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: TUPLE(bs.IXUXU:0)\n" + " β”œβ”€ right-key: TUPLE(cla.id:0!null)\n" + @@ -16580,19 +15935,15 @@ ORDER BY cla.FTQLQ ASC`, " β”œβ”€ Distinct\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [bs.IXUXU]\n" + - " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [bs.id, bs.NFRYN, bs.IXUXU, bs.FHCYT]\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (bs.id = amyxq.GXLUB)\n" + - " β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”œβ”€ index: [THNTS.id]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [amyxq.GXLUB]\n" + - " β”‚ └─ IndexedTableAccess(AMYXQ)\n" + - " β”‚ β”œβ”€ index: [AMYXQ.GXLUB,AMYXQ.LUEVY]\n" + - " β”‚ └─ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ SemiLookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(bs)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ └─ name: THNTS\n" + + " β”‚ └─ Project\n" + + " β”‚ β”œβ”€ columns: [amyxq.GXLUB]\n" + + " β”‚ └─ IndexedTableAccess(AMYXQ)\n" + + " β”‚ β”œβ”€ index: [AMYXQ.GXLUB,AMYXQ.LUEVY]\n" + + " β”‚ └─ keys: bs.id\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (bs.IXUXU)\n" + " β”œβ”€ right-key: (cla.id)\n" + @@ -16611,19 +15962,15 @@ ORDER BY cla.FTQLQ ASC`, " β”œβ”€ Distinct\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [bs.IXUXU]\n" + - " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [bs.id, bs.NFRYN, bs.IXUXU, bs.FHCYT]\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (bs.id = amyxq.GXLUB)\n" + - " β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”œβ”€ index: [THNTS.id]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [amyxq.GXLUB]\n" + - " β”‚ └─ IndexedTableAccess(AMYXQ)\n" + - " β”‚ β”œβ”€ index: [AMYXQ.GXLUB,AMYXQ.LUEVY]\n" + - " β”‚ └─ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ SemiLookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(bs)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ └─ name: THNTS\n" + + " β”‚ └─ Project\n" + + " β”‚ β”œβ”€ columns: [amyxq.GXLUB]\n" + + " β”‚ └─ IndexedTableAccess(AMYXQ)\n" + + " β”‚ β”œβ”€ index: [AMYXQ.GXLUB,AMYXQ.LUEVY]\n" + + " β”‚ └─ keys: bs.id\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (bs.IXUXU)\n" + " β”œβ”€ right-key: (cla.id)\n" + @@ -16643,63 +15990,52 @@ ORDER BY ci.FTQLQ`, ExpectedPlan: "Sort(ci.FTQLQ:0!null ASC nullsFirst)\n" + " └─ Distinct\n" + " └─ Project\n" + - " β”œβ”€ columns: [ci.FTQLQ:2!null]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ ct.FZ2R5:0!null\n" + - " β”‚ └─ ci.id:1!null\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ IndexedTableAccess(FLQLP)\n" + - " β”‚ β”œβ”€ index: [FLQLP.FZ2R5]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-12)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”œβ”€ columns: [ci.FTQLQ:1!null]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ TableAlias(ci)\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: FLQLP\n" + - " β”‚ └─ columns: [fz2r5]\n" + - " └─ TableAlias(ci)\n" + - " └─ IndexedTableAccess(JDLNA)\n" + - " β”œβ”€ index: [JDLNA.id]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (13-17)\n" + - " β”œβ”€ tableId: 2\n" + + " β”‚ β”œβ”€ name: JDLNA\n" + + " β”‚ └─ columns: [id ftqlq]\n" + + " └─ TableAlias(ct)\n" + + " └─ IndexedTableAccess(FLQLP)\n" + + " β”œβ”€ index: [FLQLP.FZ2R5]\n" + + " β”œβ”€ keys: [ci.id:0!null]\n" + + " β”œβ”€ colSet: (1-12)\n" + + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + - " β”œβ”€ name: JDLNA\n" + - " └─ columns: [id ftqlq]\n" + + " β”œβ”€ name: FLQLP\n" + + " └─ columns: [fz2r5]\n" + "", ExpectedEstimates: "Sort(ci.FTQLQ ASC)\n" + " └─ Distinct\n" + " └─ Project\n" + " β”œβ”€ columns: [ci.FTQLQ]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (ct.FZ2R5 = ci.id)\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ IndexedTableAccess(FLQLP)\n" + - " β”‚ β”œβ”€ index: [FLQLP.FZ2R5]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [fz2r5]\n" + - " └─ TableAlias(ci)\n" + - " └─ IndexedTableAccess(JDLNA)\n" + - " β”œβ”€ index: [JDLNA.id]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [id ftqlq]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ TableAlias(ci)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: JDLNA\n" + + " β”‚ └─ columns: [id ftqlq]\n" + + " └─ TableAlias(ct)\n" + + " └─ IndexedTableAccess(FLQLP)\n" + + " β”œβ”€ index: [FLQLP.FZ2R5]\n" + + " β”œβ”€ columns: [fz2r5]\n" + + " └─ keys: ci.id\n" + "", ExpectedAnalysis: "Sort(ci.FTQLQ ASC)\n" + " └─ Distinct\n" + " └─ Project\n" + " β”œβ”€ columns: [ci.FTQLQ]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (ct.FZ2R5 = ci.id)\n" + - " β”œβ”€ TableAlias(ct)\n" + - " β”‚ └─ IndexedTableAccess(FLQLP)\n" + - " β”‚ β”œβ”€ index: [FLQLP.FZ2R5]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [fz2r5]\n" + - " └─ TableAlias(ci)\n" + - " └─ IndexedTableAccess(JDLNA)\n" + - " β”œβ”€ index: [JDLNA.id]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [id ftqlq]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ TableAlias(ci)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: JDLNA\n" + + " β”‚ └─ columns: [id ftqlq]\n" + + " └─ TableAlias(ct)\n" + + " └─ IndexedTableAccess(FLQLP)\n" + + " β”œβ”€ index: [FLQLP.FZ2R5]\n" + + " β”œβ”€ columns: [fz2r5]\n" + + " └─ keys: ci.id\n" + "", }, { @@ -16787,10 +16123,7 @@ ORDER BY LUEVY`, " β”‚ β”œβ”€ ybbg5.DZLIM:13!null\n" + " β”‚ └─ AX25H (longtext)\n" + " β”‚ THEN r70 (longtext) WHEN ybbg5.DZLIM:13!null IS NULL THEN (longtext) ELSE ybbg5.DZLIM:13!null END->UBUYI:0, ypgda.FUG6J:9->FUG6J:0, ypgda.NF5AM:10->NF5AM:0, ypgda.FRCVC:11!null->FRCVC:0]\n" + - " └─ LeftOuterHashJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ ypgda.I3L5A:8\n" + - " β”‚ └─ ybbg5.id:12!null\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ SubqueryAlias\n" + " β”‚ β”œβ”€ name: ypgda\n" + " β”‚ β”œβ”€ outerVisibility: false\n" + @@ -16854,22 +16187,22 @@ ORDER BY LUEVY`, " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: TNMXI\n" + " β”‚ └─ columns: [id dzlim f3yue]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(ypgda.I3L5A:8)\n" + - " β”œβ”€ right-key: TUPLE(ybbg5.id:0!null)\n" + - " └─ TableAlias(ybbg5)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: XGSJM\n" + - " └─ columns: [id dzlim f3yue]\n" + + " └─ TableAlias(ybbg5)\n" + + " └─ IndexedTableAccess(XGSJM)\n" + + " β”œβ”€ index: [XGSJM.id]\n" + + " β”œβ”€ keys: [ypgda.I3L5A:8]\n" + + " β”œβ”€ colSet: (53-55)\n" + + " β”œβ”€ tableId: 5\n" + + " └─ Table\n" + + " β”œβ”€ name: XGSJM\n" + + " └─ columns: [id dzlim f3yue]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [ypgda.LUEVY as LUEVY, ypgda.TW55N as TW55N, ypgda.IYDZV as IYDZV, '' as IIISV, ypgda.QRQXW as QRQXW, ypgda.CAECS as CAECS, ypgda.CJLLY as CJLLY, ypgda.SHP7H as SHP7H, ypgda.HARAZ as HARAZ, '' as ECUWU, '' as LDMO7, CASE WHEN (ybbg5.DZLIM = 'HGUEM') THEN 's30' WHEN (ybbg5.DZLIM = 'YUHMV') THEN 'r90' WHEN (ybbg5.DZLIM = 'T3JIU') THEN 'r50' WHEN (ybbg5.DZLIM = 's') THEN 's' WHEN (ybbg5.DZLIM = 'AX25H') THEN 'r70' WHEN ybbg5.DZLIM IS NULL THEN '' ELSE ybbg5.DZLIM END as UBUYI, ypgda.FUG6J as FUG6J, ypgda.NF5AM as NF5AM, ypgda.FRCVC as FRCVC]\n" + " └─ Sort(LUEVY ASC)\n" + " └─ Project\n" + " β”œβ”€ columns: [ypgda.LUEVY, ypgda.TW55N, ypgda.IYDZV, ypgda.QRQXW, ypgda.CAECS, ypgda.CJLLY, ypgda.SHP7H, ypgda.HARAZ, ypgda.I3L5A, ypgda.FUG6J, ypgda.NF5AM, ypgda.FRCVC, ybbg5.id, ybbg5.DZLIM, ybbg5.F3YUE, ypgda.LUEVY as LUEVY, ypgda.TW55N as TW55N, ypgda.IYDZV as IYDZV, '' as IIISV, ypgda.QRQXW as QRQXW, ypgda.CAECS as CAECS, ypgda.CJLLY as CJLLY, ypgda.SHP7H as SHP7H, ypgda.HARAZ as HARAZ, '' as ECUWU, '' as LDMO7, CASE WHEN (ybbg5.DZLIM = 'HGUEM') THEN 's30' WHEN (ybbg5.DZLIM = 'YUHMV') THEN 'r90' WHEN (ybbg5.DZLIM = 'T3JIU') THEN 'r50' WHEN (ybbg5.DZLIM = 's') THEN 's' WHEN (ybbg5.DZLIM = 'AX25H') THEN 'r70' WHEN ybbg5.DZLIM IS NULL THEN '' ELSE ybbg5.DZLIM END as UBUYI, ypgda.FUG6J as FUG6J, ypgda.NF5AM as NF5AM, ypgda.FRCVC as FRCVC]\n" + - " └─ LeftOuterHashJoin\n" + - " β”œβ”€ (ypgda.I3L5A = ybbg5.id)\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ SubqueryAlias\n" + " β”‚ β”œβ”€ name: ypgda\n" + " β”‚ β”œβ”€ outerVisibility: false\n" + @@ -16909,21 +16242,18 @@ ORDER BY LUEVY`, " β”‚ └─ IndexedTableAccess(TNMXI)\n" + " β”‚ β”œβ”€ index: [TNMXI.id]\n" + " β”‚ └─ keys: nd.HPCMS\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (ypgda.I3L5A)\n" + - " β”œβ”€ right-key: (ybbg5.id)\n" + - " └─ TableAlias(ybbg5)\n" + - " └─ Table\n" + - " β”œβ”€ name: XGSJM\n" + - " └─ columns: [id dzlim f3yue]\n" + + " └─ TableAlias(ybbg5)\n" + + " └─ IndexedTableAccess(XGSJM)\n" + + " β”œβ”€ index: [XGSJM.id]\n" + + " β”œβ”€ columns: [id dzlim f3yue]\n" + + " └─ keys: ypgda.I3L5A\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [ypgda.LUEVY as LUEVY, ypgda.TW55N as TW55N, ypgda.IYDZV as IYDZV, '' as IIISV, ypgda.QRQXW as QRQXW, ypgda.CAECS as CAECS, ypgda.CJLLY as CJLLY, ypgda.SHP7H as SHP7H, ypgda.HARAZ as HARAZ, '' as ECUWU, '' as LDMO7, CASE WHEN (ybbg5.DZLIM = 'HGUEM') THEN 's30' WHEN (ybbg5.DZLIM = 'YUHMV') THEN 'r90' WHEN (ybbg5.DZLIM = 'T3JIU') THEN 'r50' WHEN (ybbg5.DZLIM = 's') THEN 's' WHEN (ybbg5.DZLIM = 'AX25H') THEN 'r70' WHEN ybbg5.DZLIM IS NULL THEN '' ELSE ybbg5.DZLIM END as UBUYI, ypgda.FUG6J as FUG6J, ypgda.NF5AM as NF5AM, ypgda.FRCVC as FRCVC]\n" + " └─ Sort(LUEVY ASC)\n" + " └─ Project\n" + " β”œβ”€ columns: [ypgda.LUEVY, ypgda.TW55N, ypgda.IYDZV, ypgda.QRQXW, ypgda.CAECS, ypgda.CJLLY, ypgda.SHP7H, ypgda.HARAZ, ypgda.I3L5A, ypgda.FUG6J, ypgda.NF5AM, ypgda.FRCVC, ybbg5.id, ybbg5.DZLIM, ybbg5.F3YUE, ypgda.LUEVY as LUEVY, ypgda.TW55N as TW55N, ypgda.IYDZV as IYDZV, '' as IIISV, ypgda.QRQXW as QRQXW, ypgda.CAECS as CAECS, ypgda.CJLLY as CJLLY, ypgda.SHP7H as SHP7H, ypgda.HARAZ as HARAZ, '' as ECUWU, '' as LDMO7, CASE WHEN (ybbg5.DZLIM = 'HGUEM') THEN 's30' WHEN (ybbg5.DZLIM = 'YUHMV') THEN 'r90' WHEN (ybbg5.DZLIM = 'T3JIU') THEN 'r50' WHEN (ybbg5.DZLIM = 's') THEN 's' WHEN (ybbg5.DZLIM = 'AX25H') THEN 'r70' WHEN ybbg5.DZLIM IS NULL THEN '' ELSE ybbg5.DZLIM END as UBUYI, ypgda.FUG6J as FUG6J, ypgda.NF5AM as NF5AM, ypgda.FRCVC as FRCVC]\n" + - " └─ LeftOuterHashJoin\n" + - " β”œβ”€ (ypgda.I3L5A = ybbg5.id)\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ SubqueryAlias\n" + " β”‚ β”œβ”€ name: ypgda\n" + " β”‚ β”œβ”€ outerVisibility: false\n" + @@ -16963,13 +16293,11 @@ ORDER BY LUEVY`, " β”‚ └─ IndexedTableAccess(TNMXI)\n" + " β”‚ β”œβ”€ index: [TNMXI.id]\n" + " β”‚ └─ keys: nd.HPCMS\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (ypgda.I3L5A)\n" + - " β”œβ”€ right-key: (ybbg5.id)\n" + - " └─ TableAlias(ybbg5)\n" + - " └─ Table\n" + - " β”œβ”€ name: XGSJM\n" + - " └─ columns: [id dzlim f3yue]\n" + + " └─ TableAlias(ybbg5)\n" + + " └─ IndexedTableAccess(XGSJM)\n" + + " β”œβ”€ index: [XGSJM.id]\n" + + " β”œβ”€ columns: [id dzlim f3yue]\n" + + " └─ keys: ypgda.I3L5A\n" + "", }, { @@ -17056,23 +16384,16 @@ ORDER BY sn.id ASC`, " └─ Sort(sn.id:0!null ASC nullsFirst)\n" + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ LeftOuterLookupJoin\n" + - " β”‚ β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ sn.BRQP2:1!null\n" + - " β”‚ β”‚ β”‚ └─ tvqg4.id:10!null\n" + + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-10)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + " β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + " β”‚ β”‚ └─ TableAlias(tvqg4)\n" + " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”œβ”€ keys: [sn.BRQP2:1!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (11-27)\n" + " β”‚ β”‚ β”œβ”€ tableId: 2\n" + " β”‚ β”‚ └─ Table\n" + @@ -17102,18 +16423,16 @@ ORDER BY sn.id ASC`, " └─ Sort(sn.id ASC)\n" + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ LeftOuterLookupJoin\n" + - " β”‚ β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (sn.BRQP2 = tvqg4.id)\n" + + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + " β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + " β”‚ β”‚ └─ TableAlias(tvqg4)\n" + " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ β”œβ”€ columns: [id tw55n]\n" + + " β”‚ β”‚ └─ keys: sn.BRQP2\n" + " β”‚ └─ TableAlias(lsm32)\n" + " β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”œβ”€ index: [E2I7U.id]\n" + @@ -17130,18 +16449,16 @@ ORDER BY sn.id ASC`, " └─ Sort(sn.id ASC)\n" + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ LeftOuterLookupJoin\n" + - " β”‚ β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (sn.BRQP2 = tvqg4.id)\n" + + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + " β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + " β”‚ β”‚ └─ TableAlias(tvqg4)\n" + " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”œβ”€ index: [E2I7U.id]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [id tw55n]\n" + + " β”‚ β”‚ β”œβ”€ columns: [id tw55n]\n" + + " β”‚ β”‚ └─ keys: sn.BRQP2\n" + " β”‚ └─ TableAlias(lsm32)\n" + " β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”œβ”€ index: [E2I7U.id]\n" + @@ -17241,23 +16558,16 @@ ORDER BY rn.id ASC`, " β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ rn.WNUNU:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ jgt2h.id:6!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(rn)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(QYWQD)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [QYWQD.WNUNU]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: QYWQD\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id wnunu hhvlx hvhrz ykssu fhcyt]\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(jgt2h)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [rn.WNUNU:1!null]\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (7-16)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + @@ -17307,18 +16617,16 @@ ORDER BY rn.id ASC`, " β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (rn.WNUNU = jgt2h.id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(rn)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(QYWQD)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [QYWQD.WNUNU]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: QYWQD\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id wnunu hhvlx hvhrz ykssu fhcyt]\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(jgt2h)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj letoe]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id brqp2 fftbj letoe]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: rn.WNUNU\n" + " β”‚ β”‚ β”‚ └─ TableAlias(ayfcd)\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.id]\n" + @@ -17347,18 +16655,16 @@ ORDER BY rn.id ASC`, " β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (rn.WNUNU = jgt2h.id)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ TableAlias(rn)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(QYWQD)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [QYWQD.WNUNU]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: QYWQD\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id wnunu hhvlx hvhrz ykssu fhcyt]\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(jgt2h)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.id]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [id brqp2 fftbj letoe]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id brqp2 fftbj letoe]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: rn.WNUNU\n" + " β”‚ β”‚ β”‚ └─ TableAlias(ayfcd)\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.id]\n" + @@ -17600,8 +16906,8 @@ INNER JOIN XOAOP pa "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [pa.DZLIM as ECUWU, nd.TW55N]\n" + - " └─ LookupJoin (estimated cost=19.800 rows=6)\n" + - " β”œβ”€ LookupJoin (estimated cost=19.800 rows=6)\n" + + " └─ LookupJoin (estimated cost=13.800 rows=6)\n" + + " β”œβ”€ LookupJoin (estimated cost=13.800 rows=6)\n" + " β”‚ β”œβ”€ TableAlias(qnrbh)\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: JJGQT\n" + @@ -17619,8 +16925,8 @@ INNER JOIN XOAOP pa "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [pa.DZLIM as ECUWU, nd.TW55N]\n" + - " └─ LookupJoin (estimated cost=19.800 rows=6) (actual rows=0 loops=1)\n" + - " β”œβ”€ LookupJoin (estimated cost=19.800 rows=6) (actual rows=0 loops=1)\n" + + " └─ LookupJoin (estimated cost=13.800 rows=6) (actual rows=0 loops=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=13.800 rows=6) (actual rows=0 loops=1)\n" + " β”‚ β”œβ”€ TableAlias(qnrbh)\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: JJGQT\n" + @@ -17827,23 +17133,17 @@ WHERE nd.FGG57 IS NOT NULL AND nd.KNG7T IS NULL`, " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ ltnm.FGG57:19!null\n" + " β”‚ β”‚ └─ nd.FGG57:6\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ gn.SSHPJ:18!null\n" + - " β”‚ β”‚ └─ ltnm.SSHPJ:20!null\n" + + " β”‚ └─ LookupJoin\n" + " β”‚ β”œβ”€ TableAlias(gn)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(WE72E)\n" + - " β”‚ β”‚ β”œβ”€ index: [WE72E.SSHPJ]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: WE72E\n" + + " β”‚ β”‚ β”œβ”€ columns: [id sshpj]\n" + " β”‚ β”‚ β”œβ”€ colSet: (18-21)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: WE72E\n" + - " β”‚ β”‚ └─ columns: [id sshpj]\n" + + " β”‚ β”‚ └─ tableId: 2\n" + " β”‚ └─ TableAlias(ltnm)\n" + " β”‚ └─ IndexedTableAccess(TDRVG)\n" + " β”‚ β”œβ”€ index: [TDRVG.SSHPJ]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”œβ”€ keys: [gn.SSHPJ:18!null]\n" + " β”‚ β”œβ”€ colSet: (22-26)\n" + " β”‚ β”œβ”€ tableId: 3\n" + " β”‚ └─ Table\n" + @@ -18162,27 +17462,21 @@ FROM " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ rn.HHVLX:7!null\n" + " β”‚ β”‚ └─ skpm6.id:4!null\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ sn.FFTBJ:1!null\n" + - " β”‚ β”‚ β”‚ └─ skpm6.BRQP2:5!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ sn.NUMK2:3!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ 1 (int)\n" + " β”‚ β”‚ β”‚ └─ TableAlias(sn)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [NOXN3.FFTBJ]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [id fftbj ecdkm numk2]\n" + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (7-16)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: NOXN3\n" + - " β”‚ β”‚ β”‚ └─ columns: [id fftbj ecdkm numk2]\n" + + " β”‚ β”‚ β”‚ └─ tableId: 2\n" + " β”‚ β”‚ └─ TableAlias(skpm6)\n" + " β”‚ β”‚ └─ IndexedTableAccess(NOXN3)\n" + " β”‚ β”‚ β”œβ”€ index: [NOXN3.BRQP2]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”œβ”€ keys: [sn.FFTBJ:1!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (17-26)\n" + " β”‚ β”‚ β”œβ”€ tableId: 3\n" + " β”‚ β”‚ └─ Table\n" + @@ -18390,14 +17684,11 @@ WHERE " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:40!null\n" + " β”‚ β”‚ β”‚ └─ ufc.T4IBQ:1\n" + - " β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cla.id:39!null\n" + - " β”‚ β”‚ β”‚ └─ bs.IXUXU:42\n" + + " β”‚ β”‚ └─ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ufc.T4IBQ:1]\n" + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (45-74)\n" + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + " β”‚ β”‚ β”‚ └─ Table\n" + @@ -18406,7 +17697,7 @@ WHERE " β”‚ β”‚ └─ TableAlias(bs)\n" + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cla.id:39!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (41-44)\n" + " β”‚ β”‚ β”œβ”€ tableId: 5\n" + " β”‚ β”‚ └─ Table\n" + @@ -18438,14 +17729,11 @@ WHERE " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:32!null\n" + " β”‚ β”‚ β”‚ └─ ufc.T4IBQ:1\n" + - " β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cla.id:31!null\n" + - " β”‚ β”‚ β”‚ └─ bs.IXUXU:34\n" + + " β”‚ β”‚ └─ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ufc.T4IBQ:1]\n" + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (45-74)\n" + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 6\n" + " β”‚ β”‚ β”‚ └─ Table\n" + @@ -18454,7 +17742,7 @@ WHERE " β”‚ β”‚ └─ TableAlias(bs)\n" + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cla.id:31!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (41-44)\n" + " β”‚ β”‚ β”œβ”€ tableId: 5\n" + " β”‚ β”‚ └─ Table\n" + @@ -18476,38 +17764,34 @@ WHERE " β”‚ β”‚ β”œβ”€ ybbg5.DZLIM:29!null\n" + " β”‚ β”‚ └─ DN3OQ (longtext)\n" + " β”‚ β”‚ THEN (ufc.DN3OQ:6 + 0 (decimal(2,1))) ELSE NULL (null) END->OZTQF:0, (ufc.SRZZO:9 + 0 (decimal(2,1)))->Z35GY:0, ufc.id:0!null->KKGN5:0]\n" + - " β”‚ └─ InnerJoin\n" + + " β”‚ └─ HashJoin\n" + " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ nd.ZH72S:18\n" + - " β”‚ β”‚ └─ ufc.ZH72S:2\n" + - " β”‚ β”œβ”€ TableAlias(ufc)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(SISUT)\n" + - " β”‚ β”‚ β”œβ”€ index: [SISUT.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[1, 1]}, {[2, 2]}, {[3, 3]}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (9-19)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: SISUT\n" + - " β”‚ β”‚ └─ columns: [id t4ibq zh72s amyxq ktnz2 hiid2 dn3oq vvknb sh7tp srzzo qz6vt]\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ nd.XQDYT:20!null\n" + - " β”‚ β”‚ └─ ybbg5.id:28!null\n" + - " β”‚ β”œβ”€ TableAlias(nd)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + - " β”‚ β”‚ β”œβ”€ index: [E2I7U.XQDYT]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (20-36)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: E2I7U\n" + - " β”‚ β”‚ └─ columns: [id dkcaj kng7t tw55n qrqxw ecxaj fgg57 zh72s fsk67 xqdyt tce7a iwv2h hpcms n5cc2 fhcyt etaq7 a75x7]\n" + + " β”‚ β”‚ β”œβ”€ ybbg5.id:28!null\n" + + " β”‚ β”‚ └─ nd.XQDYT:20!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(ufc)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(SISUT)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [SISUT.id]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ static: [{[1, 1]}, {[2, 2]}, {[3, 3]}]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (9-19)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: SISUT\n" + + " β”‚ β”‚ β”‚ └─ columns: [id t4ibq zh72s amyxq ktnz2 hiid2 dn3oq vvknb sh7tp srzzo qz6vt]\n" + + " β”‚ β”‚ └─ TableAlias(nd)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + + " β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ufc.ZH72S:2]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (20-36)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: E2I7U\n" + + " β”‚ β”‚ └─ columns: [id dkcaj kng7t tw55n qrqxw ecxaj fgg57 zh72s fsk67 xqdyt tce7a iwv2h hpcms n5cc2 fhcyt etaq7 a75x7]\n" + + " β”‚ └─ HashLookup\n" + + " β”‚ β”œβ”€ left-key: TUPLE(nd.XQDYT:20!null)\n" + + " β”‚ β”œβ”€ right-key: TUPLE(ybbg5.id:0!null)\n" + " β”‚ └─ TableAlias(ybbg5)\n" + - " β”‚ └─ IndexedTableAccess(XGSJM)\n" + - " β”‚ β”œβ”€ index: [XGSJM.id]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (37-39)\n" + - " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: XGSJM\n" + " β”‚ └─ columns: [id dzlim f3yue]\n" + @@ -18599,33 +17883,30 @@ WHERE " β”‚ β”‚ β”œβ”€ cacheable: false\n" + " β”‚ β”‚ β”œβ”€ alias-string: select bs.id from THNTS as bs join YK2GW as cla on cla.id = bs.IXUXU where cla.FTQLQ = ums.T4IBQ\n" + " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [bs.id:12!null]\n" + + " β”‚ β”‚ β”œβ”€ columns: [bs.id:14!null]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:15!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:13!null\n" + " β”‚ β”‚ β”‚ └─ ums.T4IBQ:1\n" + - " β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ bs.IXUXU:13\n" + - " β”‚ β”‚ β”‚ └─ cla.id:14!null\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (14-17)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ums.T4IBQ:1]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (18-47)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (18-47)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cla.id:12!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (14-17)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 3\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ β”‚ └─ columns: [id ixuxu]\n" + " β”‚ β”‚ ->GXLUB:0, Subquery\n" + " β”‚ β”‚ β”œβ”€ cacheable: true\n" + " β”‚ β”‚ β”œβ”€ alias-string: select id from XOAOP where DZLIM = 'NER'\n" + @@ -18651,33 +17932,30 @@ WHERE " β”‚ β”‚ β”œβ”€ cacheable: false\n" + " β”‚ β”‚ β”œβ”€ alias-string: select bs.id from THNTS as bs join YK2GW as cla on cla.id = bs.IXUXU where cla.FTQLQ = ums.T4IBQ\n" + " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [bs.id:7!null]\n" + + " β”‚ β”‚ β”œβ”€ columns: [bs.id:9!null]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:10!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:8!null\n" + " β”‚ β”‚ β”‚ └─ ums.T4IBQ:1\n" + - " β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ bs.IXUXU:8\n" + - " β”‚ β”‚ β”‚ └─ cla.id:9!null\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (14-17)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ums.T4IBQ:1]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (18-47)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (18-47)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cla.id:7!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (14-17)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 3\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ β”‚ └─ columns: [id ixuxu]\n" + " β”‚ β”‚ ->GXLUB:0, Subquery\n" + " β”‚ β”‚ β”œβ”€ cacheable: true\n" + " β”‚ β”‚ β”œβ”€ alias-string: select id from XOAOP where DZLIM = 'NER'\n" + @@ -18791,33 +18069,30 @@ WHERE " β”‚ β”‚ β”œβ”€ cacheable: false\n" + " β”‚ β”‚ β”œβ”€ alias-string: select bs.id from THNTS as bs join YK2GW as cla on cla.id = bs.IXUXU where cla.FTQLQ = ums.T4IBQ\n" + " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [bs.id:12!null]\n" + + " β”‚ β”‚ β”œβ”€ columns: [bs.id:14!null]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:15!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:13!null\n" + " β”‚ β”‚ β”‚ └─ ums.T4IBQ:1\n" + - " β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ bs.IXUXU:13\n" + - " β”‚ β”‚ β”‚ └─ cla.id:14!null\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (14-17)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ums.T4IBQ:1]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (18-47)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (18-47)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cla.id:12!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (14-17)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 3\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ β”‚ └─ columns: [id ixuxu]\n" + " β”‚ β”‚ ->GXLUB:0, Subquery\n" + " β”‚ β”‚ β”œβ”€ cacheable: true\n" + " β”‚ β”‚ β”œβ”€ alias-string: select id from XOAOP where DZLIM = 'BER'\n" + @@ -18843,33 +18118,30 @@ WHERE " β”‚ β”‚ β”œβ”€ cacheable: false\n" + " β”‚ β”‚ β”œβ”€ alias-string: select bs.id from THNTS as bs join YK2GW as cla on cla.id = bs.IXUXU where cla.FTQLQ = ums.T4IBQ\n" + " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [bs.id:7!null]\n" + + " β”‚ β”‚ β”œβ”€ columns: [bs.id:9!null]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:10!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:8!null\n" + " β”‚ β”‚ β”‚ └─ ums.T4IBQ:1\n" + - " β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ bs.IXUXU:8\n" + - " β”‚ β”‚ β”‚ └─ cla.id:9!null\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (14-17)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ums.T4IBQ:1]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (18-47)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (18-47)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cla.id:7!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (14-17)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 3\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ β”‚ └─ columns: [id ixuxu]\n" + " β”‚ β”‚ ->GXLUB:0, Subquery\n" + " β”‚ β”‚ β”œβ”€ cacheable: true\n" + " β”‚ β”‚ β”œβ”€ alias-string: select id from XOAOP where DZLIM = 'BER'\n" + @@ -18983,33 +18255,30 @@ WHERE " β”‚ β”‚ β”œβ”€ cacheable: false\n" + " β”‚ β”‚ β”œβ”€ alias-string: select bs.id from THNTS as bs join YK2GW as cla on cla.id = bs.IXUXU where cla.FTQLQ = ums.T4IBQ\n" + " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [bs.id:12!null]\n" + + " β”‚ β”‚ β”œβ”€ columns: [bs.id:14!null]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:15!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:13!null\n" + " β”‚ β”‚ β”‚ └─ ums.T4IBQ:1\n" + - " β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ bs.IXUXU:13\n" + - " β”‚ β”‚ β”‚ └─ cla.id:14!null\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (14-17)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ums.T4IBQ:1]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (18-47)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (18-47)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cla.id:12!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (14-17)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 3\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ β”‚ └─ columns: [id ixuxu]\n" + " β”‚ β”‚ ->GXLUB:0, Subquery\n" + " β”‚ β”‚ β”œβ”€ cacheable: true\n" + " β”‚ β”‚ β”œβ”€ alias-string: select id from XOAOP where DZLIM = 'HR'\n" + @@ -19035,33 +18304,30 @@ WHERE " β”‚ β”‚ β”œβ”€ cacheable: false\n" + " β”‚ β”‚ β”œβ”€ alias-string: select bs.id from THNTS as bs join YK2GW as cla on cla.id = bs.IXUXU where cla.FTQLQ = ums.T4IBQ\n" + " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [bs.id:7!null]\n" + + " β”‚ β”‚ β”œβ”€ columns: [bs.id:9!null]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:10!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:8!null\n" + " β”‚ β”‚ β”‚ └─ ums.T4IBQ:1\n" + - " β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ bs.IXUXU:8\n" + - " β”‚ β”‚ β”‚ └─ cla.id:9!null\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (14-17)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ums.T4IBQ:1]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (18-47)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (18-47)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cla.id:7!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (14-17)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 3\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ β”‚ └─ columns: [id ixuxu]\n" + " β”‚ β”‚ ->GXLUB:0, Subquery\n" + " β”‚ β”‚ β”œβ”€ cacheable: true\n" + " β”‚ β”‚ β”œβ”€ alias-string: select id from XOAOP where DZLIM = 'HR'\n" + @@ -19175,33 +18441,30 @@ WHERE " β”‚ β”‚ β”œβ”€ cacheable: false\n" + " β”‚ β”‚ β”œβ”€ alias-string: select bs.id from THNTS as bs join YK2GW as cla on cla.id = bs.IXUXU where cla.FTQLQ = ums.T4IBQ\n" + " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [bs.id:12!null]\n" + + " β”‚ β”‚ β”œβ”€ columns: [bs.id:14!null]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:15!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:13!null\n" + " β”‚ β”‚ β”‚ └─ ums.T4IBQ:1\n" + - " β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ bs.IXUXU:13\n" + - " β”‚ β”‚ β”‚ └─ cla.id:14!null\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (14-17)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ums.T4IBQ:1]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (18-47)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (18-47)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cla.id:12!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (14-17)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 3\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ β”‚ └─ columns: [id ixuxu]\n" + " β”‚ β”‚ ->GXLUB:0, Subquery\n" + " β”‚ β”‚ β”œβ”€ cacheable: true\n" + " β”‚ β”‚ β”œβ”€ alias-string: select id from XOAOP where DZLIM = 'MMR'\n" + @@ -19227,33 +18490,30 @@ WHERE " β”‚ β”‚ β”œβ”€ cacheable: false\n" + " β”‚ β”‚ β”œβ”€ alias-string: select bs.id from THNTS as bs join YK2GW as cla on cla.id = bs.IXUXU where cla.FTQLQ = ums.T4IBQ\n" + " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [bs.id:7!null]\n" + + " β”‚ β”‚ β”œβ”€ columns: [bs.id:9!null]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:10!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ cla.FTQLQ:8!null\n" + " β”‚ β”‚ β”‚ └─ ums.T4IBQ:1\n" + - " β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ bs.IXUXU:8\n" + - " β”‚ β”‚ β”‚ └─ cla.id:9!null\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(bs)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (14-17)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(cla)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [YK2GW.FTQLQ]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [ums.T4IBQ:1]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (18-47)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: THNTS\n" + - " β”‚ β”‚ β”‚ └─ columns: [id ixuxu]\n" + - " β”‚ β”‚ └─ TableAlias(cla)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(YK2GW)\n" + - " β”‚ β”‚ β”œβ”€ index: [YK2GW.id]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (18-47)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: YK2GW\n" + + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ └─ TableAlias(bs)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(THNTS)\n" + + " β”‚ β”‚ β”œβ”€ index: [THNTS.IXUXU]\n" + + " β”‚ β”‚ β”œβ”€ keys: [cla.id:7!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (14-17)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 3\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: YK2GW\n" + - " β”‚ β”‚ └─ columns: [id ftqlq]\n" + + " β”‚ β”‚ β”œβ”€ name: THNTS\n" + + " β”‚ β”‚ └─ columns: [id ixuxu]\n" + " β”‚ β”‚ ->GXLUB:0, Subquery\n" + " β”‚ β”‚ β”œβ”€ cacheable: true\n" + " β”‚ β”‚ β”œβ”€ alias-string: select id from XOAOP where DZLIM = 'MMR'\n" + @@ -19953,10 +19213,7 @@ INNER JOIN D34QP vc ON C6PUD.AZ6SP LIKE CONCAT(CONCAT('%', vc.TWMSR), '%')`, " β”œβ”€ tableId: 4\n" + " └─ Project\n" + " β”œβ”€ columns: [mf.id:2!null->id:0, umf.AZ6SP:1->AZ6SP:0]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ umf.id:0!null\n" + - " β”‚ └─ mf.TEUJA:3\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(umf)\n" + " β”‚ └─ IndexedTableAccess(NZKPM)\n" + " β”‚ β”œβ”€ index: [NZKPM.id]\n" + @@ -19967,11 +19224,14 @@ INNER JOIN D34QP vc ON C6PUD.AZ6SP LIKE CONCAT(CONCAT('%', vc.TWMSR), '%')`, " β”‚ β”œβ”€ name: NZKPM\n" + " β”‚ └─ columns: [id az6sp]\n" + " └─ TableAlias(mf)\n" + - " └─ Table\n" + - " β”œβ”€ name: HGMQ6\n" + - " β”œβ”€ columns: [id teuja]\n" + + " └─ IndexedTableAccess(HGMQ6)\n" + + " β”œβ”€ index: [HGMQ6.TEUJA]\n" + + " β”œβ”€ keys: [umf.id:0!null]\n" + " β”œβ”€ colSet: (4-20)\n" + - " └─ tableId: 2\n" + + " β”œβ”€ tableId: 2\n" + + " └─ Table\n" + + " β”œβ”€ name: HGMQ6\n" + + " └─ columns: [id teuja]\n" + "", }, { @@ -20149,17 +19409,13 @@ FROM " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ nhmxw.SWCQV:17!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 0 (int)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ nhmxw.NOHHR:11!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tizhk.TVNW2:1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ nhmxw.SWCQV:17!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 0 (int)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ nhmxw.AVPYF:12!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tizhk.ZHITY:2\n" + @@ -20179,11 +19435,14 @@ FROM " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WRZVO\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id tvnw2 zhity sypkf idut2 o6qj3 no2ja ykssu fhcyt qz6vt]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(nhmxw)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [id nohhr avpyf sypkf idut2 fzxv5 dqygv swcqv ykssu fhcyt]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [WGSDC.NOHHR]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [tizhk.TVNW2:1]\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (20-29)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: WGSDC\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [id nohhr avpyf sypkf idut2 fzxv5 dqygv swcqv ykssu fhcyt]\n" + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(j4jyp)\n" + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -20392,17 +19651,13 @@ FROM " β”‚ └─ nhmxw.id:10!null IS NULL\n" + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ LeftOuterLookupJoin\n" + - " β”‚ β”œβ”€ LeftOuterJoin\n" + + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ nhmxw.SWCQV:17!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 0 (int)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ nhmxw.NOHHR:11!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ tizhk.TVNW2:1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ nhmxw.SWCQV:17!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 0 (int)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ nhmxw.AVPYF:12!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ tizhk.ZHITY:2\n" + @@ -20422,11 +19677,14 @@ FROM " β”‚ β”‚ β”‚ β”œβ”€ name: WRZVO\n" + " β”‚ β”‚ β”‚ └─ columns: [id tvnw2 zhity sypkf idut2 o6qj3 no2ja ykssu fhcyt qz6vt]\n" + " β”‚ β”‚ └─ TableAlias(nhmxw)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: WGSDC\n" + - " β”‚ β”‚ β”œβ”€ columns: [id nohhr avpyf sypkf idut2 fzxv5 dqygv swcqv ykssu fhcyt]\n" + + " β”‚ β”‚ └─ IndexedTableAccess(WGSDC)\n" + + " β”‚ β”‚ β”œβ”€ index: [WGSDC.NOHHR]\n" + + " β”‚ β”‚ β”œβ”€ keys: [tizhk.TVNW2:1]\n" + " β”‚ β”‚ β”œβ”€ colSet: (125-134)\n" + - " β”‚ β”‚ └─ tableId: 11\n" + + " β”‚ β”‚ β”œβ”€ tableId: 11\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: WGSDC\n" + + " β”‚ β”‚ └─ columns: [id nohhr avpyf sypkf idut2 fzxv5 dqygv swcqv ykssu fhcyt]\n" + " β”‚ └─ TableAlias(j4jyp)\n" + " β”‚ └─ IndexedTableAccess(E2I7U)\n" + " β”‚ β”œβ”€ index: [E2I7U.ZH72S]\n" + @@ -20677,16 +19935,12 @@ WHERE " β”‚ β”‚ β”‚ └─ Distinct\n" + " β”‚ β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”‚ β”œβ”€ columns: [uct.NO52D:4, uct.VYO5E:5, uct.ZH72S:2, i7hcr.FVUCX:9!null]\n" + - " β”‚ β”‚ β”‚ └─ LeftOuterJoin\n" + + " β”‚ β”‚ β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ i7hcr.SWCQV:10!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 0 (int)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ i7hcr.TOFPN:6!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ uct.FTQLQ:1\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ i7hcr.SWCQV:10!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 0 (int)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ i7hcr.SJYN2:7!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ uct.ZH72S:2\n" + @@ -20703,11 +19957,14 @@ WHERE " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: OUBDL\n" + " β”‚ β”‚ β”‚ β”‚ └─ columns: [id ftqlq zh72s ljlum no52d vyo5e]\n" + " β”‚ β”‚ β”‚ └─ TableAlias(i7hcr)\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: EPZU6\n" + - " β”‚ β”‚ β”‚ β”œβ”€ columns: [tofpn sjyn2 btxc5 fvucx swcqv]\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(EPZU6)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [EPZU6.TOFPN]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [uct.FTQLQ:1]\n" + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (20-27)\n" + - " β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: EPZU6\n" + + " β”‚ β”‚ β”‚ └─ columns: [tofpn sjyn2 btxc5 fvucx swcqv]\n" + " β”‚ β”‚ └─ TableAlias(nd)\n" + " β”‚ β”‚ └─ Concat\n" + " β”‚ β”‚ β”œβ”€ TableAlias(nd)\n" + @@ -21171,16 +20428,12 @@ WHERE " β”‚ β”‚ β”‚ β”œβ”€ uct.FHCYT:11\n" + " β”‚ β”‚ β”‚ └─ N/A (longtext)\n" + " β”‚ β”‚ β”‚ THEN uct.FHCYT:11 ELSE NULL (null) END->FHCYT:0, uct.ZH72S:2->K3B6V:0, uct.LJLUM:5->BTXC5:0, i7hcr.FVUCX:17!null->H4DMT:0]\n" + - " β”‚ β”‚ └─ LeftOuterJoin\n" + + " β”‚ β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ i7hcr.SWCQV:18!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 0 (int)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ i7hcr.TOFPN:14!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ uct.FTQLQ:1\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ i7hcr.SWCQV:18!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ 0 (int)\n" + " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ i7hcr.SJYN2:15!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ uct.ZH72S:2\n" + @@ -21197,11 +20450,14 @@ WHERE " β”‚ β”‚ β”‚ β”œβ”€ name: OUBDL\n" + " β”‚ β”‚ β”‚ └─ columns: [id ftqlq zh72s sfj6l v5dpx ljlum idpk7 no52d zrv3b vyo5e ykssu fhcyt qz6vt]\n" + " β”‚ β”‚ └─ TableAlias(i7hcr)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: EPZU6\n" + - " β”‚ β”‚ β”œβ”€ columns: [id tofpn sjyn2 btxc5 fvucx swcqv ykssu fhcyt]\n" + + " β”‚ β”‚ └─ IndexedTableAccess(EPZU6)\n" + + " β”‚ β”‚ β”œβ”€ index: [EPZU6.TOFPN]\n" + + " β”‚ β”‚ β”œβ”€ keys: [uct.FTQLQ:1]\n" + " β”‚ β”‚ β”œβ”€ colSet: (26-33)\n" + - " β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: EPZU6\n" + + " β”‚ β”‚ └─ columns: [id tofpn sjyn2 btxc5 fvucx swcqv ykssu fhcyt]\n" + " β”‚ └─ TableAlias(nd)\n" + " β”‚ └─ Concat\n" + " β”‚ β”œβ”€ TableAlias(nd)\n" + diff --git a/enginetest/queries/query_plans.go b/enginetest/queries/query_plans.go index 0e3ae5361f..0065e345dc 100644 --- a/enginetest/queries/query_plans.go +++ b/enginetest/queries/query_plans.go @@ -528,45 +528,63 @@ select end as s From xy;`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [CASE WHEN xy.x IS NULL THEN 0 WHEN InSubquery\n" + - " β”‚ β”œβ”€ left: xy.x\n" + + " β”œβ”€ columns: [CASE WHEN xy.x:0!null IS NULL THEN 0 (tinyint) WHEN InSubquery\n" + + " β”‚ β”œβ”€ left: xy.x:0!null\n" + " β”‚ └─ right: Subquery\n" + " β”‚ β”œβ”€ cacheable: true\n" + + " β”‚ β”œβ”€ alias-string: select x from xy where not x in (select u from uv)\n" + " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [xy.x]\n" + + " β”‚ β”œβ”€ columns: [xy.x:3!null]\n" + " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [xy.x, xy.y]\n" + + " β”‚ β”œβ”€ columns: [xy.x:3!null, xy.y:4]\n" + " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ uv.u IS NULL\n" + + " β”‚ β”œβ”€ uv.u:5!null IS NULL\n" + " β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”œβ”€ Table\n" + - " β”‚ β”‚ └─ name: xy\n" + + " β”‚ β”‚ β”œβ”€ name: xy\n" + + " β”‚ β”‚ β”œβ”€ columns: [x y]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + + " β”‚ β”‚ └─ tableId: 2\n" + " β”‚ └─ IndexedTableAccess(uv)\n" + " β”‚ β”œβ”€ index: [uv.u]\n" + - " β”‚ β”œβ”€ columns: [u]\n" + - " β”‚ └─ keys: xy.x\n" + - " β”‚ THEN 1 ELSE 2 END as s]\n" + + " β”‚ β”œβ”€ keys: [xy.x:3!null]\n" + + " β”‚ β”œβ”€ colSet: (5,6)\n" + + " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: uv\n" + + " β”‚ └─ columns: [u]\n" + + " β”‚ THEN 1 (tinyint) ELSE 2 (tinyint) END->s:0]\n" + " └─ Project\n" + - " β”œβ”€ columns: [xy.x, xy.y, CASE WHEN xy.x IS NULL THEN 0 WHEN InSubquery\n" + - " β”‚ β”œβ”€ left: xy.x\n" + + " β”œβ”€ columns: [xy.x:0!null, xy.y:1, CASE WHEN xy.x:0!null IS NULL THEN 0 (tinyint) WHEN InSubquery\n" + + " β”‚ β”œβ”€ left: xy.x:0!null\n" + " β”‚ └─ right: Subquery\n" + " β”‚ β”œβ”€ cacheable: true\n" + + " β”‚ β”œβ”€ alias-string: select x from xy where not x in (select u from uv)\n" + " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [xy.x]\n" + + " β”‚ β”œβ”€ columns: [xy.x:2!null]\n" + " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [xy.x, xy.y]\n" + + " β”‚ β”œβ”€ columns: [xy.x:2!null, xy.y:3]\n" + " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ uv.u IS NULL\n" + + " β”‚ β”œβ”€ uv.u:4!null IS NULL\n" + " β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”œβ”€ Table\n" + - " β”‚ β”‚ └─ name: xy\n" + + " β”‚ β”‚ β”œβ”€ name: xy\n" + + " β”‚ β”‚ β”œβ”€ columns: [x y]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + + " β”‚ β”‚ └─ tableId: 2\n" + " β”‚ └─ IndexedTableAccess(uv)\n" + " β”‚ β”œβ”€ index: [uv.u]\n" + - " β”‚ β”œβ”€ columns: [u]\n" + - " β”‚ └─ keys: xy.x\n" + - " β”‚ THEN 1 ELSE 2 END as s]\n" + - " └─ Table\n" + - " └─ name: xy\n" + + " β”‚ β”œβ”€ keys: [xy.x:2!null]\n" + + " β”‚ β”œβ”€ colSet: (5,6)\n" + + " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: uv\n" + + " β”‚ └─ columns: [u]\n" + + " β”‚ THEN 1 (tinyint) ELSE 2 (tinyint) END->s:0]\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " β”œβ”€ name: xy\n" + + " └─ columns: [x y]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [CASE WHEN xy.x IS NULL THEN 0 WHEN InSubquery\n" + @@ -1172,75 +1190,86 @@ WHERE " └─ GroupBy\n" + " β”œβ”€ select: COUNTDISTINCT([stock1.s_i_id])\n" + " β”œβ”€ group: \n" + - " └─ HashJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ stock1.s_i_id:4!null\n" + - " β”‚ └─ order_line1.ol_i_id:3\n" + - " β”œβ”€ IndexedTableAccess(order_line1)\n" + - " β”‚ β”œβ”€ index: [order_line1.ol_w_id,order_line1.ol_d_id,order_line1.ol_o_id,order_line1.ol_number]\n" + - " β”‚ β”œβ”€ static: [{[5, 5], [2, 2], [2981, 3001), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-10)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: order_line1\n" + - " β”‚ └─ columns: [ol_o_id ol_d_id ol_w_id ol_i_id]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(order_line1.ol_i_id:3)\n" + - " β”œβ”€ right-key: TUPLE(stock1.s_i_id:0!null)\n" + - " └─ Filter\n" + - " β”œβ”€ LessThan\n" + - " β”‚ β”œβ”€ stock1.s_quantity:2\n" + - " β”‚ └─ 15 (smallint)\n" + - " └─ IndexedTableAccess(stock1)\n" + - " β”œβ”€ index: [stock1.s_w_id,stock1.s_i_id]\n" + - " β”œβ”€ static: [{[5, 5], [NULL, ∞)}]\n" + - " β”œβ”€ colSet: (11-27)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: stock1\n" + - " └─ columns: [s_i_id s_w_id s_quantity]\n" + + " β”‚ β”œβ”€ stock1.s_i_id:0!null\n" + + " β”‚ └─ order_line1.ol_i_id:6\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ LessThan\n" + + " β”‚ β”‚ β”œβ”€ stock1.s_quantity:2\n" + + " β”‚ β”‚ └─ 15 (smallint)\n" + + " β”‚ └─ IndexedTableAccess(stock1)\n" + + " β”‚ β”œβ”€ index: [stock1.s_w_id,stock1.s_i_id]\n" + + " β”‚ β”œβ”€ static: [{[5, 5], [NULL, ∞)}]\n" + + " β”‚ β”œβ”€ colSet: (11-27)\n" + + " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: stock1\n" + + " β”‚ └─ columns: [s_i_id s_w_id s_quantity]\n" + + " └─ Filter\n" + + " β”œβ”€ AND\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ order_line1.ol_w_id:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ 5 (smallint)\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ order_line1.ol_d_id:1!null\n" + + " β”‚ β”‚ β”‚ └─ 2 (tinyint)\n" + + " β”‚ β”‚ └─ LessThan\n" + + " β”‚ β”‚ β”œβ”€ order_line1.ol_o_id:0!null\n" + + " β”‚ β”‚ └─ 3001 (int)\n" + + " β”‚ └─ GreaterThanOrEqual\n" + + " β”‚ β”œβ”€ order_line1.ol_o_id:0!null\n" + + " β”‚ └─ 2981 (int)\n" + + " └─ IndexedTableAccess(order_line1)\n" + + " β”œβ”€ index: [order_line1.ol_w_id,order_line1.ol_d_id,order_line1.ol_o_id,order_line1.ol_number]\n" + + " β”œβ”€ keys: [5 (smallint) 2 (tinyint)]\n" + + " β”œβ”€ colSet: (1-10)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: order_line1\n" + + " └─ columns: [ol_o_id ol_d_id ol_w_id ol_i_id]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [countdistinct([stock1.s_i_id]) as COUNT(DISTINCT (s_i_id))]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(COUNTDISTINCT([stock1.s_i_id]))\n" + " β”œβ”€ Grouping()\n" + - " └─ HashJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ (stock1.s_i_id = order_line1.ol_i_id)\n" + - " β”œβ”€ IndexedTableAccess(order_line1)\n" + - " β”‚ β”œβ”€ index: [order_line1.ol_w_id,order_line1.ol_d_id,order_line1.ol_o_id,order_line1.ol_number]\n" + - " β”‚ β”œβ”€ filters: [{[5, 5], [2, 2], [2981, 3001), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [ol_o_id ol_d_id ol_w_id ol_i_id]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (order_line1.ol_i_id)\n" + - " β”œβ”€ right-key: (stock1.s_i_id)\n" + - " └─ Filter\n" + - " β”œβ”€ (stock1.s_quantity < 15)\n" + - " └─ IndexedTableAccess(stock1)\n" + - " β”œβ”€ index: [stock1.s_w_id,stock1.s_i_id]\n" + - " β”œβ”€ filters: [{[5, 5], [NULL, ∞)}]\n" + - " └─ columns: [s_i_id s_w_id s_quantity]\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (stock1.s_quantity < 15)\n" + + " β”‚ └─ IndexedTableAccess(stock1)\n" + + " β”‚ β”œβ”€ index: [stock1.s_w_id,stock1.s_i_id]\n" + + " β”‚ β”œβ”€ filters: [{[5, 5], [NULL, ∞)}]\n" + + " β”‚ └─ columns: [s_i_id s_w_id s_quantity]\n" + + " └─ Filter\n" + + " β”œβ”€ ((((order_line1.ol_w_id = 5) AND (order_line1.ol_d_id = 2)) AND (order_line1.ol_o_id < 3001)) AND (order_line1.ol_o_id >= 2981))\n" + + " └─ IndexedTableAccess(order_line1)\n" + + " β”œβ”€ index: [order_line1.ol_w_id,order_line1.ol_d_id,order_line1.ol_o_id,order_line1.ol_number]\n" + + " β”œβ”€ columns: [ol_o_id ol_d_id ol_w_id ol_i_id]\n" + + " └─ keys: 5, 2\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [countdistinct([stock1.s_i_id]) as COUNT(DISTINCT (s_i_id))]\n" + " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(COUNTDISTINCT([stock1.s_i_id]))\n" + " β”œβ”€ Grouping()\n" + - " └─ HashJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ (stock1.s_i_id = order_line1.ol_i_id)\n" + - " β”œβ”€ IndexedTableAccess(order_line1)\n" + - " β”‚ β”œβ”€ index: [order_line1.ol_w_id,order_line1.ol_d_id,order_line1.ol_o_id,order_line1.ol_number]\n" + - " β”‚ β”œβ”€ filters: [{[5, 5], [2, 2], [2981, 3001), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [ol_o_id ol_d_id ol_w_id ol_i_id]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (order_line1.ol_i_id)\n" + - " β”œβ”€ right-key: (stock1.s_i_id)\n" + - " └─ Filter\n" + - " β”œβ”€ (stock1.s_quantity < 15)\n" + - " └─ IndexedTableAccess(stock1)\n" + - " β”œβ”€ index: [stock1.s_w_id,stock1.s_i_id]\n" + - " β”œβ”€ filters: [{[5, 5], [NULL, ∞)}]\n" + - " └─ columns: [s_i_id s_w_id s_quantity]\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (stock1.s_quantity < 15)\n" + + " β”‚ └─ IndexedTableAccess(stock1)\n" + + " β”‚ β”œβ”€ index: [stock1.s_w_id,stock1.s_i_id]\n" + + " β”‚ β”œβ”€ filters: [{[5, 5], [NULL, ∞)}]\n" + + " β”‚ └─ columns: [s_i_id s_w_id s_quantity]\n" + + " └─ Filter\n" + + " β”œβ”€ ((((order_line1.ol_w_id = 5) AND (order_line1.ol_d_id = 2)) AND (order_line1.ol_o_id < 3001)) AND (order_line1.ol_o_id >= 2981))\n" + + " └─ IndexedTableAccess(order_line1)\n" + + " β”œβ”€ index: [order_line1.ol_w_id,order_line1.ol_d_id,order_line1.ol_o_id,order_line1.ol_number]\n" + + " β”œβ”€ columns: [ol_o_id ol_d_id ol_w_id ol_i_id]\n" + + " └─ keys: 5, 2\n" + "", }, { @@ -1273,8 +1302,8 @@ WHERE " β”‚ β”œβ”€ customer1.c_id:0!null\n" + " β”‚ └─ 2327 (int)\n" + " └─ IndexedTableAccess(customer1)\n" + - " β”œβ”€ index: [customer1.c_w_id,customer1.c_d_id,customer1.c_id]\n" + - " β”œβ”€ keys: [warehouse1.w_id:0!null 2 (tinyint) 2327 (int)]\n" + + " β”œβ”€ index: [customer1.c_w_id,customer1.c_d_id,customer1.c_last,customer1.c_first]\n" + + " β”œβ”€ keys: [warehouse1.w_id:0!null 2 (tinyint)]\n" + " β”œβ”€ colSet: (1-21)\n" + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + @@ -1291,9 +1320,9 @@ WHERE " └─ Filter\n" + " β”œβ”€ ((customer1.c_d_id = 2) AND (customer1.c_id = 2327))\n" + " └─ IndexedTableAccess(customer1)\n" + - " β”œβ”€ index: [customer1.c_w_id,customer1.c_d_id,customer1.c_id]\n" + + " β”œβ”€ index: [customer1.c_w_id,customer1.c_d_id,customer1.c_last,customer1.c_first]\n" + " β”œβ”€ columns: [c_id c_d_id c_w_id c_last c_credit c_discount]\n" + - " └─ keys: warehouse1.w_id, 2, 2327\n" + + " └─ keys: warehouse1.w_id, 2\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [customer1.c_discount, customer1.c_last, customer1.c_credit, warehouse1.w_tax]\n" + @@ -1305,61 +1334,50 @@ WHERE " └─ Filter\n" + " β”œβ”€ ((customer1.c_d_id = 2) AND (customer1.c_id = 2327))\n" + " └─ IndexedTableAccess(customer1)\n" + - " β”œβ”€ index: [customer1.c_w_id,customer1.c_d_id,customer1.c_id]\n" + + " β”œβ”€ index: [customer1.c_w_id,customer1.c_d_id,customer1.c_last,customer1.c_first]\n" + " β”œβ”€ columns: [c_id c_d_id c_w_id c_last c_credit c_discount]\n" + - " └─ keys: warehouse1.w_id, 2, 2327\n" + + " └─ keys: warehouse1.w_id, 2\n" + "", }, { Query: `select * from asset am join asset am2 on (am.orgId = am2.orgId and am.name = am2.name and am.val = am2.val);`, - ExpectedPlan: "MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ TUPLE(am.orgId:1, am.name:3, am.val:4)\n" + - " β”‚ └─ TUPLE(am2.orgId:6, am2.name:8, am2.val:9)\n" + + ExpectedPlan: "LookupJoin\n" + " β”œβ”€ TableAlias(am)\n" + - " β”‚ └─ IndexedTableAccess(asset)\n" + - " β”‚ β”œβ”€ index: [asset.orgId,asset.name,asset.val]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-5)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: asset\n" + " β”‚ └─ columns: [id orgid assetid name val]\n" + " └─ TableAlias(am2)\n" + " └─ IndexedTableAccess(asset)\n" + " β”œβ”€ index: [asset.orgId,asset.name,asset.val]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [am.orgId:1 am.name:3 am.val:4]\n" + " β”œβ”€ colSet: (6-10)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + " β”œβ”€ name: asset\n" + " └─ columns: [id orgid assetid name val]\n" + "", - ExpectedEstimates: "MergeJoin (estimated cost=24.390 rows=14)\n" + - " β”œβ”€ cmp: ((am.orgId, am.name, am.val) = (am2.orgId, am2.name, am2.val))\n" + + ExpectedEstimates: "LookupJoin (estimated cost=12.402 rows=14)\n" + " β”œβ”€ TableAlias(am)\n" + - " β”‚ └─ IndexedTableAccess(asset)\n" + - " β”‚ β”œβ”€ index: [asset.orgId,asset.name,asset.val]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: asset\n" + " β”‚ └─ columns: [id orgid assetid name val]\n" + " └─ TableAlias(am2)\n" + " └─ IndexedTableAccess(asset)\n" + " β”œβ”€ index: [asset.orgId,asset.name,asset.val]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [id orgid assetid name val]\n" + + " β”œβ”€ columns: [id orgid assetid name val]\n" + + " └─ keys: am.orgId, am.name, am.val\n" + "", - ExpectedAnalysis: "MergeJoin (estimated cost=24.390 rows=14) (actual rows=12 loops=1)\n" + - " β”œβ”€ cmp: ((am.orgId, am.name, am.val) = (am2.orgId, am2.name, am2.val))\n" + + ExpectedAnalysis: "LookupJoin (estimated cost=12.402 rows=14) (actual rows=12 loops=1)\n" + " β”œβ”€ TableAlias(am)\n" + - " β”‚ └─ IndexedTableAccess(asset)\n" + - " β”‚ β”œβ”€ index: [asset.orgId,asset.name,asset.val]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: asset\n" + " β”‚ └─ columns: [id orgid assetid name val]\n" + " └─ TableAlias(am2)\n" + " └─ IndexedTableAccess(asset)\n" + " β”œβ”€ index: [asset.orgId,asset.name,asset.val]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [id orgid assetid name val]\n" + + " β”œβ”€ columns: [id orgid assetid name val]\n" + + " └─ keys: am.orgId, am.name, am.val\n" + "", }, { @@ -1384,7 +1402,13 @@ where ExpectedPlan: "Project\n" + " β”œβ”€ columns: [style.assetId:1]\n" + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ style.assetId:1\n" + + " β”‚ └─ color.assetId:9\n" + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ style.assetId:1\n" + + " β”‚ β”‚ └─ dimension.assetId:5\n" + " β”‚ β”œβ”€ TableAlias(style)\n" + " β”‚ β”‚ └─ IndexedTableAccess(asset)\n" + " β”‚ β”‚ β”œβ”€ index: [asset.orgId,asset.name,asset.val]\n" + @@ -1408,8 +1432,8 @@ where " β”‚ β”‚ └─ org1 (longtext)\n" + " β”‚ └─ TableAlias(dimension)\n" + " β”‚ └─ IndexedTableAccess(asset)\n" + - " β”‚ β”œβ”€ index: [asset.orgId,asset.name,asset.assetId]\n" + - " β”‚ β”œβ”€ keys: [org1 (longtext) dimension (longtext) style.assetId:1]\n" + + " β”‚ β”œβ”€ index: [asset.orgId,asset.name,asset.val]\n" + + " β”‚ β”œβ”€ keys: [org1 (longtext) dimension (longtext) wide (longtext)]\n" + " β”‚ β”œβ”€ colSet: (6-10)\n" + " β”‚ β”œβ”€ tableId: 2\n" + " β”‚ └─ Table\n" + @@ -1429,8 +1453,8 @@ where " β”‚ └─ org1 (longtext)\n" + " └─ TableAlias(color)\n" + " └─ IndexedTableAccess(asset)\n" + - " β”œβ”€ index: [asset.orgId,asset.name,asset.assetId]\n" + - " β”œβ”€ keys: [org1 (longtext) color (longtext) style.assetId:1]\n" + + " β”œβ”€ index: [asset.orgId,asset.name,asset.val]\n" + + " β”œβ”€ keys: [org1 (longtext) color (longtext) blue (longtext)]\n" + " β”œβ”€ colSet: (11-15)\n" + " β”œβ”€ tableId: 3\n" + " └─ Table\n" + @@ -1440,7 +1464,9 @@ where ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [style.assetId]\n" + " └─ LookupJoin (estimated cost=6.173 rows=6)\n" + + " β”œβ”€ (style.assetId = color.assetId)\n" + " β”œβ”€ LookupJoin (estimated cost=6.173 rows=6)\n" + + " β”‚ β”œβ”€ (style.assetId = dimension.assetId)\n" + " β”‚ β”œβ”€ TableAlias(style)\n" + " β”‚ β”‚ └─ IndexedTableAccess(asset)\n" + " β”‚ β”‚ β”œβ”€ index: [asset.orgId,asset.name,asset.val]\n" + @@ -1450,21 +1476,23 @@ where " β”‚ β”œβ”€ (((dimension.val = 'wide') AND (dimension.name = 'dimension')) AND (dimension.orgId = 'org1'))\n" + " β”‚ └─ TableAlias(dimension)\n" + " β”‚ └─ IndexedTableAccess(asset)\n" + - " β”‚ β”œβ”€ index: [asset.orgId,asset.name,asset.assetId]\n" + + " β”‚ β”œβ”€ index: [asset.orgId,asset.name,asset.val]\n" + " β”‚ β”œβ”€ columns: [orgid assetid name val]\n" + - " β”‚ └─ keys: 'org1', 'dimension', style.assetId\n" + + " β”‚ └─ keys: 'org1', 'dimension', 'wide'\n" + " └─ Filter\n" + " β”œβ”€ (((color.val = 'blue') AND (color.name = 'color')) AND (color.orgId = 'org1'))\n" + " └─ TableAlias(color)\n" + " └─ IndexedTableAccess(asset)\n" + - " β”œβ”€ index: [asset.orgId,asset.name,asset.assetId]\n" + + " β”œβ”€ index: [asset.orgId,asset.name,asset.val]\n" + " β”œβ”€ columns: [orgid assetid name val]\n" + - " └─ keys: 'org1', 'color', style.assetId\n" + + " └─ keys: 'org1', 'color', 'blue'\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [style.assetId]\n" + " └─ LookupJoin (estimated cost=6.173 rows=6) (actual rows=1 loops=1)\n" + + " β”œβ”€ (style.assetId = color.assetId)\n" + " β”œβ”€ LookupJoin (estimated cost=6.173 rows=6) (actual rows=1 loops=1)\n" + + " β”‚ β”œβ”€ (style.assetId = dimension.assetId)\n" + " β”‚ β”œβ”€ TableAlias(style)\n" + " β”‚ β”‚ └─ IndexedTableAccess(asset)\n" + " β”‚ β”‚ β”œβ”€ index: [asset.orgId,asset.name,asset.val]\n" + @@ -1474,16 +1502,16 @@ where " β”‚ β”œβ”€ (((dimension.val = 'wide') AND (dimension.name = 'dimension')) AND (dimension.orgId = 'org1'))\n" + " β”‚ └─ TableAlias(dimension)\n" + " β”‚ └─ IndexedTableAccess(asset)\n" + - " β”‚ β”œβ”€ index: [asset.orgId,asset.name,asset.assetId]\n" + + " β”‚ β”œβ”€ index: [asset.orgId,asset.name,asset.val]\n" + " β”‚ β”œβ”€ columns: [orgid assetid name val]\n" + - " β”‚ └─ keys: 'org1', 'dimension', style.assetId\n" + + " β”‚ └─ keys: 'org1', 'dimension', 'wide'\n" + " └─ Filter\n" + " β”œβ”€ (((color.val = 'blue') AND (color.name = 'color')) AND (color.orgId = 'org1'))\n" + " └─ TableAlias(color)\n" + " └─ IndexedTableAccess(asset)\n" + - " β”œβ”€ index: [asset.orgId,asset.name,asset.assetId]\n" + + " β”œβ”€ index: [asset.orgId,asset.name,asset.val]\n" + " β”œβ”€ columns: [orgid assetid name val]\n" + - " └─ keys: 'org1', 'color', style.assetId\n" + + " └─ keys: 'org1', 'color', 'blue'\n" + "", }, { @@ -1634,30 +1662,31 @@ where " └─ RecursiveCTE\n" + " └─ Union all\n" + " β”œβ”€ Project\n" + - " β”‚ β”œβ”€ columns: [parts.sub_part:1!null, parts.part:0!null, parts.quantity:2!null]\n" + - " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [parts.part:1!null, parts.sub_part:2!null, parts.quantity:3!null]\n" + - " β”‚ └─ InnerJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ parts.part:1!null\n" + - " β”‚ β”‚ └─ parts_1.part:0!null\n" + - " β”‚ β”œβ”€ Distinct\n" + - " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [parts_1.part:0!null]\n" + - " β”‚ β”‚ └─ TableAlias(parts_1)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(parts)\n" + - " β”‚ β”‚ β”œβ”€ index: [parts.part,parts.sub_part]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[pie, pie], [crust, crust]}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (4-6)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: parts\n" + - " β”‚ β”‚ └─ columns: [part sub_part quantity]\n" + + " β”‚ β”œβ”€ columns: [parts.sub_part:2!null, parts.part:1!null, parts.quantity:3!null]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ parts.part:1!null\n" + + " β”‚ β”‚ └─ parts_1.part:0!null\n" + + " β”‚ β”œβ”€ Distinct\n" + + " β”‚ β”‚ └─ Project\n" + + " β”‚ β”‚ β”œβ”€ columns: [parts_1.part:0!null]\n" + + " β”‚ β”‚ └─ TableAlias(parts_1)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(parts)\n" + + " β”‚ β”‚ β”œβ”€ index: [parts.part,parts.sub_part]\n" + + " β”‚ β”‚ β”œβ”€ static: [{[pie, pie], [crust, crust]}]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (4-6)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: parts\n" + + " β”‚ β”‚ └─ columns: [part sub_part quantity]\n" + + " β”‚ └─ IndexedTableAccess(parts)\n" + + " β”‚ β”œβ”€ index: [parts.part,parts.sub_part]\n" + + " β”‚ β”œβ”€ keys: [parts_1.part:0!null]\n" + + " β”‚ β”œβ”€ colSet: (1-3)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: parts\n" + - " β”‚ β”œβ”€ columns: [part sub_part quantity]\n" + - " β”‚ β”œβ”€ colSet: (1-3)\n" + - " β”‚ └─ tableId: 1\n" + + " β”‚ └─ columns: [part sub_part quantity]\n" + " └─ Project\n" + " β”œβ”€ columns: [p.sub_part:4!null, p.part:3!null, p.quantity:5!null]\n" + " └─ LookupJoin\n" + @@ -1687,19 +1716,18 @@ where " └─ Union all\n" + " β”œβ”€ Project\n" + " β”‚ β”œβ”€ columns: [parts.sub_part, parts.part, parts.quantity]\n" + - " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [parts.part, parts.sub_part, parts.quantity]\n" + - " β”‚ └─ InnerJoin\n" + - " β”‚ β”œβ”€ (parts.part = parts_1.part)\n" + - " β”‚ β”œβ”€ Distinct\n" + - " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [parts_1.part]\n" + - " β”‚ β”‚ └─ TableAlias(parts_1)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(parts)\n" + - " β”‚ β”‚ β”œβ”€ index: [parts.part,parts.sub_part]\n" + - " β”‚ β”‚ └─ filters: [{[pie, pie], [crust, crust]}]\n" + - " β”‚ └─ Table\n" + - " β”‚ └─ name: parts\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ (parts.part = parts_1.part)\n" + + " β”‚ β”œβ”€ Distinct\n" + + " β”‚ β”‚ └─ Project\n" + + " β”‚ β”‚ β”œβ”€ columns: [parts_1.part]\n" + + " β”‚ β”‚ └─ TableAlias(parts_1)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(parts)\n" + + " β”‚ β”‚ β”œβ”€ index: [parts.part,parts.sub_part]\n" + + " β”‚ β”‚ └─ filters: [{[pie, pie], [crust, crust]}]\n" + + " β”‚ └─ IndexedTableAccess(parts)\n" + + " β”‚ β”œβ”€ index: [parts.part,parts.sub_part]\n" + + " β”‚ └─ keys: parts_1.part\n" + " └─ Project\n" + " β”œβ”€ columns: [p.sub_part, p.part, p.quantity]\n" + " └─ LookupJoin\n" + @@ -1725,19 +1753,18 @@ where " └─ Union all\n" + " β”œβ”€ Project\n" + " β”‚ β”œβ”€ columns: [parts.sub_part, parts.part, parts.quantity]\n" + - " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [parts.part, parts.sub_part, parts.quantity]\n" + - " β”‚ └─ InnerJoin\n" + - " β”‚ β”œβ”€ (parts.part = parts_1.part)\n" + - " β”‚ β”œβ”€ Distinct\n" + - " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [parts_1.part]\n" + - " β”‚ β”‚ └─ TableAlias(parts_1)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(parts)\n" + - " β”‚ β”‚ β”œβ”€ index: [parts.part,parts.sub_part]\n" + - " β”‚ β”‚ └─ filters: [{[pie, pie], [crust, crust]}]\n" + - " β”‚ └─ Table\n" + - " β”‚ └─ name: parts\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ (parts.part = parts_1.part)\n" + + " β”‚ β”œβ”€ Distinct\n" + + " β”‚ β”‚ └─ Project\n" + + " β”‚ β”‚ β”œβ”€ columns: [parts_1.part]\n" + + " β”‚ β”‚ └─ TableAlias(parts_1)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(parts)\n" + + " β”‚ β”‚ β”œβ”€ index: [parts.part,parts.sub_part]\n" + + " β”‚ β”‚ └─ filters: [{[pie, pie], [crust, crust]}]\n" + + " β”‚ └─ IndexedTableAccess(parts)\n" + + " β”‚ β”œβ”€ index: [parts.part,parts.sub_part]\n" + + " β”‚ └─ keys: parts_1.part\n" + " └─ Project\n" + " β”œβ”€ columns: [p.sub_part, p.part, p.quantity]\n" + " └─ LookupJoin\n" + @@ -2270,56 +2297,39 @@ Select * from ( }, { Query: `select /*+ LOOKUP_JOIN(xy,scalarSubq0) */ * from xy where x in (select a from ab);`, - ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [xy.x:0!null, xy.y:1]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ xy.x:0!null\n" + - " β”‚ └─ ab.a:2!null\n" + - " β”œβ”€ IndexedTableAccess(xy)\n" + - " β”‚ β”œβ”€ index: [xy.x]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: xy\n" + - " β”‚ └─ columns: [x y]\n" + - " └─ Project\n" + - " β”œβ”€ columns: [ab.a:0!null]\n" + - " └─ IndexedTableAccess(ab)\n" + - " β”œβ”€ index: [ab.a]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (3,4)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: ab\n" + - " └─ columns: [a b]\n" + + ExpectedPlan: "SemiLookupJoin\n" + + " β”œβ”€ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: xy\n" + + " β”‚ └─ columns: [x y]\n" + + " └─ Project\n" + + " β”œβ”€ columns: [ab.a:0!null]\n" + + " └─ IndexedTableAccess(ab)\n" + + " β”œβ”€ index: [ab.a]\n" + + " β”œβ”€ keys: [xy.x:0!null]\n" + + " β”œβ”€ colSet: (3,4)\n" + + " β”œβ”€ tableId: 2\n" + + " └─ Table\n" + + " β”œβ”€ name: ab\n" + + " └─ columns: [a b]\n" + "", - ExpectedEstimates: "Project\n" + - " β”œβ”€ columns: [xy.x, xy.y]\n" + - " └─ MergeJoin (estimated cost=2030.000 rows=1000)\n" + - " β”œβ”€ cmp: (xy.x = ab.a)\n" + - " β”œβ”€ IndexedTableAccess(xy)\n" + - " β”‚ β”œβ”€ index: [xy.x]\n" + - " β”‚ └─ filters: [{[NULL, ∞)}]\n" + - " └─ Project\n" + - " β”œβ”€ columns: [ab.a]\n" + - " └─ IndexedTableAccess(ab)\n" + - " β”œβ”€ index: [ab.a]\n" + - " └─ filters: [{[NULL, ∞)}]\n" + + ExpectedEstimates: "SemiLookupJoin (estimated cost=2300.000 rows=1000)\n" + + " β”œβ”€ Table\n" + + " β”‚ └─ name: xy\n" + + " └─ Project\n" + + " β”œβ”€ columns: [ab.a]\n" + + " └─ IndexedTableAccess(ab)\n" + + " β”œβ”€ index: [ab.a]\n" + + " └─ keys: xy.x\n" + "", - ExpectedAnalysis: "Project\n" + - " β”œβ”€ columns: [xy.x, xy.y]\n" + - " └─ MergeJoin (estimated cost=2030.000 rows=1000) (actual rows=4 loops=1)\n" + - " β”œβ”€ cmp: (xy.x = ab.a)\n" + - " β”œβ”€ IndexedTableAccess(xy)\n" + - " β”‚ β”œβ”€ index: [xy.x]\n" + - " β”‚ └─ filters: [{[NULL, ∞)}]\n" + - " └─ Project\n" + - " β”œβ”€ columns: [ab.a]\n" + - " └─ IndexedTableAccess(ab)\n" + - " β”œβ”€ index: [ab.a]\n" + - " └─ filters: [{[NULL, ∞)}]\n" + + ExpectedAnalysis: "SemiLookupJoin (estimated cost=2300.000 rows=1000) (actual rows=4 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ └─ name: xy\n" + + " └─ Project\n" + + " β”œβ”€ columns: [ab.a]\n" + + " └─ IndexedTableAccess(ab)\n" + + " β”œβ”€ index: [ab.a]\n" + + " └─ keys: xy.x\n" + "", }, { @@ -2579,7 +2589,7 @@ Select * from ( " β”‚ β”œβ”€ name: othertable\n" + " β”‚ └─ columns: [s2 i2]\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”œβ”€ keys: [othertable.i2:0!null]\n" + " β”œβ”€ colSet: (1,2)\n" + " β”œβ”€ tableId: 1\n" + @@ -2589,7 +2599,7 @@ Select * from ( "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [mytable.s]\n" + - " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1)\n" + " β”œβ”€ (mytable.i = othertable.i2)\n" + " β”œβ”€ Distinct\n" + " β”‚ └─ Project\n" + @@ -2598,12 +2608,12 @@ Select * from ( " β”‚ β”œβ”€ index: [othertable.s2]\n" + " β”‚ └─ filters: [{[second, second]}]\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + " └─ keys: othertable.i2\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [mytable.s]\n" + - " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + " β”œβ”€ (mytable.i = othertable.i2)\n" + " β”œβ”€ Distinct\n" + " β”‚ └─ Project\n" + @@ -2612,53 +2622,62 @@ Select * from ( " β”‚ β”œβ”€ index: [othertable.s2]\n" + " β”‚ └─ filters: [{[second, second]}]\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + " └─ keys: othertable.i2\n" + "", }, { Query: `SELECT mytable.s FROM mytable WHERE mytable.i IN (SELECT othertable.i2 FROM othertable) ORDER BY mytable.i ASC`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [mytable.s:1!null]\n" + - " └─ Sort(mytable.i:0!null ASC nullsFirst)\n" + - " └─ SemiJoin\n" + + " β”œβ”€ columns: [mytable.s:2!null]\n" + + " └─ Sort(mytable.i:1!null ASC nullsFirst)\n" + + " └─ LookupJoin\n" + " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ └─ othertable.i2:2!null\n" + - " β”œβ”€ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ Project\n" + - " β”œβ”€ columns: [othertable.i2:1!null]\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [s2 i2]\n" + + " β”‚ β”œβ”€ mytable.i:1!null\n" + + " β”‚ └─ othertable.i2:0!null\n" + + " β”œβ”€ Distinct\n" + + " β”‚ └─ Project\n" + + " β”‚ β”œβ”€ columns: [othertable.i2:1!null]\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [othertable.i2:0!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i s]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [mytable.s]\n" + " └─ Sort(mytable.i ASC)\n" + - " └─ SemiJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ (mytable.i = othertable.i2)\n" + - " β”œβ”€ Table\n" + - " β”‚ └─ name: mytable\n" + - " └─ Project\n" + - " β”œβ”€ columns: [othertable.i2]\n" + - " └─ Table\n" + - " └─ name: othertable\n" + + " β”œβ”€ Distinct\n" + + " β”‚ └─ Project\n" + + " β”‚ β”œβ”€ columns: [othertable.i2]\n" + + " β”‚ └─ Table\n" + + " β”‚ └─ name: othertable\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " └─ keys: othertable.i2\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [mytable.s]\n" + " └─ Sort(mytable.i ASC)\n" + - " └─ SemiJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ (mytable.i = othertable.i2)\n" + - " β”œβ”€ Table\n" + - " β”‚ └─ name: mytable\n" + - " └─ Project\n" + - " β”œβ”€ columns: [othertable.i2]\n" + - " └─ Table\n" + - " └─ name: othertable\n" + + " β”œβ”€ Distinct\n" + + " β”‚ └─ Project\n" + + " β”‚ β”œβ”€ columns: [othertable.i2]\n" + + " β”‚ └─ Table\n" + + " β”‚ └─ name: othertable\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " └─ keys: othertable.i2\n" + "", }, { @@ -2666,21 +2685,14 @@ Select * from ( ExpectedPlan: "Project\n" + " β”œβ”€ columns: [rs.r:0!null, rs.s:1, xy.x:2!null, xy.y:3]\n" + " └─ Sort(rs.r:0!null ASC nullsFirst, xy.x:2!null ASC nullsFirst)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ rs.s:1\n" + - " β”‚ └─ xy.y:3\n" + - " β”œβ”€ IndexedTableAccess(rs)\n" + - " β”‚ β”œβ”€ index: [rs.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: rs\n" + " β”‚ └─ columns: [r s]\n" + " └─ IndexedTableAccess(xy)\n" + " β”œβ”€ index: [xy.y]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [rs.s:1]\n" + " β”œβ”€ colSet: (3,4)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -2690,30 +2702,26 @@ Select * from ( ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [rs.r, rs.s, xy.x, xy.y]\n" + " └─ Sort(rs.r ASC, xy.x ASC)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (rs.s = xy.y)\n" + - " β”œβ”€ IndexedTableAccess(rs)\n" + - " β”‚ β”œβ”€ index: [rs.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: rs\n" + " β”‚ └─ columns: [r s]\n" + " └─ IndexedTableAccess(xy)\n" + " β”œβ”€ index: [xy.y]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [x y]\n" + + " β”œβ”€ columns: [x y]\n" + + " └─ keys: rs.s\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [rs.r, rs.s, xy.x, xy.y]\n" + " └─ Sort(rs.r ASC, xy.x ASC)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (rs.s = xy.y)\n" + - " β”œβ”€ IndexedTableAccess(rs)\n" + - " β”‚ β”œβ”€ index: [rs.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: rs\n" + " β”‚ └─ columns: [r s]\n" + " └─ IndexedTableAccess(xy)\n" + " β”œβ”€ index: [xy.y]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [x y]\n" + + " β”œβ”€ columns: [x y]\n" + + " └─ keys: rs.s\n" + "", }, { @@ -4132,7 +4140,7 @@ Select * from ( " β”œβ”€ Table\n" + " β”‚ β”œβ”€ name: ab\n" + " β”‚ └─ columns: [b]\n" + - " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + + " └─ LookupJoin (estimated cost=2.300 rows=1)\n" + " β”œβ”€ IndexedTableAccess(uv)\n" + " β”‚ β”œβ”€ index: [uv.u]\n" + " β”‚ β”œβ”€ filters: [{[-1, -1]}]\n" + @@ -4149,7 +4157,7 @@ Select * from ( " β”œβ”€ Table\n" + " β”‚ β”œβ”€ name: ab\n" + " β”‚ └─ columns: [b]\n" + - " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=0 loops=4)\n" + + " └─ LookupJoin (estimated cost=2.300 rows=1) (actual rows=0 loops=4)\n" + " β”œβ”€ IndexedTableAccess(uv)\n" + " β”‚ β”œβ”€ index: [uv.u]\n" + " β”‚ β”œβ”€ filters: [{[-1, -1]}]\n" + @@ -4292,86 +4300,75 @@ Select * from ( { Query: `select * from mytable t1 natural join mytable t2 join othertable t3 on t2.i = t3.i2;`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [t1.i:0!null, t1.s:1!null, t3.s2:4!null, t3.i2:5!null]\n" + + " β”œβ”€ columns: [t1.i:4!null, t1.s:5!null, t3.s2:0!null, t3.i2:1!null]\n" + " └─ LookupJoin\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ t1.s:1!null\n" + - " β”‚ β”‚ └─ t2.s:3!null\n" + - " β”‚ β”œβ”€ sel: Eq\n" + - " β”‚ β”‚ β”œβ”€ t1.i:0!null\n" + - " β”‚ β”‚ └─ t2.i:2!null\n" + - " β”‚ β”œβ”€ TableAlias(t1)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ t1.i:4!null\n" + + " β”‚ └─ t3.i2:1!null\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(t3)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: mytable\n" + - " β”‚ β”‚ └─ columns: [i s]\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ └─ columns: [s2 i2]\n" + " β”‚ └─ TableAlias(t2)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ keys: [t3.i2:1!null]\n" + " β”‚ β”œβ”€ colSet: (3,4)\n" + " β”‚ β”œβ”€ tableId: 2\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(t3)\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ keys: [t2.i:2!null]\n" + - " β”œβ”€ colSet: (5,6)\n" + - " β”œβ”€ tableId: 3\n" + + " └─ TableAlias(t1)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [t2.i:2!null t2.s:3!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [s2 i2]\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i s]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [t1.i, t1.s, t3.s2, t3.i2]\n" + - " └─ LookupJoin (estimated cost=9.900 rows=3)\n" + - " β”œβ”€ MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”‚ β”œβ”€ cmp: (t1.s = t2.s)\n" + - " β”‚ β”œβ”€ sel: (t1.i = t2.i)\n" + - " β”‚ β”œβ”€ TableAlias(t1)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [i s]\n" + + " └─ LookupJoin (estimated cost=3.172 rows=3)\n" + + " β”œβ”€ (t1.i = t3.i2)\n" + + " β”œβ”€ LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”‚ β”œβ”€ TableAlias(t3)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ └─ columns: [s2 i2]\n" + " β”‚ └─ TableAlias(t2)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(t3)\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ columns: [s2 i2]\n" + - " └─ keys: t2.i\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i s]\n" + + " β”‚ └─ keys: t3.i2\n" + + " └─ TableAlias(t1)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: t2.i, t2.s\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [t1.i, t1.s, t3.s2, t3.i2]\n" + - " └─ LookupJoin (estimated cost=9.900 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=1)\n" + - " β”‚ β”œβ”€ cmp: (t1.s = t2.s)\n" + - " β”‚ β”œβ”€ sel: (t1.i = t2.i)\n" + - " β”‚ β”œβ”€ TableAlias(t1)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [i s]\n" + + " └─ LookupJoin (estimated cost=3.172 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ (t1.i = t3.i2)\n" + + " β”œβ”€ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”‚ β”œβ”€ TableAlias(t3)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ └─ columns: [s2 i2]\n" + " β”‚ └─ TableAlias(t2)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(t3)\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ columns: [s2 i2]\n" + - " └─ keys: t2.i\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i s]\n" + + " β”‚ └─ keys: t3.i2\n" + + " └─ TableAlias(t1)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: t2.i, t2.s\n" + "", }, { @@ -5523,35 +5520,29 @@ inner join xy on a = x;`, " β”‚ β”œβ”€ tableId: 4\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [ab.a:0!null, ab.b:1, uv.u:2!null, uv.v:3]\n" + - " β”‚ └─ SemiJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ uv.u:2!null\n" + - " β”‚ β”‚ └─ pq.p:4!null\n" + - " β”‚ β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ab.a:0!null\n" + - " β”‚ β”‚ β”‚ └─ uv.u:2!null\n" + - " β”‚ β”‚ β”œβ”€ IndexedTableAccess(ab)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [ab.a]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ └─ SemiLookupJoin\n" + + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: ab\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [a b]\n" + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: ab\n" + - " β”‚ β”‚ β”‚ └─ columns: [a b]\n" + + " β”‚ β”‚ β”‚ └─ tableId: 1\n" + " β”‚ β”‚ └─ IndexedTableAccess(uv)\n" + " β”‚ β”‚ β”œβ”€ index: [uv.u]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ab.a:0!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + " β”‚ β”‚ β”œβ”€ tableId: 2\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: uv\n" + " β”‚ β”‚ └─ columns: [u v]\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: pq\n" + - " β”‚ β”œβ”€ columns: [p q]\n" + + " β”‚ └─ IndexedTableAccess(pq)\n" + + " β”‚ β”œβ”€ index: [pq.p]\n" + + " β”‚ β”œβ”€ keys: [uv.u:2!null]\n" + " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ └─ tableId: 3\n" + + " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: pq\n" + + " β”‚ └─ columns: [p q]\n" + " └─ IndexedTableAccess(xy)\n" + " β”œβ”€ index: [xy.x]\n" + " β”œβ”€ keys: [alias2.a:0!null]\n" + @@ -5569,19 +5560,17 @@ inner join xy on a = x;`, " β”‚ β”œβ”€ cacheable: true\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [ab.a, ab.b, uv.u, uv.v]\n" + - " β”‚ └─ SemiJoin\n" + - " β”‚ β”œβ”€ (uv.u = pq.p)\n" + - " β”‚ β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (ab.a = uv.u)\n" + - " β”‚ β”‚ β”œβ”€ IndexedTableAccess(ab)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [ab.a]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ SemiLookupJoin\n" + + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”‚ └─ name: ab\n" + " β”‚ β”‚ └─ IndexedTableAccess(uv)\n" + " β”‚ β”‚ β”œβ”€ index: [uv.u]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: pq\n" + - " β”‚ └─ columns: [p q]\n" + + " β”‚ β”‚ └─ keys: ab.a\n" + + " β”‚ └─ IndexedTableAccess(pq)\n" + + " β”‚ β”œβ”€ index: [pq.p]\n" + + " β”‚ β”œβ”€ columns: [p q]\n" + + " β”‚ └─ keys: uv.u\n" + " └─ IndexedTableAccess(xy)\n" + " β”œβ”€ index: [xy.x]\n" + " β”œβ”€ columns: [x y]\n" + @@ -5595,19 +5584,17 @@ inner join xy on a = x;`, " β”‚ β”œβ”€ cacheable: true\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [ab.a, ab.b, uv.u, uv.v]\n" + - " β”‚ └─ SemiJoin\n" + - " β”‚ β”œβ”€ (uv.u = pq.p)\n" + - " β”‚ β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (ab.a = uv.u)\n" + - " β”‚ β”‚ β”œβ”€ IndexedTableAccess(ab)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [ab.a]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ SemiLookupJoin\n" + + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”‚ └─ name: ab\n" + " β”‚ β”‚ └─ IndexedTableAccess(uv)\n" + " β”‚ β”‚ β”œβ”€ index: [uv.u]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: pq\n" + - " β”‚ └─ columns: [p q]\n" + + " β”‚ β”‚ └─ keys: ab.a\n" + + " β”‚ └─ IndexedTableAccess(pq)\n" + + " β”‚ β”œβ”€ index: [pq.p]\n" + + " β”‚ β”œβ”€ columns: [p q]\n" + + " β”‚ └─ keys: uv.u\n" + " └─ IndexedTableAccess(xy)\n" + " β”œβ”€ index: [xy.x]\n" + " β”œβ”€ columns: [x y]\n" + @@ -5632,21 +5619,14 @@ where exists " β”œβ”€ OrderedDistinct\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [uv.u:0!null]\n" + - " β”‚ └─ LeftOuterMergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ uv.u:0!null\n" + - " β”‚ β”‚ └─ pq.p:2!null\n" + - " β”‚ β”œβ”€ IndexedTableAccess(uv)\n" + - " β”‚ β”‚ β”œβ”€ index: [uv.u]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + + " β”‚ β”œβ”€ ProcessTable\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: uv\n" + " β”‚ β”‚ └─ columns: [u v]\n" + " β”‚ └─ IndexedTableAccess(pq)\n" + " β”‚ β”œβ”€ index: [pq.p]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”œβ”€ keys: [uv.u:0!null]\n" + " β”‚ β”œβ”€ colSet: (5,6)\n" + " β”‚ β”œβ”€ tableId: 3\n" + " β”‚ └─ Table\n" + @@ -5668,16 +5648,14 @@ where exists " β”œβ”€ OrderedDistinct\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [uv.u]\n" + - " β”‚ └─ LeftOuterMergeJoin\n" + - " β”‚ β”œβ”€ cmp: (uv.u = pq.p)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(uv)\n" + - " β”‚ β”‚ β”œβ”€ index: [uv.u]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: uv\n" + " β”‚ β”‚ └─ columns: [u v]\n" + " β”‚ └─ IndexedTableAccess(pq)\n" + " β”‚ β”œβ”€ index: [pq.p]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [p q]\n" + + " β”‚ β”œβ”€ columns: [p q]\n" + + " β”‚ └─ keys: uv.u\n" + " └─ IndexedTableAccess(ab)\n" + " β”œβ”€ index: [ab.a]\n" + " └─ keys: uv.u\n" + @@ -5689,16 +5667,14 @@ where exists " β”œβ”€ OrderedDistinct\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [uv.u]\n" + - " β”‚ └─ LeftOuterMergeJoin\n" + - " β”‚ β”œβ”€ cmp: (uv.u = pq.p)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(uv)\n" + - " β”‚ β”‚ β”œβ”€ index: [uv.u]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: uv\n" + " β”‚ β”‚ └─ columns: [u v]\n" + " β”‚ └─ IndexedTableAccess(pq)\n" + " β”‚ β”œβ”€ index: [pq.p]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [p q]\n" + + " β”‚ β”œβ”€ columns: [p q]\n" + + " β”‚ └─ keys: uv.u\n" + " └─ IndexedTableAccess(ab)\n" + " β”œβ”€ index: [ab.a]\n" + " └─ keys: uv.u\n" + @@ -5730,23 +5706,17 @@ where exists (select * from pq where a = p) " β”‚ β”œβ”€ columns: [ab.a:0!null, ab.b:1]\n" + " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ uv.u:2!null IS NULL\n" + - " β”‚ └─ LeftOuterMergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ ab.a:0!null\n" + - " β”‚ β”‚ └─ uv.u:2!null\n" + - " β”‚ β”œβ”€ IndexedTableAccess(ab)\n" + - " β”‚ β”‚ β”œβ”€ index: [ab.a]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: ab\n" + + " β”‚ β”‚ β”œβ”€ columns: [a b]\n" + " β”‚ β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: ab\n" + - " β”‚ β”‚ └─ columns: [a b]\n" + + " β”‚ β”‚ └─ tableId: 1\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [uv.u:0!null]\n" + " β”‚ └─ IndexedTableAccess(uv)\n" + " β”‚ β”œβ”€ index: [uv.u]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”œβ”€ keys: [ab.a:0!null]\n" + " β”‚ β”œβ”€ colSet: (3,4)\n" + " β”‚ β”œβ”€ tableId: 2\n" + " β”‚ └─ Table\n" + @@ -5776,17 +5746,15 @@ where exists (select * from pq where a = p) " β”‚ β”œβ”€ columns: [ab.a, ab.b]\n" + " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ uv.u IS NULL\n" + - " β”‚ └─ LeftOuterMergeJoin\n" + - " β”‚ β”œβ”€ cmp: (ab.a = uv.u)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(ab)\n" + - " β”‚ β”‚ β”œβ”€ index: [ab.a]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ └─ name: ab\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [uv.u]\n" + " β”‚ └─ IndexedTableAccess(uv)\n" + " β”‚ β”œβ”€ index: [uv.u]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [u v]\n" + + " β”‚ β”œβ”€ columns: [u v]\n" + + " β”‚ └─ keys: ab.a\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (alias1.a)\n" + " β”œβ”€ right-key: (pq.p)\n" + @@ -5810,17 +5778,15 @@ where exists (select * from pq where a = p) " β”‚ β”œβ”€ columns: [ab.a, ab.b]\n" + " β”‚ └─ Filter\n" + " β”‚ β”œβ”€ uv.u IS NULL\n" + - " β”‚ └─ LeftOuterMergeJoin\n" + - " β”‚ β”œβ”€ cmp: (ab.a = uv.u)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(ab)\n" + - " β”‚ β”‚ β”œβ”€ index: [ab.a]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ └─ name: ab\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [uv.u]\n" + " β”‚ └─ IndexedTableAccess(uv)\n" + " β”‚ β”œβ”€ index: [uv.u]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [u v]\n" + + " β”‚ β”œβ”€ columns: [u v]\n" + + " β”‚ └─ keys: ab.a\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (alias1.a)\n" + " β”œβ”€ right-key: (pq.p)\n" + @@ -6013,14 +5979,8 @@ inner join pq on true `, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [alias1.a:0!null, alias1.b:1, pq.p:2!null, pq.q:3]\n" + - " └─ SemiJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ alias1.a:0!null\n" + - " β”‚ └─ uv.u:4!null\n" + - " β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ alias1.a:0!null\n" + - " β”‚ β”‚ └─ pq.p:2!null\n" + + " └─ SemiLookupJoin\n" + + " β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”œβ”€ SubqueryAlias\n" + " β”‚ β”‚ β”œβ”€ name: alias1\n" + " β”‚ β”‚ β”œβ”€ outerVisibility: false\n" + @@ -6032,46 +5992,43 @@ inner join pq on true " β”‚ β”‚ β”œβ”€ columns: [ab.a:0!null, ab.b:1]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ xy.x:2!null IS NULL\n" + - " β”‚ β”‚ └─ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ ab.a:0!null\n" + - " β”‚ β”‚ β”‚ └─ xy.x:2!null\n" + - " β”‚ β”‚ β”œβ”€ IndexedTableAccess(ab)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [ab.a]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: ab\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [a b]\n" + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: ab\n" + - " β”‚ β”‚ β”‚ └─ columns: [a b]\n" + + " β”‚ β”‚ β”‚ └─ tableId: 1\n" + " β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”œβ”€ columns: [xy.x:0!null]\n" + " β”‚ β”‚ └─ IndexedTableAccess(xy)\n" + " β”‚ β”‚ β”œβ”€ index: [xy.x]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”œβ”€ keys: [ab.a:0!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + " β”‚ β”‚ β”œβ”€ tableId: 2\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: xy\n" + " β”‚ β”‚ └─ columns: [x y]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: TUPLE(alias1.a:0!null)\n" + - " β”‚ β”œβ”€ right-key: TUPLE(pq.p:0!null)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: pq\n" + - " β”‚ └─ columns: [p q]\n" + - " └─ ProcessTable\n" + + " β”‚ └─ IndexedTableAccess(pq)\n" + + " β”‚ β”œβ”€ index: [pq.p]\n" + + " β”‚ β”œβ”€ keys: [alias1.a:0!null]\n" + + " β”‚ β”œβ”€ colSet: (7,8)\n" + + " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: pq\n" + + " β”‚ └─ columns: [p q]\n" + + " └─ IndexedTableAccess(uv)\n" + + " β”œβ”€ index: [uv.u]\n" + + " β”œβ”€ keys: [alias1.a:0!null]\n" + + " β”œβ”€ colSet: (9,10)\n" + + " β”œβ”€ tableId: 5\n" + " └─ Table\n" + " β”œβ”€ name: uv\n" + " └─ columns: [u v]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [alias1.a, alias1.b, pq.p, pq.q]\n" + - " └─ SemiJoin (estimated cost=15.100 rows=5)\n" + - " β”œβ”€ (alias1.a = uv.u)\n" + - " β”œβ”€ LeftOuterHashJoin (estimated cost=113.050 rows=5)\n" + - " β”‚ β”œβ”€ (alias1.a = pq.p)\n" + + " └─ SemiLookupJoin (estimated cost=11.500 rows=5)\n" + + " β”œβ”€ LeftOuterLookupJoin (estimated cost=100.575 rows=5)\n" + " β”‚ β”œβ”€ SubqueryAlias\n" + " β”‚ β”‚ β”œβ”€ name: alias1\n" + " β”‚ β”‚ β”œβ”€ outerVisibility: false\n" + @@ -6081,32 +6038,27 @@ inner join pq on true " β”‚ β”‚ β”œβ”€ columns: [ab.a, ab.b]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ xy.x IS NULL\n" + - " β”‚ β”‚ └─ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (ab.a = xy.x)\n" + - " β”‚ β”‚ β”œβ”€ IndexedTableAccess(ab)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [ab.a]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”‚ └─ name: ab\n" + " β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”œβ”€ columns: [xy.x]\n" + " β”‚ β”‚ └─ IndexedTableAccess(xy)\n" + " β”‚ β”‚ β”œβ”€ index: [xy.x]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [x y]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (alias1.a)\n" + - " β”‚ β”œβ”€ right-key: (pq.p)\n" + - " β”‚ └─ Table\n" + - " β”‚ └─ name: pq\n" + - " └─ Table\n" + - " β”œβ”€ name: uv\n" + - " └─ columns: [u v]\n" + + " β”‚ β”‚ β”œβ”€ columns: [x y]\n" + + " β”‚ β”‚ └─ keys: ab.a\n" + + " β”‚ └─ IndexedTableAccess(pq)\n" + + " β”‚ β”œβ”€ index: [pq.p]\n" + + " β”‚ └─ keys: alias1.a\n" + + " └─ IndexedTableAccess(uv)\n" + + " β”œβ”€ index: [uv.u]\n" + + " β”œβ”€ columns: [u v]\n" + + " └─ keys: alias1.a\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [alias1.a, alias1.b, pq.p, pq.q]\n" + - " └─ SemiJoin (estimated cost=15.100 rows=5) (actual rows=0 loops=1)\n" + - " β”œβ”€ (alias1.a = uv.u)\n" + - " β”œβ”€ LeftOuterHashJoin (estimated cost=113.050 rows=5) (actual rows=0 loops=1)\n" + - " β”‚ β”œβ”€ (alias1.a = pq.p)\n" + + " └─ SemiLookupJoin (estimated cost=11.500 rows=5) (actual rows=0 loops=1)\n" + + " β”œβ”€ LeftOuterLookupJoin (estimated cost=100.575 rows=5) (actual rows=0 loops=1)\n" + " β”‚ β”œβ”€ SubqueryAlias\n" + " β”‚ β”‚ β”œβ”€ name: alias1\n" + " β”‚ β”‚ β”œβ”€ outerVisibility: false\n" + @@ -6116,87 +6068,67 @@ inner join pq on true " β”‚ β”‚ β”œβ”€ columns: [ab.a, ab.b]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ xy.x IS NULL\n" + - " β”‚ β”‚ └─ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (ab.a = xy.x)\n" + - " β”‚ β”‚ β”œβ”€ IndexedTableAccess(ab)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [ab.a]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ LeftOuterLookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”‚ └─ name: ab\n" + " β”‚ β”‚ └─ Project\n" + " β”‚ β”‚ β”œβ”€ columns: [xy.x]\n" + " β”‚ β”‚ └─ IndexedTableAccess(xy)\n" + " β”‚ β”‚ β”œβ”€ index: [xy.x]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [x y]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (alias1.a)\n" + - " β”‚ β”œβ”€ right-key: (pq.p)\n" + - " β”‚ └─ Table\n" + - " β”‚ └─ name: pq\n" + - " └─ Table\n" + - " β”œβ”€ name: uv\n" + - " └─ columns: [u v]\n" + + " β”‚ β”‚ β”œβ”€ columns: [x y]\n" + + " β”‚ β”‚ └─ keys: ab.a\n" + + " β”‚ └─ IndexedTableAccess(pq)\n" + + " β”‚ β”œβ”€ index: [pq.p]\n" + + " β”‚ └─ keys: alias1.a\n" + + " └─ IndexedTableAccess(uv)\n" + + " β”œβ”€ index: [uv.u]\n" + + " β”œβ”€ columns: [u v]\n" + + " └─ keys: alias1.a\n" + "", }, { Query: `select i from mytable a where exists (select 1 from mytable b where a.i = b.i)`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [a.i:0!null]\n" + - " └─ Project\n" + - " β”œβ”€ columns: [a.i:0!null, a.s:1!null]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ a.i:0!null\n" + - " β”‚ └─ b.i:2!null\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (3,4)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: mytable\n" + - " └─ columns: [i]\n" + + " └─ SemiLookupJoin\n" + + " β”œβ”€ TableAlias(a)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: mytable\n" + + " β”‚ └─ columns: [i s]\n" + + " └─ TableAlias(b)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [a.i:0!null]\n" + + " β”œβ”€ colSet: (3,4)\n" + + " β”œβ”€ tableId: 2\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i]\n" + - " └─ Project\n" + - " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ └─ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " └─ SemiLookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ TableAlias(a)\n" + + " β”‚ └─ Table\n" + + " β”‚ └─ name: mytable\n" + + " └─ TableAlias(b)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: a.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i]\n" + - " └─ Project\n" + - " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ └─ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " └─ SemiLookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ TableAlias(a)\n" + + " β”‚ └─ Table\n" + + " β”‚ └─ name: mytable\n" + + " └─ TableAlias(b)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: a.i\n" + "", }, { @@ -6207,23 +6139,16 @@ inner join pq on true " β”œβ”€ columns: [mytable.i:0!null, mytable.s:1!null]\n" + " └─ Filter\n" + " β”œβ”€ b.i:2!null IS NULL\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ a.i:0!null\n" + - " β”‚ └─ b.i:2!null\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + " β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [a.i:0!null]\n" + " β”œβ”€ colSet: (3,4)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -6236,17 +6161,15 @@ inner join pq on true " β”œβ”€ columns: [mytable.i, mytable.s]\n" + " └─ Filter\n" + " β”œβ”€ b.i IS NULL\n" + - " └─ LeftOuterMergeJoin (estimated cost=6.120 rows=3)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + + " └─ LeftOuterLookupJoin (estimated cost=3.345 rows=3)\n" + " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ └─ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ └─ name: mytable\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + " β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: a.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i]\n" + @@ -6254,17 +6177,15 @@ inner join pq on true " β”œβ”€ columns: [mytable.i, mytable.s]\n" + " └─ Filter\n" + " β”œβ”€ b.i IS NULL\n" + - " └─ LeftOuterMergeJoin (estimated cost=6.120 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + + " └─ LeftOuterLookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ └─ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ └─ name: mytable\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + " β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: a.i\n" + "", }, { @@ -6310,34 +6231,28 @@ inner join pq on true { Query: `SELECT mytable.i FROM mytable INNER JOIN othertable ON (mytable.i = othertable.i2) LEFT JOIN othertable T4 ON (mytable.i = T4.i2) ORDER BY othertable.i2, T4.s2`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [mytable.i:0!null]\n" + - " └─ Sort(othertable.i2:1!null ASC nullsFirst, t4.s2:2!null ASC nullsFirst)\n" + - " └─ LeftOuterJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ └─ t4.i2:3!null\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ β”‚ └─ othertable.i2:1!null\n" + - " β”‚ β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”œβ”€ columns: [mytable.i:1!null]\n" + + " └─ Sort(othertable.i2:0!null ASC nullsFirst, t4.s2:2!null ASC nullsFirst)\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ ProcessTable\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: mytable\n" + - " β”‚ β”‚ └─ columns: [i]\n" + - " β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (3,4)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ └─ columns: [i2]\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ keys: [othertable.i2:0!null]\n" + + " β”‚ β”œβ”€ colSet: (1,2)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: othertable\n" + - " β”‚ └─ columns: [i2]\n" + + " β”‚ β”œβ”€ name: mytable\n" + + " β”‚ └─ columns: [i]\n" + " └─ TableAlias(t4)\n" + - " └─ ProcessTable\n" + + " └─ IndexedTableAccess(othertable)\n" + + " β”œβ”€ index: [othertable.i2]\n" + + " β”œβ”€ keys: [mytable.i:1!null]\n" + + " β”œβ”€ colSet: (5,6)\n" + + " β”œβ”€ tableId: 3\n" + " └─ Table\n" + " β”œβ”€ name: othertable\n" + " └─ columns: [s2 i2]\n" + @@ -6345,42 +6260,38 @@ inner join pq on true ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [mytable.i]\n" + " └─ Sort(othertable.i2 ASC, t4.s2 ASC)\n" + - " └─ LeftOuterJoin\n" + - " β”œβ”€ (mytable.i = t4.i2)\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [i]\n" + - " β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [i2]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ └─ columns: [i2]\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ └─ keys: othertable.i2\n" + " └─ TableAlias(t4)\n" + - " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(othertable)\n" + + " β”œβ”€ index: [othertable.i2]\n" + + " β”œβ”€ columns: [s2 i2]\n" + + " └─ keys: mytable.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [mytable.i]\n" + " └─ Sort(othertable.i2 ASC, t4.s2 ASC)\n" + - " └─ LeftOuterJoin\n" + - " β”œβ”€ (mytable.i = t4.i2)\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [i]\n" + - " β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [i2]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ └─ columns: [i2]\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ └─ keys: othertable.i2\n" + " └─ TableAlias(t4)\n" + - " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(othertable)\n" + + " β”œβ”€ index: [othertable.i2]\n" + + " β”œβ”€ columns: [s2 i2]\n" + + " └─ keys: mytable.i\n" + "", }, { @@ -6514,59 +6425,67 @@ inner join pq on true { Query: `SELECT t1.i FROM mytable t1 JOIN mytable t2 on t1.i = t2.i + 1 where t1.i = 2 and t2.i = 1`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [t1.i:1!null]\n" + - " └─ InnerJoin\n" + + " β”œβ”€ columns: [t1.i:0!null]\n" + + " └─ LookupJoin\n" + " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ t1.i:1!null\n" + - " β”‚ └─ (t2.i:0!null + 1 (tinyint))\n" + - " β”œβ”€ TableAlias(t2)\n" + + " β”‚ β”œβ”€ t1.i:0!null\n" + + " β”‚ └─ (t2.i:1!null + 1 (tinyint))\n" + + " β”œβ”€ TableAlias(t1)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ static: [{[1, 1]}]\n" + - " β”‚ β”œβ”€ colSet: (3,4)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”œβ”€ static: [{[2, 2]}]\n" + + " β”‚ β”œβ”€ colSet: (1,2)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i]\n" + - " └─ TableAlias(t1)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ static: [{[2, 2]}]\n" + - " β”œβ”€ colSet: (1,2)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: mytable\n" + - " └─ columns: [i]\n" + + " └─ Filter\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ t2.i:0!null\n" + + " β”‚ └─ 1 (bigint)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [1 (bigint)]\n" + + " β”œβ”€ colSet: (3,4)\n" + + " β”œβ”€ tableId: 2\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=1.115 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + - " β”œβ”€ TableAlias(t2)\n" + + " β”œβ”€ TableAlias(t1)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ filters: [{[1, 1]}]\n" + + " β”‚ β”œβ”€ filters: [{[2, 2]}]\n" + " β”‚ └─ columns: [i]\n" + - " └─ TableAlias(t1)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[2, 2]}]\n" + - " └─ columns: [i]\n" + + " └─ Filter\n" + + " β”œβ”€ (t2.i = 1)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: 1\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + - " β”œβ”€ TableAlias(t2)\n" + + " β”œβ”€ TableAlias(t1)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ filters: [{[1, 1]}]\n" + + " β”‚ β”œβ”€ filters: [{[2, 2]}]\n" + " β”‚ └─ columns: [i]\n" + - " └─ TableAlias(t1)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[2, 2]}]\n" + - " └─ columns: [i]\n" + + " └─ Filter\n" + + " β”œβ”€ (t2.i = 1)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: 1\n" + "", }, { @@ -6577,57 +6496,46 @@ inner join pq on true " └─ Sort(row_number() over ( order by mytable.i desc):0!null->row_number() over (order by i desc):0 ASC nullsFirst)\n" + " └─ Window\n" + " β”œβ”€ row_number() over ( order by mytable.i DESC)\n" + - " β”œβ”€ mytable.i:0!null\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ └─ othertable.i2:1!null\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”œβ”€ mytable.i:1!null\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (3,4)\n" + - " β”œβ”€ tableId: 2\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [othertable.i2:0!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [i2]\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [row_number() over ( order by mytable.i desc) as row_number() over (order by i desc), mytable.i as i2]\n" + " └─ Sort(row_number() over ( order by mytable.i desc) as row_number() over (order by i desc) ASC)\n" + " └─ Window(row_number() over ( order by mytable.i DESC), mytable.i)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i2]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [row_number() over ( order by mytable.i desc) as row_number() over (order by i desc), mytable.i as i2]\n" + " └─ Sort(row_number() over ( order by mytable.i desc) as row_number() over (order by i desc) ASC)\n" + " └─ Window(row_number() over ( order by mytable.i DESC), mytable.i)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i2]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", }, { @@ -6794,36 +6702,40 @@ inner join pq on true " └─ Project\n" + " β”œβ”€ columns: [i:0!null, s:1!null]\n" + " └─ Project\n" + - " β”œβ”€ columns: [t1.i:1!null, hello (longtext)]\n" + - " └─ InnerJoin\n" + + " β”œβ”€ columns: [t1.i:0!null, hello (longtext)]\n" + + " └─ LookupJoin\n" + " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ t1.i:1!null\n" + - " β”‚ └─ (t2.i:0!null + 1 (tinyint))\n" + - " β”œβ”€ TableAlias(t2)\n" + + " β”‚ β”œβ”€ t1.i:0!null\n" + + " β”‚ └─ (t2.i:1!null + 1 (tinyint))\n" + + " β”œβ”€ TableAlias(t1)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ static: [{[1, 1]}]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”œβ”€ static: [{[2, 2]}]\n" + + " β”‚ β”œβ”€ colSet: (3,4)\n" + + " β”‚ β”œβ”€ tableId: 2\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i]\n" + - " └─ TableAlias(t1)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ static: [{[2, 2]}]\n" + - " β”œβ”€ colSet: (3,4)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: mytable\n" + - " └─ columns: [i]\n" + + " └─ Filter\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ t2.i:0!null\n" + + " β”‚ └─ 1 (bigint)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [1 (bigint)]\n" + + " β”œβ”€ colSet: (5,6)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i]\n" + "", }, { Query: `SELECT /*+ JOIN_ORDER(t1, t2) */ t1.i FROM mytable t1 JOIN mytable t2 on t1.i = t2.i + 1 where t1.i = 2 and t2.i = 1`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [t1.i:0!null]\n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ Eq\n" + " β”‚ β”œβ”€ t1.i:0!null\n" + " β”‚ └─ (t2.i:1!null + 1 (tinyint))\n" + @@ -6836,110 +6748,126 @@ inner join pq on true " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i]\n" + - " └─ TableAlias(t2)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ static: [{[1, 1]}]\n" + - " β”œβ”€ colSet: (3,4)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: mytable\n" + - " └─ columns: [i]\n" + + " └─ Filter\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ t2.i:0!null\n" + + " β”‚ └─ 1 (bigint)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [1 (bigint)]\n" + + " β”œβ”€ colSet: (3,4)\n" + + " β”œβ”€ tableId: 2\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=1.115 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + " β”œβ”€ TableAlias(t1)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + " β”‚ β”œβ”€ filters: [{[2, 2]}]\n" + " β”‚ └─ columns: [i]\n" + - " └─ TableAlias(t2)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[1, 1]}]\n" + - " └─ columns: [i]\n" + + " └─ Filter\n" + + " β”œβ”€ (t2.i = 1)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: 1\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + " β”œβ”€ TableAlias(t1)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + " β”‚ β”œβ”€ filters: [{[2, 2]}]\n" + " β”‚ └─ columns: [i]\n" + - " └─ TableAlias(t2)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[1, 1]}]\n" + - " └─ columns: [i]\n" + + " └─ Filter\n" + + " β”œβ”€ (t2.i = 1)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: 1\n" + "", }, { Query: `SELECT /*+ JOIN_ORDER(t1, mytable) */ t1.i FROM mytable t1 JOIN mytable t2 on t1.i = t2.i + 1 where t1.i = 2 and t2.i = 1`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [t1.i:1!null]\n" + - " └─ InnerJoin\n" + + " β”œβ”€ columns: [t1.i:0!null]\n" + + " └─ LookupJoin\n" + " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ t1.i:1!null\n" + - " β”‚ └─ (t2.i:0!null + 1 (tinyint))\n" + - " β”œβ”€ TableAlias(t2)\n" + + " β”‚ β”œβ”€ t1.i:0!null\n" + + " β”‚ └─ (t2.i:1!null + 1 (tinyint))\n" + + " β”œβ”€ TableAlias(t1)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ static: [{[1, 1]}]\n" + - " β”‚ β”œβ”€ colSet: (3,4)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”œβ”€ static: [{[2, 2]}]\n" + + " β”‚ β”œβ”€ colSet: (1,2)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i]\n" + - " └─ TableAlias(t1)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ static: [{[2, 2]}]\n" + - " β”œβ”€ colSet: (1,2)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: mytable\n" + - " └─ columns: [i]\n" + + " └─ Filter\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ t2.i:0!null\n" + + " β”‚ └─ 1 (bigint)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [1 (bigint)]\n" + + " β”œβ”€ colSet: (3,4)\n" + + " β”œβ”€ tableId: 2\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=1.115 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + - " β”œβ”€ TableAlias(t2)\n" + + " β”œβ”€ TableAlias(t1)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ filters: [{[1, 1]}]\n" + + " β”‚ β”œβ”€ filters: [{[2, 2]}]\n" + " β”‚ └─ columns: [i]\n" + - " └─ TableAlias(t1)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[2, 2]}]\n" + - " └─ columns: [i]\n" + + " └─ Filter\n" + + " β”œβ”€ (t2.i = 1)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: 1\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + - " β”œβ”€ TableAlias(t2)\n" + + " β”œβ”€ TableAlias(t1)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ filters: [{[1, 1]}]\n" + + " β”‚ β”œβ”€ filters: [{[2, 2]}]\n" + " β”‚ └─ columns: [i]\n" + - " └─ TableAlias(t1)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[2, 2]}]\n" + - " └─ columns: [i]\n" + + " └─ Filter\n" + + " β”œβ”€ (t2.i = 1)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: 1\n" + "", }, { Query: `SELECT /*+ JOIN_ORDER(t1, t2, t3) */ t1.i FROM mytable t1 JOIN mytable t2 on t1.i = t2.i + 1 where t1.i = 2 and t2.i = 1`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [t1.i:0!null]\n" + - " └─ InnerJoin\n" + + " └─ LookupJoin\n" + " β”œβ”€ Eq\n" + " β”‚ β”œβ”€ t1.i:0!null\n" + " β”‚ └─ (t2.i:1!null + 1 (tinyint))\n" + @@ -6952,155 +6880,160 @@ inner join pq on true " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i]\n" + - " └─ TableAlias(t2)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ static: [{[1, 1]}]\n" + - " β”œβ”€ colSet: (3,4)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: mytable\n" + - " └─ columns: [i]\n" + + " └─ Filter\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ t2.i:0!null\n" + + " β”‚ └─ 1 (bigint)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [1 (bigint)]\n" + + " β”œβ”€ colSet: (3,4)\n" + + " β”œβ”€ tableId: 2\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=1.115 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + " β”œβ”€ TableAlias(t1)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + " β”‚ β”œβ”€ filters: [{[2, 2]}]\n" + " β”‚ └─ columns: [i]\n" + - " └─ TableAlias(t2)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[1, 1]}]\n" + - " └─ columns: [i]\n" + + " └─ Filter\n" + + " β”œβ”€ (t2.i = 1)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: 1\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + " β”œβ”€ TableAlias(t1)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + " β”‚ β”œβ”€ filters: [{[2, 2]}]\n" + " β”‚ └─ columns: [i]\n" + - " └─ TableAlias(t2)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[1, 1]}]\n" + - " └─ columns: [i]\n" + + " └─ Filter\n" + + " β”œβ”€ (t2.i = 1)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: 1\n" + "", }, { Query: `SELECT t1.i FROM mytable t1 JOIN mytable t2 on t1.i = t2.i + 1 where t1.i = 2 and t2.i = 1`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [t1.i:1!null]\n" + - " └─ InnerJoin\n" + + " β”œβ”€ columns: [t1.i:0!null]\n" + + " └─ LookupJoin\n" + " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ t1.i:1!null\n" + - " β”‚ └─ (t2.i:0!null + 1 (tinyint))\n" + - " β”œβ”€ TableAlias(t2)\n" + + " β”‚ β”œβ”€ t1.i:0!null\n" + + " β”‚ └─ (t2.i:1!null + 1 (tinyint))\n" + + " β”œβ”€ TableAlias(t1)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ static: [{[1, 1]}]\n" + - " β”‚ β”œβ”€ colSet: (3,4)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”œβ”€ static: [{[2, 2]}]\n" + + " β”‚ β”œβ”€ colSet: (1,2)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i]\n" + - " └─ TableAlias(t1)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ static: [{[2, 2]}]\n" + - " β”œβ”€ colSet: (1,2)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: mytable\n" + - " └─ columns: [i]\n" + + " └─ Filter\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ t2.i:0!null\n" + + " β”‚ └─ 1 (bigint)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [1 (bigint)]\n" + + " β”œβ”€ colSet: (3,4)\n" + + " β”œβ”€ tableId: 2\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=1.115 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + - " β”œβ”€ TableAlias(t2)\n" + + " β”œβ”€ TableAlias(t1)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ filters: [{[1, 1]}]\n" + + " β”‚ β”œβ”€ filters: [{[2, 2]}]\n" + " β”‚ └─ columns: [i]\n" + - " └─ TableAlias(t1)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[2, 2]}]\n" + - " └─ columns: [i]\n" + + " └─ Filter\n" + + " β”œβ”€ (t2.i = 1)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: 1\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [t1.i]\n" + - " └─ InnerJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + " β”œβ”€ (t1.i = (t2.i + 1))\n" + - " β”œβ”€ TableAlias(t2)\n" + + " β”œβ”€ TableAlias(t1)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ filters: [{[1, 1]}]\n" + + " β”‚ β”œβ”€ filters: [{[2, 2]}]\n" + " β”‚ └─ columns: [i]\n" + - " └─ TableAlias(t1)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[2, 2]}]\n" + - " └─ columns: [i]\n" + + " └─ Filter\n" + + " β”œβ”€ (t2.i = 1)\n" + + " └─ TableAlias(t2)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: 1\n" + "", }, { Query: `SELECT i, i2, s2 FROM mytable INNER JOIN othertable ON i = i2`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [mytable.i:0!null, othertable.i2:2!null, othertable.s2:1!null]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ └─ othertable.i2:2!null\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”œβ”€ columns: [mytable.i:2!null, othertable.i2:1!null, othertable.s2:0!null]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (3,4)\n" + - " β”œβ”€ tableId: 2\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [othertable.i2:1!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [s2 i2]\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", }, { @@ -7415,101 +7348,79 @@ inner join pq on true Query: `SELECT i, i2, s2 FROM mytable INNER JOIN othertable ON i = i2 UNION SELECT i, i2, s2 FROM mytable INNER JOIN othertable ON i = i2`, ExpectedPlan: "Union distinct\n" + " β”œβ”€ Project\n" + - " β”‚ β”œβ”€ columns: [mytable.i:0!null, othertable.i2:2!null, othertable.s2:1!null]\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ β”‚ └─ othertable.i2:2!null\n" + - " β”‚ β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”œβ”€ columns: [mytable.i:2!null, othertable.i2:1!null, othertable.s2:0!null]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ ProcessTable\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: mytable\n" + - " β”‚ β”‚ └─ columns: [i]\n" + - " β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (3,4)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ └─ columns: [s2 i2]\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ keys: [othertable.i2:1!null]\n" + + " β”‚ β”œβ”€ colSet: (1,2)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: othertable\n" + - " β”‚ └─ columns: [s2 i2]\n" + + " β”‚ β”œβ”€ name: mytable\n" + + " β”‚ └─ columns: [i]\n" + " └─ Project\n" + - " β”œβ”€ columns: [mytable.i:0!null, othertable.i2:2!null, othertable.s2:1!null]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ └─ othertable.i2:2!null\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ β”œβ”€ tableId: 3\n" + + " β”œβ”€ columns: [mytable.i:2!null, othertable.i2:1!null, othertable.s2:0!null]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (7,8)\n" + - " β”œβ”€ tableId: 4\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [othertable.i2:1!null]\n" + + " β”œβ”€ colSet: (5,6)\n" + + " β”œβ”€ tableId: 3\n" + " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [s2 i2]\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i]\n" + "", ExpectedEstimates: "Union distinct\n" + " β”œβ”€ Project\n" + " β”‚ β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [i]\n" + - " β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [s2 i2]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ └─ columns: [s2 i2]\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ └─ keys: othertable.i2\n" + " └─ Project\n" + " β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", ExpectedAnalysis: "Union distinct\n" + " β”œβ”€ Project\n" + " β”‚ β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [i]\n" + - " β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [s2 i2]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ └─ columns: [s2 i2]\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ └─ keys: othertable.i2\n" + " └─ Project\n" + " β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", }, { @@ -7528,27 +7439,21 @@ inner join pq on true " β”‚ β”œβ”€ colSet: (5-7)\n" + " β”‚ β”œβ”€ tableId: 3\n" + " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [mytable.i:0!null, othertable.i2:2!null, othertable.s2:1!null]\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ β”‚ └─ othertable.i2:2!null\n" + - " β”‚ β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: mytable\n" + - " β”‚ β”‚ └─ columns: [i]\n" + - " β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (3,4)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”œβ”€ columns: [mytable.i:2!null, othertable.i2:1!null, othertable.s2:0!null]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ β”œβ”€ columns: [s2 i2]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + + " β”‚ β”‚ └─ tableId: 2\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ keys: [othertable.i2:1!null]\n" + + " β”‚ β”œβ”€ colSet: (1,2)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: othertable\n" + - " β”‚ └─ columns: [s2 i2]\n" + + " β”‚ β”œβ”€ name: mytable\n" + + " β”‚ └─ columns: [i]\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: TUPLE(sub.i:0!null)\n" + " β”œβ”€ right-key: TUPLE(ot.i2:1!null)\n" + @@ -7569,16 +7474,14 @@ inner join pq on true " β”‚ β”œβ”€ cacheable: true\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [i]\n" + - " β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [s2 i2]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ └─ columns: [s2 i2]\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ └─ keys: othertable.i2\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (sub.i)\n" + " β”œβ”€ right-key: (ot.i2)\n" + @@ -7598,16 +7501,14 @@ inner join pq on true " β”‚ β”œβ”€ cacheable: true\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [i]\n" + - " β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [s2 i2]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ └─ columns: [s2 i2]\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ └─ keys: othertable.i2\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (sub.i)\n" + " β”œβ”€ right-key: (ot.i2)\n" + @@ -7633,27 +7534,21 @@ inner join pq on true " β”‚ β”œβ”€ colSet: (7-9)\n" + " β”‚ β”œβ”€ tableId: 4\n" + " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [mytable.i:0!null, othertable.i2:2!null, othertable.s2:1!null]\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ β”‚ └─ othertable.i2:2!null\n" + - " β”‚ β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: mytable\n" + - " β”‚ β”‚ └─ columns: [i]\n" + - " β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: othertable\n" + - " β”‚ └─ columns: [s2 i2]\n" + + " β”‚ β”œβ”€ columns: [mytable.i:2!null, othertable.i2:1!null, othertable.s2:0!null]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ β”œβ”€ columns: [s2 i2]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (5,6)\n" + + " β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ keys: [othertable.i2:1!null]\n" + + " β”‚ β”œβ”€ colSet: (3,4)\n" + + " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: mytable\n" + + " β”‚ └─ columns: [i]\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: TUPLE(sub.i:0!null)\n" + " β”œβ”€ right-key: TUPLE(ot.i2:1!null)\n" + @@ -7674,16 +7569,14 @@ inner join pq on true " β”‚ β”œβ”€ cacheable: true\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [i]\n" + - " β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [s2 i2]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ └─ columns: [s2 i2]\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ └─ keys: othertable.i2\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (sub.i)\n" + " β”œβ”€ right-key: (ot.i2)\n" + @@ -7703,16 +7596,14 @@ inner join pq on true " β”‚ β”œβ”€ cacheable: true\n" + " β”‚ └─ Project\n" + " β”‚ β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [i]\n" + - " β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [s2 i2]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ └─ columns: [s2 i2]\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ └─ keys: othertable.i2\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (sub.i)\n" + " β”œβ”€ right-key: (ot.i2)\n" + @@ -7747,34 +7638,28 @@ inner join pq on true " β”œβ”€ colSet: (7-9)\n" + " β”œβ”€ tableId: 4\n" + " └─ Project\n" + - " β”œβ”€ columns: [mytable.i:0!null, othertable.i2:2!null, othertable.s2:1!null]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ └─ othertable.i2:2!null\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (3,4)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " β”œβ”€ columns: [mytable.i:2!null, othertable.i2:1!null, othertable.s2:0!null]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ convert\n" + + " β”‚ β”‚ β”‚ β”œβ”€ type: signed\n" + + " β”‚ β”‚ β”‚ └─ othertable.s2:0!null\n" + + " β”‚ β”‚ └─ 0 (tinyint)\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i]\n" + - " └─ Filter\n" + - " β”œβ”€ NOT\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ convert\n" + - " β”‚ β”‚ β”œβ”€ type: signed\n" + - " β”‚ β”‚ └─ othertable.s2:0!null\n" + - " β”‚ └─ 0 (tinyint)\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (5,6)\n" + - " β”œβ”€ tableId: 3\n" + - " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [s2 i2]\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”œβ”€ columns: [s2 i2]\n" + + " β”‚ β”œβ”€ colSet: (5,6)\n" + + " β”‚ └─ tableId: 3\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [othertable.i2:1!null]\n" + + " β”œβ”€ colSet: (3,4)\n" + + " β”œβ”€ tableId: 2\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [sub.i, sub.i2, sub.s2, ot.i2, ot.s2]\n" + @@ -7792,18 +7677,16 @@ inner join pq on true " β”œβ”€ cacheable: true\n" + " └─ Project\n" + " β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i]\n" + - " └─ Filter\n" + - " β”œβ”€ (NOT((convert(othertable.s2, signed) = 0)))\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (NOT((convert(othertable.s2, signed) = 0)))\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [sub.i, sub.i2, sub.s2, ot.i2, ot.s2]\n" + @@ -7821,18 +7704,16 @@ inner join pq on true " β”œβ”€ cacheable: true\n" + " └─ Project\n" + " β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i]\n" + - " └─ Filter\n" + - " β”œβ”€ (NOT((convert(othertable.s2, signed) = 0)))\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (NOT((convert(othertable.s2, signed) = 0)))\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", }, { @@ -8065,27 +7946,21 @@ inner join pq on true " β”‚ β”œβ”€ colSet: (9-11)\n" + " β”‚ β”œβ”€ tableId: 5\n" + " β”‚ └─ Project\n" + - " β”‚ β”œβ”€ columns: [mytable.i:0!null, othertable.i2:2!null, othertable.s2:1!null]\n" + - " β”‚ └─ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ β”‚ └─ othertable.i2:2!null\n" + - " β”‚ β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: mytable\n" + - " β”‚ β”‚ └─ columns: [i]\n" + - " β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (7,8)\n" + - " β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”œβ”€ columns: [mytable.i:2!null, othertable.i2:1!null, othertable.s2:0!null]\n" + + " β”‚ └─ LookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ β”œβ”€ columns: [s2 i2]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (7,8)\n" + + " β”‚ β”‚ └─ tableId: 4\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ keys: [othertable.i2:1!null]\n" + + " β”‚ β”œβ”€ colSet: (5,6)\n" + + " β”‚ β”œβ”€ tableId: 3\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: othertable\n" + - " β”‚ └─ columns: [s2 i2]\n" + + " β”‚ β”œβ”€ name: mytable\n" + + " β”‚ └─ columns: [i]\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: TUPLE(sub.i:0!null)\n" + " β”œβ”€ right-key: TUPLE(ot.i2:1!null)\n" + @@ -8112,7 +7987,7 @@ inner join pq on true " β”‚ β”‚ β”œβ”€ name: mytable\n" + " β”‚ β”‚ └─ columns: [i s]\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”‚ β”œβ”€ keys: [selfjoin.i:0!null]\n" + " β”‚ β”œβ”€ colSet: (1,2)\n" + " β”‚ β”œβ”€ tableId: 1\n" + @@ -8129,13 +8004,13 @@ inner join pq on true ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [mytable.i, selfjoin.i]\n" + " └─ SemiJoin (estimated cost=1.505 rows=1)\n" + - " β”œβ”€ LookupJoin (estimated cost=1.058 rows=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=1.115 rows=1)\n" + " β”‚ β”œβ”€ TableAlias(selfjoin)\n" + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + " β”‚ β”‚ └─ filters: [{[1, 1]}]\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”‚ └─ keys: selfjoin.i\n" + " └─ Project\n" + " β”œβ”€ columns: [1]\n" + @@ -8145,13 +8020,13 @@ inner join pq on true ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [mytable.i, selfjoin.i]\n" + " └─ SemiJoin (estimated cost=1.505 rows=1) (actual rows=1 loops=1)\n" + - " β”œβ”€ LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + " β”‚ β”œβ”€ TableAlias(selfjoin)\n" + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + " β”‚ β”‚ └─ filters: [{[1, 1]}]\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”‚ └─ keys: selfjoin.i\n" + " └─ Project\n" + " β”œβ”€ columns: [1]\n" + @@ -8161,75 +8036,51 @@ inner join pq on true }, { Query: `SELECT s2, i2, i FROM mytable INNER JOIN othertable ON i = i2`, - ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [othertable.s2:1!null, othertable.i2:2!null, mytable.i:0!null]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ └─ othertable.i2:2!null\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (3,4)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [s2 i2]\n" + + ExpectedPlan: "LookupJoin\n" + + " β”œβ”€ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [othertable.i2:1!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i]\n" + "", - ExpectedEstimates: "Project\n" + - " β”œβ”€ columns: [othertable.s2, othertable.i2, mytable.i]\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + ExpectedEstimates: "LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", - ExpectedAnalysis: "Project\n" + - " β”œβ”€ columns: [othertable.s2, othertable.i2, mytable.i]\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + ExpectedAnalysis: "LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", }, { Query: `SELECT i, i2, s2 FROM othertable JOIN mytable ON i = i2`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [mytable.i:2!null, othertable.i2:1!null, othertable.s2:0!null]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ othertable.i2:1!null\n" + - " β”‚ └─ mytable.i:2!null\n" + - " β”œβ”€ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ └─ columns: [s2 i2]\n" + " └─ IndexedTableAccess(mytable)\n" + " β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [othertable.i2:1!null]\n" + " β”œβ”€ colSet: (3,4)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -8238,141 +8089,108 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”œβ”€ cmp: (othertable.i2 = mytable.i)\n" + - " β”œβ”€ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ └─ columns: [s2 i2]\n" + " └─ IndexedTableAccess(mytable)\n" + " β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ cmp: (othertable.i2 = mytable.i)\n" + - " β”œβ”€ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ └─ columns: [s2 i2]\n" + " └─ IndexedTableAccess(mytable)\n" + " β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", }, { Query: `SELECT s2, i2, i FROM othertable JOIN mytable ON i = i2`, - ExpectedPlan: "MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ othertable.i2:1!null\n" + - " β”‚ └─ mytable.i:2!null\n" + - " β”œβ”€ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + ExpectedPlan: "LookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ └─ columns: [s2 i2]\n" + " └─ IndexedTableAccess(mytable)\n" + " β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [othertable.i2:1!null]\n" + " β”œβ”€ colSet: (3,4)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + " β”œβ”€ name: mytable\n" + " └─ columns: [i]\n" + "", - ExpectedEstimates: "MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”œβ”€ cmp: (othertable.i2 = mytable.i)\n" + - " β”œβ”€ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + ExpectedEstimates: "LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ └─ columns: [s2 i2]\n" + " └─ IndexedTableAccess(mytable)\n" + " β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", - ExpectedAnalysis: "MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ cmp: (othertable.i2 = mytable.i)\n" + - " β”œβ”€ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + ExpectedAnalysis: "LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ └─ columns: [s2 i2]\n" + " └─ IndexedTableAccess(mytable)\n" + " β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", }, { Query: `SELECT s2, i2, i FROM othertable JOIN mytable ON i = i2`, - ExpectedPlan: "MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ othertable.i2:1!null\n" + - " β”‚ └─ mytable.i:2!null\n" + - " β”œβ”€ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + ExpectedPlan: "LookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ └─ columns: [s2 i2]\n" + " └─ IndexedTableAccess(mytable)\n" + " β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [othertable.i2:1!null]\n" + " β”œβ”€ colSet: (3,4)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + " β”œβ”€ name: mytable\n" + " └─ columns: [i]\n" + "", - ExpectedEstimates: "MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”œβ”€ cmp: (othertable.i2 = mytable.i)\n" + - " β”œβ”€ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + ExpectedEstimates: "LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ └─ columns: [s2 i2]\n" + " └─ IndexedTableAccess(mytable)\n" + " β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", - ExpectedAnalysis: "MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ cmp: (othertable.i2 = mytable.i)\n" + - " β”œβ”€ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + ExpectedAnalysis: "LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ └─ columns: [s2 i2]\n" + " └─ IndexedTableAccess(mytable)\n" + " β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", }, { Query: `SELECT s2, i2, i FROM othertable JOIN mytable ON i = i2 LIMIT 1`, ExpectedPlan: "Limit(1)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ othertable.i2:1!null\n" + - " β”‚ └─ mytable.i:2!null\n" + - " β”œβ”€ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ └─ columns: [s2 i2]\n" + " └─ IndexedTableAccess(mytable)\n" + " β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [othertable.i2:1!null]\n" + " β”œβ”€ colSet: (3,4)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -8380,386 +8198,329 @@ inner join pq on true " └─ columns: [i]\n" + "", ExpectedEstimates: "Limit(1)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (othertable.i2 = mytable.i)\n" + - " β”œβ”€ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ └─ columns: [s2 i2]\n" + " └─ IndexedTableAccess(mytable)\n" + " β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", ExpectedAnalysis: "Limit(1)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (othertable.i2 = mytable.i)\n" + - " β”œβ”€ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ └─ columns: [s2 i2]\n" + " └─ IndexedTableAccess(mytable)\n" + " β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", }, { Query: `SELECT i, i2, s2 FROM mytable INNER JOIN othertable ON i2 = i`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [mytable.i:0!null, othertable.i2:2!null, othertable.s2:1!null]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ └─ othertable.i2:2!null\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”œβ”€ columns: [mytable.i:2!null, othertable.i2:1!null, othertable.s2:0!null]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (3,4)\n" + - " β”œβ”€ tableId: 2\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [othertable.i2:1!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [s2 i2]\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", }, { Query: `SELECT s2, i2, i FROM mytable INNER JOIN othertable ON i2 = i`, - ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [othertable.s2:1!null, othertable.i2:2!null, mytable.i:0!null]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ └─ othertable.i2:2!null\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (3,4)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [s2 i2]\n" + + ExpectedPlan: "LookupJoin\n" + + " β”œβ”€ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [othertable.i2:1!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i]\n" + "", - ExpectedEstimates: "Project\n" + - " β”œβ”€ columns: [othertable.s2, othertable.i2, mytable.i]\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + ExpectedEstimates: "LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", - ExpectedAnalysis: "Project\n" + - " β”œβ”€ columns: [othertable.s2, othertable.i2, mytable.i]\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + ExpectedAnalysis: "LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", }, { Query: `SELECT * FROM MYTABLE JOIN OTHERTABLE ON i = i2 AND NOT (s2 <=> s)`, - ExpectedPlan: "MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ └─ othertable.i2:3!null\n" + - " β”œβ”€ sel: NOT\n" + - " β”‚ └─ (othertable.s2:2!null <=> mytable.s:1!null)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (3,4)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [s2 i2]\n" + + ExpectedPlan: "Project\n" + + " β”œβ”€ columns: [mytable.i:2!null, mytable.s:3!null, othertable.s2:0!null, othertable.i2:1!null]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ NOT\n" + + " β”‚ └─ (othertable.s2:0!null <=> mytable.s:3!null)\n" + + " β”œβ”€ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [othertable.i2:1!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i s]\n" + "", - ExpectedEstimates: "MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ sel: (NOT((othertable.s2 <=> mytable.s)))\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [mytable.i, mytable.s, othertable.s2, othertable.i2]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ (NOT((othertable.s2 <=> mytable.s)))\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: othertable.i2\n" + "", - ExpectedAnalysis: "MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ sel: (NOT((othertable.s2 <=> mytable.s)))\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + ExpectedAnalysis: "Project\n" + + " β”œβ”€ columns: [mytable.i, mytable.s, othertable.s2, othertable.i2]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ (NOT((othertable.s2 <=> mytable.s)))\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: othertable.i2\n" + "", }, { Query: `SELECT * FROM MYTABLE JOIN OTHERTABLE ON i = i2 AND NOT (s2 = s)`, - ExpectedPlan: "MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ └─ othertable.i2:3!null\n" + - " β”œβ”€ sel: NOT\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ othertable.s2:2!null\n" + - " β”‚ └─ mytable.s:1!null\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (3,4)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [s2 i2]\n" + + ExpectedPlan: "Project\n" + + " β”œβ”€ columns: [mytable.i:2!null, mytable.s:3!null, othertable.s2:0!null, othertable.i2:1!null]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ NOT\n" + + " β”‚ └─ Eq\n" + + " β”‚ β”œβ”€ othertable.s2:0!null\n" + + " β”‚ └─ mytable.s:3!null\n" + + " β”œβ”€ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [othertable.i2:1!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i s]\n" + "", - ExpectedEstimates: "MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ sel: (NOT((othertable.s2 = mytable.s)))\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [mytable.i, mytable.s, othertable.s2, othertable.i2]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ (NOT((othertable.s2 = mytable.s)))\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: othertable.i2\n" + "", - ExpectedAnalysis: "MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ sel: (NOT((othertable.s2 = mytable.s)))\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + ExpectedAnalysis: "Project\n" + + " β”œβ”€ columns: [mytable.i, mytable.s, othertable.s2, othertable.i2]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ (NOT((othertable.s2 = mytable.s)))\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: othertable.i2\n" + "", }, { Query: `SELECT * FROM MYTABLE JOIN OTHERTABLE ON i = i2 AND CONCAT(s, s2) IS NOT NULL`, - ExpectedPlan: "MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ └─ othertable.i2:3!null\n" + - " β”œβ”€ sel: NOT\n" + - " β”‚ └─ concat(mytable.s:1!null,othertable.s2:2!null) IS NULL\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (3,4)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [s2 i2]\n" + + ExpectedPlan: "Project\n" + + " β”œβ”€ columns: [mytable.i:2!null, mytable.s:3!null, othertable.s2:0!null, othertable.i2:1!null]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ NOT\n" + + " β”‚ └─ concat(mytable.s:3!null,othertable.s2:0!null) IS NULL\n" + + " β”œβ”€ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [othertable.i2:1!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i s]\n" + "", - ExpectedEstimates: "MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ sel: (NOT(concat(mytable.s,othertable.s2) IS NULL))\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [mytable.i, mytable.s, othertable.s2, othertable.i2]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ (NOT(concat(mytable.s,othertable.s2) IS NULL))\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: othertable.i2\n" + "", - ExpectedAnalysis: "MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ sel: (NOT(concat(mytable.s,othertable.s2) IS NULL))\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + ExpectedAnalysis: "Project\n" + + " β”œβ”€ columns: [mytable.i, mytable.s, othertable.s2, othertable.i2]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ (NOT(concat(mytable.s,othertable.s2) IS NULL))\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: othertable.i2\n" + "", }, { Query: `SELECT * FROM MYTABLE JOIN OTHERTABLE ON i = i2 AND s > s2`, - ExpectedPlan: "MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ └─ othertable.i2:3!null\n" + - " β”œβ”€ sel: GreaterThan\n" + - " β”‚ β”œβ”€ mytable.s:1!null\n" + - " β”‚ └─ othertable.s2:2!null\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (3,4)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [s2 i2]\n" + + ExpectedPlan: "Project\n" + + " β”œβ”€ columns: [mytable.i:2!null, mytable.s:3!null, othertable.s2:0!null, othertable.i2:1!null]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ GreaterThan\n" + + " β”‚ β”œβ”€ mytable.s:3!null\n" + + " β”‚ └─ othertable.s2:0!null\n" + + " β”œβ”€ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [othertable.i2:1!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i s]\n" + "", - ExpectedEstimates: "MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ sel: (mytable.s > othertable.s2)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [mytable.i, mytable.s, othertable.s2, othertable.i2]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ (mytable.s > othertable.s2)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: othertable.i2\n" + "", - ExpectedAnalysis: "MergeJoin (estimated cost=6.090 rows=3) (actual rows=2 loops=1)\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ sel: (mytable.s > othertable.s2)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + ExpectedAnalysis: "Project\n" + + " β”œβ”€ columns: [mytable.i, mytable.s, othertable.s2, othertable.i2]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3) (actual rows=2 loops=1)\n" + + " β”œβ”€ (mytable.s > othertable.s2)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: othertable.i2\n" + "", }, { Query: `SELECT * FROM MYTABLE JOIN OTHERTABLE ON i = i2 AND NOT(s > s2)`, - ExpectedPlan: "MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ └─ othertable.i2:3!null\n" + - " β”œβ”€ sel: LessThanOrEqual\n" + - " β”‚ β”œβ”€ mytable.s:1!null\n" + - " β”‚ └─ othertable.s2:2!null\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (3,4)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [s2 i2]\n" + + ExpectedPlan: "Project\n" + + " β”œβ”€ columns: [mytable.i:2!null, mytable.s:3!null, othertable.s2:0!null, othertable.i2:1!null]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LessThanOrEqual\n" + + " β”‚ β”œβ”€ mytable.s:3!null\n" + + " β”‚ └─ othertable.s2:0!null\n" + + " β”œβ”€ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [othertable.i2:1!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i s]\n" + "", - ExpectedEstimates: "MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ sel: (mytable.s <= othertable.s2)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [mytable.i, mytable.s, othertable.s2, othertable.i2]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ (mytable.s <= othertable.s2)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: othertable.i2\n" + "", - ExpectedAnalysis: "MergeJoin (estimated cost=6.090 rows=3) (actual rows=1 loops=1)\n" + - " β”œβ”€ cmp: (mytable.i = othertable.i2)\n" + - " β”œβ”€ sel: (mytable.s <= othertable.s2)\n" + - " β”œβ”€ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ IndexedTableAccess(othertable)\n" + - " β”œβ”€ index: [othertable.i2]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [s2 i2]\n" + + ExpectedAnalysis: "Project\n" + + " β”œβ”€ columns: [mytable.i, mytable.s, othertable.s2, othertable.i2]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3) (actual rows=1 loops=1)\n" + + " β”œβ”€ (mytable.s <= othertable.s2)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: othertable.i2\n" + "", }, { @@ -9004,7 +8765,7 @@ inner join pq on true " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s]\n" + + " β”œβ”€ index: [mytable.s,mytable.i]\n" + " β”œβ”€ keys: [a.i:0!null]\n" + " β”œβ”€ colSet: (3,4)\n" + " β”œβ”€ tableId: 2\n" + @@ -9014,7 +8775,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.s,mytable.i]\n" + @@ -9022,13 +8783,13 @@ inner join pq on true " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s]\n" + + " β”œβ”€ index: [mytable.s,mytable.i]\n" + " β”œβ”€ columns: [s]\n" + " └─ keys: a.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=0 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1) (actual rows=0 loops=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.s,mytable.i]\n" + @@ -9036,7 +8797,7 @@ inner join pq on true " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s]\n" + + " β”œβ”€ index: [mytable.s,mytable.i]\n" + " β”œβ”€ columns: [s]\n" + " └─ keys: a.i\n" + "", @@ -9045,52 +8806,54 @@ inner join pq on true Query: `SELECT /*+ JOIN_ORDER(b, a) */ a.* FROM mytable a inner join mytable b on (a.i = b.s) WHERE a.s is not null`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [a.i:1!null, a.s:2!null]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ a.i:1!null\n" + - " β”‚ └─ b.s:0!null\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(b)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [s]\n" + - " └─ TableAlias(a)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s,mytable.i]\n" + - " β”œβ”€ static: [{(NULL, ∞), [NULL, ∞)}]\n" + - " β”œβ”€ colSet: (1,2)\n" + - " β”œβ”€ tableId: 1\n" + - " └─ Table\n" + - " β”œβ”€ name: mytable\n" + - " └─ columns: [i s]\n" + + " └─ Filter\n" + + " β”œβ”€ NOT\n" + + " β”‚ └─ a.s:1!null IS NULL\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [b.s:0!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i s]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ InnerJoin (estimated cost=4.030 rows=1)\n" + - " β”œβ”€ (a.i = b.s)\n" + + " └─ LookupJoin (estimated cost=3.115 rows=1)\n" + " β”œβ”€ TableAlias(b)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [s]\n" + - " └─ TableAlias(a)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s,mytable.i]\n" + - " β”œβ”€ filters: [{(NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [i s]\n" + + " └─ Filter\n" + + " β”œβ”€ (NOT(a.s IS NULL))\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: b.s\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ InnerJoin (estimated cost=4.030 rows=1) (actual rows=0 loops=1)\n" + - " β”œβ”€ (a.i = b.s)\n" + + " └─ LookupJoin (estimated cost=3.115 rows=1) (actual rows=0 loops=1)\n" + " β”œβ”€ TableAlias(b)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [s]\n" + - " └─ TableAlias(a)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s,mytable.i]\n" + - " β”œβ”€ filters: [{(NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [i s]\n" + + " └─ Filter\n" + + " β”œβ”€ (NOT(a.s IS NULL))\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: b.s\n" + "", }, { @@ -9109,7 +8872,7 @@ inner join pq on true " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s]\n" + + " β”œβ”€ index: [mytable.s,mytable.i]\n" + " β”œβ”€ keys: [a.i:0!null]\n" + " β”œβ”€ colSet: (3,4)\n" + " β”œβ”€ tableId: 2\n" + @@ -9119,7 +8882,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.s,mytable.i]\n" + @@ -9127,13 +8890,13 @@ inner join pq on true " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s]\n" + + " β”œβ”€ index: [mytable.s,mytable.i]\n" + " β”œβ”€ columns: [s]\n" + " └─ keys: a.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=0 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1) (actual rows=0 loops=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.s,mytable.i]\n" + @@ -9141,7 +8904,7 @@ inner join pq on true " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s]\n" + + " β”œβ”€ index: [mytable.s,mytable.i]\n" + " β”œβ”€ columns: [s]\n" + " └─ keys: a.i\n" + "", @@ -9162,7 +8925,7 @@ inner join pq on true " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s]\n" + + " β”œβ”€ index: [mytable.s,mytable.i]\n" + " β”œβ”€ keys: [a.i:0!null]\n" + " β”œβ”€ colSet: (3,4)\n" + " β”œβ”€ tableId: 2\n" + @@ -9172,7 +8935,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -9180,13 +8943,13 @@ inner join pq on true " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s]\n" + + " β”œβ”€ index: [mytable.s,mytable.i]\n" + " β”œβ”€ columns: [s]\n" + " └─ keys: a.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=0 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1) (actual rows=0 loops=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -9194,7 +8957,7 @@ inner join pq on true " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s]\n" + + " β”œβ”€ index: [mytable.s,mytable.i]\n" + " β”œβ”€ columns: [s]\n" + " └─ keys: a.i\n" + "", @@ -9636,23 +9399,16 @@ inner join pq on true Query: `SELECT a.* FROM mytable a, mytable b where a.i = b.i`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [a.i:0!null, a.s:1!null]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ a.i:0!null\n" + - " β”‚ └─ b.i:2!null\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [a.i:0!null]\n" + " β”œβ”€ colSet: (3,4)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -9661,33 +9417,29 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3)\n" + " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: a.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: a.i\n" + "", }, { @@ -10026,7 +9778,7 @@ inner join pq on true " β”‚ β”‚ β”‚ └─ columns: [i]\n" + " β”‚ β”‚ └─ TableAlias(b)\n" + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”‚ β”‚ β”œβ”€ keys: [c.i:0!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + " β”‚ β”‚ β”œβ”€ tableId: 2\n" + @@ -10035,7 +9787,7 @@ inner join pq on true " β”‚ β”‚ └─ columns: [i]\n" + " β”‚ └─ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”‚ β”œβ”€ keys: [b.i:1!null]\n" + " β”‚ β”œβ”€ colSet: (1,2)\n" + " β”‚ β”œβ”€ tableId: 1\n" + @@ -10044,7 +9796,7 @@ inner join pq on true " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(d)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”œβ”€ keys: [c.i:0!null]\n" + " β”œβ”€ colSet: (7,8)\n" + " β”œβ”€ tableId: 4\n" + @@ -10054,10 +9806,10 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + - " β”œβ”€ LookupJoin (estimated cost=1.058 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=1.115 rows=1)\n" + " β”‚ β”œβ”€ (a.i = c.i)\n" + - " β”‚ β”œβ”€ LookupJoin (estimated cost=1.058 rows=1)\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=1.115 rows=1)\n" + " β”‚ β”‚ β”œβ”€ TableAlias(c)\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -10065,26 +9817,26 @@ inner join pq on true " β”‚ β”‚ β”‚ └─ columns: [i]\n" + " β”‚ β”‚ └─ TableAlias(b)\n" + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”‚ β”‚ β”œβ”€ columns: [i]\n" + " β”‚ β”‚ └─ keys: c.i\n" + " β”‚ └─ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”‚ β”œβ”€ columns: [i s]\n" + " β”‚ └─ keys: b.i\n" + " └─ TableAlias(d)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”œβ”€ columns: [i]\n" + " └─ keys: c.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + - " β”œβ”€ LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + " β”‚ β”œβ”€ (a.i = c.i)\n" + - " β”‚ β”œβ”€ LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + " β”‚ β”‚ β”œβ”€ TableAlias(c)\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -10092,17 +9844,17 @@ inner join pq on true " β”‚ β”‚ β”‚ └─ columns: [i]\n" + " β”‚ β”‚ └─ TableAlias(b)\n" + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”‚ β”‚ β”œβ”€ columns: [i]\n" + " β”‚ β”‚ └─ keys: c.i\n" + " β”‚ └─ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”‚ β”œβ”€ columns: [i s]\n" + " β”‚ └─ keys: b.i\n" + " └─ TableAlias(d)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”œβ”€ columns: [i]\n" + " └─ keys: c.i\n" + "", @@ -10110,140 +9862,131 @@ inner join pq on true { Query: `SELECT a.* FROM mytable a, mytable b, mytable c, mytable d where a.i = b.i AND b.i = c.i AND (c.i = d.s OR c.i = 2)`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [a.i:2!null, a.s:3!null]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ b.i:4!null\n" + - " β”‚ β”‚ └─ c.i:1!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ a.i:2!null\n" + - " β”‚ └─ c.i:1!null\n" + + " β”œβ”€ columns: [a.i:3!null, a.s:4!null]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ a.i:3!null\n" + + " β”‚ └─ c.i:1!null\n" + " β”œβ”€ LookupJoin\n" + - " β”‚ β”œβ”€ Or\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ c.i:1!null\n" + - " β”‚ β”‚ β”‚ └─ d.s:0!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ c.i:1!null\n" + - " β”‚ β”‚ └─ 2 (bigint)\n" + - " β”‚ β”œβ”€ TableAlias(d)\n" + - " β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: mytable\n" + - " β”‚ β”‚ └─ columns: [s]\n" + - " β”‚ └─ TableAlias(c)\n" + - " β”‚ └─ Concat\n" + - " β”‚ β”œβ”€ TableAlias(c)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”‚ β”œβ”€ keys: [2 (bigint)]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: mytable\n" + - " β”‚ β”‚ └─ columns: [i]\n" + - " β”‚ └─ TableAlias(c)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ keys: [d.s:0!null]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ a.i:2!null\n" + - " β”‚ └─ b.i:4!null\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (3,4)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: mytable\n" + - " └─ columns: [i]\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Or\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ c.i:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ d.s:0!null\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ c.i:1!null\n" + + " β”‚ β”‚ β”‚ └─ 2 (bigint)\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(d)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: mytable\n" + + " β”‚ β”‚ β”‚ └─ columns: [s]\n" + + " β”‚ β”‚ └─ TableAlias(c)\n" + + " β”‚ β”‚ └─ Concat\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(c)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [2 (bigint)]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (5,6)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: mytable\n" + + " β”‚ β”‚ β”‚ └─ columns: [i]\n" + + " β”‚ β”‚ └─ TableAlias(c)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”‚ β”œβ”€ keys: [d.s:0!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (5,6)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: mytable\n" + + " β”‚ β”‚ └─ columns: [i]\n" + + " β”‚ └─ TableAlias(b)\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ keys: [c.i:1!null]\n" + + " β”‚ β”œβ”€ colSet: (3,4)\n" + + " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: mytable\n" + + " β”‚ └─ columns: [i]\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [b.i:2!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i s]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ InnerJoin (estimated cost=10.090 rows=3)\n" + - " β”œβ”€ ((b.i = c.i) AND (a.i = c.i))\n" + - " β”œβ”€ LookupJoin (estimated cost=-2.705 rows=3)\n" + - " β”‚ β”œβ”€ ((c.i = d.s) OR (c.i = 2))\n" + - " β”‚ β”œβ”€ TableAlias(d)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: mytable\n" + - " β”‚ β”‚ └─ columns: [s]\n" + - " β”‚ └─ TableAlias(c)\n" + - " β”‚ └─ Concat\n" + - " β”‚ β”œβ”€ TableAlias(c)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”‚ β”œβ”€ columns: [i]\n" + - " β”‚ β”‚ └─ keys: 2\n" + - " β”‚ └─ TableAlias(c)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ columns: [i]\n" + - " β”‚ └─ keys: d.s\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ (a.i = c.i)\n" + + " β”œβ”€ LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=-2.705 rows=3)\n" + + " β”‚ β”‚ β”œβ”€ ((c.i = d.s) OR (c.i = 2))\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(d)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: mytable\n" + + " β”‚ β”‚ β”‚ └─ columns: [s]\n" + + " β”‚ β”‚ └─ TableAlias(c)\n" + + " β”‚ β”‚ └─ Concat\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(c)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ β”‚ β”‚ └─ keys: 2\n" + + " β”‚ β”‚ └─ TableAlias(c)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ β”‚ └─ keys: d.s\n" + + " β”‚ └─ TableAlias(b)\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ └─ keys: c.i\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: b.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ InnerJoin (estimated cost=10.090 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ ((b.i = c.i) AND (a.i = c.i))\n" + - " β”œβ”€ LookupJoin (estimated cost=-2.705 rows=3) (actual rows=3 loops=1)\n" + - " β”‚ β”œβ”€ ((c.i = d.s) OR (c.i = 2))\n" + - " β”‚ β”œβ”€ TableAlias(d)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: mytable\n" + - " β”‚ β”‚ └─ columns: [s]\n" + - " β”‚ └─ TableAlias(c)\n" + - " β”‚ └─ Concat\n" + - " β”‚ β”œβ”€ TableAlias(c)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”‚ β”œβ”€ columns: [i]\n" + - " β”‚ β”‚ └─ keys: 2\n" + - " β”‚ └─ TableAlias(c)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ columns: [i]\n" + - " β”‚ └─ keys: d.s\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=3)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ (a.i = c.i)\n" + + " β”œβ”€ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=-2.705 rows=3) (actual rows=3 loops=1)\n" + + " β”‚ β”‚ β”œβ”€ ((c.i = d.s) OR (c.i = 2))\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(d)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: mytable\n" + + " β”‚ β”‚ β”‚ └─ columns: [s]\n" + + " β”‚ β”‚ └─ TableAlias(c)\n" + + " β”‚ β”‚ └─ Concat\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(c)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ β”‚ β”‚ └─ keys: 2\n" + + " β”‚ β”‚ └─ TableAlias(c)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ β”‚ └─ keys: d.s\n" + + " β”‚ └─ TableAlias(b)\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ └─ keys: c.i\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: b.i\n" + "", }, { @@ -10257,23 +10000,17 @@ inner join pq on true " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: []\n" + " └─ LookupJoin\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ a.i:0!null\n" + - " β”‚ β”‚ └─ b.i:2!null\n" + + " β”œβ”€ LookupJoin\n" + " β”‚ β”œβ”€ TableAlias(a)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: mytable\n" + + " β”‚ β”‚ β”œβ”€ columns: [i s]\n" + " β”‚ β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: mytable\n" + - " β”‚ β”‚ └─ columns: [i s]\n" + + " β”‚ β”‚ └─ tableId: 1\n" + " β”‚ └─ TableAlias(b)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ keys: [a.i:0!null]\n" + " β”‚ β”œβ”€ colSet: (3,4)\n" + " β”‚ β”œβ”€ tableId: 2\n" + " β”‚ └─ Table\n" + @@ -10281,7 +10018,7 @@ inner join pq on true " β”‚ └─ columns: [i]\n" + " └─ TableAlias(c)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”œβ”€ keys: [b.i:2!null]\n" + " β”œβ”€ colSet: (5,6)\n" + " β”œβ”€ tableId: 3\n" + @@ -10296,22 +10033,20 @@ inner join pq on true " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: []\n" + - " └─ LookupJoin (estimated cost=9.900 rows=3)\n" + - " β”œβ”€ MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”‚ β”œβ”€ cmp: (a.i = b.i)\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ LookupJoin (estimated cost=3.345 rows=3)\n" + " β”‚ β”œβ”€ TableAlias(a)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: mytable\n" + " β”‚ β”‚ └─ columns: [i s]\n" + " β”‚ └─ TableAlias(b)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [i]\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ └─ keys: a.i\n" + " └─ TableAlias(c)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”œβ”€ columns: [i]\n" + " └─ keys: b.i\n" + "", @@ -10322,22 +10057,20 @@ inner join pq on true " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: []\n" + - " └─ LookupJoin (estimated cost=9.900 rows=3) (actual rows=3 loops=3)\n" + - " β”œβ”€ MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=3)\n" + - " β”‚ β”œβ”€ cmp: (a.i = b.i)\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=3)\n" + + " β”œβ”€ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=3)\n" + " β”‚ β”œβ”€ TableAlias(a)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: mytable\n" + " β”‚ β”‚ └─ columns: [i s]\n" + " β”‚ └─ TableAlias(b)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [i]\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ └─ keys: a.i\n" + " └─ TableAlias(c)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”œβ”€ columns: [i]\n" + " └─ keys: b.i\n" + "", @@ -10346,23 +10079,16 @@ inner join pq on true Query: `SELECT a.* FROM mytable a CROSS JOIN mytable b where a.i = b.i`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [a.i:0!null, a.s:1!null]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ a.i:0!null\n" + - " β”‚ └─ b.i:2!null\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [a.i:0!null]\n" + " β”œβ”€ colSet: (3,4)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -10371,33 +10097,29 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3)\n" + " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: a.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: a.i\n" + "", }, { @@ -10695,7 +10417,7 @@ inner join pq on true " β”‚ β”‚ β”‚ └─ columns: [i]\n" + " β”‚ β”‚ └─ TableAlias(b)\n" + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”‚ β”‚ β”œβ”€ keys: [c.i:0!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + " β”‚ β”‚ β”œβ”€ tableId: 2\n" + @@ -10704,7 +10426,7 @@ inner join pq on true " β”‚ β”‚ └─ columns: [i]\n" + " β”‚ └─ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”‚ β”œβ”€ keys: [b.i:1!null]\n" + " β”‚ β”œβ”€ colSet: (1,2)\n" + " β”‚ β”œβ”€ tableId: 1\n" + @@ -10713,7 +10435,7 @@ inner join pq on true " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(d)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”œβ”€ keys: [c.i:0!null]\n" + " β”œβ”€ colSet: (7,8)\n" + " β”œβ”€ tableId: 4\n" + @@ -10723,10 +10445,10 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + - " β”œβ”€ LookupJoin (estimated cost=1.058 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=1.115 rows=1)\n" + " β”‚ β”œβ”€ (a.i = c.i)\n" + - " β”‚ β”œβ”€ LookupJoin (estimated cost=1.058 rows=1)\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=1.115 rows=1)\n" + " β”‚ β”‚ β”œβ”€ TableAlias(c)\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -10734,26 +10456,26 @@ inner join pq on true " β”‚ β”‚ β”‚ └─ columns: [i]\n" + " β”‚ β”‚ └─ TableAlias(b)\n" + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”‚ β”‚ β”œβ”€ columns: [i]\n" + " β”‚ β”‚ └─ keys: c.i\n" + " β”‚ └─ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”‚ β”œβ”€ columns: [i s]\n" + " β”‚ └─ keys: b.i\n" + " └─ TableAlias(d)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”œβ”€ columns: [i]\n" + " └─ keys: c.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + - " β”œβ”€ LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + " β”‚ β”œβ”€ (a.i = c.i)\n" + - " β”‚ β”œβ”€ LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + " β”‚ β”‚ β”œβ”€ TableAlias(c)\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -10761,17 +10483,17 @@ inner join pq on true " β”‚ β”‚ β”‚ └─ columns: [i]\n" + " β”‚ β”‚ └─ TableAlias(b)\n" + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”‚ β”‚ β”œβ”€ columns: [i]\n" + " β”‚ β”‚ └─ keys: c.i\n" + " β”‚ └─ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”‚ β”œβ”€ columns: [i s]\n" + " β”‚ └─ keys: b.i\n" + " └─ TableAlias(d)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”œβ”€ columns: [i]\n" + " └─ keys: c.i\n" + "", @@ -10779,140 +10501,131 @@ inner join pq on true { Query: `SELECT a.* FROM mytable a CROSS JOIN mytable b CROSS JOIN mytable c CROSS JOIN mytable d where a.i = b.i AND b.i = c.i AND (c.i = d.s OR c.i = 2)`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [a.i:2!null, a.s:3!null]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ b.i:4!null\n" + - " β”‚ β”‚ └─ c.i:1!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ a.i:2!null\n" + - " β”‚ └─ c.i:1!null\n" + + " β”œβ”€ columns: [a.i:3!null, a.s:4!null]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ a.i:3!null\n" + + " β”‚ └─ c.i:1!null\n" + " β”œβ”€ LookupJoin\n" + - " β”‚ β”œβ”€ Or\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ c.i:1!null\n" + - " β”‚ β”‚ β”‚ └─ d.s:0!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ c.i:1!null\n" + - " β”‚ β”‚ └─ 2 (bigint)\n" + - " β”‚ β”œβ”€ TableAlias(d)\n" + - " β”‚ β”‚ └─ ProcessTable\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: mytable\n" + - " β”‚ β”‚ └─ columns: [s]\n" + - " β”‚ └─ TableAlias(c)\n" + - " β”‚ └─ Concat\n" + - " β”‚ β”œβ”€ TableAlias(c)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”‚ β”œβ”€ keys: [2 (bigint)]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: mytable\n" + - " β”‚ β”‚ └─ columns: [i]\n" + - " β”‚ └─ TableAlias(c)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ keys: [d.s:0!null]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ a.i:2!null\n" + - " β”‚ └─ b.i:4!null\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (3,4)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: mytable\n" + - " └─ columns: [i]\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Or\n" + + " β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ c.i:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ d.s:0!null\n" + + " β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ c.i:1!null\n" + + " β”‚ β”‚ β”‚ └─ 2 (bigint)\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(d)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: mytable\n" + + " β”‚ β”‚ β”‚ └─ columns: [s]\n" + + " β”‚ β”‚ └─ TableAlias(c)\n" + + " β”‚ β”‚ └─ Concat\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(c)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [2 (bigint)]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (5,6)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: mytable\n" + + " β”‚ β”‚ β”‚ └─ columns: [i]\n" + + " β”‚ β”‚ └─ TableAlias(c)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”‚ β”œβ”€ keys: [d.s:0!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (5,6)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: mytable\n" + + " β”‚ β”‚ └─ columns: [i]\n" + + " β”‚ └─ TableAlias(b)\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ keys: [c.i:1!null]\n" + + " β”‚ β”œβ”€ colSet: (3,4)\n" + + " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: mytable\n" + + " β”‚ └─ columns: [i]\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [b.i:2!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i s]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ InnerJoin (estimated cost=10.090 rows=3)\n" + - " β”œβ”€ ((b.i = c.i) AND (a.i = c.i))\n" + - " β”œβ”€ LookupJoin (estimated cost=-2.705 rows=3)\n" + - " β”‚ β”œβ”€ ((c.i = d.s) OR (c.i = 2))\n" + - " β”‚ β”œβ”€ TableAlias(d)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: mytable\n" + - " β”‚ β”‚ └─ columns: [s]\n" + - " β”‚ └─ TableAlias(c)\n" + - " β”‚ └─ Concat\n" + - " β”‚ β”œβ”€ TableAlias(c)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”‚ β”œβ”€ columns: [i]\n" + - " β”‚ β”‚ └─ keys: 2\n" + - " β”‚ └─ TableAlias(c)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ columns: [i]\n" + - " β”‚ └─ keys: d.s\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ (a.i = c.i)\n" + + " β”œβ”€ LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=-2.705 rows=3)\n" + + " β”‚ β”‚ β”œβ”€ ((c.i = d.s) OR (c.i = 2))\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(d)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: mytable\n" + + " β”‚ β”‚ β”‚ └─ columns: [s]\n" + + " β”‚ β”‚ └─ TableAlias(c)\n" + + " β”‚ β”‚ └─ Concat\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(c)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ β”‚ β”‚ └─ keys: 2\n" + + " β”‚ β”‚ └─ TableAlias(c)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ β”‚ └─ keys: d.s\n" + + " β”‚ └─ TableAlias(b)\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ └─ keys: c.i\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: b.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ InnerJoin (estimated cost=10.090 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ ((b.i = c.i) AND (a.i = c.i))\n" + - " β”œβ”€ LookupJoin (estimated cost=-2.705 rows=3) (actual rows=3 loops=1)\n" + - " β”‚ β”œβ”€ ((c.i = d.s) OR (c.i = 2))\n" + - " β”‚ β”œβ”€ TableAlias(d)\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: mytable\n" + - " β”‚ β”‚ └─ columns: [s]\n" + - " β”‚ └─ TableAlias(c)\n" + - " β”‚ └─ Concat\n" + - " β”‚ β”œβ”€ TableAlias(c)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”‚ β”œβ”€ columns: [i]\n" + - " β”‚ β”‚ └─ keys: 2\n" + - " β”‚ └─ TableAlias(c)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ columns: [i]\n" + - " β”‚ └─ keys: d.s\n" + - " └─ MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=3)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ (a.i = c.i)\n" + + " β”œβ”€ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=-2.705 rows=3) (actual rows=3 loops=1)\n" + + " β”‚ β”‚ β”œβ”€ ((c.i = d.s) OR (c.i = 2))\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(d)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: mytable\n" + + " β”‚ β”‚ β”‚ └─ columns: [s]\n" + + " β”‚ β”‚ └─ TableAlias(c)\n" + + " β”‚ β”‚ └─ Concat\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(c)\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ β”‚ β”‚ └─ keys: 2\n" + + " β”‚ β”‚ └─ TableAlias(c)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”‚ β”œβ”€ index: [mytable.i]\n" + + " β”‚ β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ β”‚ └─ keys: d.s\n" + + " β”‚ └─ TableAlias(b)\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i]\n" + + " β”‚ └─ keys: c.i\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: b.i\n" + "", }, { @@ -10926,23 +10639,17 @@ inner join pq on true " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: []\n" + " └─ LookupJoin\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ a.i:0!null\n" + - " β”‚ β”‚ └─ b.i:2!null\n" + + " β”œβ”€ LookupJoin\n" + " β”‚ β”œβ”€ TableAlias(a)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: mytable\n" + - " β”‚ β”‚ └─ columns: [i s]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: mytable\n" + + " β”‚ β”‚ β”œβ”€ columns: [i s]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (1,2)\n" + + " β”‚ β”‚ └─ tableId: 1\n" + " β”‚ └─ TableAlias(b)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ keys: [a.i:0!null]\n" + " β”‚ β”œβ”€ colSet: (3,4)\n" + " β”‚ β”œβ”€ tableId: 2\n" + " β”‚ └─ Table\n" + @@ -10950,7 +10657,7 @@ inner join pq on true " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(c)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s]\n" + + " β”œβ”€ index: [mytable.s,mytable.i]\n" + " β”œβ”€ keys: [b.s:3!null]\n" + " β”œβ”€ colSet: (5,6)\n" + " β”œβ”€ tableId: 3\n" + @@ -10965,22 +10672,20 @@ inner join pq on true " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: []\n" + - " └─ LookupJoin (estimated cost=9.900 rows=3)\n" + - " β”œβ”€ MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”‚ β”œβ”€ cmp: (a.i = b.i)\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ LookupJoin (estimated cost=3.345 rows=3)\n" + " β”‚ β”œβ”€ TableAlias(a)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: mytable\n" + " β”‚ β”‚ └─ columns: [i s]\n" + " β”‚ └─ TableAlias(b)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i s]\n" + + " β”‚ └─ keys: a.i\n" + " └─ TableAlias(c)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s]\n" + + " β”œβ”€ index: [mytable.s,mytable.i]\n" + " β”œβ”€ columns: [s]\n" + " └─ keys: b.s\n" + "", @@ -10991,22 +10696,20 @@ inner join pq on true " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: []\n" + - " └─ LookupJoin (estimated cost=9.900 rows=3) (actual rows=3 loops=3)\n" + - " β”œβ”€ MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=3)\n" + - " β”‚ β”œβ”€ cmp: (a.i = b.i)\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=3)\n" + + " β”œβ”€ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=3)\n" + " β”‚ β”œβ”€ TableAlias(a)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: mytable\n" + " β”‚ β”‚ └─ columns: [i s]\n" + " β”‚ └─ TableAlias(b)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i s]\n" + + " β”‚ └─ keys: a.i\n" + " └─ TableAlias(c)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s]\n" + + " β”œβ”€ index: [mytable.s,mytable.i]\n" + " β”œβ”€ columns: [s]\n" + " └─ keys: b.s\n" + "", @@ -11027,7 +10730,7 @@ inner join pq on true " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s]\n" + + " β”œβ”€ index: [mytable.s,mytable.i]\n" + " β”œβ”€ keys: [a.i:0!null]\n" + " β”œβ”€ colSet: (3,4)\n" + " β”œβ”€ tableId: 2\n" + @@ -11037,7 +10740,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -11045,13 +10748,13 @@ inner join pq on true " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s]\n" + + " β”œβ”€ index: [mytable.s,mytable.i]\n" + " β”œβ”€ columns: [s]\n" + " └─ keys: a.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=0 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1) (actual rows=0 loops=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -11059,7 +10762,7 @@ inner join pq on true " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s]\n" + + " β”œβ”€ index: [mytable.s,mytable.i]\n" + " β”œβ”€ columns: [s]\n" + " └─ keys: a.i\n" + "", @@ -11164,10 +10867,7 @@ inner join pq on true Query: `SELECT s2, i2, i FROM mytable RIGHT JOIN (SELECT * FROM othertable) othertable ON i2 = i`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [othertable.s2:0!null, othertable.i2:1!null, mytable.i:2!null]\n" + - " └─ LeftOuterHashJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ othertable.i2:1!null\n" + - " β”‚ └─ mytable.i:2!null\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ SubqueryAlias\n" + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ β”œβ”€ outerVisibility: false\n" + @@ -11180,18 +10880,18 @@ inner join pq on true " β”‚ β”œβ”€ columns: [s2 i2]\n" + " β”‚ β”œβ”€ colSet: (3,4)\n" + " β”‚ └─ tableId: 2\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(othertable.i2:1!null)\n" + - " β”œβ”€ right-key: TUPLE(mytable.i:0!null)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: mytable\n" + - " └─ columns: [i]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [othertable.i2:1!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [othertable.s2, othertable.i2, mytable.i]\n" + - " └─ LeftOuterHashJoin (estimated cost=110.030 rows=3)\n" + - " β”œβ”€ (othertable.i2 = mytable.i)\n" + + " └─ LeftOuterLookupJoin (estimated cost=100.345 rows=3)\n" + " β”œβ”€ SubqueryAlias\n" + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ β”œβ”€ outerVisibility: false\n" + @@ -11200,17 +10900,14 @@ inner join pq on true " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ └─ columns: [s2 i2]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (othertable.i2)\n" + - " β”œβ”€ right-key: (mytable.i)\n" + - " └─ Table\n" + - " β”œβ”€ name: mytable\n" + - " └─ columns: [i]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [othertable.s2, othertable.i2, mytable.i]\n" + - " └─ LeftOuterHashJoin (estimated cost=110.030 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ (othertable.i2 = mytable.i)\n" + + " └─ LeftOuterLookupJoin (estimated cost=100.345 rows=3) (actual rows=3 loops=1)\n" + " β”œβ”€ SubqueryAlias\n" + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ β”œβ”€ outerVisibility: false\n" + @@ -11219,12 +10916,10 @@ inner join pq on true " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ └─ columns: [s2 i2]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (othertable.i2)\n" + - " β”œβ”€ right-key: (mytable.i)\n" + - " └─ Table\n" + - " β”œβ”€ name: mytable\n" + - " └─ columns: [i]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: othertable.i2\n" + "", }, { @@ -11468,77 +11163,107 @@ inner join pq on true }, { Query: `SELECT mytable.i, mytable.s FROM mytable WHERE mytable.i = (SELECT i2 FROM othertable LIMIT 1)`, - ExpectedPlan: "SemiJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ └─ othertable.i2:2!null\n" + - " β”œβ”€ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ Limit(1)\n" + - " └─ Project\n" + - " β”œβ”€ columns: [othertable.i2:1!null]\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [s2 i2]\n" + - "", - ExpectedEstimates: "SemiJoin (estimated cost=7.545 rows=3)\n" + - " β”œβ”€ (mytable.i = othertable.i2)\n" + - " β”œβ”€ Table\n" + - " β”‚ └─ name: mytable\n" + - " └─ Limit(1)\n" + - " └─ Project\n" + - " β”œβ”€ columns: [othertable.i2]\n" + + ExpectedPlan: "Project\n" + + " β”œβ”€ columns: [mytable.i:1!null, mytable.s:2!null]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ mytable.i:1!null\n" + + " β”‚ └─ othertable.i2:0!null\n" + + " β”œβ”€ Distinct\n" + + " β”‚ └─ Limit(1)\n" + + " β”‚ └─ Project\n" + + " β”‚ β”œβ”€ columns: [othertable.i2:1!null]\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [othertable.i2:0!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + - " └─ name: othertable\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i s]\n" + "", - ExpectedAnalysis: "SemiJoin (estimated cost=7.545 rows=3) (actual rows=1 loops=1)\n" + - " β”œβ”€ (mytable.i = othertable.i2)\n" + - " β”œβ”€ Table\n" + - " β”‚ └─ name: mytable\n" + - " └─ Limit(1)\n" + - " └─ Project\n" + - " β”œβ”€ columns: [othertable.i2]\n" + - " └─ Table\n" + - " └─ name: othertable\n" + + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [mytable.i, mytable.s]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ (mytable.i = othertable.i2)\n" + + " β”œβ”€ Distinct\n" + + " β”‚ └─ Limit(1)\n" + + " β”‚ └─ Project\n" + + " β”‚ β”œβ”€ columns: [othertable.i2]\n" + + " β”‚ └─ Table\n" + + " β”‚ └─ name: othertable\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " └─ keys: othertable.i2\n" + + "", + ExpectedAnalysis: "Project\n" + + " β”œβ”€ columns: [mytable.i, mytable.s]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3) (actual rows=1 loops=1)\n" + + " β”œβ”€ (mytable.i = othertable.i2)\n" + + " β”œβ”€ Distinct\n" + + " β”‚ └─ Limit(1)\n" + + " β”‚ └─ Project\n" + + " β”‚ β”œβ”€ columns: [othertable.i2]\n" + + " β”‚ └─ Table\n" + + " β”‚ └─ name: othertable\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " └─ keys: othertable.i2\n" + "", }, { Query: `SELECT mytable.i, mytable.s FROM mytable WHERE mytable.i IN (SELECT i2 FROM othertable)`, - ExpectedPlan: "SemiJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ mytable.i:0!null\n" + - " β”‚ └─ othertable.i2:2!null\n" + - " β”œβ”€ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ Project\n" + - " β”œβ”€ columns: [othertable.i2:1!null]\n" + - " └─ ProcessTable\n" + + ExpectedPlan: "Project\n" + + " β”œβ”€ columns: [mytable.i:1!null, mytable.s:2!null]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ mytable.i:1!null\n" + + " β”‚ └─ othertable.i2:0!null\n" + + " β”œβ”€ Distinct\n" + + " β”‚ └─ Project\n" + + " β”‚ β”œβ”€ columns: [othertable.i2:1!null]\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: othertable\n" + + " β”‚ └─ columns: [s2 i2]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [othertable.i2:0!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [s2 i2]\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i s]\n" + "", - ExpectedEstimates: "SemiJoin (estimated cost=7.545 rows=3)\n" + - " β”œβ”€ (mytable.i = othertable.i2)\n" + - " β”œβ”€ Table\n" + - " β”‚ └─ name: mytable\n" + - " └─ Project\n" + - " β”œβ”€ columns: [othertable.i2]\n" + - " └─ Table\n" + - " └─ name: othertable\n" + + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [mytable.i, mytable.s]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ (mytable.i = othertable.i2)\n" + + " β”œβ”€ Distinct\n" + + " β”‚ └─ Project\n" + + " β”‚ β”œβ”€ columns: [othertable.i2]\n" + + " β”‚ └─ Table\n" + + " β”‚ └─ name: othertable\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " └─ keys: othertable.i2\n" + "", - ExpectedAnalysis: "SemiJoin (estimated cost=7.545 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ (mytable.i = othertable.i2)\n" + - " β”œβ”€ Table\n" + - " β”‚ └─ name: mytable\n" + - " └─ Project\n" + - " β”œβ”€ columns: [othertable.i2]\n" + - " └─ Table\n" + - " └─ name: othertable\n" + + ExpectedAnalysis: "Project\n" + + " β”œβ”€ columns: [mytable.i, mytable.s]\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ (mytable.i = othertable.i2)\n" + + " β”œβ”€ Distinct\n" + + " β”‚ └─ Project\n" + + " β”‚ β”œβ”€ columns: [othertable.i2]\n" + + " β”‚ └─ Table\n" + + " β”‚ └─ name: othertable\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " └─ keys: othertable.i2\n" + "", }, { @@ -11617,7 +11342,7 @@ inner join pq on true " β”œβ”€ name: othertable\n" + " └─ columns: [s2 i2]\n" + "", - ExpectedEstimates: "LookupJoin (estimated cost=1.058 rows=1)\n" + + ExpectedEstimates: "LookupJoin (estimated cost=2.300 rows=1)\n" + " β”œβ”€ TableAlias(mt)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -11629,7 +11354,7 @@ inner join pq on true " β”œβ”€ columns: [s2 i2]\n" + " └─ keys: mt.i\n" + "", - ExpectedAnalysis: "LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + + ExpectedAnalysis: "LookupJoin (estimated cost=2.300 rows=1) (actual rows=1 loops=1)\n" + " β”œβ”€ TableAlias(mt)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -11644,128 +11369,111 @@ inner join pq on true }, { Query: `SELECT /*+ JOIN_ORDER(mt, o) */ * FROM mytable mt INNER JOIN one_pk o ON mt.i = o.pk AND mt.s = o.c2`, - ExpectedPlan: "MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ mt.i:0!null\n" + - " β”‚ └─ o.pk:2!null\n" + - " β”œβ”€ sel: Eq\n" + + ExpectedPlan: "LookupJoin\n" + + " β”œβ”€ Eq\n" + " β”‚ β”œβ”€ mt.s:1!null\n" + " β”‚ └─ o.c2:4\n" + " β”œβ”€ TableAlias(mt)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(o)\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [mt.i:0!null]\n" + " β”œβ”€ colSet: (3-8)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + " β”œβ”€ name: one_pk\n" + " └─ columns: [pk c1 c2 c3 c4 c5]\n" + "", - ExpectedEstimates: "MergeJoin (estimated cost=7.100 rows=3)\n" + - " β”œβ”€ cmp: (mt.i = o.pk)\n" + - " β”œβ”€ sel: (mt.s = o.c2)\n" + + ExpectedEstimates: "LookupJoin (estimated cost=6.900 rows=3)\n" + + " β”œβ”€ (mt.s = o.c2)\n" + " β”œβ”€ TableAlias(mt)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(o)\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk c1 c2 c3 c4 c5]\n" + + " β”œβ”€ columns: [pk c1 c2 c3 c4 c5]\n" + + " └─ keys: mt.i\n" + "", - ExpectedAnalysis: "MergeJoin (estimated cost=7.100 rows=3) (actual rows=0 loops=1)\n" + - " β”œβ”€ cmp: (mt.i = o.pk)\n" + - " β”œβ”€ sel: (mt.s = o.c2)\n" + + ExpectedAnalysis: "LookupJoin (estimated cost=6.900 rows=3) (actual rows=0 loops=1)\n" + + " β”œβ”€ (mt.s = o.c2)\n" + " β”œβ”€ TableAlias(mt)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(o)\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk c1 c2 c3 c4 c5]\n" + + " β”œβ”€ columns: [pk c1 c2 c3 c4 c5]\n" + + " └─ keys: mt.i\n" + "", }, { Query: `SELECT i, i2, s2 FROM mytable RIGHT JOIN othertable ON i = i2 - 1`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [mytable.i:2!null, othertable.i2:1!null, othertable.s2:0!null]\n" + - " └─ LeftOuterJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ mytable.i:2!null\n" + - " β”‚ └─ (othertable.i2:1!null - 1 (tinyint))\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ └─ columns: [s2 i2]\n" + - " └─ ProcessTable\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [(othertable.i2:1!null - 1 (tinyint))]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + " β”œβ”€ name: mytable\n" + " └─ columns: [i]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " └─ LeftOuterJoin (estimated cost=3.345 rows=3)\n" + - " β”œβ”€ (mytable.i = (othertable.i2 - 1))\n" + + " └─ LeftOuterLookupJoin (estimated cost=3.345 rows=3)\n" + " β”œβ”€ Table\n" + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ └─ columns: [s2 i2]\n" + - " └─ Table\n" + - " β”œβ”€ name: mytable\n" + - " └─ columns: [i]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: (othertable.i2 - 1)\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [mytable.i, othertable.i2, othertable.s2]\n" + - " └─ LeftOuterJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ (mytable.i = (othertable.i2 - 1))\n" + + " └─ LeftOuterLookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + " β”œβ”€ Table\n" + " β”‚ β”œβ”€ name: othertable\n" + " β”‚ └─ columns: [s2 i2]\n" + - " └─ Table\n" + - " β”œβ”€ name: mytable\n" + - " └─ columns: [i]\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: (othertable.i2 - 1)\n" + "", }, { Query: `SELECT * FROM tabletest, mytable mt INNER JOIN othertable ot ON mt.i = ot.i2`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [tabletest.i:4!null, tabletest.s:5!null, mt.i:0!null, mt.s:1!null, ot.s2:2!null, ot.i2:3!null]\n" + + " β”œβ”€ columns: [tabletest.i:4!null, tabletest.s:5!null, mt.i:2!null, mt.s:3!null, ot.s2:0!null, ot.i2:1!null]\n" + " └─ CrossJoin\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ mt.i:0!null\n" + - " β”‚ β”‚ └─ ot.i2:3!null\n" + - " β”‚ β”œβ”€ TableAlias(mt)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(ot)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: mytable\n" + - " β”‚ β”‚ └─ columns: [i s]\n" + - " β”‚ └─ TableAlias(ot)\n" + - " β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (5,6)\n" + - " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ └─ columns: [s2 i2]\n" + + " β”‚ └─ TableAlias(mt)\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ keys: [ot.i2:1!null]\n" + + " β”‚ β”œβ”€ colSet: (3,4)\n" + + " β”‚ β”œβ”€ tableId: 2\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: othertable\n" + - " β”‚ └─ columns: [s2 i2]\n" + + " β”‚ β”œβ”€ name: mytable\n" + + " β”‚ └─ columns: [i s]\n" + " └─ ProcessTable\n" + " └─ Table\n" + " β”œβ”€ name: tabletest\n" + @@ -11774,18 +11482,16 @@ inner join pq on true ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [tabletest.i, tabletest.s, mt.i, mt.s, ot.s2, ot.i2]\n" + " └─ CrossJoin (estimated cost=10.090 rows=3)\n" + - " β”œβ”€ MergeJoin (estimated cost=6.090 rows=3)\n" + - " β”‚ β”œβ”€ cmp: (mt.i = ot.i2)\n" + - " β”‚ β”œβ”€ TableAlias(mt)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [i s]\n" + - " β”‚ └─ TableAlias(ot)\n" + - " β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [s2 i2]\n" + + " β”œβ”€ LookupJoin (estimated cost=3.345 rows=3)\n" + + " β”‚ β”œβ”€ TableAlias(ot)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ └─ columns: [s2 i2]\n" + + " β”‚ └─ TableAlias(mt)\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i s]\n" + + " β”‚ └─ keys: ot.i2\n" + " └─ Table\n" + " β”œβ”€ name: tabletest\n" + " └─ columns: [i s]\n" + @@ -11793,18 +11499,16 @@ inner join pq on true ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [tabletest.i, tabletest.s, mt.i, mt.s, ot.s2, ot.i2]\n" + " └─ CrossJoin (estimated cost=10.090 rows=3) (actual rows=9 loops=1)\n" + - " β”œβ”€ MergeJoin (estimated cost=6.090 rows=3) (actual rows=3 loops=1)\n" + - " β”‚ β”œβ”€ cmp: (mt.i = ot.i2)\n" + - " β”‚ β”œβ”€ TableAlias(mt)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [i s]\n" + - " β”‚ └─ TableAlias(ot)\n" + - " β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [s2 i2]\n" + + " β”œβ”€ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”‚ β”œβ”€ TableAlias(ot)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + + " β”‚ β”‚ └─ columns: [s2 i2]\n" + + " β”‚ └─ TableAlias(mt)\n" + + " β”‚ └─ IndexedTableAccess(mytable)\n" + + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”‚ β”œβ”€ columns: [i s]\n" + + " β”‚ └─ keys: ot.i2\n" + " └─ Table\n" + " β”œβ”€ name: tabletest\n" + " └─ columns: [i s]\n" + @@ -11832,7 +11536,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [t1.timestamp]\n" + - " └─ InnerJoin (estimated cost=1.115 rows=1)\n" + + " └─ InnerJoin (estimated cost=2.010 rows=1)\n" + " β”œβ”€ (t1.TIMESTAMP = t2.tImEstamp)\n" + " β”œβ”€ TableAlias(t2)\n" + " β”‚ └─ Table\n" + @@ -11845,7 +11549,7 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [t1.timestamp]\n" + - " └─ InnerJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + + " └─ InnerJoin (estimated cost=2.010 rows=1) (actual rows=1 loops=1)\n" + " β”œβ”€ (t1.TIMESTAMP = t2.tImEstamp)\n" + " β”œβ”€ TableAlias(t2)\n" + " β”‚ └─ Table\n" + @@ -12068,64 +11772,55 @@ inner join pq on true Query: `SELECT pk,pk1,pk2 FROM one_pk LEFT JOIN two_pk ON one_pk.pk <=> two_pk.pk1 AND one_pk.pk = two_pk.pk2`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:0!null, two_pk.pk1:1!null, two_pk.pk2:2!null]\n" + - " └─ LeftOuterJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ (one_pk.pk:0!null <=> two_pk.pk1:1!null)\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ two_pk.pk2:2!null\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + - " └─ ProcessTable\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null one_pk.pk:0!null]\n" + + " β”œβ”€ colSet: (7-13)\n" + + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + " β”œβ”€ name: two_pk\n" + " └─ columns: [pk1 pk2]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, two_pk.pk1, two_pk.pk2]\n" + - " └─ LeftOuterJoin (estimated cost=15.160 rows=5)\n" + - " β”œβ”€ ((one_pk.pk <=> two_pk.pk1) AND (one_pk.pk = two_pk.pk2))\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.287 rows=5)\n" + " β”œβ”€ Table\n" + - " β”‚ β”œβ”€ name: one_pk\n" + - " β”‚ └─ columns: [pk]\n" + - " └─ Table\n" + - " β”œβ”€ name: two_pk\n" + - " └─ columns: [pk1 pk2]\n" + + " β”‚ β”œβ”€ name: one_pk\n" + + " β”‚ └─ columns: [pk]\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: one_pk.pk, one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, two_pk.pk1, two_pk.pk2]\n" + - " └─ LeftOuterJoin (estimated cost=15.160 rows=5) (actual rows=4 loops=1)\n" + - " β”œβ”€ ((one_pk.pk <=> two_pk.pk1) AND (one_pk.pk = two_pk.pk2))\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.287 rows=5) (actual rows=4 loops=1)\n" + " β”œβ”€ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + - " └─ Table\n" + - " β”œβ”€ name: two_pk\n" + - " └─ columns: [pk1 pk2]\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: one_pk.pk, one_pk.pk\n" + "", }, { Query: `SELECT pk,pk1,pk2 FROM one_pk LEFT JOIN two_pk ON one_pk.pk = two_pk.pk1 AND one_pk.pk <=> two_pk.pk2`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:0!null, two_pk.pk1:1!null, two_pk.pk2:2!null]\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ two_pk.pk1:1!null\n" + - " β”œβ”€ sel: (one_pk.pk:0!null <=> two_pk.pk2:2!null)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null one_pk.pk:0!null]\n" + " β”œβ”€ colSet: (7-13)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -12134,92 +11829,83 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, two_pk.pk1, two_pk.pk2]\n" + - " └─ LeftOuterMergeJoin (estimated cost=8.160 rows=5)\n" + - " β”œβ”€ cmp: (one_pk.pk = two_pk.pk1)\n" + - " β”œβ”€ sel: (one_pk.pk <=> two_pk.pk2)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.287 rows=5)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: one_pk.pk, one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, two_pk.pk1, two_pk.pk2]\n" + - " └─ LeftOuterMergeJoin (estimated cost=8.160 rows=5) (actual rows=4 loops=1)\n" + - " β”œβ”€ cmp: (one_pk.pk = two_pk.pk1)\n" + - " β”œβ”€ sel: (one_pk.pk <=> two_pk.pk2)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.287 rows=5) (actual rows=4 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: one_pk.pk, one_pk.pk\n" + "", }, { Query: `SELECT pk,pk1,pk2 FROM one_pk LEFT JOIN two_pk ON one_pk.pk <=> two_pk.pk1 AND one_pk.pk <=> two_pk.pk2`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:0!null, two_pk.pk1:1!null, two_pk.pk2:2!null]\n" + - " └─ LeftOuterJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ (one_pk.pk:0!null <=> two_pk.pk1:1!null)\n" + - " β”‚ └─ (one_pk.pk:0!null <=> two_pk.pk2:2!null)\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + - " └─ ProcessTable\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null one_pk.pk:0!null]\n" + + " β”œβ”€ colSet: (7-13)\n" + + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + " β”œβ”€ name: two_pk\n" + " └─ columns: [pk1 pk2]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, two_pk.pk1, two_pk.pk2]\n" + - " └─ LeftOuterJoin (estimated cost=15.160 rows=5)\n" + - " β”œβ”€ ((one_pk.pk <=> two_pk.pk1) AND (one_pk.pk <=> two_pk.pk2))\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.287 rows=5)\n" + " β”œβ”€ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + - " └─ Table\n" + - " β”œβ”€ name: two_pk\n" + - " └─ columns: [pk1 pk2]\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: one_pk.pk, one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, two_pk.pk1, two_pk.pk2]\n" + - " └─ LeftOuterJoin (estimated cost=15.160 rows=5) (actual rows=4 loops=1)\n" + - " β”œβ”€ ((one_pk.pk <=> two_pk.pk1) AND (one_pk.pk <=> two_pk.pk2))\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.287 rows=5) (actual rows=4 loops=1)\n" + " β”œβ”€ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + - " └─ Table\n" + - " β”œβ”€ name: two_pk\n" + - " └─ columns: [pk1 pk2]\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: one_pk.pk, one_pk.pk\n" + "", }, { Query: `SELECT pk,pk1,pk2 FROM one_pk RIGHT JOIN two_pk ON one_pk.pk=two_pk.pk1 AND one_pk.pk=two_pk.pk2`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:2!null, two_pk.pk1:0!null, two_pk.pk2:1!null]\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ TUPLE(two_pk.pk1:0!null, two_pk.pk2:1!null)\n" + - " β”‚ └─ TUPLE(one_pk.pk:2!null, one_pk.pk:2!null)\n" + - " β”œβ”€ IndexedTableAccess(two_pk)\n" + - " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (7-13)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ one_pk.pk:2!null\n" + + " β”‚ └─ two_pk.pk2:1!null\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: two_pk\n" + " β”‚ └─ columns: [pk1 pk2]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [two_pk.pk1:0!null]\n" + " β”œβ”€ colSet: (1-6)\n" + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + @@ -12228,29 +11914,27 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, two_pk.pk1, two_pk.pk2]\n" + - " └─ LeftOuterMergeJoin (estimated cost=8.150 rows=5)\n" + - " β”œβ”€ cmp: ((two_pk.pk1, two_pk.pk2) = (one_pk.pk, one_pk.pk))\n" + - " β”œβ”€ IndexedTableAccess(two_pk)\n" + - " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.575 rows=5)\n" + + " β”œβ”€ (one_pk.pk = two_pk.pk2)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: two_pk\n" + " β”‚ └─ columns: [pk1 pk2]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: two_pk.pk1\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, two_pk.pk1, two_pk.pk2]\n" + - " └─ LeftOuterMergeJoin (estimated cost=8.150 rows=5) (actual rows=4 loops=1)\n" + - " β”œβ”€ cmp: ((two_pk.pk1, two_pk.pk2) = (one_pk.pk, one_pk.pk))\n" + - " β”œβ”€ IndexedTableAccess(two_pk)\n" + - " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.575 rows=5) (actual rows=4 loops=1)\n" + + " β”œβ”€ (one_pk.pk = two_pk.pk2)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: two_pk\n" + " β”‚ └─ columns: [pk1 pk2]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: two_pk.pk1\n" + "", }, { @@ -12584,158 +12268,125 @@ inner join pq on true }, { Query: `SELECT * FROM datetime_table dt1 join datetime_table dt2 on dt1.timestamp_col = dt2.timestamp_col`, - ExpectedPlan: "MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ dt1.timestamp_col:3\n" + - " β”‚ └─ dt2.timestamp_col:8\n" + + ExpectedPlan: "LookupJoin\n" + " β”œβ”€ TableAlias(dt1)\n" + - " β”‚ └─ IndexedTableAccess(datetime_table)\n" + - " β”‚ β”œβ”€ index: [datetime_table.timestamp_col]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-5)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: datetime_table\n" + " β”‚ └─ columns: [i date_col datetime_col timestamp_col time_col]\n" + " └─ TableAlias(dt2)\n" + " └─ IndexedTableAccess(datetime_table)\n" + " β”œβ”€ index: [datetime_table.timestamp_col]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [dt1.timestamp_col:3]\n" + " β”œβ”€ colSet: (6-10)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + " β”œβ”€ name: datetime_table\n" + " └─ columns: [i date_col datetime_col timestamp_col time_col]\n" + "", - ExpectedEstimates: "MergeJoin (estimated cost=6.120 rows=3)\n" + - " β”œβ”€ cmp: (dt1.timestamp_col = dt2.timestamp_col)\n" + + ExpectedEstimates: "LookupJoin (estimated cost=3.345 rows=3)\n" + " β”œβ”€ TableAlias(dt1)\n" + - " β”‚ └─ IndexedTableAccess(datetime_table)\n" + - " β”‚ β”œβ”€ index: [datetime_table.timestamp_col]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: datetime_table\n" + " β”‚ └─ columns: [i date_col datetime_col timestamp_col time_col]\n" + " └─ TableAlias(dt2)\n" + " └─ IndexedTableAccess(datetime_table)\n" + " β”œβ”€ index: [datetime_table.timestamp_col]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i date_col datetime_col timestamp_col time_col]\n" + + " β”œβ”€ columns: [i date_col datetime_col timestamp_col time_col]\n" + + " └─ keys: dt1.timestamp_col\n" + "", - ExpectedAnalysis: "MergeJoin (estimated cost=6.120 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ cmp: (dt1.timestamp_col = dt2.timestamp_col)\n" + + ExpectedAnalysis: "LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + " β”œβ”€ TableAlias(dt1)\n" + - " β”‚ └─ IndexedTableAccess(datetime_table)\n" + - " β”‚ β”œβ”€ index: [datetime_table.timestamp_col]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: datetime_table\n" + " β”‚ └─ columns: [i date_col datetime_col timestamp_col time_col]\n" + " └─ TableAlias(dt2)\n" + " └─ IndexedTableAccess(datetime_table)\n" + " β”œβ”€ index: [datetime_table.timestamp_col]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i date_col datetime_col timestamp_col time_col]\n" + + " β”œβ”€ columns: [i date_col datetime_col timestamp_col time_col]\n" + + " └─ keys: dt1.timestamp_col\n" + "", }, { Query: `SELECT * FROM datetime_table dt1 join datetime_table dt2 on dt1.date_col = dt2.timestamp_col`, - ExpectedPlan: "MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ dt1.date_col:1\n" + - " β”‚ └─ dt2.timestamp_col:8\n" + + ExpectedPlan: "LookupJoin\n" + " β”œβ”€ TableAlias(dt1)\n" + - " β”‚ └─ IndexedTableAccess(datetime_table)\n" + - " β”‚ β”œβ”€ index: [datetime_table.date_col]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-5)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: datetime_table\n" + " β”‚ └─ columns: [i date_col datetime_col timestamp_col time_col]\n" + " └─ TableAlias(dt2)\n" + " └─ IndexedTableAccess(datetime_table)\n" + " β”œβ”€ index: [datetime_table.timestamp_col]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [dt1.date_col:1]\n" + " β”œβ”€ colSet: (6-10)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + " β”œβ”€ name: datetime_table\n" + " └─ columns: [i date_col datetime_col timestamp_col time_col]\n" + "", - ExpectedEstimates: "MergeJoin (estimated cost=6.120 rows=3)\n" + - " β”œβ”€ cmp: (dt1.date_col = dt2.timestamp_col)\n" + + ExpectedEstimates: "LookupJoin (estimated cost=3.345 rows=3)\n" + " β”œβ”€ TableAlias(dt1)\n" + - " β”‚ └─ IndexedTableAccess(datetime_table)\n" + - " β”‚ β”œβ”€ index: [datetime_table.date_col]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: datetime_table\n" + " β”‚ └─ columns: [i date_col datetime_col timestamp_col time_col]\n" + " └─ TableAlias(dt2)\n" + " └─ IndexedTableAccess(datetime_table)\n" + " β”œβ”€ index: [datetime_table.timestamp_col]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i date_col datetime_col timestamp_col time_col]\n" + + " β”œβ”€ columns: [i date_col datetime_col timestamp_col time_col]\n" + + " └─ keys: dt1.date_col\n" + "", - ExpectedAnalysis: "MergeJoin (estimated cost=6.120 rows=3) (actual rows=0 loops=1)\n" + - " β”œβ”€ cmp: (dt1.date_col = dt2.timestamp_col)\n" + + ExpectedAnalysis: "LookupJoin (estimated cost=3.345 rows=3) (actual rows=0 loops=1)\n" + " β”œβ”€ TableAlias(dt1)\n" + - " β”‚ └─ IndexedTableAccess(datetime_table)\n" + - " β”‚ β”œβ”€ index: [datetime_table.date_col]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: datetime_table\n" + " β”‚ └─ columns: [i date_col datetime_col timestamp_col time_col]\n" + " └─ TableAlias(dt2)\n" + " └─ IndexedTableAccess(datetime_table)\n" + " β”œβ”€ index: [datetime_table.timestamp_col]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i date_col datetime_col timestamp_col time_col]\n" + + " β”œβ”€ columns: [i date_col datetime_col timestamp_col time_col]\n" + + " └─ keys: dt1.date_col\n" + "", }, { Query: `SELECT * FROM datetime_table dt1 join datetime_table dt2 on dt1.datetime_col = dt2.timestamp_col`, - ExpectedPlan: "MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ dt1.datetime_col:2\n" + - " β”‚ └─ dt2.timestamp_col:8\n" + + ExpectedPlan: "LookupJoin\n" + " β”œβ”€ TableAlias(dt1)\n" + - " β”‚ └─ IndexedTableAccess(datetime_table)\n" + - " β”‚ β”œβ”€ index: [datetime_table.datetime_col]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-5)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: datetime_table\n" + " β”‚ └─ columns: [i date_col datetime_col timestamp_col time_col]\n" + " └─ TableAlias(dt2)\n" + " └─ IndexedTableAccess(datetime_table)\n" + " β”œβ”€ index: [datetime_table.timestamp_col]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [dt1.datetime_col:2]\n" + " β”œβ”€ colSet: (6-10)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + " β”œβ”€ name: datetime_table\n" + " └─ columns: [i date_col datetime_col timestamp_col time_col]\n" + "", - ExpectedEstimates: "MergeJoin (estimated cost=6.120 rows=3)\n" + - " β”œβ”€ cmp: (dt1.datetime_col = dt2.timestamp_col)\n" + + ExpectedEstimates: "LookupJoin (estimated cost=3.345 rows=3)\n" + " β”œβ”€ TableAlias(dt1)\n" + - " β”‚ └─ IndexedTableAccess(datetime_table)\n" + - " β”‚ β”œβ”€ index: [datetime_table.datetime_col]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: datetime_table\n" + " β”‚ └─ columns: [i date_col datetime_col timestamp_col time_col]\n" + " └─ TableAlias(dt2)\n" + " └─ IndexedTableAccess(datetime_table)\n" + " β”œβ”€ index: [datetime_table.timestamp_col]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i date_col datetime_col timestamp_col time_col]\n" + + " β”œβ”€ columns: [i date_col datetime_col timestamp_col time_col]\n" + + " └─ keys: dt1.datetime_col\n" + "", - ExpectedAnalysis: "MergeJoin (estimated cost=6.120 rows=3) (actual rows=0 loops=1)\n" + - " β”œβ”€ cmp: (dt1.datetime_col = dt2.timestamp_col)\n" + + ExpectedAnalysis: "LookupJoin (estimated cost=3.345 rows=3) (actual rows=0 loops=1)\n" + " β”œβ”€ TableAlias(dt1)\n" + - " β”‚ └─ IndexedTableAccess(datetime_table)\n" + - " β”‚ β”œβ”€ index: [datetime_table.datetime_col]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: datetime_table\n" + " β”‚ └─ columns: [i date_col datetime_col timestamp_col time_col]\n" + " └─ TableAlias(dt2)\n" + " └─ IndexedTableAccess(datetime_table)\n" + " β”œβ”€ index: [datetime_table.timestamp_col]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i date_col datetime_col timestamp_col time_col]\n" + + " β”œβ”€ columns: [i date_col datetime_col timestamp_col time_col]\n" + + " └─ keys: dt1.datetime_col\n" + "", }, { @@ -12745,49 +12396,49 @@ inner join pq on true ExpectedPlan: "Project\n" + " β”œβ”€ columns: [dt1.i:1!null]\n" + " └─ Sort(dt1.i:1!null ASC nullsFirst)\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ dt1.date_col:2\n" + - " β”‚ └─ DATE(date_sub(dt2.timestamp_col,INTERVAL 2 DAY))\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(dt2)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: datetime_table\n" + " β”‚ └─ columns: [timestamp_col]\n" + " └─ TableAlias(dt1)\n" + - " └─ Table\n" + - " β”œβ”€ name: datetime_table\n" + - " β”œβ”€ columns: [i date_col]\n" + + " └─ IndexedTableAccess(datetime_table)\n" + + " β”œβ”€ index: [datetime_table.date_col]\n" + + " β”œβ”€ keys: [DATE(date_sub(dt2.timestamp_col,INTERVAL 2 DAY))]\n" + " β”œβ”€ colSet: (1-5)\n" + - " └─ tableId: 1\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: datetime_table\n" + + " └─ columns: [i date_col]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [dt1.i]\n" + " └─ Sort(dt1.i ASC)\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (dt1.date_col = DATE(date_sub(dt2.timestamp_col,INTERVAL 2 DAY)))\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(dt2)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: datetime_table\n" + " β”‚ └─ columns: [timestamp_col]\n" + " └─ TableAlias(dt1)\n" + - " └─ Table\n" + - " β”œβ”€ name: datetime_table\n" + - " └─ columns: [i date_col]\n" + + " └─ IndexedTableAccess(datetime_table)\n" + + " β”œβ”€ index: [datetime_table.date_col]\n" + + " β”œβ”€ columns: [i date_col]\n" + + " └─ keys: DATE(date_sub(dt2.timestamp_col,INTERVAL 2 DAY))\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [dt1.i]\n" + " └─ Sort(dt1.i ASC)\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (dt1.date_col = DATE(date_sub(dt2.timestamp_col,INTERVAL 2 DAY)))\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(dt2)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: datetime_table\n" + " β”‚ └─ columns: [timestamp_col]\n" + " └─ TableAlias(dt1)\n" + - " └─ Table\n" + - " β”œβ”€ name: datetime_table\n" + - " └─ columns: [i date_col]\n" + + " └─ IndexedTableAccess(datetime_table)\n" + + " β”œβ”€ index: [datetime_table.date_col]\n" + + " β”œβ”€ columns: [i date_col]\n" + + " └─ keys: DATE(date_sub(dt2.timestamp_col,INTERVAL 2 DAY))\n" + "", }, { @@ -12798,51 +12449,51 @@ inner join pq on true " └─ Project\n" + " β”œβ”€ columns: [dt1.i:1!null]\n" + " └─ Sort(dt1.i:1!null ASC nullsFirst)\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ dt1.date_col:2\n" + - " β”‚ └─ DATE(date_sub(dt2.timestamp_col,INTERVAL 2 DAY))\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(dt2)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: datetime_table\n" + " β”‚ └─ columns: [timestamp_col]\n" + " └─ TableAlias(dt1)\n" + - " └─ Table\n" + - " β”œβ”€ name: datetime_table\n" + - " β”œβ”€ columns: [i date_col]\n" + + " └─ IndexedTableAccess(datetime_table)\n" + + " β”œβ”€ index: [datetime_table.date_col]\n" + + " β”œβ”€ keys: [DATE(date_sub(dt2.timestamp_col,INTERVAL 2 DAY))]\n" + " β”œβ”€ colSet: (1-5)\n" + - " └─ tableId: 1\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: datetime_table\n" + + " └─ columns: [i date_col]\n" + "", ExpectedEstimates: "Limit(3)\n" + " └─ Project\n" + " β”œβ”€ columns: [dt1.i]\n" + " └─ Sort(dt1.i ASC)\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (dt1.date_col = DATE(date_sub(dt2.timestamp_col,INTERVAL 2 DAY)))\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(dt2)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: datetime_table\n" + " β”‚ └─ columns: [timestamp_col]\n" + " └─ TableAlias(dt1)\n" + - " └─ Table\n" + - " β”œβ”€ name: datetime_table\n" + - " └─ columns: [i date_col]\n" + + " └─ IndexedTableAccess(datetime_table)\n" + + " β”œβ”€ index: [datetime_table.date_col]\n" + + " β”œβ”€ columns: [i date_col]\n" + + " └─ keys: DATE(date_sub(dt2.timestamp_col,INTERVAL 2 DAY))\n" + "", ExpectedAnalysis: "Limit(3)\n" + " └─ Project\n" + " β”œβ”€ columns: [dt1.i]\n" + " └─ Sort(dt1.i ASC)\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (dt1.date_col = DATE(date_sub(dt2.timestamp_col,INTERVAL 2 DAY)))\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(dt2)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: datetime_table\n" + " β”‚ └─ columns: [timestamp_col]\n" + " └─ TableAlias(dt1)\n" + - " └─ Table\n" + - " β”œβ”€ name: datetime_table\n" + - " └─ columns: [i date_col]\n" + + " └─ IndexedTableAccess(datetime_table)\n" + + " β”œβ”€ index: [datetime_table.date_col]\n" + + " β”œβ”€ columns: [i date_col]\n" + + " └─ keys: DATE(date_sub(dt2.timestamp_col,INTERVAL 2 DAY))\n" + "", }, { @@ -12853,51 +12504,51 @@ inner join pq on true " └─ Project\n" + " β”œβ”€ columns: [dt1.i:1!null]\n" + " └─ Sort(dt1.i:1!null ASC nullsFirst)\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ dt1.date_col:2\n" + - " β”‚ └─ DATE(date_sub(dt2.timestamp_col,INTERVAL 2 DAY))\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(dt2)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: datetime_table\n" + " β”‚ └─ columns: [timestamp_col]\n" + " └─ TableAlias(dt1)\n" + - " └─ Table\n" + - " β”œβ”€ name: datetime_table\n" + - " β”œβ”€ columns: [i date_col]\n" + + " └─ IndexedTableAccess(datetime_table)\n" + + " β”œβ”€ index: [datetime_table.date_col]\n" + + " β”œβ”€ keys: [DATE(date_sub(dt2.timestamp_col,INTERVAL 2 DAY))]\n" + " β”œβ”€ colSet: (1-5)\n" + - " └─ tableId: 1\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: datetime_table\n" + + " └─ columns: [i date_col]\n" + "", ExpectedEstimates: "Limit(3)\n" + " └─ Project\n" + " β”œβ”€ columns: [dt1.i]\n" + " └─ Sort(dt1.i ASC)\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (dt1.date_col = DATE(date_sub(dt2.timestamp_col,INTERVAL 2 DAY)))\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(dt2)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: datetime_table\n" + " β”‚ └─ columns: [timestamp_col]\n" + " └─ TableAlias(dt1)\n" + - " └─ Table\n" + - " β”œβ”€ name: datetime_table\n" + - " └─ columns: [i date_col]\n" + + " └─ IndexedTableAccess(datetime_table)\n" + + " β”œβ”€ index: [datetime_table.date_col]\n" + + " β”œβ”€ columns: [i date_col]\n" + + " └─ keys: DATE(date_sub(dt2.timestamp_col,INTERVAL 2 DAY))\n" + "", ExpectedAnalysis: "Limit(3)\n" + " └─ Project\n" + " β”œβ”€ columns: [dt1.i]\n" + " └─ Sort(dt1.i ASC)\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (dt1.date_col = DATE(date_sub(dt2.timestamp_col,INTERVAL 2 DAY)))\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(dt2)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: datetime_table\n" + " β”‚ └─ columns: [timestamp_col]\n" + " └─ TableAlias(dt1)\n" + - " └─ Table\n" + - " β”œβ”€ name: datetime_table\n" + - " └─ columns: [i date_col]\n" + + " └─ IndexedTableAccess(datetime_table)\n" + + " β”œβ”€ index: [datetime_table.date_col]\n" + + " β”œβ”€ columns: [i date_col]\n" + + " └─ keys: DATE(date_sub(dt2.timestamp_col,INTERVAL 2 DAY))\n" + "", }, { @@ -13076,14 +12727,7 @@ inner join pq on true LEFT JOIN two_pk tpk2 ON tpk2.pk1=TPK.pk2 AND TPK2.pk2=tpk.pk1`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:0!null]\n" + - " └─ LeftOuterJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ tpk2.pk1:3!null\n" + - " β”‚ β”‚ └─ tpk.pk2:2!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ tpk2.pk2:4!null\n" + - " β”‚ └─ tpk.pk1:1!null\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ MergeJoin\n" + " β”‚ β”œβ”€ cmp: Eq\n" + " β”‚ β”‚ β”œβ”€ one_pk.pk:0!null\n" + @@ -13109,15 +12753,18 @@ inner join pq on true " β”‚ β”œβ”€ name: two_pk\n" + " β”‚ └─ columns: [pk1 pk2]\n" + " └─ TableAlias(tpk2)\n" + - " └─ ProcessTable\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ keys: [tpk.pk2:2!null tpk.pk1:1!null]\n" + + " β”œβ”€ colSet: (14-20)\n" + + " β”œβ”€ tableId: 3\n" + " └─ Table\n" + " β”œβ”€ name: two_pk\n" + " └─ columns: [pk1 pk2]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk]\n" + - " └─ LeftOuterJoin (estimated cost=15.160 rows=5)\n" + - " β”œβ”€ ((tpk2.pk1 = tpk.pk2) AND (tpk2.pk2 = tpk.pk1))\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.287 rows=5)\n" + " β”œβ”€ MergeJoin (estimated cost=8.120 rows=4)\n" + " β”‚ β”œβ”€ cmp: (one_pk.pk = tpk.pk1)\n" + " β”‚ β”œβ”€ sel: (one_pk.pk = tpk.pk2)\n" + @@ -13131,14 +12778,14 @@ inner join pq on true " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + " β”‚ └─ columns: [pk1 pk2]\n" + " └─ TableAlias(tpk2)\n" + - " └─ Table\n" + - " β”œβ”€ name: two_pk\n" + - " └─ columns: [pk1 pk2]\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: tpk.pk2, tpk.pk1\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk]\n" + - " └─ LeftOuterJoin (estimated cost=15.160 rows=5) (actual rows=2 loops=1)\n" + - " β”œβ”€ ((tpk2.pk1 = tpk.pk2) AND (tpk2.pk2 = tpk.pk1))\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.287 rows=5) (actual rows=2 loops=1)\n" + " β”œβ”€ MergeJoin (estimated cost=8.120 rows=4) (actual rows=2 loops=1)\n" + " β”‚ β”œβ”€ cmp: (one_pk.pk = tpk.pk1)\n" + " β”‚ β”œβ”€ sel: (one_pk.pk = tpk.pk2)\n" + @@ -13152,9 +12799,10 @@ inner join pq on true " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + " β”‚ └─ columns: [pk1 pk2]\n" + " └─ TableAlias(tpk2)\n" + - " └─ Table\n" + - " β”œβ”€ name: two_pk\n" + - " └─ columns: [pk1 pk2]\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: tpk.pk2, tpk.pk1\n" + "", }, { @@ -13165,192 +12813,136 @@ inner join pq on true ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:0!null, tpk.pk1:1!null, tpk2.pk1:3!null, tpk.pk2:2!null, tpk2.pk2:4!null]\n" + " └─ Sort(one_pk.pk:0!null ASC nullsFirst)\n" + - " └─ HashJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ (one_pk.pk:0!null - 1 (tinyint))\n" + - " β”‚ β”‚ └─ tpk2.pk1:3!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ tpk2.pk2:4!null\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ β”‚ └─ tpk.pk1:1!null\n" + - " β”‚ β”œβ”€ sel: Eq\n" + - " β”‚ β”‚ β”œβ”€ (one_pk.pk:0!null - 1 (tinyint))\n" + - " β”‚ β”‚ └─ tpk.pk2:2!null\n" + - " β”‚ β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ ProcessTable\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: one_pk\n" + " β”‚ β”‚ └─ columns: [pk]\n" + " β”‚ └─ TableAlias(tpk)\n" + " β”‚ └─ IndexedTableAccess(two_pk)\n" + " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”œβ”€ keys: [one_pk.pk:0!null (one_pk.pk:0!null - 1 (tinyint))]\n" + " β”‚ β”œβ”€ colSet: (7-13)\n" + " β”‚ β”œβ”€ tableId: 2\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: two_pk\n" + " β”‚ └─ columns: [pk1 pk2]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE((one_pk.pk:0!null - 1 (tinyint)), one_pk.pk:0!null)\n" + - " β”œβ”€ right-key: TUPLE(tpk2.pk1:0!null, tpk2.pk2:1!null)\n" + - " └─ TableAlias(tpk2)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: two_pk\n" + - " └─ columns: [pk1 pk2]\n" + + " └─ TableAlias(tpk2)\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ keys: [(one_pk.pk:0!null - 1 (tinyint)) one_pk.pk:0!null]\n" + + " β”œβ”€ colSet: (14-20)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: two_pk\n" + + " └─ columns: [pk1 pk2]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, tpk.pk1, tpk2.pk1, tpk.pk2, tpk2.pk2]\n" + " └─ Sort(one_pk.pk ASC)\n" + - " └─ HashJoin\n" + - " β”œβ”€ (((one_pk.pk - 1) = tpk2.pk1) AND (one_pk.pk = tpk2.pk2))\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (one_pk.pk = tpk.pk1)\n" + - " β”‚ β”œβ”€ sel: ((one_pk.pk - 1) = tpk.pk2)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: one_pk\n" + " β”‚ β”‚ └─ columns: [pk]\n" + " β”‚ └─ TableAlias(tpk)\n" + " β”‚ └─ IndexedTableAccess(two_pk)\n" + " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk1 pk2]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: ((one_pk.pk - 1), one_pk.pk)\n" + - " β”œβ”€ right-key: (tpk2.pk1, tpk2.pk2)\n" + - " └─ TableAlias(tpk2)\n" + - " └─ Table\n" + - " β”œβ”€ name: two_pk\n" + - " └─ columns: [pk1 pk2]\n" + + " β”‚ β”œβ”€ columns: [pk1 pk2]\n" + + " β”‚ └─ keys: one_pk.pk, (one_pk.pk - 1)\n" + + " └─ TableAlias(tpk2)\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: (one_pk.pk - 1), one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, tpk.pk1, tpk2.pk1, tpk.pk2, tpk2.pk2]\n" + " └─ Sort(one_pk.pk ASC)\n" + - " └─ HashJoin\n" + - " β”œβ”€ (((one_pk.pk - 1) = tpk2.pk1) AND (one_pk.pk = tpk2.pk2))\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (one_pk.pk = tpk.pk1)\n" + - " β”‚ β”œβ”€ sel: ((one_pk.pk - 1) = tpk.pk2)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: one_pk\n" + " β”‚ β”‚ └─ columns: [pk]\n" + - " β”‚ └─ TableAlias(tpk)\n" + - " β”‚ └─ IndexedTableAccess(two_pk)\n" + - " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk1 pk2]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: ((one_pk.pk - 1), one_pk.pk)\n" + - " β”œβ”€ right-key: (tpk2.pk1, tpk2.pk2)\n" + - " └─ TableAlias(tpk2)\n" + - " └─ Table\n" + - " β”œβ”€ name: two_pk\n" + - " └─ columns: [pk1 pk2]\n" + - "", - }, - { - Query: `SELECT pk FROM one_pk - LEFT JOIN two_pk tpk ON one_pk.pk=tpk.pk1 AND one_pk.pk=tpk.pk2 - LEFT JOIN two_pk tpk2 ON tpk2.pk1=TPK.pk2 AND TPK2.pk2=tpk.pk1`, - ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [one_pk.pk:0!null]\n" + - " └─ LeftOuterHashJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ tpk2.pk1:3!null\n" + - " β”‚ β”‚ └─ tpk.pk2:2!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ tpk2.pk2:4!null\n" + - " β”‚ └─ tpk.pk1:1!null\n" + - " β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ β”‚ └─ tpk.pk1:1!null\n" + - " β”‚ β”œβ”€ sel: Eq\n" + - " β”‚ β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ β”‚ └─ tpk.pk2:2!null\n" + - " β”‚ β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ TableAlias(tpk)\n" + + " β”‚ └─ IndexedTableAccess(two_pk)\n" + + " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”‚ β”œβ”€ columns: [pk1 pk2]\n" + + " β”‚ └─ keys: one_pk.pk, (one_pk.pk - 1)\n" + + " └─ TableAlias(tpk2)\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: (one_pk.pk - 1), one_pk.pk\n" + + "", + }, + { + Query: `SELECT pk FROM one_pk + LEFT JOIN two_pk tpk ON one_pk.pk=tpk.pk1 AND one_pk.pk=tpk.pk2 + LEFT JOIN two_pk tpk2 ON tpk2.pk1=TPK.pk2 AND TPK2.pk2=tpk.pk1`, + ExpectedPlan: "Project\n" + + " β”œβ”€ columns: [one_pk.pk:0!null]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”œβ”€ ProcessTable\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: one_pk\n" + " β”‚ β”‚ └─ columns: [pk]\n" + " β”‚ └─ TableAlias(tpk)\n" + " β”‚ └─ IndexedTableAccess(two_pk)\n" + " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”œβ”€ keys: [one_pk.pk:0!null one_pk.pk:0!null]\n" + " β”‚ β”œβ”€ colSet: (7-13)\n" + " β”‚ β”œβ”€ tableId: 2\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: two_pk\n" + " β”‚ └─ columns: [pk1 pk2]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(tpk.pk2:2!null, tpk.pk1:1!null)\n" + - " β”œβ”€ right-key: TUPLE(tpk2.pk1:0!null, tpk2.pk2:1!null)\n" + - " └─ TableAlias(tpk2)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: two_pk\n" + - " └─ columns: [pk1 pk2]\n" + + " └─ TableAlias(tpk2)\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ keys: [tpk.pk2:2!null tpk.pk1:1!null]\n" + + " β”œβ”€ colSet: (14-20)\n" + + " β”œβ”€ tableId: 3\n" + + " └─ Table\n" + + " β”œβ”€ name: two_pk\n" + + " └─ columns: [pk1 pk2]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk]\n" + - " └─ LeftOuterHashJoin (estimated cost=17.100 rows=5)\n" + - " β”œβ”€ ((tpk2.pk1 = tpk.pk2) AND (tpk2.pk2 = tpk.pk1))\n" + - " β”œβ”€ LeftOuterMergeJoin (estimated cost=8.160 rows=5)\n" + - " β”‚ β”œβ”€ cmp: (one_pk.pk = tpk.pk1)\n" + - " β”‚ β”œβ”€ sel: (one_pk.pk = tpk.pk2)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=5.287 rows=5)\n" + + " β”œβ”€ LeftOuterLookupJoin (estimated cost=4.287 rows=5)\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: one_pk\n" + " β”‚ β”‚ └─ columns: [pk]\n" + " β”‚ └─ TableAlias(tpk)\n" + " β”‚ └─ IndexedTableAccess(two_pk)\n" + " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk1 pk2]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (tpk.pk2, tpk.pk1)\n" + - " β”œβ”€ right-key: (tpk2.pk1, tpk2.pk2)\n" + - " └─ TableAlias(tpk2)\n" + - " └─ Table\n" + - " β”œβ”€ name: two_pk\n" + - " └─ columns: [pk1 pk2]\n" + + " β”‚ β”œβ”€ columns: [pk1 pk2]\n" + + " β”‚ └─ keys: one_pk.pk, one_pk.pk\n" + + " └─ TableAlias(tpk2)\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: tpk.pk2, tpk.pk1\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk]\n" + - " └─ LeftOuterHashJoin (estimated cost=17.100 rows=5) (actual rows=4 loops=1)\n" + - " β”œβ”€ ((tpk2.pk1 = tpk.pk2) AND (tpk2.pk2 = tpk.pk1))\n" + - " β”œβ”€ LeftOuterMergeJoin (estimated cost=8.160 rows=5) (actual rows=4 loops=1)\n" + - " β”‚ β”œβ”€ cmp: (one_pk.pk = tpk.pk1)\n" + - " β”‚ β”œβ”€ sel: (one_pk.pk = tpk.pk2)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=5.287 rows=5) (actual rows=4 loops=1)\n" + + " β”œβ”€ LeftOuterLookupJoin (estimated cost=4.287 rows=5) (actual rows=4 loops=1)\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: one_pk\n" + " β”‚ β”‚ └─ columns: [pk]\n" + " β”‚ └─ TableAlias(tpk)\n" + " β”‚ └─ IndexedTableAccess(two_pk)\n" + " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk1 pk2]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (tpk.pk2, tpk.pk1)\n" + - " β”œβ”€ right-key: (tpk2.pk1, tpk2.pk2)\n" + - " └─ TableAlias(tpk2)\n" + - " └─ Table\n" + - " β”œβ”€ name: two_pk\n" + - " └─ columns: [pk1 pk2]\n" + + " β”‚ β”œβ”€ columns: [pk1 pk2]\n" + + " β”‚ └─ keys: one_pk.pk, one_pk.pk\n" + + " └─ TableAlias(tpk2)\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: tpk.pk2, tpk.pk1\n" + "", }, { @@ -13360,25 +12952,15 @@ inner join pq on true ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:0!null]\n" + " └─ LookupJoin\n" + - " β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ β”‚ └─ tpk.pk1:1!null\n" + - " β”‚ β”œβ”€ sel: Eq\n" + - " β”‚ β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ β”‚ └─ tpk.pk2:2!null\n" + - " β”‚ β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”œβ”€ ProcessTable\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: one_pk\n" + " β”‚ β”‚ └─ columns: [pk]\n" + " β”‚ └─ TableAlias(tpk)\n" + " β”‚ └─ IndexedTableAccess(two_pk)\n" + " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”œβ”€ keys: [one_pk.pk:0!null one_pk.pk:0!null]\n" + " β”‚ β”œβ”€ colSet: (7-13)\n" + " β”‚ β”œβ”€ tableId: 2\n" + " β”‚ └─ Table\n" + @@ -13397,18 +12979,15 @@ inner join pq on true ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk]\n" + " └─ LookupJoin (estimated cost=11.500 rows=5)\n" + - " β”œβ”€ LeftOuterMergeJoin (estimated cost=8.160 rows=5)\n" + - " β”‚ β”œβ”€ cmp: (one_pk.pk = tpk.pk1)\n" + - " β”‚ β”œβ”€ sel: (one_pk.pk = tpk.pk2)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”œβ”€ LeftOuterLookupJoin (estimated cost=4.287 rows=5)\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: one_pk\n" + " β”‚ β”‚ └─ columns: [pk]\n" + " β”‚ └─ TableAlias(tpk)\n" + " β”‚ └─ IndexedTableAccess(two_pk)\n" + " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk1 pk2]\n" + + " β”‚ β”œβ”€ columns: [pk1 pk2]\n" + + " β”‚ └─ keys: one_pk.pk, one_pk.pk\n" + " └─ TableAlias(tpk2)\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + @@ -13418,18 +12997,15 @@ inner join pq on true ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk]\n" + " └─ LookupJoin (estimated cost=11.500 rows=5) (actual rows=2 loops=1)\n" + - " β”œβ”€ LeftOuterMergeJoin (estimated cost=8.160 rows=5) (actual rows=4 loops=1)\n" + - " β”‚ β”œβ”€ cmp: (one_pk.pk = tpk.pk1)\n" + - " β”‚ β”œβ”€ sel: (one_pk.pk = tpk.pk2)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”œβ”€ LeftOuterLookupJoin (estimated cost=4.287 rows=5) (actual rows=4 loops=1)\n" + + " β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”œβ”€ name: one_pk\n" + " β”‚ β”‚ └─ columns: [pk]\n" + " β”‚ └─ TableAlias(tpk)\n" + " β”‚ └─ IndexedTableAccess(two_pk)\n" + " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk1 pk2]\n" + + " β”‚ β”œβ”€ columns: [pk1 pk2]\n" + + " β”‚ └─ keys: one_pk.pk, one_pk.pk\n" + " └─ TableAlias(tpk2)\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + @@ -13443,14 +13019,7 @@ inner join pq on true LEFT JOIN two_pk tpk2 ON tpk2.pk1=TPK.pk2 AND TPK2.pk2=tpk.pk1`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:0!null]\n" + - " └─ LeftOuterJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ tpk2.pk1:3!null\n" + - " β”‚ β”‚ └─ tpk.pk2:2!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ tpk2.pk2:4!null\n" + - " β”‚ └─ tpk.pk1:1!null\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ MergeJoin\n" + " β”‚ β”œβ”€ cmp: Eq\n" + " β”‚ β”‚ β”œβ”€ one_pk.pk:0!null\n" + @@ -13476,15 +13045,18 @@ inner join pq on true " β”‚ β”œβ”€ name: two_pk\n" + " β”‚ └─ columns: [pk1 pk2]\n" + " └─ TableAlias(tpk2)\n" + - " └─ ProcessTable\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ keys: [tpk.pk2:2!null tpk.pk1:1!null]\n" + + " β”œβ”€ colSet: (14-20)\n" + + " β”œβ”€ tableId: 3\n" + " └─ Table\n" + " β”œβ”€ name: two_pk\n" + " └─ columns: [pk1 pk2]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk]\n" + - " └─ LeftOuterJoin (estimated cost=15.160 rows=5)\n" + - " β”œβ”€ ((tpk2.pk1 = tpk.pk2) AND (tpk2.pk2 = tpk.pk1))\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.287 rows=5)\n" + " β”œβ”€ MergeJoin (estimated cost=8.120 rows=4)\n" + " β”‚ β”œβ”€ cmp: (one_pk.pk = tpk.pk1)\n" + " β”‚ β”œβ”€ sel: (one_pk.pk = tpk.pk2)\n" + @@ -13498,14 +13070,14 @@ inner join pq on true " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + " β”‚ └─ columns: [pk1 pk2]\n" + " └─ TableAlias(tpk2)\n" + - " └─ Table\n" + - " β”œβ”€ name: two_pk\n" + - " └─ columns: [pk1 pk2]\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: tpk.pk2, tpk.pk1\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk]\n" + - " └─ LeftOuterJoin (estimated cost=15.160 rows=5) (actual rows=2 loops=1)\n" + - " β”œβ”€ ((tpk2.pk1 = tpk.pk2) AND (tpk2.pk2 = tpk.pk1))\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.287 rows=5) (actual rows=2 loops=1)\n" + " β”œβ”€ MergeJoin (estimated cost=8.120 rows=4) (actual rows=2 loops=1)\n" + " β”‚ β”œβ”€ cmp: (one_pk.pk = tpk.pk1)\n" + " β”‚ β”œβ”€ sel: (one_pk.pk = tpk.pk2)\n" + @@ -13519,9 +13091,10 @@ inner join pq on true " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + " β”‚ └─ columns: [pk1 pk2]\n" + " └─ TableAlias(tpk2)\n" + - " └─ Table\n" + - " β”œβ”€ name: two_pk\n" + - " └─ columns: [pk1 pk2]\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: tpk.pk2, tpk.pk1\n" + "", }, { @@ -13546,22 +13119,19 @@ inner join pq on true " └─ HashLookup\n" + " β”œβ”€ left-key: TUPLE(tpk2.pk2:1!null, tpk2.pk1:0!null)\n" + " β”œβ”€ right-key: TUPLE(tpk.pk1:0!null, tpk.pk2:1!null)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ TUPLE(tpk.pk1:2!null, tpk.pk2:3!null)\n" + - " β”‚ └─ TUPLE(one_pk.pk:4!null, one_pk.pk:4!null)\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ one_pk.pk:4!null\n" + + " β”‚ └─ tpk.pk2:3!null\n" + " β”œβ”€ TableAlias(tpk)\n" + - " β”‚ └─ IndexedTableAccess(two_pk)\n" + - " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: two_pk\n" + + " β”‚ β”œβ”€ columns: [pk1 pk2]\n" + " β”‚ β”œβ”€ colSet: (7-13)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: two_pk\n" + - " β”‚ └─ columns: [pk1 pk2]\n" + + " β”‚ └─ tableId: 2\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [tpk.pk1:2!null]\n" + " β”œβ”€ colSet: (1-6)\n" + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + @@ -13579,17 +13149,16 @@ inner join pq on true " └─ HashLookup\n" + " β”œβ”€ left-key: (tpk2.pk2, tpk2.pk1)\n" + " β”œβ”€ right-key: (tpk.pk1, tpk.pk2)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: ((tpk.pk1, tpk.pk2) = (one_pk.pk, one_pk.pk))\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ (one_pk.pk = tpk.pk2)\n" + " β”œβ”€ TableAlias(tpk)\n" + - " β”‚ └─ IndexedTableAccess(two_pk)\n" + - " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: two_pk\n" + " β”‚ └─ columns: [pk1 pk2]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: tpk.pk1\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk]\n" + @@ -13602,91 +13171,65 @@ inner join pq on true " └─ HashLookup\n" + " β”œβ”€ left-key: (tpk2.pk2, tpk2.pk1)\n" + " β”œβ”€ right-key: (tpk.pk1, tpk.pk2)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: ((tpk.pk1, tpk.pk2) = (one_pk.pk, one_pk.pk))\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ (one_pk.pk = tpk.pk2)\n" + " β”œβ”€ TableAlias(tpk)\n" + - " β”‚ └─ IndexedTableAccess(two_pk)\n" + - " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: two_pk\n" + " β”‚ └─ columns: [pk1 pk2]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: tpk.pk1\n" + "", }, { Query: `SELECT i,pk1,pk2 FROM mytable JOIN two_pk ON i-1=pk1 AND i-2=pk2`, - ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [mytable.i:2!null, two_pk.pk1:0!null, two_pk.pk2:1!null]\n" + - " └─ HashJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ (mytable.i:2!null - 1 (tinyint))\n" + - " β”‚ β”‚ └─ two_pk.pk1:0!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ (mytable.i:2!null - 2 (tinyint))\n" + - " β”‚ └─ two_pk.pk2:1!null\n" + - " β”œβ”€ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: two_pk\n" + - " β”‚ └─ columns: [pk1 pk2]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(two_pk.pk1:0!null, two_pk.pk2:1!null)\n" + - " β”œβ”€ right-key: TUPLE((mytable.i:0!null - 1 (tinyint)), (mytable.i:0!null - 2 (tinyint)))\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: mytable\n" + - " └─ columns: [i]\n" + + ExpectedPlan: "LookupJoin\n" + + " β”œβ”€ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: mytable\n" + + " β”‚ └─ columns: [i]\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ keys: [(mytable.i:0!null - 1 (tinyint)) (mytable.i:0!null - 2 (tinyint))]\n" + + " β”œβ”€ colSet: (3-9)\n" + + " β”œβ”€ tableId: 2\n" + + " └─ Table\n" + + " β”œβ”€ name: two_pk\n" + + " └─ columns: [pk1 pk2]\n" + "", - ExpectedEstimates: "Project\n" + - " β”œβ”€ columns: [mytable.i, two_pk.pk1, two_pk.pk2]\n" + - " └─ HashJoin (estimated cost=13.070 rows=3)\n" + - " β”œβ”€ (((mytable.i - 1) = two_pk.pk1) AND ((mytable.i - 2) = two_pk.pk2))\n" + - " β”œβ”€ Table\n" + - " β”‚ β”œβ”€ name: two_pk\n" + - " β”‚ └─ columns: [pk1 pk2]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (two_pk.pk1, two_pk.pk2)\n" + - " β”œβ”€ right-key: ((mytable.i - 1), (mytable.i - 2))\n" + - " └─ Table\n" + - " β”œβ”€ name: mytable\n" + - " └─ columns: [i]\n" + + ExpectedEstimates: "LookupJoin (estimated cost=3.172 rows=3)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: mytable\n" + + " β”‚ └─ columns: [i]\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: (mytable.i - 1), (mytable.i - 2)\n" + "", - ExpectedAnalysis: "Project\n" + - " β”œβ”€ columns: [mytable.i, two_pk.pk1, two_pk.pk2]\n" + - " └─ HashJoin (estimated cost=13.070 rows=3) (actual rows=1 loops=1)\n" + - " β”œβ”€ (((mytable.i - 1) = two_pk.pk1) AND ((mytable.i - 2) = two_pk.pk2))\n" + - " β”œβ”€ Table\n" + - " β”‚ β”œβ”€ name: two_pk\n" + - " β”‚ └─ columns: [pk1 pk2]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (two_pk.pk1, two_pk.pk2)\n" + - " β”œβ”€ right-key: ((mytable.i - 1), (mytable.i - 2))\n" + - " └─ Table\n" + - " β”œβ”€ name: mytable\n" + - " └─ columns: [i]\n" + + ExpectedAnalysis: "LookupJoin (estimated cost=3.172 rows=3) (actual rows=1 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: mytable\n" + + " β”‚ └─ columns: [i]\n" + + " └─ IndexedTableAccess(two_pk)\n" + + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: (mytable.i - 1), (mytable.i - 2)\n" + "", }, { Query: `SELECT pk,pk1,pk2 FROM one_pk LEFT JOIN two_pk ON pk=pk1`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:0!null, two_pk.pk1:1!null, two_pk.pk2:2!null]\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ two_pk.pk1:1!null\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null]\n" + " β”œβ”€ colSet: (7-13)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -13695,50 +13238,39 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, two_pk.pk1, two_pk.pk2]\n" + - " └─ LeftOuterMergeJoin (estimated cost=8.160 rows=5)\n" + - " β”œβ”€ cmp: (one_pk.pk = two_pk.pk1)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.575 rows=5)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, two_pk.pk1, two_pk.pk2]\n" + - " └─ LeftOuterMergeJoin (estimated cost=8.160 rows=5) (actual rows=6 loops=1)\n" + - " β”œβ”€ cmp: (one_pk.pk = two_pk.pk1)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.575 rows=5) (actual rows=6 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: one_pk.pk\n" + "", }, { Query: `SELECT pk,i,f FROM one_pk LEFT JOIN niltable ON pk=i`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:0!null, niltable.i:1!null, niltable.f:2]\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ niltable.i:1!null\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null]\n" + " β”œβ”€ colSet: (7-10)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -13747,50 +13279,39 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + - " └─ LeftOuterMergeJoin (estimated cost=10.180 rows=5)\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.575 rows=5)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i f]\n" + + " β”œβ”€ columns: [i f]\n" + + " └─ keys: one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + - " └─ LeftOuterMergeJoin (estimated cost=10.180 rows=5) (actual rows=4 loops=1)\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.575 rows=5) (actual rows=4 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i f]\n" + + " β”œβ”€ columns: [i f]\n" + + " └─ keys: one_pk.pk\n" + "", }, { Query: `SELECT pk,i,f FROM one_pk RIGHT JOIN niltable ON pk=i`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:2!null, niltable.i:0!null, niltable.f:1]\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ niltable.i:0!null\n" + - " β”‚ └─ one_pk.pk:2!null\n" + - " β”œβ”€ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (7-10)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [niltable.i:0!null]\n" + " β”œβ”€ colSet: (1-6)\n" + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + @@ -13799,29 +13320,25 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + - " └─ LeftOuterMergeJoin (estimated cost=10.180 rows=5)\n" + - " β”œβ”€ cmp: (niltable.i = one_pk.pk)\n" + - " β”œβ”€ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=6.575 rows=5)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: niltable.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + - " └─ LeftOuterMergeJoin (estimated cost=10.180 rows=5) (actual rows=6 loops=1)\n" + - " β”œβ”€ cmp: (niltable.i = one_pk.pk)\n" + - " β”œβ”€ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=6.575 rows=5) (actual rows=6 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: niltable.i\n" + "", }, { @@ -13842,22 +13359,16 @@ inner join pq on true " └─ HashLookup\n" + " β”œβ”€ left-key: TUPLE((nt2.i:0!null + 1 (tinyint)))\n" + " β”œβ”€ right-key: TUPLE(one_pk.pk:1!null)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ nt.i:1!null\n" + - " β”‚ └─ one_pk.pk:2!null\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ TableAlias(nt)\n" + - " β”‚ └─ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + + " β”‚ β”œβ”€ columns: [i]\n" + " β”‚ β”œβ”€ colSet: (7-10)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: niltable\n" + - " β”‚ └─ columns: [i]\n" + + " β”‚ └─ tableId: 2\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [nt.i:1!null]\n" + " β”œβ”€ colSet: (1-6)\n" + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + @@ -13875,17 +13386,15 @@ inner join pq on true " └─ HashLookup\n" + " β”œβ”€ left-key: ((nt2.i + 1))\n" + " β”œβ”€ right-key: (one_pk.pk)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (nt.i = one_pk.pk)\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ TableAlias(nt)\n" + - " β”‚ └─ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: nt.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, nt.i, nt2.i]\n" + @@ -13898,40 +13407,31 @@ inner join pq on true " └─ HashLookup\n" + " β”œβ”€ left-key: ((nt2.i + 1))\n" + " β”œβ”€ right-key: (one_pk.pk)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (nt.i = one_pk.pk)\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ TableAlias(nt)\n" + - " β”‚ └─ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: nt.i\n" + "", }, { Query: `SELECT pk,i,f FROM one_pk LEFT JOIN niltable ON pk=i AND f IS NOT NULL`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:0!null, niltable.i:1!null, niltable.f:2]\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ niltable.i:1!null\n" + - " β”œβ”€ sel: NOT\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ NOT\n" + " β”‚ └─ niltable.f:2 IS NULL\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null]\n" + " β”œβ”€ colSet: (7-10)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -13940,55 +13440,44 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + - " └─ LeftOuterMergeJoin (estimated cost=10.180 rows=5)\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + - " β”œβ”€ sel: (NOT(niltable.f IS NULL))\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.575 rows=5)\n" + + " β”œβ”€ (NOT(niltable.f IS NULL))\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i f]\n" + + " β”œβ”€ columns: [i f]\n" + + " └─ keys: one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + - " └─ LeftOuterMergeJoin (estimated cost=10.180 rows=5) (actual rows=4 loops=1)\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + - " β”œβ”€ sel: (NOT(niltable.f IS NULL))\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.575 rows=5) (actual rows=4 loops=1)\n" + + " β”œβ”€ (NOT(niltable.f IS NULL))\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i f]\n" + + " β”œβ”€ columns: [i f]\n" + + " └─ keys: one_pk.pk\n" + "", }, { Query: `SELECT pk,i,f FROM one_pk RIGHT JOIN niltable ON pk=i and pk > 0`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:2!null, niltable.i:0!null, niltable.f:1]\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ niltable.i:0!null\n" + - " β”‚ └─ one_pk.pk:2!null\n" + - " β”œβ”€ sel: GreaterThan\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ GreaterThan\n" + " β”‚ β”œβ”€ one_pk.pk:2!null\n" + " β”‚ └─ 0 (smallint)\n" + - " β”œβ”€ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (7-10)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [niltable.i:0!null]\n" + " β”œβ”€ colSet: (1-6)\n" + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + @@ -13997,31 +13486,27 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + - " └─ LeftOuterMergeJoin (estimated cost=10.180 rows=5)\n" + - " β”œβ”€ cmp: (niltable.i = one_pk.pk)\n" + - " β”œβ”€ sel: (one_pk.pk > 0)\n" + - " β”œβ”€ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=6.575 rows=5)\n" + + " β”œβ”€ (one_pk.pk > 0)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: niltable.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + - " └─ LeftOuterMergeJoin (estimated cost=10.180 rows=5) (actual rows=6 loops=1)\n" + - " β”œβ”€ cmp: (niltable.i = one_pk.pk)\n" + - " β”œβ”€ sel: (one_pk.pk > 0)\n" + - " β”œβ”€ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=6.575 rows=5) (actual rows=6 loops=1)\n" + + " β”œβ”€ (one_pk.pk > 0)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: niltable.i\n" + "", }, { @@ -14031,21 +13516,14 @@ inner join pq on true " └─ Filter\n" + " β”œβ”€ NOT\n" + " β”‚ └─ niltable.f:2 IS NULL\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ niltable.i:1!null\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null]\n" + " β”œβ”€ colSet: (7-10)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -14056,31 +13534,27 @@ inner join pq on true " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Filter\n" + " β”œβ”€ (NOT(niltable.f IS NULL))\n" + - " └─ LeftOuterMergeJoin (estimated cost=10.180 rows=5)\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.575 rows=5)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i f]\n" + + " β”œβ”€ columns: [i f]\n" + + " └─ keys: one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Filter\n" + " β”œβ”€ (NOT(niltable.f IS NULL))\n" + - " └─ LeftOuterMergeJoin (estimated cost=10.180 rows=5) (actual rows=4 loops=1)\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.575 rows=5) (actual rows=4 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i f]\n" + + " β”œβ”€ columns: [i f]\n" + + " └─ keys: one_pk.pk\n" + "", }, { @@ -14091,21 +13565,14 @@ inner join pq on true " β”œβ”€ GreaterThan\n" + " β”‚ β”œβ”€ niltable.i2:2\n" + " β”‚ └─ 1 (bigint)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ niltable.i:1!null\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null]\n" + " β”œβ”€ colSet: (7-10)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -14116,31 +13583,27 @@ inner join pq on true " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Filter\n" + " β”œβ”€ (niltable.i2 > 1)\n" + - " └─ LeftOuterMergeJoin (estimated cost=10.180 rows=5)\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.575 rows=5)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i i2 f]\n" + + " β”œβ”€ columns: [i i2 f]\n" + + " └─ keys: one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Filter\n" + " β”œβ”€ (niltable.i2 > 1)\n" + - " └─ LeftOuterMergeJoin (estimated cost=10.180 rows=5) (actual rows=4 loops=1)\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.575 rows=5) (actual rows=4 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i i2 f]\n" + + " β”œβ”€ columns: [i i2 f]\n" + + " └─ keys: one_pk.pk\n" + "", }, { @@ -14151,21 +13614,14 @@ inner join pq on true " β”œβ”€ GreaterThan\n" + " β”‚ β”œβ”€ niltable.i:1!null\n" + " β”‚ └─ 1 (bigint)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ niltable.i:1!null\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null]\n" + " β”œβ”€ colSet: (7-10)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -14176,56 +13632,45 @@ inner join pq on true " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Filter\n" + " β”œβ”€ (niltable.i > 1)\n" + - " └─ LeftOuterMergeJoin (estimated cost=10.180 rows=5)\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.575 rows=5)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i f]\n" + + " β”œβ”€ columns: [i f]\n" + + " └─ keys: one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Filter\n" + " β”œβ”€ (niltable.i > 1)\n" + - " └─ LeftOuterMergeJoin (estimated cost=10.180 rows=5) (actual rows=4 loops=1)\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=4.575 rows=5) (actual rows=4 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i f]\n" + + " β”œβ”€ columns: [i f]\n" + + " └─ keys: one_pk.pk\n" + "", }, { Query: `SELECT pk,i,f FROM one_pk LEFT JOIN niltable ON pk=i WHERE c1 > 10`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:0!null, niltable.i:2!null, niltable.f:3]\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ niltable.i:2!null\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ GreaterThan\n" + " β”‚ β”‚ β”œβ”€ one_pk.c1:1\n" + " β”‚ β”‚ └─ 10 (smallint)\n" + - " β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c1]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null]\n" + " β”œβ”€ colSet: (7-10)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -14234,57 +13679,46 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + - " └─ LeftOuterMergeJoin (estimated cost=9.150 rows=3)\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + + " └─ LeftOuterLookupJoin (estimated cost=3.345 rows=3)\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ (one_pk.c1 > 10)\n" + - " β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c1]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i f]\n" + + " β”œβ”€ columns: [i f]\n" + + " └─ keys: one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + - " └─ LeftOuterMergeJoin (estimated cost=9.150 rows=3) (actual rows=2 loops=1)\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + + " └─ LeftOuterLookupJoin (estimated cost=3.345 rows=3) (actual rows=2 loops=1)\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ (one_pk.c1 > 10)\n" + - " β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c1]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i f]\n" + + " β”œβ”€ columns: [i f]\n" + + " └─ keys: one_pk.pk\n" + "", }, { Query: `SELECT pk,i,f FROM one_pk RIGHT JOIN niltable ON pk=i WHERE f IS NOT NULL`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:2!null, niltable.i:0!null, niltable.f:1]\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ niltable.i:0!null\n" + - " β”‚ └─ one_pk.pk:2!null\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ NOT\n" + " β”‚ β”‚ └─ niltable.f:1 IS NULL\n" + - " β”‚ └─ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (7-10)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [niltable.i:0!null]\n" + " β”œβ”€ colSet: (1-6)\n" + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + @@ -14293,58 +13727,47 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + - " └─ LeftOuterMergeJoin (estimated cost=9.170 rows=5)\n" + - " β”œβ”€ cmp: (niltable.i = one_pk.pk)\n" + + " └─ LeftOuterLookupJoin (estimated cost=5.575 rows=5)\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ (NOT(niltable.f IS NULL))\n" + - " β”‚ └─ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: niltable.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + - " └─ LeftOuterMergeJoin (estimated cost=9.170 rows=5) (actual rows=3 loops=1)\n" + - " β”œβ”€ cmp: (niltable.i = one_pk.pk)\n" + + " └─ LeftOuterLookupJoin (estimated cost=5.575 rows=5) (actual rows=3 loops=1)\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ (NOT(niltable.f IS NULL))\n" + - " β”‚ └─ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: niltable.i\n" + "", }, { Query: `SELECT pk,i,f FROM one_pk LEFT JOIN niltable ON pk=i WHERE pk > 1`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:0!null, niltable.i:1!null, niltable.f:2]\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ niltable.i:1!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ β”‚ └─ 1 (smallint)\n" + - " β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: one_pk\n" + - " β”‚ └─ columns: [pk]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ IndexedTableAccess(one_pk)\n" + + " β”‚ β”œβ”€ index: [one_pk.pk]\n" + + " β”‚ β”œβ”€ static: [{(1, ∞)}]\n" + + " β”‚ β”œβ”€ colSet: (1-6)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null]\n" + " β”œβ”€ colSet: (7-10)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -14353,81 +13776,77 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + - " └─ LeftOuterMergeJoin (estimated cost=10.190 rows=6)\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (one_pk.pk > 1)\n" + - " β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk]\n" + + " └─ LeftOuterLookupJoin (estimated cost=2.690 rows=6)\n" + + " β”œβ”€ IndexedTableAccess(one_pk)\n" + + " β”‚ β”œβ”€ index: [one_pk.pk]\n" + + " β”‚ β”œβ”€ filters: [{(1, ∞)}]\n" + + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i f]\n" + + " β”œβ”€ columns: [i f]\n" + + " └─ keys: one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + - " └─ LeftOuterMergeJoin (estimated cost=10.190 rows=6) (actual rows=2 loops=1)\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (one_pk.pk > 1)\n" + - " β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk]\n" + + " └─ LeftOuterLookupJoin (estimated cost=2.690 rows=6) (actual rows=2 loops=1)\n" + + " β”œβ”€ IndexedTableAccess(one_pk)\n" + + " β”‚ β”œβ”€ index: [one_pk.pk]\n" + + " β”‚ β”œβ”€ filters: [{(1, ∞)}]\n" + + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i f]\n" + + " β”œβ”€ columns: [i f]\n" + + " └─ keys: one_pk.pk\n" + "", }, { Query: `SELECT l.i, r.i2 FROM niltable l INNER JOIN niltable r ON l.i2 <=> r.i2 ORDER BY 1 ASC`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [l.i:1!null, r.i2:0]\n" + - " └─ Sort(l.i:1!null ASC nullsFirst)\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (l.i2:2 <=> r.i2:0)\n" + - " β”œβ”€ TableAlias(r)\n" + + " β”œβ”€ columns: [l.i:0!null, r.i2:2]\n" + + " └─ Sort(l.i:0!null ASC nullsFirst)\n" + + " └─ LookupJoin\n" + + " β”œβ”€ TableAlias(l)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: niltable\n" + - " β”‚ └─ columns: [i2]\n" + - " └─ TableAlias(l)\n" + - " └─ Table\n" + - " β”œβ”€ name: niltable\n" + - " β”œβ”€ columns: [i i2]\n" + - " β”œβ”€ colSet: (1-4)\n" + - " └─ tableId: 1\n" + + " β”‚ └─ columns: [i i2]\n" + + " └─ TableAlias(r)\n" + + " └─ IndexedTableAccess(niltable)\n" + + " β”œβ”€ index: [niltable.i2]\n" + + " β”œβ”€ keys: [l.i2:1]\n" + + " β”œβ”€ colSet: (5-8)\n" + + " β”œβ”€ tableId: 2\n" + + " └─ Table\n" + + " β”œβ”€ name: niltable\n" + + " └─ columns: [i2]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [l.i, r.i2]\n" + " └─ Sort(l.i ASC)\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (l.i2 <=> r.i2)\n" + - " β”œβ”€ TableAlias(r)\n" + + " └─ LookupJoin\n" + + " β”œβ”€ TableAlias(l)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: niltable\n" + - " β”‚ └─ columns: [i2]\n" + - " └─ TableAlias(l)\n" + - " └─ Table\n" + - " β”œβ”€ name: niltable\n" + - " └─ columns: [i i2]\n" + + " β”‚ └─ columns: [i i2]\n" + + " └─ TableAlias(r)\n" + + " └─ IndexedTableAccess(niltable)\n" + + " β”œβ”€ index: [niltable.i2]\n" + + " β”œβ”€ columns: [i2]\n" + + " └─ keys: l.i2\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [l.i, r.i2]\n" + " └─ Sort(l.i ASC)\n" + - " └─ InnerJoin\n" + - " β”œβ”€ (l.i2 <=> r.i2)\n" + - " β”œβ”€ TableAlias(r)\n" + + " └─ LookupJoin\n" + + " β”œβ”€ TableAlias(l)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: niltable\n" + - " β”‚ └─ columns: [i2]\n" + - " └─ TableAlias(l)\n" + - " └─ Table\n" + - " β”œβ”€ name: niltable\n" + - " └─ columns: [i i2]\n" + + " β”‚ └─ columns: [i i2]\n" + + " └─ TableAlias(r)\n" + + " └─ IndexedTableAccess(niltable)\n" + + " β”œβ”€ index: [niltable.i2]\n" + + " β”œβ”€ columns: [i2]\n" + + " └─ keys: l.i2\n" + "", }, { @@ -14438,21 +13857,14 @@ inner join pq on true " β”œβ”€ GreaterThan\n" + " β”‚ β”œβ”€ one_pk.pk:2!null\n" + " β”‚ └─ 0 (smallint)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ niltable.i:0!null\n" + - " β”‚ └─ one_pk.pk:2!null\n" + - " β”œβ”€ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (7-10)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [niltable.i:0!null]\n" + " β”œβ”€ colSet: (1-6)\n" + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + @@ -14463,77 +13875,62 @@ inner join pq on true " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Filter\n" + " β”œβ”€ (one_pk.pk > 0)\n" + - " └─ LeftOuterMergeJoin (estimated cost=10.180 rows=5)\n" + - " β”œβ”€ cmp: (niltable.i = one_pk.pk)\n" + - " β”œβ”€ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=6.575 rows=5)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: niltable.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Filter\n" + " β”œβ”€ (one_pk.pk > 0)\n" + - " └─ LeftOuterMergeJoin (estimated cost=10.180 rows=5) (actual rows=6 loops=1)\n" + - " β”œβ”€ cmp: (niltable.i = one_pk.pk)\n" + - " β”œβ”€ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin (estimated cost=6.575 rows=5) (actual rows=6 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: niltable.i\n" + "", }, { Query: `SELECT pk,pk1,pk2 FROM one_pk JOIN two_pk ON pk=pk1`, - ExpectedPlan: "MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ two_pk.pk1:1!null\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + ExpectedPlan: "LookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null]\n" + " β”œβ”€ colSet: (7-13)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + " β”œβ”€ name: two_pk\n" + " └─ columns: [pk1 pk2]\n" + "", - ExpectedEstimates: "MergeJoin (estimated cost=8.120 rows=4)\n" + - " β”œβ”€ cmp: (one_pk.pk = two_pk.pk1)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + ExpectedEstimates: "LookupJoin (estimated cost=4.460 rows=4)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: one_pk.pk\n" + "", - ExpectedAnalysis: "MergeJoin (estimated cost=8.120 rows=4) (actual rows=4 loops=1)\n" + - " β”œβ”€ cmp: (one_pk.pk = two_pk.pk1)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + ExpectedAnalysis: "LookupJoin (estimated cost=4.460 rows=4) (actual rows=4 loops=1)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: one_pk.pk\n" + "", }, { @@ -14745,23 +14142,16 @@ inner join pq on true { Query: `SELECT a.pk1,a.pk2,b.pk1,b.pk2 FROM two_pk a JOIN two_pk b ON a.pk1+1=b.pk1 AND a.pk2+1=b.pk2 ORDER BY 1,2,3`, ExpectedPlan: "Sort(a.pk1:0!null ASC nullsFirst, a.pk2:1!null ASC nullsFirst, b.pk1:2!null ASC nullsFirst)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ TUPLE((a.pk1:0!null + 1 (tinyint)), (a.pk2:1!null + 1 (tinyint)))\n" + - " β”‚ └─ TUPLE(b.pk1:2!null, b.pk2:3!null)\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(two_pk)\n" + - " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-7)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: two_pk\n" + " β”‚ └─ columns: [pk1 pk2]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [(a.pk1:0!null + 1 (tinyint)) (a.pk2:1!null + 1 (tinyint))]\n" + " β”œβ”€ colSet: (8-14)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -14769,32 +14159,28 @@ inner join pq on true " └─ columns: [pk1 pk2]\n" + "", ExpectedEstimates: "Sort(a.pk1 ASC, a.pk2 ASC, b.pk1 ASC)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (((a.pk1 + 1), (a.pk2 + 1)) = (b.pk1, b.pk2))\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(two_pk)\n" + - " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: two_pk\n" + " β”‚ └─ columns: [pk1 pk2]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: (a.pk1 + 1), (a.pk2 + 1)\n" + "", ExpectedAnalysis: "Sort(a.pk1 ASC, a.pk2 ASC, b.pk1 ASC)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (((a.pk1 + 1), (a.pk2 + 1)) = (b.pk1, b.pk2))\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(two_pk)\n" + - " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: two_pk\n" + " β”‚ └─ columns: [pk1 pk2]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: (a.pk1 + 1), (a.pk2 + 1)\n" + "", }, { @@ -14901,21 +14287,14 @@ inner join pq on true ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.c5:1, two_pk.pk1:2!null, two_pk.pk2:3!null]\n" + " └─ Sort(one_pk.c5:1 ASC nullsFirst, two_pk.pk1:2!null ASC nullsFirst, two_pk.pk2:3!null ASC nullsFirst)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ two_pk.pk1:2!null\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c5]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null]\n" + " β”œβ”€ colSet: (7-13)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -14925,30 +14304,26 @@ inner join pq on true ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.c5, two_pk.pk1, two_pk.pk2]\n" + " └─ Sort(one_pk.c5 ASC, two_pk.pk1 ASC, two_pk.pk2 ASC)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (one_pk.pk = two_pk.pk1)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c5]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.c5, two_pk.pk1, two_pk.pk2]\n" + " └─ Sort(one_pk.c5 ASC, two_pk.pk1 ASC, two_pk.pk2 ASC)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (one_pk.pk = two_pk.pk1)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c5]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: one_pk.pk\n" + "", }, { @@ -14956,23 +14331,16 @@ inner join pq on true ExpectedPlan: "Project\n" + " β”œβ”€ columns: [opk.c5:1, tpk.pk1:2!null, tpk.pk2:3!null]\n" + " └─ Sort(opk.c5:1 ASC nullsFirst, tpk.pk1:2!null ASC nullsFirst, tpk.pk2:3!null ASC nullsFirst)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ opk.pk:0!null\n" + - " β”‚ └─ tpk.pk1:2!null\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(opk)\n" + - " β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c5]\n" + " └─ TableAlias(tpk)\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [opk.pk:0!null]\n" + " β”œβ”€ colSet: (7-13)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -14982,34 +14350,30 @@ inner join pq on true ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [opk.c5, tpk.pk1, tpk.pk2]\n" + " └─ Sort(opk.c5 ASC, tpk.pk1 ASC, tpk.pk2 ASC)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (opk.pk = tpk.pk1)\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(opk)\n" + - " β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c5]\n" + " └─ TableAlias(tpk)\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: opk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [opk.c5, tpk.pk1, tpk.pk2]\n" + " └─ Sort(opk.c5 ASC, tpk.pk1 ASC, tpk.pk2 ASC)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (opk.pk = tpk.pk1)\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(opk)\n" + - " β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c5]\n" + " └─ TableAlias(tpk)\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: opk.pk\n" + "", }, { @@ -15017,23 +14381,16 @@ inner join pq on true ExpectedPlan: "Project\n" + " β”œβ”€ columns: [opk.c5:1, tpk.pk1:2!null, tpk.pk2:3!null]\n" + " └─ Sort(opk.c5:1 ASC nullsFirst, tpk.pk1:2!null ASC nullsFirst, tpk.pk2:3!null ASC nullsFirst)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ opk.pk:0!null\n" + - " β”‚ └─ tpk.pk1:2!null\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(opk)\n" + - " β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c5]\n" + " └─ TableAlias(tpk)\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [opk.pk:0!null]\n" + " β”œβ”€ colSet: (7-13)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -15043,34 +14400,30 @@ inner join pq on true ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [opk.c5, tpk.pk1, tpk.pk2]\n" + " └─ Sort(opk.c5 ASC, tpk.pk1 ASC, tpk.pk2 ASC)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (opk.pk = tpk.pk1)\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(opk)\n" + - " β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c5]\n" + " └─ TableAlias(tpk)\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: opk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [opk.c5, tpk.pk1, tpk.pk2]\n" + " └─ Sort(opk.c5 ASC, tpk.pk1 ASC, tpk.pk2 ASC)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (opk.pk = tpk.pk1)\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(opk)\n" + - " β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c5]\n" + " └─ TableAlias(tpk)\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: opk.pk\n" + "", }, { @@ -15078,23 +14431,16 @@ inner join pq on true ExpectedPlan: "Project\n" + " β”œβ”€ columns: [opk.c5:1, tpk.pk1:2!null, tpk.pk2:3!null]\n" + " └─ Sort(opk.c5:1 ASC nullsFirst, tpk.pk1:2!null ASC nullsFirst, tpk.pk2:3!null ASC nullsFirst)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ opk.pk:0!null\n" + - " β”‚ └─ tpk.pk1:2!null\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(opk)\n" + - " β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c5]\n" + " └─ TableAlias(tpk)\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [opk.pk:0!null]\n" + " β”œβ”€ colSet: (7-13)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -15104,34 +14450,30 @@ inner join pq on true ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [opk.c5, tpk.pk1, tpk.pk2]\n" + " └─ Sort(opk.c5 ASC, tpk.pk1 ASC, tpk.pk2 ASC)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (opk.pk = tpk.pk1)\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(opk)\n" + - " β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c5]\n" + " └─ TableAlias(tpk)\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: opk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [opk.c5, tpk.pk1, tpk.pk2]\n" + " └─ Sort(opk.c5 ASC, tpk.pk1 ASC, tpk.pk2 ASC)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (opk.pk = tpk.pk1)\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(opk)\n" + - " β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c5]\n" + " └─ TableAlias(tpk)\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: opk.pk\n" + "", }, { @@ -15139,21 +14481,14 @@ inner join pq on true ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.c5:1, two_pk.pk1:2!null, two_pk.pk2:3!null]\n" + " └─ Sort(one_pk.c5:1 ASC nullsFirst, two_pk.pk1:2!null ASC nullsFirst, two_pk.pk2:3!null ASC nullsFirst)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ two_pk.pk1:2!null\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c5]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null]\n" + " β”œβ”€ colSet: (7-13)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -15163,30 +14498,26 @@ inner join pq on true ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.c5, two_pk.pk1, two_pk.pk2]\n" + " └─ Sort(one_pk.c5 ASC, two_pk.pk1 ASC, two_pk.pk2 ASC)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (one_pk.pk = two_pk.pk1)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c5]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.c5, two_pk.pk1, two_pk.pk2]\n" + " └─ Sort(one_pk.c5 ASC, two_pk.pk1 ASC, two_pk.pk2 ASC)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (one_pk.pk = two_pk.pk1)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c5]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: one_pk.pk\n" + "", }, { @@ -15313,21 +14644,14 @@ inner join pq on true ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:0!null, niltable.i:1!null, niltable.f:2]\n" + " └─ Sort(one_pk.pk:0!null ASC nullsFirst)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ niltable.i:1!null\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null]\n" + " β”œβ”€ colSet: (7-10)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -15337,30 +14661,26 @@ inner join pq on true ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Sort(one_pk.pk ASC)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i f]\n" + + " β”œβ”€ columns: [i f]\n" + + " └─ keys: one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Sort(one_pk.pk ASC)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i f]\n" + + " β”œβ”€ columns: [i f]\n" + + " └─ keys: one_pk.pk\n" + "", }, { @@ -15371,21 +14691,14 @@ inner join pq on true " └─ Filter\n" + " β”œβ”€ NOT\n" + " β”‚ └─ niltable.f:2 IS NULL\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ niltable.i:1!null\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null]\n" + " β”œβ”€ colSet: (7-10)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -15397,32 +14710,28 @@ inner join pq on true " └─ Sort(one_pk.pk ASC)\n" + " └─ Filter\n" + " β”œβ”€ (NOT(niltable.f IS NULL))\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i f]\n" + + " β”œβ”€ columns: [i f]\n" + + " └─ keys: one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Sort(one_pk.pk ASC)\n" + " └─ Filter\n" + " β”œβ”€ (NOT(niltable.f IS NULL))\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i f]\n" + + " β”œβ”€ columns: [i f]\n" + + " └─ keys: one_pk.pk\n" + "", }, { @@ -15430,25 +14739,18 @@ inner join pq on true ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:0!null, niltable.i:1!null, niltable.f:2]\n" + " └─ Sort(one_pk.pk:0!null ASC nullsFirst)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ niltable.i:1!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ β”‚ └─ 1 (smallint)\n" + - " β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: one_pk\n" + - " β”‚ └─ columns: [pk]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ IndexedTableAccess(one_pk)\n" + + " β”‚ β”œβ”€ index: [one_pk.pk]\n" + + " β”‚ β”œβ”€ static: [{(1, ∞)}]\n" + + " β”‚ β”œβ”€ colSet: (1-6)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null]\n" + " β”œβ”€ colSet: (7-10)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -15458,34 +14760,28 @@ inner join pq on true ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Sort(one_pk.pk ASC)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (one_pk.pk > 1)\n" + - " β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ IndexedTableAccess(one_pk)\n" + + " β”‚ β”œβ”€ index: [one_pk.pk]\n" + + " β”‚ β”œβ”€ filters: [{(1, ∞)}]\n" + + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i f]\n" + + " β”œβ”€ columns: [i f]\n" + + " └─ keys: one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Sort(one_pk.pk ASC)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (one_pk.pk = niltable.i)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ (one_pk.pk > 1)\n" + - " β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ IndexedTableAccess(one_pk)\n" + + " β”‚ β”œβ”€ index: [one_pk.pk]\n" + + " β”‚ β”œβ”€ filters: [{(1, ∞)}]\n" + + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(niltable)\n" + " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i f]\n" + + " β”œβ”€ columns: [i f]\n" + + " └─ keys: one_pk.pk\n" + "", }, { @@ -15493,21 +14789,14 @@ inner join pq on true ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:2!null, niltable.i:0!null, niltable.f:1]\n" + " └─ Sort(niltable.i:0!null ASC nullsFirst, niltable.f:1 ASC nullsFirst)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ niltable.i:0!null\n" + - " β”‚ └─ one_pk.pk:2!null\n" + - " β”œβ”€ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (7-10)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [niltable.i:0!null]\n" + " β”œβ”€ colSet: (1-6)\n" + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + @@ -15517,30 +14806,26 @@ inner join pq on true ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Sort(niltable.i ASC, niltable.f ASC)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (niltable.i = one_pk.pk)\n" + - " β”œβ”€ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: niltable.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Sort(niltable.i ASC, niltable.f ASC)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (niltable.i = one_pk.pk)\n" + - " β”œβ”€ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: niltable.i\n" + "", }, { @@ -15548,24 +14833,17 @@ inner join pq on true ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:2!null, niltable.i:0!null, niltable.f:1]\n" + " └─ Sort(niltable.i:0!null ASC nullsFirst, niltable.f:1 ASC nullsFirst)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ niltable.i:0!null\n" + - " β”‚ └─ one_pk.pk:2!null\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ NOT\n" + " β”‚ β”‚ └─ niltable.f:1 IS NULL\n" + - " β”‚ └─ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (7-10)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [niltable.i:0!null]\n" + " β”œβ”€ colSet: (1-6)\n" + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + @@ -15575,34 +14853,30 @@ inner join pq on true ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Sort(niltable.i ASC, niltable.f ASC)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (niltable.i = one_pk.pk)\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ (NOT(niltable.f IS NULL))\n" + - " β”‚ └─ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: niltable.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Sort(niltable.i ASC, niltable.f ASC)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (niltable.i = one_pk.pk)\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ (NOT(niltable.f IS NULL))\n" + - " β”‚ └─ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: niltable.i\n" + "", }, { @@ -15614,21 +14888,14 @@ inner join pq on true " β”œβ”€ GreaterThan\n" + " β”‚ β”œβ”€ one_pk.pk:2!null\n" + " β”‚ └─ 0 (smallint)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ niltable.i:0!null\n" + - " β”‚ └─ one_pk.pk:2!null\n" + - " β”œβ”€ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (7-10)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [niltable.i:0!null]\n" + " β”œβ”€ colSet: (1-6)\n" + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + @@ -15640,32 +14907,28 @@ inner join pq on true " └─ Sort(niltable.i ASC, niltable.f ASC)\n" + " └─ Filter\n" + " β”œβ”€ (one_pk.pk > 0)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (niltable.i = one_pk.pk)\n" + - " β”œβ”€ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: niltable.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Sort(niltable.i ASC, niltable.f ASC)\n" + " └─ Filter\n" + " β”œβ”€ (one_pk.pk > 0)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (niltable.i = one_pk.pk)\n" + - " β”œβ”€ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: niltable.i\n" + "", }, { @@ -15673,24 +14936,17 @@ inner join pq on true ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:2!null, niltable.i:0!null, niltable.f:1]\n" + " └─ Sort(niltable.i:0!null ASC nullsFirst, niltable.f:1 ASC nullsFirst)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ niltable.i:0!null\n" + - " β”‚ └─ one_pk.pk:2!null\n" + - " β”œβ”€ sel: GreaterThan\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ GreaterThan\n" + " β”‚ β”œβ”€ one_pk.pk:2!null\n" + " β”‚ └─ 0 (smallint)\n" + - " β”œβ”€ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (7-10)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [niltable.i:0!null]\n" + " β”œβ”€ colSet: (1-6)\n" + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + @@ -15700,32 +14956,28 @@ inner join pq on true ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Sort(niltable.i ASC, niltable.f ASC)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (niltable.i = one_pk.pk)\n" + - " β”œβ”€ sel: (one_pk.pk > 0)\n" + - " β”œβ”€ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ (one_pk.pk > 0)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: niltable.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, niltable.i, niltable.f]\n" + " └─ Sort(niltable.i ASC, niltable.f ASC)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (niltable.i = one_pk.pk)\n" + - " β”œβ”€ sel: (one_pk.pk > 0)\n" + - " β”œβ”€ IndexedTableAccess(niltable)\n" + - " β”‚ β”œβ”€ index: [niltable.i]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ (one_pk.pk > 0)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + " β”‚ └─ columns: [i f]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: niltable.i\n" + "", }, { @@ -15873,24 +15125,14 @@ inner join pq on true ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:0!null, two_pk.pk1:1!null, two_pk.pk2:2!null]\n" + " └─ Sort(one_pk.pk:0!null ASC nullsFirst, two_pk.pk1:1!null ASC nullsFirst, two_pk.pk2:2!null ASC nullsFirst)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ two_pk.pk1:1!null\n" + - " β”œβ”€ sel: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ two_pk.pk2:2!null\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null one_pk.pk:0!null]\n" + " β”œβ”€ colSet: (7-13)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -15900,32 +15142,26 @@ inner join pq on true ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, two_pk.pk1, two_pk.pk2]\n" + " └─ Sort(one_pk.pk ASC, two_pk.pk1 ASC, two_pk.pk2 ASC)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (one_pk.pk = two_pk.pk1)\n" + - " β”œβ”€ sel: (one_pk.pk = two_pk.pk2)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: one_pk.pk, one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, two_pk.pk1, two_pk.pk2]\n" + " └─ Sort(one_pk.pk ASC, two_pk.pk1 ASC, two_pk.pk2 ASC)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (one_pk.pk = two_pk.pk1)\n" + - " β”œβ”€ sel: (one_pk.pk = two_pk.pk2)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: one_pk.pk, one_pk.pk\n" + "", }, { @@ -15933,21 +15169,14 @@ inner join pq on true ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:0!null, two_pk.pk1:1!null, two_pk.pk2:2!null]\n" + " └─ Sort(one_pk.pk:0!null ASC nullsFirst, two_pk.pk1:1!null ASC nullsFirst, two_pk.pk2:2!null ASC nullsFirst)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ two_pk.pk1:1!null\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null]\n" + " β”œβ”€ colSet: (7-13)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -15957,30 +15186,26 @@ inner join pq on true ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, two_pk.pk1, two_pk.pk2]\n" + " └─ Sort(one_pk.pk ASC, two_pk.pk1 ASC, two_pk.pk2 ASC)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (one_pk.pk = two_pk.pk1)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: one_pk.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, two_pk.pk1, two_pk.pk2]\n" + " └─ Sort(one_pk.pk ASC, two_pk.pk1 ASC, two_pk.pk2 ASC)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: (one_pk.pk = two_pk.pk1)\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [pk1 pk2]\n" + + " β”œβ”€ columns: [pk1 pk2]\n" + + " └─ keys: one_pk.pk\n" + "", }, { @@ -15988,21 +15213,17 @@ inner join pq on true ExpectedPlan: "Project\n" + " β”œβ”€ columns: [one_pk.pk:2!null, two_pk.pk1:0!null, two_pk.pk2:1!null]\n" + " └─ Sort(one_pk.pk:2!null ASC nullsFirst, two_pk.pk1:0!null ASC nullsFirst, two_pk.pk2:1!null ASC nullsFirst)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ TUPLE(two_pk.pk1:0!null, two_pk.pk2:1!null)\n" + - " β”‚ └─ TUPLE(one_pk.pk:2!null, one_pk.pk:2!null)\n" + - " β”œβ”€ IndexedTableAccess(two_pk)\n" + - " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (7-13)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ one_pk.pk:2!null\n" + + " β”‚ └─ two_pk.pk2:1!null\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: two_pk\n" + " β”‚ └─ columns: [pk1 pk2]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ keys: [two_pk.pk1:0!null]\n" + " β”œβ”€ colSet: (1-6)\n" + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + @@ -16012,30 +15233,28 @@ inner join pq on true ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [one_pk.pk, two_pk.pk1, two_pk.pk2]\n" + " └─ Sort(one_pk.pk ASC, two_pk.pk1 ASC, two_pk.pk2 ASC)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: ((two_pk.pk1, two_pk.pk2) = (one_pk.pk, one_pk.pk))\n" + - " β”œβ”€ IndexedTableAccess(two_pk)\n" + - " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ (one_pk.pk = two_pk.pk2)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: two_pk\n" + " β”‚ └─ columns: [pk1 pk2]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: two_pk.pk1\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [one_pk.pk, two_pk.pk1, two_pk.pk2]\n" + " └─ Sort(one_pk.pk ASC, two_pk.pk1 ASC, two_pk.pk2 ASC)\n" + - " └─ LeftOuterMergeJoin\n" + - " β”œβ”€ cmp: ((two_pk.pk1, two_pk.pk2) = (one_pk.pk, one_pk.pk))\n" + - " β”œβ”€ IndexedTableAccess(two_pk)\n" + - " β”‚ β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ (one_pk.pk = two_pk.pk2)\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: two_pk\n" + " β”‚ └─ columns: [pk1 pk2]\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: two_pk.pk1\n" + "", }, { @@ -17045,21 +16264,14 @@ inner join pq on true ExpectedPlan: "Update\n" + " └─ Update Join\n" + " └─ UpdateSource(SET two_pk.c1:8!null = (two_pk.c1:8!null + 1 (tinyint)))\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ one_pk.pk:0!null\n" + - " β”‚ └─ two_pk.pk1:6!null\n" + - " β”œβ”€ IndexedTableAccess(one_pk)\n" + - " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-6)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c1 c2 c3 c4 c5]\n" + " └─ IndexedTableAccess(two_pk)\n" + " β”œβ”€ index: [two_pk.pk1,two_pk.pk2]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [one_pk.pk:0!null]\n" + " β”œβ”€ colSet: (7-13)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -17103,57 +16315,54 @@ inner join pq on true Query: `SELECT a.* FROM invert_pk as a, invert_pk as b WHERE a.y = b.z`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [a.x:1!null, a.y:2!null, a.z:3!null]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ a.y:2!null\n" + - " β”‚ └─ b.z:0!null\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(b)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: invert_pk\n" + " β”‚ └─ columns: [z]\n" + " └─ TableAlias(a)\n" + - " └─ Table\n" + - " β”œβ”€ name: invert_pk\n" + - " β”œβ”€ columns: [x y z]\n" + + " └─ IndexedTableAccess(invert_pk)\n" + + " β”œβ”€ index: [invert_pk.y,invert_pk.z,invert_pk.x]\n" + + " β”œβ”€ keys: [b.z:0!null]\n" + " β”œβ”€ colSet: (1-3)\n" + - " └─ tableId: 1\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: invert_pk\n" + + " └─ columns: [x y z]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.x, a.y, a.z]\n" + - " └─ InnerJoin (estimated cost=10.090 rows=3)\n" + - " β”œβ”€ (a.y = b.z)\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3)\n" + " β”œβ”€ TableAlias(b)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: invert_pk\n" + " β”‚ └─ columns: [z]\n" + " └─ TableAlias(a)\n" + - " └─ Table\n" + - " β”œβ”€ name: invert_pk\n" + - " └─ columns: [x y z]\n" + + " └─ IndexedTableAccess(invert_pk)\n" + + " β”œβ”€ index: [invert_pk.y,invert_pk.z,invert_pk.x]\n" + + " β”œβ”€ columns: [x y z]\n" + + " └─ keys: b.z\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.x, a.y, a.z]\n" + - " └─ InnerJoin (estimated cost=10.090 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ (a.y = b.z)\n" + + " └─ LookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + " β”œβ”€ TableAlias(b)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: invert_pk\n" + " β”‚ └─ columns: [z]\n" + " └─ TableAlias(a)\n" + - " └─ Table\n" + - " β”œβ”€ name: invert_pk\n" + - " └─ columns: [x y z]\n" + + " └─ IndexedTableAccess(invert_pk)\n" + + " β”œβ”€ index: [invert_pk.y,invert_pk.z,invert_pk.x]\n" + + " β”œβ”€ columns: [x y z]\n" + + " └─ keys: b.z\n" + "", }, { Query: `SELECT a.* FROM invert_pk as a, invert_pk as b WHERE a.y = b.z AND a.z = 2`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [a.x:1!null, a.y:2!null, a.z:3!null]\n" + - " └─ InnerJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ a.y:2!null\n" + - " β”‚ └─ b.z:0!null\n" + + " └─ LookupJoin\n" + " β”œβ”€ TableAlias(b)\n" + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + @@ -17164,16 +16373,18 @@ inner join pq on true " β”‚ β”œβ”€ a.z:2!null\n" + " β”‚ └─ 2 (bigint)\n" + " └─ TableAlias(a)\n" + - " └─ Table\n" + - " β”œβ”€ name: invert_pk\n" + - " β”œβ”€ columns: [x y z]\n" + + " └─ IndexedTableAccess(invert_pk)\n" + + " β”œβ”€ index: [invert_pk.y,invert_pk.z,invert_pk.x]\n" + + " β”œβ”€ keys: [b.z:0!null 2 (bigint)]\n" + " β”œβ”€ colSet: (1-3)\n" + - " └─ tableId: 1\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: invert_pk\n" + + " └─ columns: [x y z]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.x, a.y, a.z]\n" + - " └─ InnerJoin (estimated cost=7.060 rows=2)\n" + - " β”œβ”€ (a.y = b.z)\n" + + " └─ LookupJoin (estimated cost=3.115 rows=2)\n" + " β”œβ”€ TableAlias(b)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: invert_pk\n" + @@ -17181,14 +16392,14 @@ inner join pq on true " └─ Filter\n" + " β”œβ”€ (a.z = 2)\n" + " └─ TableAlias(a)\n" + - " └─ Table\n" + - " β”œβ”€ name: invert_pk\n" + - " └─ columns: [x y z]\n" + + " └─ IndexedTableAccess(invert_pk)\n" + + " β”œβ”€ index: [invert_pk.y,invert_pk.z,invert_pk.x]\n" + + " β”œβ”€ columns: [x y z]\n" + + " └─ keys: b.z, 2\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.x, a.y, a.z]\n" + - " └─ InnerJoin (estimated cost=7.060 rows=2) (actual rows=1 loops=1)\n" + - " β”œβ”€ (a.y = b.z)\n" + + " └─ LookupJoin (estimated cost=3.115 rows=2) (actual rows=1 loops=1)\n" + " β”œβ”€ TableAlias(b)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: invert_pk\n" + @@ -17196,9 +16407,10 @@ inner join pq on true " └─ Filter\n" + " β”œβ”€ (a.z = 2)\n" + " └─ TableAlias(a)\n" + - " └─ Table\n" + - " β”œβ”€ name: invert_pk\n" + - " └─ columns: [x y z]\n" + + " └─ IndexedTableAccess(invert_pk)\n" + + " β”œβ”€ index: [invert_pk.y,invert_pk.z,invert_pk.x]\n" + + " β”œβ”€ columns: [x y z]\n" + + " └─ keys: b.z, 2\n" + "", }, { @@ -17293,14 +16505,10 @@ inner join pq on true Query: `SELECT a.* FROM one_pk a CROSS JOIN one_pk c LEFT JOIN one_pk b ON b.pk = c.pk and b.pk = a.pk`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [a.pk:1!null, a.c1:2, a.c2:3, a.c3:4, a.c4:5, a.c5:6]\n" + - " └─ LeftOuterHashJoin\n" + - " β”œβ”€ AND\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ b.pk:7!null\n" + - " β”‚ β”‚ └─ c.pk:0!null\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ b.pk:7!null\n" + - " β”‚ └─ a.pk:1!null\n" + + " └─ LeftOuterLookupJoin\n" + + " β”œβ”€ Eq\n" + + " β”‚ β”œβ”€ b.pk:7!null\n" + + " β”‚ └─ a.pk:1!null\n" + " β”œβ”€ CrossJoin\n" + " β”‚ β”œβ”€ TableAlias(c)\n" + " β”‚ β”‚ └─ ProcessTable\n" + @@ -17313,20 +16521,20 @@ inner join pq on true " β”‚ β”œβ”€ columns: [pk c1 c2 c3 c4 c5]\n" + " β”‚ β”œβ”€ colSet: (1-6)\n" + " β”‚ └─ tableId: 1\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(c.pk:0!null, a.pk:1!null)\n" + - " β”œβ”€ right-key: TUPLE(b.pk:0!null, b.pk:0!null)\n" + - " └─ TableAlias(b)\n" + + " └─ TableAlias(b)\n" + + " └─ IndexedTableAccess(one_pk)\n" + + " β”œβ”€ index: [one_pk.pk]\n" + + " β”œβ”€ keys: [c.pk:0!null]\n" + + " β”œβ”€ colSet: (13-18)\n" + + " β”œβ”€ tableId: 3\n" + " └─ Table\n" + " β”œβ”€ name: one_pk\n" + - " β”œβ”€ columns: [pk]\n" + - " β”œβ”€ colSet: (13-18)\n" + - " └─ tableId: 3\n" + + " └─ columns: [pk]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.pk, a.c1, a.c2, a.c3, a.c4, a.c5]\n" + - " └─ LeftOuterHashJoin (estimated cost=17.100 rows=5)\n" + - " β”œβ”€ ((b.pk = c.pk) AND (b.pk = a.pk))\n" + + " └─ LeftOuterLookupJoin (estimated cost=5.575 rows=5)\n" + + " β”œβ”€ (b.pk = a.pk)\n" + " β”œβ”€ CrossJoin (estimated cost=17.160 rows=5)\n" + " β”‚ β”œβ”€ TableAlias(c)\n" + " β”‚ β”‚ └─ Table\n" + @@ -17336,18 +16544,16 @@ inner join pq on true " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c1 c2 c3 c4 c5]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (c.pk, a.pk)\n" + - " β”œβ”€ right-key: (b.pk, b.pk)\n" + - " └─ TableAlias(b)\n" + - " └─ Table\n" + - " β”œβ”€ name: one_pk\n" + - " └─ columns: [pk]\n" + + " └─ TableAlias(b)\n" + + " └─ IndexedTableAccess(one_pk)\n" + + " β”œβ”€ index: [one_pk.pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: c.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.pk, a.c1, a.c2, a.c3, a.c4, a.c5]\n" + - " └─ LeftOuterHashJoin (estimated cost=17.100 rows=5) (actual rows=16 loops=1)\n" + - " β”œβ”€ ((b.pk = c.pk) AND (b.pk = a.pk))\n" + + " └─ LeftOuterLookupJoin (estimated cost=5.575 rows=5) (actual rows=16 loops=1)\n" + + " β”œβ”€ (b.pk = a.pk)\n" + " β”œβ”€ CrossJoin (estimated cost=17.160 rows=5) (actual rows=16 loops=1)\n" + " β”‚ β”œβ”€ TableAlias(c)\n" + " β”‚ β”‚ └─ Table\n" + @@ -17357,13 +16563,11 @@ inner join pq on true " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c1 c2 c3 c4 c5]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (c.pk, a.pk)\n" + - " β”œβ”€ right-key: (b.pk, b.pk)\n" + - " └─ TableAlias(b)\n" + - " └─ Table\n" + - " β”œβ”€ name: one_pk\n" + - " └─ columns: [pk]\n" + + " └─ TableAlias(b)\n" + + " └─ IndexedTableAccess(one_pk)\n" + + " β”œβ”€ index: [one_pk.pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: c.pk\n" + "", }, { @@ -17446,96 +16650,82 @@ inner join pq on true { Query: `SELECT a.* FROM one_pk a CROSS JOIN one_pk c INNER JOIN one_pk b ON b.pk = c.pk and b.pk = a.pk`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [a.pk:2!null, a.c1:3, a.c2:4, a.c3:5, a.c4:6, a.c5:7]\n" + + " β”œβ”€ columns: [a.pk:1!null, a.c1:2, a.c2:3, a.c3:4, a.c4:5, a.c5:6]\n" + " └─ LookupJoin\n" + " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ a.pk:2!null\n" + - " β”‚ └─ c.pk:0!null\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ c.pk:0!null\n" + - " β”‚ β”‚ └─ b.pk:1!null\n" + + " β”‚ β”œβ”€ b.pk:7!null\n" + + " β”‚ └─ a.pk:1!null\n" + + " β”œβ”€ LookupJoin\n" + " β”‚ β”œβ”€ TableAlias(c)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (7-12)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: one_pk\n" + " β”‚ β”‚ └─ columns: [pk]\n" + - " β”‚ └─ TableAlias(b)\n" + + " β”‚ └─ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(one_pk)\n" + " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (13-18)\n" + - " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”œβ”€ keys: [c.pk:0!null]\n" + + " β”‚ β”œβ”€ colSet: (1-6)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + - " β”‚ └─ columns: [pk]\n" + - " └─ TableAlias(a)\n" + + " β”‚ └─ columns: [pk c1 c2 c3 c4 c5]\n" + + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ keys: [b.pk:1!null]\n" + - " β”œβ”€ colSet: (1-6)\n" + - " β”œβ”€ tableId: 1\n" + + " β”œβ”€ keys: [c.pk:0!null]\n" + + " β”œβ”€ colSet: (13-18)\n" + + " β”œβ”€ tableId: 3\n" + " └─ Table\n" + " β”œβ”€ name: one_pk\n" + - " └─ columns: [pk c1 c2 c3 c4 c5]\n" + + " └─ columns: [pk]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.pk, a.c1, a.c2, a.c3, a.c4, a.c5]\n" + - " └─ LookupJoin (estimated cost=9.200 rows=4)\n" + - " β”œβ”€ (a.pk = c.pk)\n" + - " β”œβ”€ MergeJoin (estimated cost=8.120 rows=4)\n" + - " β”‚ β”œβ”€ cmp: (c.pk = b.pk)\n" + + " └─ LookupJoin (estimated cost=11.500 rows=4)\n" + + " β”œβ”€ (b.pk = a.pk)\n" + + " β”œβ”€ LookupJoin (estimated cost=4.575 rows=5)\n" + " β”‚ β”œβ”€ TableAlias(c)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: one_pk\n" + " β”‚ β”‚ └─ columns: [pk]\n" + - " β”‚ └─ TableAlias(b)\n" + + " β”‚ └─ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(one_pk)\n" + " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk]\n" + - " └─ TableAlias(a)\n" + + " β”‚ β”œβ”€ columns: [pk c1 c2 c3 c4 c5]\n" + + " β”‚ └─ keys: c.pk\n" + + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ columns: [pk c1 c2 c3 c4 c5]\n" + - " └─ keys: b.pk\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: c.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.pk, a.c1, a.c2, a.c3, a.c4, a.c5]\n" + - " └─ LookupJoin (estimated cost=9.200 rows=4) (actual rows=4 loops=1)\n" + - " β”œβ”€ (a.pk = c.pk)\n" + - " β”œβ”€ MergeJoin (estimated cost=8.120 rows=4) (actual rows=4 loops=1)\n" + - " β”‚ β”œβ”€ cmp: (c.pk = b.pk)\n" + + " └─ LookupJoin (estimated cost=11.500 rows=4) (actual rows=4 loops=1)\n" + + " β”œβ”€ (b.pk = a.pk)\n" + + " β”œβ”€ LookupJoin (estimated cost=4.575 rows=5) (actual rows=4 loops=1)\n" + " β”‚ β”œβ”€ TableAlias(c)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(one_pk)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: one_pk\n" + " β”‚ β”‚ └─ columns: [pk]\n" + - " β”‚ └─ TableAlias(b)\n" + + " β”‚ └─ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(one_pk)\n" + " β”‚ β”œβ”€ index: [one_pk.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk]\n" + - " └─ TableAlias(a)\n" + + " β”‚ β”œβ”€ columns: [pk c1 c2 c3 c4 c5]\n" + + " β”‚ └─ keys: c.pk\n" + + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(one_pk)\n" + " β”œβ”€ index: [one_pk.pk]\n" + - " β”œβ”€ columns: [pk c1 c2 c3 c4 c5]\n" + - " └─ keys: b.pk\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: c.pk\n" + "", }, { Query: `SELECT a.* FROM one_pk a CROSS JOIN one_pk b INNER JOIN one_pk c ON b.pk = c.pk LEFT JOIN one_pk d ON c.pk = d.pk`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [a.pk:2!null, a.c1:3, a.c2:4, a.c3:5, a.c4:6, a.c5:7]\n" + - " └─ LeftOuterHashJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ c.pk:1!null\n" + - " β”‚ └─ d.pk:8!null\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ CrossJoin\n" + " β”‚ β”œβ”€ MergeJoin\n" + " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + @@ -17564,20 +16754,19 @@ inner join pq on true " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c1 c2 c3 c4 c5]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(c.pk:1!null)\n" + - " β”œβ”€ right-key: TUPLE(d.pk:0!null)\n" + - " └─ TableAlias(d)\n" + + " └─ TableAlias(d)\n" + + " └─ IndexedTableAccess(one_pk)\n" + + " β”œβ”€ index: [one_pk.pk]\n" + + " β”œβ”€ keys: [c.pk:1!null]\n" + + " β”œβ”€ colSet: (19-24)\n" + + " β”œβ”€ tableId: 4\n" + " └─ Table\n" + " β”œβ”€ name: one_pk\n" + - " β”œβ”€ columns: [pk]\n" + - " β”œβ”€ colSet: (19-24)\n" + - " └─ tableId: 4\n" + + " └─ columns: [pk]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.pk, a.c1, a.c2, a.c3, a.c4, a.c5]\n" + - " └─ LeftOuterHashJoin (estimated cost=17.100 rows=5)\n" + - " β”œβ”€ (c.pk = d.pk)\n" + + " └─ LeftOuterLookupJoin (estimated cost=5.575 rows=5)\n" + " β”œβ”€ CrossJoin (estimated cost=17.160 rows=5)\n" + " β”‚ β”œβ”€ MergeJoin (estimated cost=8.120 rows=4)\n" + " β”‚ β”‚ β”œβ”€ cmp: (b.pk = c.pk)\n" + @@ -17595,18 +16784,15 @@ inner join pq on true " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c1 c2 c3 c4 c5]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (c.pk)\n" + - " β”œβ”€ right-key: (d.pk)\n" + - " └─ TableAlias(d)\n" + - " └─ Table\n" + - " β”œβ”€ name: one_pk\n" + - " └─ columns: [pk]\n" + + " └─ TableAlias(d)\n" + + " └─ IndexedTableAccess(one_pk)\n" + + " β”œβ”€ index: [one_pk.pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: c.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.pk, a.c1, a.c2, a.c3, a.c4, a.c5]\n" + - " └─ LeftOuterHashJoin (estimated cost=17.100 rows=5) (actual rows=16 loops=1)\n" + - " β”œβ”€ (c.pk = d.pk)\n" + + " └─ LeftOuterLookupJoin (estimated cost=5.575 rows=5) (actual rows=16 loops=1)\n" + " β”œβ”€ CrossJoin (estimated cost=17.160 rows=5) (actual rows=16 loops=1)\n" + " β”‚ β”œβ”€ MergeJoin (estimated cost=8.120 rows=4) (actual rows=4 loops=1)\n" + " β”‚ β”‚ β”œβ”€ cmp: (b.pk = c.pk)\n" + @@ -17624,13 +16810,11 @@ inner join pq on true " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk\n" + " β”‚ └─ columns: [pk c1 c2 c3 c4 c5]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (c.pk)\n" + - " β”œβ”€ right-key: (d.pk)\n" + - " └─ TableAlias(d)\n" + - " └─ Table\n" + - " β”œβ”€ name: one_pk\n" + - " └─ columns: [pk]\n" + + " └─ TableAlias(d)\n" + + " └─ IndexedTableAccess(one_pk)\n" + + " β”œβ”€ index: [one_pk.pk]\n" + + " β”œβ”€ columns: [pk]\n" + + " └─ keys: c.pk\n" + "", }, { @@ -17876,10 +17060,7 @@ inner join pq on true Query: `select a.pk, c.v2 from one_pk_three_idx a cross join one_pk_three_idx b left join one_pk_three_idx c on b.pk = c.v1 where b.pk = 0 and a.v2 = 1;`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [a.pk:1!null, c.v2:4]\n" + - " └─ LeftOuterHashJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ b.pk:0!null\n" + - " β”‚ └─ c.v1:3\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ CrossJoin\n" + " β”‚ β”œβ”€ TableAlias(b)\n" + " β”‚ β”‚ └─ IndexedTableAccess(one_pk_three_idx)\n" + @@ -17899,20 +17080,19 @@ inner join pq on true " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk_three_idx\n" + " β”‚ └─ columns: [pk v2]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(b.pk:0!null)\n" + - " β”œβ”€ right-key: TUPLE(c.v1:0)\n" + - " └─ TableAlias(c)\n" + + " └─ TableAlias(c)\n" + + " └─ IndexedTableAccess(one_pk_three_idx)\n" + + " β”œβ”€ index: [one_pk_three_idx.v1,one_pk_three_idx.v2,one_pk_three_idx.v3]\n" + + " β”œβ”€ keys: [b.pk:0!null]\n" + + " β”œβ”€ colSet: (9-12)\n" + + " β”œβ”€ tableId: 3\n" + " └─ Table\n" + " β”œβ”€ name: one_pk_three_idx\n" + - " β”œβ”€ columns: [v1 v2]\n" + - " β”œβ”€ colSet: (9-12)\n" + - " └─ tableId: 3\n" + + " └─ columns: [v1 v2]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.pk, c.v2]\n" + - " └─ LeftOuterHashJoin (estimated cost=30.130 rows=7)\n" + - " β”œβ”€ (b.pk = c.v1)\n" + + " └─ LeftOuterLookupJoin (estimated cost=6.805 rows=7)\n" + " β”œβ”€ CrossJoin (estimated cost=7.060 rows=6)\n" + " β”‚ β”œβ”€ TableAlias(b)\n" + " β”‚ β”‚ └─ IndexedTableAccess(one_pk_three_idx)\n" + @@ -17925,18 +17105,15 @@ inner join pq on true " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk_three_idx\n" + " β”‚ └─ columns: [pk v2]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (b.pk)\n" + - " β”œβ”€ right-key: (c.v1)\n" + - " └─ TableAlias(c)\n" + - " └─ Table\n" + - " β”œβ”€ name: one_pk_three_idx\n" + - " └─ columns: [v1 v2]\n" + + " └─ TableAlias(c)\n" + + " └─ IndexedTableAccess(one_pk_three_idx)\n" + + " β”œβ”€ index: [one_pk_three_idx.v1,one_pk_three_idx.v2,one_pk_three_idx.v3]\n" + + " β”œβ”€ columns: [v1 v2]\n" + + " └─ keys: b.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.pk, c.v2]\n" + - " └─ LeftOuterHashJoin (estimated cost=30.130 rows=7) (actual rows=4 loops=1)\n" + - " β”œβ”€ (b.pk = c.v1)\n" + + " └─ LeftOuterLookupJoin (estimated cost=6.805 rows=7) (actual rows=4 loops=1)\n" + " β”œβ”€ CrossJoin (estimated cost=7.060 rows=6) (actual rows=1 loops=1)\n" + " β”‚ β”œβ”€ TableAlias(b)\n" + " β”‚ β”‚ └─ IndexedTableAccess(one_pk_three_idx)\n" + @@ -17949,13 +17126,11 @@ inner join pq on true " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: one_pk_three_idx\n" + " β”‚ └─ columns: [pk v2]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (b.pk)\n" + - " β”œβ”€ right-key: (c.v1)\n" + - " └─ TableAlias(c)\n" + - " └─ Table\n" + - " β”œβ”€ name: one_pk_three_idx\n" + - " └─ columns: [v1 v2]\n" + + " └─ TableAlias(c)\n" + + " └─ IndexedTableAccess(one_pk_three_idx)\n" + + " β”œβ”€ index: [one_pk_three_idx.v1,one_pk_three_idx.v2,one_pk_three_idx.v3]\n" + + " β”œβ”€ columns: [v1 v2]\n" + + " └─ keys: b.pk\n" + "", }, { @@ -18056,23 +17231,17 @@ inner join pq on true " β”œβ”€ Eq\n" + " β”‚ β”œβ”€ a.i:2!null\n" + " β”‚ └─ (c.i:4!null - 1 (tinyint))\n" + - " β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ (b.i:1!null + 1 (tinyint))\n" + - " β”‚ β”‚ └─ a.i:2!null\n" + + " β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”œβ”€ TableAlias(b)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: mytable\n" + + " β”‚ β”‚ β”œβ”€ columns: [i]\n" + " β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: mytable\n" + - " β”‚ β”‚ └─ columns: [i]\n" + + " β”‚ β”‚ └─ tableId: 2\n" + " β”‚ └─ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”œβ”€ keys: [(b.i:1!null + 1 (tinyint))]\n" + " β”‚ β”œβ”€ colSet: (1,2)\n" + " β”‚ β”œβ”€ tableId: 1\n" + " β”‚ └─ Table\n" + @@ -18087,26 +17256,24 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LeftOuterJoin (estimated cost=3.345 rows=3)\n" + + " └─ LeftOuterJoin (estimated cost=8.090 rows=3)\n" + " β”œβ”€ (b.i = d.i)\n" + " β”œβ”€ TableAlias(d)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i]\n" + - " └─ LeftOuterJoin (estimated cost=3.345 rows=3)\n" + + " └─ LeftOuterJoin (estimated cost=8.090 rows=3)\n" + " β”œβ”€ (a.i = (c.i - 1))\n" + - " β”œβ”€ LeftOuterMergeJoin (estimated cost=6.120 rows=3)\n" + - " β”‚ β”œβ”€ cmp: ((b.i + 1) = a.i)\n" + + " β”œβ”€ LeftOuterLookupJoin (estimated cost=3.345 rows=3)\n" + " β”‚ β”œβ”€ TableAlias(b)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: mytable\n" + " β”‚ β”‚ └─ columns: [i]\n" + " β”‚ └─ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + + " β”‚ β”œβ”€ columns: [i s]\n" + + " β”‚ └─ keys: (b.i + 1)\n" + " └─ TableAlias(c)\n" + " └─ Table\n" + " β”œβ”€ name: mytable\n" + @@ -18114,26 +17281,24 @@ inner join pq on true "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LeftOuterJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " └─ LeftOuterJoin (estimated cost=8.090 rows=3) (actual rows=3 loops=1)\n" + " β”œβ”€ (b.i = d.i)\n" + " β”œβ”€ TableAlias(d)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i]\n" + - " └─ LeftOuterJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=3)\n" + + " └─ LeftOuterJoin (estimated cost=8.090 rows=3) (actual rows=3 loops=3)\n" + " β”œβ”€ (a.i = (c.i - 1))\n" + - " β”œβ”€ LeftOuterMergeJoin (estimated cost=6.120 rows=3) (actual rows=3 loops=3)\n" + - " β”‚ β”œβ”€ cmp: ((b.i + 1) = a.i)\n" + + " β”œβ”€ LeftOuterLookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=3)\n" + " β”‚ β”œβ”€ TableAlias(b)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: mytable\n" + " β”‚ β”‚ └─ columns: [i]\n" + " β”‚ └─ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + + " β”‚ β”œβ”€ columns: [i s]\n" + + " β”‚ └─ keys: (b.i + 1)\n" + " └─ TableAlias(c)\n" + " └─ Table\n" + " β”œβ”€ name: mytable\n" + @@ -18144,31 +17309,21 @@ inner join pq on true Query: `select a.*,b.* from mytable a RIGHT JOIN othertable b on a.i = b.i2+1 LEFT JOIN mytable c on a.i = c.i-1 LEFT JOIN othertable d on b.i2 = d.i2;`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [a.i:2!null, a.s:3!null, b.s2:0!null, b.i2:1!null]\n" + - " └─ LeftOuterJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ b.i2:1!null\n" + - " β”‚ └─ d.i2:5!null\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ LeftOuterJoin\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ a.i:2!null\n" + " β”‚ β”‚ └─ (c.i:4!null - 1 (tinyint))\n" + - " β”‚ β”œβ”€ LeftOuterMergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ (b.i2:1!null + 1 (tinyint))\n" + - " β”‚ β”‚ β”‚ └─ a.i:2!null\n" + + " β”‚ β”œβ”€ LeftOuterLookupJoin\n" + " β”‚ β”‚ β”œβ”€ TableAlias(b)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”œβ”€ name: othertable\n" + " β”‚ β”‚ β”‚ └─ columns: [s2 i2]\n" + " β”‚ β”‚ └─ TableAlias(a)\n" + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”‚ β”œβ”€ keys: [(b.i2:1!null + 1 (tinyint))]\n" + " β”‚ β”‚ β”œβ”€ colSet: (1,2)\n" + " β”‚ β”‚ β”œβ”€ tableId: 1\n" + " β”‚ β”‚ └─ Table\n" + @@ -18180,74 +17335,71 @@ inner join pq on true " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i]\n" + " └─ TableAlias(d)\n" + - " └─ ProcessTable\n" + + " └─ IndexedTableAccess(othertable)\n" + + " β”œβ”€ index: [othertable.i2]\n" + + " β”œβ”€ keys: [b.i2:1!null]\n" + + " β”œβ”€ colSet: (7,8)\n" + + " β”œβ”€ tableId: 4\n" + " └─ Table\n" + " β”œβ”€ name: othertable\n" + " └─ columns: [i2]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s, b.s2, b.i2]\n" + - " └─ LeftOuterJoin (estimated cost=3.345 rows=3)\n" + - " β”œβ”€ (b.i2 = d.i2)\n" + - " β”œβ”€ LeftOuterJoin (estimated cost=3.345 rows=3)\n" + + " └─ LeftOuterLookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ LeftOuterJoin (estimated cost=8.090 rows=3)\n" + " β”‚ β”œβ”€ (a.i = (c.i - 1))\n" + - " β”‚ β”œβ”€ LeftOuterMergeJoin (estimated cost=6.120 rows=3)\n" + - " β”‚ β”‚ β”œβ”€ cmp: ((b.i2 + 1) = a.i)\n" + + " β”‚ β”œβ”€ LeftOuterLookupJoin (estimated cost=3.345 rows=3)\n" + " β”‚ β”‚ β”œβ”€ TableAlias(b)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: othertable\n" + " β”‚ β”‚ β”‚ └─ columns: [s2 i2]\n" + " β”‚ β”‚ └─ TableAlias(a)\n" + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [i s]\n" + + " β”‚ β”‚ β”œβ”€ columns: [i s]\n" + + " β”‚ β”‚ └─ keys: (b.i2 + 1)\n" + " β”‚ └─ TableAlias(c)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i]\n" + " └─ TableAlias(d)\n" + - " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [i2]\n" + + " └─ IndexedTableAccess(othertable)\n" + + " β”œβ”€ index: [othertable.i2]\n" + + " β”œβ”€ columns: [i2]\n" + + " └─ keys: b.i2\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s, b.s2, b.i2]\n" + - " └─ LeftOuterJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ (b.i2 = d.i2)\n" + - " β”œβ”€ LeftOuterJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " └─ LeftOuterLookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ LeftOuterJoin (estimated cost=8.090 rows=3) (actual rows=3 loops=1)\n" + " β”‚ β”œβ”€ (a.i = (c.i - 1))\n" + - " β”‚ β”œβ”€ LeftOuterMergeJoin (estimated cost=6.120 rows=3) (actual rows=3 loops=1)\n" + - " β”‚ β”‚ β”œβ”€ cmp: ((b.i2 + 1) = a.i)\n" + + " β”‚ β”œβ”€ LeftOuterLookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + " β”‚ β”‚ β”œβ”€ TableAlias(b)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: othertable\n" + " β”‚ β”‚ β”‚ └─ columns: [s2 i2]\n" + " β”‚ β”‚ └─ TableAlias(a)\n" + " β”‚ β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [i s]\n" + + " β”‚ β”‚ β”œβ”€ columns: [i s]\n" + + " β”‚ β”‚ └─ keys: (b.i2 + 1)\n" + " β”‚ └─ TableAlias(c)\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i]\n" + " └─ TableAlias(d)\n" + - " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [i2]\n" + + " └─ IndexedTableAccess(othertable)\n" + + " β”œβ”€ index: [othertable.i2]\n" + + " β”œβ”€ columns: [i2]\n" + + " └─ keys: b.i2\n" + "", }, { Query: `select a.*,b.* from mytable a RIGHT JOIN othertable b on a.i = b.i2+1 RIGHT JOIN mytable c on a.i = c.i-1 LEFT JOIN othertable d on b.i2 = d.i2;`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [a.i:3!null, a.s:4!null, b.s2:1!null, b.i2:2!null]\n" + - " └─ LeftOuterJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ b.i2:2!null\n" + - " β”‚ └─ d.i2:5!null\n" + + " └─ LeftOuterLookupJoin\n" + " β”œβ”€ LeftOuterJoin\n" + " β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”œβ”€ a.i:3!null\n" + @@ -18257,467 +17409,381 @@ inner join pq on true " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: mytable\n" + " β”‚ β”‚ └─ columns: [i]\n" + - " β”‚ └─ LeftOuterMergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ (b.i2:2!null + 1 (tinyint))\n" + - " β”‚ β”‚ └─ a.i:3!null\n" + + " β”‚ └─ LeftOuterLookupJoin\n" + " β”‚ β”œβ”€ TableAlias(b)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (3,4)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: othertable\n" + " β”‚ β”‚ └─ columns: [s2 i2]\n" + " β”‚ └─ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”œβ”€ keys: [(b.i2:2!null + 1 (tinyint))]\n" + " β”‚ β”œβ”€ colSet: (1,2)\n" + " β”‚ β”œβ”€ tableId: 1\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(d)\n" + - " └─ ProcessTable\n" + + " └─ IndexedTableAccess(othertable)\n" + + " β”œβ”€ index: [othertable.i2]\n" + + " β”œβ”€ keys: [b.i2:2!null]\n" + + " β”œβ”€ colSet: (7,8)\n" + + " β”œβ”€ tableId: 4\n" + " └─ Table\n" + " β”œβ”€ name: othertable\n" + " └─ columns: [i2]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s, b.s2, b.i2]\n" + - " └─ LeftOuterJoin (estimated cost=3.345 rows=3)\n" + - " β”œβ”€ (b.i2 = d.i2)\n" + - " β”œβ”€ LeftOuterJoin (estimated cost=3.345 rows=3)\n" + + " └─ LeftOuterLookupJoin (estimated cost=3.345 rows=3)\n" + + " β”œβ”€ LeftOuterJoin (estimated cost=8.090 rows=3)\n" + " β”‚ β”œβ”€ (a.i = (c.i - 1))\n" + " β”‚ β”œβ”€ TableAlias(c)\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: mytable\n" + " β”‚ β”‚ └─ columns: [i]\n" + - " β”‚ └─ LeftOuterMergeJoin (estimated cost=6.120 rows=3)\n" + - " β”‚ β”œβ”€ cmp: ((b.i2 + 1) = a.i)\n" + + " β”‚ └─ LeftOuterLookupJoin (estimated cost=3.345 rows=3)\n" + " β”‚ β”œβ”€ TableAlias(b)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + " β”‚ β”‚ └─ columns: [s2 i2]\n" + " β”‚ └─ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + + " β”‚ β”œβ”€ columns: [i s]\n" + + " β”‚ └─ keys: (b.i2 + 1)\n" + " └─ TableAlias(d)\n" + - " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [i2]\n" + + " └─ IndexedTableAccess(othertable)\n" + + " β”œβ”€ index: [othertable.i2]\n" + + " β”œβ”€ columns: [i2]\n" + + " └─ keys: b.i2\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s, b.s2, b.i2]\n" + - " └─ LeftOuterJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ (b.i2 = d.i2)\n" + - " β”œβ”€ LeftOuterJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " └─ LeftOuterLookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ LeftOuterJoin (estimated cost=8.090 rows=3) (actual rows=3 loops=1)\n" + " β”‚ β”œβ”€ (a.i = (c.i - 1))\n" + " β”‚ β”œβ”€ TableAlias(c)\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: mytable\n" + " β”‚ β”‚ └─ columns: [i]\n" + - " β”‚ └─ LeftOuterMergeJoin (estimated cost=6.120 rows=3) (actual rows=3 loops=3)\n" + - " β”‚ β”œβ”€ cmp: ((b.i2 + 1) = a.i)\n" + + " β”‚ └─ LeftOuterLookupJoin (estimated cost=3.345 rows=3) (actual rows=3 loops=3)\n" + " β”‚ β”œβ”€ TableAlias(b)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(othertable)\n" + - " β”‚ β”‚ β”œβ”€ index: [othertable.i2]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: othertable\n" + " β”‚ β”‚ └─ columns: [s2 i2]\n" + " β”‚ └─ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + + " β”‚ β”œβ”€ columns: [i s]\n" + + " β”‚ └─ keys: (b.i2 + 1)\n" + " └─ TableAlias(d)\n" + - " └─ Table\n" + - " β”œβ”€ name: othertable\n" + - " └─ columns: [i2]\n" + + " └─ IndexedTableAccess(othertable)\n" + + " β”œβ”€ index: [othertable.i2]\n" + + " β”œβ”€ columns: [i2]\n" + + " └─ keys: b.i2\n" + "", }, { Query: `select i.pk, j.v3 from one_pk_two_idx i JOIN one_pk_three_idx j on i.v1 = j.pk;`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [i.pk:0!null, j.v3:3]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ i.v1:1\n" + - " β”‚ └─ j.pk:2!null\n" + - " β”œβ”€ TableAlias(i)\n" + - " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-3)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: one_pk_two_idx\n" + - " β”‚ └─ columns: [pk v1]\n" + - " └─ TableAlias(j)\n" + - " └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (4-7)\n" + - " β”œβ”€ tableId: 2\n" + + " β”œβ”€ columns: [i.pk:2!null, j.v3:1]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ TableAlias(j)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ └─ columns: [pk v3]\n" + + " └─ TableAlias(i)\n" + + " └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”œβ”€ keys: [j.pk:0!null]\n" + + " β”œβ”€ colSet: (1-3)\n" + + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + - " β”œβ”€ name: one_pk_three_idx\n" + - " └─ columns: [pk v3]\n" + + " β”œβ”€ name: one_pk_two_idx\n" + + " └─ columns: [pk v1]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [i.pk, j.v3]\n" + - " └─ MergeJoin (estimated cost=16.240 rows=8)\n" + - " β”œβ”€ cmp: (i.v1 = j.pk)\n" + - " β”œβ”€ TableAlias(i)\n" + - " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk v1]\n" + - " └─ TableAlias(j)\n" + - " └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk v3]\n" + + " └─ LookupJoin (estimated cost=8.920 rows=8)\n" + + " β”œβ”€ TableAlias(j)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ └─ columns: [pk v3]\n" + + " └─ TableAlias(i)\n" + + " └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”œβ”€ columns: [pk v1]\n" + + " └─ keys: j.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [i.pk, j.v3]\n" + - " └─ MergeJoin (estimated cost=16.240 rows=8) (actual rows=8 loops=1)\n" + - " β”œβ”€ cmp: (i.v1 = j.pk)\n" + - " β”œβ”€ TableAlias(i)\n" + - " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk v1]\n" + - " └─ TableAlias(j)\n" + - " └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk v3]\n" + + " └─ LookupJoin (estimated cost=8.920 rows=8) (actual rows=8 loops=1)\n" + + " β”œβ”€ TableAlias(j)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ └─ columns: [pk v3]\n" + + " └─ TableAlias(i)\n" + + " └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”œβ”€ columns: [pk v1]\n" + + " └─ keys: j.pk\n" + "", }, { Query: `select i.pk, j.v3, k.c1 from one_pk_two_idx i JOIN one_pk_three_idx j on i.v1 = j.pk JOIN one_pk k on j.v3 = k.pk;`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [i.pk:0!null, j.v3:3, k.c1:5]\n" + - " └─ HashJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ j.v3:3\n" + - " β”‚ └─ k.pk:4!null\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ i.v1:1\n" + - " β”‚ β”‚ └─ j.pk:2!null\n" + - " β”‚ β”œβ”€ TableAlias(i)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (1-3)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”œβ”€ columns: [i.pk:2!null, j.v3:1, k.c1:5]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(j)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: one_pk_two_idx\n" + - " β”‚ β”‚ └─ columns: [pk v1]\n" + - " β”‚ └─ TableAlias(j)\n" + - " β”‚ └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”‚ β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (4-7)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ β”‚ └─ columns: [pk v3]\n" + + " β”‚ └─ TableAlias(i)\n" + + " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”‚ β”œβ”€ keys: [j.pk:0!null]\n" + + " β”‚ β”œβ”€ colSet: (1-3)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: one_pk_three_idx\n" + - " β”‚ └─ columns: [pk v3]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(j.v3:3)\n" + - " β”œβ”€ right-key: TUPLE(k.pk:0!null)\n" + - " └─ TableAlias(k)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: one_pk\n" + - " └─ columns: [pk c1]\n" + - "", - ExpectedEstimates: "Project\n" + - " β”œβ”€ columns: [i.pk, j.v3, k.c1]\n" + - " └─ HashJoin (estimated cost=20.160 rows=8)\n" + - " β”œβ”€ (j.v3 = k.pk)\n" + - " β”œβ”€ MergeJoin (estimated cost=16.240 rows=8)\n" + - " β”‚ β”œβ”€ cmp: (i.v1 = j.pk)\n" + - " β”‚ β”œβ”€ TableAlias(i)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [pk v1]\n" + - " β”‚ └─ TableAlias(j)\n" + - " β”‚ └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”‚ β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk v3]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (j.v3)\n" + - " β”œβ”€ right-key: (k.pk)\n" + - " └─ TableAlias(k)\n" + + " β”‚ β”œβ”€ name: one_pk_two_idx\n" + + " β”‚ └─ columns: [pk v1]\n" + + " └─ TableAlias(k)\n" + + " └─ IndexedTableAccess(one_pk)\n" + + " β”œβ”€ index: [one_pk.pk]\n" + + " β”œβ”€ keys: [j.v3:1]\n" + + " β”œβ”€ colSet: (8-13)\n" + + " β”œβ”€ tableId: 3\n" + " └─ Table\n" + " β”œβ”€ name: one_pk\n" + " └─ columns: [pk c1]\n" + "", + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [i.pk, j.v3, k.c1]\n" + + " └─ LookupJoin (estimated cost=18.400 rows=8)\n" + + " β”œβ”€ LookupJoin (estimated cost=8.920 rows=8)\n" + + " β”‚ β”œβ”€ TableAlias(j)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ β”‚ └─ columns: [pk v3]\n" + + " β”‚ └─ TableAlias(i)\n" + + " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”‚ β”œβ”€ columns: [pk v1]\n" + + " β”‚ └─ keys: j.pk\n" + + " └─ TableAlias(k)\n" + + " └─ IndexedTableAccess(one_pk)\n" + + " β”œβ”€ index: [one_pk.pk]\n" + + " β”œβ”€ columns: [pk c1]\n" + + " └─ keys: j.v3\n" + + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [i.pk, j.v3, k.c1]\n" + - " └─ HashJoin (estimated cost=20.160 rows=8) (actual rows=7 loops=1)\n" + - " β”œβ”€ (j.v3 = k.pk)\n" + - " β”œβ”€ MergeJoin (estimated cost=16.240 rows=8) (actual rows=8 loops=1)\n" + - " β”‚ β”œβ”€ cmp: (i.v1 = j.pk)\n" + - " β”‚ β”œβ”€ TableAlias(i)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [pk v1]\n" + - " β”‚ └─ TableAlias(j)\n" + - " β”‚ └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”‚ β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk v3]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (j.v3)\n" + - " β”œβ”€ right-key: (k.pk)\n" + - " └─ TableAlias(k)\n" + - " └─ Table\n" + - " β”œβ”€ name: one_pk\n" + - " └─ columns: [pk c1]\n" + + " └─ LookupJoin (estimated cost=18.400 rows=8) (actual rows=7 loops=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=8.920 rows=8) (actual rows=8 loops=1)\n" + + " β”‚ β”œβ”€ TableAlias(j)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ β”‚ └─ columns: [pk v3]\n" + + " β”‚ └─ TableAlias(i)\n" + + " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”‚ β”œβ”€ columns: [pk v1]\n" + + " β”‚ └─ keys: j.pk\n" + + " └─ TableAlias(k)\n" + + " └─ IndexedTableAccess(one_pk)\n" + + " β”œβ”€ index: [one_pk.pk]\n" + + " β”œβ”€ columns: [pk c1]\n" + + " └─ keys: j.v3\n" + "", }, { Query: `select i.pk, j.v3 from (one_pk_two_idx i JOIN one_pk_three_idx j on((i.v1 = j.pk)));`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [i.pk:0!null, j.v3:3]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ i.v1:1\n" + - " β”‚ └─ j.pk:2!null\n" + - " β”œβ”€ TableAlias(i)\n" + - " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-3)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”œβ”€ columns: [i.pk:2!null, j.v3:1]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ TableAlias(j)\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: one_pk_two_idx\n" + - " β”‚ └─ columns: [pk v1]\n" + - " └─ TableAlias(j)\n" + - " └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (4-7)\n" + - " β”œβ”€ tableId: 2\n" + + " β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ └─ columns: [pk v3]\n" + + " └─ TableAlias(i)\n" + + " └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”œβ”€ keys: [j.pk:0!null]\n" + + " β”œβ”€ colSet: (1-3)\n" + + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + - " β”œβ”€ name: one_pk_three_idx\n" + - " └─ columns: [pk v3]\n" + + " β”œβ”€ name: one_pk_two_idx\n" + + " └─ columns: [pk v1]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [i.pk, j.v3]\n" + - " └─ MergeJoin (estimated cost=16.240 rows=8)\n" + - " β”œβ”€ cmp: (i.v1 = j.pk)\n" + - " β”œβ”€ TableAlias(i)\n" + - " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk v1]\n" + - " └─ TableAlias(j)\n" + - " └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk v3]\n" + + " └─ LookupJoin (estimated cost=8.920 rows=8)\n" + + " β”œβ”€ TableAlias(j)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ └─ columns: [pk v3]\n" + + " └─ TableAlias(i)\n" + + " └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”œβ”€ columns: [pk v1]\n" + + " └─ keys: j.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [i.pk, j.v3]\n" + - " └─ MergeJoin (estimated cost=16.240 rows=8) (actual rows=8 loops=1)\n" + - " β”œβ”€ cmp: (i.v1 = j.pk)\n" + - " β”œβ”€ TableAlias(i)\n" + - " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk v1]\n" + - " └─ TableAlias(j)\n" + - " └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk v3]\n" + + " └─ LookupJoin (estimated cost=8.920 rows=8) (actual rows=8 loops=1)\n" + + " β”œβ”€ TableAlias(j)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ └─ columns: [pk v3]\n" + + " └─ TableAlias(i)\n" + + " └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”œβ”€ columns: [pk v1]\n" + + " └─ keys: j.pk\n" + "", }, { Query: `select i.pk, j.v3, k.c1 from ((one_pk_two_idx i JOIN one_pk_three_idx j on ((i.v1 = j.pk))) JOIN one_pk k on((j.v3 = k.pk)));`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [i.pk:0!null, j.v3:3, k.c1:5]\n" + - " └─ HashJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ j.v3:3\n" + - " β”‚ └─ k.pk:4!null\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ i.v1:1\n" + - " β”‚ β”‚ └─ j.pk:2!null\n" + - " β”‚ β”œβ”€ TableAlias(i)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (1-3)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”œβ”€ columns: [i.pk:2!null, j.v3:1, k.c1:5]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(j)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: one_pk_two_idx\n" + - " β”‚ β”‚ └─ columns: [pk v1]\n" + - " β”‚ └─ TableAlias(j)\n" + - " β”‚ └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”‚ β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (4-7)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ β”‚ └─ columns: [pk v3]\n" + + " β”‚ └─ TableAlias(i)\n" + + " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”‚ β”œβ”€ keys: [j.pk:0!null]\n" + + " β”‚ β”œβ”€ colSet: (1-3)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: one_pk_three_idx\n" + - " β”‚ └─ columns: [pk v3]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(j.v3:3)\n" + - " β”œβ”€ right-key: TUPLE(k.pk:0!null)\n" + - " └─ TableAlias(k)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: one_pk\n" + - " └─ columns: [pk c1]\n" + - "", - ExpectedEstimates: "Project\n" + - " β”œβ”€ columns: [i.pk, j.v3, k.c1]\n" + - " └─ HashJoin (estimated cost=20.160 rows=8)\n" + - " β”œβ”€ (j.v3 = k.pk)\n" + - " β”œβ”€ MergeJoin (estimated cost=16.240 rows=8)\n" + - " β”‚ β”œβ”€ cmp: (i.v1 = j.pk)\n" + - " β”‚ β”œβ”€ TableAlias(i)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [pk v1]\n" + - " β”‚ └─ TableAlias(j)\n" + - " β”‚ └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”‚ β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk v3]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (j.v3)\n" + - " β”œβ”€ right-key: (k.pk)\n" + - " └─ TableAlias(k)\n" + + " β”‚ β”œβ”€ name: one_pk_two_idx\n" + + " β”‚ └─ columns: [pk v1]\n" + + " └─ TableAlias(k)\n" + + " └─ IndexedTableAccess(one_pk)\n" + + " β”œβ”€ index: [one_pk.pk]\n" + + " β”œβ”€ keys: [j.v3:1]\n" + + " β”œβ”€ colSet: (8-13)\n" + + " β”œβ”€ tableId: 3\n" + " └─ Table\n" + " β”œβ”€ name: one_pk\n" + " └─ columns: [pk c1]\n" + "", + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [i.pk, j.v3, k.c1]\n" + + " └─ LookupJoin (estimated cost=18.400 rows=8)\n" + + " β”œβ”€ LookupJoin (estimated cost=8.920 rows=8)\n" + + " β”‚ β”œβ”€ TableAlias(j)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ β”‚ └─ columns: [pk v3]\n" + + " β”‚ └─ TableAlias(i)\n" + + " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”‚ β”œβ”€ columns: [pk v1]\n" + + " β”‚ └─ keys: j.pk\n" + + " └─ TableAlias(k)\n" + + " └─ IndexedTableAccess(one_pk)\n" + + " β”œβ”€ index: [one_pk.pk]\n" + + " β”œβ”€ columns: [pk c1]\n" + + " └─ keys: j.v3\n" + + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [i.pk, j.v3, k.c1]\n" + - " └─ HashJoin (estimated cost=20.160 rows=8) (actual rows=7 loops=1)\n" + - " β”œβ”€ (j.v3 = k.pk)\n" + - " β”œβ”€ MergeJoin (estimated cost=16.240 rows=8) (actual rows=8 loops=1)\n" + - " β”‚ β”œβ”€ cmp: (i.v1 = j.pk)\n" + - " β”‚ β”œβ”€ TableAlias(i)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [pk v1]\n" + - " β”‚ └─ TableAlias(j)\n" + - " β”‚ └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”‚ β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk v3]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (j.v3)\n" + - " β”œβ”€ right-key: (k.pk)\n" + - " └─ TableAlias(k)\n" + - " └─ Table\n" + - " β”œβ”€ name: one_pk\n" + - " └─ columns: [pk c1]\n" + + " └─ LookupJoin (estimated cost=18.400 rows=8) (actual rows=7 loops=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=8.920 rows=8) (actual rows=8 loops=1)\n" + + " β”‚ β”œβ”€ TableAlias(j)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ β”‚ └─ columns: [pk v3]\n" + + " β”‚ └─ TableAlias(i)\n" + + " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”‚ β”œβ”€ columns: [pk v1]\n" + + " β”‚ └─ keys: j.pk\n" + + " └─ TableAlias(k)\n" + + " └─ IndexedTableAccess(one_pk)\n" + + " β”œβ”€ index: [one_pk.pk]\n" + + " β”œβ”€ columns: [pk c1]\n" + + " └─ keys: j.v3\n" + "", }, { Query: `select i.pk, j.v3, k.c1 from (one_pk_two_idx i JOIN one_pk_three_idx j on ((i.v1 = j.pk)) JOIN one_pk k on((j.v3 = k.pk)))`, ExpectedPlan: "Project\n" + - " β”œβ”€ columns: [i.pk:0!null, j.v3:3, k.c1:5]\n" + - " └─ HashJoin\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ j.v3:3\n" + - " β”‚ └─ k.pk:4!null\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ i.v1:1\n" + - " β”‚ β”‚ └─ j.pk:2!null\n" + - " β”‚ β”œβ”€ TableAlias(i)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (1-3)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”œβ”€ columns: [i.pk:2!null, j.v3:1, k.c1:5]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ TableAlias(j)\n" + + " β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: one_pk_two_idx\n" + - " β”‚ β”‚ └─ columns: [pk v1]\n" + - " β”‚ └─ TableAlias(j)\n" + - " β”‚ └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”‚ β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (4-7)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ β”‚ └─ columns: [pk v3]\n" + + " β”‚ └─ TableAlias(i)\n" + + " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”‚ β”œβ”€ keys: [j.pk:0!null]\n" + + " β”‚ β”œβ”€ colSet: (1-3)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: one_pk_three_idx\n" + - " β”‚ └─ columns: [pk v3]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: TUPLE(j.v3:3)\n" + - " β”œβ”€ right-key: TUPLE(k.pk:0!null)\n" + - " └─ TableAlias(k)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " β”œβ”€ name: one_pk\n" + - " └─ columns: [pk c1]\n" + - "", - ExpectedEstimates: "Project\n" + - " β”œβ”€ columns: [i.pk, j.v3, k.c1]\n" + - " └─ HashJoin (estimated cost=20.160 rows=8)\n" + - " β”œβ”€ (j.v3 = k.pk)\n" + - " β”œβ”€ MergeJoin (estimated cost=16.240 rows=8)\n" + - " β”‚ β”œβ”€ cmp: (i.v1 = j.pk)\n" + - " β”‚ β”œβ”€ TableAlias(i)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [pk v1]\n" + - " β”‚ └─ TableAlias(j)\n" + - " β”‚ └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”‚ β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk v3]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (j.v3)\n" + - " β”œβ”€ right-key: (k.pk)\n" + - " └─ TableAlias(k)\n" + + " β”‚ β”œβ”€ name: one_pk_two_idx\n" + + " β”‚ └─ columns: [pk v1]\n" + + " └─ TableAlias(k)\n" + + " └─ IndexedTableAccess(one_pk)\n" + + " β”œβ”€ index: [one_pk.pk]\n" + + " β”œβ”€ keys: [j.v3:1]\n" + + " β”œβ”€ colSet: (8-13)\n" + + " β”œβ”€ tableId: 3\n" + " └─ Table\n" + " β”œβ”€ name: one_pk\n" + " └─ columns: [pk c1]\n" + "", + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [i.pk, j.v3, k.c1]\n" + + " └─ LookupJoin (estimated cost=18.400 rows=8)\n" + + " β”œβ”€ LookupJoin (estimated cost=8.920 rows=8)\n" + + " β”‚ β”œβ”€ TableAlias(j)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ β”‚ └─ columns: [pk v3]\n" + + " β”‚ └─ TableAlias(i)\n" + + " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”‚ β”œβ”€ columns: [pk v1]\n" + + " β”‚ └─ keys: j.pk\n" + + " └─ TableAlias(k)\n" + + " └─ IndexedTableAccess(one_pk)\n" + + " β”œβ”€ index: [one_pk.pk]\n" + + " β”œβ”€ columns: [pk c1]\n" + + " └─ keys: j.v3\n" + + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [i.pk, j.v3, k.c1]\n" + - " └─ HashJoin (estimated cost=20.160 rows=8) (actual rows=7 loops=1)\n" + - " β”œβ”€ (j.v3 = k.pk)\n" + - " β”œβ”€ MergeJoin (estimated cost=16.240 rows=8) (actual rows=8 loops=1)\n" + - " β”‚ β”œβ”€ cmp: (i.v1 = j.pk)\n" + - " β”‚ β”œβ”€ TableAlias(i)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [pk v1]\n" + - " β”‚ └─ TableAlias(j)\n" + - " β”‚ └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”‚ β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ └─ columns: [pk v3]\n" + - " └─ HashLookup\n" + - " β”œβ”€ left-key: (j.v3)\n" + - " β”œβ”€ right-key: (k.pk)\n" + - " └─ TableAlias(k)\n" + - " └─ Table\n" + - " β”œβ”€ name: one_pk\n" + - " └─ columns: [pk c1]\n" + + " └─ LookupJoin (estimated cost=18.400 rows=8) (actual rows=7 loops=1)\n" + + " β”œβ”€ LookupJoin (estimated cost=8.920 rows=8) (actual rows=8 loops=1)\n" + + " β”‚ β”œβ”€ TableAlias(j)\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ β”‚ └─ columns: [pk v3]\n" + + " β”‚ └─ TableAlias(i)\n" + + " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”‚ β”œβ”€ columns: [pk v1]\n" + + " β”‚ └─ keys: j.pk\n" + + " └─ TableAlias(k)\n" + + " └─ IndexedTableAccess(one_pk)\n" + + " β”œβ”€ index: [one_pk.pk]\n" + + " β”œβ”€ columns: [pk c1]\n" + + " └─ keys: j.v3\n" + "", }, { @@ -18727,148 +17793,119 @@ inner join pq on true " └─ LeftOuterHashJoin\n" + " β”œβ”€ Eq\n" + " β”‚ β”œβ”€ a.pk:2!null\n" + - " β”‚ └─ l.v2:7\n" + - " β”œβ”€ LeftOuterHashJoin\n" + - " β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”œβ”€ a.pk:2!null\n" + - " β”‚ β”‚ └─ i.v1:0\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ i.v1:0\n" + - " β”‚ β”‚ β”‚ └─ j.pk:1!null\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(i)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (4-6)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ └─ l.v2:6\n" + + " β”œβ”€ LeftOuterLookupJoin\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(j)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: one_pk_two_idx\n" + - " β”‚ β”‚ β”‚ └─ columns: [v1]\n" + - " β”‚ β”‚ └─ TableAlias(j)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (7-10)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ β”‚ β”‚ └─ columns: [pk]\n" + + " β”‚ β”‚ └─ TableAlias(i)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”‚ β”‚ β”œβ”€ keys: [j.pk:0!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (4-6)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 2\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: one_pk_three_idx\n" + - " β”‚ β”‚ └─ columns: [pk]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: TUPLE(i.v1:0)\n" + - " β”‚ β”œβ”€ right-key: TUPLE(a.pk:0!null)\n" + - " β”‚ └─ TableAlias(a)\n" + - " β”‚ └─ ProcessTable\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: one_pk_two_idx\n" + - " β”‚ └─ columns: [pk v1 v2]\n" + + " β”‚ β”‚ β”œβ”€ name: one_pk_two_idx\n" + + " β”‚ β”‚ └─ columns: [v1]\n" + + " β”‚ └─ TableAlias(a)\n" + + " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”‚ β”œβ”€ index: [one_pk_two_idx.pk]\n" + + " β”‚ β”œβ”€ keys: [i.v1:1]\n" + + " β”‚ β”œβ”€ colSet: (1-3)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk_two_idx\n" + + " β”‚ └─ columns: [pk v1 v2]\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: TUPLE(a.pk:2!null)\n" + - " β”œβ”€ right-key: TUPLE(l.v2:2)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ k.v1:5\n" + - " β”‚ └─ l.pk:6!null\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (11-13)\n" + - " β”‚ β”œβ”€ tableId: 4\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: one_pk_two_idx\n" + - " β”‚ └─ columns: [v1]\n" + - " └─ TableAlias(l)\n" + - " └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (14-17)\n" + - " β”œβ”€ tableId: 5\n" + + " β”œβ”€ right-key: TUPLE(l.v2:1)\n" + + " └─ LookupJoin\n" + + " β”œβ”€ TableAlias(l)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ β”œβ”€ columns: [pk v2]\n" + + " β”‚ β”œβ”€ colSet: (14-17)\n" + + " β”‚ └─ tableId: 5\n" + + " └─ TableAlias(k)\n" + + " └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”œβ”€ keys: [l.pk:5!null]\n" + + " β”œβ”€ colSet: (11-13)\n" + + " β”œβ”€ tableId: 4\n" + " └─ Table\n" + - " β”œβ”€ name: one_pk_three_idx\n" + - " └─ columns: [pk v2]\n" + + " β”œβ”€ name: one_pk_two_idx\n" + + " └─ columns: [v1]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.pk, a.v1, a.v2]\n" + " └─ LeftOuterHashJoin (estimated cost=34.200 rows=10)\n" + " β”œβ”€ (a.pk = l.v2)\n" + - " β”œβ”€ LeftOuterHashJoin (estimated cost=32.180 rows=10)\n" + - " β”‚ β”œβ”€ (a.pk = i.v1)\n" + - " β”‚ β”œβ”€ MergeJoin (estimated cost=16.240 rows=8)\n" + - " β”‚ β”‚ β”œβ”€ cmp: (i.v1 = j.pk)\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(i)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [v1]\n" + - " β”‚ β”‚ └─ TableAlias(j)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [pk]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (i.v1)\n" + - " β”‚ β”œβ”€ right-key: (a.pk)\n" + - " β”‚ └─ TableAlias(a)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: one_pk_two_idx\n" + - " β”‚ └─ columns: [pk v1 v2]\n" + + " β”œβ”€ LeftOuterLookupJoin (estimated cost=9.150 rows=10)\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=8.920 rows=8)\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(j)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ β”‚ β”‚ └─ columns: [pk]\n" + + " β”‚ β”‚ └─ TableAlias(i)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”‚ β”‚ β”œβ”€ columns: [v1]\n" + + " β”‚ β”‚ └─ keys: j.pk\n" + + " β”‚ └─ TableAlias(a)\n" + + " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”‚ β”œβ”€ index: [one_pk_two_idx.pk]\n" + + " β”‚ β”œβ”€ columns: [pk v1 v2]\n" + + " β”‚ └─ keys: i.v1\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (a.pk)\n" + " β”œβ”€ right-key: (l.v2)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (k.v1 = l.pk)\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [v1]\n" + - " └─ TableAlias(l)\n" + - " └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk v2]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ TableAlias(l)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ └─ columns: [pk v2]\n" + + " └─ TableAlias(k)\n" + + " └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”œβ”€ columns: [v1]\n" + + " └─ keys: l.pk\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.pk, a.v1, a.v2]\n" + " └─ LeftOuterHashJoin (estimated cost=34.200 rows=10) (actual rows=11 loops=1)\n" + " β”œβ”€ (a.pk = l.v2)\n" + - " β”œβ”€ LeftOuterHashJoin (estimated cost=32.180 rows=10) (actual rows=8 loops=1)\n" + - " β”‚ β”œβ”€ (a.pk = i.v1)\n" + - " β”‚ β”œβ”€ MergeJoin (estimated cost=16.240 rows=8) (actual rows=8 loops=1)\n" + - " β”‚ β”‚ β”œβ”€ cmp: (i.v1 = j.pk)\n" + - " β”‚ β”‚ β”œβ”€ TableAlias(i)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [v1]\n" + - " β”‚ β”‚ └─ TableAlias(j)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”‚ β”‚ β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [pk]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (i.v1)\n" + - " β”‚ β”œβ”€ right-key: (a.pk)\n" + - " β”‚ └─ TableAlias(a)\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: one_pk_two_idx\n" + - " β”‚ └─ columns: [pk v1 v2]\n" + + " β”œβ”€ LeftOuterLookupJoin (estimated cost=9.150 rows=10) (actual rows=8 loops=1)\n" + + " β”‚ β”œβ”€ LookupJoin (estimated cost=8.920 rows=8) (actual rows=8 loops=1)\n" + + " β”‚ β”‚ β”œβ”€ TableAlias(j)\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ β”‚ β”‚ └─ columns: [pk]\n" + + " β”‚ β”‚ └─ TableAlias(i)\n" + + " β”‚ β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”‚ β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”‚ β”‚ β”œβ”€ columns: [v1]\n" + + " β”‚ β”‚ └─ keys: j.pk\n" + + " β”‚ └─ TableAlias(a)\n" + + " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”‚ β”œβ”€ index: [one_pk_two_idx.pk]\n" + + " β”‚ β”œβ”€ columns: [pk v1 v2]\n" + + " β”‚ └─ keys: i.v1\n" + " └─ HashLookup\n" + " β”œβ”€ left-key: (a.pk)\n" + " β”œβ”€ right-key: (l.v2)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (k.v1 = l.pk)\n" + - " β”œβ”€ TableAlias(k)\n" + - " β”‚ └─ IndexedTableAccess(one_pk_two_idx)\n" + - " β”‚ β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [v1]\n" + - " └─ TableAlias(l)\n" + - " └─ IndexedTableAccess(one_pk_three_idx)\n" + - " β”œβ”€ index: [one_pk_three_idx.pk]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [pk v2]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ TableAlias(l)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: one_pk_three_idx\n" + + " β”‚ └─ columns: [pk v2]\n" + + " └─ TableAlias(k)\n" + + " └─ IndexedTableAccess(one_pk_two_idx)\n" + + " β”œβ”€ index: [one_pk_two_idx.v1,one_pk_two_idx.v2]\n" + + " β”œβ”€ columns: [v1]\n" + + " └─ keys: l.pk\n" + "", }, { @@ -19026,7 +18063,7 @@ inner join pq on true " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”œβ”€ keys: [a.i:0!null]\n" + " β”œβ”€ colSet: (3,4)\n" + " β”œβ”€ tableId: 2\n" + @@ -19036,7 +18073,7 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -19044,13 +18081,13 @@ inner join pq on true " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”œβ”€ columns: [i]\n" + " └─ keys: a.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=1 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.115 rows=1) (actual rows=1 loops=1)\n" + " β”œβ”€ TableAlias(a)\n" + " β”‚ └─ IndexedTableAccess(mytable)\n" + " β”‚ β”œβ”€ index: [mytable.i]\n" + @@ -19058,7 +18095,7 @@ inner join pq on true " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + " β”œβ”€ columns: [i]\n" + " └─ keys: a.i\n" + "", @@ -19067,27 +18104,20 @@ inner join pq on true Query: `select a.* from mytable a join mytable b on a.i = b.i and now() >= coalesce(NULL, NULL, now())`, ExpectedPlan: "Project\n" + " β”œβ”€ columns: [a.i:0!null, a.s:1!null]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ a.i:0!null\n" + - " β”‚ └─ b.i:2!null\n" + + " └─ LookupJoin\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ GreaterThanOrEqual\n" + " β”‚ β”‚ β”œβ”€ NOW()\n" + " β”‚ β”‚ └─ coalesce(NULL (null),NULL (null),NOW())\n" + " β”‚ └─ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [a.i:0!null]\n" + " β”œβ”€ colSet: (3,4)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -19096,37 +18126,33 @@ inner join pq on true "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ MergeJoin (estimated cost=5.070 rows=2)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + + " └─ LookupJoin (estimated cost=2.230 rows=2)\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ (NOW() >= coalesce(NULL,NULL,NOW()))\n" + " β”‚ └─ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: a.i\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [a.i, a.s]\n" + - " └─ MergeJoin (estimated cost=5.070 rows=2) (actual rows=3 loops=1)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + + " └─ LookupJoin (estimated cost=2.230 rows=2) (actual rows=3 loops=1)\n" + " β”œβ”€ Filter\n" + " β”‚ β”œβ”€ (NOW() >= coalesce(NULL,NULL,NOW()))\n" + " β”‚ └─ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: mytable\n" + " β”‚ └─ columns: [i s]\n" + " └─ TableAlias(b)\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i]\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i]\n" + + " └─ keys: a.i\n" + "", }, { @@ -19195,230 +18221,210 @@ inner join pq on true }, { Query: `select * from mytable a join niltable b on a.i = b.i and b <=> NULL`, - ExpectedPlan: "MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ a.i:0!null\n" + - " β”‚ └─ b.i:2!null\n" + - " β”œβ”€ sel: (b.b:4 <=> NULL (null))\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(niltable)\n" + - " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (3-6)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: niltable\n" + - " └─ columns: [i i2 b f]\n" + + ExpectedPlan: "Project\n" + + " β”œβ”€ columns: [a.i:4!null, a.s:5!null, b.i:0!null, b.i2:1, b.b:2, b.f:3]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ (b.b:2 <=> NULL (null))\n" + + " β”œβ”€ TableAlias(b)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + + " β”‚ └─ columns: [i i2 b f]\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [b.i:0!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i s]\n" + "", - ExpectedEstimates: "MergeJoin (estimated cost=9.120 rows=3)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + - " β”œβ”€ sel: (b.b <=> NULL)\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(niltable)\n" + - " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i i2 b f]\n" + + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [a.i, a.s, b.i, b.i2, b.b, b.f]\n" + + " └─ LookupJoin (estimated cost=6.345 rows=3)\n" + + " β”œβ”€ (b.b <=> NULL)\n" + + " β”œβ”€ TableAlias(b)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + + " β”‚ └─ columns: [i i2 b f]\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: b.i\n" + "", - ExpectedAnalysis: "MergeJoin (estimated cost=9.120 rows=3) (actual rows=1 loops=1)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + - " β”œβ”€ sel: (b.b <=> NULL)\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(niltable)\n" + - " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i i2 b f]\n" + + ExpectedAnalysis: "Project\n" + + " β”œβ”€ columns: [a.i, a.s, b.i, b.i2, b.b, b.f]\n" + + " └─ LookupJoin (estimated cost=6.345 rows=3) (actual rows=1 loops=1)\n" + + " β”œβ”€ (b.b <=> NULL)\n" + + " β”œβ”€ TableAlias(b)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + + " β”‚ └─ columns: [i i2 b f]\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: b.i\n" + "", }, { Query: `select * from mytable a join niltable b on a.i = b.i and b IS NOT NULL`, - ExpectedPlan: "MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ a.i:0!null\n" + - " β”‚ └─ b.i:2!null\n" + - " β”œβ”€ sel: NOT\n" + - " β”‚ └─ b.b:4 IS NULL\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(niltable)\n" + - " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (3-6)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: niltable\n" + - " └─ columns: [i i2 b f]\n" + + ExpectedPlan: "Project\n" + + " β”œβ”€ columns: [a.i:4!null, a.s:5!null, b.i:0!null, b.i2:1, b.b:2, b.f:3]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ NOT\n" + + " β”‚ └─ b.b:2 IS NULL\n" + + " β”œβ”€ TableAlias(b)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + + " β”‚ └─ columns: [i i2 b f]\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [b.i:0!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i s]\n" + "", - ExpectedEstimates: "MergeJoin (estimated cost=9.120 rows=3)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + - " β”œβ”€ sel: (NOT(b.b IS NULL))\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(niltable)\n" + - " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i i2 b f]\n" + + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [a.i, a.s, b.i, b.i2, b.b, b.f]\n" + + " └─ LookupJoin (estimated cost=6.345 rows=3)\n" + + " β”œβ”€ (NOT(b.b IS NULL))\n" + + " β”œβ”€ TableAlias(b)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + + " β”‚ └─ columns: [i i2 b f]\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: b.i\n" + "", - ExpectedAnalysis: "MergeJoin (estimated cost=9.120 rows=3) (actual rows=2 loops=1)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + - " β”œβ”€ sel: (NOT(b.b IS NULL))\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(niltable)\n" + - " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i i2 b f]\n" + + ExpectedAnalysis: "Project\n" + + " β”œβ”€ columns: [a.i, a.s, b.i, b.i2, b.b, b.f]\n" + + " └─ LookupJoin (estimated cost=6.345 rows=3) (actual rows=2 loops=1)\n" + + " β”œβ”€ (NOT(b.b IS NULL))\n" + + " β”œβ”€ TableAlias(b)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + + " β”‚ └─ columns: [i i2 b f]\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: b.i\n" + "", }, { Query: `select * from mytable a join niltable b on a.i = b.i and b != 0`, - ExpectedPlan: "MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ a.i:0!null\n" + - " β”‚ └─ b.i:2!null\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ Filter\n" + - " β”œβ”€ NOT\n" + - " β”‚ └─ Eq\n" + - " β”‚ β”œβ”€ b.b:2\n" + - " β”‚ └─ 0 (tinyint)\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(niltable)\n" + - " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (3-6)\n" + - " β”œβ”€ tableId: 2\n" + + ExpectedPlan: "Project\n" + + " β”œβ”€ columns: [a.i:4!null, a.s:5!null, b.i:0!null, b.i2:1, b.b:2, b.f:3]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”œβ”€ b.b:2\n" + + " β”‚ β”‚ └─ 0 (tinyint)\n" + + " β”‚ └─ TableAlias(b)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + + " β”‚ └─ columns: [i i2 b f]\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [b.i:0!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + - " β”œβ”€ name: niltable\n" + - " └─ columns: [i i2 b f]\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i s]\n" + "", - ExpectedEstimates: "MergeJoin (estimated cost=8.110 rows=3)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ Filter\n" + - " β”œβ”€ (NOT((b.b = 0)))\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(niltable)\n" + - " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i i2 b f]\n" + + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [a.i, a.s, b.i, b.i2, b.b, b.f]\n" + + " └─ LookupJoin (estimated cost=5.345 rows=3)\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (NOT((b.b = 0)))\n" + + " β”‚ └─ TableAlias(b)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + + " β”‚ └─ columns: [i i2 b f]\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: b.i\n" + "", - ExpectedAnalysis: "MergeJoin (estimated cost=8.110 rows=3) (actual rows=1 loops=1)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ Filter\n" + - " β”œβ”€ (NOT((b.b = 0)))\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(niltable)\n" + - " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i i2 b f]\n" + + ExpectedAnalysis: "Project\n" + + " β”œβ”€ columns: [a.i, a.s, b.i, b.i2, b.b, b.f]\n" + + " └─ LookupJoin (estimated cost=5.345 rows=3) (actual rows=1 loops=1)\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ (NOT((b.b = 0)))\n" + + " β”‚ └─ TableAlias(b)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + + " β”‚ └─ columns: [i i2 b f]\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: b.i\n" + "", }, { Query: `select * from mytable a join niltable b on a.i = b.i and s IS NOT NULL`, - ExpectedPlan: "MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ a.i:0!null\n" + - " β”‚ └─ b.i:2!null\n" + - " β”œβ”€ sel: NOT\n" + - " β”‚ └─ a.s:1!null IS NULL\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1,2)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: mytable\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(niltable)\n" + - " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”œβ”€ colSet: (3-6)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: niltable\n" + - " └─ columns: [i i2 b f]\n" + + ExpectedPlan: "Project\n" + + " β”œβ”€ columns: [a.i:4!null, a.s:5!null, b.i:0!null, b.i2:1, b.b:2, b.f:3]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ NOT\n" + + " β”‚ └─ a.s:5!null IS NULL\n" + + " β”œβ”€ TableAlias(b)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + + " β”‚ └─ columns: [i i2 b f]\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ keys: [b.i:0!null]\n" + + " β”œβ”€ colSet: (1,2)\n" + + " β”œβ”€ tableId: 1\n" + + " └─ Table\n" + + " β”œβ”€ name: mytable\n" + + " └─ columns: [i s]\n" + "", - ExpectedEstimates: "MergeJoin (estimated cost=9.120 rows=3)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + - " β”œβ”€ sel: (NOT(a.s IS NULL))\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(niltable)\n" + - " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i i2 b f]\n" + + ExpectedEstimates: "Project\n" + + " β”œβ”€ columns: [a.i, a.s, b.i, b.i2, b.b, b.f]\n" + + " └─ LookupJoin (estimated cost=6.345 rows=3)\n" + + " β”œβ”€ (NOT(a.s IS NULL))\n" + + " β”œβ”€ TableAlias(b)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + + " β”‚ └─ columns: [i i2 b f]\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: b.i\n" + "", - ExpectedAnalysis: "MergeJoin (estimated cost=9.120 rows=3) (actual rows=3 loops=1)\n" + - " β”œβ”€ cmp: (a.i = b.i)\n" + - " β”œβ”€ sel: (NOT(a.s IS NULL))\n" + - " β”œβ”€ TableAlias(a)\n" + - " β”‚ └─ IndexedTableAccess(mytable)\n" + - " β”‚ β”œβ”€ index: [mytable.i,mytable.s]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [i s]\n" + - " └─ TableAlias(b)\n" + - " └─ IndexedTableAccess(niltable)\n" + - " β”œβ”€ index: [niltable.i]\n" + - " β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " └─ columns: [i i2 b f]\n" + + ExpectedAnalysis: "Project\n" + + " β”œβ”€ columns: [a.i, a.s, b.i, b.i2, b.b, b.f]\n" + + " └─ LookupJoin (estimated cost=6.345 rows=3) (actual rows=3 loops=1)\n" + + " β”œβ”€ (NOT(a.s IS NULL))\n" + + " β”œβ”€ TableAlias(b)\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: niltable\n" + + " β”‚ └─ columns: [i i2 b f]\n" + + " └─ TableAlias(a)\n" + + " └─ IndexedTableAccess(mytable)\n" + + " β”œβ”€ index: [mytable.i,mytable.s]\n" + + " β”œβ”€ columns: [i s]\n" + + " └─ keys: b.i\n" + "", }, { @@ -25071,7 +24077,7 @@ order by x, y; " β”‚ β”œβ”€ name: xy\n" + " β”‚ └─ columns: [x y]\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s]\n" + + " β”œβ”€ index: [mytable.s,mytable.i]\n" + " β”œβ”€ keys: [xy.x:0!null]\n" + " β”œβ”€ colSet: (3,4)\n" + " β”œβ”€ tableId: 2\n" + @@ -25079,21 +24085,21 @@ order by x, y; " β”œβ”€ name: mytable\n" + " └─ columns: [i s]\n" + "", - ExpectedEstimates: "LookupJoin (estimated cost=1006.900 rows=3)\n" + + ExpectedEstimates: "LookupJoin (estimated cost=1000.345 rows=3)\n" + " β”œβ”€ Table\n" + " β”‚ β”œβ”€ name: xy\n" + " β”‚ └─ columns: [x y]\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s]\n" + + " β”œβ”€ index: [mytable.s,mytable.i]\n" + " β”œβ”€ columns: [i s]\n" + " └─ keys: xy.x\n" + "", - ExpectedAnalysis: "LookupJoin (estimated cost=1006.900 rows=3) (actual rows=0 loops=1)\n" + + ExpectedAnalysis: "LookupJoin (estimated cost=1000.345 rows=3) (actual rows=0 loops=1)\n" + " β”œβ”€ Table\n" + " β”‚ β”œβ”€ name: xy\n" + " β”‚ └─ columns: [x y]\n" + " └─ IndexedTableAccess(mytable)\n" + - " β”œβ”€ index: [mytable.s]\n" + + " β”œβ”€ index: [mytable.s,mytable.i]\n" + " β”œβ”€ columns: [i s]\n" + " └─ keys: xy.x\n" + "", diff --git a/enginetest/queries/tpcc_plans.go b/enginetest/queries/tpcc_plans.go index 8aef8bd69e..88ce2da43c 100644 --- a/enginetest/queries/tpcc_plans.go +++ b/enginetest/queries/tpcc_plans.go @@ -41,8 +41,8 @@ SELECT c_discount, c_last, c_credit, w_tax FROM customer2, warehouse2 WHERE w_id " β”‚ β”œβ”€ customer2.c_id:0!null\n" + " β”‚ └─ 2151 (int)\n" + " └─ IndexedTableAccess(customer2)\n" + - " β”œβ”€ index: [customer2.c_w_id,customer2.c_d_id,customer2.c_id]\n" + - " β”œβ”€ keys: [warehouse2.w_id:0!null 9 (tinyint) 2151 (int)]\n" + + " β”œβ”€ index: [customer2.c_w_id,customer2.c_d_id,customer2.c_last,customer2.c_first]\n" + + " β”œβ”€ keys: [warehouse2.w_id:0!null 9 (tinyint)]\n" + " β”œβ”€ colSet: (1-21)\n" + " β”œβ”€ tableId: 1\n" + " └─ Table\n" + @@ -51,7 +51,7 @@ SELECT c_discount, c_last, c_credit, w_tax FROM customer2, warehouse2 WHERE w_id "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [customer2.c_discount, customer2.c_last, customer2.c_credit, warehouse2.w_tax]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1)\n" + " β”œβ”€ IndexedTableAccess(warehouse2)\n" + " β”‚ β”œβ”€ index: [warehouse2.w_id]\n" + " β”‚ β”œβ”€ filters: [{[1, 1]}]\n" + @@ -59,13 +59,13 @@ SELECT c_discount, c_last, c_credit, w_tax FROM customer2, warehouse2 WHERE w_id " └─ Filter\n" + " β”œβ”€ ((customer2.c_d_id = 9) AND (customer2.c_id = 2151))\n" + " └─ IndexedTableAccess(customer2)\n" + - " β”œβ”€ index: [customer2.c_w_id,customer2.c_d_id,customer2.c_id]\n" + + " β”œβ”€ index: [customer2.c_w_id,customer2.c_d_id,customer2.c_last,customer2.c_first]\n" + " β”œβ”€ columns: [c_id c_d_id c_w_id c_last c_credit c_discount]\n" + - " └─ keys: warehouse2.w_id, 9, 2151\n" + + " └─ keys: warehouse2.w_id, 9\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [customer2.c_discount, customer2.c_last, customer2.c_credit, warehouse2.w_tax]\n" + - " └─ LookupJoin (estimated cost=3.300 rows=1) (actual rows=0 loops=1)\n" + + " └─ LookupJoin (estimated cost=1.058 rows=1) (actual rows=0 loops=1)\n" + " β”œβ”€ IndexedTableAccess(warehouse2)\n" + " β”‚ β”œβ”€ index: [warehouse2.w_id]\n" + " β”‚ β”œβ”€ filters: [{[1, 1]}]\n" + @@ -73,9 +73,9 @@ SELECT c_discount, c_last, c_credit, w_tax FROM customer2, warehouse2 WHERE w_id " └─ Filter\n" + " β”œβ”€ ((customer2.c_d_id = 9) AND (customer2.c_id = 2151))\n" + " └─ IndexedTableAccess(customer2)\n" + - " β”œβ”€ index: [customer2.c_w_id,customer2.c_d_id,customer2.c_id]\n" + + " β”œβ”€ index: [customer2.c_w_id,customer2.c_d_id,customer2.c_last,customer2.c_first]\n" + " β”œβ”€ columns: [c_id c_d_id c_w_id c_last c_credit c_discount]\n" + - " └─ keys: warehouse2.w_id, 9, 2151\n" + + " └─ keys: warehouse2.w_id, 9\n" + "", }, { @@ -709,8 +709,8 @@ SELECT d_next_o_id FROM district2 WHERE d_id = 5 AND d_w_id= 1`, " β”‚ β”œβ”€ stock2.s_quantity:2\n" + " β”‚ └─ 18 (smallint)\n" + " └─ IndexedTableAccess(stock2)\n" + - " β”œβ”€ index: [stock2.s_w_id,stock2.s_i_id]\n" + - " β”œβ”€ keys: [1 (smallint) order_line2.ol_i_id:3]\n" + + " β”œβ”€ index: [stock2.s_i_id]\n" + + " β”œβ”€ keys: [order_line2.ol_i_id:3]\n" + " β”œβ”€ colSet: (11-27)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -730,9 +730,9 @@ SELECT d_next_o_id FROM district2 WHERE d_id = 5 AND d_w_id= 1`, " └─ Filter\n" + " β”œβ”€ ((stock2.s_w_id = 1) AND (stock2.s_quantity < 18))\n" + " └─ IndexedTableAccess(stock2)\n" + - " β”œβ”€ index: [stock2.s_w_id,stock2.s_i_id]\n" + + " β”œβ”€ index: [stock2.s_i_id]\n" + " β”œβ”€ columns: [s_i_id s_w_id s_quantity]\n" + - " └─ keys: 1, order_line2.ol_i_id\n" + + " └─ keys: order_line2.ol_i_id\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [countdistinct([stock2.s_i_id]) as COUNT(DISTINCT (s_i_id))]\n" + @@ -747,9 +747,9 @@ SELECT d_next_o_id FROM district2 WHERE d_id = 5 AND d_w_id= 1`, " └─ Filter\n" + " β”œβ”€ ((stock2.s_w_id = 1) AND (stock2.s_quantity < 18))\n" + " └─ IndexedTableAccess(stock2)\n" + - " β”œβ”€ index: [stock2.s_w_id,stock2.s_i_id]\n" + + " β”œβ”€ index: [stock2.s_i_id]\n" + " β”œβ”€ columns: [s_i_id s_w_id s_quantity]\n" + - " └─ keys: 1, order_line2.ol_i_id\n" + + " └─ keys: order_line2.ol_i_id\n" + "", }, { diff --git a/enginetest/queries/tpch_plans.go b/enginetest/queries/tpch_plans.go index fbbce21847..e2d3aec3c4 100644 --- a/enginetest/queries/tpch_plans.go +++ b/enginetest/queries/tpch_plans.go @@ -184,27 +184,20 @@ order by " └─ LookupJoin\n" + " β”œβ”€ LookupJoin\n" + " β”‚ β”œβ”€ LookupJoin\n" + - " β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_partkey:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ partsupp.ps_partkey:9!null\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_size:5!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 15 (int)\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ part.p_type LIKE '%BRASS'\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(part)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [part.P_PARTKEY]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-9)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: part\n" + " β”‚ β”‚ β”‚ β”‚ └─ columns: [p_partkey p_name p_mfgr p_brand p_type p_size p_container p_retailprice p_comment]\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(partsupp)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [part.p_partkey:0!null]\n" + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (17-21)\n" + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + " β”‚ β”‚ β”‚ └─ Table\n" + @@ -276,16 +269,14 @@ order by " └─ LookupJoin\n" + " β”œβ”€ LookupJoin\n" + " β”‚ β”œβ”€ LookupJoin\n" + - " β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cmp: (part.p_partkey = partsupp.ps_partkey)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((part.p_size = 15) AND part.p_type LIKE '%BRASS')\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(part)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [part.P_PARTKEY]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ └─ name: part\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(partsupp)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ keys: part.p_partkey\n" + " β”‚ β”‚ └─ IndexedTableAccess(supplier)\n" + " β”‚ β”‚ β”œβ”€ index: [supplier.S_SUPPKEY]\n" + " β”‚ β”‚ └─ keys: partsupp.ps_suppkey\n" + @@ -335,16 +326,14 @@ order by " └─ LookupJoin\n" + " β”œβ”€ LookupJoin\n" + " β”‚ β”œβ”€ LookupJoin\n" + - " β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ cmp: (part.p_partkey = partsupp.ps_partkey)\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((part.p_size = 15) AND part.p_type LIKE '%BRASS')\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(part)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [part.P_PARTKEY]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ └─ name: part\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(partsupp)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ keys: part.p_partkey\n" + " β”‚ β”‚ └─ IndexedTableAccess(supplier)\n" + " β”‚ β”‚ β”œβ”€ index: [supplier.S_SUPPKEY]\n" + " β”‚ β”‚ └─ keys: partsupp.ps_suppkey\n" + @@ -389,49 +378,42 @@ order by " └─ Project\n" + " β”œβ”€ columns: [sum((lineitem.l_extendedprice * (1 - lineitem.l_discount))):0!null, lineitem.l_orderkey:1!null, orders.o_orderdate:2!null, orders.o_shippriority:3!null, sum((lineitem.l_extendedprice * (1 - lineitem.l_discount))):0!null->revenue:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: SUM((lineitem.l_extendedprice:5!null * (1 (tinyint) - lineitem.l_discount:6!null))), lineitem.l_orderkey:4!null, orders.o_orderdate:2!null, orders.o_shippriority:3!null\n" + - " β”œβ”€ group: lineitem.l_orderkey:4!null, orders.o_orderdate:2!null, orders.o_shippriority:3!null\n" + + " β”œβ”€ select: SUM((lineitem.l_extendedprice:7!null * (1 (tinyint) - lineitem.l_discount:8!null))), lineitem.l_orderkey:6!null, orders.o_orderdate:2!null, orders.o_shippriority:3!null\n" + + " β”œβ”€ group: lineitem.l_orderkey:6!null, orders.o_orderdate:2!null, orders.o_shippriority:3!null\n" + " └─ LookupJoin\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ orders.o_orderkey:0!null\n" + - " β”‚ β”‚ └─ lineitem.l_orderkey:4!null\n" + + " β”œβ”€ LookupJoin\n" + " β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”œβ”€ LessThan\n" + " β”‚ β”‚ β”‚ β”œβ”€ orders.o_orderdate:2!null\n" + " β”‚ β”‚ β”‚ └─ 1995-03-15 (longtext)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(orders)\n" + - " β”‚ β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (9-17)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”œβ”€ name: orders\n" + " β”‚ β”‚ └─ columns: [o_orderkey o_custkey o_orderdate o_shippriority]\n" + " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”œβ”€ lineitem.l_shipdate:3!null\n" + - " β”‚ β”‚ └─ 1995-03-15 (longtext)\n" + - " β”‚ └─ IndexedTableAccess(lineitem)\n" + - " β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (18-33)\n" + - " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ customer.c_mktsegment:1!null\n" + + " β”‚ β”‚ └─ BUILDING (longtext)\n" + + " β”‚ └─ IndexedTableAccess(customer)\n" + + " β”‚ β”œβ”€ index: [customer.C_CUSTKEY]\n" + + " β”‚ β”œβ”€ keys: [orders.o_custkey:1!null]\n" + + " β”‚ β”œβ”€ colSet: (1-8)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: lineitem\n" + - " β”‚ └─ columns: [l_orderkey l_extendedprice l_discount l_shipdate]\n" + + " β”‚ β”œβ”€ name: customer\n" + + " β”‚ └─ columns: [c_custkey c_mktsegment]\n" + " └─ Filter\n" + - " β”œβ”€ Eq\n" + - " β”‚ β”œβ”€ customer.c_mktsegment:1!null\n" + - " β”‚ └─ BUILDING (longtext)\n" + - " └─ IndexedTableAccess(customer)\n" + - " β”œβ”€ index: [customer.C_CUSTKEY]\n" + - " β”œβ”€ keys: [orders.o_custkey:1!null]\n" + - " β”œβ”€ colSet: (1-8)\n" + - " β”œβ”€ tableId: 1\n" + + " β”œβ”€ GreaterThan\n" + + " β”‚ β”œβ”€ lineitem.l_shipdate:3!null\n" + + " β”‚ └─ 1995-03-15 (longtext)\n" + + " └─ IndexedTableAccess(lineitem)\n" + + " β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + + " β”œβ”€ keys: [orders.o_orderkey:0!null]\n" + + " β”œβ”€ colSet: (18-33)\n" + + " β”œβ”€ tableId: 3\n" + " └─ Table\n" + - " β”œβ”€ name: customer\n" + - " └─ columns: [c_custkey c_mktsegment]\n" + + " β”œβ”€ name: lineitem\n" + + " └─ columns: [l_orderkey l_extendedprice l_discount l_shipdate]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [lineitem.l_orderkey, sum((lineitem.l_extendedprice * (1 - lineitem.l_discount))) as revenue, orders.o_orderdate, orders.o_shippriority]\n" + @@ -442,26 +424,24 @@ order by " β”œβ”€ SelectedExprs(SUM((lineitem.l_extendedprice * (1 - lineitem.l_discount))), lineitem.l_orderkey, orders.o_orderdate, orders.o_shippriority)\n" + " β”œβ”€ Grouping(lineitem.l_orderkey, orders.o_orderdate, orders.o_shippriority)\n" + " └─ LookupJoin\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (orders.o_orderkey = lineitem.l_orderkey)\n" + + " β”œβ”€ LookupJoin\n" + " β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”œβ”€ (orders.o_orderdate < '1995-03-15')\n" + - " β”‚ β”‚ └─ IndexedTableAccess(orders)\n" + - " β”‚ β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: orders\n" + " β”‚ β”‚ └─ columns: [o_orderkey o_custkey o_orderdate o_shippriority]\n" + " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ (lineitem.l_shipdate > '1995-03-15')\n" + - " β”‚ └─ IndexedTableAccess(lineitem)\n" + - " β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [l_orderkey l_extendedprice l_discount l_shipdate]\n" + + " β”‚ β”œβ”€ (customer.c_mktsegment = 'BUILDING')\n" + + " β”‚ └─ IndexedTableAccess(customer)\n" + + " β”‚ β”œβ”€ index: [customer.C_CUSTKEY]\n" + + " β”‚ β”œβ”€ columns: [c_custkey c_mktsegment]\n" + + " β”‚ └─ keys: orders.o_custkey\n" + " └─ Filter\n" + - " β”œβ”€ (customer.c_mktsegment = 'BUILDING')\n" + - " └─ IndexedTableAccess(customer)\n" + - " β”œβ”€ index: [customer.C_CUSTKEY]\n" + - " β”œβ”€ columns: [c_custkey c_mktsegment]\n" + - " └─ keys: orders.o_custkey\n" + + " β”œβ”€ (lineitem.l_shipdate > '1995-03-15')\n" + + " └─ IndexedTableAccess(lineitem)\n" + + " β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + + " β”œβ”€ columns: [l_orderkey l_extendedprice l_discount l_shipdate]\n" + + " └─ keys: orders.o_orderkey\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [lineitem.l_orderkey, sum((lineitem.l_extendedprice * (1 - lineitem.l_discount))) as revenue, orders.o_orderdate, orders.o_shippriority]\n" + @@ -472,26 +452,24 @@ order by " β”œβ”€ SelectedExprs(SUM((lineitem.l_extendedprice * (1 - lineitem.l_discount))), lineitem.l_orderkey, orders.o_orderdate, orders.o_shippriority)\n" + " β”œβ”€ Grouping(lineitem.l_orderkey, orders.o_orderdate, orders.o_shippriority)\n" + " └─ LookupJoin\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (orders.o_orderkey = lineitem.l_orderkey)\n" + + " β”œβ”€ LookupJoin\n" + " β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”œβ”€ (orders.o_orderdate < '1995-03-15')\n" + - " β”‚ β”‚ └─ IndexedTableAccess(orders)\n" + - " β”‚ β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: orders\n" + " β”‚ β”‚ └─ columns: [o_orderkey o_custkey o_orderdate o_shippriority]\n" + " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ (lineitem.l_shipdate > '1995-03-15')\n" + - " β”‚ └─ IndexedTableAccess(lineitem)\n" + - " β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ columns: [l_orderkey l_extendedprice l_discount l_shipdate]\n" + + " β”‚ β”œβ”€ (customer.c_mktsegment = 'BUILDING')\n" + + " β”‚ └─ IndexedTableAccess(customer)\n" + + " β”‚ β”œβ”€ index: [customer.C_CUSTKEY]\n" + + " β”‚ β”œβ”€ columns: [c_custkey c_mktsegment]\n" + + " β”‚ └─ keys: orders.o_custkey\n" + " └─ Filter\n" + - " β”œβ”€ (customer.c_mktsegment = 'BUILDING')\n" + - " └─ IndexedTableAccess(customer)\n" + - " β”œβ”€ index: [customer.C_CUSTKEY]\n" + - " β”œβ”€ columns: [c_custkey c_mktsegment]\n" + - " └─ keys: orders.o_custkey\n" + + " β”œβ”€ (lineitem.l_shipdate > '1995-03-15')\n" + + " └─ IndexedTableAccess(lineitem)\n" + + " β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + + " β”œβ”€ columns: [l_orderkey l_extendedprice l_discount l_shipdate]\n" + + " └─ keys: orders.o_orderkey\n" + "", }, { @@ -524,42 +502,31 @@ order by " └─ GroupBy\n" + " β”œβ”€ select: COUNT(1 (bigint)), orders.o_orderpriority:5!null\n" + " β”œβ”€ group: orders.o_orderpriority:5!null\n" + - " └─ Project\n" + - " β”œβ”€ columns: [orders.O_ORDERKEY:0!null, orders.O_CUSTKEY:1!null, orders.O_ORDERSTATUS:2!null, orders.O_TOTALPRICE:3!null, orders.O_ORDERDATE:4!null, orders.O_ORDERPRIORITY:5!null, orders.O_CLERK:6!null, orders.O_SHIPPRIORITY:7!null, orders.O_COMMENT:8!null]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ orders.o_orderkey:0!null\n" + - " β”‚ └─ lineitem.l_orderkey:9!null\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ orders.o_orderdate:4!null\n" + - " β”‚ β”‚ β”‚ └─ 1993-07-01 (longtext)\n" + - " β”‚ β”‚ └─ LessThan\n" + - " β”‚ β”‚ β”œβ”€ orders.o_orderdate:4!null\n" + - " β”‚ β”‚ └─ 1993-10-01 00:00:00 +0000 UTC (datetime)\n" + - " β”‚ └─ IndexedTableAccess(orders)\n" + - " β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-9)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: orders\n" + - " β”‚ └─ columns: [o_orderkey o_custkey o_orderstatus o_totalprice o_orderdate o_orderpriority o_clerk o_shippriority o_comment]\n" + - " └─ Project\n" + - " β”œβ”€ columns: [lineitem.l_orderkey:0!null]\n" + - " └─ Filter\n" + - " β”œβ”€ LessThan\n" + - " β”‚ β”œβ”€ lineitem.l_commitdate:11!null\n" + - " β”‚ └─ lineitem.l_receiptdate:12!null\n" + - " └─ IndexedTableAccess(lineitem)\n" + - " β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”œβ”€ colSet: (10-25)\n" + - " β”œβ”€ tableId: 2\n" + - " └─ Table\n" + - " β”œβ”€ name: lineitem\n" + - " └─ columns: [l_orderkey l_partkey l_suppkey l_linenumber l_quantity l_extendedprice l_discount l_tax l_returnflag l_linestatus l_shipdate l_commitdate l_receiptdate l_shipinstruct l_shipmode l_comment]\n" + + " └─ SemiLookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”œβ”€ orders.o_orderdate:4!null\n" + + " β”‚ β”‚ β”‚ └─ 1993-07-01 (longtext)\n" + + " β”‚ β”‚ └─ LessThan\n" + + " β”‚ β”‚ β”œβ”€ orders.o_orderdate:4!null\n" + + " β”‚ β”‚ └─ 1993-10-01 00:00:00 +0000 UTC (datetime)\n" + + " β”‚ └─ ProcessTable\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: orders\n" + + " β”‚ └─ columns: [o_orderkey o_custkey o_orderstatus o_totalprice o_orderdate o_orderpriority o_clerk o_shippriority o_comment]\n" + + " └─ Filter\n" + + " β”œβ”€ LessThan\n" + + " β”‚ β”œβ”€ lineitem.l_commitdate:11!null\n" + + " β”‚ └─ lineitem.l_receiptdate:12!null\n" + + " └─ IndexedTableAccess(lineitem)\n" + + " β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + + " β”œβ”€ keys: [orders.o_orderkey:0!null]\n" + + " β”œβ”€ colSet: (10-25)\n" + + " β”œβ”€ tableId: 2\n" + + " └─ Table\n" + + " β”œβ”€ name: lineitem\n" + + " └─ columns: [l_orderkey l_partkey l_suppkey l_linenumber l_quantity l_extendedprice l_discount l_tax l_returnflag l_linestatus l_shipdate l_commitdate l_receiptdate l_shipinstruct l_shipmode l_comment]\n" + "", ExpectedEstimates: "Project\n" + " β”œβ”€ columns: [orders.o_orderpriority, count(1) as order_count]\n" + @@ -567,23 +534,17 @@ order by " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(COUNT(1), orders.o_orderpriority)\n" + " β”œβ”€ Grouping(orders.o_orderpriority)\n" + - " └─ Project\n" + - " β”œβ”€ columns: [orders.O_ORDERKEY, orders.O_CUSTKEY, orders.O_ORDERSTATUS, orders.O_TOTALPRICE, orders.O_ORDERDATE, orders.O_ORDERPRIORITY, orders.O_CLERK, orders.O_SHIPPRIORITY, orders.O_COMMENT]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (orders.o_orderkey = lineitem.l_orderkey)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((orders.o_orderdate >= '1993-07-01') AND (orders.o_orderdate < 1993-10-01 00:00:00 +0000 UTC))\n" + - " β”‚ └─ IndexedTableAccess(orders)\n" + - " β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ └─ filters: [{[NULL, ∞)}]\n" + - " └─ Project\n" + - " β”œβ”€ columns: [lineitem.l_orderkey]\n" + - " └─ Filter\n" + - " β”œβ”€ (lineitem.l_commitdate < lineitem.l_receiptdate)\n" + - " └─ IndexedTableAccess(lineitem)\n" + - " β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [l_orderkey l_partkey l_suppkey l_linenumber l_quantity l_extendedprice l_discount l_tax l_returnflag l_linestatus l_shipdate l_commitdate l_receiptdate l_shipinstruct l_shipmode l_comment]\n" + + " └─ SemiLookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ ((orders.o_orderdate >= '1993-07-01') AND (orders.o_orderdate < 1993-10-01 00:00:00 +0000 UTC))\n" + + " β”‚ └─ Table\n" + + " β”‚ └─ name: orders\n" + + " └─ Filter\n" + + " β”œβ”€ (lineitem.l_commitdate < lineitem.l_receiptdate)\n" + + " └─ IndexedTableAccess(lineitem)\n" + + " β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + + " β”œβ”€ columns: [l_orderkey l_partkey l_suppkey l_linenumber l_quantity l_extendedprice l_discount l_tax l_returnflag l_linestatus l_shipdate l_commitdate l_receiptdate l_shipinstruct l_shipmode l_comment]\n" + + " └─ keys: orders.o_orderkey\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [orders.o_orderpriority, count(1) as order_count]\n" + @@ -591,23 +552,17 @@ order by " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(COUNT(1), orders.o_orderpriority)\n" + " β”œβ”€ Grouping(orders.o_orderpriority)\n" + - " └─ Project\n" + - " β”œβ”€ columns: [orders.O_ORDERKEY, orders.O_CUSTKEY, orders.O_ORDERSTATUS, orders.O_TOTALPRICE, orders.O_ORDERDATE, orders.O_ORDERPRIORITY, orders.O_CLERK, orders.O_SHIPPRIORITY, orders.O_COMMENT]\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (orders.o_orderkey = lineitem.l_orderkey)\n" + - " β”œβ”€ Filter\n" + - " β”‚ β”œβ”€ ((orders.o_orderdate >= '1993-07-01') AND (orders.o_orderdate < 1993-10-01 00:00:00 +0000 UTC))\n" + - " β”‚ └─ IndexedTableAccess(orders)\n" + - " β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ └─ filters: [{[NULL, ∞)}]\n" + - " └─ Project\n" + - " β”œβ”€ columns: [lineitem.l_orderkey]\n" + - " └─ Filter\n" + - " β”œβ”€ (lineitem.l_commitdate < lineitem.l_receiptdate)\n" + - " └─ IndexedTableAccess(lineitem)\n" + - " β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [l_orderkey l_partkey l_suppkey l_linenumber l_quantity l_extendedprice l_discount l_tax l_returnflag l_linestatus l_shipdate l_commitdate l_receiptdate l_shipinstruct l_shipmode l_comment]\n" + + " └─ SemiLookupJoin\n" + + " β”œβ”€ Filter\n" + + " β”‚ β”œβ”€ ((orders.o_orderdate >= '1993-07-01') AND (orders.o_orderdate < 1993-10-01 00:00:00 +0000 UTC))\n" + + " β”‚ └─ Table\n" + + " β”‚ └─ name: orders\n" + + " └─ Filter\n" + + " β”œβ”€ (lineitem.l_commitdate < lineitem.l_receiptdate)\n" + + " └─ IndexedTableAccess(lineitem)\n" + + " β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + + " β”œβ”€ columns: [l_orderkey l_partkey l_suppkey l_linenumber l_quantity l_extendedprice l_discount l_tax l_returnflag l_linestatus l_shipdate l_commitdate l_receiptdate l_shipinstruct l_shipmode l_comment]\n" + + " └─ keys: orders.o_orderkey\n" + "", }, { @@ -920,7 +875,7 @@ order by " β”œβ”€ colSet: (53-56)\n" + " β”œβ”€ tableId: 7\n" + " └─ Project\n" + - " β”œβ”€ columns: [n1.n_name:12!null->supp_nation:0, n2.n_name:14!null->cust_nation:0, extract('YEAR' from lineitem.l_shipdate)->l_year:0, (lineitem.l_extendedprice:2!null * (1 (tinyint) - lineitem.l_discount:3!null))->volume:0]\n" + + " β”œβ”€ columns: [n1.n_name:12!null->supp_nation:0, n2.n_name:14!null->cust_nation:0, extract('YEAR' from lineitem.l_shipdate)->l_year:0, (lineitem.l_extendedprice:4!null * (1 (tinyint) - lineitem.l_discount:5!null))->volume:0]\n" + " └─ Filter\n" + " β”œβ”€ Or\n" + " β”‚ β”œβ”€ AND\n" + @@ -941,37 +896,31 @@ order by " β”œβ”€ LookupJoin\n" + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lineitem.l_orderkey:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ orders.o_orderkey:5!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lineitem.l_shipdate:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1995-01-01 (longtext)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lineitem.l_shipdate:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1996-12-31 (longtext)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(lineitem)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (8-23)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: lineitem\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [l_orderkey l_suppkey l_extendedprice l_discount l_shipdate]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(orders)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-32)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: orders\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [o_orderkey o_custkey]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: orders\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [o_orderkey o_custkey]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-32)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lineitem.l_shipdate:4!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1995-01-01 (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lineitem.l_shipdate:4!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1996-12-31 (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(lineitem)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [orders.o_orderkey:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (8-23)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: lineitem\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [l_orderkey l_suppkey l_extendedprice l_discount l_shipdate]\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(supplier)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [supplier.S_SUPPKEY]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ keys: [lineitem.l_suppkey:1!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [lineitem.l_suppkey:3!null]\n" + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-7)\n" + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + " β”‚ β”‚ β”‚ └─ Table\n" + @@ -979,7 +928,7 @@ order by " β”‚ β”‚ β”‚ └─ columns: [s_suppkey s_nationkey]\n" + " β”‚ β”‚ └─ IndexedTableAccess(customer)\n" + " β”‚ β”‚ β”œβ”€ index: [customer.C_CUSTKEY]\n" + - " β”‚ β”‚ β”œβ”€ keys: [orders.o_custkey:6!null]\n" + + " β”‚ β”‚ β”œβ”€ keys: [orders.o_custkey:1!null]\n" + " β”‚ β”‚ β”œβ”€ colSet: (33-40)\n" + " β”‚ β”‚ β”œβ”€ tableId: 4\n" + " β”‚ β”‚ └─ Table\n" + @@ -1023,18 +972,16 @@ order by " β”œβ”€ LookupJoin\n" + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (lineitem.l_orderkey = orders.o_orderkey)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((lineitem.l_shipdate >= '1995-01-01') AND (lineitem.l_shipdate <= '1996-12-31'))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(lineitem)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [l_orderkey l_suppkey l_extendedprice l_discount l_shipdate]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(orders)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [o_orderkey o_custkey]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: orders\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [o_orderkey o_custkey]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((lineitem.l_shipdate >= '1995-01-01') AND (lineitem.l_shipdate <= '1996-12-31'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(lineitem)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [l_orderkey l_suppkey l_extendedprice l_discount l_shipdate]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: orders.o_orderkey\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(supplier)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [supplier.S_SUPPKEY]\n" + " β”‚ β”‚ β”‚ β”œβ”€ columns: [s_suppkey s_nationkey]\n" + @@ -1073,18 +1020,16 @@ order by " β”œβ”€ LookupJoin\n" + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (lineitem.l_orderkey = orders.o_orderkey)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((lineitem.l_shipdate >= '1995-01-01') AND (lineitem.l_shipdate <= '1996-12-31'))\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(lineitem)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [l_orderkey l_suppkey l_extendedprice l_discount l_shipdate]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(orders)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [o_orderkey o_custkey]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: orders\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [o_orderkey o_custkey]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ ((lineitem.l_shipdate >= '1995-01-01') AND (lineitem.l_shipdate <= '1996-12-31'))\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(lineitem)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [l_orderkey l_suppkey l_extendedprice l_discount l_shipdate]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: orders.o_orderkey\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(supplier)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [supplier.S_SUPPKEY]\n" + " β”‚ β”‚ β”‚ β”œβ”€ columns: [s_suppkey s_nationkey]\n" + @@ -1420,81 +1365,57 @@ order by " β”œβ”€ colSet: (54-56)\n" + " β”œβ”€ tableId: 7\n" + " └─ Project\n" + - " β”œβ”€ columns: [nation.n_name:16!null->nation:0, extract('YEAR' from orders.o_orderdate)->o_year:0, ((lineitem.l_extendedprice:9!null * (1 (tinyint) - lineitem.l_discount:10!null)) - (partsupp.ps_supplycost:4!null * lineitem.l_quantity:8!null))->amount:0]\n" + + " β”œβ”€ columns: [nation.n_name:16!null->nation:0, extract('YEAR' from orders.o_orderdate)->o_year:0, ((lineitem.l_extendedprice:6!null * (1 (tinyint) - lineitem.l_discount:7!null)) - (partsupp.ps_supplycost:10!null * lineitem.l_quantity:5!null))->amount:0]\n" + " └─ LookupJoin\n" + - " β”œβ”€ HashJoin\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_partkey:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ lineitem.l_partkey:6!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ partsupp.ps_suppkey:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ lineitem.l_suppkey:7!null\n" + - " β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ partsupp.ps_partkey:2!null\n" + - " β”‚ β”‚ β”‚ └─ lineitem.l_partkey:6!null\n" + - " β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”œβ”€ supplier.s_suppkey:13!null\n" + - " β”‚ β”‚ └─ partsupp.ps_suppkey:3!null\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ part.p_partkey:0!null\n" + - " β”‚ β”‚ β”‚ └─ partsupp.ps_partkey:2!null\n" + - " β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”œβ”€ part.p_name LIKE '%green%'\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(part)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [part.P_PARTKEY]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-9)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ part.p_partkey:13!null\n" + + " β”‚ β”‚ └─ partsupp.ps_partkey:8!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: orders\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [o_orderkey o_orderdate]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (38-46)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ tableId: 5\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(lineitem)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [orders.o_orderkey:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (17-32)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: lineitem\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [l_orderkey l_partkey l_suppkey l_quantity l_extendedprice l_discount]\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(partsupp)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [lineitem.l_partkey:3!null lineitem.l_suppkey:4!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (33-37)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 4\n" + " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: part\n" + - " β”‚ β”‚ β”‚ └─ columns: [p_partkey p_name]\n" + - " β”‚ β”‚ └─ IndexedTableAccess(partsupp)\n" + - " β”‚ β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (33-37)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 4\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: partsupp\n" + + " β”‚ β”‚ β”‚ └─ columns: [ps_partkey ps_suppkey ps_supplycost]\n" + + " β”‚ β”‚ └─ IndexedTableAccess(supplier)\n" + + " β”‚ β”‚ β”œβ”€ index: [supplier.S_SUPPKEY]\n" + + " β”‚ β”‚ β”œβ”€ keys: [lineitem.l_suppkey:4!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (10-16)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 2\n" + " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: partsupp\n" + - " β”‚ β”‚ └─ columns: [ps_partkey ps_suppkey ps_supplycost]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: TUPLE(part.p_partkey:0!null, partsupp.ps_suppkey:3!null, partsupp.ps_partkey:2!null, partsupp.ps_suppkey:3!null)\n" + - " β”‚ β”œβ”€ right-key: TUPLE(lineitem.l_partkey:1!null, lineitem.l_suppkey:2!null, lineitem.l_partkey:1!null, supplier.s_suppkey:8!null)\n" + - " β”‚ └─ LookupJoin\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ lineitem.l_orderkey:5!null\n" + - " β”‚ β”‚ β”‚ └─ orders.o_orderkey:11!null\n" + - " β”‚ β”‚ β”œβ”€ IndexedTableAccess(lineitem)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (17-32)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: lineitem\n" + - " β”‚ β”‚ β”‚ └─ columns: [l_orderkey l_partkey l_suppkey l_quantity l_extendedprice l_discount]\n" + - " β”‚ β”‚ └─ IndexedTableAccess(orders)\n" + - " β”‚ β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (38-46)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 5\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: orders\n" + - " β”‚ β”‚ └─ columns: [o_orderkey o_orderdate]\n" + - " β”‚ └─ IndexedTableAccess(supplier)\n" + - " β”‚ β”œβ”€ index: [supplier.S_SUPPKEY]\n" + - " β”‚ β”œβ”€ keys: [lineitem.l_suppkey:7!null]\n" + - " β”‚ β”œβ”€ colSet: (10-16)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: supplier\n" + - " β”‚ └─ columns: [s_suppkey s_nationkey]\n" + + " β”‚ β”‚ β”œβ”€ name: supplier\n" + + " β”‚ β”‚ └─ columns: [s_suppkey s_nationkey]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ part.p_name LIKE '%green%'\n" + + " β”‚ └─ IndexedTableAccess(part)\n" + + " β”‚ β”œβ”€ index: [part.P_PARTKEY]\n" + + " β”‚ β”œβ”€ keys: [lineitem.l_partkey:3!null]\n" + + " β”‚ β”œβ”€ colSet: (1-9)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: part\n" + + " β”‚ └─ columns: [p_partkey p_name]\n" + " └─ IndexedTableAccess(nation)\n" + " β”œβ”€ index: [nation.N_NATIONKEY]\n" + - " β”œβ”€ keys: [supplier.s_nationkey:14!null]\n" + + " β”œβ”€ keys: [supplier.s_nationkey:12!null]\n" + " β”œβ”€ colSet: (47-50)\n" + " β”œβ”€ tableId: 6\n" + " └─ Table\n" + @@ -1515,38 +1436,32 @@ order by " └─ Project\n" + " β”œβ”€ columns: [nation.n_name as nation, extract('YEAR' from orders.o_orderdate) as o_year, ((lineitem.l_extendedprice * (1 - lineitem.l_discount)) - (partsupp.ps_supplycost * lineitem.l_quantity)) as amount]\n" + " └─ LookupJoin\n" + - " β”œβ”€ HashJoin\n" + - " β”‚ β”œβ”€ ((((part.p_partkey = lineitem.l_partkey) AND (partsupp.ps_suppkey = lineitem.l_suppkey)) AND (partsupp.ps_partkey = lineitem.l_partkey)) AND (supplier.s_suppkey = partsupp.ps_suppkey))\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (part.p_partkey = partsupp.ps_partkey)\n" + - " β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”œβ”€ part.p_name LIKE '%green%'\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(part)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [part.P_PARTKEY]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [p_partkey p_name]\n" + - " β”‚ β”‚ └─ IndexedTableAccess(partsupp)\n" + - " β”‚ β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [ps_partkey ps_suppkey ps_supplycost]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (part.p_partkey, partsupp.ps_suppkey, partsupp.ps_partkey, partsupp.ps_suppkey)\n" + - " β”‚ β”œβ”€ right-key: (lineitem.l_partkey, lineitem.l_suppkey, lineitem.l_partkey, supplier.s_suppkey)\n" + - " β”‚ └─ LookupJoin\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (lineitem.l_orderkey = orders.o_orderkey)\n" + - " β”‚ β”‚ β”œβ”€ IndexedTableAccess(lineitem)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [l_orderkey l_partkey l_suppkey l_quantity l_extendedprice l_discount]\n" + - " β”‚ β”‚ └─ IndexedTableAccess(orders)\n" + - " β”‚ β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [o_orderkey o_orderdate]\n" + - " β”‚ └─ IndexedTableAccess(supplier)\n" + - " β”‚ β”œβ”€ index: [supplier.S_SUPPKEY]\n" + - " β”‚ β”œβ”€ columns: [s_suppkey s_nationkey]\n" + - " β”‚ └─ keys: lineitem.l_suppkey\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (part.p_partkey = partsupp.ps_partkey)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: orders\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [o_orderkey o_orderdate]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(lineitem)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [l_orderkey l_partkey l_suppkey l_quantity l_extendedprice l_discount]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: orders.o_orderkey\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(partsupp)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [ps_partkey ps_suppkey ps_supplycost]\n" + + " β”‚ β”‚ β”‚ └─ keys: lineitem.l_partkey, lineitem.l_suppkey\n" + + " β”‚ β”‚ └─ IndexedTableAccess(supplier)\n" + + " β”‚ β”‚ β”œβ”€ index: [supplier.S_SUPPKEY]\n" + + " β”‚ β”‚ β”œβ”€ columns: [s_suppkey s_nationkey]\n" + + " β”‚ β”‚ └─ keys: lineitem.l_suppkey\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ part.p_name LIKE '%green%'\n" + + " β”‚ └─ IndexedTableAccess(part)\n" + + " β”‚ β”œβ”€ index: [part.P_PARTKEY]\n" + + " β”‚ β”œβ”€ columns: [p_partkey p_name]\n" + + " β”‚ └─ keys: lineitem.l_partkey\n" + " └─ IndexedTableAccess(nation)\n" + " β”œβ”€ index: [nation.N_NATIONKEY]\n" + " β”œβ”€ columns: [n_nationkey n_name]\n" + @@ -1566,38 +1481,32 @@ order by " └─ Project\n" + " β”œβ”€ columns: [nation.n_name as nation, extract('YEAR' from orders.o_orderdate) as o_year, ((lineitem.l_extendedprice * (1 - lineitem.l_discount)) - (partsupp.ps_supplycost * lineitem.l_quantity)) as amount]\n" + " └─ LookupJoin\n" + - " β”œβ”€ HashJoin\n" + - " β”‚ β”œβ”€ ((((part.p_partkey = lineitem.l_partkey) AND (partsupp.ps_suppkey = lineitem.l_suppkey)) AND (partsupp.ps_partkey = lineitem.l_partkey)) AND (supplier.s_suppkey = partsupp.ps_suppkey))\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (part.p_partkey = partsupp.ps_partkey)\n" + - " β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”œβ”€ part.p_name LIKE '%green%'\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(part)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [part.P_PARTKEY]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [p_partkey p_name]\n" + - " β”‚ β”‚ └─ IndexedTableAccess(partsupp)\n" + - " β”‚ β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [ps_partkey ps_suppkey ps_supplycost]\n" + - " β”‚ └─ HashLookup\n" + - " β”‚ β”œβ”€ left-key: (part.p_partkey, partsupp.ps_suppkey, partsupp.ps_partkey, partsupp.ps_suppkey)\n" + - " β”‚ β”œβ”€ right-key: (lineitem.l_partkey, lineitem.l_suppkey, lineitem.l_partkey, supplier.s_suppkey)\n" + - " β”‚ └─ LookupJoin\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (lineitem.l_orderkey = orders.o_orderkey)\n" + - " β”‚ β”‚ β”œβ”€ IndexedTableAccess(lineitem)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ └─ columns: [l_orderkey l_partkey l_suppkey l_quantity l_extendedprice l_discount]\n" + - " β”‚ β”‚ └─ IndexedTableAccess(orders)\n" + - " β”‚ β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [o_orderkey o_orderdate]\n" + - " β”‚ └─ IndexedTableAccess(supplier)\n" + - " β”‚ β”œβ”€ index: [supplier.S_SUPPKEY]\n" + - " β”‚ β”œβ”€ columns: [s_suppkey s_nationkey]\n" + - " β”‚ └─ keys: lineitem.l_suppkey\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ (part.p_partkey = partsupp.ps_partkey)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: orders\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [o_orderkey o_orderdate]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(lineitem)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ columns: [l_orderkey l_partkey l_suppkey l_quantity l_extendedprice l_discount]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: orders.o_orderkey\n" + + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(partsupp)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [ps_partkey ps_suppkey ps_supplycost]\n" + + " β”‚ β”‚ β”‚ └─ keys: lineitem.l_partkey, lineitem.l_suppkey\n" + + " β”‚ β”‚ └─ IndexedTableAccess(supplier)\n" + + " β”‚ β”‚ β”œβ”€ index: [supplier.S_SUPPKEY]\n" + + " β”‚ β”‚ β”œβ”€ columns: [s_suppkey s_nationkey]\n" + + " β”‚ β”‚ └─ keys: lineitem.l_suppkey\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ part.p_name LIKE '%green%'\n" + + " β”‚ └─ IndexedTableAccess(part)\n" + + " β”‚ β”œβ”€ index: [part.P_PARTKEY]\n" + + " β”‚ β”œβ”€ columns: [p_partkey p_name]\n" + + " β”‚ └─ keys: lineitem.l_partkey\n" + " └─ IndexedTableAccess(nation)\n" + " β”œβ”€ index: [nation.N_NATIONKEY]\n" + " β”œβ”€ columns: [n_nationkey n_name]\n" + @@ -1644,14 +1553,11 @@ order by " └─ Project\n" + " β”œβ”€ columns: [sum((lineitem.l_extendedprice * (1 - lineitem.l_discount))):0!null, customer.c_custkey:1!null, customer.c_name:2!null, customer.c_acctbal:3!null, nation.n_name:4!null, customer.c_address:5!null, customer.c_phone:6!null, customer.c_comment:7!null, sum((lineitem.l_extendedprice * (1 - lineitem.l_discount))):0!null->revenue:0]\n" + " └─ GroupBy\n" + - " β”œβ”€ select: SUM((lineitem.l_extendedprice:4!null * (1 (tinyint) - lineitem.l_discount:5!null))), customer.c_custkey:7!null, customer.c_name:8!null, customer.c_acctbal:12!null, nation.n_name:15!null, customer.c_address:9!null, customer.c_phone:11!null, customer.c_comment:13!null\n" + - " β”œβ”€ group: customer.c_custkey:7!null, customer.c_name:8!null, customer.c_acctbal:12!null, customer.c_phone:11!null, nation.n_name:15!null, customer.c_address:9!null, customer.c_comment:13!null\n" + + " β”œβ”€ select: SUM((lineitem.l_extendedprice:11!null * (1 (tinyint) - lineitem.l_discount:12!null))), customer.c_custkey:3!null, customer.c_name:4!null, customer.c_acctbal:8!null, nation.n_name:15!null, customer.c_address:5!null, customer.c_phone:7!null, customer.c_comment:9!null\n" + + " β”œβ”€ group: customer.c_custkey:3!null, customer.c_name:4!null, customer.c_acctbal:8!null, customer.c_phone:7!null, nation.n_name:15!null, customer.c_address:5!null, customer.c_comment:9!null\n" + " └─ LookupJoin\n" + " β”œβ”€ LookupJoin\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ orders.o_orderkey:0!null\n" + - " β”‚ β”‚ β”‚ └─ lineitem.l_orderkey:3!null\n" + + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + @@ -1660,37 +1566,33 @@ order by " β”‚ β”‚ β”‚ β”‚ └─ LessThan\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ orders.o_orderdate:2!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ 1994-01-01 00:00:00 +0000 UTC (datetime)\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(orders)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (9-17)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + " β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”œβ”€ name: orders\n" + " β”‚ β”‚ β”‚ └─ columns: [o_orderkey o_custkey o_orderdate]\n" + - " β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ lineitem.l_returnflag:3!null\n" + - " β”‚ β”‚ β”‚ └─ R (longtext)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(lineitem)\n" + - " β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (18-33)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: lineitem\n" + - " β”‚ β”‚ └─ columns: [l_orderkey l_extendedprice l_discount l_returnflag]\n" + - " β”‚ └─ IndexedTableAccess(customer)\n" + - " β”‚ β”œβ”€ index: [customer.C_CUSTKEY]\n" + - " β”‚ β”œβ”€ keys: [orders.o_custkey:1!null]\n" + - " β”‚ β”œβ”€ colSet: (1-8)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: customer\n" + - " β”‚ └─ columns: [c_custkey c_name c_address c_nationkey c_phone c_acctbal c_comment]\n" + + " β”‚ β”‚ └─ IndexedTableAccess(customer)\n" + + " β”‚ β”‚ β”œβ”€ index: [customer.C_CUSTKEY]\n" + + " β”‚ β”‚ β”œβ”€ keys: [orders.o_custkey:1!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (1-8)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: customer\n" + + " β”‚ β”‚ └─ columns: [c_custkey c_name c_address c_nationkey c_phone c_acctbal c_comment]\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”œβ”€ lineitem.l_returnflag:3!null\n" + + " β”‚ β”‚ └─ R (longtext)\n" + + " β”‚ └─ IndexedTableAccess(lineitem)\n" + + " β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + + " β”‚ β”œβ”€ keys: [orders.o_orderkey:0!null]\n" + + " β”‚ β”œβ”€ colSet: (18-33)\n" + + " β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: lineitem\n" + + " β”‚ └─ columns: [l_orderkey l_extendedprice l_discount l_returnflag]\n" + " └─ IndexedTableAccess(nation)\n" + " β”œβ”€ index: [nation.N_NATIONKEY]\n" + - " β”œβ”€ keys: [customer.c_nationkey:10!null]\n" + + " β”œβ”€ keys: [customer.c_nationkey:6!null]\n" + " β”œβ”€ colSet: (34-37)\n" + " β”œβ”€ tableId: 4\n" + " └─ Table\n" + @@ -1707,24 +1609,22 @@ order by " β”œβ”€ Grouping(customer.c_custkey, customer.c_name, customer.c_acctbal, customer.c_phone, nation.n_name, customer.c_address, customer.c_comment)\n" + " └─ LookupJoin\n" + " β”œβ”€ LookupJoin\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (orders.o_orderkey = lineitem.l_orderkey)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”‚ β”œβ”€ ((orders.o_orderdate >= '1993-10-01') AND (orders.o_orderdate < 1994-01-01 00:00:00 +0000 UTC))\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(orders)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: orders\n" + " β”‚ β”‚ β”‚ └─ columns: [o_orderkey o_custkey o_orderdate]\n" + - " β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”œβ”€ (lineitem.l_returnflag = 'R')\n" + - " β”‚ β”‚ └─ IndexedTableAccess(lineitem)\n" + - " β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [l_orderkey l_extendedprice l_discount l_returnflag]\n" + - " β”‚ └─ IndexedTableAccess(customer)\n" + - " β”‚ β”œβ”€ index: [customer.C_CUSTKEY]\n" + - " β”‚ β”œβ”€ columns: [c_custkey c_name c_address c_nationkey c_phone c_acctbal c_comment]\n" + - " β”‚ └─ keys: orders.o_custkey\n" + + " β”‚ β”‚ └─ IndexedTableAccess(customer)\n" + + " β”‚ β”‚ β”œβ”€ index: [customer.C_CUSTKEY]\n" + + " β”‚ β”‚ β”œβ”€ columns: [c_custkey c_name c_address c_nationkey c_phone c_acctbal c_comment]\n" + + " β”‚ β”‚ └─ keys: orders.o_custkey\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (lineitem.l_returnflag = 'R')\n" + + " β”‚ └─ IndexedTableAccess(lineitem)\n" + + " β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + + " β”‚ β”œβ”€ columns: [l_orderkey l_extendedprice l_discount l_returnflag]\n" + + " β”‚ └─ keys: orders.o_orderkey\n" + " └─ IndexedTableAccess(nation)\n" + " β”œβ”€ index: [nation.N_NATIONKEY]\n" + " β”œβ”€ columns: [n_nationkey n_name]\n" + @@ -1740,24 +1640,22 @@ order by " β”œβ”€ Grouping(customer.c_custkey, customer.c_name, customer.c_acctbal, customer.c_phone, nation.n_name, customer.c_address, customer.c_comment)\n" + " └─ LookupJoin\n" + " β”œβ”€ LookupJoin\n" + - " β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (orders.o_orderkey = lineitem.l_orderkey)\n" + + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ Filter\n" + " β”‚ β”‚ β”‚ β”œβ”€ ((orders.o_orderdate >= '1993-10-01') AND (orders.o_orderdate < 1994-01-01 00:00:00 +0000 UTC))\n" + - " β”‚ β”‚ β”‚ └─ IndexedTableAccess(orders)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: orders\n" + " β”‚ β”‚ β”‚ └─ columns: [o_orderkey o_custkey o_orderdate]\n" + - " β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”œβ”€ (lineitem.l_returnflag = 'R')\n" + - " β”‚ β”‚ └─ IndexedTableAccess(lineitem)\n" + - " β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”‚ β”‚ β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ columns: [l_orderkey l_extendedprice l_discount l_returnflag]\n" + - " β”‚ └─ IndexedTableAccess(customer)\n" + - " β”‚ β”œβ”€ index: [customer.C_CUSTKEY]\n" + - " β”‚ β”œβ”€ columns: [c_custkey c_name c_address c_nationkey c_phone c_acctbal c_comment]\n" + - " β”‚ └─ keys: orders.o_custkey\n" + + " β”‚ β”‚ └─ IndexedTableAccess(customer)\n" + + " β”‚ β”‚ β”œβ”€ index: [customer.C_CUSTKEY]\n" + + " β”‚ β”‚ β”œβ”€ columns: [c_custkey c_name c_address c_nationkey c_phone c_acctbal c_comment]\n" + + " β”‚ β”‚ └─ keys: orders.o_custkey\n" + + " β”‚ └─ Filter\n" + + " β”‚ β”œβ”€ (lineitem.l_returnflag = 'R')\n" + + " β”‚ └─ IndexedTableAccess(lineitem)\n" + + " β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + + " β”‚ β”œβ”€ columns: [l_orderkey l_extendedprice l_discount l_returnflag]\n" + + " β”‚ └─ keys: orders.o_orderkey\n" + " └─ IndexedTableAccess(nation)\n" + " β”œβ”€ index: [nation.N_NATIONKEY]\n" + " β”œβ”€ columns: [n_nationkey n_name]\n" + @@ -2000,15 +1898,8 @@ order by " β”‚ └─ 2-HIGH (longtext)\n" + " β”‚ THEN 1 (tinyint) ELSE 0 (tinyint) END), lineitem.l_shipmode:6!null\n" + " β”œβ”€ group: lineitem.l_shipmode:6!null\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: Eq\n" + - " β”‚ β”œβ”€ orders.o_orderkey:0!null\n" + - " β”‚ └─ lineitem.l_orderkey:2!null\n" + - " β”œβ”€ IndexedTableAccess(orders)\n" + - " β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (1-9)\n" + - " β”‚ β”œβ”€ tableId: 1\n" + + " └─ LookupJoin\n" + + " β”œβ”€ ProcessTable\n" + " β”‚ └─ Table\n" + " β”‚ β”œβ”€ name: orders\n" + " β”‚ └─ columns: [o_orderkey o_orderpriority]\n" + @@ -2034,7 +1925,7 @@ order by " β”‚ └─ 1995-01-01 00:00:00 +0000 UTC (datetime)\n" + " └─ IndexedTableAccess(lineitem)\n" + " β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”œβ”€ keys: [orders.o_orderkey:0!null]\n" + " β”œβ”€ colSet: (10-25)\n" + " β”œβ”€ tableId: 2\n" + " └─ Table\n" + @@ -2047,18 +1938,16 @@ order by " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(SUM(CASE WHEN ((NOT((orders.o_orderpriority = '1-URGENT'))) AND (NOT((orders.o_orderpriority = '2-HIGH')))) THEN 1 ELSE 0 END), SUM(CASE WHEN ((orders.o_orderpriority = '1-URGENT') OR (orders.o_orderpriority = '2-HIGH')) THEN 1 ELSE 0 END), lineitem.l_shipmode)\n" + " β”œβ”€ Grouping(lineitem.l_shipmode)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (orders.o_orderkey = lineitem.l_orderkey)\n" + - " β”œβ”€ IndexedTableAccess(orders)\n" + - " β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: orders\n" + " β”‚ └─ columns: [o_orderkey o_orderpriority]\n" + " └─ Filter\n" + " β”œβ”€ (((((lineitem.l_shipmode HASH IN ('MAIL', 'SHIP')) AND (lineitem.l_commitdate < lineitem.l_receiptdate)) AND (lineitem.l_shipdate < lineitem.l_commitdate)) AND (lineitem.l_receiptdate >= '1994-01-01')) AND (lineitem.l_receiptdate < 1995-01-01 00:00:00 +0000 UTC))\n" + " └─ IndexedTableAccess(lineitem)\n" + " β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [l_orderkey l_shipdate l_commitdate l_receiptdate l_shipmode]\n" + + " β”œβ”€ columns: [l_orderkey l_shipdate l_commitdate l_receiptdate l_shipmode]\n" + + " └─ keys: orders.o_orderkey\n" + "", ExpectedAnalysis: "Project\n" + " β”œβ”€ columns: [lineitem.l_shipmode, sum(case when ((orders.o_orderpriority = '1-urgent') or (orders.o_orderpriority = '2-high')) then 1 else 0 end) as high_line_count, sum(case when ((not((orders.o_orderpriority = '1-urgent'))) and (not((orders.o_orderpriority = '2-high')))) then 1 else 0 end) as low_line_count]\n" + @@ -2066,18 +1955,16 @@ order by " └─ GroupBy\n" + " β”œβ”€ SelectedExprs(SUM(CASE WHEN ((NOT((orders.o_orderpriority = '1-URGENT'))) AND (NOT((orders.o_orderpriority = '2-HIGH')))) THEN 1 ELSE 0 END), SUM(CASE WHEN ((orders.o_orderpriority = '1-URGENT') OR (orders.o_orderpriority = '2-HIGH')) THEN 1 ELSE 0 END), lineitem.l_shipmode)\n" + " β”œβ”€ Grouping(lineitem.l_shipmode)\n" + - " └─ MergeJoin\n" + - " β”œβ”€ cmp: (orders.o_orderkey = lineitem.l_orderkey)\n" + - " β”œβ”€ IndexedTableAccess(orders)\n" + - " β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”œβ”€ filters: [{[NULL, ∞)}]\n" + + " └─ LookupJoin\n" + + " β”œβ”€ Table\n" + + " β”‚ β”œβ”€ name: orders\n" + " β”‚ └─ columns: [o_orderkey o_orderpriority]\n" + " └─ Filter\n" + " β”œβ”€ (((((lineitem.l_shipmode HASH IN ('MAIL', 'SHIP')) AND (lineitem.l_commitdate < lineitem.l_receiptdate)) AND (lineitem.l_shipdate < lineitem.l_commitdate)) AND (lineitem.l_receiptdate >= '1994-01-01')) AND (lineitem.l_receiptdate < 1995-01-01 00:00:00 +0000 UTC))\n" + " └─ IndexedTableAccess(lineitem)\n" + " β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”œβ”€ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " └─ columns: [l_orderkey l_shipdate l_commitdate l_receiptdate l_shipmode]\n" + + " β”œβ”€ columns: [l_orderkey l_shipdate l_commitdate l_receiptdate l_shipmode]\n" + + " └─ keys: orders.o_orderkey\n" + "", }, { @@ -2516,54 +2403,47 @@ order by " β”œβ”€ select: COUNTDISTINCT([partsupp.ps_suppkey]), part.p_brand:8!null, part.p_type:9!null, part.p_size:10!null\n" + " β”œβ”€ group: part.p_brand:8!null, part.p_type:9!null, part.p_size:10!null\n" + " └─ Project\n" + - " β”œβ”€ columns: [partsupp.PS_PARTKEY:0!null, partsupp.PS_SUPPKEY:1!null, partsupp.PS_AVAILQTY:2!null, partsupp.PS_SUPPLYCOST:3!null, partsupp.PS_COMMENT:4!null, part.P_PARTKEY:5!null, part.P_NAME:6!null, part.P_MFGR:7!null, part.P_BRAND:8!null, part.P_TYPE:9!null, part.P_SIZE:10!null, part.P_CONTAINER:11!null, part.P_RETAILPRICE:12!null, part.P_COMMENT:13!null]\n" + + " β”œβ”€ columns: [partsupp.PS_PARTKEY:9!null, partsupp.PS_SUPPKEY:10!null, partsupp.PS_AVAILQTY:11!null, partsupp.PS_SUPPLYCOST:12!null, partsupp.PS_COMMENT:13!null, part.P_PARTKEY:0!null, part.P_NAME:1!null, part.P_MFGR:2!null, part.P_BRAND:3!null, part.P_TYPE:4!null, part.P_SIZE:5!null, part.P_CONTAINER:6!null, part.P_RETAILPRICE:7!null, part.P_COMMENT:8!null]\n" + " └─ Filter\n" + " β”œβ”€ supplier.s_suppkey:14!null IS NULL\n" + " └─ LeftOuterLookupJoin\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”œβ”€ partsupp.ps_partkey:0!null\n" + - " β”‚ β”‚ └─ part.p_partkey:5!null\n" + - " β”‚ β”œβ”€ IndexedTableAccess(partsupp)\n" + - " β”‚ β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (1-5)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 1\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: partsupp\n" + - " β”‚ β”‚ └─ columns: [ps_partkey ps_suppkey ps_availqty ps_supplycost ps_comment]\n" + - " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_brand:3!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Brand#45 (longtext)\n" + - " β”‚ β”‚ β”‚ └─ Or\n" + - " β”‚ β”‚ β”‚ β”œβ”€ LessThan\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_type:4!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ MEDIUM POLISHED (longtext)\n" + - " β”‚ β”‚ β”‚ └─ GreaterThan\n" + - " β”‚ β”‚ β”‚ β”œβ”€ part.p_type:4!null\n" + - " β”‚ β”‚ β”‚ └─ MEDIUM POLISHEDΓΏ (longtext)\n" + - " β”‚ β”‚ └─ HashIn\n" + - " β”‚ β”‚ β”œβ”€ part.p_size:5!null\n" + - " β”‚ β”‚ └─ TUPLE(49 (tinyint), 14 (tinyint), 23 (tinyint), 45 (tinyint), 19 (tinyint), 3 (tinyint), 36 (tinyint), 9 (tinyint))\n" + - " β”‚ └─ IndexedTableAccess(part)\n" + - " β”‚ β”œβ”€ index: [part.P_PARTKEY]\n" + - " β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”œβ”€ colSet: (6-14)\n" + - " β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ └─ Table\n" + - " β”‚ β”œβ”€ name: part\n" + - " β”‚ └─ columns: [p_partkey p_name p_mfgr p_brand p_type p_size p_container p_retailprice p_comment]\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ NOT\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_brand:3!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Brand#45 (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Or\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ LessThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_type:4!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ MEDIUM POLISHED (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_type:4!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ MEDIUM POLISHEDΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ └─ HashIn\n" + + " β”‚ β”‚ β”‚ β”œβ”€ part.p_size:5!null\n" + + " β”‚ β”‚ β”‚ └─ TUPLE(49 (tinyint), 14 (tinyint), 23 (tinyint), 45 (tinyint), 19 (tinyint), 3 (tinyint), 36 (tinyint), 9 (tinyint))\n" + + " β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: part\n" + + " β”‚ β”‚ └─ columns: [p_partkey p_name p_mfgr p_brand p_type p_size p_container p_retailprice p_comment]\n" + + " β”‚ └─ IndexedTableAccess(partsupp)\n" + + " β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + + " β”‚ β”œβ”€ keys: [part.p_partkey:0!null]\n" + + " β”‚ β”œβ”€ colSet: (1-5)\n" + + " β”‚ β”œβ”€ tableId: 1\n" + + " β”‚ └─ Table\n" + + " β”‚ β”œβ”€ name: partsupp\n" + + " β”‚ └─ columns: [ps_partkey ps_suppkey ps_availqty ps_supplycost ps_comment]\n" + " └─ Project\n" + " β”œβ”€ columns: [supplier.s_suppkey:0!null]\n" + " └─ Filter\n" + " β”œβ”€ supplier.s_comment LIKE '%Customer%Complaints%'\n" + " └─ IndexedTableAccess(supplier)\n" + " β”œβ”€ index: [supplier.S_SUPPKEY]\n" + - " β”œβ”€ keys: [partsupp.ps_suppkey:1!null]\n" + + " β”œβ”€ keys: [partsupp.ps_suppkey:10!null]\n" + " β”œβ”€ colSet: (15-21)\n" + " β”œβ”€ tableId: 3\n" + " └─ Table\n" + @@ -2583,16 +2463,14 @@ order by " └─ Filter\n" + " β”œβ”€ supplier.s_suppkey IS NULL\n" + " └─ LeftOuterLookupJoin\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (partsupp.ps_partkey = part.p_partkey)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(partsupp)\n" + - " β”‚ β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ (((NOT((part.p_brand = 'Brand#45'))) AND ((part.p_type < 'MEDIUM POLISHED') OR (part.p_type > 'MEDIUM POLISHEDΓΏ'))) AND (part.p_size HASH IN (49, 14, 23, 45, 19, 3, 36, 9)))\n" + - " β”‚ └─ IndexedTableAccess(part)\n" + - " β”‚ β”œβ”€ index: [part.P_PARTKEY]\n" + - " β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (((NOT((part.p_brand = 'Brand#45'))) AND ((part.p_type < 'MEDIUM POLISHED') OR (part.p_type > 'MEDIUM POLISHEDΓΏ'))) AND (part.p_size HASH IN (49, 14, 23, 45, 19, 3, 36, 9)))\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ └─ name: part\n" + + " β”‚ └─ IndexedTableAccess(partsupp)\n" + + " β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + + " β”‚ └─ keys: part.p_partkey\n" + " └─ Project\n" + " β”œβ”€ columns: [supplier.s_suppkey]\n" + " └─ Filter\n" + @@ -2614,16 +2492,14 @@ order by " └─ Filter\n" + " β”œβ”€ supplier.s_suppkey IS NULL\n" + " └─ LeftOuterLookupJoin\n" + - " β”œβ”€ MergeJoin\n" + - " β”‚ β”œβ”€ cmp: (partsupp.ps_partkey = part.p_partkey)\n" + - " β”‚ β”œβ”€ IndexedTableAccess(partsupp)\n" + - " β”‚ β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ └─ Filter\n" + - " β”‚ β”œβ”€ (((NOT((part.p_brand = 'Brand#45'))) AND ((part.p_type < 'MEDIUM POLISHED') OR (part.p_type > 'MEDIUM POLISHEDΓΏ'))) AND (part.p_size HASH IN (49, 14, 23, 45, 19, 3, 36, 9)))\n" + - " β”‚ └─ IndexedTableAccess(part)\n" + - " β”‚ β”œβ”€ index: [part.P_PARTKEY]\n" + - " β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”œβ”€ LookupJoin\n" + + " β”‚ β”œβ”€ Filter\n" + + " β”‚ β”‚ β”œβ”€ (((NOT((part.p_brand = 'Brand#45'))) AND ((part.p_type < 'MEDIUM POLISHED') OR (part.p_type > 'MEDIUM POLISHEDΓΏ'))) AND (part.p_size HASH IN (49, 14, 23, 45, 19, 3, 36, 9)))\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ └─ name: part\n" + + " β”‚ └─ IndexedTableAccess(partsupp)\n" + + " β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + + " β”‚ └─ keys: part.p_partkey\n" + " └─ Project\n" + " β”œβ”€ columns: [supplier.s_suppkey]\n" + " └─ Filter\n" + @@ -3178,95 +3054,90 @@ order by " β”‚ β”‚ └─ partsupp.ps_suppkey:0!null\n" + " β”‚ β”œβ”€ Distinct\n" + " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [partsupp.ps_suppkey:1!null]\n" + + " β”‚ β”‚ β”œβ”€ columns: [partsupp.ps_suppkey:2!null]\n" + " β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”‚ β”œβ”€ partsupp.ps_availqty:2!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ partsupp.ps_availqty:3!null\n" + " β”‚ β”‚ β”‚ └─ Subquery\n" + " β”‚ β”‚ β”‚ β”œβ”€ cacheable: false\n" + " β”‚ β”‚ β”‚ β”œβ”€ alias-string: select 0.5 * sum(l_quantity) from lineitem where l_partkey = ps_partkey and l_suppkey = ps_suppkey and l_shipdate >= '1994-01-01' and l_shipdate < '1994-01-01' + interval '1' year\n" + " β”‚ β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”‚ β”œβ”€ columns: [(0.5 (decimal(2,1)) * sum(lineitem.l_quantity):5!null)->0.5 * sum(l_quantity):0]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [(0.5 (decimal(2,1)) * sum(lineitem.l_quantity):6!null)->0.5 * sum(l_quantity):0]\n" + " β”‚ β”‚ β”‚ └─ GroupBy\n" + - " β”‚ β”‚ β”‚ β”œβ”€ select: SUM(lineitem.l_quantity:7!null)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ select: SUM(lineitem.l_quantity:8!null)\n" + " β”‚ β”‚ β”‚ β”œβ”€ group: \n" + " β”‚ β”‚ β”‚ └─ Filter\n" + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lineitem.l_partkey:5!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ partsupp.ps_partkey:0!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lineitem.l_partkey:6!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ partsupp.ps_partkey:1!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lineitem.l_suppkey:6!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ partsupp.ps_suppkey:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lineitem.l_suppkey:7!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ partsupp.ps_suppkey:2!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lineitem.l_shipdate:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ lineitem.l_shipdate:9!null\n" + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ 1994-01-01 (longtext)\n" + " β”‚ β”‚ β”‚ β”‚ └─ LessThan\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ lineitem.l_shipdate:8!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ lineitem.l_shipdate:9!null\n" + " β”‚ β”‚ β”‚ β”‚ └─ 1995-01-01 00:00:00 +0000 UTC (datetime)\n" + " β”‚ β”‚ β”‚ └─ Table\n" + " β”‚ β”‚ β”‚ β”œβ”€ name: lineitem\n" + " β”‚ β”‚ β”‚ β”œβ”€ columns: [l_partkey l_suppkey l_quantity l_shipdate]\n" + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (26-41)\n" + " β”‚ β”‚ β”‚ └─ tableId: 5\n" + - " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [partsupp.PS_PARTKEY:0!null, partsupp.PS_SUPPKEY:1!null, partsupp.PS_AVAILQTY:2!null, partsupp.PS_SUPPLYCOST:3!null, partsupp.PS_COMMENT:4!null]\n" + - " β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”œβ”€ partsupp.ps_partkey:0!null\n" + - " β”‚ β”‚ β”‚ └─ part.p_partkey:5!null\n" + - " β”‚ β”‚ β”œβ”€ IndexedTableAccess(partsupp)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ colSet: (12-16)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”œβ”€ name: partsupp\n" + - " β”‚ β”‚ β”‚ └─ columns: [ps_partkey ps_suppkey ps_availqty ps_supplycost ps_comment]\n" + - " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [part.p_partkey:0!null]\n" + - " β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_name:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ forest (longtext)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_name:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ forestΓΏ (longtext)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_name:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ forest (longtext)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_name:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ forestΓΏ (longtext)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_name:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ forest (longtext)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_name:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ forestΓΏ (longtext)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ GreaterThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_name:1!null\n" + - " β”‚ β”‚ β”‚ β”‚ └─ forest (longtext)\n" + - " β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + - " β”‚ β”‚ β”‚ β”œβ”€ part.p_name:1!null\n" + - " β”‚ β”‚ β”‚ └─ forestΓΏ (longtext)\n" + - " β”‚ β”‚ └─ IndexedTableAccess(part)\n" + - " β”‚ β”‚ β”œβ”€ index: [part.P_PARTKEY]\n" + - " β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”œβ”€ colSet: (17-25)\n" + - " β”‚ β”‚ β”œβ”€ tableId: 4\n" + - " β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”œβ”€ name: part\n" + - " β”‚ β”‚ └─ columns: [p_partkey p_name p_mfgr p_brand p_type p_size p_container p_retailprice p_comment]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”œβ”€ partsupp.ps_partkey:1!null\n" + + " β”‚ β”‚ β”‚ └─ part.p_partkey:0!null\n" + + " β”‚ β”‚ β”œβ”€ Distinct\n" + + " β”‚ β”‚ β”‚ └─ Project\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [part.p_partkey:0!null]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ AND\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ forest (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ forestΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ forest (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ forestΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ forest (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ forestΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ GreaterThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ forest (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ LessThanOrEqual\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ part.p_name:1!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ forestΓΏ (longtext)\n" + + " β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”œβ”€ name: part\n" + + " β”‚ β”‚ β”‚ └─ columns: [p_partkey p_name p_mfgr p_brand p_type p_size p_container p_retailprice p_comment]\n" + + " β”‚ β”‚ └─ IndexedTableAccess(partsupp)\n" + + " β”‚ β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + + " β”‚ β”‚ β”œβ”€ keys: [part.p_partkey:0!null]\n" + + " β”‚ β”‚ β”œβ”€ colSet: (12-16)\n" + + " β”‚ β”‚ β”œβ”€ tableId: 3\n" + + " β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”œβ”€ name: partsupp\n" + + " β”‚ β”‚ └─ columns: [ps_partkey ps_suppkey ps_availqty ps_supplycost ps_comment]\n" + " β”‚ └─ IndexedTableAccess(supplier)\n" + " β”‚ β”œβ”€ index: [supplier.S_SUPPKEY]\n" + " β”‚ β”œβ”€ keys: [partsupp.ps_suppkey:0!null]\n" + @@ -3311,20 +3182,18 @@ order by " β”‚ β”‚ β”‚ β”œβ”€ name: lineitem\n" + " β”‚ β”‚ β”‚ └─ columns: [l_partkey l_suppkey l_quantity l_shipdate]\n" + " β”‚ β”‚ β”‚ )\n" + - " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [partsupp.PS_PARTKEY, partsupp.PS_SUPPKEY, partsupp.PS_AVAILQTY, partsupp.PS_SUPPLYCOST, partsupp.PS_COMMENT]\n" + - " β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (partsupp.ps_partkey = part.p_partkey)\n" + - " β”‚ β”‚ β”œβ”€ IndexedTableAccess(partsupp)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [part.p_partkey]\n" + - " β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”œβ”€ ((((((((part.p_name >= 'forest') AND (part.p_name <= 'forestΓΏ')) AND (part.p_name >= 'forest')) AND (part.p_name <= 'forestΓΏ')) AND (part.p_name >= 'forest')) AND (part.p_name <= 'forestΓΏ')) AND (part.p_name >= 'forest')) AND (part.p_name <= 'forestΓΏ'))\n" + - " β”‚ β”‚ └─ IndexedTableAccess(part)\n" + - " β”‚ β”‚ β”œβ”€ index: [part.P_PARTKEY]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ (partsupp.ps_partkey = part.p_partkey)\n" + + " β”‚ β”‚ β”œβ”€ Distinct\n" + + " β”‚ β”‚ β”‚ └─ Project\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [part.p_partkey]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((((((((part.p_name >= 'forest') AND (part.p_name <= 'forestΓΏ')) AND (part.p_name >= 'forest')) AND (part.p_name <= 'forestΓΏ')) AND (part.p_name >= 'forest')) AND (part.p_name <= 'forestΓΏ')) AND (part.p_name >= 'forest')) AND (part.p_name <= 'forestΓΏ'))\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ └─ name: part\n" + + " β”‚ β”‚ └─ IndexedTableAccess(partsupp)\n" + + " β”‚ β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + + " β”‚ β”‚ └─ keys: part.p_partkey\n" + " β”‚ └─ IndexedTableAccess(supplier)\n" + " β”‚ β”œβ”€ index: [supplier.S_SUPPKEY]\n" + " β”‚ └─ keys: partsupp.ps_suppkey\n" + @@ -3357,20 +3226,18 @@ order by " β”‚ β”‚ β”‚ β”œβ”€ name: lineitem\n" + " β”‚ β”‚ β”‚ └─ columns: [l_partkey l_suppkey l_quantity l_shipdate]\n" + " β”‚ β”‚ β”‚ )\n" + - " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [partsupp.PS_PARTKEY, partsupp.PS_SUPPKEY, partsupp.PS_AVAILQTY, partsupp.PS_SUPPLYCOST, partsupp.PS_COMMENT]\n" + - " β”‚ β”‚ └─ MergeJoin\n" + - " β”‚ β”‚ β”œβ”€ cmp: (partsupp.ps_partkey = part.p_partkey)\n" + - " β”‚ β”‚ β”œβ”€ IndexedTableAccess(partsupp)\n" + - " β”‚ β”‚ β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + - " β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ └─ Project\n" + - " β”‚ β”‚ β”œβ”€ columns: [part.p_partkey]\n" + - " β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”œβ”€ ((((((((part.p_name >= 'forest') AND (part.p_name <= 'forestΓΏ')) AND (part.p_name >= 'forest')) AND (part.p_name <= 'forestΓΏ')) AND (part.p_name >= 'forest')) AND (part.p_name <= 'forestΓΏ')) AND (part.p_name >= 'forest')) AND (part.p_name <= 'forestΓΏ'))\n" + - " β”‚ β”‚ └─ IndexedTableAccess(part)\n" + - " β”‚ β”‚ β”œβ”€ index: [part.P_PARTKEY]\n" + - " β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ └─ LookupJoin\n" + + " β”‚ β”‚ β”œβ”€ (partsupp.ps_partkey = part.p_partkey)\n" + + " β”‚ β”‚ β”œβ”€ Distinct\n" + + " β”‚ β”‚ β”‚ └─ Project\n" + + " β”‚ β”‚ β”‚ β”œβ”€ columns: [part.p_partkey]\n" + + " β”‚ β”‚ β”‚ └─ Filter\n" + + " β”‚ β”‚ β”‚ β”œβ”€ ((((((((part.p_name >= 'forest') AND (part.p_name <= 'forestΓΏ')) AND (part.p_name >= 'forest')) AND (part.p_name <= 'forestΓΏ')) AND (part.p_name >= 'forest')) AND (part.p_name <= 'forestΓΏ')) AND (part.p_name >= 'forest')) AND (part.p_name <= 'forestΓΏ'))\n" + + " β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ └─ name: part\n" + + " β”‚ β”‚ └─ IndexedTableAccess(partsupp)\n" + + " β”‚ β”‚ β”œβ”€ index: [partsupp.PS_PARTKEY,partsupp.PS_SUPPKEY]\n" + + " β”‚ β”‚ └─ keys: part.p_partkey\n" + " β”‚ └─ IndexedTableAccess(supplier)\n" + " β”‚ β”œβ”€ index: [supplier.S_SUPPKEY]\n" + " β”‚ └─ keys: partsupp.ps_suppkey\n" + @@ -3435,50 +3302,43 @@ order by " β”œβ”€ NOT\n" + " β”‚ └─ Eq\n" + " β”‚ β”œβ”€ l2.l_suppkey:38!null\n" + - " β”‚ └─ l1.l_suppkey:2!null\n" + + " β”‚ └─ l1.l_suppkey:11!null\n" + " β”œβ”€ AntiJoin\n" + " β”‚ β”œβ”€ AND\n" + " β”‚ β”‚ β”œβ”€ Eq\n" + " β”‚ β”‚ β”‚ β”œβ”€ l3.l_orderkey:36!null\n" + - " β”‚ β”‚ β”‚ └─ l1.l_orderkey:0!null\n" + + " β”‚ β”‚ β”‚ └─ l1.l_orderkey:9!null\n" + " β”‚ β”‚ └─ NOT\n" + " β”‚ β”‚ └─ Eq\n" + " β”‚ β”‚ β”œβ”€ l3.l_suppkey:38!null\n" + - " β”‚ β”‚ └─ l1.l_suppkey:2!null\n" + + " β”‚ β”‚ └─ l1.l_suppkey:11!null\n" + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ l1.l_orderkey:0!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ orders.o_orderkey:16!null\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThan\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ l1.l_receiptdate:12!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ l1.l_commitdate:11!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(l1)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(lineitem)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞), [NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (8-23)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: lineitem\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [l_orderkey l_partkey l_suppkey l_linenumber l_quantity l_extendedprice l_discount l_tax l_returnflag l_linestatus l_shipdate l_commitdate l_receiptdate l_shipinstruct l_shipmode l_comment]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ orders.o_orderstatus:2!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └─ F (longtext)\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ ProcessTable\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: orders\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ columns: [o_orderkey o_custkey o_orderstatus o_totalprice o_orderdate o_orderpriority o_clerk o_shippriority o_comment]\n" + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Eq\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ orders.o_orderstatus:2!null\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ F (longtext)\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(orders)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ static: [{[NULL, ∞)}]\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (24-32)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 3\n" + - " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: orders\n" + - " β”‚ β”‚ β”‚ β”‚ └─ columns: [o_orderkey o_custkey o_orderstatus o_totalprice o_orderdate o_orderpriority o_clerk o_shippriority o_comment]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ GreaterThan\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ l1.l_receiptdate:12!null\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ l1.l_commitdate:11!null\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(l1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(lineitem)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ keys: [orders.o_orderkey:0!null]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ colSet: (8-23)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ tableId: 2\n" + + " β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ name: lineitem\n" + + " β”‚ β”‚ β”‚ β”‚ └─ columns: [l_orderkey l_partkey l_suppkey l_linenumber l_quantity l_extendedprice l_discount l_tax l_returnflag l_linestatus l_shipdate l_commitdate l_receiptdate l_shipinstruct l_shipmode l_comment]\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(supplier)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [supplier.S_SUPPKEY]\n" + - " β”‚ β”‚ β”‚ β”œβ”€ keys: [l1.l_suppkey:2!null]\n" + + " β”‚ β”‚ β”‚ β”œβ”€ keys: [l1.l_suppkey:11!null]\n" + " β”‚ β”‚ β”‚ β”œβ”€ colSet: (1-7)\n" + " β”‚ β”‚ β”‚ β”œβ”€ tableId: 1\n" + " β”‚ β”‚ β”‚ └─ Table\n" + @@ -3508,7 +3368,7 @@ order by " └─ TableAlias(l2)\n" + " └─ IndexedTableAccess(lineitem)\n" + " β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”œβ”€ keys: [l1.l_orderkey:0!null]\n" + + " β”œβ”€ keys: [l1.l_orderkey:9!null]\n" + " β”œβ”€ colSet: (37-52)\n" + " β”œβ”€ tableId: 5\n" + " └─ Table\n" + @@ -3529,19 +3389,17 @@ order by " β”‚ β”œβ”€ ((l3.l_orderkey = l1.l_orderkey) AND (NOT((l3.l_suppkey = l1.l_suppkey))))\n" + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (l1.l_orderkey = orders.o_orderkey)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (l1.l_receiptdate > l1.l_commitdate)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(l1)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(lineitem)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (orders.o_orderstatus = 'F')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ name: orders\n" + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (orders.o_orderstatus = 'F')\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(orders)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (l1.l_receiptdate > l1.l_commitdate)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(l1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(lineitem)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: orders.o_orderkey\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(supplier)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [supplier.S_SUPPKEY]\n" + " β”‚ β”‚ β”‚ └─ keys: l1.l_suppkey\n" + @@ -3576,19 +3434,17 @@ order by " β”‚ β”œβ”€ ((l3.l_orderkey = l1.l_orderkey) AND (NOT((l3.l_suppkey = l1.l_suppkey))))\n" + " β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”œβ”€ LookupJoin\n" + - " β”‚ β”‚ β”‚ β”œβ”€ MergeJoin\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ cmp: (l1.l_orderkey = orders.o_orderkey)\n" + + " β”‚ β”‚ β”‚ β”œβ”€ LookupJoin\n" + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (l1.l_receiptdate > l1.l_commitdate)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ TableAlias(l1)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(lineitem)\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + - " β”‚ β”‚ β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞), [NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€ (orders.o_orderstatus = 'F')\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ Table\n" + + " β”‚ β”‚ β”‚ β”‚ β”‚ └─ name: orders\n" + " β”‚ β”‚ β”‚ β”‚ └─ Filter\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (orders.o_orderstatus = 'F')\n" + - " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(orders)\n" + - " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [orders.O_ORDERKEY]\n" + - " β”‚ β”‚ β”‚ β”‚ └─ filters: [{[NULL, ∞)}]\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ (l1.l_receiptdate > l1.l_commitdate)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ TableAlias(l1)\n" + + " β”‚ β”‚ β”‚ β”‚ └─ IndexedTableAccess(lineitem)\n" + + " β”‚ β”‚ β”‚ β”‚ β”œβ”€ index: [lineitem.L_ORDERKEY,lineitem.L_LINENUMBER]\n" + + " β”‚ β”‚ β”‚ β”‚ └─ keys: orders.o_orderkey\n" + " β”‚ β”‚ β”‚ └─ IndexedTableAccess(supplier)\n" + " β”‚ β”‚ β”‚ β”œβ”€ index: [supplier.S_SUPPKEY]\n" + " β”‚ β”‚ β”‚ └─ keys: l1.l_suppkey\n" + diff --git a/sql/memo/coster.go b/sql/memo/coster.go index 914415c25e..cc47a9aec4 100644 --- a/sql/memo/coster.go +++ b/sql/memo/coster.go @@ -94,6 +94,7 @@ func (c *coster) costRel(ctx *sql.Context, n RelExpr, s sql.StatsProvider) (floa case jp.Op.IsDegenerate(): return ((lBest*rBest)*seqIOCostFactor + (lBest*rBest)*cpuCostFactor) * degeneratePenalty, nil case jp.Op.IsHash(): + // TODO we're likely underestimating the cost of hash joins because we don't account for hash setup costs if jp.Op.IsPartial() { cost := lBest * (rBest / 2.0) * (seqIOCostFactor + cpuCostFactor) return cost * .5, nil From 5c2e4daaf37d416a9299edfddd4bf1d93c3c7753 Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Thu, 24 Jul 2025 11:49:47 -0700 Subject: [PATCH 15/21] use fanout in lookup join estimates --- sql/memo/coster.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/sql/memo/coster.go b/sql/memo/coster.go index cc47a9aec4..68076869eb 100644 --- a/sql/memo/coster.go +++ b/sql/memo/coster.go @@ -124,18 +124,19 @@ func (c *coster) costRel(ctx *sql.Context, n RelExpr, s sql.StatsProvider) (floa case jp.Op.IsLookup(): switch n := n.(type) { case *LookupJoin: - // Match rate is what proportion of rows from the right side we're expected to read + // Match rate is what proportion of left-side rows expected to match at least one row on the right matchRate := lookupJoinMatchRate(n.Lookup, n.JoinBase) // If LookupJoin is injective, then there will only be one right lookup per left row if n.Injective || matchRate == 0 { return lBest*seqIOCostFactor + lBest*randIOCostFactor, nil } - + // Fanout is the average number of right-side rows that match each left-side row + fanout := 2.0 // The total expected number of right row lookups - expectedRightRows := selfJoinCard * matchRate + expectedRightRows := lBest * matchRate * fanout // Estimate for reading each left row and each expected right row - return lBest*seqIOCostFactor + expectedRightRows*(randIOCostFactor+seqIOCostFactor), nil + return lBest*seqIOCostFactor + expectedRightRows*randIOCostFactor, nil case *ConcatJoin: return c.costConcatJoin(ctx, n, s) } From 57cb8d26ef0195dd608125c10715af4521104f26 Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Thu, 24 Jul 2025 13:08:51 -0700 Subject: [PATCH 16/21] use selfJoinCard to calculate expectedRightRows --- sql/memo/coster.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sql/memo/coster.go b/sql/memo/coster.go index 68076869eb..bcbedaea4f 100644 --- a/sql/memo/coster.go +++ b/sql/memo/coster.go @@ -129,14 +129,14 @@ func (c *coster) costRel(ctx *sql.Context, n RelExpr, s sql.StatsProvider) (floa // If LookupJoin is injective, then there will only be one right lookup per left row if n.Injective || matchRate == 0 { - return lBest*seqIOCostFactor + lBest*randIOCostFactor, nil + return lBest*seqIOCostFactor + lBest*(seqIOCostFactor+randIOCostFactor), nil } // Fanout is the average number of right-side rows that match each left-side row fanout := 2.0 // The total expected number of right row lookups - expectedRightRows := lBest * matchRate * fanout + expectedRightRows := selfJoinCard * matchRate * fanout // Estimate for reading each left row and each expected right row - return lBest*seqIOCostFactor + expectedRightRows*randIOCostFactor, nil + return lBest*seqIOCostFactor + expectedRightRows*(seqIOCostFactor+randIOCostFactor), nil case *ConcatJoin: return c.costConcatJoin(ctx, n, s) } From 86cbaca5560d0fcc08aa634bd195da17d937056b Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Thu, 24 Jul 2025 15:32:23 -0700 Subject: [PATCH 17/21] adjust fanout factor --- sql/memo/coster.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/memo/coster.go b/sql/memo/coster.go index bcbedaea4f..3400f91d98 100644 --- a/sql/memo/coster.go +++ b/sql/memo/coster.go @@ -132,7 +132,7 @@ func (c *coster) costRel(ctx *sql.Context, n RelExpr, s sql.StatsProvider) (floa return lBest*seqIOCostFactor + lBest*(seqIOCostFactor+randIOCostFactor), nil } // Fanout is the average number of right-side rows that match each left-side row - fanout := 2.0 + fanout := 1.5 // The total expected number of right row lookups expectedRightRows := selfJoinCard * matchRate * fanout // Estimate for reading each left row and each expected right row From c7748f76bda0d8057e5f4dfa5b80ae259aaa99e1 Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Fri, 25 Jul 2025 11:53:55 -0700 Subject: [PATCH 18/21] incorporate index coverage adjustment into lookup join estimate --- sql/memo/coster.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/sql/memo/coster.go b/sql/memo/coster.go index 3400f91d98..6a608bd7af 100644 --- a/sql/memo/coster.go +++ b/sql/memo/coster.go @@ -131,12 +131,16 @@ func (c *coster) costRel(ctx *sql.Context, n RelExpr, s sql.StatsProvider) (floa if n.Injective || matchRate == 0 { return lBest*seqIOCostFactor + lBest*(seqIOCostFactor+randIOCostFactor), nil } - // Fanout is the average number of right-side rows that match each left-side row - fanout := 1.5 + // The total expected number of right row lookups - expectedRightRows := selfJoinCard * matchRate * fanout + expectedRightRows := selfJoinCard * matchRate + + if expectedRightRows < lBest { + return lBest*(seqIOCostFactor) + (lBest + indexCoverageAdjustment(n.Lookup)*(cpuCostFactor+randIOCostFactor)), nil + } + // Estimate for reading each left row and each expected right row - return lBest*seqIOCostFactor + expectedRightRows*(seqIOCostFactor+randIOCostFactor), nil + return lBest*seqIOCostFactor + expectedRightRows*(cpuCostFactor+randIOCostFactor), nil case *ConcatJoin: return c.costConcatJoin(ctx, n, s) } From cfb9c68c85d0095e9c0bd7537b9eb8a3db9ac9ac Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Fri, 25 Jul 2025 13:50:30 -0700 Subject: [PATCH 19/21] adjust coster to use seqIOCostFactor --- sql/memo/coster.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/memo/coster.go b/sql/memo/coster.go index 6a608bd7af..e596ed65f8 100644 --- a/sql/memo/coster.go +++ b/sql/memo/coster.go @@ -136,11 +136,11 @@ func (c *coster) costRel(ctx *sql.Context, n RelExpr, s sql.StatsProvider) (floa expectedRightRows := selfJoinCard * matchRate if expectedRightRows < lBest { - return lBest*(seqIOCostFactor) + (lBest + indexCoverageAdjustment(n.Lookup)*(cpuCostFactor+randIOCostFactor)), nil + return lBest*(seqIOCostFactor) + (lBest + indexCoverageAdjustment(n.Lookup)*(seqIOCostFactor+randIOCostFactor)), nil } // Estimate for reading each left row and each expected right row - return lBest*seqIOCostFactor + expectedRightRows*(cpuCostFactor+randIOCostFactor), nil + return lBest*seqIOCostFactor + expectedRightRows*(seqIOCostFactor+randIOCostFactor), nil case *ConcatJoin: return c.costConcatJoin(ctx, n, s) } From 0e81b752c1b745dced2da2d5b56ab44fc1c4eead Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Tue, 29 Jul 2025 11:30:29 -0700 Subject: [PATCH 20/21] adjust cost factors, move parentheses to correct place --- sql/memo/coster.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sql/memo/coster.go b/sql/memo/coster.go index e596ed65f8..f186c7f22a 100644 --- a/sql/memo/coster.go +++ b/sql/memo/coster.go @@ -129,18 +129,18 @@ func (c *coster) costRel(ctx *sql.Context, n RelExpr, s sql.StatsProvider) (floa // If LookupJoin is injective, then there will only be one right lookup per left row if n.Injective || matchRate == 0 { - return lBest*seqIOCostFactor + lBest*(seqIOCostFactor+randIOCostFactor), nil + return lBest*seqIOCostFactor + lBest*(cpuCostFactor+randIOCostFactor), nil } // The total expected number of right row lookups expectedRightRows := selfJoinCard * matchRate if expectedRightRows < lBest { - return lBest*(seqIOCostFactor) + (lBest + indexCoverageAdjustment(n.Lookup)*(seqIOCostFactor+randIOCostFactor)), nil + return lBest*(seqIOCostFactor) + (lBest+1+indexCoverageAdjustment(n.Lookup))*(cpuCostFactor+randIOCostFactor), nil } // Estimate for reading each left row and each expected right row - return lBest*seqIOCostFactor + expectedRightRows*(seqIOCostFactor+randIOCostFactor), nil + return lBest*seqIOCostFactor + expectedRightRows*(cpuCostFactor+randIOCostFactor), nil case *ConcatJoin: return c.costConcatJoin(ctx, n, s) } From d1a637de3397ed69b4426bbb0865057bcc39dff7 Mon Sep 17 00:00:00 2001 From: Angela Xie Date: Mon, 4 Aug 2025 10:03:22 -0700 Subject: [PATCH 21/21] adjust index covereage adjustment --- sql/memo/coster.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/memo/coster.go b/sql/memo/coster.go index f186c7f22a..f5aba01678 100644 --- a/sql/memo/coster.go +++ b/sql/memo/coster.go @@ -136,7 +136,7 @@ func (c *coster) costRel(ctx *sql.Context, n RelExpr, s sql.StatsProvider) (floa expectedRightRows := selfJoinCard * matchRate if expectedRightRows < lBest { - return lBest*(seqIOCostFactor) + (lBest+1+indexCoverageAdjustment(n.Lookup))*(cpuCostFactor+randIOCostFactor), nil + return lBest*(seqIOCostFactor) + (lBest+indexCoverageAdjustment(n.Lookup))*(cpuCostFactor+randIOCostFactor), nil } // Estimate for reading each left row and each expected right row