diff --git a/enginetest/queries/imdb_plans.go b/enginetest/queries/imdb_plans.go index 7302be93f3..ebb16f59df 100644 --- a/enginetest/queries/imdb_plans.go +++ b/enginetest/queries/imdb_plans.go @@ -50,23 +50,54 @@ WHERE ci.note LIKE '%(voice)%' " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mc.movie_id:5!null\n" + + " │ │ ├─ ci.movie_id:11!null\n" + + " │ │ └─ mc.movie_id:3!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" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mc.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" + + " │ ├─ Eq\n" + + " │ │ ├─ ct.id:8!null\n" + + " │ │ └─ mc.company_type_id:5!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn.id:6!null\n" + + " │ │ │ └─ mc.company_id:4!null\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\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" + + " │ └─ TableAlias(ct)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id]\n" + " └─ InnerJoin\n" + " ├─ Eq\n" + - " │ ├─ rt.id:3!null\n" + + " │ ├─ rt.id:9!null\n" + " │ └─ ci.role_id:14!null\n" + " ├─ Filter\n" + " │ ├─ Eq\n" + @@ -78,56 +109,23 @@ WHERE ci.note LIKE '%(voice)%' " │ ├─ name: role_type\n" + " │ └─ columns: [id role]\n" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ chn.id:15!null\n" + + " │ └─ ci.person_role_id:12\n" + + " ├─ Filter\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" + + " │ │ ├─ 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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(chn.name) as uncredited_voiced_character, min(t.title) as russian_movie]\n" + @@ -135,13 +133,33 @@ WHERE ci.note LIKE '%(voice)%' " ├─ 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" + + " ├─ ((ci.movie_id = mc.movie_id) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (cn.country_code = '[ru]')\n" + + " │ │ └─ TableAlias(cn)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_name\n" + + " │ │ └─ columns: [id country_code]\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id]\n" + " └─ InnerJoin\n" + " ├─ (rt.id = ci.role_id)\n" + " ├─ Filter\n" + @@ -151,35 +169,17 @@ WHERE ci.note LIKE '%(voice)%' " │ ├─ 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" + + " ├─ (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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(chn.name) as uncredited_voiced_character, min(t.title) as russian_movie]\n" + @@ -187,13 +187,33 @@ WHERE ci.note LIKE '%(voice)%' " ├─ 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" + + " ├─ ((ci.movie_id = mc.movie_id) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (cn.country_code = '[ru]')\n" + + " │ │ └─ TableAlias(cn)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_name\n" + + " │ │ └─ columns: [id country_code]\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id]\n" + " └─ InnerJoin\n" + " ├─ (rt.id = ci.role_id)\n" + " ├─ Filter\n" + @@ -203,35 +223,17 @@ WHERE ci.note LIKE '%(voice)%' " │ ├─ 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" + + " ├─ (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" + "", }, { @@ -265,23 +267,54 @@ WHERE ci.note LIKE '%(voice)%' " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mc.movie_id:5!null\n" + + " │ │ ├─ ci.movie_id:11!null\n" + + " │ │ └─ mc.movie_id:3!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" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mc.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" + + " │ ├─ Eq\n" + + " │ │ ├─ ct.id:8!null\n" + + " │ │ └─ mc.company_type_id:5!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn.id:6!null\n" + + " │ │ │ └─ mc.company_id:4!null\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\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" + + " │ └─ TableAlias(ct)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id]\n" + " └─ InnerJoin\n" + " ├─ Eq\n" + - " │ ├─ rt.id:3!null\n" + + " │ ├─ rt.id:9!null\n" + " │ └─ ci.role_id:14!null\n" + " ├─ Filter\n" + " │ ├─ Eq\n" + @@ -293,54 +326,21 @@ WHERE ci.note LIKE '%(voice)%' " │ ├─ 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" + + " ├─ 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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(chn.name) as character, min(t.title) as russian_mov_with_actor_producer]\n" + @@ -348,13 +348,33 @@ WHERE ci.note LIKE '%(voice)%' " ├─ 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" + + " ├─ ((ci.movie_id = mc.movie_id) AND (t.id = ci.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" + + " │ └─ InnerJoin\n" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (cn.country_code = '[ru]')\n" + + " │ │ └─ TableAlias(cn)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_name\n" + + " │ │ └─ columns: [id country_code]\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id]\n" + " └─ InnerJoin\n" + " ├─ (rt.id = ci.role_id)\n" + " ├─ Filter\n" + @@ -364,35 +384,17 @@ WHERE ci.note LIKE '%(voice)%' " │ ├─ 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" + + " ├─ (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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(chn.name) as character, min(t.title) as russian_mov_with_actor_producer]\n" + @@ -400,13 +402,33 @@ WHERE ci.note LIKE '%(voice)%' " ├─ 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" + + " ├─ ((ci.movie_id = mc.movie_id) AND (t.id = ci.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" + + " │ └─ InnerJoin\n" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (cn.country_code = '[ru]')\n" + + " │ │ └─ TableAlias(cn)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_name\n" + + " │ │ └─ columns: [id country_code]\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id]\n" + " └─ InnerJoin\n" + " ├─ (rt.id = ci.role_id)\n" + " ├─ Filter\n" + @@ -416,35 +438,17 @@ WHERE ci.note LIKE '%(voice)%' " │ ├─ 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" + + " ├─ (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" + "", }, { @@ -477,23 +481,54 @@ WHERE ci.note LIKE '%(voice)%' " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mc.movie_id:4!null\n" + + " │ │ ├─ ci.movie_id:10!null\n" + + " │ │ └─ mc.movie_id:3!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" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mc.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" + + " │ ├─ Eq\n" + + " │ │ ├─ ct.id:8!null\n" + + " │ │ └─ mc.company_type_id:5!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn.id:6!null\n" + + " │ │ │ └─ mc.company_id:4!null\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_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(ct)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id]\n" + " └─ InnerJoin\n" + " ├─ Eq\n" + - " │ ├─ rt.id:3!null\n" + + " │ ├─ rt.id:9!null\n" + " │ └─ ci.role_id:13!null\n" + " ├─ TableAlias(rt)\n" + " │ └─ ProcessTable\n" + @@ -501,54 +536,21 @@ WHERE ci.note LIKE '%(voice)%' " │ ├─ 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" + + " ├─ 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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(chn.name) as character, min(t.title) as movie_with_american_producer]\n" + @@ -556,13 +558,33 @@ WHERE ci.note LIKE '%(voice)%' " ├─ 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" + + " ├─ ((ci.movie_id = mc.movie_id) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (cn.country_code = '[us]')\n" + + " │ │ └─ TableAlias(cn)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_name\n" + + " │ │ └─ columns: [id country_code]\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id]\n" + " └─ InnerJoin\n" + " ├─ (rt.id = ci.role_id)\n" + " ├─ TableAlias(rt)\n" + @@ -570,35 +592,17 @@ WHERE ci.note LIKE '%(voice)%' " │ ├─ 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" + + " ├─ (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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(chn.name) as character, min(t.title) as movie_with_american_producer]\n" + @@ -606,13 +610,33 @@ WHERE ci.note LIKE '%(voice)%' " ├─ 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" + + " ├─ ((ci.movie_id = mc.movie_id) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (cn.country_code = '[us]')\n" + + " │ │ └─ TableAlias(cn)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_name\n" + + " │ │ └─ columns: [id country_code]\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id]\n" + " └─ InnerJoin\n" + " ├─ (rt.id = ci.role_id)\n" + " ├─ TableAlias(rt)\n" + @@ -620,35 +644,17 @@ WHERE ci.note LIKE '%(voice)%' " │ ├─ 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" + + " ├─ (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" + "", }, { @@ -687,242 +693,265 @@ WHERE cn.country_code !='[pl]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as from_company, min(lt.link):1!null as movie_link_type, min(t.title):2!null as non_polish_sequel_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(cn.name:18!null), MIN(lt.link:12!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(cn.name:11!null), MIN(lt.link:5!null), MIN(t.title:18!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ ml.movie_id:3!null\n" + - " │ │ │ └─ t.id:0!null\n" + + " │ │ │ ├─ ml.movie_id:2!null\n" + + " │ │ │ └─ t.id:17!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mk.movie_id:5!null\n" + + " │ │ ├─ t.id:17!null\n" + + " │ │ └─ mk.movie_id:15!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" + - " │ └─ 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" + + " │ ├─ t.id:17!null\n" + + " │ └─ mc.movie_id:6!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mk.keyword_id:16!null\n" + + " │ │ └─ k.id:0!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(k.id:0!null)\n" + + " │ ├─ right-key: TUPLE(mk.keyword_id:14!null)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ml.movie_id:2!null\n" + + " │ │ └─ mk.movie_id:15!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ml.movie_id:2!null\n" + + " │ │ │ └─ mc.movie_id:6!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ lt.id:4!null\n" + + " │ │ │ │ └─ ml.link_type_id:3!null\n" + + " │ │ │ ├─ TableAlias(ml)\n" + + " │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_link\n" + + " │ │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ │ └─ TableAlias(lt)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: link_type\n" + + " │ │ │ └─ columns: [id link]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mc.company_type_id:8!null\n" + + " │ │ │ └─ ct.id:13!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mc.company_id:7!null\n" + + " │ │ │ │ └─ cn.id:10!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" + + " │ │ │ └─ 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" + + " │ │ ├─ 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(mk)\n" + + " │ └─ IndexedTableAccess(movie_keyword)\n" + + " │ ├─ index: [movie_keyword.movie_id]\n" + + " │ ├─ keys: [mc.movie_id:6!null]\n" + + " │ ├─ colSet: (20-22)\n" + + " │ ├─ tableId: 6\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_keyword\n" + + " │ └─ columns: [movie_id keyword_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(ml.movie_id:2!null, mk.movie_id:15!null, mc.movie_id:6!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, 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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (k.keyword = 'sequel')\n" + + " │ │ └─ TableAlias(k)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id keyword]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ml.movie_id = mc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ │ ├─ TableAlias(ml)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_link\n" + + " │ │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ │ └─ TableAlias(lt)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: link_type\n" + + " │ │ │ └─ columns: [id link]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (mc.company_type_id = ct.id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ 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" + + " │ │ ├─ (ct.kind = 'production companies')\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id kind]\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" + + " └─ HashLookup\n" + + " ├─ left-key: (ml.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (k.keyword = 'sequel')\n" + + " │ │ └─ TableAlias(k)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id keyword]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ml.movie_id = mc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ │ ├─ TableAlias(ml)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_link\n" + + " │ │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ │ └─ TableAlias(lt)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: link_type\n" + + " │ │ │ └─ columns: [id link]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (mc.company_type_id = ct.id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ 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" + + " │ │ ├─ (ct.kind = 'production companies')\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id kind]\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" + + " └─ HashLookup\n" + + " ├─ left-key: (ml.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.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" + "", }, { @@ -962,240 +991,263 @@ WHERE cn.country_code !='[pl]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as from_company, min(lt.link):1!null as movie_link_type, min(t.title):2!null as sequel_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(cn.name:18!null), MIN(lt.link:12!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(cn.name:11!null), MIN(lt.link:5!null), MIN(t.title:18!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ ml.movie_id:3!null\n" + - " │ │ │ └─ t.id:0!null\n" + + " │ │ │ ├─ ml.movie_id:2!null\n" + + " │ │ │ └─ t.id:17!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mk.movie_id:5!null\n" + + " │ │ ├─ t.id:17!null\n" + + " │ │ └─ mk.movie_id:15!null\n" + " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + - " │ └─ mc.movie_id:7!null\n" + - " ├─ Filter\n" + - " │ ├─ AND\n" + + " │ ├─ t.id:17!null\n" + + " │ └─ mc.movie_id:6!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mk.keyword_id:16!null\n" + + " │ │ └─ k.id:0!null\n" + + " │ ├─ Filter\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" + - " └─ 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" + + " │ │ │ ├─ k.keyword:1!null\n" + + " │ │ │ └─ sequel (longtext)\n" + + " │ │ └─ TableAlias(k)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id keyword]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(k.id:0!null)\n" + + " │ ├─ right-key: TUPLE(mk.keyword_id:14!null)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ml.movie_id:2!null\n" + + " │ │ └─ mk.movie_id:15!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ml.movie_id:2!null\n" + + " │ │ │ └─ mc.movie_id:6!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ lt.id:4!null\n" + + " │ │ │ │ └─ ml.link_type_id:3!null\n" + + " │ │ │ ├─ TableAlias(ml)\n" + + " │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_link\n" + + " │ │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ lt.link LIKE '%follows%'\n" + + " │ │ │ └─ TableAlias(lt)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: link_type\n" + + " │ │ │ └─ columns: [id link]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mc.company_type_id:8!null\n" + + " │ │ │ └─ ct.id:13!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mc.company_id:7!null\n" + + " │ │ │ │ └─ cn.id:10!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" + + " │ │ │ └─ 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" + + " │ │ ├─ 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(mk)\n" + + " │ └─ IndexedTableAccess(movie_keyword)\n" + + " │ ├─ index: [movie_keyword.movie_id]\n" + + " │ ├─ keys: [mc.movie_id:6!null]\n" + + " │ ├─ colSet: (20-22)\n" + + " │ ├─ tableId: 6\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_keyword\n" + + " │ └─ columns: [movie_id keyword_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(ml.movie_id:2!null, mk.movie_id:15!null, mc.movie_id:6!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ Filter\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" + + " │ │ ├─ 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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (k.keyword = 'sequel')\n" + + " │ │ └─ TableAlias(k)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id keyword]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ml.movie_id = mc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ │ ├─ TableAlias(ml)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_link\n" + + " │ │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ lt.link LIKE '%follows%'\n" + + " │ │ │ └─ TableAlias(lt)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: link_type\n" + + " │ │ │ └─ columns: [id link]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (mc.company_type_id = ct.id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ 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" + + " │ │ ├─ (ct.kind = 'production companies')\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id kind]\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" + + " └─ HashLookup\n" + + " ├─ left-key: (ml.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (k.keyword = 'sequel')\n" + + " │ │ └─ TableAlias(k)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id keyword]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ml.movie_id = mc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ │ ├─ TableAlias(ml)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_link\n" + + " │ │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ lt.link LIKE '%follows%'\n" + + " │ │ │ └─ TableAlias(lt)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: link_type\n" + + " │ │ │ └─ columns: [id link]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (mc.company_type_id = ct.id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ 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" + + " │ │ ├─ (ct.kind = 'production companies')\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id kind]\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" + + " └─ HashLookup\n" + + " ├─ left-key: (ml.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.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" + "", }, { @@ -1236,249 +1288,272 @@ WHERE cn.country_code !='[pl]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as from_company, min(mc.note):1!null as production_note, min(t.title):2!null as movie_based_on_book]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(cn.name:17!null), MIN(mc.note:10), MIN(t.title:1!null)\n" + + " ├─ select: MIN(cn.name:10!null), MIN(mc.note:8), MIN(t.title:17!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ ml.movie_id:3!null\n" + - " │ │ │ └─ t.id:0!null\n" + + " │ │ │ ├─ ml.movie_id:2!null\n" + + " │ │ │ └─ t.id:16!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mk.movie_id:5!null\n" + + " │ │ ├─ t.id:16!null\n" + + " │ │ └─ mk.movie_id:14!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" + - " │ └─ 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" + + " │ ├─ t.id:16!null\n" + + " │ └─ mc.movie_id:5!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mk.keyword_id:15!null\n" + + " │ │ └─ k.id:0!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(k.id:0!null)\n" + + " │ ├─ right-key: TUPLE(mk.keyword_id:13!null)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ml.movie_id:2!null\n" + + " │ │ └─ mk.movie_id:14!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ml.movie_id:2!null\n" + + " │ │ │ └─ mc.movie_id:5!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ lt.id:4!null\n" + + " │ │ │ │ └─ ml.link_type_id:3!null\n" + + " │ │ │ ├─ TableAlias(ml)\n" + + " │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_link\n" + + " │ │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ │ └─ TableAlias(lt)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: link_type\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mc.company_type_id:7!null\n" + + " │ │ │ └─ ct.id:12!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mc.company_id:6!null\n" + + " │ │ │ │ └─ cn.id:9!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" + + " │ │ │ └─ 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" + + " │ │ └─ 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" + + " │ └─ TableAlias(mk)\n" + + " │ └─ IndexedTableAccess(movie_keyword)\n" + + " │ ├─ index: [movie_keyword.movie_id]\n" + + " │ ├─ keys: [mc.movie_id:5!null]\n" + + " │ ├─ colSet: (20-22)\n" + + " │ ├─ tableId: 6\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_keyword\n" + + " │ └─ columns: [movie_id keyword_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(ml.movie_id:2!null, mk.movie_id:14!null, mc.movie_id:5!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, 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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ml.movie_id = mc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ │ ├─ TableAlias(ml)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_link\n" + + " │ │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ │ └─ TableAlias(lt)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: link_type\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (mc.company_type_id = ct.id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ 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" + + " │ │ └─ 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" + + " │ └─ TableAlias(mk)\n" + + " │ └─ IndexedTableAccess(movie_keyword)\n" + + " │ ├─ index: [movie_keyword.movie_id]\n" + + " │ ├─ columns: [movie_id keyword_id]\n" + + " │ └─ keys: mc.movie_id\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ml.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ml.movie_id = mc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ │ ├─ TableAlias(ml)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_link\n" + + " │ │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ │ └─ TableAlias(lt)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: link_type\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (mc.company_type_id = ct.id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ 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" + + " │ │ └─ 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" + + " │ └─ TableAlias(mk)\n" + + " │ └─ IndexedTableAccess(movie_keyword)\n" + + " │ ├─ index: [movie_keyword.movie_id]\n" + + " │ ├─ columns: [movie_id keyword_id]\n" + + " │ └─ keys: mc.movie_id\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ml.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.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" + "", }, { @@ -1517,233 +1592,256 @@ WHERE cn.country_code !='[pl]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as from_company, min(mc.note):1!null as production_note, min(t.title):2!null as movie_based_on_book]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(cn.name:17!null), MIN(mc.note:10), MIN(t.title:1!null)\n" + + " ├─ select: MIN(cn.name:10!null), MIN(mc.note:8), MIN(t.title:17!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ ml.movie_id:3!null\n" + - " │ │ │ └─ t.id:0!null\n" + + " │ │ │ ├─ ml.movie_id:2!null\n" + + " │ │ │ └─ t.id:16!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mk.movie_id:5!null\n" + + " │ │ ├─ t.id:16!null\n" + + " │ │ └─ mk.movie_id:14!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" + - " │ └─ 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" + + " │ ├─ t.id:16!null\n" + + " │ └─ mc.movie_id:5!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mk.keyword_id:15!null\n" + + " │ │ └─ k.id:0!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(k.id:0!null)\n" + + " │ ├─ right-key: TUPLE(mk.keyword_id:13!null)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ml.movie_id:2!null\n" + + " │ │ └─ mk.movie_id:14!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ml.movie_id:2!null\n" + + " │ │ │ └─ mc.movie_id:5!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ lt.id:4!null\n" + + " │ │ │ │ └─ ml.link_type_id:3!null\n" + + " │ │ │ ├─ TableAlias(ml)\n" + + " │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_link\n" + + " │ │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ │ └─ TableAlias(lt)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: link_type\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mc.company_type_id:7!null\n" + + " │ │ │ └─ ct.id:12!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mc.company_id:6!null\n" + + " │ │ │ │ └─ cn.id:9!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" + + " │ │ │ └─ 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" + + " │ │ └─ 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" + + " │ └─ TableAlias(mk)\n" + + " │ └─ IndexedTableAccess(movie_keyword)\n" + + " │ ├─ index: [movie_keyword.movie_id]\n" + + " │ ├─ keys: [mc.movie_id:5!null]\n" + + " │ ├─ colSet: (20-22)\n" + + " │ ├─ tableId: 6\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_keyword\n" + + " │ └─ columns: [movie_id keyword_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(ml.movie_id:2!null, mk.movie_id:14!null, mc.movie_id:5!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, 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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ml.movie_id = mc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ │ ├─ TableAlias(ml)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_link\n" + + " │ │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ │ └─ TableAlias(lt)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: link_type\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (mc.company_type_id = ct.id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (NOT((cn.country_code = '[pl]')))\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id name country_code]\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" + + " │ └─ TableAlias(mk)\n" + + " │ └─ IndexedTableAccess(movie_keyword)\n" + + " │ ├─ index: [movie_keyword.movie_id]\n" + + " │ ├─ columns: [movie_id keyword_id]\n" + + " │ └─ keys: mc.movie_id\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ml.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ml.movie_id = mc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ │ ├─ TableAlias(ml)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_link\n" + + " │ │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ │ └─ TableAlias(lt)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: link_type\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (mc.company_type_id = ct.id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (NOT((cn.country_code = '[pl]')))\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id name country_code]\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" + + " │ └─ TableAlias(mk)\n" + + " │ └─ IndexedTableAccess(movie_keyword)\n" + + " │ ├─ index: [movie_keyword.movie_id]\n" + + " │ ├─ columns: [movie_id keyword_id]\n" + + " │ └─ keys: mc.movie_id\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ml.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.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" + "", }, { @@ -1782,250 +1880,273 @@ WHERE cn.country_code = '[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as movie_company, min(mi_idx.info):1!null as rating, min(t.title):2!null as drama_horror_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(cn.name:19!null), MIN(mi_idx.info:5!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(cn.name:11!null), MIN(mi_idx.info:4!null), MIN(t.title:19!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mi.movie_id:6!null\n" + + " │ │ │ ├─ t.id:18!null\n" + + " │ │ │ └─ mi.movie_id:15!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mi_idx.movie_id:3!null\n" + + " │ │ ├─ t.id:18!null\n" + + " │ │ └─ mi_idx.movie_id:2!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" + + " │ ├─ t.id:18!null\n" + + " │ └─ mc.movie_id:7!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mi.info_type_id:16!null\n" + + " │ │ └─ it1.id:0!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(it1.id:0!null)\n" + + " │ ├─ right-key: TUPLE(mi.info_type_id:14!null)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mi.movie_id:15!null\n" + + " │ │ └─ mi_idx.movie_id:2!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mc.movie_id:7!null\n" + + " │ │ │ └─ mi_idx.movie_id:2!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi_idx.info_type_id:3!null\n" + + " │ │ │ │ └─ it2.id:5!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" + + " │ │ │ └─ 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: (12,13)\n" + + " │ │ │ └─ tableId: 4\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ct.id:13!null\n" + + " │ │ │ └─ mc.company_type_id:9!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ cn.id:10!null\n" + + " │ │ │ │ └─ mc.company_id:8!null\n" + + " │ │ │ ├─ TableAlias(mc)\n" + + " │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_companies\n" + + " │ │ │ │ └─ columns: [movie_id company_id company_type_id]\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" + + " │ │ ├─ 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(Drama (longtext), Horror (longtext))\n" + + " │ └─ TableAlias(mi)\n" + + " │ └─ IndexedTableAccess(movie_info)\n" + + " │ ├─ index: [movie_info.movie_id]\n" + + " │ ├─ keys: [mc.movie_id:7!null]\n" + + " │ ├─ colSet: (19-23)\n" + + " │ ├─ tableId: 6\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_info\n" + + " │ └─ columns: [movie_id info_type_id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mi.movie_id:15!null, mi_idx.movie_id:2!null, mc.movie_id:7!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ Filter\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" + + " │ ├─ 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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\n" + + " │ ├─ (mi.info_type_id = it1.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (it1.info = 'genres')\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (it1.id)\n" + + " │ ├─ right-key: (mi.info_type_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ (mi.movie_id = mi_idx.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (mc.movie_id = mi_idx.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mi_idx.info_type_id = it2.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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it2.info = 'rating')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ │ ├─ TableAlias(mc)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_companies\n" + + " │ │ │ │ └─ columns: [movie_id company_id company_type_id]\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" + + " │ │ ├─ (ct.kind = 'production companies')\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id kind]\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: mc.movie_id\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\n" + + " │ ├─ (mi.info_type_id = it1.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (it1.info = 'genres')\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (it1.id)\n" + + " │ ├─ right-key: (mi.info_type_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ (mi.movie_id = mi_idx.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (mc.movie_id = mi_idx.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mi_idx.info_type_id = it2.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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it2.info = 'rating')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ │ ├─ TableAlias(mc)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_companies\n" + + " │ │ │ │ └─ columns: [movie_id company_id company_type_id]\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" + + " │ │ ├─ (ct.kind = 'production companies')\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id kind]\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: mc.movie_id\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.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" + "", }, { @@ -2064,247 +2185,270 @@ WHERE cn.country_code ='[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(mi.info):0!null as budget, min(t.title):1!null as unsuccsessful_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(mi.info:7!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(mi.info:15!null), MIN(t.title:17!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mi.movie_id:5!null\n" + + " │ │ │ ├─ t.id:16!null\n" + + " │ │ │ └─ mi.movie_id:13!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mi_idx.movie_id:3!null\n" + + " │ │ ├─ t.id:16!null\n" + + " │ │ └─ mi_idx.movie_id:2!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" + - " │ └─ 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" + + " │ ├─ t.id:16!null\n" + + " │ └─ mc.movie_id:6!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mi.info_type_id:14!null\n" + + " │ │ └─ it1.id:0!null\n" + + " │ ├─ Filter\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it1.info:1!null\n" + + " │ │ │ └─ budget (longtext)\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(it1.id:0!null)\n" + + " │ ├─ right-key: TUPLE(mi.info_type_id:12!null)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mi.movie_id:13!null\n" + + " │ │ └─ mi_idx.movie_id:2!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mc.movie_id:6!null\n" + + " │ │ │ └─ mi_idx.movie_id:2!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi_idx.info_type_id:3!null\n" + + " │ │ │ │ └─ it2.id:4!null\n" + + " │ │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ │ └─ columns: [movie_id info_type_id]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ it2.info:1!null\n" + + " │ │ │ │ └─ bottom 10 rank (longtext)\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ ├─ columns: [id info]\n" + + " │ │ │ ├─ colSet: (12,13)\n" + + " │ │ │ └─ tableId: 4\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ct.id:11!null\n" + + " │ │ │ └─ mc.company_type_id:8!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ cn.id:9!null\n" + + " │ │ │ │ └─ mc.company_id:7!null\n" + + " │ │ │ ├─ TableAlias(mc)\n" + + " │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_companies\n" + + " │ │ │ │ └─ columns: [movie_id company_id company_type_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" + + " │ │ └─ 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" + + " │ └─ TableAlias(mi)\n" + + " │ └─ IndexedTableAccess(movie_info)\n" + + " │ ├─ index: [movie_info.movie_id]\n" + + " │ ├─ keys: [mc.movie_id:6!null]\n" + + " │ ├─ colSet: (19-23)\n" + + " │ ├─ tableId: 6\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_info\n" + + " │ └─ columns: [movie_id info_type_id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mi.movie_id:13!null, mi_idx.movie_id:2!null, mc.movie_id:6!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ Filter\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" + + " │ ├─ 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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\n" + + " │ ├─ (mi.info_type_id = it1.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (it1.info = 'budget')\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (it1.id)\n" + + " │ ├─ right-key: (mi.info_type_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ (mi.movie_id = mi_idx.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (mc.movie_id = mi_idx.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mi_idx.info_type_id = it2.id)\n" + + " │ │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ │ └─ columns: [movie_id info_type_id]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it2.info = 'bottom 10 rank')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ │ ├─ TableAlias(mc)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_companies\n" + + " │ │ │ │ └─ columns: [movie_id company_id company_type_id]\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(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" + + " │ └─ 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" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\n" + + " │ ├─ (mi.info_type_id = it1.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (it1.info = 'budget')\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (it1.id)\n" + + " │ ├─ right-key: (mi.info_type_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ (mi.movie_id = mi_idx.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (mc.movie_id = mi_idx.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mi_idx.info_type_id = it2.id)\n" + + " │ │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ │ └─ columns: [movie_id info_type_id]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it2.info = 'bottom 10 rank')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ │ ├─ TableAlias(mc)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_companies\n" + + " │ │ │ │ └─ columns: [movie_id company_id company_type_id]\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(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" + + " │ └─ 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" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.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" + "", }, { @@ -2345,250 +2489,273 @@ WHERE cn.country_code = '[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as movie_company, min(mi_idx.info):1!null as rating, min(t.title):2!null as mainstream_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(cn.name:19!null), MIN(mi_idx.info:5!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(cn.name:11!null), MIN(mi_idx.info:4!null), MIN(t.title:19!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mi.movie_id:6!null\n" + + " │ │ │ ├─ t.id:18!null\n" + + " │ │ │ └─ mi.movie_id:15!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mi_idx.movie_id:3!null\n" + + " │ │ ├─ t.id:18!null\n" + + " │ │ └─ mi_idx.movie_id:2!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" + + " │ ├─ t.id:18!null\n" + + " │ └─ mc.movie_id:7!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mi.info_type_id:16!null\n" + + " │ │ └─ it1.id:0!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(it1.id:0!null)\n" + + " │ ├─ right-key: TUPLE(mi.info_type_id:14!null)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mi.movie_id:15!null\n" + + " │ │ └─ mi_idx.movie_id:2!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mc.movie_id:7!null\n" + + " │ │ │ └─ mi_idx.movie_id:2!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi_idx.info_type_id:3!null\n" + + " │ │ │ │ └─ it2.id:5!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" + + " │ │ │ └─ 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: (12,13)\n" + + " │ │ │ └─ tableId: 4\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ct.id:13!null\n" + + " │ │ │ └─ mc.company_type_id:9!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ cn.id:10!null\n" + + " │ │ │ │ └─ mc.company_id:8!null\n" + + " │ │ │ ├─ TableAlias(mc)\n" + + " │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_companies\n" + + " │ │ │ │ └─ columns: [movie_id company_id company_type_id]\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" + + " │ │ ├─ 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(Drama (longtext), Horror (longtext), Western (longtext), Family (longtext))\n" + + " │ └─ TableAlias(mi)\n" + + " │ └─ IndexedTableAccess(movie_info)\n" + + " │ ├─ index: [movie_info.movie_id]\n" + + " │ ├─ keys: [mc.movie_id:7!null]\n" + + " │ ├─ colSet: (19-23)\n" + + " │ ├─ tableId: 6\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_info\n" + + " │ └─ columns: [movie_id info_type_id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mi.movie_id:15!null, mi_idx.movie_id:2!null, mc.movie_id:7!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ Filter\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" + + " │ ├─ 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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\n" + + " │ ├─ (mi.info_type_id = it1.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (it1.info = 'genres')\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (it1.id)\n" + + " │ ├─ right-key: (mi.info_type_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ (mi.movie_id = mi_idx.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (mc.movie_id = mi_idx.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mi_idx.info_type_id = it2.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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it2.info = 'rating')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ │ ├─ TableAlias(mc)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_companies\n" + + " │ │ │ │ └─ columns: [movie_id company_id company_type_id]\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" + + " │ │ ├─ (ct.kind = 'production companies')\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id kind]\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: mc.movie_id\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\n" + + " │ ├─ (mi.info_type_id = it1.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (it1.info = 'genres')\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (it1.id)\n" + + " │ ├─ right-key: (mi.info_type_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ (mi.movie_id = mi_idx.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (mc.movie_id = mi_idx.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mi_idx.info_type_id = it2.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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it2.info = 'rating')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ │ ├─ TableAlias(mc)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_companies\n" + + " │ │ │ │ └─ columns: [movie_id company_id company_type_id]\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" + + " │ │ ├─ (ct.kind = 'production companies')\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id kind]\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: mc.movie_id\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.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" + "", }, { @@ -2626,250 +2793,270 @@ WHERE cn.country_code ='[de]' ExpectedPlan: "Project\n" + " ├─ columns: [min(mi.info):0!null as release_date, min(miidx.info):1!null as rating, min(t.title):2!null as german_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(mi.info:8!null), MIN(miidx.info:5!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(mi.info:16!null), MIN(miidx.info:21!null), MIN(t.title:10!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" + - " │ │ │ └─ Eq\n" + - " │ │ │ ├─ kt.id:12!null\n" + - " │ │ │ └─ t.kind_id:2!null\n" + - " │ │ └─ Eq\n" + - " │ │ ├─ mc.movie_id:9!null\n" + - " │ │ └─ t.id:0!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" + - " │ │ ├─ 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" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ it.id:0!null\n" + + " │ └─ miidx.info_type_id:20!null\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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(it.id:0!null)\n" + + " ├─ right-key: TUPLE(miidx.info_type_id:18!null)\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ it2.id:14!null\n" + - " │ │ └─ mi.info_type_id:7!null\n" + + " │ │ ├─ mi.movie_id:14!null\n" + + " │ │ └─ mc.movie_id:2!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" + + " │ ├─ miidx.movie_id:19!null\n" + + " │ └─ mc.movie_id:2!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ct.id:7!null\n" + + " │ │ └─ mc.company_type_id:4!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn.id:5!null\n" + + " │ │ │ └─ mc.company_id:3!null\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\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" + + " │ └─ 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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mc.movie_id:2!null, mc.movie_id:2!null)\n" + + " ├─ right-key: TUPLE(mi.movie_id:5!null, miidx.movie_id:10!null)\n" + + " └─ LookupJoin\n" + + " ├─ Eq\n" + + " │ ├─ miidx.movie_id:19!null\n" + + " │ └─ t.id:9!null\n" + + " ├─ InnerJoin\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" + + " │ │ ├─ mi.movie_id:14!null\n" + + " │ │ └─ t.id:9!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ kt.id:12!null\n" + + " │ │ │ └─ t.kind_id:11!null\n" + + " │ │ ├─ TableAlias(t)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: title\n" + + " │ │ │ └─ columns: [id title kind_id]\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" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ it2.id:17!null\n" + + " │ │ └─ mi.info_type_id:15!null\n" + + " │ ├─ TableAlias(mi)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_info\n" + + " │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ └─ Filter\n" + + " │ ├─ Eq\n" + + " │ │ ├─ it2.info:1!null\n" + + " │ │ └─ release dates (longtext)\n" + + " │ └─ TableAlias(it2)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ ├─ columns: [id info]\n" + + " │ ├─ colSet: (12,13)\n" + + " │ └─ tableId: 4\n" + + " └─ TableAlias(miidx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " ├─ index: [movie_info_idx.movie_id]\n" + + " ├─ keys: [mi.movie_id:14!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" + " └─ GroupBy\n" + " ├─ 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" + + " └─ HashJoin\n" + + " ├─ (it.id = miidx.info_type_id)\n" + + " ├─ Filter\n" + + " │ ├─ (it.info = 'rating')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (it.id)\n" + + " ├─ right-key: (miidx.info_type_id)\n" + + " └─ HashJoin\n" + + " ├─ ((mi.movie_id = mc.movie_id) AND (miidx.movie_id = mc.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (cn.country_code = '[de]')\n" + + " │ │ └─ TableAlias(cn)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_name\n" + + " │ │ └─ columns: [id country_code]\n" + + " │ └─ Filter\n" + + " │ ├─ (ct.kind = 'production companies')\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mc.movie_id, mc.movie_id)\n" + + " ├─ right-key: (mi.movie_id, miidx.movie_id)\n" + + " └─ LookupJoin\n" + + " ├─ (miidx.movie_id = t.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mi.movie_id = t.id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ ├─ TableAlias(t)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: title\n" + + " │ │ │ └─ columns: [id title kind_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ └─ TableAlias(kt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: kind_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (it2.id = mi.info_type_id)\n" + + " │ ├─ TableAlias(mi)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_info\n" + + " │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ └─ Filter\n" + + " │ ├─ (it2.info = 'release dates')\n" + + " │ └─ TableAlias(it2)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ TableAlias(miidx)\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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(mi.info) as release_date, min(miidx.info) as rating, min(t.title) as german_movie]\n" + " └─ GroupBy\n" + " ├─ 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" + + " └─ HashJoin\n" + + " ├─ (it.id = miidx.info_type_id)\n" + + " ├─ Filter\n" + + " │ ├─ (it.info = 'rating')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (it.id)\n" + + " ├─ right-key: (miidx.info_type_id)\n" + + " └─ HashJoin\n" + + " ├─ ((mi.movie_id = mc.movie_id) AND (miidx.movie_id = mc.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (cn.country_code = '[de]')\n" + + " │ │ └─ TableAlias(cn)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_name\n" + + " │ │ └─ columns: [id country_code]\n" + + " │ └─ Filter\n" + + " │ ├─ (ct.kind = 'production companies')\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mc.movie_id, mc.movie_id)\n" + + " ├─ right-key: (mi.movie_id, miidx.movie_id)\n" + + " └─ LookupJoin\n" + + " ├─ (miidx.movie_id = t.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mi.movie_id = t.id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ ├─ TableAlias(t)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: title\n" + + " │ │ │ └─ columns: [id title kind_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ └─ TableAlias(kt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: kind_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (it2.id = mi.info_type_id)\n" + + " │ ├─ TableAlias(mi)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_info\n" + + " │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ └─ Filter\n" + + " │ ├─ (it2.info = 'release dates')\n" + + " │ └─ TableAlias(it2)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ TableAlias(miidx)\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" + "", }, { @@ -2910,263 +3097,283 @@ WHERE cn.country_code ='[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as producing_company, min(miidx.info):1!null as rating, min(t.title):2!null as movie_about_winning]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(cn.name:20!null), MIN(miidx.info:5!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(cn.name:6!null), MIN(miidx.info:21!null), MIN(t.title:11!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" + - " │ │ │ └─ Eq\n" + - " │ │ │ ├─ kt.id:11!null\n" + - " │ │ │ └─ t.kind_id:2!null\n" + - " │ │ └─ Eq\n" + - " │ │ ├─ mc.movie_id:8!null\n" + - " │ │ └─ t.id:0!null\n" + - " │ └─ Eq\n" + - " │ ├─ miidx.movie_id:3!null\n" + - " │ └─ t.id:0!null\n" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ it.id:0!null\n" + + " │ └─ miidx.info_type_id:20!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" + + " │ ├─ Eq\n" + + " │ │ ├─ it.info:1!null\n" + + " │ │ └─ rating (longtext)\n" + + " │ └─ TableAlias(it)\n" + " │ └─ ProcessTable\n" + " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " ├─ AND\n" + - " │ ├─ AND\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" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(it.id:0!null)\n" + + " ├─ right-key: TUPLE(miidx.info_type_id:18!null)\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ it2.id:13!null\n" + - " │ │ └─ mi.info_type_id:7!null\n" + + " │ │ ├─ mi.movie_id:15!null\n" + + " │ │ └─ mc.movie_id:2!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" + + " │ ├─ miidx.movie_id:19!null\n" + + " │ └─ mc.movie_id:2!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ct.id:8!null\n" + + " │ │ └─ mc.company_type_id:4!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn.id:5!null\n" + + " │ │ │ └─ mc.company_id:3!null\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\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" + + " │ ├─ 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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mc.movie_id:2!null, mc.movie_id:2!null)\n" + + " ├─ right-key: TUPLE(mi.movie_id:5!null, miidx.movie_id:9!null)\n" + + " └─ LookupJoin\n" + + " ├─ Eq\n" + + " │ ├─ miidx.movie_id:19!null\n" + + " │ └─ t.id:10!null\n" + + " ├─ InnerJoin\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" + + " │ │ ├─ mi.movie_id:15!null\n" + + " │ │ └─ t.id:10!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ kt.id:13!null\n" + + " │ │ │ └─ t.kind_id:12!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" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: title\n" + + " │ │ │ └─ columns: [id title kind_id]\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" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ it2.id:17!null\n" + + " │ │ └─ mi.info_type_id:16!null\n" + + " │ ├─ TableAlias(mi)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_info\n" + + " │ │ └─ columns: [movie_id info_type_id]\n" + + " │ └─ Filter\n" + + " │ ├─ Eq\n" + + " │ │ ├─ it2.info:1!null\n" + + " │ │ └─ release dates (longtext)\n" + + " │ └─ TableAlias(it2)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ ├─ columns: [id info]\n" + + " │ ├─ colSet: (12,13)\n" + + " │ └─ tableId: 4\n" + + " └─ TableAlias(miidx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " ├─ index: [movie_info_idx.movie_id]\n" + + " ├─ keys: [mi.movie_id:15!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" + " └─ 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" + + " └─ HashJoin\n" + + " ├─ (it.id = miidx.info_type_id)\n" + " ├─ Filter\n" + - " │ ├─ ((NOT((t.title = ''))) AND (t.title LIKE '%Champion%' OR t.title LIKE '%Loser%'))\n" + - " │ └─ TableAlias(t)\n" + + " │ ├─ (it.info = 'rating')\n" + + " │ └─ TableAlias(it)\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" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (it.id)\n" + + " ├─ right-key: (miidx.info_type_id)\n" + + " └─ HashJoin\n" + + " ├─ ((mi.movie_id = mc.movie_id) AND (miidx.movie_id = mc.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\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" + + " │ ├─ (ct.kind = 'production companies')\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mc.movie_id, mc.movie_id)\n" + + " ├─ right-key: (mi.movie_id, miidx.movie_id)\n" + + " └─ LookupJoin\n" + + " ├─ (miidx.movie_id = t.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mi.movie_id = t.id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (kt.id = t.kind_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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ └─ TableAlias(kt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: kind_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (it2.id = mi.info_type_id)\n" + + " │ ├─ TableAlias(mi)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_info\n" + + " │ │ └─ columns: [movie_id info_type_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (it2.info = 'release dates')\n" + + " │ └─ TableAlias(it2)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ TableAlias(miidx)\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" + "", 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" + + " └─ HashJoin\n" + + " ├─ (it.id = miidx.info_type_id)\n" + " ├─ Filter\n" + - " │ ├─ ((NOT((t.title = ''))) AND (t.title LIKE '%Champion%' OR t.title LIKE '%Loser%'))\n" + - " │ └─ TableAlias(t)\n" + + " │ ├─ (it.info = 'rating')\n" + + " │ └─ TableAlias(it)\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" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (it.id)\n" + + " ├─ right-key: (miidx.info_type_id)\n" + + " └─ HashJoin\n" + + " ├─ ((mi.movie_id = mc.movie_id) AND (miidx.movie_id = mc.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\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" + + " │ ├─ (ct.kind = 'production companies')\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mc.movie_id, mc.movie_id)\n" + + " ├─ right-key: (mi.movie_id, miidx.movie_id)\n" + + " └─ LookupJoin\n" + + " ├─ (miidx.movie_id = t.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mi.movie_id = t.id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (kt.id = t.kind_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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ └─ TableAlias(kt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: kind_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (it2.id = mi.info_type_id)\n" + + " │ ├─ TableAlias(mi)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_info\n" + + " │ │ └─ columns: [movie_id info_type_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (it2.info = 'release dates')\n" + + " │ └─ TableAlias(it2)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ TableAlias(miidx)\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" + "", }, { @@ -3207,275 +3414,295 @@ WHERE cn.country_code ='[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as producing_company, min(miidx.info):1!null as rating, min(t.title):2!null as movie_about_winning]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(cn.name:20!null), MIN(miidx.info:5!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(cn.name:6!null), MIN(miidx.info:21!null), MIN(t.title:11!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" + - " │ │ │ └─ Eq\n" + - " │ │ │ ├─ kt.id:11!null\n" + - " │ │ │ └─ t.kind_id:2!null\n" + - " │ │ └─ Eq\n" + - " │ │ ├─ mc.movie_id:8!null\n" + - " │ │ └─ t.id:0!null\n" + - " │ └─ Eq\n" + - " │ ├─ miidx.movie_id:3!null\n" + - " │ └─ t.id:0!null\n" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ it.id:0!null\n" + + " │ └─ miidx.info_type_id:20!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" + + " │ ├─ Eq\n" + + " │ │ ├─ it.info:1!null\n" + + " │ │ └─ rating (longtext)\n" + + " │ └─ TableAlias(it)\n" + " │ └─ ProcessTable\n" + " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title kind_id]\n" + - " └─ InnerJoin\n" + - " ├─ AND\n" + - " │ ├─ AND\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" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(it.id:0!null)\n" + + " ├─ right-key: TUPLE(miidx.info_type_id:18!null)\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ it2.id:13!null\n" + - " │ │ └─ mi.info_type_id:7!null\n" + + " │ │ ├─ mi.movie_id:15!null\n" + + " │ │ └─ mc.movie_id:2!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" + + " │ ├─ miidx.movie_id:19!null\n" + + " │ └─ mc.movie_id:2!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ct.id:8!null\n" + + " │ │ └─ mc.company_type_id:4!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn.id:5!null\n" + + " │ │ │ └─ mc.company_id:3!null\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\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" + + " │ ├─ 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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mc.movie_id:2!null, mc.movie_id:2!null)\n" + + " ├─ right-key: TUPLE(mi.movie_id:5!null, miidx.movie_id:9!null)\n" + + " └─ LookupJoin\n" + + " ├─ Eq\n" + + " │ ├─ miidx.movie_id:19!null\n" + + " │ └─ t.id:10!null\n" + + " ├─ InnerJoin\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" + + " │ │ ├─ mi.movie_id:15!null\n" + + " │ │ └─ t.id:10!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ kt.id:13!null\n" + + " │ │ │ └─ t.kind_id:12!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" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: title\n" + + " │ │ │ └─ columns: [id title kind_id]\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" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ it2.id:17!null\n" + + " │ │ └─ mi.info_type_id:16!null\n" + + " │ ├─ TableAlias(mi)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_info\n" + + " │ │ └─ columns: [movie_id info_type_id]\n" + + " │ └─ Filter\n" + + " │ ├─ Eq\n" + + " │ │ ├─ it2.info:1!null\n" + + " │ │ └─ release dates (longtext)\n" + + " │ └─ TableAlias(it2)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ ├─ columns: [id info]\n" + + " │ ├─ colSet: (12,13)\n" + + " │ └─ tableId: 4\n" + + " └─ TableAlias(miidx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " ├─ index: [movie_info_idx.movie_id]\n" + + " ├─ keys: [mi.movie_id:15!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" + " └─ 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" + + " └─ HashJoin\n" + + " ├─ (it.id = miidx.info_type_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" + + " │ ├─ (it.info = 'rating')\n" + + " │ └─ TableAlias(it)\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" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (it.id)\n" + + " ├─ right-key: (miidx.info_type_id)\n" + + " └─ HashJoin\n" + + " ├─ ((mi.movie_id = mc.movie_id) AND (miidx.movie_id = mc.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\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" + + " │ ├─ (ct.kind = 'production companies')\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mc.movie_id, mc.movie_id)\n" + + " ├─ right-key: (mi.movie_id, miidx.movie_id)\n" + + " └─ LookupJoin\n" + + " ├─ (miidx.movie_id = t.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mi.movie_id = t.id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (kt.id = t.kind_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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ └─ TableAlias(kt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: kind_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (it2.id = mi.info_type_id)\n" + + " │ ├─ TableAlias(mi)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_info\n" + + " │ │ └─ columns: [movie_id info_type_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (it2.info = 'release dates')\n" + + " │ └─ TableAlias(it2)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ TableAlias(miidx)\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" + "", 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" + + " └─ HashJoin\n" + + " ├─ (it.id = miidx.info_type_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" + + " │ ├─ (it.info = 'rating')\n" + + " │ └─ TableAlias(it)\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" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (it.id)\n" + + " ├─ right-key: (miidx.info_type_id)\n" + + " └─ HashJoin\n" + + " ├─ ((mi.movie_id = mc.movie_id) AND (miidx.movie_id = mc.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\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" + + " │ ├─ (ct.kind = 'production companies')\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mc.movie_id, mc.movie_id)\n" + + " ├─ right-key: (mi.movie_id, miidx.movie_id)\n" + + " └─ LookupJoin\n" + + " ├─ (miidx.movie_id = t.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mi.movie_id = t.id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (kt.id = t.kind_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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ └─ TableAlias(kt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: kind_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (it2.id = mi.info_type_id)\n" + + " │ ├─ TableAlias(mi)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_info\n" + + " │ │ └─ columns: [movie_id info_type_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (it2.info = 'release dates')\n" + + " │ └─ TableAlias(it2)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ TableAlias(miidx)\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" + "", }, { @@ -3513,250 +3740,270 @@ WHERE cn.country_code ='[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as producing_company, min(miidx.info):1!null as rating, min(t.title):2!null as movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(cn.name:20!null), MIN(miidx.info:5!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(cn.name:6!null), MIN(miidx.info:21!null), MIN(t.title:11!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" + - " │ │ │ └─ Eq\n" + - " │ │ │ ├─ kt.id:11!null\n" + - " │ │ │ └─ t.kind_id:2!null\n" + - " │ │ └─ Eq\n" + - " │ │ ├─ mc.movie_id:8!null\n" + - " │ │ └─ t.id:0!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" + - " │ │ ├─ 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" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ it.id:0!null\n" + + " │ └─ miidx.info_type_id:20!null\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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(it.id:0!null)\n" + + " ├─ right-key: TUPLE(miidx.info_type_id:18!null)\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ it2.id:13!null\n" + - " │ │ └─ mi.info_type_id:7!null\n" + + " │ │ ├─ mi.movie_id:15!null\n" + + " │ │ └─ mc.movie_id:2!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" + + " │ ├─ miidx.movie_id:19!null\n" + + " │ └─ mc.movie_id:2!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ct.id:8!null\n" + + " │ │ └─ mc.company_type_id:4!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn.id:5!null\n" + + " │ │ │ └─ mc.company_id:3!null\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\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" + + " │ ├─ 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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mc.movie_id:2!null, mc.movie_id:2!null)\n" + + " ├─ right-key: TUPLE(mi.movie_id:5!null, miidx.movie_id:9!null)\n" + + " └─ LookupJoin\n" + + " ├─ Eq\n" + + " │ ├─ miidx.movie_id:19!null\n" + + " │ └─ t.id:10!null\n" + + " ├─ InnerJoin\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" + + " │ │ ├─ mi.movie_id:15!null\n" + + " │ │ └─ t.id:10!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ kt.id:13!null\n" + + " │ │ │ └─ t.kind_id:12!null\n" + + " │ │ ├─ TableAlias(t)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: title\n" + + " │ │ │ └─ columns: [id title kind_id]\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" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ it2.id:17!null\n" + + " │ │ └─ mi.info_type_id:16!null\n" + + " │ ├─ TableAlias(mi)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_info\n" + + " │ │ └─ columns: [movie_id info_type_id]\n" + + " │ └─ Filter\n" + + " │ ├─ Eq\n" + + " │ │ ├─ it2.info:1!null\n" + + " │ │ └─ release dates (longtext)\n" + + " │ └─ TableAlias(it2)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ ├─ columns: [id info]\n" + + " │ ├─ colSet: (12,13)\n" + + " │ └─ tableId: 4\n" + + " └─ TableAlias(miidx)\n" + + " └─ IndexedTableAccess(movie_info_idx)\n" + + " ├─ index: [movie_info_idx.movie_id]\n" + + " ├─ keys: [mi.movie_id:15!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" + " └─ 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" + - " ├─ 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" + + " └─ HashJoin\n" + + " ├─ (it.id = miidx.info_type_id)\n" + + " ├─ Filter\n" + + " │ ├─ (it.info = 'rating')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (it.id)\n" + + " ├─ right-key: (miidx.info_type_id)\n" + + " └─ HashJoin\n" + + " ├─ ((mi.movie_id = mc.movie_id) AND (miidx.movie_id = mc.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\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" + + " │ ├─ (ct.kind = 'production companies')\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mc.movie_id, mc.movie_id)\n" + + " ├─ right-key: (mi.movie_id, miidx.movie_id)\n" + + " └─ LookupJoin\n" + + " ├─ (miidx.movie_id = t.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mi.movie_id = t.id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ ├─ TableAlias(t)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: title\n" + + " │ │ │ └─ columns: [id title kind_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ └─ TableAlias(kt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: kind_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (it2.id = mi.info_type_id)\n" + + " │ ├─ TableAlias(mi)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_info\n" + + " │ │ └─ columns: [movie_id info_type_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (it2.info = 'release dates')\n" + + " │ └─ TableAlias(it2)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ TableAlias(miidx)\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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(cn.name) as producing_company, min(miidx.info) as rating, min(t.title) as movie]\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" + - " ├─ 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" + + " └─ HashJoin\n" + + " ├─ (it.id = miidx.info_type_id)\n" + + " ├─ Filter\n" + + " │ ├─ (it.info = 'rating')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (it.id)\n" + + " ├─ right-key: (miidx.info_type_id)\n" + + " └─ HashJoin\n" + + " ├─ ((mi.movie_id = mc.movie_id) AND (miidx.movie_id = mc.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\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" + + " │ ├─ (ct.kind = 'production companies')\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mc.movie_id, mc.movie_id)\n" + + " ├─ right-key: (mi.movie_id, miidx.movie_id)\n" + + " └─ LookupJoin\n" + + " ├─ (miidx.movie_id = t.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mi.movie_id = t.id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ ├─ TableAlias(t)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: title\n" + + " │ │ │ └─ columns: [id title kind_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ └─ TableAlias(kt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: kind_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (it2.id = mi.info_type_id)\n" + + " │ ├─ TableAlias(mi)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_info\n" + + " │ │ └─ columns: [movie_id info_type_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (it2.info = 'release dates')\n" + + " │ └─ TableAlias(it2)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ TableAlias(miidx)\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" + "", }, { @@ -3805,120 +4052,118 @@ WHERE it1.info = 'countries' ExpectedPlan: "Project\n" + " ├─ columns: [min(mi_idx.info):0!null as rating, min(t.title):1!null as northern_dark_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(mi_idx.info:8!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(mi_idx.info:12!null), MIN(t.title:1!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:0!null\n" + + " │ │ │ └─ mi.movie_id:17!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" + - " │ └─ 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" + + " │ └─ mi_idx.movie_id:10!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ kt.id:4!null\n" + + " │ │ └─ t.kind_id:2!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" + + " │ └─ 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" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ mk.movie_id:4!null\n" + - " │ │ │ └─ mi.movie_id:9!null\n" + + " │ │ │ ├─ it1.id:15!null\n" + + " │ │ │ └─ mi.info_type_id:18!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ mk.movie_id:4!null\n" + - " │ │ └─ mi_idx.movie_id:6!null\n" + + " │ │ ├─ mi.movie_id:17!null\n" + + " │ │ └─ mi_idx.movie_id:10!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" + + " │ ├─ mk.movie_id:6!null\n" + + " │ └─ mi.movie_id:17!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mk.movie_id:6!null\n" + + " │ │ └─ mi_idx.movie_id:10!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ k.id:8!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" + + " │ │ └─ 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" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:13!null\n" + + " │ │ │ └─ mi_idx.info_type_id:11!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" + + " │ │ └─ 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" + + " └─ 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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(mi_idx.info) as rating, min(t.title) as northern_dark_movie]\n" + @@ -3926,62 +4171,64 @@ 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" + + " ├─ InnerJoin\n" + + " │ ├─ (kt.id = t.kind_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" + + " │ └─ Filter\n" + + " │ ├─ (kt.kind = 'movie')\n" + + " │ └─ TableAlias(kt)\n" + + " │ └─ Table\n" + + " │ ├─ name: kind_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ InnerJoin\n" + + " ├─ (((it1.id = mi.info_type_id) AND (mi.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mi.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mk.movie_id = mi_idx.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (k.id = mk.keyword_id)\n" + + " │ │ ├─ TableAlias(mk)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ └─ columns: [movie_id keyword_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" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " └─ 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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(mi_idx.info) as rating, min(t.title) as northern_dark_movie]\n" + @@ -3989,62 +4236,64 @@ 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" + + " ├─ InnerJoin\n" + + " │ ├─ (kt.id = t.kind_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" + + " │ └─ Filter\n" + + " │ ├─ (kt.kind = 'movie')\n" + + " │ └─ TableAlias(kt)\n" + + " │ └─ Table\n" + + " │ ├─ name: kind_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ InnerJoin\n" + + " ├─ (((it1.id = mi.info_type_id) AND (mi.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mi.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mk.movie_id = mi_idx.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (k.id = mk.keyword_id)\n" + + " │ │ ├─ TableAlias(mk)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ └─ columns: [movie_id keyword_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" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " └─ 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" + "", }, { @@ -4094,126 +4343,124 @@ WHERE it1.info = 'countries' ExpectedPlan: "Project\n" + " ├─ columns: [min(mi_idx.info):0!null as rating, min(t.title):1!null as western_dark_production]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(mi_idx.info:8!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(mi_idx.info:12!null), MIN(t.title:1!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:0!null\n" + + " │ │ │ └─ mi.movie_id:17!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" + - " │ └─ 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" + + " │ └─ mi_idx.movie_id:10!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ kt.id:4!null\n" + + " │ │ └─ t.kind_id:2!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" + + " │ └─ 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" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ mk.movie_id:4!null\n" + - " │ │ │ └─ mi.movie_id:9!null\n" + + " │ │ │ ├─ it1.id:15!null\n" + + " │ │ │ └─ mi.info_type_id:18!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ mk.movie_id:4!null\n" + - " │ │ └─ mi_idx.movie_id:6!null\n" + + " │ │ ├─ mi.movie_id:17!null\n" + + " │ │ └─ mi_idx.movie_id:10!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:6!null\n" + + " │ └─ mi.movie_id:17!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mk.movie_id:6!null\n" + + " │ │ └─ mi_idx.movie_id:10!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ k.id:8!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" + + " │ │ └─ 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" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:13!null\n" + + " │ │ │ └─ mi_idx.info_type_id:11!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" + + " │ │ └─ 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" + + " └─ 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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(mi_idx.info) as rating, min(t.title) as western_dark_production]\n" + @@ -4221,62 +4468,64 @@ 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" + + " ├─ InnerJoin\n" + + " │ ├─ (kt.id = t.kind_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" + + " │ └─ Filter\n" + + " │ ├─ (kt.kind = 'movie')\n" + + " │ └─ TableAlias(kt)\n" + + " │ └─ Table\n" + + " │ ├─ name: kind_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ InnerJoin\n" + + " ├─ (((it1.id = mi.info_type_id) AND (mi.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mi.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mk.movie_id = mi_idx.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (k.id = mk.keyword_id)\n" + + " │ │ ├─ TableAlias(mk)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ └─ columns: [movie_id keyword_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" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " └─ 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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(mi_idx.info) as rating, min(t.title) as western_dark_production]\n" + @@ -4284,62 +4533,64 @@ 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" + + " ├─ InnerJoin\n" + + " │ ├─ (kt.id = t.kind_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" + + " │ └─ Filter\n" + + " │ ├─ (kt.kind = 'movie')\n" + + " │ └─ TableAlias(kt)\n" + + " │ └─ Table\n" + + " │ ├─ name: kind_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ InnerJoin\n" + + " ├─ (((it1.id = mi.info_type_id) AND (mi.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mi.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mk.movie_id = mi_idx.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (k.id = mk.keyword_id)\n" + + " │ │ ├─ TableAlias(mk)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ └─ columns: [movie_id keyword_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" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " └─ 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" + "", }, { @@ -4390,123 +4641,121 @@ WHERE it1.info = 'countries' ExpectedPlan: "Project\n" + " ├─ columns: [min(mi_idx.info):0!null as rating, min(t.title):1!null as north_european_dark_production]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(mi_idx.info:8!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(mi_idx.info:12!null), MIN(t.title:1!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:0!null\n" + + " │ │ │ └─ mi.movie_id:17!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" + - " │ └─ 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" + + " │ └─ mi_idx.movie_id:10!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ kt.id:4!null\n" + + " │ │ └─ t.kind_id:2!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" + + " │ └─ 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" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ mk.movie_id:4!null\n" + - " │ │ │ └─ mi.movie_id:9!null\n" + + " │ │ │ ├─ it1.id:15!null\n" + + " │ │ │ └─ mi.info_type_id:18!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ mk.movie_id:4!null\n" + - " │ │ └─ mi_idx.movie_id:6!null\n" + + " │ │ ├─ mi.movie_id:17!null\n" + + " │ │ └─ mi_idx.movie_id:10!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), 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" + + " │ ├─ mk.movie_id:6!null\n" + + " │ └─ mi.movie_id:17!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mk.movie_id:6!null\n" + + " │ │ └─ mi_idx.movie_id:10!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ k.id:8!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" + + " │ │ └─ 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" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:13!null\n" + + " │ │ │ └─ mi_idx.info_type_id:11!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" + + " │ │ └─ 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" + + " └─ 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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(mi_idx.info) as rating, min(t.title) as north_european_dark_production]\n" + @@ -4514,62 +4763,64 @@ 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" + + " ├─ InnerJoin\n" + + " │ ├─ (kt.id = t.kind_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" + + " │ └─ Filter\n" + + " │ ├─ (kt.kind HASH IN ('movie', 'episode'))\n" + + " │ └─ TableAlias(kt)\n" + + " │ └─ Table\n" + + " │ ├─ name: kind_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ InnerJoin\n" + + " ├─ (((it1.id = mi.info_type_id) AND (mi.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mi.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mk.movie_id = mi_idx.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (k.id = mk.keyword_id)\n" + + " │ │ ├─ TableAlias(mk)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ └─ columns: [movie_id keyword_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" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " └─ 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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(mi_idx.info) as rating, min(t.title) as north_european_dark_production]\n" + @@ -4577,62 +4828,64 @@ 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" + + " ├─ InnerJoin\n" + + " │ ├─ (kt.id = t.kind_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" + + " │ └─ Filter\n" + + " │ ├─ (kt.kind HASH IN ('movie', 'episode'))\n" + + " │ └─ TableAlias(kt)\n" + + " │ └─ Table\n" + + " │ ├─ name: kind_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ InnerJoin\n" + + " ├─ (((it1.id = mi.info_type_id) AND (mi.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mi.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mk.movie_id = mi_idx.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (k.id = mk.keyword_id)\n" + + " │ │ ├─ TableAlias(mk)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ └─ columns: [movie_id keyword_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" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " └─ 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" + "", }, { @@ -4674,261 +4927,289 @@ WHERE cn.country_code = '[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(mi.info):0!null as release_date, min(t.title):1!null as internet_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(mi.info:7!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(mi.info:4!null), MIN(t.title:18!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + " │ │ │ ├─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ └─ at.movie_id:19!null\n" + + " │ │ │ │ ├─ t.id:17!null\n" + + " │ │ │ │ └─ at.movie_id:1!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mi.movie_id:5!null\n" + + " │ │ │ ├─ t.id:17!null\n" + + " │ │ │ └─ mi.movie_id:2!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mk.movie_id:3!null\n" + + " │ │ ├─ t.id:17!null\n" + + " │ │ └─ mk.movie_id:15!null\n" + " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + - " │ └─ mc.movie_id:9!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" + - " ├─ 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:3!null\n" + - " │ │ └─ at.movie_id:19!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" + - " │ └─ 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" + + " │ ├─ t.id:17!null\n" + + " │ └─ mc.movie_id:8!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ k.id:0!null\n" + + " │ │ └─ mk.keyword_id:16!null\n" + + " │ ├─ TableAlias(k)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(k.id:0!null)\n" + + " │ ├─ right-key: TUPLE(mk.keyword_id:15!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ AND\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mc.movie_id:8!null\n" + + " │ │ │ │ └─ at.movie_id:1!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mi.movie_id:2!null\n" + + " │ │ │ └─ at.movie_id:1!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ mk.movie_id:15!null\n" + + " │ │ └─ at.movie_id:1!null\n" + + " │ ├─ TableAlias(at)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: aka_title\n" + + " │ │ └─ columns: [movie_id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(at.movie_id:1!null, at.movie_id:1!null, at.movie_id:1!null)\n" + + " │ ├─ right-key: TUPLE(mc.movie_id:6!null, mi.movie_id:0!null, mk.movie_id:13!null)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mi.movie_id:2!null\n" + + " │ │ │ └─ mc.movie_id:8!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ it1.id:6!null\n" + + " │ │ │ │ └─ mi.info_type_id:3!null\n" + + " │ │ │ ├─ Filter\n" + + " │ │ │ │ ├─ AND\n" + + " │ │ │ │ │ ├─ mi.note LIKE '%internet%'\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 note]\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" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ct.id:14!null\n" + + " │ │ │ └─ mc.company_type_id:10!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ cn.id:12!null\n" + + " │ │ │ │ └─ mc.company_id:9!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" + + " │ │ │ └─ 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(ct)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ TableAlias(mk)\n" + + " │ └─ IndexedTableAccess(movie_keyword)\n" + + " │ ├─ index: [movie_keyword.movie_id]\n" + + " │ ├─ keys: [mi.movie_id:2!null]\n" + + " │ ├─ colSet: (37-39)\n" + + " │ ├─ tableId: 8\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_keyword\n" + + " │ └─ columns: [movie_id keyword_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(at.movie_id:1!null, mi.movie_id:2!null, mk.movie_id:15!null, mc.movie_id:8!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(mi.info) as release_date, min(t.title) as internet_movie]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ ((((t.id = at.movie_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mc.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" + - " ├─ ((((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" + - " │ └─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(k)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (((mc.movie_id = at.movie_id) AND (mi.movie_id = at.movie_id)) AND (mk.movie_id = at.movie_id))\n" + + " │ ├─ TableAlias(at)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: aka_title\n" + + " │ │ └─ columns: [movie_id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (at.movie_id, at.movie_id, at.movie_id)\n" + + " │ ├─ right-key: (mc.movie_id, mi.movie_id, mk.movie_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (mi.movie_id = mc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ │ ├─ Filter\n" + + " │ │ │ │ ├─ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + + " │ │ │ │ └─ TableAlias(mi)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_info\n" + + " │ │ │ │ └─ columns: [movie_id info_type_id info note]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'release dates')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (cn.id = mc.company_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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (cn.country_code = '[us]')\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id country_code]\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [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" + + " └─ HashLookup\n" + + " ├─ left-key: (at.movie_id, mi.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id)\n" + + " └─ Filter\n" + + " ├─ (t.production_year > 2000)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(mi.info) as release_date, min(t.title) as internet_movie]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ ((((t.id = at.movie_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mc.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" + - " ├─ ((((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" + - " │ └─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(k)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (((mc.movie_id = at.movie_id) AND (mi.movie_id = at.movie_id)) AND (mk.movie_id = at.movie_id))\n" + + " │ ├─ TableAlias(at)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: aka_title\n" + + " │ │ └─ columns: [movie_id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (at.movie_id, at.movie_id, at.movie_id)\n" + + " │ ├─ right-key: (mc.movie_id, mi.movie_id, mk.movie_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (mi.movie_id = mc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ │ ├─ Filter\n" + + " │ │ │ │ ├─ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + + " │ │ │ │ └─ TableAlias(mi)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_info\n" + + " │ │ │ │ └─ columns: [movie_id info_type_id info note]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'release dates')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (cn.id = mc.company_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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (cn.country_code = '[us]')\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id country_code]\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [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" + + " └─ HashLookup\n" + + " ├─ left-key: (at.movie_id, mi.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id)\n" + + " └─ Filter\n" + + " ├─ (t.production_year > 2000)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\n" + "", }, { @@ -4971,269 +5252,297 @@ WHERE cn.country_code = '[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(mi.info):0!null as release_date, min(t.title):1!null as youtube_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(mi.info:7!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(mi.info:4!null), MIN(t.title:19!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + " │ │ │ ├─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ └─ at.movie_id:20!null\n" + + " │ │ │ │ ├─ t.id:18!null\n" + + " │ │ │ │ └─ at.movie_id:1!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mi.movie_id:5!null\n" + + " │ │ │ ├─ t.id:18!null\n" + + " │ │ │ └─ mi.movie_id:2!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mk.movie_id:3!null\n" + + " │ │ ├─ t.id:18!null\n" + + " │ │ └─ mk.movie_id:16!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" + - " │ │ └─ 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" + - " │ │ │ ├─ 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:3!null\n" + - " │ │ └─ at.movie_id:20!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" + + " │ ├─ t.id:18!null\n" + + " │ └─ mc.movie_id:8!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ k.id:0!null\n" + + " │ │ └─ mk.keyword_id:17!null\n" + + " │ ├─ TableAlias(k)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(k.id:0!null)\n" + + " │ ├─ right-key: TUPLE(mk.keyword_id:16!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ AND\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mc.movie_id:8!null\n" + + " │ │ │ │ └─ at.movie_id:1!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mi.movie_id:2!null\n" + + " │ │ │ └─ at.movie_id:1!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ mk.movie_id:16!null\n" + + " │ │ └─ at.movie_id:1!null\n" + + " │ ├─ TableAlias(at)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: aka_title\n" + + " │ │ └─ columns: [movie_id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(at.movie_id:1!null, at.movie_id:1!null, at.movie_id:1!null)\n" + + " │ ├─ right-key: TUPLE(mc.movie_id:6!null, mi.movie_id:0!null, mk.movie_id:14!null)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mi.movie_id:2!null\n" + + " │ │ │ └─ mc.movie_id:8!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ it1.id:6!null\n" + + " │ │ │ │ └─ mi.info_type_id:3!null\n" + + " │ │ │ ├─ Filter\n" + + " │ │ │ │ ├─ AND\n" + + " │ │ │ │ │ ├─ mi.note LIKE '%internet%'\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 note]\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" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ct.id:15!null\n" + + " │ │ │ └─ mc.company_type_id:10!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ cn.id:12!null\n" + + " │ │ │ │ └─ mc.company_id:9!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" + + " │ │ │ └─ 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(ct)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ TableAlias(mk)\n" + + " │ └─ IndexedTableAccess(movie_keyword)\n" + + " │ ├─ index: [movie_keyword.movie_id]\n" + + " │ ├─ keys: [mi.movie_id:2!null]\n" + + " │ ├─ colSet: (37-39)\n" + + " │ ├─ tableId: 8\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_keyword\n" + + " │ └─ columns: [movie_id keyword_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(at.movie_id:1!null, mi.movie_id:2!null, mk.movie_id:16!null, mc.movie_id:8!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ Filter\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" + - " │ └─ 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" + + " │ ├─ 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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(mi.info) as release_date, min(t.title) as youtube_movie]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ ((((t.id = at.movie_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mc.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" + - " ├─ ((((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" + - " │ └─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(k)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (((mc.movie_id = at.movie_id) AND (mi.movie_id = at.movie_id)) AND (mk.movie_id = at.movie_id))\n" + + " │ ├─ TableAlias(at)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: aka_title\n" + + " │ │ └─ columns: [movie_id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (at.movie_id, at.movie_id, at.movie_id)\n" + + " │ ├─ right-key: (mc.movie_id, mi.movie_id, mk.movie_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (mi.movie_id = mc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ │ ├─ Filter\n" + + " │ │ │ │ ├─ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + + " │ │ │ │ └─ TableAlias(mi)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_info\n" + + " │ │ │ │ └─ columns: [movie_id info_type_id info note]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'release dates')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (cn.id = mc.company_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" + + " │ │ │ └─ 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(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [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" + + " └─ HashLookup\n" + + " ├─ left-key: (at.movie_id, mi.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(mi.info) as release_date, min(t.title) as youtube_movie]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ ((((t.id = at.movie_id) AND (t.id = mi.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mc.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" + - " ├─ ((((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" + - " │ └─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(k)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (((mc.movie_id = at.movie_id) AND (mi.movie_id = at.movie_id)) AND (mk.movie_id = at.movie_id))\n" + + " │ ├─ TableAlias(at)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: aka_title\n" + + " │ │ └─ columns: [movie_id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (at.movie_id, at.movie_id, at.movie_id)\n" + + " │ ├─ right-key: (mc.movie_id, mi.movie_id, mk.movie_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (mi.movie_id = mc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ │ ├─ Filter\n" + + " │ │ │ │ ├─ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + + " │ │ │ │ └─ TableAlias(mi)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_info\n" + + " │ │ │ │ └─ columns: [movie_id info_type_id info note]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'release dates')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (cn.id = mc.company_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" + + " │ │ │ └─ 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(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [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" + + " └─ HashLookup\n" + + " ├─ left-key: (at.movie_id, mi.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.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" + "", }, { @@ -5275,258 +5584,286 @@ WHERE cn.country_code = '[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(mi.info):0!null as release_date, min(t.title):1!null as modern_american_internet_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(mi.info:7!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(mi.info:4!null), MIN(t.title:17!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + " │ │ │ ├─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ └─ at.movie_id:18!null\n" + + " │ │ │ │ ├─ t.id:16!null\n" + + " │ │ │ │ └─ at.movie_id:1!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mi.movie_id:5!null\n" + + " │ │ │ ├─ t.id:16!null\n" + + " │ │ │ └─ mi.movie_id:2!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mk.movie_id:3!null\n" + + " │ │ ├─ t.id:16!null\n" + + " │ │ └─ mk.movie_id:14!null\n" + " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + - " │ └─ mc.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" + - " ├─ 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:3!null\n" + - " │ │ └─ at.movie_id:18!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" + - " └─ 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" + - " │ └─ 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" + + " │ ├─ t.id:16!null\n" + + " │ └─ mc.movie_id:8!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ k.id:0!null\n" + + " │ │ └─ mk.keyword_id:15!null\n" + + " │ ├─ TableAlias(k)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(k.id:0!null)\n" + + " │ ├─ right-key: TUPLE(mk.keyword_id:14!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ AND\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mc.movie_id:8!null\n" + + " │ │ │ │ └─ at.movie_id:1!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mi.movie_id:2!null\n" + + " │ │ │ └─ at.movie_id:1!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ mk.movie_id:14!null\n" + + " │ │ └─ at.movie_id:1!null\n" + + " │ ├─ TableAlias(at)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: aka_title\n" + + " │ │ └─ columns: [movie_id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(at.movie_id:1!null, at.movie_id:1!null, at.movie_id:1!null)\n" + + " │ ├─ right-key: TUPLE(mc.movie_id:6!null, mi.movie_id:0!null, mk.movie_id:12!null)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mi.movie_id:2!null\n" + + " │ │ │ └─ mc.movie_id:8!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ it1.id:6!null\n" + + " │ │ │ │ └─ mi.info_type_id:3!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" + + " │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_info\n" + + " │ │ │ │ └─ columns: [movie_id info_type_id info note]\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" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ct.id:13!null\n" + + " │ │ │ └─ mc.company_type_id:10!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ cn.id:11!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" + + " │ │ │ └─ 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(ct)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ TableAlias(mk)\n" + + " │ └─ IndexedTableAccess(movie_keyword)\n" + + " │ ├─ index: [movie_keyword.movie_id]\n" + + " │ ├─ keys: [mi.movie_id:2!null]\n" + + " │ ├─ colSet: (37-39)\n" + + " │ ├─ tableId: 8\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_keyword\n" + + " │ └─ columns: [movie_id keyword_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(at.movie_id:1!null, mi.movie_id:2!null, mk.movie_id:14!null, mc.movie_id:8!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(mi.info) as release_date, min(t.title) as modern_american_internet_movie]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ ((((t.id = at.movie_id) AND (t.id = mi.movie_id)) AND (t.id = mk.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" + - " ├─ ((((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" + - " │ └─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(k)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (((mc.movie_id = at.movie_id) AND (mi.movie_id = at.movie_id)) AND (mk.movie_id = at.movie_id))\n" + + " │ ├─ TableAlias(at)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: aka_title\n" + + " │ │ └─ columns: [movie_id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (at.movie_id, at.movie_id, at.movie_id)\n" + + " │ ├─ right-key: (mc.movie_id, mi.movie_id, mk.movie_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (mi.movie_id = mc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_info\n" + + " │ │ │ │ └─ columns: [movie_id info_type_id info note]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'release dates')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ │ ├─ TableAlias(mc)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_companies\n" + + " │ │ │ │ └─ columns: [movie_id company_id company_type_id]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (cn.country_code = '[us]')\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id country_code]\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [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" + + " └─ HashLookup\n" + + " ├─ left-key: (at.movie_id, mi.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id)\n" + + " └─ Filter\n" + + " ├─ (t.production_year > 1990)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(mi.info) as release_date, min(t.title) as modern_american_internet_movie]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ ((((t.id = at.movie_id) AND (t.id = mi.movie_id)) AND (t.id = mk.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" + - " ├─ ((((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" + - " │ └─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(k)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (((mc.movie_id = at.movie_id) AND (mi.movie_id = at.movie_id)) AND (mk.movie_id = at.movie_id))\n" + + " │ ├─ TableAlias(at)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: aka_title\n" + + " │ │ └─ columns: [movie_id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (at.movie_id, at.movie_id, at.movie_id)\n" + + " │ ├─ right-key: (mc.movie_id, mi.movie_id, mk.movie_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (mi.movie_id = mc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_info\n" + + " │ │ │ │ └─ columns: [movie_id info_type_id info note]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'release dates')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ │ ├─ TableAlias(mc)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_companies\n" + + " │ │ │ │ └─ columns: [movie_id company_id company_type_id]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (cn.country_code = '[us]')\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id country_code]\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [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" + + " └─ HashLookup\n" + + " ├─ left-key: (at.movie_id, mi.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id)\n" + + " └─ Filter\n" + + " ├─ (t.production_year > 1990)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\n" + "", }, { @@ -5565,251 +5902,279 @@ WHERE cn.country_code = '[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(at.title):0!null as aka_title, min(t.title):1!null as internet_movie_title]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(at.title:18!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(at.title:2!null), MIN(t.title:17!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + " │ │ │ ├─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ └─ at.movie_id:17!null\n" + + " │ │ │ │ ├─ t.id:16!null\n" + + " │ │ │ │ └─ at.movie_id:1!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mi.movie_id:5!null\n" + + " │ │ │ ├─ t.id:16!null\n" + + " │ │ │ └─ mi.movie_id:3!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mk.movie_id:3!null\n" + + " │ │ ├─ t.id:16!null\n" + + " │ │ └─ mk.movie_id:14!null\n" + " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + + " │ ├─ t.id:16!null\n" + " │ └─ mc.movie_id:8!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" + - " │ ├─ 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:3!null\n" + - " │ │ └─ at.movie_id:17!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" + - " └─ 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" + - " │ └─ 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" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ k.id:0!null\n" + + " │ │ └─ mk.keyword_id:15!null\n" + + " │ ├─ TableAlias(k)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(k.id:0!null)\n" + + " │ ├─ right-key: TUPLE(mk.keyword_id:14!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ AND\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mc.movie_id:8!null\n" + + " │ │ │ │ └─ at.movie_id:1!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mi.movie_id:3!null\n" + + " │ │ │ └─ at.movie_id:1!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ mk.movie_id:14!null\n" + + " │ │ └─ at.movie_id:1!null\n" + + " │ ├─ TableAlias(at)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: aka_title\n" + + " │ │ └─ columns: [movie_id title]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(at.movie_id:1!null, at.movie_id:1!null, at.movie_id:1!null)\n" + + " │ ├─ right-key: TUPLE(mc.movie_id:5!null, mi.movie_id:0!null, mk.movie_id:11!null)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mi.movie_id:3!null\n" + + " │ │ │ └─ mc.movie_id:8!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ it1.id:6!null\n" + + " │ │ │ │ └─ mi.info_type_id:4!null\n" + + " │ │ │ ├─ Filter\n" + + " │ │ │ │ ├─ mi.note LIKE '%internet%'\n" + + " │ │ │ │ └─ TableAlias(mi)\n" + + " │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_info\n" + + " │ │ │ │ └─ columns: [movie_id info_type_id note]\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" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ct.id:13!null\n" + + " │ │ │ └─ mc.company_type_id:10!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ cn.id:11!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" + + " │ │ │ └─ 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(ct)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ TableAlias(mk)\n" + + " │ └─ IndexedTableAccess(movie_keyword)\n" + + " │ ├─ index: [movie_keyword.movie_id]\n" + + " │ ├─ keys: [mi.movie_id:3!null]\n" + + " │ ├─ colSet: (37-39)\n" + + " │ ├─ tableId: 8\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_keyword\n" + + " │ └─ columns: [movie_id keyword_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(at.movie_id:1!null, mi.movie_id:3!null, mk.movie_id:14!null, mc.movie_id:8!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(at.title) as aka_title, min(t.title) as internet_movie_title]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(at.title), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ ((((t.id = at.movie_id) AND (t.id = mi.movie_id)) AND (t.id = mk.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" + - " ├─ ((((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" + - " │ └─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(k)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (((mc.movie_id = at.movie_id) AND (mi.movie_id = at.movie_id)) AND (mk.movie_id = at.movie_id))\n" + + " │ ├─ TableAlias(at)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: aka_title\n" + + " │ │ └─ columns: [movie_id title]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (at.movie_id, at.movie_id, at.movie_id)\n" + + " │ ├─ right-key: (mc.movie_id, mi.movie_id, mk.movie_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (mi.movie_id = mc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ │ ├─ Filter\n" + + " │ │ │ │ ├─ mi.note LIKE '%internet%'\n" + + " │ │ │ │ └─ TableAlias(mi)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_info\n" + + " │ │ │ │ └─ columns: [movie_id info_type_id note]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'release dates')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ │ ├─ TableAlias(mc)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_companies\n" + + " │ │ │ │ └─ columns: [movie_id company_id company_type_id]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (cn.country_code = '[us]')\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id country_code]\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [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" + + " └─ HashLookup\n" + + " ├─ left-key: (at.movie_id, mi.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id)\n" + + " └─ Filter\n" + + " ├─ (t.production_year > 1990)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(at.title) as aka_title, min(t.title) as internet_movie_title]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(at.title), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ ((((t.id = at.movie_id) AND (t.id = mi.movie_id)) AND (t.id = mk.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" + - " ├─ ((((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" + - " │ └─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(k)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (((mc.movie_id = at.movie_id) AND (mi.movie_id = at.movie_id)) AND (mk.movie_id = at.movie_id))\n" + + " │ ├─ TableAlias(at)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: aka_title\n" + + " │ │ └─ columns: [movie_id title]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (at.movie_id, at.movie_id, at.movie_id)\n" + + " │ ├─ right-key: (mc.movie_id, mi.movie_id, mk.movie_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (mi.movie_id = mc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ │ ├─ Filter\n" + + " │ │ │ │ ├─ mi.note LIKE '%internet%'\n" + + " │ │ │ │ └─ TableAlias(mi)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_info\n" + + " │ │ │ │ └─ columns: [movie_id info_type_id note]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'release dates')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ │ ├─ TableAlias(mc)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_companies\n" + + " │ │ │ │ └─ columns: [movie_id company_id company_type_id]\n" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (cn.country_code = '[us]')\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id country_code]\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [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" + + " └─ HashLookup\n" + + " ├─ left-key: (at.movie_id, mi.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id)\n" + + " └─ Filter\n" + + " ├─ (t.production_year > 1990)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\n" + "", }, { @@ -5844,20 +6209,20 @@ WHERE cn.country_code ='[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(an.name):0!null as cool_actor_pseudonym, min(t.title):1!null as series_named_after_char]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(an.name:15!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(an.name:13!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ ci.movie_id:13!null\n" + + " │ │ │ ├─ ci.movie_id:11!null\n" + " │ │ │ └─ t.id:0!null\n" + " │ │ └─ Eq\n" + " │ │ ├─ t.id:0!null\n" + " │ │ └─ mk.movie_id:4!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + - " │ └─ mc.movie_id:6!null\n" + + " │ └─ mc.movie_id:8!null\n" + " ├─ Filter\n" + " │ ├─ AND\n" + " │ │ ├─ GreaterThanOrEqual\n" + @@ -5874,11 +6239,11 @@ WHERE cn.country_code ='[us]' " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ an.person_id:14!null\n" + + " │ │ ├─ an.person_id:12!null\n" + " │ │ └─ n.id:3!null\n" + " │ └─ Eq\n" + " │ ├─ n.id:3!null\n" + - " │ └─ ci.person_id:12!null\n" + + " │ └─ ci.person_id:10!null\n" + " ├─ TableAlias(n)\n" + " │ └─ ProcessTable\n" + " │ └─ Table\n" + @@ -5886,69 +6251,67 @@ WHERE cn.country_code ='[us]' " │ └─ 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" + + " │ │ ├─ ci.movie_id:11!null\n" + + " │ │ └─ mk.movie_id:4!null\n" + " │ └─ Eq\n" + - " │ ├─ mc.movie_id:6!null\n" + + " │ ├─ mc.movie_id:8!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" + + " │ ├─ Eq\n" + + " │ │ ├─ mk.keyword_id:5!null\n" + + " │ │ └─ k.id:6!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_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" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ mc.company_id:9!null\n" + + " │ └─ cn.id:14!null\n" + + " ├─ InnerJoin\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" + + " │ │ ├─ ci.movie_id:11!null\n" + + " │ │ └─ mc.movie_id:8!null\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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:10!null]\n" + + " │ ├─ colSet: (1-8)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: aka_name\n" + + " │ └─ columns: [person_id name]\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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(an.name) as cool_actor_pseudonym, min(t.title) as series_named_after_char]\n" + @@ -5970,41 +6333,43 @@ WHERE cn.country_code ='[us]' " │ ├─ 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" + + " ├─ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_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" + + " │ └─ Filter\n" + + " │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ └─ TableAlias(k)\n" + + " │ └─ Table\n" + + " │ ├─ name: keyword\n" + + " │ └─ columns: [id keyword]\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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(an.name) as cool_actor_pseudonym, min(t.title) as series_named_after_char]\n" + @@ -6026,41 +6391,43 @@ WHERE cn.country_code ='[us]' " │ ├─ 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" + + " ├─ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_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" + + " │ └─ Filter\n" + + " │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ └─ TableAlias(k)\n" + + " │ └─ Table\n" + + " │ ├─ name: keyword\n" + + " │ └─ columns: [id keyword]\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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", }, { @@ -6093,20 +6460,20 @@ WHERE cn.country_code ='[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(an.name):0!null as cool_actor_pseudonym, min(t.title):1!null as series_named_after_char]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(an.name:14!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(an.name:12!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ ci.movie_id:12!null\n" + + " │ │ │ ├─ ci.movie_id:10!null\n" + " │ │ │ └─ t.id:0!null\n" + " │ │ └─ Eq\n" + " │ │ ├─ t.id:0!null\n" + " │ │ └─ mk.movie_id:3!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + - " │ └─ mc.movie_id:5!null\n" + + " │ └─ mc.movie_id:7!null\n" + " ├─ TableAlias(t)\n" + " │ └─ ProcessTable\n" + " │ └─ Table\n" + @@ -6115,11 +6482,11 @@ WHERE cn.country_code ='[us]' " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ an.person_id:13!null\n" + + " │ │ ├─ an.person_id:11!null\n" + " │ │ └─ n.id:2!null\n" + " │ └─ Eq\n" + " │ ├─ n.id:2!null\n" + - " │ └─ ci.person_id:11!null\n" + + " │ └─ ci.person_id:9!null\n" + " ├─ TableAlias(n)\n" + " │ └─ ProcessTable\n" + " │ └─ Table\n" + @@ -6127,69 +6494,67 @@ WHERE cn.country_code ='[us]' " │ └─ 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" + + " │ │ ├─ ci.movie_id:10!null\n" + + " │ │ └─ mk.movie_id:3!null\n" + " │ └─ Eq\n" + - " │ ├─ mc.movie_id:5!null\n" + + " │ ├─ mc.movie_id:7!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" + + " │ ├─ Eq\n" + + " │ │ ├─ mk.keyword_id:4!null\n" + + " │ │ └─ k.id:5!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_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" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ mc.company_id:8!null\n" + + " │ └─ cn.id:13!null\n" + + " ├─ InnerJoin\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" + + " │ │ ├─ ci.movie_id:10!null\n" + + " │ │ └─ mc.movie_id:7!null\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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:9!null]\n" + + " │ ├─ colSet: (1-8)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: aka_name\n" + + " │ └─ columns: [person_id name]\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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(an.name) as cool_actor_pseudonym, min(t.title) as series_named_after_char]\n" + @@ -6209,41 +6574,43 @@ WHERE cn.country_code ='[us]' " │ ├─ 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" + + " ├─ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_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" + + " │ └─ Filter\n" + + " │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ └─ TableAlias(k)\n" + + " │ └─ Table\n" + + " │ ├─ name: keyword\n" + + " │ └─ columns: [id keyword]\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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(an.name) as cool_actor_pseudonym, min(t.title) as series_named_after_char]\n" + @@ -6263,41 +6630,43 @@ WHERE cn.country_code ='[us]' " │ ├─ 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" + + " ├─ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_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" + + " │ └─ Filter\n" + + " │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ └─ TableAlias(k)\n" + + " │ └─ Table\n" + + " │ ├─ name: keyword\n" + + " │ └─ columns: [id keyword]\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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", }, { @@ -6331,20 +6700,20 @@ WHERE cn.country_code ='[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(an.name):0!null as cool_actor_pseudonym, min(t.title):1!null as series_named_after_char]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(an.name:15!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(an.name:13!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ ci.movie_id:13!null\n" + + " │ │ │ ├─ ci.movie_id:11!null\n" + " │ │ │ └─ t.id:0!null\n" + " │ │ └─ Eq\n" + " │ │ ├─ t.id:0!null\n" + " │ │ └─ mk.movie_id:4!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + - " │ └─ mc.movie_id:6!null\n" + + " │ └─ mc.movie_id:8!null\n" + " ├─ Filter\n" + " │ ├─ LessThan\n" + " │ │ ├─ t.episode_nr:2\n" + @@ -6357,11 +6726,11 @@ WHERE cn.country_code ='[us]' " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ an.person_id:14!null\n" + + " │ │ ├─ an.person_id:12!null\n" + " │ │ └─ n.id:3!null\n" + " │ └─ Eq\n" + " │ ├─ n.id:3!null\n" + - " │ └─ ci.person_id:12!null\n" + + " │ └─ ci.person_id:10!null\n" + " ├─ TableAlias(n)\n" + " │ └─ ProcessTable\n" + " │ └─ Table\n" + @@ -6369,69 +6738,67 @@ WHERE cn.country_code ='[us]' " │ └─ 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" + + " │ │ ├─ ci.movie_id:11!null\n" + + " │ │ └─ mk.movie_id:4!null\n" + " │ └─ Eq\n" + - " │ ├─ mc.movie_id:6!null\n" + + " │ ├─ mc.movie_id:8!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" + + " │ ├─ Eq\n" + + " │ │ ├─ mk.keyword_id:5!null\n" + + " │ │ └─ k.id:6!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_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" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ mc.company_id:9!null\n" + + " │ └─ cn.id:14!null\n" + + " ├─ InnerJoin\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" + + " │ │ ├─ ci.movie_id:11!null\n" + + " │ │ └─ mc.movie_id:8!null\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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:10!null]\n" + + " │ ├─ colSet: (1-8)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: aka_name\n" + + " │ └─ columns: [person_id name]\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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(an.name) as cool_actor_pseudonym, min(t.title) as series_named_after_char]\n" + @@ -6453,41 +6820,43 @@ WHERE cn.country_code ='[us]' " │ ├─ 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" + + " ├─ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_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" + + " │ └─ Filter\n" + + " │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ └─ TableAlias(k)\n" + + " │ └─ Table\n" + + " │ ├─ name: keyword\n" + + " │ └─ columns: [id keyword]\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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(an.name) as cool_actor_pseudonym, min(t.title) as series_named_after_char]\n" + @@ -6509,41 +6878,43 @@ WHERE cn.country_code ='[us]' " │ ├─ 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" + + " ├─ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_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" + + " │ └─ Filter\n" + + " │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ └─ TableAlias(k)\n" + + " │ └─ Table\n" + + " │ ├─ name: keyword\n" + + " │ └─ columns: [id keyword]\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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", }, { @@ -6578,20 +6949,20 @@ WHERE cn.country_code ='[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(an.name):0!null as cool_actor_pseudonym, min(t.title):1!null as series_named_after_char]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(an.name:15!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(an.name:13!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ ci.movie_id:13!null\n" + + " │ │ │ ├─ ci.movie_id:11!null\n" + " │ │ │ └─ t.id:0!null\n" + " │ │ └─ Eq\n" + " │ │ ├─ t.id:0!null\n" + " │ │ └─ mk.movie_id:4!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + - " │ └─ mc.movie_id:6!null\n" + + " │ └─ mc.movie_id:8!null\n" + " ├─ Filter\n" + " │ ├─ AND\n" + " │ │ ├─ GreaterThanOrEqual\n" + @@ -6608,11 +6979,11 @@ WHERE cn.country_code ='[us]' " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ an.person_id:14!null\n" + + " │ │ ├─ an.person_id:12!null\n" + " │ │ └─ n.id:3!null\n" + " │ └─ Eq\n" + " │ ├─ n.id:3!null\n" + - " │ └─ ci.person_id:12!null\n" + + " │ └─ ci.person_id:10!null\n" + " ├─ TableAlias(n)\n" + " │ └─ ProcessTable\n" + " │ └─ Table\n" + @@ -6620,69 +6991,67 @@ WHERE cn.country_code ='[us]' " │ └─ 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" + + " │ │ ├─ ci.movie_id:11!null\n" + + " │ │ └─ mk.movie_id:4!null\n" + " │ └─ Eq\n" + - " │ ├─ mc.movie_id:6!null\n" + + " │ ├─ mc.movie_id:8!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" + + " │ ├─ Eq\n" + + " │ │ ├─ mk.keyword_id:5!null\n" + + " │ │ └─ k.id:6!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_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" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ mc.company_id:9!null\n" + + " │ └─ cn.id:14!null\n" + + " ├─ InnerJoin\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" + + " │ │ ├─ ci.movie_id:11!null\n" + + " │ │ └─ mc.movie_id:8!null\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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:10!null]\n" + + " │ ├─ colSet: (1-8)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: aka_name\n" + + " │ └─ columns: [person_id name]\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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(an.name) as cool_actor_pseudonym, min(t.title) as series_named_after_char]\n" + @@ -6704,41 +7073,43 @@ WHERE cn.country_code ='[us]' " │ ├─ 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" + + " ├─ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_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" + + " │ └─ Filter\n" + + " │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ └─ TableAlias(k)\n" + + " │ └─ Table\n" + + " │ ├─ name: keyword\n" + + " │ └─ columns: [id keyword]\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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(an.name) as cool_actor_pseudonym, min(t.title) as series_named_after_char]\n" + @@ -6760,41 +7131,43 @@ WHERE cn.country_code ='[us]' " │ ├─ 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" + + " ├─ ((ci.movie_id = mk.movie_id) AND (mc.movie_id = mk.movie_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" + + " │ └─ Filter\n" + + " │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ └─ TableAlias(k)\n" + + " │ └─ Table\n" + + " │ ├─ name: keyword\n" + + " │ └─ columns: [id keyword]\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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", }, { @@ -6825,197 +7198,232 @@ WHERE cn.country_code ='[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(n.name):0!null as member_in_charnamed_american_movie, min(n.name):0!null as a1]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(n.name:2!null)\n" + + " ├─ select: MIN(n.name:11!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ ci.movie_id:12!null\n" + - " │ │ │ └─ t.id:0!null\n" + + " │ │ │ ├─ ci.movie_id:9!null\n" + + " │ │ │ └─ t.id:12!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mk.movie_id:3!null\n" + + " │ │ ├─ t.id:12!null\n" + + " │ │ └─ mk.movie_id:4!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]\n" + - " └─ InnerJoin\n" + - " ├─ Eq\n" + - " │ ├─ n.id:1!null\n" + - " │ └─ ci.person_id:11!null\n" + - " ├─ Filter\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]\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" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " ├─ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " │ ├─ t.id:12!null\n" + + " │ └─ mc.movie_id:6!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ n.id:10!null\n" + + " │ │ └─ ci.person_id:8!null\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mk.keyword_id:5!null\n" + + " │ │ │ └─ k.id:0!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(k.id:0!null)\n" + + " │ │ ├─ right-key: TUPLE(mk.keyword_id:3!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mc.company_id:7!null\n" + + " │ │ │ └─ cn.id:2!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(cn.id:2!null)\n" + + " │ │ ├─ right-key: TUPLE(mc.company_id:3!null)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\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" + + " │ │ │ └─ TableAlias(mc)\n" + + " │ │ │ └─ ProcessTable\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:6!null]\n" + + " │ │ ├─ colSet: (1-7)\n" + + " │ │ ├─ tableId: 1\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: cast_info\n" + + " │ │ └─ columns: [person_id movie_id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ci.person_id:8!null)\n" + + " │ ├─ right-key: TUPLE(n.id:0!null)\n" + + " │ └─ Filter\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]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(ci.movie_id:9!null, mk.movie_id:4!null, mc.movie_id:6!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ TableAlias(t)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id]\n" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(n.name) as member_in_charnamed_american_movie, min(n.name) as a1]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(n.name))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((ci.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " ├─ (n.id = ci.person_id)\n" + - " ├─ Filter\n" + - " │ ├─ ((n.name >= 'B') AND (n.name <= 'Bÿ'))\n" + - " │ └─ TableAlias(n)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (mk.keyword_id = k.id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ │ │ └─ TableAlias(k)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: keyword\n" + + " │ │ │ └─ columns: [id keyword]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (mc.company_id = cn.id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (cn.country_code = '[us]')\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id country_code]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (cn.id)\n" + + " │ │ ├─ right-key: (mc.company_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mc.movie_id = mk.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\n" + + " │ │ │ └─ TableAlias(mc)\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" + + " │ │ ├─ columns: [person_id movie_id]\n" + + " │ │ └─ keys: mc.movie_id\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ ((n.name >= 'B') AND (n.name <= 'Bÿ'))\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ci.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(n.name) as member_in_charnamed_american_movie, min(n.name) as a1]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(n.name))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((ci.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " ├─ (n.id = ci.person_id)\n" + - " ├─ Filter\n" + - " │ ├─ ((n.name >= 'B') AND (n.name <= 'Bÿ'))\n" + - " │ └─ TableAlias(n)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (mk.keyword_id = k.id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ │ │ └─ TableAlias(k)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: keyword\n" + + " │ │ │ └─ columns: [id keyword]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (mc.company_id = cn.id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (cn.country_code = '[us]')\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id country_code]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (cn.id)\n" + + " │ │ ├─ right-key: (mc.company_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mc.movie_id = mk.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\n" + + " │ │ │ └─ TableAlias(mc)\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" + + " │ │ ├─ columns: [person_id movie_id]\n" + + " │ │ └─ keys: mc.movie_id\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ ((n.name >= 'B') AND (n.name <= 'Bÿ'))\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ci.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id]\n" + "", }, { @@ -7045,189 +7453,224 @@ WHERE k.keyword ='character-name-in-title' ExpectedPlan: "Project\n" + " ├─ columns: [min(n.name):0!null as member_in_charnamed_movie, min(n.name):0!null as a1]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(n.name:2!null)\n" + + " ├─ select: MIN(n.name:10!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ ci.movie_id:11!null\n" + - " │ │ │ └─ t.id:0!null\n" + + " │ │ │ ├─ ci.movie_id:8!null\n" + + " │ │ │ └─ t.id:11!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + + " │ │ ├─ t.id:11!null\n" + " │ │ └─ mk.movie_id:3!null\n" + " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + + " │ ├─ t.id:11!null\n" + " │ └─ mc.movie_id:5!null\n" + - " ├─ TableAlias(t)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " ├─ Eq\n" + - " │ ├─ n.id:1!null\n" + - " │ └─ ci.person_id:10!null\n" + - " ├─ Filter\n" + - " │ ├─ AND\n" + - " │ │ ├─ GreaterThanOrEqual\n" + - " │ │ │ ├─ n.name:1!null\n" + - " │ │ │ └─ Z (longtext)\n" + - " │ │ └─ LessThanOrEqual\n" + - " │ │ ├─ n.name:1!null\n" + - " │ │ └─ Zÿ (longtext)\n" + - " │ └─ TableAlias(n)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ name: name\n" + - " │ └─ 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" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ n.id:9!null\n" + + " │ │ └─ ci.person_id:7!null\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mk.keyword_id:4!null\n" + + " │ │ │ └─ k.id:0!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(k.id:0!null)\n" + + " │ │ ├─ right-key: TUPLE(mk.keyword_id:2!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mc.company_id:6!null\n" + + " │ │ │ └─ cn.id:2!null\n" + + " │ │ ├─ TableAlias(cn)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(cn.id:2!null)\n" + + " │ │ ├─ right-key: TUPLE(mc.company_id:3!null)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\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" + + " │ │ │ └─ TableAlias(mc)\n" + + " │ │ │ └─ ProcessTable\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:5!null]\n" + + " │ │ ├─ colSet: (1-7)\n" + + " │ │ ├─ tableId: 1\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: cast_info\n" + + " │ │ └─ columns: [person_id movie_id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ci.person_id:7!null)\n" + + " │ ├─ right-key: TUPLE(n.id:0!null)\n" + + " │ └─ Filter\n" + + " │ ├─ AND\n" + + " │ │ ├─ GreaterThanOrEqual\n" + + " │ │ │ ├─ n.name:1!null\n" + + " │ │ │ └─ Z (longtext)\n" + + " │ │ └─ LessThanOrEqual\n" + + " │ │ ├─ n.name:1!null\n" + + " │ │ └─ Zÿ (longtext)\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(ci.movie_id:8!null, mk.movie_id:3!null, mc.movie_id:5!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ TableAlias(t)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id]\n" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(n.name) as member_in_charnamed_movie, min(n.name) as a1]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(n.name))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((ci.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " ├─ (n.id = ci.person_id)\n" + - " ├─ Filter\n" + - " │ ├─ ((n.name >= 'Z') AND (n.name <= 'Zÿ'))\n" + - " │ └─ TableAlias(n)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (mk.keyword_id = k.id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ │ │ └─ TableAlias(k)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: keyword\n" + + " │ │ │ └─ columns: [id keyword]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (mc.company_id = cn.id)\n" + + " │ │ ├─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (cn.id)\n" + + " │ │ ├─ right-key: (mc.company_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mc.movie_id = mk.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\n" + + " │ │ │ └─ TableAlias(mc)\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" + + " │ │ ├─ columns: [person_id movie_id]\n" + + " │ │ └─ keys: mc.movie_id\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ ((n.name >= 'Z') AND (n.name <= 'Zÿ'))\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ci.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(n.name) as member_in_charnamed_movie, min(n.name) as a1]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(n.name))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((ci.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " ├─ (n.id = ci.person_id)\n" + - " ├─ Filter\n" + - " │ ├─ ((n.name >= 'Z') AND (n.name <= 'Zÿ'))\n" + - " │ └─ TableAlias(n)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (mk.keyword_id = k.id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ │ │ └─ TableAlias(k)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: keyword\n" + + " │ │ │ └─ columns: [id keyword]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (mc.company_id = cn.id)\n" + + " │ │ ├─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (cn.id)\n" + + " │ │ ├─ right-key: (mc.company_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mc.movie_id = mk.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\n" + + " │ │ │ └─ TableAlias(mc)\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" + + " │ │ ├─ columns: [person_id movie_id]\n" + + " │ │ └─ keys: mc.movie_id\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ ((n.name >= 'Z') AND (n.name <= 'Zÿ'))\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ci.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id]\n" + "", }, { @@ -7257,189 +7700,224 @@ WHERE k.keyword ='character-name-in-title' ExpectedPlan: "Project\n" + " ├─ columns: [min(n.name):0!null as member_in_charnamed_movie, min(n.name):0!null as a1]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(n.name:2!null)\n" + + " ├─ select: MIN(n.name:10!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ ci.movie_id:11!null\n" + - " │ │ │ └─ t.id:0!null\n" + + " │ │ │ ├─ ci.movie_id:8!null\n" + + " │ │ │ └─ t.id:11!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + + " │ │ ├─ t.id:11!null\n" + " │ │ └─ mk.movie_id:3!null\n" + " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + + " │ ├─ t.id:11!null\n" + " │ └─ mc.movie_id:5!null\n" + - " ├─ TableAlias(t)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " ├─ Eq\n" + - " │ ├─ n.id:1!null\n" + - " │ └─ ci.person_id:10!null\n" + - " ├─ Filter\n" + - " │ ├─ AND\n" + - " │ │ ├─ GreaterThanOrEqual\n" + - " │ │ │ ├─ n.name:1!null\n" + - " │ │ │ └─ X (longtext)\n" + - " │ │ └─ LessThanOrEqual\n" + - " │ │ ├─ n.name:1!null\n" + - " │ │ └─ Xÿ (longtext)\n" + - " │ └─ TableAlias(n)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ name: name\n" + - " │ └─ 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" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ n.id:9!null\n" + + " │ │ └─ ci.person_id:7!null\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mk.keyword_id:4!null\n" + + " │ │ │ └─ k.id:0!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(k.id:0!null)\n" + + " │ │ ├─ right-key: TUPLE(mk.keyword_id:2!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mc.company_id:6!null\n" + + " │ │ │ └─ cn.id:2!null\n" + + " │ │ ├─ TableAlias(cn)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(cn.id:2!null)\n" + + " │ │ ├─ right-key: TUPLE(mc.company_id:3!null)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\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" + + " │ │ │ └─ TableAlias(mc)\n" + + " │ │ │ └─ ProcessTable\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:5!null]\n" + + " │ │ ├─ colSet: (1-7)\n" + + " │ │ ├─ tableId: 1\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: cast_info\n" + + " │ │ └─ columns: [person_id movie_id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ci.person_id:7!null)\n" + + " │ ├─ right-key: TUPLE(n.id:0!null)\n" + + " │ └─ Filter\n" + + " │ ├─ AND\n" + + " │ │ ├─ GreaterThanOrEqual\n" + + " │ │ │ ├─ n.name:1!null\n" + + " │ │ │ └─ X (longtext)\n" + + " │ │ └─ LessThanOrEqual\n" + + " │ │ ├─ n.name:1!null\n" + + " │ │ └─ Xÿ (longtext)\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(ci.movie_id:8!null, mk.movie_id:3!null, mc.movie_id:5!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ TableAlias(t)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id]\n" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(n.name) as member_in_charnamed_movie, min(n.name) as a1]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(n.name))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((ci.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " ├─ (n.id = ci.person_id)\n" + - " ├─ Filter\n" + - " │ ├─ ((n.name >= 'X') AND (n.name <= 'Xÿ'))\n" + - " │ └─ TableAlias(n)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (mk.keyword_id = k.id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ │ │ └─ TableAlias(k)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: keyword\n" + + " │ │ │ └─ columns: [id keyword]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (mc.company_id = cn.id)\n" + + " │ │ ├─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (cn.id)\n" + + " │ │ ├─ right-key: (mc.company_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mc.movie_id = mk.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\n" + + " │ │ │ └─ TableAlias(mc)\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" + + " │ │ ├─ columns: [person_id movie_id]\n" + + " │ │ └─ keys: mc.movie_id\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ ((n.name >= 'X') AND (n.name <= 'Xÿ'))\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ci.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(n.name) as member_in_charnamed_movie, min(n.name) as a1]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(n.name))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((ci.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " ├─ (n.id = ci.person_id)\n" + - " ├─ Filter\n" + - " │ ├─ ((n.name >= 'X') AND (n.name <= 'Xÿ'))\n" + - " │ └─ TableAlias(n)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (mk.keyword_id = k.id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ │ │ └─ TableAlias(k)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: keyword\n" + + " │ │ │ └─ columns: [id keyword]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (mc.company_id = cn.id)\n" + + " │ │ ├─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (cn.id)\n" + + " │ │ ├─ right-key: (mc.company_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mc.movie_id = mk.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\n" + + " │ │ │ └─ TableAlias(mc)\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" + + " │ │ ├─ columns: [person_id movie_id]\n" + + " │ │ └─ keys: mc.movie_id\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ ((n.name >= 'X') AND (n.name <= 'Xÿ'))\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ci.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id]\n" + "", }, { @@ -7468,183 +7946,218 @@ WHERE k.keyword ='character-name-in-title' ExpectedPlan: "Project\n" + " ├─ columns: [min(n.name):0!null as member_in_charnamed_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(n.name:2!null)\n" + + " ├─ select: MIN(n.name:10!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ ci.movie_id:11!null\n" + - " │ │ │ └─ t.id:0!null\n" + + " │ │ │ ├─ ci.movie_id:8!null\n" + + " │ │ │ └─ t.id:11!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + + " │ │ ├─ t.id:11!null\n" + " │ │ └─ mk.movie_id:3!null\n" + " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + + " │ ├─ t.id:11!null\n" + " │ └─ mc.movie_id:5!null\n" + - " ├─ TableAlias(t)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " ├─ Eq\n" + - " │ ├─ n.id:1!null\n" + - " │ └─ ci.person_id:10!null\n" + - " ├─ Filter\n" + - " │ ├─ n.name LIKE '%Bert%'\n" + - " │ └─ TableAlias(n)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ name: name\n" + - " │ └─ 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" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ n.id:9!null\n" + + " │ │ └─ ci.person_id:7!null\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mk.keyword_id:4!null\n" + + " │ │ │ └─ k.id:0!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(k.id:0!null)\n" + + " │ │ ├─ right-key: TUPLE(mk.keyword_id:2!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mc.company_id:6!null\n" + + " │ │ │ └─ cn.id:2!null\n" + + " │ │ ├─ TableAlias(cn)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(cn.id:2!null)\n" + + " │ │ ├─ right-key: TUPLE(mc.company_id:3!null)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\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" + + " │ │ │ └─ TableAlias(mc)\n" + + " │ │ │ └─ ProcessTable\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:5!null]\n" + + " │ │ ├─ colSet: (1-7)\n" + + " │ │ ├─ tableId: 1\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: cast_info\n" + + " │ │ └─ columns: [person_id movie_id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ci.person_id:7!null)\n" + + " │ ├─ right-key: TUPLE(n.id:0!null)\n" + + " │ └─ Filter\n" + + " │ ├─ n.name LIKE '%Bert%'\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(ci.movie_id:8!null, mk.movie_id:3!null, mc.movie_id:5!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ TableAlias(t)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id]\n" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(n.name) as member_in_charnamed_movie]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(n.name))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((ci.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " ├─ (n.id = ci.person_id)\n" + - " ├─ Filter\n" + - " │ ├─ n.name LIKE '%Bert%'\n" + - " │ └─ TableAlias(n)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (mk.keyword_id = k.id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ │ │ └─ TableAlias(k)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: keyword\n" + + " │ │ │ └─ columns: [id keyword]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (mc.company_id = cn.id)\n" + + " │ │ ├─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (cn.id)\n" + + " │ │ ├─ right-key: (mc.company_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mc.movie_id = mk.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\n" + + " │ │ │ └─ TableAlias(mc)\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" + + " │ │ ├─ columns: [person_id movie_id]\n" + + " │ │ └─ keys: mc.movie_id\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ n.name LIKE '%Bert%'\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ci.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(n.name) as member_in_charnamed_movie]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(n.name))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((ci.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " ├─ (n.id = ci.person_id)\n" + - " ├─ Filter\n" + - " │ ├─ n.name LIKE '%Bert%'\n" + - " │ └─ TableAlias(n)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (mk.keyword_id = k.id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ │ │ └─ TableAlias(k)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: keyword\n" + + " │ │ │ └─ columns: [id keyword]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (mc.company_id = cn.id)\n" + + " │ │ ├─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (cn.id)\n" + + " │ │ ├─ right-key: (mc.company_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mc.movie_id = mk.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\n" + + " │ │ │ └─ TableAlias(mc)\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" + + " │ │ ├─ columns: [person_id movie_id]\n" + + " │ │ └─ keys: mc.movie_id\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ n.name LIKE '%Bert%'\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ci.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id]\n" + "", }, { @@ -7673,185 +8186,220 @@ WHERE cn.country_code ='[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(n.name):0!null as member_in_charnamed_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(n.name:2!null)\n" + + " ├─ select: MIN(n.name:11!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ ci.movie_id:12!null\n" + - " │ │ │ └─ t.id:0!null\n" + + " │ │ │ ├─ ci.movie_id:9!null\n" + + " │ │ │ └─ t.id:12!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mk.movie_id:3!null\n" + + " │ │ ├─ t.id:12!null\n" + + " │ │ └─ mk.movie_id:4!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]\n" + - " └─ InnerJoin\n" + - " ├─ Eq\n" + - " │ ├─ n.id:1!null\n" + - " │ └─ ci.person_id:11!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.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" + - " └─ TableAlias(ci)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " ├─ name: cast_info\n" + - " └─ columns: [person_id movie_id]\n" + + " │ ├─ t.id:12!null\n" + + " │ └─ mc.movie_id:6!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ n.id:10!null\n" + + " │ │ └─ ci.person_id:8!null\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mk.keyword_id:5!null\n" + + " │ │ │ └─ k.id:0!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(k.id:0!null)\n" + + " │ │ ├─ right-key: TUPLE(mk.keyword_id:3!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mc.company_id:7!null\n" + + " │ │ │ └─ cn.id:2!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(cn.id:2!null)\n" + + " │ │ ├─ right-key: TUPLE(mc.company_id:3!null)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\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" + + " │ │ │ └─ TableAlias(mc)\n" + + " │ │ │ └─ ProcessTable\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:6!null]\n" + + " │ │ ├─ colSet: (1-7)\n" + + " │ │ ├─ tableId: 1\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: cast_info\n" + + " │ │ └─ columns: [person_id movie_id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ci.person_id:8!null)\n" + + " │ ├─ right-key: TUPLE(n.id:0!null)\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(ci.movie_id:9!null, mk.movie_id:4!null, mc.movie_id:6!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ TableAlias(t)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id]\n" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(n.name) as member_in_charnamed_movie]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(n.name))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((ci.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " ├─ (n.id = ci.person_id)\n" + - " ├─ TableAlias(n)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (mk.keyword_id = k.id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ │ │ └─ TableAlias(k)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: keyword\n" + + " │ │ │ └─ columns: [id keyword]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (mc.company_id = cn.id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (cn.country_code = '[us]')\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id country_code]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (cn.id)\n" + + " │ │ ├─ right-key: (mc.company_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mc.movie_id = mk.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\n" + + " │ │ │ └─ TableAlias(mc)\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" + + " │ │ ├─ columns: [person_id movie_id]\n" + + " │ │ └─ keys: mc.movie_id\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ci.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(n.name) as member_in_charnamed_movie]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(n.name))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((ci.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " ├─ (n.id = ci.person_id)\n" + - " ├─ TableAlias(n)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (mk.keyword_id = k.id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ │ │ └─ TableAlias(k)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: keyword\n" + + " │ │ │ └─ columns: [id keyword]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (mc.company_id = cn.id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (cn.country_code = '[us]')\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id country_code]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (cn.id)\n" + + " │ │ ├─ right-key: (mc.company_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mc.movie_id = mk.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\n" + + " │ │ │ └─ TableAlias(mc)\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" + + " │ │ ├─ columns: [person_id movie_id]\n" + + " │ │ └─ keys: mc.movie_id\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ci.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id]\n" + "", }, { @@ -7880,183 +8428,218 @@ WHERE k.keyword ='character-name-in-title' ExpectedPlan: "Project\n" + " ├─ columns: [min(n.name):0!null as member_in_charnamed_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(n.name:2!null)\n" + + " ├─ select: MIN(n.name:10!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ ci.movie_id:11!null\n" + - " │ │ │ └─ t.id:0!null\n" + + " │ │ │ ├─ ci.movie_id:8!null\n" + + " │ │ │ └─ t.id:11!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + + " │ │ ├─ t.id:11!null\n" + " │ │ └─ mk.movie_id:3!null\n" + " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + + " │ ├─ t.id:11!null\n" + " │ └─ mc.movie_id:5!null\n" + - " ├─ TableAlias(t)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " ├─ Eq\n" + - " │ ├─ n.id:1!null\n" + - " │ └─ ci.person_id:10!null\n" + - " ├─ Filter\n" + - " │ ├─ n.name LIKE '%B%'\n" + - " │ └─ TableAlias(n)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ name: name\n" + - " │ └─ 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" + - " │ ├─ 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" + - "", - ExpectedEstimates: "Project\n" + - " ├─ columns: [min(n.name) as member_in_charnamed_movie]\n" + - " └─ GroupBy\n" + - " ├─ SelectedExprs(MIN(n.name))\n" + - " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ n.id:9!null\n" + + " │ │ └─ ci.person_id:7!null\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mk.keyword_id:4!null\n" + + " │ │ │ └─ k.id:0!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(k.id:0!null)\n" + + " │ │ ├─ right-key: TUPLE(mk.keyword_id:2!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mc.company_id:6!null\n" + + " │ │ │ └─ cn.id:2!null\n" + + " │ │ ├─ TableAlias(cn)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(cn.id:2!null)\n" + + " │ │ ├─ right-key: TUPLE(mc.company_id:3!null)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\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" + + " │ │ │ └─ TableAlias(mc)\n" + + " │ │ │ └─ ProcessTable\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:5!null]\n" + + " │ │ ├─ colSet: (1-7)\n" + + " │ │ ├─ tableId: 1\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: cast_info\n" + + " │ │ └─ columns: [person_id movie_id]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ci.person_id:7!null)\n" + + " │ ├─ right-key: TUPLE(n.id:0!null)\n" + + " │ └─ Filter\n" + + " │ ├─ n.name LIKE '%B%'\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(ci.movie_id:8!null, mk.movie_id:3!null, mc.movie_id:5!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ TableAlias(t)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id]\n" + + "", + ExpectedEstimates: "Project\n" + + " ├─ columns: [min(n.name) as member_in_charnamed_movie]\n" + + " └─ GroupBy\n" + + " ├─ SelectedExprs(MIN(n.name))\n" + + " ├─ Grouping()\n" + + " └─ HashJoin\n" + " ├─ (((ci.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " ├─ (n.id = ci.person_id)\n" + - " ├─ Filter\n" + - " │ ├─ n.name LIKE '%B%'\n" + - " │ └─ TableAlias(n)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (mk.keyword_id = k.id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ │ │ └─ TableAlias(k)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: keyword\n" + + " │ │ │ └─ columns: [id keyword]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (mc.company_id = cn.id)\n" + + " │ │ ├─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (cn.id)\n" + + " │ │ ├─ right-key: (mc.company_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mc.movie_id = mk.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\n" + + " │ │ │ └─ TableAlias(mc)\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" + + " │ │ ├─ columns: [person_id movie_id]\n" + + " │ │ └─ keys: mc.movie_id\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ n.name LIKE '%B%'\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ci.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(n.name) as member_in_charnamed_movie]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(n.name))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((ci.movie_id = t.id) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id]\n" + - " └─ InnerJoin\n" + - " ├─ (n.id = ci.person_id)\n" + - " ├─ Filter\n" + - " │ ├─ n.name LIKE '%B%'\n" + - " │ └─ TableAlias(n)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (mk.keyword_id = k.id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (k.keyword = 'character-name-in-title')\n" + + " │ │ │ └─ TableAlias(k)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: keyword\n" + + " │ │ │ └─ columns: [id keyword]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (mc.company_id = cn.id)\n" + + " │ │ ├─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (cn.id)\n" + + " │ │ ├─ right-key: (mc.company_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mc.movie_id = mk.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\n" + + " │ │ │ └─ TableAlias(mc)\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" + + " │ │ ├─ columns: [person_id movie_id]\n" + + " │ │ └─ keys: mc.movie_id\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ n.name LIKE '%B%'\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ci.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id]\n" + "", }, { @@ -8091,204 +8674,239 @@ WHERE ci.note IN ('(producer)', ExpectedPlan: "Project\n" + " ├─ columns: [min(mi.info):0!null as movie_budget, min(mi_idx.info):1!null as movie_votes, min(t.title):2!null as movie_title]\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:9!null), MIN(mi_idx.info:6!null), MIN(t.title:17!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mi.movie_id:8!null\n" + + " │ │ │ ├─ t.id:16!null\n" + + " │ │ │ └─ mi.movie_id:7!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mi_idx.movie_id:5!null\n" + + " │ │ ├─ t.id:16!null\n" + + " │ │ └─ mi_idx.movie_id:4!null\n" + " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + - " │ └─ ci.movie_id:16!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:15!null\n" + - " ├─ Filter\n" + - " │ ├─ AND\n" + - " │ │ ├─ Eq\n" + - " │ │ │ ├─ n.gender:2\n" + - " │ │ │ └─ m (longtext)\n" + - " │ │ └─ n.name LIKE '%Tim%'\n" + - " │ └─ TableAlias(n)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ name: name\n" + - " │ └─ 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" + - " │ ├─ 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" + + " │ ├─ t.id:16!null\n" + + " │ └─ ci.movie_id:11!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ n.id:13!null\n" + + " │ │ └─ ci.person_id:10!null\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:0!null\n" + + " │ │ │ └─ mi_idx.info_type_id:5!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(it2.id:0!null)\n" + + " │ │ ├─ right-key: TUPLE(mi_idx.info_type_id:3!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it1.id:2!null\n" + + " │ │ │ └─ mi.info_type_id:8!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(it1.id:2!null)\n" + + " │ │ ├─ right-key: TUPLE(mi.info_type_id:4!null)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:7!null\n" + + " │ │ │ │ └─ mi_idx.movie_id:4!null\n" + + " │ │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ │ └─ TableAlias(mi)\n" + + " │ │ │ └─ ProcessTable\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:7!null]\n" + + " │ │ ├─ colSet: (1-7)\n" + + " │ │ ├─ tableId: 1\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: cast_info\n" + + " │ │ └─ columns: [person_id movie_id note]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ci.person_id:10!null)\n" + + " │ ├─ right-key: TUPLE(n.id:0!null)\n" + + " │ └─ Filter\n" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ n.gender:2\n" + + " │ │ │ └─ m (longtext)\n" + + " │ │ └─ n.name LIKE '%Tim%'\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mi.movie_id:7!null, mi_idx.movie_id:4!null, ci.movie_id:11!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ TableAlias(t)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " ├─ (n.id = ci.person_id)\n" + - " ├─ Filter\n" + - " │ ├─ ((n.gender = 'm') AND n.name LIKE '%Tim%')\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)) 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (it2.id = mi_idx.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it2.info = 'votes')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it2.id)\n" + + " │ │ ├─ right-key: (mi_idx.info_type_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it1.info = 'budget')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it1.id)\n" + + " │ │ ├─ right-key: (mi.info_type_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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 info]\n" + + " │ │ │ └─ TableAlias(mi)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ ((n.gender = 'm') AND n.name LIKE '%Tim%')\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, ci.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " ├─ (n.id = ci.person_id)\n" + - " ├─ Filter\n" + - " │ ├─ ((n.gender = 'm') AND n.name LIKE '%Tim%')\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)) 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (it2.id = mi_idx.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it2.info = 'votes')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it2.id)\n" + + " │ │ ├─ right-key: (mi_idx.info_type_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it1.info = 'budget')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it1.id)\n" + + " │ │ ├─ right-key: (mi.info_type_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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 info]\n" + + " │ │ │ └─ TableAlias(mi)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ ((n.gender = 'm') AND n.name LIKE '%Tim%')\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, ci.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title]\n" + "", }, { @@ -8331,235 +8949,270 @@ WHERE ci.note IN ('(writer)', ExpectedPlan: "Project\n" + " ├─ columns: [min(mi.info):0!null as movie_budget, min(mi_idx.info):1!null as movie_votes, min(t.title):2!null as movie_title]\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:9!null), MIN(mi_idx.info:6!null), MIN(t.title:17!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mi.movie_id:8!null\n" + + " │ │ │ ├─ t.id:16!null\n" + + " │ │ │ └─ mi.movie_id:7!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mi_idx.movie_id:5!null\n" + + " │ │ ├─ t.id:16!null\n" + + " │ │ └─ mi_idx.movie_id:4!null\n" + " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + - " │ └─ ci.movie_id:17!null\n" + - " ├─ Filter\n" + - " │ ├─ AND\n" + - " │ │ ├─ GreaterThanOrEqual\n" + - " │ │ │ ├─ t.production_year:2\n" + - " │ │ │ └─ 2008 (smallint)\n" + - " │ │ └─ LessThanOrEqual\n" + - " │ │ ├─ t.production_year:2\n" + - " │ │ └─ 2014 (smallint)\n" + - " │ └─ TableAlias(t)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " ├─ Eq\n" + - " │ ├─ n.id:3!null\n" + - " │ └─ ci.person_id:16!null\n" + - " ├─ Filter\n" + - " │ ├─ AND\n" + - " │ │ ├─ NOT\n" + - " │ │ │ └─ n.gender:1 IS NULL\n" + - " │ │ └─ Eq\n" + - " │ │ ├─ n.gender:1\n" + - " │ │ └─ f (longtext)\n" + - " │ └─ TableAlias(n)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ name: name\n" + - " │ └─ columns: [id gender]\n" + - " └─ InnerJoin\n" + + " │ ├─ t.id:16!null\n" + + " │ └─ ci.movie_id:12!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ n.id:14!null\n" + + " │ │ └─ ci.person_id:11!null\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:0!null\n" + + " │ │ │ └─ mi_idx.info_type_id:5!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(it2.id:0!null)\n" + + " │ │ ├─ right-key: TUPLE(mi_idx.info_type_id:3!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it1.id:2!null\n" + + " │ │ │ └─ mi.info_type_id:8!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(it1.id:2!null)\n" + + " │ │ ├─ right-key: TUPLE(mi.info_type_id:4!null)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:7!null\n" + + " │ │ │ │ └─ mi_idx.movie_id:4!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" + + " │ │ │ └─ 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" + + " │ │ └─ 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:7!null]\n" + + " │ │ ├─ colSet: (1-7)\n" + + " │ │ ├─ tableId: 1\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: cast_info\n" + + " │ │ └─ columns: [person_id movie_id note]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ci.person_id:11!null)\n" + + " │ ├─ right-key: TUPLE(n.id:0!null)\n" + + " │ └─ Filter\n" + + " │ ├─ AND\n" + + " │ │ ├─ NOT\n" + + " │ │ │ └─ n.gender:1 IS NULL\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ n.gender:1\n" + + " │ │ └─ f (longtext)\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mi.movie_id:7!null, mi_idx.movie_id:4!null, ci.movie_id:12!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ Filter\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" + - " │ ├─ 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" + + " │ ├─ GreaterThanOrEqual\n" + + " │ │ ├─ t.production_year:2\n" + + " │ │ └─ 2008 (smallint)\n" + + " │ └─ LessThanOrEqual\n" + + " │ ├─ t.production_year:2\n" + + " │ └─ 2014 (smallint)\n" + + " └─ TableAlias(t)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id))\n" + - " ├─ Filter\n" + - " │ ├─ ((t.production_year >= 2008) AND (t.production_year <= 2014))\n" + - " │ └─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " ├─ (n.id = ci.person_id)\n" + - " ├─ Filter\n" + - " │ ├─ ((NOT(n.gender IS NULL)) AND (n.gender = 'f'))\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" + - " ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (it2.id = mi_idx.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it2.info = 'rating')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it2.id)\n" + + " │ │ ├─ right-key: (mi_idx.info_type_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it1.info = 'genres')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it1.id)\n" + + " │ │ ├─ right-key: (mi.info_type_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ 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" + + " │ │ └─ 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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ ((NOT(n.gender IS NULL)) AND (n.gender = 'f'))\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, ci.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id)\n" + + " └─ Filter\n" + + " ├─ ((t.production_year >= 2008) AND (t.production_year <= 2014))\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id))\n" + - " ├─ Filter\n" + - " │ ├─ ((t.production_year >= 2008) AND (t.production_year <= 2014))\n" + - " │ └─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " ├─ (n.id = ci.person_id)\n" + - " ├─ Filter\n" + - " │ ├─ ((NOT(n.gender IS NULL)) AND (n.gender = 'f'))\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" + - " ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (it2.id = mi_idx.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it2.info = 'rating')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it2.id)\n" + + " │ │ ├─ right-key: (mi_idx.info_type_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it1.info = 'genres')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it1.id)\n" + + " │ │ ├─ right-key: (mi.info_type_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ 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" + + " │ │ └─ 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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ ((NOT(n.gender IS NULL)) AND (n.gender = 'f'))\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, ci.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id)\n" + + " └─ Filter\n" + + " ├─ ((t.production_year >= 2008) AND (t.production_year <= 2014))\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\n" + "", }, { @@ -8602,210 +9255,245 @@ WHERE ci.note IN ('(writer)', ExpectedPlan: "Project\n" + " ├─ columns: [min(mi.info):0!null as movie_budget, min(mi_idx.info):1!null as movie_votes, min(t.title):2!null as movie_title]\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:9!null), MIN(mi_idx.info:6!null), MIN(t.title:16!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + + " │ │ │ ├─ t.id:15!null\n" + " │ │ │ └─ mi.movie_id:7!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + + " │ │ ├─ t.id:15!null\n" + " │ │ └─ mi_idx.movie_id:4!null\n" + " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + - " │ └─ ci.movie_id:15!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:14!null\n" + - " ├─ Filter\n" + - " │ ├─ Eq\n" + - " │ │ ├─ n.gender:1\n" + - " │ │ └─ m (longtext)\n" + - " │ └─ TableAlias(n)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ name: name\n" + - " │ └─ 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" + - " │ ├─ 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" + + " │ ├─ t.id:15!null\n" + + " │ └─ ci.movie_id:11!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ n.id:13!null\n" + + " │ │ └─ ci.person_id:10!null\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:0!null\n" + + " │ │ │ └─ mi_idx.info_type_id:5!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(it2.id:0!null)\n" + + " │ │ ├─ right-key: TUPLE(mi_idx.info_type_id:3!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it1.id:2!null\n" + + " │ │ │ └─ mi.info_type_id:8!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(it1.id:2!null)\n" + + " │ │ ├─ right-key: TUPLE(mi.info_type_id:4!null)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:7!null\n" + + " │ │ │ │ └─ mi_idx.movie_id:4!null\n" + + " │ │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ │ └─ ProcessTable\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(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" + + " │ │ └─ 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:7!null]\n" + + " │ │ ├─ colSet: (1-7)\n" + + " │ │ ├─ tableId: 1\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: cast_info\n" + + " │ │ └─ columns: [person_id movie_id note]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ci.person_id:10!null)\n" + + " │ ├─ right-key: TUPLE(n.id:0!null)\n" + + " │ └─ Filter\n" + + " │ ├─ Eq\n" + + " │ │ ├─ n.gender:1\n" + + " │ │ └─ m (longtext)\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mi.movie_id:7!null, mi_idx.movie_id:4!null, ci.movie_id:11!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ TableAlias(t)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (it2.id = mi_idx.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it2.info = 'votes')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it2.id)\n" + + " │ │ ├─ right-key: (mi_idx.info_type_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it1.info = 'genres')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it1.id)\n" + + " │ │ ├─ right-key: (mi.info_type_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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 info]\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" + + " │ │ └─ 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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ (n.gender = 'm')\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, ci.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (it2.id = mi_idx.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it2.info = 'votes')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it2.id)\n" + + " │ │ ├─ right-key: (mi_idx.info_type_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it1.info = 'genres')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it1.id)\n" + + " │ │ ├─ right-key: (mi.info_type_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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 info]\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" + + " │ │ └─ 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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ (n.gender = 'm')\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, ci.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title]\n" + "", }, { @@ -8866,10 +9554,10 @@ WHERE ci.note IN ('(voice)', " │ │ │ └─ mi.movie_id:8!null\n" + " │ │ └─ Eq\n" + " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mc.movie_id:11!null\n" + + " │ │ └─ mc.movie_id:13!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + - " │ └─ ci.movie_id:19!null\n" + + " │ └─ ci.movie_id:17!null\n" + " ├─ Filter\n" + " │ ├─ AND\n" + " │ │ ├─ GreaterThanOrEqual\n" + @@ -8886,7 +9574,7 @@ WHERE ci.note IN ('(voice)', " └─ InnerJoin\n" + " ├─ Eq\n" + " │ ├─ rt.id:3!null\n" + - " │ └─ ci.role_id:22!null\n" + + " │ └─ ci.role_id:20!null\n" + " ├─ Filter\n" + " │ ├─ Eq\n" + " │ │ ├─ rt.role:1!null\n" + @@ -8900,10 +9588,10 @@ WHERE ci.note IN ('(voice)', " ├─ AND\n" + " │ ├─ Eq\n" + " │ │ ├─ n.id:5!null\n" + - " │ │ └─ ci.person_id:18!null\n" + + " │ │ └─ ci.person_id:16!null\n" + " │ └─ Eq\n" + " │ ├─ n.id:5!null\n" + - " │ └─ an.person_id:24!null\n" + + " │ └─ an.person_id:22!null\n" + " ├─ Filter\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + @@ -8917,96 +9605,94 @@ WHERE ci.note IN ('(voice)', " │ └─ columns: [id name gender]\n" + " └─ InnerJoin\n" + " ├─ AND\n" + - " │ ├─ AND\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" + + " │ │ ├─ mc.movie_id:13!null\n" + + " │ │ └─ mi.movie_id:8!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" + + " │ ├─ mi.movie_id:8!null\n" + + " │ └─ ci.movie_id:17!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ it.id:11!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" + + " │ └─ 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" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ cn.id:23!null\n" + + " │ └─ mc.company_id:14!null\n" + + " ├─ InnerJoin\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:13!null\n" + + " │ │ └─ ci.movie_id:17!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" + + " │ └─ 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" + + " └─ 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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(n.name) as voicing_actress, min(t.title) as voiced_movie]\n" + @@ -9038,53 +9724,55 @@ WHERE ci.note IN ('(voice)', " │ ├─ 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" + + " ├─ ((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it.info = 'release dates')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [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" + + " ├─ (cn.id = mc.company_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = ci.movie_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" + + " │ └─ 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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(n.name) as voicing_actress, min(t.title) as voiced_movie]\n" + @@ -9116,53 +9804,55 @@ WHERE ci.note IN ('(voice)', " │ ├─ 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" + + " ├─ ((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it.info = 'release dates')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [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" + + " ├─ (cn.id = mc.company_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = ci.movie_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" + + " │ └─ 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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", }, { @@ -9221,10 +9911,10 @@ WHERE ci.note = '(voice)' " │ │ │ └─ mi.movie_id:8!null\n" + " │ │ └─ Eq\n" + " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mc.movie_id:11!null\n" + + " │ │ └─ mc.movie_id:13!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + - " │ └─ ci.movie_id:19!null\n" + + " │ └─ ci.movie_id:17!null\n" + " ├─ Filter\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + @@ -9243,7 +9933,7 @@ WHERE ci.note = '(voice)' " └─ InnerJoin\n" + " ├─ Eq\n" + " │ ├─ rt.id:3!null\n" + - " │ └─ ci.role_id:22!null\n" + + " │ └─ ci.role_id:20!null\n" + " ├─ Filter\n" + " │ ├─ Eq\n" + " │ │ ├─ rt.role:1!null\n" + @@ -9257,10 +9947,10 @@ WHERE ci.note = '(voice)' " ├─ AND\n" + " │ ├─ Eq\n" + " │ │ ├─ n.id:5!null\n" + - " │ │ └─ ci.person_id:18!null\n" + + " │ │ └─ ci.person_id:16!null\n" + " │ └─ Eq\n" + " │ ├─ n.id:5!null\n" + - " │ └─ an.person_id:24!null\n" + + " │ └─ an.person_id:22!null\n" + " ├─ Filter\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + @@ -9274,95 +9964,93 @@ WHERE ci.note = '(voice)' " │ └─ columns: [id name gender]\n" + " └─ InnerJoin\n" + " ├─ AND\n" + - " │ ├─ AND\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" + + " │ │ ├─ mc.movie_id:13!null\n" + + " │ │ └─ mi.movie_id:8!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" + + " │ ├─ mi.movie_id:8!null\n" + + " │ └─ ci.movie_id:17!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ it.id:11!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" + + " │ └─ 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" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ cn.id:23!null\n" + + " │ └─ mc.company_id:14!null\n" + + " ├─ InnerJoin\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:13!null\n" + + " │ │ └─ ci.movie_id:17!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" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ chn.id:21!null\n" + + " │ │ │ └─ ci.person_role_id:18\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:16!null]\n" + + " │ ├─ colSet: (1-8)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: aka_name\n" + + " │ └─ columns: [person_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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(n.name) as voicing_actress, min(t.title) as kung_fu_panda]\n" + @@ -9394,53 +10082,55 @@ WHERE ci.note = '(voice)' " │ ├─ 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" + + " ├─ ((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it.info = 'release dates')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [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" + + " ├─ (cn.id = mc.company_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = ci.movie_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" + + " │ └─ 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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(n.name) as voicing_actress, min(t.title) as kung_fu_panda]\n" + @@ -9472,53 +10162,55 @@ WHERE ci.note = '(voice)' " │ ├─ 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" + + " ├─ ((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it.info = 'release dates')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [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" + + " ├─ (cn.id = mc.company_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = ci.movie_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" + + " │ └─ 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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", }, { @@ -9576,10 +10268,10 @@ WHERE ci.note IN ('(voice)', " │ │ │ └─ mi.movie_id:8!null\n" + " │ │ └─ Eq\n" + " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mc.movie_id:11!null\n" + + " │ │ └─ mc.movie_id:13!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + - " │ └─ ci.movie_id:18!null\n" + + " │ └─ ci.movie_id:16!null\n" + " ├─ Filter\n" + " │ ├─ GreaterThan\n" + " │ │ ├─ t.production_year:2\n" + @@ -9592,7 +10284,7 @@ WHERE ci.note IN ('(voice)', " └─ InnerJoin\n" + " ├─ Eq\n" + " │ ├─ rt.id:3!null\n" + - " │ └─ ci.role_id:21!null\n" + + " │ └─ ci.role_id:19!null\n" + " ├─ Filter\n" + " │ ├─ Eq\n" + " │ │ ├─ rt.role:1!null\n" + @@ -9606,10 +10298,10 @@ WHERE ci.note IN ('(voice)', " ├─ AND\n" + " │ ├─ Eq\n" + " │ │ ├─ n.id:5!null\n" + - " │ │ └─ ci.person_id:17!null\n" + + " │ │ └─ ci.person_id:15!null\n" + " │ └─ Eq\n" + " │ ├─ n.id:5!null\n" + - " │ └─ an.person_id:23!null\n" + + " │ └─ an.person_id:21!null\n" + " ├─ Filter\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + @@ -9623,89 +10315,87 @@ WHERE ci.note IN ('(voice)', " │ └─ columns: [id name gender]\n" + " └─ InnerJoin\n" + " ├─ AND\n" + - " │ ├─ AND\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" + + " │ │ ├─ mc.movie_id:13!null\n" + + " │ │ └─ mi.movie_id:8!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" + + " │ ├─ mi.movie_id:8!null\n" + + " │ └─ ci.movie_id:16!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ it.id:11!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" + + " │ └─ 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" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ cn.id:22!null\n" + + " │ └─ mc.company_id:14!null\n" + + " ├─ InnerJoin\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:13!null\n" + + " │ │ └─ ci.movie_id:16!null\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ chn.id:20!null\n" + + " │ │ │ └─ ci.person_role_id:17\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:15!null]\n" + + " │ ├─ colSet: (1-8)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: aka_name\n" + + " │ └─ columns: [person_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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(n.name) as voicing_actress, min(t.title) as jap_engl_voiced_movie]\n" + @@ -9737,51 +10427,53 @@ WHERE ci.note IN ('(voice)', " │ ├─ 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" + + " ├─ ((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it.info = 'release dates')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [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" + + " ├─ (cn.id = mc.company_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = ci.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(n.name) as voicing_actress, min(t.title) as jap_engl_voiced_movie]\n" + @@ -9813,51 +10505,53 @@ WHERE ci.note IN ('(voice)', " │ ├─ 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" + + " ├─ ((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it.info = 'release dates')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [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" + + " ├─ (cn.id = mc.company_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = ci.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", }, { @@ -9911,10 +10605,10 @@ WHERE ci.note IN ('(voice)', " │ │ │ └─ mi.movie_id:8!null\n" + " │ │ └─ Eq\n" + " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mc.movie_id:10!null\n" + + " │ │ └─ mc.movie_id:12!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + - " │ └─ ci.movie_id:17!null\n" + + " │ └─ ci.movie_id:15!null\n" + " ├─ Filter\n" + " │ ├─ GreaterThan\n" + " │ │ ├─ t.production_year:2\n" + @@ -9927,7 +10621,7 @@ WHERE ci.note IN ('(voice)', " └─ InnerJoin\n" + " ├─ Eq\n" + " │ ├─ rt.id:3!null\n" + - " │ └─ ci.role_id:20!null\n" + + " │ └─ ci.role_id:18!null\n" + " ├─ Filter\n" + " │ ├─ Eq\n" + " │ │ ├─ rt.role:1!null\n" + @@ -9941,10 +10635,10 @@ WHERE ci.note IN ('(voice)', " ├─ AND\n" + " │ ├─ Eq\n" + " │ │ ├─ n.id:5!null\n" + - " │ │ └─ ci.person_id:16!null\n" + + " │ │ └─ ci.person_id:14!null\n" + " │ └─ Eq\n" + " │ ├─ n.id:5!null\n" + - " │ └─ an.person_id:22!null\n" + + " │ └─ an.person_id:20!null\n" + " ├─ Filter\n" + " │ ├─ Eq\n" + " │ │ ├─ n.gender:2\n" + @@ -9956,82 +10650,80 @@ WHERE ci.note IN ('(voice)', " │ └─ 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" + + " │ │ ├─ mc.movie_id:12!null\n" + + " │ │ └─ mi.movie_id:8!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" + + " │ ├─ mi.movie_id:8!null\n" + + " │ └─ ci.movie_id:15!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ it.id:10!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" + + " │ └─ 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" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ cn.id:21!null\n" + + " │ └─ mc.company_id:13!null\n" + + " ├─ InnerJoin\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" + + " │ │ ├─ mc.movie_id:12!null\n" + + " │ │ └─ ci.movie_id:15!null\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ chn.id:19!null\n" + + " │ │ │ └─ ci.person_role_id:16\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:14!null]\n" + + " │ ├─ colSet: (1-8)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: aka_name\n" + + " │ └─ columns: [person_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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(n.name) as voicing_actress, min(t.title) as jap_engl_voiced_movie]\n" + @@ -10063,49 +10755,51 @@ WHERE ci.note IN ('(voice)', " │ ├─ 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" + + " ├─ ((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (it.id = mi.info_type_id)\n" + + " │ ├─ TableAlias(mi)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_info\n" + + " │ │ └─ columns: [movie_id info_type_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (it.info = 'release dates')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [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" + + " ├─ (cn.id = mc.company_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = ci.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(n.name) as voicing_actress, min(t.title) as jap_engl_voiced_movie]\n" + @@ -10137,49 +10831,51 @@ WHERE ci.note IN ('(voice)', " │ ├─ 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" + + " ├─ ((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (it.id = mi.info_type_id)\n" + + " │ ├─ TableAlias(mi)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_info\n" + + " │ │ └─ columns: [movie_id info_type_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (it.info = 'release dates')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [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" + + " ├─ (cn.id = mc.company_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = ci.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", }, { @@ -10207,69 +10903,69 @@ WHERE ct.kind = 'production companies' ExpectedPlan: "Project\n" + " ├─ columns: [min(mc.note):0!null as production_note, min(t.title):2!null as movie_title, min(t.production_year):1!null as movie_year]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(mc.note:7), MIN(t.production_year:2), MIN(t.title:1!null)\n" + + " ├─ select: MIN(mc.note:5), 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" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ct.id:10!null\n" + + " │ │ │ └─ mc.company_type_id:4!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ mc.movie_id:3!null\n" + + " │ │ └─ mi_idx.movie_id:6!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" + + " │ └─ mi_idx.movie_id:6!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mc.movie_id:3!null\n" + + " │ ├─ TableAlias(t)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title production_year]\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" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_companies\n" + + " │ └─ columns: [movie_id company_type_id note]\n" + + " └─ CrossJoin\n" + + " ├─ InnerJoin\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" + + " │ │ ├─ it.id:8!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]\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.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" + - " │ └─ 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" + + " │ ├─ ct.kind:1!null\n" + + " │ └─ production companies (longtext)\n" + + " └─ TableAlias(ct)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: company_type\n" + + " └─ columns: [id kind]\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" + @@ -10277,38 +10973,38 @@ WHERE ct.kind = 'production companies' " ├─ 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" + - " ├─ 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)%' OR mc.note LIKE '%(presents)%'))\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" + + " ├─ (((ct.id = mc.company_type_id) AND (mc.movie_id = mi_idx.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mc.movie_id)\n" + + " │ ├─ TableAlias(t)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title production_year]\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" + + " │ └─ Table\n" + + " │ ├─ name: movie_companies\n" + + " │ └─ columns: [movie_id company_type_id note]\n" + + " └─ CrossJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ 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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(mc.note) as production_note, min(t.title) as movie_title, min(t.production_year) as movie_year]\n" + @@ -10316,38 +11012,38 @@ WHERE ct.kind = 'production companies' " ├─ 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" + - " ├─ 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)%' OR mc.note LIKE '%(presents)%'))\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" + + " ├─ (((ct.id = mc.company_type_id) AND (mc.movie_id = mi_idx.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mc.movie_id)\n" + + " │ ├─ TableAlias(t)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title production_year]\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" + + " │ └─ Table\n" + + " │ ├─ name: movie_companies\n" + + " │ └─ columns: [movie_id company_type_id note]\n" + + " └─ CrossJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ 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" + "", }, { @@ -10374,73 +11070,73 @@ WHERE ct.kind = 'production companies' ExpectedPlan: "Project\n" + " ├─ columns: [min(mc.note):0!null as production_note, min(t.title):2!null as movie_title, min(t.production_year):1!null as movie_year]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(mc.note:7), MIN(t.production_year:2), MIN(t.title:1!null)\n" + + " ├─ select: MIN(mc.note:5), 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" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ct.id:10!null\n" + + " │ │ │ └─ mc.company_type_id:4!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ mc.movie_id:3!null\n" + + " │ │ └─ mi_idx.movie_id:6!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" + - " ├─ AND\n" + + " │ └─ mi_idx.movie_id:6!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mc.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" + + " │ └─ 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" + + " ├─ InnerJoin\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" + + " │ │ ├─ it.id:8!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]\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.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" + + " │ ├─ ct.kind:1!null\n" + + " │ └─ production companies (longtext)\n" + + " └─ TableAlias(ct)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: company_type\n" + + " └─ columns: [id kind]\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" + @@ -10448,40 +11144,40 @@ WHERE ct.kind = 'production companies' " ├─ 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" + + " ├─ (((ct.id = mc.company_type_id) AND (mc.movie_id = mi_idx.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mc.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" + + " │ └─ 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" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ 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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(mc.note) as production_note, min(t.title) as movie_title, min(t.production_year) as movie_year]\n" + @@ -10489,40 +11185,40 @@ WHERE ct.kind = 'production companies' " ├─ 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" + + " ├─ (((ct.id = mc.company_type_id) AND (mc.movie_id = mi_idx.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mc.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" + + " │ └─ 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" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ 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" + "", }, { @@ -10550,71 +11246,71 @@ WHERE ct.kind = 'production companies' ExpectedPlan: "Project\n" + " ├─ columns: [min(mc.note):0!null as production_note, min(t.title):2!null as movie_title, min(t.production_year):1!null as movie_year]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(mc.note:7), MIN(t.production_year:2), MIN(t.title:1!null)\n" + + " ├─ select: MIN(mc.note:5), 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" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ct.id:10!null\n" + + " │ │ │ └─ mc.company_type_id:4!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ mc.movie_id:3!null\n" + + " │ │ └─ mi_idx.movie_id:6!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" + + " │ └─ mi_idx.movie_id:6!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mc.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" + + " │ └─ 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" + + " ├─ InnerJoin\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" + + " │ │ ├─ it.id:8!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]\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.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" + + " │ ├─ ct.kind:1!null\n" + + " │ └─ production companies (longtext)\n" + + " └─ TableAlias(ct)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: company_type\n" + + " └─ columns: [id kind]\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" + @@ -10622,40 +11318,40 @@ WHERE ct.kind = 'production companies' " ├─ 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" + + " ├─ (((ct.id = mc.company_type_id) AND (mc.movie_id = mi_idx.movie_id)) AND (t.id = mi_idx.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" + + " │ └─ 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" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ 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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(mc.note) as production_note, min(t.title) as movie_title, min(t.production_year) as movie_year]\n" + @@ -10663,40 +11359,40 @@ WHERE ct.kind = 'production companies' " ├─ 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" + + " ├─ (((ct.id = mc.company_type_id) AND (mc.movie_id = mi_idx.movie_id)) AND (t.id = mi_idx.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" + + " │ └─ 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" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ 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" + "", }, { @@ -10723,69 +11419,69 @@ WHERE ct.kind = 'production companies' ExpectedPlan: "Project\n" + " ├─ columns: [min(mc.note):0!null as production_note, min(t.title):2!null as movie_title, min(t.production_year):1!null as movie_year]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(mc.note:7), MIN(t.production_year:2), MIN(t.title:1!null)\n" + + " ├─ select: MIN(mc.note:5), 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" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ct.id:10!null\n" + + " │ │ │ └─ mc.company_type_id:4!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ mc.movie_id:3!null\n" + + " │ │ └─ mi_idx.movie_id:6!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" + - " ├─ AND\n" + + " │ └─ mi_idx.movie_id:6!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mc.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" + + " │ └─ 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" + + " ├─ InnerJoin\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" + + " │ │ ├─ it.id:8!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]\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.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" + + " │ ├─ ct.kind:1!null\n" + + " │ └─ production companies (longtext)\n" + + " └─ TableAlias(ct)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: company_type\n" + + " └─ columns: [id kind]\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" + @@ -10793,40 +11489,40 @@ WHERE ct.kind = 'production companies' " ├─ 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" + + " ├─ (((ct.id = mc.company_type_id) AND (mc.movie_id = mi_idx.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mc.movie_id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (t.production_year > 2000)\n" + + " │ │ └─ TableAlias(t)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title production_year]\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" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ 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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(mc.note) as production_note, min(t.title) as movie_title, min(t.production_year) as movie_year]\n" + @@ -10834,40 +11530,40 @@ WHERE ct.kind = 'production companies' " ├─ 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" + + " ├─ (((ct.id = mc.company_type_id) AND (mc.movie_id = mi_idx.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mc.movie_id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (t.production_year > 2000)\n" + + " │ │ └─ TableAlias(t)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title production_year]\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" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ 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" + "", }, { @@ -10920,130 +11616,123 @@ WHERE cct1.kind = 'cast' " └─ InnerJoin\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" + + " │ │ │ ├─ ci.movie_id:19!null\n" + + " │ │ │ └─ cc.movie_id:8\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ ci.movie_id:12!null\n" + + " │ │ ├─ mk.movie_id:13!null\n" + + " │ │ └─ ci.movie_id:19!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" + + " │ └─ ci.movie_id:19!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mk.movie_id:13!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ kt.id:11!null\n" + + " │ │ │ └─ t.kind_id:2!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ └─ cc.movie_id:8\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" + + " │ │ │ │ ├─ cct2.id:4!null\n" + + " │ │ │ │ └─ cc.status_id:10!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:6!null\n" + + " │ │ │ │ └─ cc.subject_id:9!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" + + " │ │ ├─ 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" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ k.id:15!null\n" + + " │ │ └─ mk.keyword_id:14!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " ├─ Eq\n" + - " │ ├─ n.id:4!null\n" + - " │ └─ ci.person_id:11!null\n" + + " │ ├─ n.id:17!null\n" + + " │ └─ ci.person_id:18!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" + + " ├─ Eq\n" + + " │ ├─ chn.id:21!null\n" + + " │ └─ ci.person_role_id:20\n" + + " ├─ TableAlias(ci)\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" + + " │ ├─ name: cast_info\n" + + " │ └─ columns: [person_id movie_id person_role_id]\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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(t.title) as complete_downey_ironman_movie]\n" + @@ -11051,13 +11740,57 @@ 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 > 1950)\n" + - " │ └─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title kind_id production_year]\n" + + " ├─ (((ci.movie_id = cc.movie_id) AND (mk.movie_id = ci.movie_id)) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ ├─ (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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ └─ TableAlias(kt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: kind_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " ├─ (n.id = ci.person_id)\n" + " ├─ TableAlias(n)\n" + @@ -11065,58 +11798,17 @@ WHERE cct1.kind = 'cast' " │ ├─ 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" + + " ├─ (chn.id = ci.person_role_id)\n" + + " ├─ TableAlias(ci)\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" + + " │ ├─ name: cast_info\n" + + " │ └─ columns: [person_id movie_id person_role_id]\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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(t.title) as complete_downey_ironman_movie]\n" + @@ -11124,13 +11816,57 @@ 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 > 1950)\n" + - " │ └─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title kind_id production_year]\n" + + " ├─ (((ci.movie_id = cc.movie_id) AND (mk.movie_id = ci.movie_id)) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ ├─ (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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ └─ TableAlias(kt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: kind_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " ├─ (n.id = ci.person_id)\n" + " ├─ TableAlias(n)\n" + @@ -11138,58 +11874,17 @@ WHERE cct1.kind = 'cast' " │ ├─ 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" + + " ├─ (chn.id = ci.person_role_id)\n" + + " ├─ TableAlias(ci)\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" + + " │ ├─ name: cast_info\n" + + " │ └─ columns: [person_id movie_id person_role_id]\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" + "", }, { @@ -11243,32 +11938,97 @@ WHERE cct1.kind = 'cast' " └─ 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" + + " │ │ │ ├─ ci.movie_id:20!null\n" + + " │ │ │ └─ cc.movie_id:8\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ ci.movie_id:13!null\n" + + " │ │ ├─ mk.movie_id:13!null\n" + + " │ │ └─ ci.movie_id:20!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" + + " │ └─ ci.movie_id:20!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mk.movie_id:13!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ kt.id:11!null\n" + + " │ │ │ └─ t.kind_id:2!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ └─ cc.movie_id:8\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" + + " │ │ │ │ ├─ cct2.id:4!null\n" + + " │ │ │ │ └─ cc.status_id:10!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:6!null\n" + + " │ │ │ │ └─ cc.subject_id:9!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" + + " │ │ ├─ 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" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ k.id:15!null\n" + + " │ │ └─ mk.keyword_id:14!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " ├─ Eq\n" + - " │ ├─ n.id:4!null\n" + - " │ └─ ci.person_id:12!null\n" + + " │ ├─ n.id:17!null\n" + + " │ └─ ci.person_id:19!null\n" + " ├─ Filter\n" + " │ ├─ n.name LIKE '%Downey%Robert%'\n" + " │ └─ TableAlias(n)\n" + @@ -11277,98 +12037,26 @@ WHERE cct1.kind = 'cast' " │ ├─ 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" + + " ├─ Eq\n" + + " │ ├─ chn.id:22!null\n" + + " │ └─ ci.person_role_id:21\n" + + " ├─ TableAlias(ci)\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" + + " │ ├─ name: cast_info\n" + + " │ └─ columns: [person_id movie_id person_role_id]\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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(t.title) as complete_downey_ironman_movie]\n" + @@ -11376,13 +12064,57 @@ 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" + + " ├─ (((ci.movie_id = cc.movie_id) AND (mk.movie_id = ci.movie_id)) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ ├─ (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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ └─ TableAlias(kt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: kind_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " ├─ (n.id = ci.person_id)\n" + " ├─ Filter\n" + @@ -11392,58 +12124,17 @@ WHERE cct1.kind = 'cast' " │ ├─ 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" + + " ├─ (chn.id = ci.person_role_id)\n" + + " ├─ TableAlias(ci)\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" + + " │ ├─ name: cast_info\n" + + " │ └─ columns: [person_id movie_id person_role_id]\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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(t.title) as complete_downey_ironman_movie]\n" + @@ -11451,13 +12142,57 @@ 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" + + " ├─ (((ci.movie_id = cc.movie_id) AND (mk.movie_id = ci.movie_id)) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ ├─ (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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ └─ TableAlias(kt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: kind_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " ├─ (n.id = ci.person_id)\n" + " ├─ Filter\n" + @@ -11467,58 +12202,17 @@ WHERE cct1.kind = 'cast' " │ ├─ 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" + + " ├─ (chn.id = ci.person_role_id)\n" + + " ├─ TableAlias(ci)\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" + + " │ ├─ name: cast_info\n" + + " │ └─ columns: [person_id movie_id person_role_id]\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" + "", }, { @@ -11569,135 +12263,128 @@ WHERE cct1.kind = 'cast' ExpectedPlan: "Project\n" + " ├─ columns: [min(n.name):0!null as cast_member, min(t.title):1!null as complete_dynamic_hero_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(n.name:5!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(n.name:18!null), MIN(t.title:1!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" + + " │ │ │ ├─ ci.movie_id:20!null\n" + + " │ │ │ └─ cc.movie_id:8\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ ci.movie_id:13!null\n" + + " │ │ ├─ mk.movie_id:13!null\n" + + " │ │ └─ ci.movie_id:20!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" + + " │ └─ ci.movie_id:20!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mk.movie_id:13!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ kt.id:11!null\n" + + " │ │ │ └─ t.kind_id:2!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ └─ cc.movie_id:8\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" + + " │ │ │ │ ├─ cct2.id:4!null\n" + + " │ │ │ │ └─ cc.status_id:10!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:6!null\n" + + " │ │ │ │ └─ cc.subject_id:9!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" + + " │ │ ├─ 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" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ k.id:15!null\n" + + " │ │ └─ mk.keyword_id:14!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " ├─ Eq\n" + - " │ ├─ n.id:4!null\n" + - " │ └─ ci.person_id:12!null\n" + + " │ ├─ n.id:17!null\n" + + " │ └─ ci.person_id:19!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" + + " ├─ Eq\n" + + " │ ├─ chn.id:22!null\n" + + " │ └─ ci.person_role_id:21\n" + + " ├─ TableAlias(ci)\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: cast_info\n" + + " │ └─ columns: [person_id movie_id person_role_id]\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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(n.name) as cast_member, min(t.title) as complete_dynamic_hero_movie]\n" + @@ -11705,13 +12392,57 @@ 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" + + " ├─ (((ci.movie_id = cc.movie_id) AND (mk.movie_id = ci.movie_id)) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ ├─ (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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ └─ TableAlias(kt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: kind_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " ├─ (n.id = ci.person_id)\n" + " ├─ TableAlias(n)\n" + @@ -11719,58 +12450,17 @@ WHERE cct1.kind = 'cast' " │ ├─ 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" + + " ├─ (chn.id = ci.person_role_id)\n" + + " ├─ TableAlias(ci)\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" + + " │ ├─ name: cast_info\n" + + " │ └─ columns: [person_id movie_id person_role_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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(n.name) as cast_member, min(t.title) as complete_dynamic_hero_movie]\n" + @@ -11778,13 +12468,57 @@ 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" + + " ├─ (((ci.movie_id = cc.movie_id) AND (mk.movie_id = ci.movie_id)) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ ├─ (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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ └─ TableAlias(kt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: kind_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " ├─ (n.id = ci.person_id)\n" + " ├─ TableAlias(n)\n" + @@ -11792,58 +12526,17 @@ WHERE cct1.kind = 'cast' " │ ├─ 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" + + " ├─ (chn.id = ci.person_role_id)\n" + + " ├─ TableAlias(ci)\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" + + " │ ├─ name: cast_info\n" + + " │ └─ columns: [person_id movie_id person_role_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" + "", }, { @@ -11895,145 +12588,139 @@ WHERE cn.country_code !='[pl]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as company_name, min(lt.link):1!null as link_type, min(t.title):2!null as western_follow_up]\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:15!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" + - " │ │ │ │ └─ t.id:0!null\n" + + " │ │ │ ├─ AND\n" + + " │ │ │ │ ├─ AND\n" + + " │ │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ │ ├─ mc.movie_id:3!null\n" + + " │ │ │ │ │ │ └─ mi.movie_id:20!null\n" + + " │ │ │ │ │ └─ Eq\n" + + " │ │ │ │ │ ├─ mk.movie_id:16!null\n" + + " │ │ │ │ │ └─ mc.movie_id:3!null\n" + + " │ │ │ │ └─ Eq\n" + + " │ │ │ │ ├─ ml.movie_id:12!null\n" + + " │ │ │ │ └─ mc.movie_id:3!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mk.movie_id:5!null\n" + + " │ │ │ ├─ ml.movie_id:12!null\n" + + " │ │ │ └─ t.id:0!null\n" + " │ │ └─ Eq\n" + " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mc.movie_id:9!null\n" + + " │ │ └─ mk.movie_id:16!null\n" + " │ └─ Eq\n" + - " │ ├─ mi.movie_id:7!null\n" + + " │ ├─ mi.movie_id:20!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" + - " └─ 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: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))\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" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mc.movie_id:3!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" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mc.company_type_id:5!null\n" + + " │ │ └─ ct.id:10!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mc.company_id:4!null\n" + + " │ │ │ └─ cn.id:7!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" + + " │ │ └─ 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" + + " │ ├─ 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" + + " └─ LookupJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ml.movie_id:12!null\n" + + " │ │ └─ mk.movie_id:16!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ lt.id:14!null\n" + + " │ │ │ └─ ml.link_type_id:13!null\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mk.keyword_id:17!null\n" + + " │ │ └─ k.id:18!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " ├─ index: [movie_info.movie_id]\n" + + " ├─ keys: [mk.movie_id:16!null]\n" + + " ├─ colSet: (20-24)\n" + + " ├─ tableId: 6\n" + + " └─ Table\n" + + " ├─ name: movie_info\n" + + " └─ columns: [movie_id info]\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" + @@ -12041,137 +12728,143 @@ WHERE cn.country_code !='[pl]' " ├─ 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))\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))\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" + - "", + " ├─ ((((((mc.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = t.id)) AND (t.id = mk.movie_id)) AND (mi.movie_id = t.id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ ├─ (mc.company_type_id = ct.id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " │ ├─ (ct.kind = 'production companies')\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ LookupJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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'))\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(cn.name) as company_name, min(lt.link) as link_type, min(t.title) as western_follow_up]\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))\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))\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" + + " ├─ ((((((mc.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = t.id)) AND (t.id = mk.movie_id)) AND (mi.movie_id = t.id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ ├─ (mc.company_type_id = ct.id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " │ ├─ (ct.kind = 'production companies')\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ LookupJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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'))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " ├─ index: [movie_info.movie_id]\n" + + " ├─ columns: [movie_id info]\n" + + " └─ keys: mk.movie_id\n" + "", }, { @@ -12217,145 +12910,139 @@ WHERE cn.country_code !='[pl]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as company_name, min(lt.link):1!null as link_type, min(t.title):2!null as german_follow_up]\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:15!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" + - " │ │ │ │ └─ t.id:0!null\n" + + " │ │ │ ├─ AND\n" + + " │ │ │ │ ├─ AND\n" + + " │ │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ │ ├─ mc.movie_id:3!null\n" + + " │ │ │ │ │ │ └─ mi.movie_id:20!null\n" + + " │ │ │ │ │ └─ Eq\n" + + " │ │ │ │ │ ├─ mk.movie_id:16!null\n" + + " │ │ │ │ │ └─ mc.movie_id:3!null\n" + + " │ │ │ │ └─ Eq\n" + + " │ │ │ │ ├─ ml.movie_id:12!null\n" + + " │ │ │ │ └─ mc.movie_id:3!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mk.movie_id:5!null\n" + + " │ │ │ ├─ ml.movie_id:12!null\n" + + " │ │ │ └─ t.id:0!null\n" + " │ │ └─ Eq\n" + " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mc.movie_id:9!null\n" + + " │ │ └─ mk.movie_id:16!null\n" + " │ └─ Eq\n" + - " │ ├─ mi.movie_id:7!null\n" + + " │ ├─ mi.movie_id:20!null\n" + " │ └─ t.id:0!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" + - " │ │ ├─ 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" + - " ├─ 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(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" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mc.movie_id:3!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" + + " │ ├─ Eq\n" + + " │ │ ├─ mc.company_type_id:5!null\n" + + " │ │ └─ ct.id:10!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mc.company_id:4!null\n" + + " │ │ │ └─ cn.id:7!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" + + " │ │ └─ 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" + + " │ ├─ 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" + + " └─ LookupJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ml.movie_id:12!null\n" + + " │ │ └─ mk.movie_id:16!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ lt.id:14!null\n" + + " │ │ │ └─ ml.link_type_id:13!null\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mk.keyword_id:17!null\n" + + " │ │ └─ k.id:18!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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(Germany (longtext), German (longtext))\n" + + " └─ TableAlias(mi)\n" + + " └─ IndexedTableAccess(movie_info)\n" + + " ├─ index: [movie_info.movie_id]\n" + + " ├─ keys: [mk.movie_id:16!null]\n" + + " ├─ colSet: (20-24)\n" + + " ├─ tableId: 6\n" + + " └─ Table\n" + + " ├─ name: movie_info\n" + + " └─ columns: [movie_id info]\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" + @@ -12363,68 +13050,71 @@ WHERE cn.country_code !='[pl]' " ├─ 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))\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" + - " ├─ ((((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" + + " ├─ ((((((mc.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = t.id)) AND (t.id = mk.movie_id)) AND (mi.movie_id = t.id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ ├─ (mc.company_type_id = ct.id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " │ ├─ (ct.kind = 'production companies')\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ LookupJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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 ('Germany', '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(cn.name) as company_name, min(lt.link) as link_type, min(t.title) as german_follow_up]\n" + @@ -12432,68 +13122,71 @@ WHERE cn.country_code !='[pl]' " ├─ 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))\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" + - " ├─ ((((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" + + " ├─ ((((((mc.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = t.id)) AND (t.id = mk.movie_id)) AND (mi.movie_id = t.id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ ├─ (mc.company_type_id = ct.id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " │ ├─ (ct.kind = 'production companies')\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ LookupJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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 ('Germany', '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" + "", }, { @@ -12546,145 +13239,139 @@ WHERE cn.country_code !='[pl]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as company_name, min(lt.link):1!null as link_type, min(t.title):2!null as western_follow_up]\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:15!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" + - " │ │ │ │ └─ t.id:0!null\n" + + " │ │ │ ├─ AND\n" + + " │ │ │ │ ├─ AND\n" + + " │ │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ │ ├─ mc.movie_id:3!null\n" + + " │ │ │ │ │ │ └─ mi.movie_id:20!null\n" + + " │ │ │ │ │ └─ Eq\n" + + " │ │ │ │ │ ├─ mk.movie_id:16!null\n" + + " │ │ │ │ │ └─ mc.movie_id:3!null\n" + + " │ │ │ │ └─ Eq\n" + + " │ │ │ │ ├─ ml.movie_id:12!null\n" + + " │ │ │ │ └─ mc.movie_id:3!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mk.movie_id:5!null\n" + + " │ │ │ ├─ ml.movie_id:12!null\n" + + " │ │ │ └─ t.id:0!null\n" + " │ │ └─ Eq\n" + " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mc.movie_id:9!null\n" + + " │ │ └─ mk.movie_id:16!null\n" + " │ └─ Eq\n" + - " │ ├─ mi.movie_id:7!null\n" + + " │ ├─ mi.movie_id:20!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" + - " │ │ └─ 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" + - " │ │ │ ├─ 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" + - " ├─ 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" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mc.movie_id:3!null\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" + + " │ ├─ Eq\n" + + " │ │ ├─ mc.company_type_id:5!null\n" + + " │ │ └─ ct.id:10!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mc.company_id:4!null\n" + + " │ │ │ └─ cn.id:7!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" + + " │ │ └─ 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" + + " │ ├─ 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" + + " └─ LookupJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ml.movie_id:12!null\n" + + " │ │ └─ mk.movie_id:16!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ lt.id:14!null\n" + + " │ │ │ └─ ml.link_type_id:13!null\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mk.keyword_id:17!null\n" + + " │ │ └─ k.id:18!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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: [mk.movie_id:16!null]\n" + + " ├─ colSet: (20-24)\n" + + " ├─ tableId: 6\n" + + " └─ Table\n" + + " ├─ name: movie_info\n" + + " └─ columns: [movie_id info]\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" + @@ -12692,68 +13379,71 @@ WHERE cn.country_code !='[pl]' " ├─ 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))\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))\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" + + " ├─ ((((((mc.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = t.id)) AND (t.id = mk.movie_id)) AND (mi.movie_id = t.id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mc.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" + + " │ ├─ (mc.company_type_id = ct.id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " │ ├─ (ct.kind = 'production companies')\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ LookupJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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: mk.movie_id\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" + @@ -12761,68 +13451,71 @@ WHERE cn.country_code !='[pl]' " ├─ 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))\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))\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" + + " ├─ ((((((mc.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (ml.movie_id = mc.movie_id)) AND (ml.movie_id = t.id)) AND (t.id = mk.movie_id)) AND (mi.movie_id = t.id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mc.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" + + " │ ├─ (mc.company_type_id = ct.id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " │ ├─ (ct.kind = 'production companies')\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ LookupJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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: mk.movie_id\n" + "", }, { @@ -12879,171 +13572,166 @@ WHERE cn.country_code != '[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as movie_company, min(mi_idx.info):1!null as rating, min(t.title):2!null as western_violent_movie]\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:11!null), MIN(mi_idx.info:16!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\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" + + " │ │ │ │ ├─ mk.movie_id:24!null\n" + + " │ │ │ │ └─ mi.movie_id:19!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mk.movie_id:4!null\n" + + " │ │ │ ├─ mk.movie_id:24!null\n" + + " │ │ │ └─ mi_idx.movie_id:14!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mi_idx.movie_id:6!null\n" + + " │ │ ├─ mk.movie_id:24!null\n" + + " │ │ └─ mc.movie_id:6!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" + + " │ └─ mk.movie_id:24!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ AND\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:19!null\n" + + " │ │ │ │ └─ mc.movie_id:6!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mi.movie_id:19!null\n" + + " │ │ │ └─ mi_idx.movie_id:14!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mi.movie_id:19!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mc.movie_id:6!null\n" + + " │ │ │ │ └─ mi_idx.movie_id:14!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ t.id:0!null\n" + + " │ │ │ └─ mi_idx.movie_id:14!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ └─ mc.movie_id:6!null\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ ├─ kt.id:4!null\n" + + " │ │ │ │ │ └─ t.kind_id:2!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" + + " │ │ │ │ └─ 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" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ ct.id:13!null\n" + + " │ │ │ │ └─ mc.company_type_id:8!null\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ ├─ cn.id:10!null\n" + + " │ │ │ │ │ └─ mc.company_id:7!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" + + " │ │ │ │ └─ 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" + + " │ │ │ └─ TableAlias(ct)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_type\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:17!null\n" + + " │ │ │ └─ mi_idx.info_type_id:15!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" + + " │ │ └─ 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" + + " │ ├─ Eq\n" + + " │ │ ├─ it1.id:22!null\n" + + " │ │ └─ mi.info_type_id:20!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" + + " │ └─ 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" + " └─ 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" + + " ├─ Eq\n" + + " │ ├─ k.id:26!null\n" + + " │ └─ mk.keyword_id:25!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" + + " └─ 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(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as western_violent_movie]\n" + @@ -13051,82 +13739,87 @@ WHERE cn.country_code != '[us]' " ├─ 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" + + " ├─ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (t.id = mi.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ ((mc.movie_id = mi_idx.movie_id) AND (t.id = mi_idx.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mc.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (kt.kind HASH IN ('movie', 'episode'))\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\n" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (NOT((cn.country_code = '[us]')))\n" + + " │ │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: company_name\n" + + " │ │ │ │ └─ columns: [id name country_code]\n" + + " │ │ │ └─ TableAlias(ct)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_type\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it2.info = 'rating')\n" + + " │ │ └─ TableAlias(it2)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it1.info = 'countries')\n" + + " │ └─ TableAlias(it1)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\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" + + " ├─ (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" + + " └─ 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(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as western_violent_movie]\n" + @@ -13134,82 +13827,87 @@ WHERE cn.country_code != '[us]' " ├─ 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" + + " ├─ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (t.id = mi.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ ((mc.movie_id = mi_idx.movie_id) AND (t.id = mi_idx.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mc.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (kt.kind HASH IN ('movie', 'episode'))\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\n" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (NOT((cn.country_code = '[us]')))\n" + + " │ │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: company_name\n" + + " │ │ │ │ └─ columns: [id name country_code]\n" + + " │ │ │ └─ TableAlias(ct)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_type\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it2.info = 'rating')\n" + + " │ │ └─ TableAlias(it2)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it1.info = 'countries')\n" + + " │ └─ TableAlias(it1)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\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" + + " ├─ (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" + + " └─ 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" + "", }, { @@ -13266,171 +13964,166 @@ WHERE cn.country_code != '[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as movie_company, min(mi_idx.info):1!null as rating, min(t.title):2!null as western_violent_movie]\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:11!null), MIN(mi_idx.info:16!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\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" + + " │ │ │ │ ├─ mk.movie_id:24!null\n" + + " │ │ │ │ └─ mi.movie_id:19!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mk.movie_id:4!null\n" + + " │ │ │ ├─ mk.movie_id:24!null\n" + + " │ │ │ └─ mi_idx.movie_id:14!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mi_idx.movie_id:6!null\n" + + " │ │ ├─ mk.movie_id:24!null\n" + + " │ │ └─ mc.movie_id:6!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" + + " │ └─ mk.movie_id:24!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ AND\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:19!null\n" + + " │ │ │ │ └─ mc.movie_id:6!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mi.movie_id:19!null\n" + + " │ │ │ └─ mi_idx.movie_id:14!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mi.movie_id:19!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mc.movie_id:6!null\n" + + " │ │ │ │ └─ mi_idx.movie_id:14!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ t.id:0!null\n" + + " │ │ │ └─ mi_idx.movie_id:14!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ └─ mc.movie_id:6!null\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ ├─ kt.id:4!null\n" + + " │ │ │ │ │ └─ t.kind_id:2!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" + + " │ │ │ │ └─ 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" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ ct.id:13!null\n" + + " │ │ │ │ └─ mc.company_type_id:8!null\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ ├─ cn.id:10!null\n" + + " │ │ │ │ │ └─ mc.company_id:7!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" + + " │ │ │ │ └─ 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" + + " │ │ │ └─ TableAlias(ct)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_type\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:17!null\n" + + " │ │ │ └─ mi_idx.info_type_id:15!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" + + " │ │ └─ 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" + + " │ ├─ Eq\n" + + " │ │ ├─ it1.id:22!null\n" + + " │ │ └─ mi.info_type_id:20!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" + + " │ └─ 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" + " └─ 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" + + " ├─ Eq\n" + + " │ ├─ k.id:26!null\n" + + " │ └─ mk.keyword_id:25!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" + + " └─ 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(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as western_violent_movie]\n" + @@ -13438,82 +14131,87 @@ WHERE cn.country_code != '[us]' " ├─ 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" + + " ├─ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (t.id = mi.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ ((mc.movie_id = mi_idx.movie_id) AND (t.id = mi_idx.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mc.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (kt.kind HASH IN ('movie', 'episode'))\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\n" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (NOT((cn.country_code = '[us]')))\n" + + " │ │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: company_name\n" + + " │ │ │ │ └─ columns: [id name country_code]\n" + + " │ │ │ └─ TableAlias(ct)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_type\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it2.info = 'rating')\n" + + " │ │ └─ TableAlias(it2)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it1.info = 'countries')\n" + + " │ └─ TableAlias(it1)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\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" + + " ├─ (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" + + " └─ 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(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as western_violent_movie]\n" + @@ -13521,82 +14219,87 @@ WHERE cn.country_code != '[us]' " ├─ 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" + + " ├─ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (t.id = mi.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ ((mc.movie_id = mi_idx.movie_id) AND (t.id = mi_idx.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mc.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (kt.kind HASH IN ('movie', 'episode'))\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\n" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (NOT((cn.country_code = '[us]')))\n" + + " │ │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: company_name\n" + + " │ │ │ │ └─ columns: [id name country_code]\n" + + " │ │ │ └─ TableAlias(ct)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_type\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it2.info = 'rating')\n" + + " │ │ └─ TableAlias(it2)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it1.info = 'countries')\n" + + " │ └─ TableAlias(it1)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ InnerJoin\n" + + " ├─ (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" + + " └─ 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" + "", }, { @@ -13659,171 +14362,166 @@ WHERE cn.country_code != '[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as movie_company, min(mi_idx.info):1!null as rating, min(t.title):2!null as western_violent_movie]\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:11!null), MIN(mi_idx.info:16!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\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" + + " │ │ │ │ ├─ mk.movie_id:24!null\n" + + " │ │ │ │ └─ mi.movie_id:19!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mk.movie_id:4!null\n" + + " │ │ │ ├─ mk.movie_id:24!null\n" + + " │ │ │ └─ mi_idx.movie_id:14!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mi_idx.movie_id:6!null\n" + + " │ │ ├─ mk.movie_id:24!null\n" + + " │ │ └─ mc.movie_id:6!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" + + " │ └─ mk.movie_id:24!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ AND\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:19!null\n" + + " │ │ │ │ └─ mc.movie_id:6!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mi.movie_id:19!null\n" + + " │ │ │ └─ mi_idx.movie_id:14!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mi.movie_id:19!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mc.movie_id:6!null\n" + + " │ │ │ │ └─ mi_idx.movie_id:14!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ t.id:0!null\n" + + " │ │ │ └─ mi_idx.movie_id:14!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ └─ mc.movie_id:6!null\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ ├─ kt.id:4!null\n" + + " │ │ │ │ │ └─ t.kind_id:2!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" + + " │ │ │ │ └─ 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" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ ct.id:13!null\n" + + " │ │ │ │ └─ mc.company_type_id:8!null\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ ├─ cn.id:10!null\n" + + " │ │ │ │ │ └─ mc.company_id:7!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" + + " │ │ │ │ └─ 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" + + " │ │ │ └─ TableAlias(ct)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_type\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:17!null\n" + + " │ │ │ └─ mi_idx.info_type_id:15!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" + + " │ │ └─ 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" + + " │ ├─ Eq\n" + + " │ │ ├─ it1.id:22!null\n" + + " │ │ └─ mi.info_type_id:20!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" + + " │ └─ 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" + " └─ 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" + + " ├─ Eq\n" + + " │ ├─ k.id:26!null\n" + + " │ └─ mk.keyword_id:25!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" + + " └─ 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(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as western_violent_movie]\n" + @@ -13831,82 +14529,87 @@ WHERE cn.country_code != '[us]' " ├─ 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" + + " ├─ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (t.id = mi.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ ((mc.movie_id = mi_idx.movie_id) AND (t.id = mi_idx.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mc.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (kt.kind HASH IN ('movie', 'episode'))\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\n" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (NOT((cn.country_code = '[us]')))\n" + + " │ │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: company_name\n" + + " │ │ │ │ └─ columns: [id name country_code]\n" + + " │ │ │ └─ TableAlias(ct)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_type\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it2.info = 'rating')\n" + + " │ │ └─ TableAlias(it2)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [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" + + " │ └─ Filter\n" + + " │ ├─ (it1.info = 'countries')\n" + + " │ └─ TableAlias(it1)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\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" + + " ├─ (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" + + " └─ 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(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as western_violent_movie]\n" + @@ -13914,82 +14617,87 @@ WHERE cn.country_code != '[us]' " ├─ 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" + + " ├─ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (t.id = mi.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ ((mc.movie_id = mi_idx.movie_id) AND (t.id = mi_idx.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mc.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (kt.kind HASH IN ('movie', 'episode'))\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\n" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (NOT((cn.country_code = '[us]')))\n" + + " │ │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: company_name\n" + + " │ │ │ │ └─ columns: [id name country_code]\n" + + " │ │ │ └─ TableAlias(ct)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_type\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it2.info = 'rating')\n" + + " │ │ └─ TableAlias(it2)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [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" + + " │ └─ Filter\n" + + " │ ├─ (it1.info = 'countries')\n" + + " │ └─ TableAlias(it1)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\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" + + " ├─ (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" + + " └─ 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" + "", }, { @@ -14050,247 +14758,247 @@ WHERE cn.country_code != '[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as movie_company, min(mi_idx.info):1!null as rating, min(t.title):2!null as western_violent_movie]\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:10!null), MIN(mi_idx.info:15!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + - " │ │ │ ├─ AND\n" + - " │ │ │ │ ├─ Eq\n" + - " │ │ │ │ │ ├─ kt.id:15!null\n" + - " │ │ │ │ │ └─ t.kind_id:2!null\n" + - " │ │ │ │ └─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ └─ mi.movie_id:9!null\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mk.movie_id:23!null\n" + + " │ │ │ │ └─ mi.movie_id:18!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mk.movie_id:4!null\n" + + " │ │ │ ├─ mk.movie_id:23!null\n" + + " │ │ │ └─ mi_idx.movie_id:13!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mi_idx.movie_id:6!null\n" + + " │ │ ├─ mk.movie_id:23!null\n" + + " │ │ └─ mc.movie_id:6!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" + + " │ └─ mk.movie_id:23!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ AND\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:18!null\n" + + " │ │ │ │ └─ mc.movie_id:6!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mi.movie_id:18!null\n" + + " │ │ │ └─ mi_idx.movie_id:13!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mi.movie_id:18!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mc.movie_id:6!null\n" + + " │ │ │ │ └─ mi_idx.movie_id:13!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ t.id:0!null\n" + + " │ │ │ └─ mi_idx.movie_id:13!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ └─ mc.movie_id:6!null\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ ├─ kt.id:4!null\n" + + " │ │ │ │ │ └─ t.kind_id:2!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" + + " │ │ │ │ └─ 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" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ ct.id:12!null\n" + + " │ │ │ │ └─ mc.company_type_id:8!null\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ ├─ cn.id:9!null\n" + + " │ │ │ │ │ └─ mc.company_id:7!null\n" + + " │ │ │ │ ├─ TableAlias(mc)\n" + + " │ │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ │ └─ Table\n" + + " │ │ │ │ │ ├─ name: movie_companies\n" + + " │ │ │ │ │ └─ columns: [movie_id company_id company_type_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" + + " │ │ │ └─ TableAlias(ct)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_type\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:16!null\n" + + " │ │ │ └─ mi_idx.info_type_id:14!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" + + " │ │ └─ 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" + + " │ ├─ Eq\n" + + " │ │ ├─ it1.id:21!null\n" + + " │ │ └─ mi.info_type_id:19!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" + + " │ └─ 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" + " └─ 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" + + " ├─ Eq\n" + + " │ ├─ k.id:25!null\n" + + " │ └─ mk.keyword_id:24!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" + - "", + " └─ 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(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" + + " ├─ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (t.id = mi.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ ((mc.movie_id = mi_idx.movie_id) AND (t.id = mi_idx.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mc.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (kt.kind HASH IN ('movie', 'episode'))\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\n" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ │ │ ├─ TableAlias(mc)\n" + + " │ │ │ │ │ └─ Table\n" + + " │ │ │ │ │ ├─ name: movie_companies\n" + + " │ │ │ │ │ └─ columns: [movie_id company_id company_type_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" + + " │ │ │ └─ TableAlias(ct)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_type\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it2.info = 'rating')\n" + + " │ │ └─ TableAlias(it2)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [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" + + " │ └─ Filter\n" + + " │ ├─ (it1.info = 'countries')\n" + + " │ └─ TableAlias(it1)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\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" + + " ├─ (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" + + " └─ 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(cn.name) as movie_company, min(mi_idx.info) as rating, min(t.title) as western_violent_movie]\n" + @@ -14298,80 +15006,85 @@ WHERE cn.country_code != '[us]' " ├─ 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" + + " ├─ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mi_idx.movie_id)) AND (mk.movie_id = mc.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (((mi.movie_id = mc.movie_id) AND (mi.movie_id = mi_idx.movie_id)) AND (t.id = mi.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ ((mc.movie_id = mi_idx.movie_id) AND (t.id = mi_idx.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mc.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (kt.kind HASH IN ('movie', 'episode'))\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\n" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ │ │ ├─ TableAlias(mc)\n" + + " │ │ │ │ │ └─ Table\n" + + " │ │ │ │ │ ├─ name: movie_companies\n" + + " │ │ │ │ │ └─ columns: [movie_id company_id company_type_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" + + " │ │ │ └─ TableAlias(ct)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_type\n" + + " │ │ │ └─ columns: [id]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it2.info = 'rating')\n" + + " │ │ └─ TableAlias(it2)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [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" + + " │ └─ Filter\n" + + " │ ├─ (it1.info = 'countries')\n" + + " │ └─ TableAlias(it1)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\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" + + " ├─ (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" + + " └─ 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" + "", }, { @@ -14419,161 +15132,148 @@ WHERE cct1.kind = 'complete+verified' ExpectedPlan: "Project\n" + " ├─ columns: [min(kt.kind):0!null as movie_kind, min(t.title):1!null as complete_us_internet_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(kt.kind:14!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(kt.kind:9!null), MIN(t.title:1!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" + + " │ │ │ │ ├─ mk.movie_id:22!null\n" + + " │ │ │ │ └─ mi.movie_id:10!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mk.movie_id:4!null\n" + + " │ │ │ ├─ mk.movie_id:22!null\n" + + " │ │ │ └─ mc.movie_id:16!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mc.movie_id:10!null\n" + + " │ │ ├─ mk.movie_id:22!null\n" + + " │ │ └─ cc.movie_id:6\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!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" + + " │ └─ mk.movie_id:22!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mi.movie_id:10!null\n" + + " │ │ │ └─ mc.movie_id:16!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mc.movie_id:16!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ t.id:0!null\n" + + " │ │ │ └─ mi.movie_id:10!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ kt.id:8!null\n" + + " │ │ │ │ └─ t.kind_id:2!null\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ │ └─ cc.movie_id:6\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" + + " │ │ │ │ │ ├─ cct1.id:4!null\n" + + " │ │ │ │ │ └─ cc.status_id:7!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" + + " │ │ │ └─ 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" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it1.id:14!null\n" + + " │ │ │ └─ mi.info_type_id:11!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" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info\n" + + " │ │ │ └─ columns: [movie_id info_type_id info note]\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" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ct.id:21!null\n" + + " │ │ └─ mc.company_type_id:18!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn.id:19!null\n" + + " │ │ │ └─ mc.company_id:17!null\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_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(ct)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id]\n" + " └─ InnerJoin\n" + - " ├─ AND\n" + - " │ ├─ AND\n" + - " │ │ ├─ AND\n" + - " │ │ │ ├─ Eq\n" + - " │ │ │ │ ├─ mk.movie_id:4!null\n" + - " │ │ │ │ └─ mi.movie_id:6!null\n" + - " │ │ │ └─ Eq\n" + - " │ │ │ ├─ mk.movie_id:4!null\n" + - " │ │ │ └─ mc.movie_id:10!null\n" + - " │ │ └─ Eq\n" + - " │ │ ├─ mk.movie_id:4!null\n" + - " │ │ └─ cc.movie_id:23\n" + - " │ └─ Eq\n" + - " │ ├─ k.id:15!null\n" + - " │ └─ mk.keyword_id:5!null\n" + + " ├─ Eq\n" + + " │ ├─ k.id:24!null\n" + + " │ └─ mk.keyword_id:23!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" + - " ├─ 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" + - " │ └─ 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" + - " │ └─ 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))\n" + - " │ └─ TableAlias(kt)\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" + + " └─ TableAlias(k)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: keyword\n" + + " └─ columns: [id]\n" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(kt.kind) as movie_kind, min(t.title) as complete_us_internet_movie]\n" + @@ -14581,76 +15281,81 @@ 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" + + " ├─ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ ((mi.movie_id = mc.movie_id) AND (t.id = mc.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (t.id = mi.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (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" + + " │ │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (kt.kind HASH IN ('movie'))\n" + + " │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: kind_type\n" + + " │ │ │ └─ columns: [id kind]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info\n" + + " │ │ │ └─ columns: [movie_id info_type_id info note]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it1.info = 'release dates')\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (cn.country_code = '[us]')\n" + + " │ │ └─ TableAlias(cn)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_name\n" + + " │ │ └─ columns: [id country_code]\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id]\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" + + " ├─ (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" + - " ├─ 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" + - " │ └─ 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" + - " │ └─ Table\n" + - " │ ├─ name: movie_companies\n" + - " │ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " ├─ Filter\n" + - " │ ├─ (kt.kind HASH IN ('movie'))\n" + - " │ └─ TableAlias(kt)\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" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " ├─ name: keyword\n" + + " └─ columns: [id]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(kt.kind) as movie_kind, min(t.title) as complete_us_internet_movie]\n" + @@ -14658,76 +15363,81 @@ 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" + + " ├─ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ ((mi.movie_id = mc.movie_id) AND (t.id = mc.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (t.id = mi.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (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" + + " │ │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (kt.kind HASH IN ('movie'))\n" + + " │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: kind_type\n" + + " │ │ │ └─ columns: [id kind]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info\n" + + " │ │ │ └─ columns: [movie_id info_type_id info note]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it1.info = 'release dates')\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (cn.country_code = '[us]')\n" + + " │ │ └─ TableAlias(cn)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_name\n" + + " │ │ └─ columns: [id country_code]\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id]\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" + + " ├─ (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" + - " ├─ 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" + - " │ └─ 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" + - " │ └─ Table\n" + - " │ ├─ name: movie_companies\n" + - " │ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " ├─ Filter\n" + - " │ ├─ (kt.kind HASH IN ('movie'))\n" + - " │ └─ TableAlias(kt)\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" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " ├─ name: keyword\n" + + " └─ columns: [id]\n" + "", }, { @@ -14777,160 +15487,147 @@ WHERE cct1.kind = 'complete+verified' ExpectedPlan: "Project\n" + " ├─ columns: [min(kt.kind):0!null as movie_kind, min(t.title):1!null as complete_nerdy_internet_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(kt.kind:14!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(kt.kind:9!null), MIN(t.title:1!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" + + " │ │ │ │ ├─ mk.movie_id:22!null\n" + + " │ │ │ │ └─ mi.movie_id:10!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mk.movie_id:4!null\n" + + " │ │ │ ├─ mk.movie_id:22!null\n" + + " │ │ │ └─ mc.movie_id:16!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mc.movie_id:10!null\n" + + " │ │ ├─ mk.movie_id:22!null\n" + + " │ │ └─ cc.movie_id:6\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!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" + + " │ └─ mk.movie_id:22!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mi.movie_id:10!null\n" + + " │ │ │ └─ mc.movie_id:16!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mc.movie_id:16!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ t.id:0!null\n" + + " │ │ │ └─ mi.movie_id:10!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ kt.id:8!null\n" + + " │ │ │ │ └─ t.kind_id:2!null\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ │ └─ cc.movie_id:6\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" + + " │ │ │ │ │ ├─ cct1.id:4!null\n" + + " │ │ │ │ │ └─ cc.status_id:7!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" + + " │ │ │ └─ 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" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it1.id:14!null\n" + + " │ │ │ └─ mi.info_type_id:11!null\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ AND\n" + + " │ │ │ │ ├─ mi.note LIKE '%internet%'\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 note]\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" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ct.id:21!null\n" + + " │ │ └─ mc.company_type_id:18!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn.id:19!null\n" + + " │ │ │ └─ mc.company_id:17!null\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_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(ct)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id]\n" + " └─ InnerJoin\n" + - " ├─ AND\n" + - " │ ├─ AND\n" + - " │ │ ├─ AND\n" + - " │ │ │ ├─ Eq\n" + - " │ │ │ │ ├─ mk.movie_id:4!null\n" + - " │ │ │ │ └─ mi.movie_id:6!null\n" + - " │ │ │ └─ Eq\n" + - " │ │ │ ├─ mk.movie_id:4!null\n" + - " │ │ │ └─ mc.movie_id:10!null\n" + - " │ │ └─ Eq\n" + - " │ │ ├─ mk.movie_id:4!null\n" + - " │ │ └─ cc.movie_id:24\n" + - " │ └─ Eq\n" + - " │ ├─ k.id:15!null\n" + - " │ └─ mk.keyword_id:5!null\n" + + " ├─ Eq\n" + + " │ ├─ k.id:24!null\n" + + " │ └─ mk.keyword_id:23!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" + - " ├─ Filter\n" + - " │ ├─ AND\n" + - " │ │ ├─ mi.note LIKE '%internet%'\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 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" + - " │ └─ 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))\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(nerd (longtext), loner (longtext), alienation (longtext), dignity (longtext))\n" + - " │ └─ TableAlias(k)\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" + + " └─ 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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(kt.kind) as movie_kind, min(t.title) as complete_nerdy_internet_movie]\n" + @@ -14938,78 +15635,83 @@ 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" + + " ├─ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ ((mi.movie_id = mc.movie_id) AND (t.id = mc.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (t.id = mi.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (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" + + " │ │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (kt.kind HASH IN ('movie'))\n" + + " │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: kind_type\n" + + " │ │ │ └─ columns: [id kind]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + + " │ │ │ └─ TableAlias(mi)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info\n" + + " │ │ │ └─ columns: [movie_id info_type_id info note]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it1.info = 'release dates')\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (cn.country_code = '[us]')\n" + + " │ │ └─ TableAlias(cn)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_name\n" + + " │ │ └─ columns: [id country_code]\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id]\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" + + " ├─ (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" + - " ├─ Filter\n" + - " │ ├─ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + - " │ └─ TableAlias(mi)\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" + - " │ └─ Table\n" + - " │ ├─ name: movie_companies\n" + - " │ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " ├─ Filter\n" + - " │ ├─ (kt.kind HASH IN ('movie'))\n" + - " │ └─ TableAlias(kt)\n" + - " │ └─ Table\n" + - " │ ├─ name: kind_type\n" + - " │ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " ├─ Filter\n" + - " │ ├─ (k.keyword HASH IN ('nerd', 'loner', 'alienation', 'dignity'))\n" + - " │ └─ TableAlias(k)\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" + + " └─ Filter\n" + + " ├─ (k.keyword HASH IN ('nerd', 'loner', 'alienation', 'dignity'))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " ├─ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(kt.kind) as movie_kind, min(t.title) as complete_nerdy_internet_movie]\n" + @@ -15017,78 +15719,83 @@ 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" + + " ├─ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ ((mi.movie_id = mc.movie_id) AND (t.id = mc.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (t.id = mi.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (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" + + " │ │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (kt.kind HASH IN ('movie'))\n" + + " │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: kind_type\n" + + " │ │ │ └─ columns: [id kind]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + + " │ │ │ └─ TableAlias(mi)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info\n" + + " │ │ │ └─ columns: [movie_id info_type_id info note]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it1.info = 'release dates')\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (cn.country_code = '[us]')\n" + + " │ │ └─ TableAlias(cn)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_name\n" + + " │ │ └─ columns: [id country_code]\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id]\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" + + " ├─ (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" + - " ├─ Filter\n" + - " │ ├─ (mi.note LIKE '%internet%' AND mi.info LIKE 'USA:% 200%')\n" + - " │ └─ TableAlias(mi)\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" + - " │ └─ Table\n" + - " │ ├─ name: movie_companies\n" + - " │ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\n" + - " ├─ Filter\n" + - " │ ├─ (kt.kind HASH IN ('movie'))\n" + - " │ └─ TableAlias(kt)\n" + - " │ └─ Table\n" + - " │ ├─ name: kind_type\n" + - " │ └─ columns: [id kind]\n" + - " └─ CrossJoin\n" + - " ├─ Filter\n" + - " │ ├─ (k.keyword HASH IN ('nerd', 'loner', 'alienation', 'dignity'))\n" + - " │ └─ TableAlias(k)\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" + + " └─ Filter\n" + + " ├─ (k.keyword HASH IN ('nerd', 'loner', 'alienation', 'dignity'))\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " ├─ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", }, { @@ -15139,161 +15846,148 @@ WHERE cct1.kind = 'complete+verified' ExpectedPlan: "Project\n" + " ├─ columns: [min(kt.kind):0!null as movie_kind, min(t.title):1!null as complete_us_internet_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(kt.kind:14!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(kt.kind:9!null), MIN(t.title:1!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" + + " │ │ │ │ ├─ mk.movie_id:22!null\n" + + " │ │ │ │ └─ mi.movie_id:10!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mk.movie_id:4!null\n" + + " │ │ │ ├─ mk.movie_id:22!null\n" + + " │ │ │ └─ mc.movie_id:16!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mc.movie_id:10!null\n" + + " │ │ ├─ mk.movie_id:22!null\n" + + " │ │ └─ cc.movie_id:6\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" + + " │ └─ mk.movie_id:22!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ mi.movie_id:10!null\n" + + " │ │ │ └─ mc.movie_id:16!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mc.movie_id:16!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ t.id:0!null\n" + + " │ │ │ └─ mi.movie_id:10!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ kt.id:8!null\n" + + " │ │ │ │ └─ t.kind_id:2!null\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ │ └─ cc.movie_id:6\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" + + " │ │ │ │ └─ InnerJoin\n" + + " │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ ├─ cct1.id:4!null\n" + + " │ │ │ │ │ └─ cc.status_id:7!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" + + " │ │ │ └─ 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" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it1.id:14!null\n" + + " │ │ │ └─ mi.info_type_id:11!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" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info\n" + + " │ │ │ └─ columns: [movie_id info_type_id info note]\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" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ct.id:21!null\n" + + " │ │ └─ mc.company_type_id:18!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn.id:19!null\n" + + " │ │ │ └─ mc.company_id:17!null\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_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(ct)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id]\n" + " └─ InnerJoin\n" + - " ├─ AND\n" + - " │ ├─ AND\n" + - " │ │ ├─ AND\n" + - " │ │ │ ├─ Eq\n" + - " │ │ │ │ ├─ mk.movie_id:4!null\n" + - " │ │ │ │ └─ mi.movie_id:6!null\n" + - " │ │ │ └─ Eq\n" + - " │ │ │ ├─ mk.movie_id:4!null\n" + - " │ │ │ └─ mc.movie_id:10!null\n" + - " │ │ └─ Eq\n" + - " │ │ ├─ mk.movie_id:4!null\n" + - " │ │ └─ cc.movie_id:23\n" + - " │ └─ Eq\n" + - " │ ├─ k.id:15!null\n" + - " │ └─ mk.keyword_id:5!null\n" + + " ├─ Eq\n" + + " │ ├─ k.id:24!null\n" + + " │ └─ mk.keyword_id:23!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" + - " ├─ 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" + - " │ └─ 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" + - " │ └─ 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), 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" + - " └─ 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" + + " └─ TableAlias(k)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: keyword\n" + + " └─ columns: [id]\n" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(kt.kind) as movie_kind, min(t.title) as complete_us_internet_movie]\n" + @@ -15301,76 +15995,81 @@ 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" + + " ├─ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ ((mi.movie_id = mc.movie_id) AND (t.id = mc.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (t.id = mi.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (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" + + " │ │ │ │ ├─ (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" + + " │ │ │ └─ 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" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info\n" + + " │ │ │ └─ columns: [movie_id info_type_id info note]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it1.info = 'release dates')\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (cn.country_code = '[us]')\n" + + " │ │ └─ TableAlias(cn)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_name\n" + + " │ │ └─ columns: [id country_code]\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id]\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" + + " ├─ (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" + - " ├─ 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" + - " │ └─ 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" + - " │ └─ Table\n" + - " │ ├─ name: movie_companies\n" + - " │ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\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" + - " └─ 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" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " ├─ name: keyword\n" + + " └─ columns: [id]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(kt.kind) as movie_kind, min(t.title) as complete_us_internet_movie]\n" + @@ -15378,76 +16077,81 @@ 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" + + " ├─ ((((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (mk.movie_id = cc.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ ((mi.movie_id = mc.movie_id) AND (t.id = mc.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (t.id = mi.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (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" + + " │ │ │ │ ├─ (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" + + " │ │ │ └─ 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" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info\n" + + " │ │ │ └─ columns: [movie_id info_type_id info note]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it1.info = 'release dates')\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (ct.id = mc.company_type_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id company_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (cn.country_code = '[us]')\n" + + " │ │ └─ TableAlias(cn)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_name\n" + + " │ │ └─ columns: [id country_code]\n" + + " │ └─ TableAlias(ct)\n" + + " │ └─ Table\n" + + " │ ├─ name: company_type\n" + + " │ └─ columns: [id]\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" + + " ├─ (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" + - " ├─ 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" + - " │ └─ 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" + - " │ └─ Table\n" + - " │ ├─ name: movie_companies\n" + - " │ └─ columns: [movie_id company_id company_type_id]\n" + - " └─ CrossJoin\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" + - " └─ 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" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " ├─ name: keyword\n" + + " └─ columns: [id]\n" + "", }, { @@ -15506,7 +16210,7 @@ WHERE ci.note IN ('(voice)', ExpectedPlan: "Project\n" + " ├─ columns: [min(chn.name):0!null as voiced_char_name, min(n.name):1!null as voicing_actress_name, min(t.title):2!null as voiced_action_movie_jap_eng]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(chn.name:27!null), MIN(n.name:6!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(chn.name:25!null), MIN(n.name:6!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + @@ -15514,13 +16218,13 @@ WHERE ci.note IN ('(voice)', " │ │ ├─ 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" + - " │ │ │ └─ mc.movie_id:13!null\n" + + " │ │ │ └─ mc.movie_id:17!null\n" + " │ │ └─ Eq\n" + " │ │ ├─ t.id:0!null\n" + - " │ │ └─ ci.movie_id:22!null\n" + + " │ │ └─ ci.movie_id:20!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + " │ └─ mk.movie_id:8!null\n" + @@ -15536,7 +16240,7 @@ WHERE ci.note IN ('(voice)', " └─ InnerJoin\n" + " ├─ Eq\n" + " │ ├─ rt.id:3!null\n" + - " │ └─ ci.role_id:25!null\n" + + " │ └─ ci.role_id:23!null\n" + " ├─ Filter\n" + " │ ├─ Eq\n" + " │ │ ├─ rt.role:1!null\n" + @@ -15550,10 +16254,10 @@ WHERE ci.note IN ('(voice)', " ├─ AND\n" + " │ ├─ Eq\n" + " │ │ ├─ n.id:5!null\n" + - " │ │ └─ ci.person_id:21!null\n" + + " │ │ └─ ci.person_id:19!null\n" + " │ └─ Eq\n" + " │ ├─ n.id:5!null\n" + - " │ └─ an.person_id:28!null\n" + + " │ └─ an.person_id:26!null\n" + " ├─ Filter\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + @@ -15568,119 +16272,116 @@ WHERE ci.note IN ('(voice)', " └─ 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" + + " │ │ │ ├─ mc.movie_id:17!null\n" + + " │ │ │ └─ mk.movie_id:8!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ ci.movie_id:22!null\n" + + " │ │ ├─ mi.movie_id:12!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" + + " │ ├─ ci.movie_id:20!null\n" + + " │ └─ mk.movie_id:8!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ k.id:10!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" + + " │ └─ 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" + " └─ 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" + + " │ │ ├─ mc.movie_id:17!null\n" + + " │ │ └─ mi.movie_id:12!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" + + " │ ├─ mi.movie_id:12!null\n" + + " │ └─ ci.movie_id:20!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ it.id:15!null\n" + + " │ │ └─ mi.info_type_id:13!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" + + " │ └─ 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" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ cn.id:27!null\n" + + " │ └─ mc.company_id:18!null\n" + + " ├─ InnerJoin\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:17!null\n" + + " │ │ └─ ci.movie_id:20!null\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ chn.id:24!null\n" + + " │ │ │ └─ ci.person_role_id:21\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:19!null]\n" + + " │ ├─ colSet: (1-8)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: aka_name\n" + + " │ └─ columns: [person_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" + "", 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" + @@ -15712,64 +16413,67 @@ WHERE ci.note IN ('(voice)', " │ ├─ 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" + + " ├─ (((mc.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (ci.movie_id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " └─ 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" + + " ├─ ((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it.info = 'release dates')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [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" + + " ├─ (cn.id = mc.company_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = ci.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\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" + @@ -15801,64 +16505,67 @@ WHERE ci.note IN ('(voice)', " │ ├─ 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" + + " ├─ (((mc.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (ci.movie_id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " └─ 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" + + " ├─ ((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it.info = 'release dates')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [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" + + " ├─ (cn.id = mc.company_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = ci.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", }, { @@ -15920,7 +16627,7 @@ WHERE ci.note IN ('(voice)', ExpectedPlan: "Project\n" + " ├─ columns: [min(chn.name):0!null as voiced_char_name, min(n.name):1!null as voicing_actress_name, min(t.title):2!null as kung_fu_panda]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(chn.name:28!null), MIN(n.name:6!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(chn.name:25!null), MIN(n.name:6!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + @@ -15928,13 +16635,13 @@ WHERE ci.note IN ('(voice)', " │ │ ├─ 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" + - " │ │ │ └─ mc.movie_id:13!null\n" + + " │ │ │ └─ mc.movie_id:17!null\n" + " │ │ └─ Eq\n" + " │ │ ├─ t.id:0!null\n" + - " │ │ └─ ci.movie_id:23!null\n" + + " │ │ └─ ci.movie_id:20!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + " │ └─ mk.movie_id:8!null\n" + @@ -15958,7 +16665,7 @@ WHERE ci.note IN ('(voice)', " └─ InnerJoin\n" + " ├─ Eq\n" + " │ ├─ rt.id:3!null\n" + - " │ └─ ci.role_id:26!null\n" + + " │ └─ ci.role_id:23!null\n" + " ├─ Filter\n" + " │ ├─ Eq\n" + " │ │ ├─ rt.role:1!null\n" + @@ -15972,10 +16679,10 @@ WHERE ci.note IN ('(voice)', " ├─ AND\n" + " │ ├─ Eq\n" + " │ │ ├─ n.id:5!null\n" + - " │ │ └─ ci.person_id:22!null\n" + + " │ │ └─ ci.person_id:19!null\n" + " │ └─ Eq\n" + " │ ├─ n.id:5!null\n" + - " │ └─ an.person_id:29!null\n" + + " │ └─ an.person_id:26!null\n" + " ├─ Filter\n" + " │ ├─ AND\n" + " │ │ ├─ Eq\n" + @@ -15990,123 +16697,120 @@ WHERE ci.note IN ('(voice)', " └─ 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" + + " │ │ │ ├─ mc.movie_id:17!null\n" + + " │ │ │ └─ mk.movie_id:8!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ ci.movie_id:23!null\n" + + " │ │ ├─ mi.movie_id:12!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" + + " │ ├─ ci.movie_id:20!null\n" + + " │ └─ mk.movie_id:8!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ k.id:10!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" + + " │ └─ 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" + " └─ 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" + + " │ │ ├─ mc.movie_id:17!null\n" + + " │ │ └─ mi.movie_id:12!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" + + " │ ├─ mi.movie_id:12!null\n" + + " │ └─ ci.movie_id:20!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ it.id:15!null\n" + + " │ │ └─ mi.info_type_id:13!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" + + " │ └─ 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" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ cn.id:27!null\n" + + " │ └─ mc.company_id:18!null\n" + + " ├─ InnerJoin\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" + + " │ │ ├─ mc.movie_id:17!null\n" + + " │ │ └─ ci.movie_id:20!null\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ chn.id:24!null\n" + + " │ │ │ └─ ci.person_role_id:21\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:19!null]\n" + + " │ ├─ colSet: (1-8)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: aka_name\n" + + " │ └─ columns: [person_id]\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" + "", 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" + @@ -16138,64 +16842,67 @@ WHERE ci.note IN ('(voice)', " │ ├─ 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" + + " ├─ (((mc.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (ci.movie_id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " └─ 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" + + " ├─ ((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it.info = 'release dates')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [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" + + " ├─ (cn.id = mc.company_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = ci.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " └─ 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" + "", 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" + @@ -16227,64 +16934,67 @@ WHERE ci.note IN ('(voice)', " │ ├─ 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" + + " ├─ (((mc.movie_id = mk.movie_id) AND (mi.movie_id = mk.movie_id)) AND (ci.movie_id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " └─ 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" + + " ├─ ((mc.movie_id = mi.movie_id) AND (mi.movie_id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it.info = 'release dates')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [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" + + " ├─ (cn.id = mc.company_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = ci.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " └─ 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" + "", }, { @@ -16335,271 +17045,321 @@ WHERE ci.note IN ('(writer)', ExpectedPlan: "Project\n" + " ├─ columns: [min(mi.info):0!null as movie_budget, min(mi_idx.info):1!null as movie_votes, min(n.name):2!null as male_writer, min(t.title):3!null as violent_movie_title]\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:13!null), MIN(mi_idx.info:4!null), MIN(n.name:18!null), MIN(t.title:21!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + " │ │ │ ├─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ └─ mi.movie_id:10!null\n" + + " │ │ │ │ ├─ t.id:20!null\n" + + " │ │ │ │ └─ mi.movie_id:11!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mi_idx.movie_id:7!null\n" + + " │ │ │ ├─ t.id:20!null\n" + + " │ │ │ └─ mi_idx.movie_id:2!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ ci.movie_id:20!null\n" + + " │ │ ├─ t.id:20!null\n" + + " │ │ └─ ci.movie_id:15!null\n" + " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + - " │ └─ mk.movie_id:5!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" + - " │ ├─ 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" + + " │ ├─ t.id:20!null\n" + + " │ └─ mk.movie_id:9!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ n.id:17!null\n" + + " │ │ └─ ci.person_id:14!null\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:0!null\n" + + " │ │ │ └─ mi_idx.info_type_id:3!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(it2.id:0!null)\n" + + " │ │ ├─ right-key: TUPLE(mi_idx.info_type_id:1!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:11!null\n" + + " │ │ │ │ └─ mi_idx.movie_id:2!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mi_idx.movie_id:2!null\n" + + " │ │ │ └─ mk.movie_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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(mi_idx.movie_id:2!null, mi_idx.movie_id:2!null)\n" + + " │ │ ├─ right-key: TUPLE(mi.movie_id:6!null, mk.movie_id:4!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ k.id:5!null\n" + + " │ │ │ └─ mk.keyword_id:10!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(k.id:5!null)\n" + + " │ │ ├─ right-key: TUPLE(mk.keyword_id:3!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it1.id:7!null\n" + + " │ │ │ └─ mi.info_type_id:12!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(it1.id:7!null)\n" + + " │ │ ├─ right-key: TUPLE(mi.info_type_id:3!null)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:11!null\n" + + " │ │ │ │ └─ mk.movie_id:9!null\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\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" + + " │ │ └─ 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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ci.person_id:14!null)\n" + + " │ ├─ right-key: TUPLE(n.id:0!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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mi.movie_id:11!null, mi_idx.movie_id:2!null, ci.movie_id:15!null, mk.movie_id:9!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ TableAlias(t)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ ((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (it2.id = mi_idx.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it2.info = 'votes')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it2.id)\n" + + " │ │ ├─ right-key: (mi_idx.info_type_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ ((mi.movie_id = mi_idx.movie_id) AND (mi_idx.movie_id = mk.movie_id))\n" + + " │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (mi_idx.movie_id, mi_idx.movie_id)\n" + + " │ │ ├─ right-key: (mi.movie_id, mk.movie_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (k.id = mk.keyword_id)\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it1.info = 'genres')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it1.id)\n" + + " │ │ ├─ right-key: (mi.info_type_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mi.movie_id = mk.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_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" + + " │ │ └─ 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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ (n.gender = 'm')\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, ci.movie_id, mk.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ ((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (it2.id = mi_idx.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it2.info = 'votes')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it2.id)\n" + + " │ │ ├─ right-key: (mi_idx.info_type_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ ((mi.movie_id = mi_idx.movie_id) AND (mi_idx.movie_id = mk.movie_id))\n" + + " │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (mi_idx.movie_id, mi_idx.movie_id)\n" + + " │ │ ├─ right-key: (mi.movie_id, mk.movie_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (k.id = mk.keyword_id)\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it1.info = 'genres')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it1.id)\n" + + " │ │ ├─ right-key: (mi.info_type_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mi.movie_id = mk.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_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" + + " │ │ └─ 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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ (n.gender = 'm')\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, ci.movie_id, mk.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title]\n" + "", }, { @@ -16652,287 +17412,337 @@ WHERE ci.note IN ('(writer)', ExpectedPlan: "Project\n" + " ├─ columns: [min(mi.info):0!null as movie_budget, min(mi_idx.info):1!null as movie_votes, min(n.name):2!null as male_writer, min(t.title):3!null as violent_movie_title]\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:13!null), MIN(mi_idx.info:4!null), MIN(n.name:18!null), MIN(t.title:21!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + " │ │ │ ├─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ ├─ t.id:20!null\n" + " │ │ │ │ └─ mi.movie_id:11!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mi_idx.movie_id:8!null\n" + + " │ │ │ ├─ t.id:20!null\n" + + " │ │ │ └─ mi_idx.movie_id:2!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ ci.movie_id:21!null\n" + + " │ │ ├─ t.id:20!null\n" + + " │ │ └─ ci.movie_id:15!null\n" + " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + - " │ └─ mk.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" + - " │ │ │ └─ Vampire (longtext)\n" + - " │ │ └─ LessThanOrEqual\n" + - " │ │ ├─ t.title:1!null\n" + - " │ │ └─ Vampireÿ (longtext)\n" + - " │ └─ TableAlias(t)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ 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" + - " │ ├─ 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" + + " │ ├─ t.id:20!null\n" + + " │ └─ mk.movie_id:9!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ n.id:17!null\n" + + " │ │ └─ ci.person_id:14!null\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:0!null\n" + + " │ │ │ └─ mi_idx.info_type_id:3!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(it2.id:0!null)\n" + + " │ │ ├─ right-key: TUPLE(mi_idx.info_type_id:1!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:11!null\n" + + " │ │ │ │ └─ mi_idx.movie_id:2!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mi_idx.movie_id:2!null\n" + + " │ │ │ └─ mk.movie_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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(mi_idx.movie_id:2!null, mi_idx.movie_id:2!null)\n" + + " │ │ ├─ right-key: TUPLE(mi.movie_id:6!null, mk.movie_id:4!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ k.id:5!null\n" + + " │ │ │ └─ mk.keyword_id:10!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(k.id:5!null)\n" + + " │ │ ├─ right-key: TUPLE(mk.keyword_id:3!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it1.id:7!null\n" + + " │ │ │ └─ mi.info_type_id:12!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(it1.id:7!null)\n" + + " │ │ ├─ right-key: TUPLE(mi.info_type_id:3!null)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:11!null\n" + + " │ │ │ │ └─ mk.movie_id:9!null\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\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" + + " │ │ └─ 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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ci.person_id:14!null)\n" + + " │ ├─ right-key: TUPLE(n.id:0!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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mi.movie_id:11!null, mi_idx.movie_id:2!null, ci.movie_id:15!null, mk.movie_id:9!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ Filter\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" + + " │ │ ├─ GreaterThan\n" + + " │ │ │ ├─ t.production_year:2\n" + + " │ │ │ └─ 2010 (int)\n" + + " │ │ └─ GreaterThanOrEqual\n" + + " │ │ ├─ t.title:1!null\n" + + " │ │ └─ Vampire (longtext)\n" + + " │ └─ LessThanOrEqual\n" + + " │ ├─ t.title:1!null\n" + + " │ └─ Vampireÿ (longtext)\n" + + " └─ TableAlias(t)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ ((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id))\n" + - " ├─ Filter\n" + - " │ ├─ (((t.production_year > 2010) AND (t.title >= 'Vampire')) AND (t.title <= 'Vampireÿ'))\n" + - " │ └─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (it2.id = mi_idx.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it2.info = 'votes')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it2.id)\n" + + " │ │ ├─ right-key: (mi_idx.info_type_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ ((mi.movie_id = mi_idx.movie_id) AND (mi_idx.movie_id = mk.movie_id))\n" + + " │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (mi_idx.movie_id, mi_idx.movie_id)\n" + + " │ │ ├─ right-key: (mi.movie_id, mk.movie_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (k.id = mk.keyword_id)\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it1.info = 'genres')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it1.id)\n" + + " │ │ ├─ right-key: (mi.info_type_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mi.movie_id = mk.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_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" + + " │ │ └─ 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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ (n.gender = 'm')\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, ci.movie_id, mk.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id)\n" + + " └─ Filter\n" + + " ├─ (((t.production_year > 2010) AND (t.title >= 'Vampire')) AND (t.title <= 'Vampireÿ'))\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ ((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id))\n" + - " ├─ Filter\n" + - " │ ├─ (((t.production_year > 2010) AND (t.title >= 'Vampire')) AND (t.title <= 'Vampireÿ'))\n" + - " │ └─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (it2.id = mi_idx.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it2.info = 'votes')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it2.id)\n" + + " │ │ ├─ right-key: (mi_idx.info_type_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ ((mi.movie_id = mi_idx.movie_id) AND (mi_idx.movie_id = mk.movie_id))\n" + + " │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (mi_idx.movie_id, mi_idx.movie_id)\n" + + " │ │ ├─ right-key: (mi.movie_id, mk.movie_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (k.id = mk.keyword_id)\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it1.info = 'genres')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it1.id)\n" + + " │ │ ├─ right-key: (mi.info_type_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mi.movie_id = mk.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_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" + + " │ │ └─ 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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ (n.gender = 'm')\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, ci.movie_id, mk.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id)\n" + + " └─ Filter\n" + + " ├─ (((t.production_year > 2010) AND (t.title >= 'Vampire')) AND (t.title <= 'Vampireÿ'))\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\n" + "", }, { @@ -16990,271 +17800,321 @@ WHERE ci.note IN ('(writer)', ExpectedPlan: "Project\n" + " ├─ columns: [min(mi.info):0!null as movie_budget, min(mi_idx.info):1!null as movie_votes, min(n.name):2!null as male_writer, min(t.title):3!null as violent_movie_title]\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:13!null), MIN(mi_idx.info:4!null), MIN(n.name:18!null), MIN(t.title:21!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + " │ │ │ ├─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ └─ mi.movie_id:10!null\n" + + " │ │ │ │ ├─ t.id:20!null\n" + + " │ │ │ │ └─ mi.movie_id:11!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mi_idx.movie_id:7!null\n" + + " │ │ │ ├─ t.id:20!null\n" + + " │ │ │ └─ mi_idx.movie_id:2!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ ci.movie_id:20!null\n" + + " │ │ ├─ t.id:20!null\n" + + " │ │ └─ ci.movie_id:15!null\n" + " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + - " │ └─ mk.movie_id:5!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" + - " │ ├─ 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" + + " │ ├─ t.id:20!null\n" + + " │ └─ mk.movie_id:9!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ n.id:17!null\n" + + " │ │ └─ ci.person_id:14!null\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:0!null\n" + + " │ │ │ └─ mi_idx.info_type_id:3!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(it2.id:0!null)\n" + + " │ │ ├─ right-key: TUPLE(mi_idx.info_type_id:1!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:11!null\n" + + " │ │ │ │ └─ mi_idx.movie_id:2!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mi_idx.movie_id:2!null\n" + + " │ │ │ └─ mk.movie_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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(mi_idx.movie_id:2!null, mi_idx.movie_id:2!null)\n" + + " │ │ ├─ right-key: TUPLE(mi.movie_id:6!null, mk.movie_id:4!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ k.id:5!null\n" + + " │ │ │ └─ mk.keyword_id:10!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(k.id:5!null)\n" + + " │ │ ├─ right-key: TUPLE(mk.keyword_id:3!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it1.id:7!null\n" + + " │ │ │ └─ mi.info_type_id:12!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(it1.id:7!null)\n" + + " │ │ ├─ right-key: TUPLE(mi.info_type_id:3!null)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:11!null\n" + + " │ │ │ │ └─ mk.movie_id:9!null\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\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" + + " │ │ └─ 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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ci.person_id:14!null)\n" + + " │ ├─ right-key: TUPLE(n.id:0!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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mi.movie_id:11!null, mi_idx.movie_id:2!null, ci.movie_id:15!null, mk.movie_id:9!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ TableAlias(t)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ ((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (it2.id = mi_idx.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it2.info = 'votes')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it2.id)\n" + + " │ │ ├─ right-key: (mi_idx.info_type_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ ((mi.movie_id = mi_idx.movie_id) AND (mi_idx.movie_id = mk.movie_id))\n" + + " │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (mi_idx.movie_id, mi_idx.movie_id)\n" + + " │ │ ├─ right-key: (mi.movie_id, mk.movie_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (k.id = mk.keyword_id)\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it1.info = 'genres')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it1.id)\n" + + " │ │ ├─ right-key: (mi.info_type_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mi.movie_id = mk.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_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" + + " │ │ └─ 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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ (n.gender = 'm')\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, ci.movie_id, mk.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ ((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (it2.id = mi_idx.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it2.info = 'votes')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it2.id)\n" + + " │ │ ├─ right-key: (mi_idx.info_type_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ ((mi.movie_id = mi_idx.movie_id) AND (mi_idx.movie_id = mk.movie_id))\n" + + " │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (mi_idx.movie_id, mi_idx.movie_id)\n" + + " │ │ ├─ right-key: (mi.movie_id, mk.movie_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (k.id = mk.keyword_id)\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (it1.id = mi.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it1.info = 'genres')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it1.id)\n" + + " │ │ ├─ right-key: (mi.info_type_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mi.movie_id = mk.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_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" + + " │ │ └─ 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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ (n.gender = 'm')\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, ci.movie_id, mk.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title]\n" + "", }, { @@ -17316,174 +18176,158 @@ WHERE cct1.kind = 'cast' ExpectedPlan: "Project\n" + " ├─ columns: [min(chn.name):0!null as character_name, min(mi_idx.info):1!null as rating, min(n.name):2!null as playing_actor, min(t.title):3!null as complete_hero_movie]\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:22!null), MIN(mi_idx.info:15!null), MIN(n.name:28!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ n.id:27!null\n" + + " │ └─ ci.person_id:18!null\n" + + " ├─ InnerJoin\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + " │ │ │ ├─ AND\n" + " │ │ │ │ ├─ Eq\n" + - " │ │ │ │ │ ├─ kt.id:11!null\n" + - " │ │ │ │ │ └─ t.kind_id:2!null\n" + + " │ │ │ │ │ ├─ mk.movie_id:23!null\n" + + " │ │ │ │ │ └─ ci.movie_id:19!null\n" + " │ │ │ │ └─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ └─ mk.movie_id:6!null\n" + + " │ │ │ │ ├─ mk.movie_id:23!null\n" + + " │ │ │ │ └─ cc.movie_id:8\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ ci.movie_id:18!null\n" + + " │ │ │ ├─ mk.movie_id:23!null\n" + + " │ │ │ └─ mi_idx.movie_id:13!null\n" + " │ │ └─ Eq\n" + " │ │ ├─ t.id:0!null\n" + - " │ │ └─ cc.movie_id:26\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" + - " └─ 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" + + " │ │ └─ mk.movie_id:23!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ci.movie_id:19!null\n" + + " │ │ │ └─ cc.movie_id:8\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ └─ mi_idx.movie_id:13!null\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ ├─ kt.id:11!null\n" + + " │ │ │ │ │ └─ t.kind_id:2!null\n" + + " │ │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ │ │ └─ cc.movie_id:8\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" + + " │ │ │ │ │ │ ├─ cct2.id:4!null\n" + + " │ │ │ │ │ │ └─ cc.status_id:10!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:6!null\n" + + " │ │ │ │ │ │ └─ cc.subject_id:9!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" + + " │ │ │ │ ├─ 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" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ it2.id:16!null\n" + + " │ │ │ │ └─ mi_idx.info_type_id:14!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" + + " │ │ │ └─ 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" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ chn.id:21!null\n" + + " │ │ │ └─ ci.person_role_id:20\n" + + " │ │ ├─ TableAlias(ci)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: cast_info\n" + + " │ │ │ └─ columns: [person_id movie_id person_role_id]\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" + + " │ │ ├─ k.id:25!null\n" + + " │ │ └─ mk.keyword_id:24!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + + " └─ TableAlias(n)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: name\n" + + " └─ columns: [id name]\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 +18335,91 @@ 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" + + " ├─ (n.id = ci.person_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 (t.id = mk.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ci.movie_id = cc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mi_idx.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\n" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it2.info = 'rating')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + + " └─ TableAlias(n)\n" + + " └─ Table\n" + + " ├─ name: name\n" + + " └─ columns: [id name]\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 +18427,91 @@ 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" + + " ├─ (n.id = ci.person_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 (t.id = mk.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ci.movie_id = cc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mi_idx.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\n" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it2.info = 'rating')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + + " └─ TableAlias(n)\n" + + " └─ Table\n" + + " ├─ name: name\n" + + " └─ columns: [id name]\n" + "", }, { @@ -17714,174 +18566,158 @@ WHERE cct1.kind = 'cast' ExpectedPlan: "Project\n" + " ├─ columns: [min(chn.name):0!null as character_name, min(mi_idx.info):1!null as rating, min(t.title):2!null as complete_hero_movie]\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:22!null), MIN(mi_idx.info:15!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ n.id:27!null\n" + + " │ └─ ci.person_id:18!null\n" + + " ├─ InnerJoin\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + " │ │ │ ├─ AND\n" + " │ │ │ │ ├─ Eq\n" + - " │ │ │ │ │ ├─ kt.id:10!null\n" + - " │ │ │ │ │ └─ t.kind_id:2!null\n" + + " │ │ │ │ │ ├─ mk.movie_id:23!null\n" + + " │ │ │ │ │ └─ ci.movie_id:19!null\n" + " │ │ │ │ └─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ └─ mk.movie_id:5!null\n" + + " │ │ │ │ ├─ mk.movie_id:23!null\n" + + " │ │ │ │ └─ cc.movie_id:8\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ ci.movie_id:17!null\n" + + " │ │ │ ├─ mk.movie_id:23!null\n" + + " │ │ │ └─ mi_idx.movie_id:13!null\n" + " │ │ └─ Eq\n" + " │ │ ├─ t.id:0!null\n" + - " │ │ └─ cc.movie_id:25\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" + + " │ │ └─ mk.movie_id:23!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ci.movie_id:19!null\n" + + " │ │ │ └─ cc.movie_id:8\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ └─ mi_idx.movie_id:13!null\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ ├─ kt.id:11!null\n" + + " │ │ │ │ │ └─ t.kind_id:2!null\n" + + " │ │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ │ │ └─ cc.movie_id:8\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" + + " │ │ │ │ │ │ ├─ cct2.id:4!null\n" + + " │ │ │ │ │ │ └─ cc.status_id:10!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:6!null\n" + + " │ │ │ │ │ │ └─ cc.subject_id:9!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" + + " │ │ │ │ ├─ 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" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ it2.id:16!null\n" + + " │ │ │ │ └─ mi_idx.info_type_id:14!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" + + " │ │ │ └─ 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" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ chn.id:21!null\n" + + " │ │ │ └─ ci.person_role_id:20\n" + + " │ │ ├─ TableAlias(ci)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: cast_info\n" + + " │ │ │ └─ columns: [person_id movie_id person_role_id]\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" + + " │ │ ├─ k.id:25!null\n" + + " │ │ └─ mk.keyword_id:24!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + + " └─ TableAlias(n)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: name\n" + + " └─ columns: [id]\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 +18725,91 @@ 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" + + " ├─ (n.id = ci.person_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 (t.id = mk.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ci.movie_id = cc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mi_idx.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\n" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it2.info = 'rating')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + + " └─ TableAlias(n)\n" + + " └─ Table\n" + + " ├─ name: name\n" + + " └─ columns: [id]\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 +18817,91 @@ 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" + + " ├─ (n.id = ci.person_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 (t.id = mk.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ci.movie_id = cc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mi_idx.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\n" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it2.info = 'rating')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + + " └─ TableAlias(n)\n" + + " └─ Table\n" + + " ├─ name: name\n" + + " └─ columns: [id]\n" + "", }, { @@ -18117,170 +18961,154 @@ WHERE cct1.kind = 'cast' ExpectedPlan: "Project\n" + " ├─ columns: [min(chn.name):0!null as character_name, min(mi_idx.info):1!null as rating, min(t.title):2!null as complete_hero_movie]\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:22!null), MIN(mi_idx.info:15!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ n.id:27!null\n" + + " │ └─ ci.person_id:18!null\n" + + " ├─ InnerJoin\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + " │ │ │ ├─ AND\n" + " │ │ │ │ ├─ Eq\n" + - " │ │ │ │ │ ├─ kt.id:10!null\n" + - " │ │ │ │ │ └─ t.kind_id:2!null\n" + + " │ │ │ │ │ ├─ mk.movie_id:23!null\n" + + " │ │ │ │ │ └─ ci.movie_id:19!null\n" + " │ │ │ │ └─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ └─ mk.movie_id:5!null\n" + + " │ │ │ │ ├─ mk.movie_id:23!null\n" + + " │ │ │ │ └─ cc.movie_id:8\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ ci.movie_id:17!null\n" + + " │ │ │ ├─ mk.movie_id:23!null\n" + + " │ │ │ └─ mi_idx.movie_id:13!null\n" + " │ │ └─ Eq\n" + " │ │ ├─ t.id:0!null\n" + - " │ │ └─ cc.movie_id:25\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" + - " └─ 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" + + " │ │ └─ mk.movie_id:23!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ci.movie_id:19!null\n" + + " │ │ │ └─ cc.movie_id:8\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ └─ mi_idx.movie_id:13!null\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ ├─ kt.id:11!null\n" + + " │ │ │ │ │ └─ t.kind_id:2!null\n" + + " │ │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ │ │ └─ cc.movie_id:8\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" + + " │ │ │ │ │ │ ├─ cct2.id:4!null\n" + + " │ │ │ │ │ │ └─ cc.status_id:10!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:6!null\n" + + " │ │ │ │ │ │ └─ cc.subject_id:9!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" + + " │ │ │ │ ├─ 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" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ it2.id:16!null\n" + + " │ │ │ │ └─ mi_idx.info_type_id:14!null\n" + + " │ │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ │ └─ columns: [movie_id info_type_id info]\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" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ chn.id:21!null\n" + + " │ │ │ └─ ci.person_role_id:20\n" + + " │ │ ├─ TableAlias(ci)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: cast_info\n" + + " │ │ │ └─ columns: [person_id movie_id person_role_id]\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" + + " │ │ ├─ k.id:25!null\n" + + " │ │ └─ mk.keyword_id:24!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + + " └─ TableAlias(n)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: name\n" + + " └─ columns: [id]\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 +19116,89 @@ 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" + + " ├─ (n.id = ci.person_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 (t.id = mk.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ci.movie_id = cc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mi_idx.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\n" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it2.info = 'rating')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + + " └─ TableAlias(n)\n" + + " └─ Table\n" + + " ├─ name: name\n" + + " └─ columns: [id]\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 +19206,89 @@ 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" + + " ├─ (n.id = ci.person_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 (t.id = mk.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ci.movie_id = cc.movie_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mi_idx.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ └─ Filter\n" + + " │ │ │ │ ├─ (kt.kind = 'movie')\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\n" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it2.info = 'rating')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + + " └─ TableAlias(n)\n" + + " └─ Table\n" + + " ├─ name: name\n" + + " └─ columns: [id]\n" + "", }, { @@ -18513,378 +19349,423 @@ WHERE cct1.kind IN ('cast', ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as producing_company, min(lt.link):1!null as link_type, min(t.title):2!null as complete_western_sequel]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(cn.name:20!null), MIN(lt.link:14!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(cn.name:11!null), MIN(lt.link:5!null), MIN(t.title:27!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + " │ │ │ ├─ AND\n" + " │ │ │ │ ├─ Eq\n" + - " │ │ │ │ │ ├─ ml.movie_id:3!null\n" + - " │ │ │ │ │ └─ t.id:0!null\n" + + " │ │ │ │ │ ├─ ml.movie_id:13!null\n" + + " │ │ │ │ │ └─ t.id:26!null\n" + " │ │ │ │ └─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ └─ mk.movie_id:5!null\n" + + " │ │ │ │ ├─ t.id:26!null\n" + + " │ │ │ │ └─ mk.movie_id:15!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mc.movie_id:9!null\n" + + " │ │ │ ├─ t.id:26!null\n" + + " │ │ │ └─ mc.movie_id:19!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ mi.movie_id:7!null\n" + - " │ │ └─ t.id:0!null\n" + + " │ │ ├─ mi.movie_id:17!null\n" + + " │ │ └─ t.id:26!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" + + " │ ├─ t.id:26!null\n" + + " │ └─ cc.movie_id:23\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ cct1.id:0!null\n" + + " │ │ └─ cc.subject_id:24!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(cct1.id:0!null)\n" + + " │ ├─ right-key: TUPLE(cc.subject_id:22!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ cct2.id:2!null\n" + + " │ │ └─ cc.status_id:25!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(cct2.id:2!null)\n" + + " │ ├─ right-key: TUPLE(cc.status_id:21!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ lt.id:4!null\n" + + " │ │ └─ ml.link_type_id:14!null\n" + + " │ ├─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(lt.id:4!null)\n" + + " │ ├─ right-key: TUPLE(ml.link_type_id:8!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mk.keyword_id:16!null\n" + + " │ │ └─ k.id:6!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(k.id:6!null)\n" + + " │ ├─ right-key: TUPLE(mk.keyword_id:8!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mc.company_type_id:21!null\n" + + " │ │ └─ ct.id:8!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ct.id:8!null)\n" + + " │ ├─ right-key: TUPLE(mc.company_type_id:11!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mc.company_id:20!null\n" + + " │ │ └─ cn.id:10!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(cn.id:10!null)\n" + + " │ ├─ right-key: TUPLE(mc.company_id:7!null)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ml.movie_id:13!null\n" + + " │ │ │ └─ mk.movie_id:15!null\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mk.movie_id:15!null\n" + + " │ │ │ │ └─ mi.movie_id:17!null\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ ProcessTable\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), Germany (longtext), Swedish (longtext), German (longtext))\n" + + " │ │ │ └─ TableAlias(mi)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info\n" + + " │ │ │ └─ columns: [movie_id info]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ mc.note:3 IS NULL\n" + + " │ │ └─ TableAlias(mc)\n" + + " │ │ └─ IndexedTableAccess(movie_companies)\n" + + " │ │ ├─ index: [movie_companies.movie_id]\n" + + " │ │ ├─ keys: [mi.movie_id:17!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" + + " │ └─ TableAlias(cc)\n" + + " │ └─ IndexedTableAccess(complete_cast)\n" + + " │ ├─ index: [complete_cast.movie_id]\n" + + " │ ├─ keys: [mc.movie_id:19!null]\n" + + " │ ├─ colSet: (1-4)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: complete_cast\n" + + " │ └─ columns: [movie_id subject_id status_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(ml.movie_id:13!null, mk.movie_id:15!null, mc.movie_id:19!null, mi.movie_id:17!null, cc.movie_id:23)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ Filter\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" + + " │ ├─ 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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (cct1.id)\n" + + " │ ├─ right-key: (cc.subject_id)\n" + + " │ └─ HashJoin\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (cct2.id)\n" + + " │ ├─ right-key: (cc.status_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (lt.id = ml.link_type_id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (lt.id)\n" + + " │ ├─ right-key: (ml.link_type_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (k.keyword = 'sequel')\n" + + " │ │ └─ TableAlias(k)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id keyword]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (mc.company_type_id = ct.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (ct.kind = 'production companies')\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ct.id)\n" + + " │ ├─ right-key: (mc.company_type_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (mc.company_id = cn.id)\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (cn.id)\n" + + " │ ├─ right-key: (mc.company_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mk.movie_id = mi.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_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" + + " │ │ └─ 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: mi.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: mc.movie_id\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ml.movie_id, mk.movie_id, mc.movie_id, mi.movie_id, cc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (cct1.id)\n" + + " │ ├─ right-key: (cc.subject_id)\n" + + " │ └─ HashJoin\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (cct2.id)\n" + + " │ ├─ right-key: (cc.status_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (lt.id = ml.link_type_id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (lt.id)\n" + + " │ ├─ right-key: (ml.link_type_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (k.keyword = 'sequel')\n" + + " │ │ └─ TableAlias(k)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id keyword]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (mc.company_type_id = ct.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (ct.kind = 'production companies')\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ct.id)\n" + + " │ ├─ right-key: (mc.company_type_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (mc.company_id = cn.id)\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (cn.id)\n" + + " │ ├─ right-key: (mc.company_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mk.movie_id = mi.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_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" + + " │ │ └─ 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: mi.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: mc.movie_id\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ml.movie_id, mk.movie_id, mc.movie_id, mi.movie_id, cc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.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" + "", }, { @@ -18945,374 +19826,419 @@ WHERE cct1.kind IN ('cast', ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as producing_company, min(lt.link):1!null as link_type, min(t.title):2!null as complete_western_sequel]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(cn.name:20!null), MIN(lt.link:14!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(cn.name:11!null), MIN(lt.link:5!null), MIN(t.title:27!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + " │ │ │ ├─ AND\n" + " │ │ │ │ ├─ Eq\n" + - " │ │ │ │ │ ├─ ml.movie_id:3!null\n" + - " │ │ │ │ │ └─ t.id:0!null\n" + + " │ │ │ │ │ ├─ ml.movie_id:13!null\n" + + " │ │ │ │ │ └─ t.id:26!null\n" + " │ │ │ │ └─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ └─ mk.movie_id:5!null\n" + + " │ │ │ │ ├─ t.id:26!null\n" + + " │ │ │ │ └─ mk.movie_id:15!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mc.movie_id:9!null\n" + + " │ │ │ ├─ t.id:26!null\n" + + " │ │ │ └─ mc.movie_id:19!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ mi.movie_id:7!null\n" + - " │ │ └─ t.id:0!null\n" + + " │ │ ├─ mi.movie_id:17!null\n" + + " │ │ └─ t.id:26!null\n" + " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + - " │ └─ cc.movie_id:26\n" + - " ├─ Filter\n" + + " │ ├─ t.id:26!null\n" + + " │ └─ cc.movie_id:23\n" + + " ├─ HashJoin\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" + + " │ │ ├─ cct1.id:0!null\n" + + " │ │ └─ cc.subject_id:24!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(cct1.id:0!null)\n" + + " │ ├─ right-key: TUPLE(cc.subject_id:22!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ cct2.id:2!null\n" + + " │ │ └─ cc.status_id:25!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(cct2.id:2!null)\n" + + " │ ├─ right-key: TUPLE(cc.status_id:21!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ lt.id:4!null\n" + + " │ │ └─ ml.link_type_id:14!null\n" + + " │ ├─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(lt.id:4!null)\n" + + " │ ├─ right-key: TUPLE(ml.link_type_id:8!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mk.keyword_id:16!null\n" + + " │ │ └─ k.id:6!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(k.id:6!null)\n" + + " │ ├─ right-key: TUPLE(mk.keyword_id:8!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mc.company_type_id:21!null\n" + + " │ │ └─ ct.id:8!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ct.id:8!null)\n" + + " │ ├─ right-key: TUPLE(mc.company_type_id:11!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mc.company_id:20!null\n" + + " │ │ └─ cn.id:10!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(cn.id:10!null)\n" + + " │ ├─ right-key: TUPLE(mc.company_id:7!null)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ml.movie_id:13!null\n" + + " │ │ │ └─ mk.movie_id:15!null\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mk.movie_id:15!null\n" + + " │ │ │ │ └─ mi.movie_id:17!null\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ ProcessTable\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), Germany (longtext), Swedish (longtext), German (longtext))\n" + + " │ │ │ └─ TableAlias(mi)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info\n" + + " │ │ │ └─ columns: [movie_id info]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ mc.note:3 IS NULL\n" + + " │ │ └─ TableAlias(mc)\n" + + " │ │ └─ IndexedTableAccess(movie_companies)\n" + + " │ │ ├─ index: [movie_companies.movie_id]\n" + + " │ │ ├─ keys: [mi.movie_id:17!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" + + " │ └─ TableAlias(cc)\n" + + " │ └─ IndexedTableAccess(complete_cast)\n" + + " │ ├─ index: [complete_cast.movie_id]\n" + + " │ ├─ keys: [mc.movie_id:19!null]\n" + + " │ ├─ colSet: (1-4)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: complete_cast\n" + + " │ └─ columns: [movie_id subject_id status_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(ml.movie_id:13!null, mk.movie_id:15!null, mc.movie_id:19!null, mi.movie_id:17!null, cc.movie_id:23)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null)\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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (cct1.id)\n" + + " │ ├─ right-key: (cc.subject_id)\n" + + " │ └─ HashJoin\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (cct2.id)\n" + + " │ ├─ right-key: (cc.status_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (lt.id = ml.link_type_id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (lt.id)\n" + + " │ ├─ right-key: (ml.link_type_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (k.keyword = 'sequel')\n" + + " │ │ └─ TableAlias(k)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id keyword]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (mc.company_type_id = ct.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (ct.kind = 'production companies')\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ct.id)\n" + + " │ ├─ right-key: (mc.company_type_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (mc.company_id = cn.id)\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (cn.id)\n" + + " │ ├─ right-key: (mc.company_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mk.movie_id = mi.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_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" + + " │ │ └─ 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: mi.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: mc.movie_id\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ml.movie_id, mk.movie_id, mc.movie_id, mi.movie_id, cc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id, t.id)\n" + + " └─ Filter\n" + + " ├─ (t.production_year = 1998)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\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" + + " └─ HashJoin\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" + + " ├─ HashJoin\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (cct1.id)\n" + + " │ ├─ right-key: (cc.subject_id)\n" + + " │ └─ HashJoin\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (cct2.id)\n" + + " │ ├─ right-key: (cc.status_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (lt.id = ml.link_type_id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (lt.id)\n" + + " │ ├─ right-key: (ml.link_type_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (k.keyword = 'sequel')\n" + + " │ │ └─ TableAlias(k)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id keyword]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (mc.company_type_id = ct.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (ct.kind = 'production companies')\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ct.id)\n" + + " │ ├─ right-key: (mc.company_type_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (mc.company_id = cn.id)\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (cn.id)\n" + + " │ ├─ right-key: (mc.company_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mk.movie_id = mi.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_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" + + " │ │ └─ 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: mi.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: mc.movie_id\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ml.movie_id, mk.movie_id, mc.movie_id, mi.movie_id, cc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id, t.id)\n" + + " └─ Filter\n" + + " ├─ (t.production_year = 1998)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\n" + "", }, { @@ -19377,382 +20303,427 @@ WHERE cct1.kind = 'cast' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as producing_company, min(lt.link):1!null as link_type, min(t.title):2!null as complete_western_sequel]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(cn.name:20!null), MIN(lt.link:14!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(cn.name:11!null), MIN(lt.link:5!null), MIN(t.title:27!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + " │ │ │ ├─ AND\n" + " │ │ │ │ ├─ Eq\n" + - " │ │ │ │ │ ├─ ml.movie_id:3!null\n" + - " │ │ │ │ │ └─ t.id:0!null\n" + + " │ │ │ │ │ ├─ ml.movie_id:13!null\n" + + " │ │ │ │ │ └─ t.id:26!null\n" + " │ │ │ │ └─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ └─ mk.movie_id:5!null\n" + + " │ │ │ │ ├─ t.id:26!null\n" + + " │ │ │ │ └─ mk.movie_id:15!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mc.movie_id:9!null\n" + + " │ │ │ ├─ t.id:26!null\n" + + " │ │ │ └─ mc.movie_id:19!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ mi.movie_id:7!null\n" + - " │ │ └─ t.id:0!null\n" + + " │ │ ├─ mi.movie_id:17!null\n" + + " │ │ └─ t.id:26!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" + + " │ ├─ t.id:26!null\n" + + " │ └─ cc.movie_id:23\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ cct1.id:0!null\n" + + " │ │ └─ cc.subject_id:24!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(cct1.id:0!null)\n" + + " │ ├─ right-key: TUPLE(cc.subject_id:22!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ cct2.id:2!null\n" + + " │ │ └─ cc.status_id:25!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" + + " │ │ └─ Table\n" + + " │ │ ├─ name: comp_cast_type\n" + + " │ │ ├─ columns: [id kind]\n" + + " │ │ ├─ colSet: (7,8)\n" + + " │ │ └─ tableId: 3\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(cct2.id:2!null)\n" + + " │ ├─ right-key: TUPLE(cc.status_id:21!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ lt.id:4!null\n" + + " │ │ └─ ml.link_type_id:14!null\n" + + " │ ├─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(lt.id:4!null)\n" + + " │ ├─ right-key: TUPLE(ml.link_type_id:8!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mk.keyword_id:16!null\n" + + " │ │ └─ k.id:6!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(k.id:6!null)\n" + + " │ ├─ right-key: TUPLE(mk.keyword_id:8!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mc.company_type_id:21!null\n" + + " │ │ └─ ct.id:8!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ct.id:8!null)\n" + + " │ ├─ right-key: TUPLE(mc.company_type_id:11!null)\n" + + " │ └─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mc.company_id:20!null\n" + + " │ │ └─ cn.id:10!null\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(cn.id:10!null)\n" + + " │ ├─ right-key: TUPLE(mc.company_id:7!null)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ml.movie_id:13!null\n" + + " │ │ │ └─ mk.movie_id:15!null\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mk.movie_id:15!null\n" + + " │ │ │ │ └─ mi.movie_id:17!null\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ ProcessTable\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" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info\n" + + " │ │ │ └─ columns: [movie_id info]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ mc.note:3 IS NULL\n" + + " │ │ └─ TableAlias(mc)\n" + + " │ │ └─ IndexedTableAccess(movie_companies)\n" + + " │ │ ├─ index: [movie_companies.movie_id]\n" + + " │ │ ├─ keys: [mi.movie_id:17!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" + + " │ └─ TableAlias(cc)\n" + + " │ └─ IndexedTableAccess(complete_cast)\n" + + " │ ├─ index: [complete_cast.movie_id]\n" + + " │ ├─ keys: [mc.movie_id:19!null]\n" + + " │ ├─ colSet: (1-4)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: complete_cast\n" + + " │ └─ columns: [movie_id subject_id status_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(ml.movie_id:13!null, mk.movie_id:15!null, mc.movie_id:19!null, mi.movie_id:17!null, cc.movie_id:23)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ Filter\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" + + " │ ├─ 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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (cct1.id)\n" + + " │ ├─ right-key: (cc.subject_id)\n" + + " │ └─ HashJoin\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (cct2.id)\n" + + " │ ├─ right-key: (cc.status_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (lt.id = ml.link_type_id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (lt.id)\n" + + " │ ├─ right-key: (ml.link_type_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (k.keyword = 'sequel')\n" + + " │ │ └─ TableAlias(k)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id keyword]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (mc.company_type_id = ct.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (ct.kind = 'production companies')\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ct.id)\n" + + " │ ├─ right-key: (mc.company_type_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (mc.company_id = cn.id)\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (cn.id)\n" + + " │ ├─ right-key: (mc.company_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mk.movie_id = mi.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_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" + + " │ │ └─ 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: mi.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: mc.movie_id\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ml.movie_id, mk.movie_id, mc.movie_id, mi.movie_id, cc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id, t.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" + "", 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" + + " └─ HashJoin\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" + + " ├─ HashJoin\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (cct1.id)\n" + + " │ ├─ right-key: (cc.subject_id)\n" + + " │ └─ HashJoin\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (cct2.id)\n" + + " │ ├─ right-key: (cc.status_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (lt.id = ml.link_type_id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (lt.id)\n" + + " │ ├─ right-key: (ml.link_type_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (k.keyword = 'sequel')\n" + + " │ │ └─ TableAlias(k)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: keyword\n" + + " │ │ └─ columns: [id keyword]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (k.id)\n" + + " │ ├─ right-key: (mk.keyword_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (mc.company_type_id = ct.id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (ct.kind = 'production companies')\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id kind]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ct.id)\n" + + " │ ├─ right-key: (mc.company_type_id)\n" + + " │ └─ HashJoin\n" + + " │ ├─ (mc.company_id = cn.id)\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (cn.id)\n" + + " │ ├─ right-key: (mc.company_id)\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (ml.movie_id = mk.movie_id)\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id link_type_id]\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mk.movie_id = mi.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_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" + + " │ │ └─ 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: mi.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: mc.movie_id\n" + + " └─ HashLookup\n" + + " ├─ left-key: (ml.movie_id, mk.movie_id, mc.movie_id, mi.movie_id, cc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id, t.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" + "", }, { @@ -19827,225 +20798,207 @@ WHERE cct1.kind = 'crew' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as movie_company, min(mi_idx.info):1!null as rating, min(t.title):2!null as complete_euro_dark_movie]\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:23!null), MIN(mi_idx.info:32!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\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" + + " │ │ │ │ │ ├─ mi.movie_id:13!null\n" + + " │ │ │ │ │ └─ mi_idx.movie_id:30!null\n" + " │ │ │ │ └─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ └─ mk.movie_id:4!null\n" + + " │ │ │ │ ├─ mc.movie_id:18!null\n" + + " │ │ │ │ └─ mi_idx.movie_id:30!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mi_idx.movie_id:6!null\n" + + " │ │ │ ├─ mi_idx.movie_id:30!null\n" + + " │ │ │ └─ cc.movie_id:8\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mc.movie_id:12!null\n" + + " │ │ ├─ mk.movie_id:26!null\n" + + " │ │ └─ mi_idx.movie_id:30!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" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title kind_id production_year]\n" + + " │ └─ mi_idx.movie_id:30!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ AND\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mk.movie_id:26!null\n" + + " │ │ │ │ └─ mi.movie_id:13!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mk.movie_id:26!null\n" + + " │ │ │ └─ mc.movie_id:18!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mk.movie_id:26!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:13!null\n" + + " │ │ │ │ └─ mc.movie_id:18!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ t.id:0!null\n" + + " │ │ │ └─ mc.movie_id:18!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ └─ mi.movie_id:13!null\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ ├─ kt.id:11!null\n" + + " │ │ │ │ │ └─ t.kind_id:2!null\n" + + " │ │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ │ │ └─ cc.movie_id:8\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" + + " │ │ │ │ │ │ ├─ cct2.id:4!null\n" + + " │ │ │ │ │ │ └─ cc.status_id:10!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:6!null\n" + + " │ │ │ │ │ │ └─ cc.subject_id:9!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" + + " │ │ │ │ ├─ 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" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ it1.id:16!null\n" + + " │ │ │ │ └─ mi.info_type_id:14!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" + + " │ │ │ └─ 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" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ct.id:25!null\n" + + " │ │ │ └─ mc.company_type_id:20!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ cn.id:22!null\n" + + " │ │ │ │ └─ mc.company_id:19!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" + + " │ │ │ └─ 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" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ k.id:28!null\n" + + " │ │ └─ mk.keyword_id:27!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " └─ 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" + + " ├─ Eq\n" + + " │ ├─ it2.id:33!null\n" + + " │ └─ mi_idx.info_type_id:31!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" + + " └─ 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: (20,21)\n" + + " └─ tableId: 7\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" + @@ -20053,103 +21006,109 @@ WHERE cct1.kind = 'crew' " ├─ 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" + + " ├─ (((((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = cc.movie_id)) AND (mk.movie_id = mi_idx.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (t.id = mk.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ ((mi.movie_id = mc.movie_id) AND (t.id = mc.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mi.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ ├─ (kt.kind HASH IN ('movie', 'episode'))\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'countries')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (NOT((cn.country_code = '[us]')))\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id name country_code]\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_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" + " └─ 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" + + " ├─ (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" + + " └─ Filter\n" + + " ├─ (it2.info = 'rating')\n" + + " └─ TableAlias(it2)\n" + + " └─ Table\n" + + " ├─ name: info_type\n" + + " └─ columns: [id info]\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" + @@ -20157,103 +21116,109 @@ WHERE cct1.kind = 'crew' " ├─ 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" + + " ├─ (((((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = cc.movie_id)) AND (mk.movie_id = mi_idx.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (t.id = mk.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ ((mi.movie_id = mc.movie_id) AND (t.id = mc.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mi.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ ├─ (kt.kind HASH IN ('movie', 'episode'))\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'countries')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (NOT((cn.country_code = '[us]')))\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id name country_code]\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_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" + " └─ 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" + + " ├─ (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" + + " └─ Filter\n" + + " ├─ (it2.info = 'rating')\n" + + " └─ TableAlias(it2)\n" + + " └─ Table\n" + + " ├─ name: info_type\n" + + " └─ columns: [id info]\n" + "", }, { @@ -20322,225 +21287,207 @@ WHERE cct1.kind = 'crew' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as movie_company, min(mi_idx.info):1!null as rating, min(t.title):2!null as complete_euro_dark_movie]\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:23!null), MIN(mi_idx.info:32!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\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" + + " │ │ │ │ │ ├─ mi.movie_id:13!null\n" + + " │ │ │ │ │ └─ mi_idx.movie_id:30!null\n" + " │ │ │ │ └─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ └─ mk.movie_id:4!null\n" + + " │ │ │ │ ├─ mc.movie_id:18!null\n" + + " │ │ │ │ └─ mi_idx.movie_id:30!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mi_idx.movie_id:6!null\n" + + " │ │ │ ├─ mi_idx.movie_id:30!null\n" + + " │ │ │ └─ cc.movie_id:8\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mc.movie_id:12!null\n" + + " │ │ ├─ mk.movie_id:26!null\n" + + " │ │ └─ mi_idx.movie_id:30!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" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title kind_id production_year]\n" + + " │ └─ mi_idx.movie_id:30!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ AND\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mk.movie_id:26!null\n" + + " │ │ │ │ └─ mi.movie_id:13!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mk.movie_id:26!null\n" + + " │ │ │ └─ mc.movie_id:18!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mk.movie_id:26!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:13!null\n" + + " │ │ │ │ └─ mc.movie_id:18!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ t.id:0!null\n" + + " │ │ │ └─ mc.movie_id:18!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ └─ mi.movie_id:13!null\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ ├─ kt.id:11!null\n" + + " │ │ │ │ │ └─ t.kind_id:2!null\n" + + " │ │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ │ │ └─ cc.movie_id:8\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" + + " │ │ │ │ │ │ ├─ cct2.id:4!null\n" + + " │ │ │ │ │ │ └─ cc.status_id:10!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:6!null\n" + + " │ │ │ │ │ │ └─ cc.subject_id:9!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" + + " │ │ │ │ ├─ 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" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ it1.id:16!null\n" + + " │ │ │ │ └─ mi.info_type_id:14!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" + + " │ │ │ └─ 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" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ct.id:25!null\n" + + " │ │ │ └─ mc.company_type_id:20!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ cn.id:22!null\n" + + " │ │ │ │ └─ mc.company_id:19!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" + + " │ │ │ └─ 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" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ k.id:28!null\n" + + " │ │ └─ mk.keyword_id:27!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " └─ 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" + + " ├─ Eq\n" + + " │ ├─ it2.id:33!null\n" + + " │ └─ mi_idx.info_type_id:31!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" + + " └─ 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: (20,21)\n" + + " └─ tableId: 7\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" + @@ -20548,103 +21495,109 @@ WHERE cct1.kind = 'crew' " ├─ 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" + + " ├─ (((((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = cc.movie_id)) AND (mk.movie_id = mi_idx.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (t.id = mk.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ ((mi.movie_id = mc.movie_id) AND (t.id = mc.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mi.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ ├─ (kt.kind HASH IN ('movie', 'episode'))\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\n" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'countries')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (NOT((cn.country_code = '[us]')))\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id name country_code]\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_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" + " └─ 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" + + " ├─ (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" + + " └─ Filter\n" + + " ├─ (it2.info = 'rating')\n" + + " └─ TableAlias(it2)\n" + + " └─ Table\n" + + " ├─ name: info_type\n" + + " └─ columns: [id info]\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" + @@ -20652,103 +21605,109 @@ WHERE cct1.kind = 'crew' " ├─ 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" + + " ├─ (((((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = cc.movie_id)) AND (mk.movie_id = mi_idx.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (t.id = mk.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ ((mi.movie_id = mc.movie_id) AND (t.id = mc.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mi.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ ├─ (kt.kind HASH IN ('movie', 'episode'))\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\n" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'countries')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (NOT((cn.country_code = '[us]')))\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id name country_code]\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_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" + " └─ 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" + + " ├─ (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" + + " └─ Filter\n" + + " ├─ (it2.info = 'rating')\n" + + " └─ TableAlias(it2)\n" + + " └─ Table\n" + + " ├─ name: info_type\n" + + " └─ columns: [id info]\n" + "", }, { @@ -20823,224 +21782,206 @@ WHERE cct1.kind = 'cast' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn.name):0!null as movie_company, min(mi_idx.info):1!null as rating, min(t.title):2!null as complete_euro_dark_movie]\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:23!null), MIN(mi_idx.info:32!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\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" + + " │ │ │ │ │ ├─ mi.movie_id:13!null\n" + + " │ │ │ │ │ └─ mi_idx.movie_id:30!null\n" + " │ │ │ │ └─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ └─ mk.movie_id:4!null\n" + + " │ │ │ │ ├─ mc.movie_id:18!null\n" + + " │ │ │ │ └─ mi_idx.movie_id:30!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ mi_idx.movie_id:6!null\n" + + " │ │ │ ├─ mi_idx.movie_id:30!null\n" + + " │ │ │ └─ cc.movie_id:8\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mc.movie_id:12!null\n" + + " │ │ ├─ mk.movie_id:26!null\n" + + " │ │ └─ mi_idx.movie_id:30!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" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title kind_id production_year]\n" + + " │ └─ mi_idx.movie_id:30!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ AND\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mk.movie_id:26!null\n" + + " │ │ │ │ └─ mi.movie_id:13!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mk.movie_id:26!null\n" + + " │ │ │ └─ mc.movie_id:18!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mk.movie_id:26!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:13!null\n" + + " │ │ │ │ └─ mc.movie_id:18!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ t.id:0!null\n" + + " │ │ │ └─ mc.movie_id:18!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ └─ mi.movie_id:13!null\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ ├─ kt.id:11!null\n" + + " │ │ │ │ │ └─ t.kind_id:2!null\n" + + " │ │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ │ ├─ Eq\n" + + " │ │ │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ │ │ └─ cc.movie_id:8\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" + + " │ │ │ │ │ │ ├─ cct2.id:4!null\n" + + " │ │ │ │ │ │ └─ cc.status_id:10!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:6!null\n" + + " │ │ │ │ │ │ └─ cc.subject_id:9!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" + + " │ │ │ │ ├─ 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" + + " │ │ │ └─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ it1.id:16!null\n" + + " │ │ │ │ └─ mi.info_type_id:14!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" + + " │ │ │ └─ 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" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ct.id:25!null\n" + + " │ │ │ └─ mc.company_type_id:20!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ cn.id:22!null\n" + + " │ │ │ │ └─ mc.company_id:19!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" + + " │ │ │ └─ 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" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ k.id:28!null\n" + + " │ │ └─ mk.keyword_id:27!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " └─ 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" + + " ├─ Eq\n" + + " │ ├─ it2.id:33!null\n" + + " │ └─ mi_idx.info_type_id:31!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" + + " └─ 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: (20,21)\n" + + " └─ tableId: 7\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" + @@ -21048,103 +21989,109 @@ WHERE cct1.kind = 'cast' " ├─ 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" + + " ├─ (((((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = cc.movie_id)) AND (mk.movie_id = mi_idx.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (t.id = mk.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ ((mi.movie_id = mc.movie_id) AND (t.id = mc.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mi.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ ├─ (kt.kind HASH IN ('movie', 'episode'))\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'countries')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (NOT((cn.country_code = '[us]')))\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id name country_code]\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_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" + " └─ 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" + + " ├─ (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" + + " └─ Filter\n" + + " ├─ (it2.info = 'rating')\n" + + " └─ TableAlias(it2)\n" + + " └─ Table\n" + + " ├─ name: info_type\n" + + " └─ columns: [id info]\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" + @@ -21152,103 +22099,109 @@ WHERE cct1.kind = 'cast' " ├─ 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" + + " ├─ (((((mi.movie_id = mi_idx.movie_id) AND (mc.movie_id = mi_idx.movie_id)) AND (mi_idx.movie_id = cc.movie_id)) AND (mk.movie_id = mi_idx.movie_id)) AND (t.id = mi_idx.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (((mk.movie_id = mi.movie_id) AND (mk.movie_id = mc.movie_id)) AND (t.id = mk.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ ((mi.movie_id = mc.movie_id) AND (t.id = mc.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (t.id = mi.movie_id)\n" + + " │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ ├─ (kt.id = t.kind_id)\n" + + " │ │ │ │ ├─ InnerJoin\n" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ │ ├─ (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" + + " │ │ │ │ ├─ (kt.kind HASH IN ('movie', 'episode'))\n" + + " │ │ │ │ └─ TableAlias(kt)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: kind_type\n" + + " │ │ │ │ └─ columns: [id kind]\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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'countries')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ (ct.id = mc.company_type_id)\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (NOT((cn.country_code = '[us]')))\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id name country_code]\n" + + " │ │ └─ TableAlias(ct)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: company_type\n" + + " │ │ └─ columns: [id]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_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" + " └─ 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" + + " ├─ (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" + + " └─ Filter\n" + + " ├─ (it2.info = 'rating')\n" + + " └─ TableAlias(it2)\n" + + " └─ Table\n" + + " ├─ name: info_type\n" + + " └─ columns: [id info]\n" + "", }, { @@ -21326,7 +22279,7 @@ WHERE cct1.kind ='cast' " └─ GroupBy\n" + " ├─ select: MIN(chn.name:9!null), MIN(n.name:31!null), MIN(t.title:38!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + @@ -21346,19 +22299,15 @@ WHERE cct1.kind ='cast' " │ └─ Eq\n" + " │ ├─ t.id:37!null\n" + " │ └─ cc.movie_id:1\n" + - " ├─ InnerJoin\n" + + " ├─ HashJoin\n" + " │ ├─ 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" + @@ -21390,16 +22339,12 @@ 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" + @@ -21422,18 +22367,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 +22428,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" + @@ -21541,7 +22486,11 @@ 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" + @@ -21562,62 +22511,72 @@ 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" + - " │ └─ 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" + - " ├─ AND\n" + - " │ ├─ AND\n" + - " │ │ ├─ Eq\n" + - " │ │ │ ├─ t.title:1!null\n" + - " │ │ │ └─ Shrek 2 (longtext)\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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ci.role_id:14!null)\n" + + " │ ├─ right-key: TUPLE(rt.id:0!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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mi.movie_id:25!null, mc.movie_id:23!null, ci.movie_id:11!null, mk.movie_id:28!null, cc.movie_id:1)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ Filter\n" + + " ├─ AND\n" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ t.title:1!null\n" + + " │ │ │ └─ Shrek 2 (longtext)\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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(chn.name) as voiced_char, min(n.name) as voicing_actress, min(t.title) as voiced_animation]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(chn.name), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((((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" + + " ├─ HashJoin\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" + + " │ │ │ │ ├─ LookupJoin\n" + + " │ │ │ │ │ ├─ (((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" + " │ │ │ │ │ │ ├─ 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 +22612,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" + @@ -21687,9 +22647,10 @@ WHERE cct1.kind ='cast' " │ │ │ │ │ └─ 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" + @@ -21701,47 +22662,54 @@ 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" + - " │ └─ Filter\n" + - " │ ├─ (rt.role = 'actress')\n" + - " │ └─ TableAlias(rt)\n" + - " │ └─ Table\n" + - " │ ├─ name: role_type\n" + - " │ └─ columns: [id role]\n" + - " └─ Filter\n" + - " ├─ (((t.title = 'Shrek 2') AND (t.production_year >= 2000)) AND (t.production_year <= 2010))\n" + - " └─ TableAlias(t)\n" + - " └─ Table\n" + - " ├─ name: title\n" + - " └─ columns: [id title production_year]\n" + + " │ │ └─ IndexedTableAccess(person_info)\n" + + " │ │ ├─ index: [person_info.person_id]\n" + + " │ │ ├─ columns: [person_id info_type_id]\n" + + " │ │ └─ keys: n.id\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.role_id)\n" + + " │ ├─ right-key: (rt.id)\n" + + " │ └─ Filter\n" + + " │ ├─ (rt.role = 'actress')\n" + + " │ └─ TableAlias(rt)\n" + + " │ └─ Table\n" + + " │ ├─ name: role_type\n" + + " │ └─ columns: [id role]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mc.movie_id, ci.movie_id, mk.movie_id, cc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id, t.id)\n" + + " └─ Filter\n" + + " ├─ (((t.title = 'Shrek 2') AND (t.production_year >= 2000)) AND (t.production_year <= 2010))\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(chn.name) as voiced_char, min(n.name) as voicing_actress, min(t.title) as voiced_animation]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(chn.name), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((((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" + + " ├─ HashJoin\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" + + " │ │ │ │ ├─ LookupJoin\n" + + " │ │ │ │ │ ├─ (((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" + " │ │ │ │ │ │ ├─ 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 +22745,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" + @@ -21811,9 +22780,10 @@ WHERE cct1.kind ='cast' " │ │ │ │ │ └─ 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" + @@ -21825,21 +22795,28 @@ 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" + - " │ └─ Filter\n" + - " │ ├─ (rt.role = 'actress')\n" + - " │ └─ TableAlias(rt)\n" + - " │ └─ Table\n" + - " │ ├─ name: role_type\n" + - " │ └─ columns: [id role]\n" + - " └─ Filter\n" + - " ├─ (((t.title = 'Shrek 2') AND (t.production_year >= 2000)) AND (t.production_year <= 2010))\n" + - " └─ TableAlias(t)\n" + - " └─ Table\n" + - " ├─ name: title\n" + - " └─ columns: [id title production_year]\n" + + " │ │ └─ IndexedTableAccess(person_info)\n" + + " │ │ ├─ index: [person_info.person_id]\n" + + " │ │ ├─ columns: [person_id info_type_id]\n" + + " │ │ └─ keys: n.id\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.role_id)\n" + + " │ ├─ right-key: (rt.id)\n" + + " │ └─ Filter\n" + + " │ ├─ (rt.role = 'actress')\n" + + " │ └─ TableAlias(rt)\n" + + " │ └─ Table\n" + + " │ ├─ name: role_type\n" + + " │ └─ columns: [id role]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mc.movie_id, ci.movie_id, mk.movie_id, cc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id, t.id)\n" + + " └─ Filter\n" + + " ├─ (((t.title = 'Shrek 2') AND (t.production_year >= 2000)) AND (t.production_year <= 2010))\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\n" + "", }, { @@ -21915,7 +22892,7 @@ WHERE cct1.kind ='cast' " └─ GroupBy\n" + " ├─ select: MIN(chn.name:9!null), MIN(n.name:31!null), MIN(t.title:38!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + @@ -21935,19 +22912,15 @@ WHERE cct1.kind ='cast' " │ └─ Eq\n" + " │ ├─ t.id:37!null\n" + " │ └─ cc.movie_id:1\n" + - " ├─ InnerJoin\n" + + " ├─ HashJoin\n" + " │ ├─ 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" + @@ -21979,16 +22952,12 @@ 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" + @@ -22011,18 +22980,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 +23041,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" + @@ -22125,7 +23094,11 @@ WHERE cct1.kind ='cast' " │ │ │ │ │ └─ 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" + @@ -22146,62 +23119,72 @@ 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" + - " │ └─ 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" + - " ├─ AND\n" + - " │ ├─ AND\n" + - " │ │ ├─ Eq\n" + - " │ │ │ ├─ t.title:1!null\n" + - " │ │ │ └─ Shrek 2 (longtext)\n" + - " │ │ └─ GreaterThanOrEqual\n" + - " │ │ ├─ t.production_year:2\n" + - " │ │ └─ 2000 (smallint)\n" + - " │ └─ LessThanOrEqual\n" + - " │ ├─ t.production_year:2\n" + - " │ └─ 2005 (smallint)\n" + - " └─ TableAlias(t)\n" + - " └─ ProcessTable\n" + - " └─ Table\n" + - " ├─ name: title\n" + - " └─ columns: [id title production_year]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ci.role_id:14!null)\n" + + " │ ├─ right-key: TUPLE(rt.id:0!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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mi.movie_id:25!null, mc.movie_id:23!null, ci.movie_id:11!null, mk.movie_id:28!null, cc.movie_id:1)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ Filter\n" + + " ├─ AND\n" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ t.title:1!null\n" + + " │ │ │ └─ Shrek 2 (longtext)\n" + + " │ │ └─ GreaterThanOrEqual\n" + + " │ │ ├─ t.production_year:2\n" + + " │ │ └─ 2000 (smallint)\n" + + " │ └─ LessThanOrEqual\n" + + " │ ├─ t.production_year:2\n" + + " │ └─ 2005 (smallint)\n" + + " └─ TableAlias(t)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\n" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(chn.name) as voiced_char, min(n.name) as voicing_actress, min(t.title) as voiced_animation]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(chn.name), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((((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" + + " ├─ HashJoin\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" + + " │ │ │ │ ├─ LookupJoin\n" + + " │ │ │ │ │ ├─ (((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" + " │ │ │ │ │ │ ├─ 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 +23220,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" + @@ -22271,9 +23255,10 @@ WHERE cct1.kind ='cast' " │ │ │ │ │ └─ 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" + @@ -22285,47 +23270,54 @@ 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" + - " │ └─ Filter\n" + - " │ ├─ (rt.role = 'actress')\n" + - " │ └─ TableAlias(rt)\n" + - " │ └─ Table\n" + - " │ ├─ name: role_type\n" + - " │ └─ columns: [id role]\n" + - " └─ Filter\n" + - " ├─ (((t.title = 'Shrek 2') AND (t.production_year >= 2000)) AND (t.production_year <= 2005))\n" + - " └─ TableAlias(t)\n" + - " └─ Table\n" + - " ├─ name: title\n" + - " └─ columns: [id title production_year]\n" + + " │ │ └─ IndexedTableAccess(person_info)\n" + + " │ │ ├─ index: [person_info.person_id]\n" + + " │ │ ├─ columns: [person_id info_type_id]\n" + + " │ │ └─ keys: n.id\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.role_id)\n" + + " │ ├─ right-key: (rt.id)\n" + + " │ └─ Filter\n" + + " │ ├─ (rt.role = 'actress')\n" + + " │ └─ TableAlias(rt)\n" + + " │ └─ Table\n" + + " │ ├─ name: role_type\n" + + " │ └─ columns: [id role]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mc.movie_id, ci.movie_id, mk.movie_id, cc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id, t.id)\n" + + " └─ Filter\n" + + " ├─ (((t.title = 'Shrek 2') AND (t.production_year >= 2000)) AND (t.production_year <= 2005))\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(chn.name) as voiced_char, min(n.name) as voicing_actress, min(t.title) as voiced_animation]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(chn.name), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((((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" + + " ├─ HashJoin\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" + + " │ │ │ │ ├─ LookupJoin\n" + + " │ │ │ │ │ ├─ (((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" + " │ │ │ │ │ │ ├─ 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 +23353,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" + @@ -22395,9 +23388,10 @@ WHERE cct1.kind ='cast' " │ │ │ │ │ └─ 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" + @@ -22409,21 +23403,28 @@ 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" + - " │ └─ Filter\n" + - " │ ├─ (rt.role = 'actress')\n" + - " │ └─ TableAlias(rt)\n" + - " │ └─ Table\n" + - " │ ├─ name: role_type\n" + - " │ └─ columns: [id role]\n" + - " └─ Filter\n" + - " ├─ (((t.title = 'Shrek 2') AND (t.production_year >= 2000)) AND (t.production_year <= 2005))\n" + - " └─ TableAlias(t)\n" + - " └─ Table\n" + - " ├─ name: title\n" + - " └─ columns: [id title production_year]\n" + + " │ │ └─ IndexedTableAccess(person_info)\n" + + " │ │ ├─ index: [person_info.person_id]\n" + + " │ │ ├─ columns: [person_id info_type_id]\n" + + " │ │ └─ keys: n.id\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.role_id)\n" + + " │ ├─ right-key: (rt.id)\n" + + " │ └─ Filter\n" + + " │ ├─ (rt.role = 'actress')\n" + + " │ └─ TableAlias(rt)\n" + + " │ └─ Table\n" + + " │ ├─ name: role_type\n" + + " │ └─ columns: [id role]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mc.movie_id, ci.movie_id, mk.movie_id, cc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id, t.id)\n" + + " └─ Filter\n" + + " ├─ (((t.title = 'Shrek 2') AND (t.production_year >= 2000)) AND (t.production_year <= 2005))\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\n" + "", }, { @@ -22500,7 +23501,7 @@ WHERE cct1.kind ='cast' " └─ GroupBy\n" + " ├─ select: MIN(chn.name:9!null), MIN(n.name:31!null), MIN(t.title:38!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + @@ -22520,19 +23521,15 @@ WHERE cct1.kind ='cast' " │ └─ Eq\n" + " │ ├─ t.id:37!null\n" + " │ └─ cc.movie_id:1\n" + - " ├─ InnerJoin\n" + + " ├─ HashJoin\n" + " │ ├─ 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" + @@ -22564,16 +23561,12 @@ 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" + @@ -22596,18 +23589,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 +23646,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" + @@ -22711,7 +23704,11 @@ 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" + @@ -22732,58 +23729,68 @@ 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" + - " │ └─ 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" + - " ├─ 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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ci.role_id:14!null)\n" + + " │ ├─ right-key: TUPLE(rt.id:0!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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mi.movie_id:25!null, mc.movie_id:23!null, ci.movie_id:11!null, mk.movie_id:28!null, cc.movie_id:1)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(chn.name) as voiced_char, min(n.name) as voicing_actress, min(t.title) as voiced_animation]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(chn.name), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((((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" + + " ├─ HashJoin\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" + + " │ │ │ │ ├─ LookupJoin\n" + + " │ │ │ │ │ ├─ (((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" + " │ │ │ │ │ │ ├─ 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 +23824,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" + @@ -22851,9 +23859,10 @@ WHERE cct1.kind ='cast' " │ │ │ │ │ └─ 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" + @@ -22865,47 +23874,54 @@ 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" + - " │ └─ Filter\n" + - " │ ├─ (rt.role = 'actress')\n" + - " │ └─ TableAlias(rt)\n" + - " │ └─ Table\n" + - " │ ├─ name: role_type\n" + - " │ └─ columns: [id role]\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" + + " │ │ └─ IndexedTableAccess(person_info)\n" + + " │ │ ├─ index: [person_info.person_id]\n" + + " │ │ ├─ columns: [person_id info_type_id]\n" + + " │ │ └─ keys: n.id\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.role_id)\n" + + " │ ├─ right-key: (rt.id)\n" + + " │ └─ Filter\n" + + " │ ├─ (rt.role = 'actress')\n" + + " │ └─ TableAlias(rt)\n" + + " │ └─ Table\n" + + " │ ├─ name: role_type\n" + + " │ └─ columns: [id role]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mc.movie_id, ci.movie_id, mk.movie_id, cc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id, t.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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(chn.name) as voiced_char, min(n.name) as voicing_actress, min(t.title) as voiced_animation]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(chn.name), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((((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" + + " ├─ HashJoin\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" + + " │ │ │ │ ├─ LookupJoin\n" + + " │ │ │ │ │ ├─ (((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" + " │ │ │ │ │ │ ├─ 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 +23955,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" + @@ -22973,35 +23990,43 @@ WHERE cct1.kind ='cast' " │ │ │ │ │ └─ 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" + " │ │ │ └─ 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(pi)\n" + - " │ │ └─ Table\n" + - " │ │ ├─ name: person_info\n" + - " │ │ └─ columns: [person_id info_type_id]\n" + - " │ └─ Filter\n" + - " │ ├─ (rt.role = 'actress')\n" + - " │ └─ TableAlias(rt)\n" + - " │ └─ Table\n" + - " │ ├─ name: role_type\n" + - " │ └─ columns: [id role]\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" + + " │ │ │ └─ TableAlias(n)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: name\n" + + " │ │ │ └─ columns: [id name gender]\n" + + " │ │ └─ TableAlias(pi)\n" + + " │ │ └─ IndexedTableAccess(person_info)\n" + + " │ │ ├─ index: [person_info.person_id]\n" + + " │ │ ├─ columns: [person_id info_type_id]\n" + + " │ │ └─ keys: n.id\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.role_id)\n" + + " │ ├─ right-key: (rt.id)\n" + + " │ └─ Filter\n" + + " │ ├─ (rt.role = 'actress')\n" + + " │ └─ TableAlias(rt)\n" + + " │ └─ Table\n" + + " │ ├─ name: role_type\n" + + " │ └─ columns: [id role]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mc.movie_id, ci.movie_id, mk.movie_id, cc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id, t.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" + "", }, { @@ -23028,58 +24053,58 @@ WHERE cn.country_code ='[de]' " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + - " │ ├─ Eq\n" + - " │ │ ├─ mc.movie_id:4!null\n" + - " │ │ └─ t.id:0!null\n" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn.id:8!null\n" + + " │ │ │ └─ mc.company_id:3!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ mc.movie_id:2!null\n" + + " │ │ └─ mk.movie_id:4!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" + + " │ └─ mk.movie_id:4!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mc.movie_id:2!null\n" + + " │ │ └─ t.id:0!null\n" + + " │ ├─ TableAlias(t)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title]\n" + + " │ └─ TableAlias(mc)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_companies\n" + + " │ └─ columns: [movie_id company_id]\n" + + " └─ CrossJoin\n" + + " ├─ InnerJoin\n" + " │ ├─ Eq\n" + - " │ │ ├─ mk.keyword_id:3!null\n" + + " │ │ ├─ mk.keyword_id:5!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" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_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" + + " └─ Filter\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" + + " │ ├─ cn.country_code:1\n" + + " │ └─ [de] (longtext)\n" + + " └─ TableAlias(cn)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(t.title) as movie_title]\n" + @@ -23087,36 +24112,36 @@ WHERE cn.country_code ='[de]' " ├─ 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" + + " ├─ (((cn.id = mc.company_id) AND (mc.movie_id = mk.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = t.id)\n" + + " │ ├─ TableAlias(t)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title]\n" + + " │ └─ TableAlias(mc)\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_companies\n" + + " │ └─ columns: [movie_id company_id]\n" + + " └─ CrossJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(t.title) as movie_title]\n" + @@ -23124,36 +24149,36 @@ WHERE cn.country_code ='[de]' " ├─ 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" + + " ├─ (((cn.id = mc.company_id) AND (mc.movie_id = mk.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = t.id)\n" + + " │ ├─ TableAlias(t)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title]\n" + + " │ └─ TableAlias(mc)\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_companies\n" + + " │ └─ columns: [movie_id company_id]\n" + + " └─ CrossJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + "", }, { @@ -23180,58 +24205,58 @@ WHERE cn.country_code ='[nl]' " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + - " │ ├─ Eq\n" + - " │ │ ├─ mc.movie_id:4!null\n" + - " │ │ └─ t.id:0!null\n" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn.id:8!null\n" + + " │ │ │ └─ mc.company_id:3!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ mc.movie_id:2!null\n" + + " │ │ └─ mk.movie_id:4!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" + + " │ └─ mk.movie_id:4!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mc.movie_id:2!null\n" + + " │ │ └─ t.id:0!null\n" + + " │ ├─ TableAlias(t)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title]\n" + + " │ └─ TableAlias(mc)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_companies\n" + + " │ └─ columns: [movie_id company_id]\n" + + " └─ CrossJoin\n" + + " ├─ InnerJoin\n" + " │ ├─ Eq\n" + - " │ │ ├─ mk.keyword_id:3!null\n" + + " │ │ ├─ mk.keyword_id:5!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" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_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" + + " └─ Filter\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" + + " │ ├─ cn.country_code:1\n" + + " │ └─ [nl] (longtext)\n" + + " └─ TableAlias(cn)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(t.title) as movie_title]\n" + @@ -23239,36 +24264,36 @@ WHERE cn.country_code ='[nl]' " ├─ 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" + + " ├─ (((cn.id = mc.company_id) AND (mc.movie_id = mk.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = t.id)\n" + + " │ ├─ TableAlias(t)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title]\n" + + " │ └─ TableAlias(mc)\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_companies\n" + + " │ └─ columns: [movie_id company_id]\n" + + " └─ CrossJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(t.title) as movie_title]\n" + @@ -23276,36 +24301,36 @@ WHERE cn.country_code ='[nl]' " ├─ 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" + + " ├─ (((cn.id = mc.company_id) AND (mc.movie_id = mk.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = t.id)\n" + + " │ ├─ TableAlias(t)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title]\n" + + " │ └─ TableAlias(mc)\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_companies\n" + + " │ └─ columns: [movie_id company_id]\n" + + " └─ CrossJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + "", }, { @@ -23332,58 +24357,58 @@ WHERE cn.country_code ='[sm]' " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + - " │ ├─ Eq\n" + - " │ │ ├─ mc.movie_id:4!null\n" + - " │ │ └─ t.id:0!null\n" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn.id:8!null\n" + + " │ │ │ └─ mc.company_id:3!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ mc.movie_id:2!null\n" + + " │ │ └─ mk.movie_id:4!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" + + " │ └─ mk.movie_id:4!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mc.movie_id:2!null\n" + + " │ │ └─ t.id:0!null\n" + + " │ ├─ TableAlias(t)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title]\n" + + " │ └─ TableAlias(mc)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_companies\n" + + " │ └─ columns: [movie_id company_id]\n" + + " └─ CrossJoin\n" + + " ├─ InnerJoin\n" + " │ ├─ Eq\n" + - " │ │ ├─ mk.keyword_id:3!null\n" + + " │ │ ├─ mk.keyword_id:5!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" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_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" + + " └─ Filter\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" + + " │ ├─ cn.country_code:1\n" + + " │ └─ [sm] (longtext)\n" + + " └─ TableAlias(cn)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(t.title) as movie_title]\n" + @@ -23391,73 +24416,73 @@ WHERE cn.country_code ='[sm]' " ├─ 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" + + " ├─ (((cn.id = mc.company_id) AND (mc.movie_id = mk.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = t.id)\n" + + " │ ├─ TableAlias(t)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title]\n" + + " │ └─ TableAlias(mc)\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_companies\n" + + " │ └─ columns: [movie_id company_id]\n" + + " └─ CrossJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + "", 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" + + " ├─ columns: [min(t.title) as movie_title]\n" + + " └─ GroupBy\n" + + " ├─ SelectedExprs(MIN(t.title))\n" + + " ├─ Grouping()\n" + + " └─ InnerJoin\n" + + " ├─ (((cn.id = mc.company_id) AND (mc.movie_id = mk.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = t.id)\n" + + " │ ├─ TableAlias(t)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title]\n" + + " │ └─ TableAlias(mc)\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_companies\n" + + " │ └─ columns: [movie_id company_id]\n" + + " └─ CrossJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + "", }, { @@ -23484,58 +24509,58 @@ WHERE cn.country_code ='[us]' " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + - " │ ├─ Eq\n" + - " │ │ ├─ mc.movie_id:4!null\n" + - " │ │ └─ t.id:0!null\n" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn.id:8!null\n" + + " │ │ │ └─ mc.company_id:3!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ mc.movie_id:2!null\n" + + " │ │ └─ mk.movie_id:4!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" + + " │ └─ mk.movie_id:4!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mc.movie_id:2!null\n" + + " │ │ └─ t.id:0!null\n" + + " │ ├─ TableAlias(t)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title]\n" + + " │ └─ TableAlias(mc)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_companies\n" + + " │ └─ columns: [movie_id company_id]\n" + + " └─ CrossJoin\n" + + " ├─ InnerJoin\n" + " │ ├─ Eq\n" + - " │ │ ├─ mk.keyword_id:3!null\n" + + " │ │ ├─ mk.keyword_id:5!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" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_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" + + " └─ Filter\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" + + " │ ├─ cn.country_code:1\n" + + " │ └─ [us] (longtext)\n" + + " └─ TableAlias(cn)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(t.title) as movie_title]\n" + @@ -23543,36 +24568,36 @@ WHERE cn.country_code ='[us]' " ├─ 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" + + " ├─ (((cn.id = mc.company_id) AND (mc.movie_id = mk.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = t.id)\n" + + " │ ├─ TableAlias(t)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title]\n" + + " │ └─ TableAlias(mc)\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_companies\n" + + " │ └─ columns: [movie_id company_id]\n" + + " └─ CrossJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(t.title) as movie_title]\n" + @@ -23580,36 +24605,36 @@ WHERE cn.country_code ='[us]' " ├─ 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" + + " ├─ (((cn.id = mc.company_id) AND (mc.movie_id = mk.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mc.movie_id = t.id)\n" + + " │ ├─ TableAlias(t)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title]\n" + + " │ └─ TableAlias(mc)\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_companies\n" + + " │ └─ columns: [movie_id company_id]\n" + + " └─ CrossJoin\n" + + " ├─ InnerJoin\n" + + " │ ├─ (mk.keyword_id = k.id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + "", }, { @@ -23677,375 +24702,383 @@ WHERE cct1.kind IN ('cast', ExpectedPlan: "Project\n" + " ├─ columns: [min(mi.info):0!null as movie_budget, min(mi_idx.info):1!null as movie_votes, min(n.name):2!null as writer, min(t.title):3!null as complete_violent_movie]\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:9!null), MIN(mi_idx.info:27!null), MIN(n.name:16!null), MIN(t.title:13!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + - " ├─ AND\n" + - " │ ├─ AND\n" + - " │ │ ├─ AND\n" + - " │ │ │ ├─ AND\n" + - " │ │ │ │ ├─ Eq\n" + - " │ │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ │ └─ mi.movie_id:11!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" + - " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mk.movie_id:6!null\n" + - " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + - " │ └─ cc.movie_id:27\n" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ cct1.id:0!null\n" + + " │ └─ cc.subject_id:5!null\n" + " ├─ Filter\n" + - " │ ├─ GreaterThan\n" + - " │ │ ├─ t.production_year:2\n" + - " │ │ └─ 2000 (int)\n" + - " │ └─ TableAlias(t)\n" + + " │ ├─ HashIn\n" + + " │ │ ├─ cct1.kind:1!null\n" + + " │ │ └─ TUPLE(cast (longtext), crew (longtext))\n" + + " │ └─ TableAlias(cct1)\n" + " │ └─ ProcessTable\n" + " │ └─ Table\n" + - " │ ├─ 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" + - " │ ├─ 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" + - " │ │ │ ├─ 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" + + " │ ├─ name: comp_cast_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(cct1.id:0!null)\n" + + " ├─ right-key: TUPLE(cc.subject_id:3!null)\n" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ cct2.id:2!null\n" + + " │ └─ cc.status_id:6!null\n" + + " ├─ Filter\n" + + " │ ├─ Eq\n" + + " │ │ ├─ cct2.kind:1!null\n" + + " │ │ └─ complete+verified (longtext)\n" + + " │ └─ TableAlias(cct2)\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" + + " │ ├─ name: comp_cast_type\n" + + " │ ├─ columns: [id kind]\n" + + " │ ├─ colSet: (7,8)\n" + + " │ └─ tableId: 3\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(cct2.id:2!null)\n" + + " ├─ right-key: TUPLE(cc.status_id:2!null)\n" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ ci.movie_id:19!null\n" + + " │ └─ cc.movie_id:4\n" + + " ├─ TableAlias(cc)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: complete_cast\n" + + " │ └─ columns: [movie_id subject_id status_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(cc.movie_id:4)\n" + + " ├─ right-key: TUPLE(ci.movie_id:12!null)\n" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ mi.movie_id:7!null\n" + + " │ └─ mi_idx.movie_id:25!null\n" + + " ├─ InnerJoin\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" + + " │ │ ├─ it1.id:10!null\n" + + " │ │ └─ mi.info_type_id:8!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" + + " │ └─ 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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mi.movie_id:7!null)\n" + + " ├─ right-key: TUPLE(mi_idx.movie_id:13!null)\n" + + " └─ HashJoin\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" + + " │ ├─ mi_idx.movie_id:25!null\n" + + " │ └─ mk.movie_id:21!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:12!null\n" + + " │ │ └─ mk.movie_id:21!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ t.id:12!null\n" + + " │ │ │ └─ ci.movie_id:19!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" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ n.id:15!null\n" + + " │ │ │ └─ ci.person_id:18!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" + + " │ │ └─ 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" + + " │ │ ├─ k.id:23!null\n" + + " │ │ └─ mk.keyword_id:22!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mk.movie_id:21!null)\n" + + " ├─ right-key: TUPLE(mi_idx.movie_id:0!null)\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" + + " │ ├─ it2.id:28!null\n" + + " │ └─ mi_idx.info_type_id:26!null\n" + + " ├─ TableAlias(mi_idx)\n" + + " │ └─ ProcessTable\n" + " │ └─ Table\n" + - " │ ├─ name: comp_cast_type\n" + - " │ ├─ columns: [id kind]\n" + - " │ ├─ colSet: (5,6)\n" + - " │ └─ tableId: 2\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + + " │ ├─ name: movie_info_idx\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: 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" + "", 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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + - " ├─ (((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = cc.movie_id))\n" + + " └─ HashJoin\n" + + " ├─ (cct1.id = cc.subject_id)\n" + " ├─ Filter\n" + - " │ ├─ (t.production_year > 2000)\n" + - " │ └─ TableAlias(t)\n" + + " │ ├─ (cct1.kind HASH IN ('cast', 'crew'))\n" + + " │ └─ TableAlias(cct1)\n" + " │ └─ Table\n" + - " │ ├─ 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" + + " │ ├─ name: comp_cast_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (cct1.id)\n" + + " ├─ right-key: (cc.subject_id)\n" + + " └─ HashJoin\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" + + " └─ HashLookup\n" + + " ├─ left-key: (cct2.id)\n" + + " ├─ right-key: (cc.status_id)\n" + + " └─ HashJoin\n" + + " ├─ (ci.movie_id = cc.movie_id)\n" + + " ├─ TableAlias(cc)\n" + + " │ └─ Table\n" + + " │ ├─ name: complete_cast\n" + + " │ └─ columns: [movie_id subject_id status_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (cc.movie_id)\n" + + " ├─ right-key: (ci.movie_id)\n" + + " └─ HashJoin\n" + + " ├─ (mi.movie_id = mi_idx.movie_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it1.info = 'genres')\n" + + " │ └─ TableAlias(it1)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id)\n" + + " ├─ right-key: (mi_idx.movie_id)\n" + + " └─ HashJoin\n" + + " ├─ (mi_idx.movie_id = mk.movie_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + + " └─ HashLookup\n" + + " ├─ left-key: (mk.movie_id)\n" + + " ├─ right-key: (mi_idx.movie_id)\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" + + " ├─ (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" + + " └─ Filter\n" + + " ├─ (it2.info = 'votes')\n" + + " └─ TableAlias(it2)\n" + + " └─ Table\n" + + " ├─ name: info_type\n" + + " └─ columns: [id info]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + - " ├─ (((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = cc.movie_id))\n" + + " └─ HashJoin\n" + + " ├─ (cct1.id = cc.subject_id)\n" + " ├─ Filter\n" + - " │ ├─ (t.production_year > 2000)\n" + - " │ └─ TableAlias(t)\n" + + " │ ├─ (cct1.kind HASH IN ('cast', 'crew'))\n" + + " │ └─ TableAlias(cct1)\n" + " │ └─ Table\n" + - " │ ├─ 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" + + " │ ├─ name: comp_cast_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (cct1.id)\n" + + " ├─ right-key: (cc.subject_id)\n" + + " └─ HashJoin\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" + + " └─ HashLookup\n" + + " ├─ left-key: (cct2.id)\n" + + " ├─ right-key: (cc.status_id)\n" + + " └─ HashJoin\n" + + " ├─ (ci.movie_id = cc.movie_id)\n" + + " ├─ TableAlias(cc)\n" + + " │ └─ Table\n" + + " │ ├─ name: complete_cast\n" + + " │ └─ columns: [movie_id subject_id status_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (cc.movie_id)\n" + + " ├─ right-key: (ci.movie_id)\n" + + " └─ HashJoin\n" + + " ├─ (mi.movie_id = mi_idx.movie_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it1.info = 'genres')\n" + + " │ └─ TableAlias(it1)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id)\n" + + " ├─ right-key: (mi_idx.movie_id)\n" + + " └─ HashJoin\n" + + " ├─ (mi_idx.movie_id = mk.movie_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (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" + + " │ │ ├─ (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" + + " │ │ └─ 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" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + + " └─ HashLookup\n" + + " ├─ left-key: (mk.movie_id)\n" + + " ├─ right-key: (mi_idx.movie_id)\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" + + " ├─ (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" + + " └─ Filter\n" + + " ├─ (it2.info = 'votes')\n" + + " └─ TableAlias(it2)\n" + + " └─ Table\n" + + " ├─ name: info_type\n" + + " └─ columns: [id info]\n" + "", }, { @@ -24116,387 +25149,395 @@ WHERE cct1.kind IN ('cast', ExpectedPlan: "Project\n" + " ├─ columns: [min(mi.info):0!null as movie_budget, min(mi_idx.info):1!null as movie_votes, min(n.name):2!null as writer, min(t.title):3!null as complete_gore_movie]\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:9!null), MIN(mi_idx.info:27!null), MIN(n.name:16!null), MIN(t.title:13!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + - " ├─ AND\n" + - " │ ├─ AND\n" + - " │ │ ├─ AND\n" + - " │ │ │ ├─ AND\n" + - " │ │ │ │ ├─ Eq\n" + - " │ │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ │ └─ mi.movie_id:11!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" + - " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mk.movie_id:6!null\n" + - " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + - " │ └─ cc.movie_id:27\n" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ cct1.id:0!null\n" + + " │ └─ cc.subject_id:5!null\n" + " ├─ Filter\n" + - " │ ├─ AND\n" + - " │ │ ├─ GreaterThan\n" + - " │ │ │ ├─ t.production_year:2\n" + - " │ │ │ └─ 2000 (int)\n" + - " │ │ └─ Or\n" + - " │ │ ├─ Or\n" + - " │ │ │ ├─ t.title LIKE '%Freddy%'\n" + - " │ │ │ └─ t.title LIKE '%Jason%'\n" + - " │ │ └─ AND\n" + - " │ │ ├─ GreaterThanOrEqual\n" + - " │ │ │ ├─ t.title:1!null\n" + - " │ │ │ └─ Saw (longtext)\n" + - " │ │ └─ LessThanOrEqual\n" + - " │ │ ├─ t.title:1!null\n" + - " │ │ └─ Sawÿ (longtext)\n" + - " │ └─ TableAlias(t)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ 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" + - " │ ├─ 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" + - " │ │ │ ├─ 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" + + " │ ├─ 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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(cct1.id:0!null)\n" + + " ├─ right-key: TUPLE(cc.subject_id:3!null)\n" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ cct2.id:2!null\n" + + " │ └─ cc.status_id:6!null\n" + + " ├─ Filter\n" + + " │ ├─ Eq\n" + + " │ │ ├─ cct2.kind:1!null\n" + + " │ │ └─ complete+verified (longtext)\n" + + " │ └─ TableAlias(cct2)\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" + + " │ ├─ name: comp_cast_type\n" + + " │ ├─ columns: [id kind]\n" + + " │ ├─ colSet: (7,8)\n" + + " │ └─ tableId: 3\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(cct2.id:2!null)\n" + + " ├─ right-key: TUPLE(cc.status_id:2!null)\n" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ ci.movie_id:19!null\n" + + " │ └─ cc.movie_id:4\n" + + " ├─ TableAlias(cc)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: complete_cast\n" + + " │ └─ columns: [movie_id subject_id status_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(cc.movie_id:4)\n" + + " ├─ right-key: TUPLE(ci.movie_id:12!null)\n" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ mi.movie_id:7!null\n" + + " │ └─ mi_idx.movie_id:25!null\n" + + " ├─ InnerJoin\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" + + " │ │ ├─ it1.id:10!null\n" + + " │ │ └─ mi.info_type_id:8!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" + + " │ └─ 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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mi.movie_id:7!null)\n" + + " ├─ right-key: TUPLE(mi_idx.movie_id:13!null)\n" + + " └─ HashJoin\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" + + " │ ├─ mi_idx.movie_id:25!null\n" + + " │ └─ mk.movie_id:21!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:12!null\n" + + " │ │ └─ mk.movie_id:21!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ t.id:12!null\n" + + " │ │ │ └─ ci.movie_id:19!null\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ AND\n" + + " │ │ │ │ ├─ GreaterThan\n" + + " │ │ │ │ │ ├─ t.production_year:2\n" + + " │ │ │ │ │ └─ 2000 (int)\n" + + " │ │ │ │ └─ Or\n" + + " │ │ │ │ ├─ Or\n" + + " │ │ │ │ │ ├─ t.title LIKE '%Freddy%'\n" + + " │ │ │ │ │ └─ t.title LIKE '%Jason%'\n" + + " │ │ │ │ └─ AND\n" + + " │ │ │ │ ├─ GreaterThanOrEqual\n" + + " │ │ │ │ │ ├─ t.title:1!null\n" + + " │ │ │ │ │ └─ Saw (longtext)\n" + + " │ │ │ │ └─ LessThanOrEqual\n" + + " │ │ │ │ ├─ t.title:1!null\n" + + " │ │ │ │ └─ Sawÿ (longtext)\n" + + " │ │ │ └─ TableAlias(t)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: title\n" + + " │ │ │ └─ columns: [id title production_year]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ n.id:15!null\n" + + " │ │ │ └─ ci.person_id:18!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" + + " │ │ └─ 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" + + " │ │ ├─ k.id:23!null\n" + + " │ │ └─ mk.keyword_id:22!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mk.movie_id:21!null)\n" + + " ├─ right-key: TUPLE(mi_idx.movie_id:0!null)\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" + + " │ ├─ it2.id:28!null\n" + + " │ └─ mi_idx.info_type_id:26!null\n" + + " ├─ TableAlias(mi_idx)\n" + + " │ └─ ProcessTable\n" + " │ └─ Table\n" + - " │ ├─ name: comp_cast_type\n" + - " │ ├─ columns: [id kind]\n" + - " │ ├─ colSet: (5,6)\n" + - " │ └─ tableId: 2\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + + " │ ├─ name: movie_info_idx\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: 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" + "", 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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + - " ├─ (((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = cc.movie_id))\n" + + " └─ HashJoin\n" + + " ├─ (cct1.id = cc.subject_id)\n" + " ├─ Filter\n" + - " │ ├─ ((t.production_year > 2000) AND ((t.title LIKE '%Freddy%' OR t.title LIKE '%Jason%') OR ((t.title >= 'Saw') AND (t.title <= 'Sawÿ'))))\n" + - " │ └─ TableAlias(t)\n" + + " │ ├─ (cct1.kind HASH IN ('cast', 'crew'))\n" + + " │ └─ TableAlias(cct1)\n" + " │ └─ Table\n" + - " │ ├─ 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" + + " │ ├─ name: comp_cast_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (cct1.id)\n" + + " ├─ right-key: (cc.subject_id)\n" + + " └─ HashJoin\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" + + " └─ HashLookup\n" + + " ├─ left-key: (cct2.id)\n" + + " ├─ right-key: (cc.status_id)\n" + + " └─ HashJoin\n" + + " ├─ (ci.movie_id = cc.movie_id)\n" + + " ├─ TableAlias(cc)\n" + + " │ └─ Table\n" + + " │ ├─ name: complete_cast\n" + + " │ └─ columns: [movie_id subject_id status_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (cc.movie_id)\n" + + " ├─ right-key: (ci.movie_id)\n" + + " └─ HashJoin\n" + + " ├─ (mi.movie_id = mi_idx.movie_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it1.info = 'genres')\n" + + " │ └─ TableAlias(it1)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id)\n" + + " ├─ right-key: (mi_idx.movie_id)\n" + + " └─ HashJoin\n" + + " ├─ (mi_idx.movie_id = mk.movie_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (t.id = ci.movie_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ ((t.production_year > 2000) AND ((t.title LIKE '%Freddy%' OR t.title LIKE '%Jason%') OR ((t.title >= 'Saw') AND (t.title <= 'Sawÿ'))))\n" + + " │ │ │ └─ TableAlias(t)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ 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" + + " │ │ └─ 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" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + + " └─ HashLookup\n" + + " ├─ left-key: (mk.movie_id)\n" + + " ├─ right-key: (mi_idx.movie_id)\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" + + " ├─ (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" + + " └─ Filter\n" + + " ├─ (it2.info = 'votes')\n" + + " └─ TableAlias(it2)\n" + + " └─ Table\n" + + " ├─ name: info_type\n" + + " └─ columns: [id info]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + - " ├─ (((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = cc.movie_id))\n" + + " └─ HashJoin\n" + + " ├─ (cct1.id = cc.subject_id)\n" + " ├─ Filter\n" + - " │ ├─ ((t.production_year > 2000) AND ((t.title LIKE '%Freddy%' OR t.title LIKE '%Jason%') OR ((t.title >= 'Saw') AND (t.title <= 'Sawÿ'))))\n" + - " │ └─ TableAlias(t)\n" + + " │ ├─ (cct1.kind HASH IN ('cast', 'crew'))\n" + + " │ └─ TableAlias(cct1)\n" + " │ └─ Table\n" + - " │ ├─ 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" + + " │ ├─ name: comp_cast_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (cct1.id)\n" + + " ├─ right-key: (cc.subject_id)\n" + + " └─ HashJoin\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" + + " └─ HashLookup\n" + + " ├─ left-key: (cct2.id)\n" + + " ├─ right-key: (cc.status_id)\n" + + " └─ HashJoin\n" + + " ├─ (ci.movie_id = cc.movie_id)\n" + + " ├─ TableAlias(cc)\n" + + " │ └─ Table\n" + + " │ ├─ name: complete_cast\n" + + " │ └─ columns: [movie_id subject_id status_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (cc.movie_id)\n" + + " ├─ right-key: (ci.movie_id)\n" + + " └─ HashJoin\n" + + " ├─ (mi.movie_id = mi_idx.movie_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it1.info = 'genres')\n" + + " │ └─ TableAlias(it1)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id)\n" + + " ├─ right-key: (mi_idx.movie_id)\n" + + " └─ HashJoin\n" + + " ├─ (mi_idx.movie_id = mk.movie_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (t.id = ci.movie_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ ((t.production_year > 2000) AND ((t.title LIKE '%Freddy%' OR t.title LIKE '%Jason%') OR ((t.title >= 'Saw') AND (t.title <= 'Sawÿ'))))\n" + + " │ │ │ └─ TableAlias(t)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ 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" + + " │ │ └─ 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" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + + " └─ HashLookup\n" + + " ├─ left-key: (mk.movie_id)\n" + + " ├─ right-key: (mi_idx.movie_id)\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" + + " ├─ (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" + + " └─ Filter\n" + + " ├─ (it2.info = 'votes')\n" + + " └─ TableAlias(it2)\n" + + " └─ Table\n" + + " ├─ name: info_type\n" + + " └─ columns: [id info]\n" + "", }, { @@ -24566,367 +25607,375 @@ WHERE cct1.kind = 'cast' ExpectedPlan: "Project\n" + " ├─ columns: [min(mi.info):0!null as movie_budget, min(mi_idx.info):1!null as movie_votes, min(n.name):2!null as writer, min(t.title):3!null as complete_violent_movie]\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:9!null), MIN(mi_idx.info:26!null), MIN(n.name:15!null), MIN(t.title:13!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + - " ├─ AND\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" + - " │ │ │ │ └─ mi_idx.movie_id:7!null\n" + - " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ ci.movie_id:20!null\n" + - " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mk.movie_id:5!null\n" + - " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + - " │ └─ cc.movie_id:26\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" + - " │ ├─ 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" + - " │ │ │ ├─ 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" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ cct1.id:0!null\n" + + " │ └─ cc.subject_id:5!null\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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(cct1.id:0!null)\n" + + " ├─ right-key: TUPLE(cc.subject_id:3!null)\n" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ cct2.id:2!null\n" + + " │ └─ cc.status_id:6!null\n" + + " ├─ Filter\n" + + " │ ├─ Eq\n" + + " │ │ ├─ cct2.kind:1!null\n" + + " │ │ └─ complete+verified (longtext)\n" + + " │ └─ TableAlias(cct2)\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" + + " │ ├─ name: comp_cast_type\n" + + " │ ├─ columns: [id kind]\n" + + " │ ├─ colSet: (7,8)\n" + + " │ └─ tableId: 3\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(cct2.id:2!null)\n" + + " ├─ right-key: TUPLE(cc.status_id:2!null)\n" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ ci.movie_id:18!null\n" + + " │ └─ cc.movie_id:4\n" + + " ├─ TableAlias(cc)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: complete_cast\n" + + " │ └─ columns: [movie_id subject_id status_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(cc.movie_id:4)\n" + + " ├─ right-key: TUPLE(ci.movie_id:11!null)\n" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ mi.movie_id:7!null\n" + + " │ └─ mi_idx.movie_id:24!null\n" + + " ├─ InnerJoin\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" + + " │ │ ├─ it1.id:10!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" + + " │ └─ 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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mi.movie_id:7!null)\n" + + " ├─ right-key: TUPLE(mi_idx.movie_id:12!null)\n" + + " └─ HashJoin\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" + + " │ ├─ mi_idx.movie_id:24!null\n" + + " │ └─ mk.movie_id:20!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:12!null\n" + + " │ │ └─ mk.movie_id:20!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ t.id:12!null\n" + + " │ │ │ └─ ci.movie_id:18!null\n" + + " │ │ ├─ TableAlias(t)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: title\n" + + " │ │ │ └─ columns: [id title]\n" + + " │ │ └─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ n.id:14!null\n" + + " │ │ │ └─ ci.person_id:17!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" + + " │ │ └─ 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" + + " │ │ ├─ k.id:22!null\n" + + " │ │ └─ mk.keyword_id:21!null\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mk.movie_id:20!null)\n" + + " ├─ right-key: TUPLE(mi_idx.movie_id:0!null)\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" + + " │ ├─ it2.id:27!null\n" + + " │ └─ mi_idx.info_type_id:25!null\n" + + " ├─ TableAlias(mi_idx)\n" + + " │ └─ ProcessTable\n" + " │ └─ Table\n" + - " │ ├─ name: comp_cast_type\n" + - " │ ├─ columns: [id kind]\n" + - " │ ├─ colSet: (5,6)\n" + - " │ └─ tableId: 2\n" + - " └─ TableAlias(cc)\n" + - " └─ ProcessTable\n" + + " │ ├─ name: movie_info_idx\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: 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" + "", 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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + - " ├─ (((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = cc.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " └─ HashJoin\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" + + " └─ HashLookup\n" + + " ├─ left-key: (cct1.id)\n" + + " ├─ right-key: (cc.subject_id)\n" + + " └─ HashJoin\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" + + " └─ HashLookup\n" + + " ├─ left-key: (cct2.id)\n" + + " ├─ right-key: (cc.status_id)\n" + + " └─ HashJoin\n" + + " ├─ (ci.movie_id = cc.movie_id)\n" + + " ├─ TableAlias(cc)\n" + + " │ └─ Table\n" + + " │ ├─ name: complete_cast\n" + + " │ └─ columns: [movie_id subject_id status_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (cc.movie_id)\n" + + " ├─ right-key: (ci.movie_id)\n" + + " └─ HashJoin\n" + + " ├─ (mi.movie_id = mi_idx.movie_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it1.info = 'genres')\n" + + " │ └─ TableAlias(it1)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id)\n" + + " ├─ right-key: (mi_idx.movie_id)\n" + + " └─ HashJoin\n" + + " ├─ (mi_idx.movie_id = mk.movie_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (t.id = ci.movie_id)\n" + + " │ │ ├─ TableAlias(t)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ 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" + + " │ │ └─ 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" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + + " └─ HashLookup\n" + + " ├─ left-key: (mk.movie_id)\n" + + " ├─ right-key: (mi_idx.movie_id)\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" + + " ├─ (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" + + " └─ Filter\n" + + " ├─ (it2.info = 'votes')\n" + + " └─ TableAlias(it2)\n" + + " └─ Table\n" + + " ├─ name: info_type\n" + + " └─ columns: [id info]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + - " ├─ (((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = cc.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + + " └─ HashJoin\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" + + " └─ HashLookup\n" + + " ├─ left-key: (cct1.id)\n" + + " ├─ right-key: (cc.subject_id)\n" + + " └─ HashJoin\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" + + " └─ HashLookup\n" + + " ├─ left-key: (cct2.id)\n" + + " ├─ right-key: (cc.status_id)\n" + + " └─ HashJoin\n" + + " ├─ (ci.movie_id = cc.movie_id)\n" + + " ├─ TableAlias(cc)\n" + + " │ └─ Table\n" + + " │ ├─ name: complete_cast\n" + + " │ └─ columns: [movie_id subject_id status_id]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (cc.movie_id)\n" + + " ├─ right-key: (ci.movie_id)\n" + + " └─ HashJoin\n" + + " ├─ (mi.movie_id = mi_idx.movie_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ Filter\n" + + " │ ├─ (it1.info = 'genres')\n" + + " │ └─ TableAlias(it1)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id)\n" + + " ├─ right-key: (mi_idx.movie_id)\n" + + " └─ HashJoin\n" + + " ├─ (mi_idx.movie_id = mk.movie_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.movie_id)\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (t.id = ci.movie_id)\n" + + " │ │ ├─ TableAlias(t)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ 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" + + " │ │ └─ 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" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + + " └─ HashLookup\n" + + " ├─ left-key: (mk.movie_id)\n" + + " ├─ right-key: (mi_idx.movie_id)\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" + + " ├─ (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" + + " └─ Filter\n" + + " ├─ (it2.info = 'votes')\n" + + " └─ TableAlias(it2)\n" + + " └─ Table\n" + + " ├─ name: info_type\n" + + " └─ columns: [id info]\n" + "", }, { @@ -24989,340 +26038,392 @@ WHERE ci.note IN ('(writer)', ExpectedPlan: "Project\n" + " ├─ columns: [min(mi.info):0!null as movie_budget, min(mi_idx.info):1!null as movie_votes, min(n.name):2!null as writer, min(t.title):3!null as violent_liongate_movie]\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:4!null), MIN(mi_idx.info:9!null), MIN(n.name:22!null), MIN(t.title:25!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + " │ │ │ ├─ AND\n" + " │ │ │ │ ├─ Eq\n" + - " │ │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ │ └─ mi.movie_id:10!null\n" + + " │ │ │ │ │ ├─ t.id:24!null\n" + + " │ │ │ │ │ └─ mi.movie_id:2!null\n" + " │ │ │ │ └─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + + " │ │ │ │ ├─ t.id:24!null\n" + " │ │ │ │ └─ mi_idx.movie_id:7!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ ci.movie_id:24!null\n" + + " │ │ │ ├─ t.id:24!null\n" + + " │ │ │ └─ ci.movie_id:19!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mk.movie_id:5!null\n" + + " │ │ ├─ t.id:24!null\n" + + " │ │ └─ mk.movie_id:14!null\n" + " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + - " │ └─ mc.movie_id:13!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:23!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" + - " │ ├─ AND\n" + - " │ │ ├─ AND\n" + - " │ │ │ ├─ AND\n" + - " │ │ │ │ ├─ Eq\n" + - " │ │ │ │ │ ├─ ci.movie_id:24!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" + - " │ │ └─ mc.movie_id:13!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" + - " └─ 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" + - " ├─ 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" + + " │ ├─ t.id:24!null\n" + + " │ └─ mc.movie_id:16!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ n.id:21!null\n" + + " │ │ └─ ci.person_id:18!null\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:0!null\n" + + " │ │ │ └─ mi_idx.info_type_id:8!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(it2.id:0!null)\n" + + " │ │ ├─ right-key: TUPLE(mi_idx.info_type_id:6!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:2!null\n" + + " │ │ │ │ └─ mc.movie_id:16!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mi.movie_id:2!null\n" + + " │ │ │ └─ mi_idx.movie_id:7!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ it1.id:5!null\n" + + " │ │ │ │ └─ mi.info_type_id:3!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" + + " │ │ │ └─ 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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(mi.movie_id:2!null, mi.movie_id:2!null)\n" + + " │ │ ├─ right-key: TUPLE(mc.movie_id:9!null, mi_idx.movie_id:0!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi_idx.movie_id:7!null\n" + + " │ │ │ │ └─ mc.movie_id:16!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mi_idx.movie_id:7!null\n" + + " │ │ │ └─ mk.movie_id:14!null\n" + + " │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(mi_idx.movie_id:7!null, mi_idx.movie_id:7!null)\n" + + " │ │ ├─ right-key: TUPLE(mc.movie_id:6!null, mk.movie_id:4!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ k.id:10!null\n" + + " │ │ │ └─ mk.keyword_id:15!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(k.id:10!null)\n" + + " │ │ ├─ right-key: TUPLE(mk.keyword_id:3!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn.id:12!null\n" + + " │ │ │ └─ mc.company_id:17!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(cn.id:12!null)\n" + + " │ │ ├─ right-key: TUPLE(mc.company_id:3!null)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mk.movie_id:14!null\n" + + " │ │ │ │ └─ mc.movie_id:16!null\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\n" + + " │ │ │ └─ TableAlias(mc)\n" + + " │ │ │ └─ ProcessTable\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:16!null]\n" + + " │ │ ├─ colSet: (1-7)\n" + + " │ │ ├─ tableId: 1\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: cast_info\n" + + " │ │ └─ columns: [person_id movie_id note]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ci.person_id:18!null)\n" + + " │ ├─ right-key: TUPLE(n.id:0!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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mi.movie_id:2!null, mi_idx.movie_id:7!null, ci.movie_id:19!null, mk.movie_id:14!null, mc.movie_id:16!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ TableAlias(t)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ 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 = 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" + - " ├─ ((((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" + - " ├─ 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" + - " └─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (it2.id = mi_idx.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it2.info = 'votes')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it2.id)\n" + + " │ │ ├─ right-key: (mi_idx.info_type_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ ((mi.movie_id = mc.movie_id) AND (mi.movie_id = mi_idx.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'genres')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (mi.movie_id, mi.movie_id)\n" + + " │ │ ├─ right-key: (mc.movie_id, mi_idx.movie_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ ((mi_idx.movie_id = mc.movie_id) AND (mi_idx.movie_id = mk.movie_id))\n" + + " │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (mi_idx.movie_id, mi_idx.movie_id)\n" + + " │ │ ├─ right-key: (mc.movie_id, mk.movie_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (k.id = mk.keyword_id)\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ ((cn.name >= 'Lionsgate') AND (cn.name <= 'Lionsgateÿ'))\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id name]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (cn.id)\n" + + " │ │ ├─ right-key: (mc.company_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mk.movie_id = mc.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\n" + + " │ │ │ └─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ (n.gender = 'm')\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, ci.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ 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 = 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" + - " ├─ ((((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" + - " ├─ 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" + - " └─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (it2.id = mi_idx.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it2.info = 'votes')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it2.id)\n" + + " │ │ ├─ right-key: (mi_idx.info_type_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ ((mi.movie_id = mc.movie_id) AND (mi.movie_id = mi_idx.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'genres')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (mi.movie_id, mi.movie_id)\n" + + " │ │ ├─ right-key: (mc.movie_id, mi_idx.movie_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ ((mi_idx.movie_id = mc.movie_id) AND (mi_idx.movie_id = mk.movie_id))\n" + + " │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (mi_idx.movie_id, mi_idx.movie_id)\n" + + " │ │ ├─ right-key: (mc.movie_id, mk.movie_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (k.id = mk.keyword_id)\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ ((cn.name >= 'Lionsgate') AND (cn.name <= 'Lionsgateÿ'))\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id name]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (cn.id)\n" + + " │ │ ├─ right-key: (mc.company_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mk.movie_id = mc.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\n" + + " │ │ │ └─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ (n.gender = 'm')\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, ci.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title]\n" + "", }, { @@ -25390,366 +26491,418 @@ WHERE ci.note IN ('(writer)', ExpectedPlan: "Project\n" + " ├─ columns: [min(mi.info):0!null as movie_budget, min(mi_idx.info):1!null as movie_votes, min(n.name):2!null as writer, min(t.title):3!null as violent_liongate_movie]\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:4!null), MIN(mi_idx.info:9!null), MIN(n.name:23!null), MIN(t.title:26!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + " │ │ │ ├─ AND\n" + " │ │ │ │ ├─ Eq\n" + - " │ │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ │ └─ mi.movie_id:11!null\n" + + " │ │ │ │ │ ├─ t.id:25!null\n" + + " │ │ │ │ │ └─ mi.movie_id:2!null\n" + " │ │ │ │ └─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ └─ mi_idx.movie_id:8!null\n" + + " │ │ │ │ ├─ t.id:25!null\n" + + " │ │ │ │ └─ mi_idx.movie_id:7!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ ci.movie_id:26!null\n" + + " │ │ │ ├─ t.id:25!null\n" + + " │ │ │ └─ ci.movie_id:20!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mk.movie_id:6!null\n" + + " │ │ ├─ t.id:25!null\n" + + " │ │ └─ mk.movie_id:14!null\n" + " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + - " │ └─ mc.movie_id:14!null\n" + - " ├─ Filter\n" + - " │ ├─ AND\n" + - " │ │ ├─ GreaterThan\n" + - " │ │ │ ├─ t.production_year:2\n" + - " │ │ │ └─ 2000 (int)\n" + - " │ │ └─ Or\n" + - " │ │ ├─ Or\n" + - " │ │ │ ├─ t.title LIKE '%Freddy%'\n" + - " │ │ │ └─ t.title LIKE '%Jason%'\n" + - " │ │ └─ AND\n" + - " │ │ ├─ GreaterThanOrEqual\n" + - " │ │ │ ├─ t.title:1!null\n" + - " │ │ │ └─ Saw (longtext)\n" + - " │ │ └─ LessThanOrEqual\n" + - " │ │ ├─ t.title:1!null\n" + - " │ │ └─ Sawÿ (longtext)\n" + - " │ └─ TableAlias(t)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title production_year]\n" + - " └─ InnerJoin\n" + - " ├─ Eq\n" + - " │ ├─ n.id:3!null\n" + - " │ └─ ci.person_id:25!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" + + " │ ├─ t.id:25!null\n" + + " │ └─ mc.movie_id:16!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ n.id:22!null\n" + + " │ │ └─ ci.person_id:19!null\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:0!null\n" + + " │ │ │ └─ mi_idx.info_type_id:8!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(it2.id:0!null)\n" + + " │ │ ├─ right-key: TUPLE(mi_idx.info_type_id:6!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:2!null\n" + + " │ │ │ │ └─ mc.movie_id:16!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mi.movie_id:2!null\n" + + " │ │ │ └─ mi_idx.movie_id:7!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ it1.id:5!null\n" + + " │ │ │ │ └─ mi.info_type_id:3!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" + + " │ │ │ └─ 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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(mi.movie_id:2!null, mi.movie_id:2!null)\n" + + " │ │ ├─ right-key: TUPLE(mc.movie_id:9!null, mi_idx.movie_id:0!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi_idx.movie_id:7!null\n" + + " │ │ │ │ └─ mc.movie_id:16!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mi_idx.movie_id:7!null\n" + + " │ │ │ └─ mk.movie_id:14!null\n" + + " │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(mi_idx.movie_id:7!null, mi_idx.movie_id:7!null)\n" + + " │ │ ├─ right-key: TUPLE(mc.movie_id:6!null, mk.movie_id:4!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ k.id:10!null\n" + + " │ │ │ └─ mk.keyword_id:15!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(k.id:10!null)\n" + + " │ │ ├─ right-key: TUPLE(mk.keyword_id:3!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn.id:12!null\n" + + " │ │ │ └─ mc.company_id:17!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(cn.id:12!null)\n" + + " │ │ ├─ right-key: TUPLE(mc.company_id:3!null)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mk.movie_id:14!null\n" + + " │ │ │ │ └─ mc.movie_id:16!null\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\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" + + " │ │ └─ 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:16!null]\n" + + " │ │ ├─ colSet: (1-7)\n" + + " │ │ ├─ tableId: 1\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: cast_info\n" + + " │ │ └─ columns: [person_id movie_id note]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ci.person_id:19!null)\n" + + " │ ├─ right-key: TUPLE(n.id:0!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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mi.movie_id:2!null, mi_idx.movie_id:7!null, ci.movie_id:20!null, mk.movie_id:14!null, mc.movie_id:16!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ Filter\n" + " ├─ AND\n" + - " │ ├─ AND\n" + - " │ │ ├─ AND\n" + - " │ │ │ ├─ AND\n" + - " │ │ │ │ ├─ Eq\n" + - " │ │ │ │ │ ├─ ci.movie_id:26!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" + - " │ │ └─ mc.movie_id:14!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" + - " └─ 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" + - " ├─ 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" + + " │ ├─ GreaterThan\n" + + " │ │ ├─ t.production_year:2\n" + + " │ │ └─ 2000 (int)\n" + + " │ └─ Or\n" + + " │ ├─ Or\n" + + " │ │ ├─ t.title LIKE '%Freddy%'\n" + + " │ │ └─ t.title LIKE '%Jason%'\n" + + " │ └─ AND\n" + + " │ ├─ GreaterThanOrEqual\n" + + " │ │ ├─ t.title:1!null\n" + + " │ │ └─ Saw (longtext)\n" + + " │ └─ LessThanOrEqual\n" + + " │ ├─ t.title:1!null\n" + + " │ └─ Sawÿ (longtext)\n" + + " └─ TableAlias(t)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " ├─ Filter\n" + - " │ ├─ ((t.production_year > 2000) AND ((t.title LIKE '%Freddy%' OR t.title LIKE '%Jason%') OR ((t.title >= 'Saw') AND (t.title <= 'Sawÿ'))))\n" + - " │ └─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ 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 = 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" + - " ├─ ((((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" + - " ├─ 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" + - " └─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (it2.id = mi_idx.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it2.info = 'votes')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it2.id)\n" + + " │ │ ├─ right-key: (mi_idx.info_type_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ ((mi.movie_id = mc.movie_id) AND (mi.movie_id = mi_idx.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'genres')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (mi.movie_id, mi.movie_id)\n" + + " │ │ ├─ right-key: (mc.movie_id, mi_idx.movie_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ ((mi_idx.movie_id = mc.movie_id) AND (mi_idx.movie_id = mk.movie_id))\n" + + " │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (mi_idx.movie_id, mi_idx.movie_id)\n" + + " │ │ ├─ right-key: (mc.movie_id, mk.movie_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (k.id = mk.keyword_id)\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ ((cn.name >= 'Lionsgate') AND (cn.name <= 'Lionsgateÿ'))\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id name]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (cn.id)\n" + + " │ │ ├─ right-key: (mc.company_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mk.movie_id = mc.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_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" + + " │ │ └─ 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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ (n.gender = 'm')\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, ci.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id, t.id)\n" + + " └─ Filter\n" + + " ├─ ((t.production_year > 2000) AND ((t.title LIKE '%Freddy%' OR t.title LIKE '%Jason%') OR ((t.title >= 'Saw') AND (t.title <= 'Sawÿ'))))\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " ├─ Filter\n" + - " │ ├─ ((t.production_year > 2000) AND ((t.title LIKE '%Freddy%' OR t.title LIKE '%Jason%') OR ((t.title >= 'Saw') AND (t.title <= 'Sawÿ'))))\n" + - " │ └─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ 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 = 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" + - " ├─ ((((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" + - " ├─ 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" + - " └─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (it2.id = mi_idx.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it2.info = 'votes')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it2.id)\n" + + " │ │ ├─ right-key: (mi_idx.info_type_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ ((mi.movie_id = mc.movie_id) AND (mi.movie_id = mi_idx.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'genres')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (mi.movie_id, mi.movie_id)\n" + + " │ │ ├─ right-key: (mc.movie_id, mi_idx.movie_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ ((mi_idx.movie_id = mc.movie_id) AND (mi_idx.movie_id = mk.movie_id))\n" + + " │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (mi_idx.movie_id, mi_idx.movie_id)\n" + + " │ │ ├─ right-key: (mc.movie_id, mk.movie_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (k.id = mk.keyword_id)\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ ((cn.name >= 'Lionsgate') AND (cn.name <= 'Lionsgateÿ'))\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id name]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (cn.id)\n" + + " │ │ ├─ right-key: (mc.company_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mk.movie_id = mc.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_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" + + " │ │ └─ 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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ Filter\n" + + " │ ├─ (n.gender = 'm')\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name gender]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, ci.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id, t.id)\n" + + " └─ Filter\n" + + " ├─ ((t.production_year > 2000) AND ((t.title LIKE '%Freddy%' OR t.title LIKE '%Jason%') OR ((t.title >= 'Saw') AND (t.title <= 'Sawÿ'))))\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title production_year]\n" + "", }, { @@ -25815,332 +26968,384 @@ WHERE ci.note IN ('(writer)', ExpectedPlan: "Project\n" + " ├─ columns: [min(mi.info):0!null as movie_budget, min(mi_idx.info):1!null as movie_votes, min(n.name):2!null as writer, min(t.title):3!null as violent_liongate_movie]\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:4!null), MIN(mi_idx.info:9!null), MIN(n.name:22!null), MIN(t.title:24!null)\n" + " ├─ group: \n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + " │ │ ├─ AND\n" + " │ │ │ ├─ AND\n" + " │ │ │ │ ├─ Eq\n" + - " │ │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ │ └─ mi.movie_id:9!null\n" + + " │ │ │ │ │ ├─ t.id:23!null\n" + + " │ │ │ │ │ └─ mi.movie_id:2!null\n" + " │ │ │ │ └─ Eq\n" + - " │ │ │ │ ├─ t.id:0!null\n" + - " │ │ │ │ └─ mi_idx.movie_id:6!null\n" + + " │ │ │ │ ├─ t.id:23!null\n" + + " │ │ │ │ └─ mi_idx.movie_id:7!null\n" + " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t.id:0!null\n" + - " │ │ │ └─ ci.movie_id:23!null\n" + + " │ │ │ ├─ t.id:23!null\n" + + " │ │ │ └─ ci.movie_id:19!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mk.movie_id:4!null\n" + + " │ │ ├─ t.id:23!null\n" + + " │ │ └─ mk.movie_id:14!null\n" + " │ └─ Eq\n" + - " │ ├─ t.id:0!null\n" + - " │ └─ mc.movie_id:12!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:22!null\n" + - " ├─ TableAlias(n)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ name: name\n" + - " │ └─ columns: [id name]\n" + - " └─ InnerJoin\n" + - " ├─ AND\n" + - " │ ├─ AND\n" + - " │ │ ├─ AND\n" + - " │ │ │ ├─ AND\n" + - " │ │ │ │ ├─ Eq\n" + - " │ │ │ │ │ ├─ ci.movie_id:23!null\n" + - " │ │ │ │ │ └─ mk.movie_id:4!null\n" + - " │ │ │ │ └─ Eq\n" + - " │ │ │ │ ├─ mi.movie_id:9!null\n" + - " │ │ │ │ └─ mk.movie_id:4!null\n" + - " │ │ │ └─ Eq\n" + - " │ │ │ ├─ mi_idx.movie_id:6!null\n" + - " │ │ │ └─ mk.movie_id:4!null\n" + - " │ │ └─ Eq\n" + - " │ │ ├─ mk.movie_id:4!null\n" + - " │ │ └─ mc.movie_id:12!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" + - " │ ├─ 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" + - " ├─ 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" + - "", - 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" + - " └─ GroupBy\n" + - " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + - " ├─ Grouping()\n" + - " └─ InnerJoin\n" + - " ├─ (((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " ├─ (n.id = ci.person_id)\n" + - " ├─ TableAlias(n)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + - " └─ 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" + - " ├─ 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" + - " └─ 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" + + " │ ├─ t.id:23!null\n" + + " │ └─ mc.movie_id:16!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ n.id:21!null\n" + + " │ │ └─ ci.person_id:18!null\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:0!null\n" + + " │ │ │ └─ mi_idx.info_type_id:8!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(it2.id:0!null)\n" + + " │ │ ├─ right-key: TUPLE(mi_idx.info_type_id:6!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi.movie_id:2!null\n" + + " │ │ │ │ └─ mc.movie_id:16!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mi.movie_id:2!null\n" + + " │ │ │ └─ mi_idx.movie_id:7!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ it1.id:5!null\n" + + " │ │ │ │ └─ mi.info_type_id:3!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" + + " │ │ │ └─ 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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(mi.movie_id:2!null, mi.movie_id:2!null)\n" + + " │ │ ├─ right-key: TUPLE(mc.movie_id:9!null, mi_idx.movie_id:0!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ AND\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mi_idx.movie_id:7!null\n" + + " │ │ │ │ └─ mc.movie_id:16!null\n" + + " │ │ │ └─ Eq\n" + + " │ │ │ ├─ mi_idx.movie_id:7!null\n" + + " │ │ │ └─ mk.movie_id:14!null\n" + + " │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(mi_idx.movie_id:7!null, mi_idx.movie_id:7!null)\n" + + " │ │ ├─ right-key: TUPLE(mc.movie_id:6!null, mk.movie_id:4!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ k.id:10!null\n" + + " │ │ │ └─ mk.keyword_id:15!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(k.id:10!null)\n" + + " │ │ ├─ right-key: TUPLE(mk.keyword_id:3!null)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn.id:12!null\n" + + " │ │ │ └─ mc.company_id:17!null\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(cn.id:12!null)\n" + + " │ │ ├─ right-key: TUPLE(mc.company_id:3!null)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ mk.movie_id:14!null\n" + + " │ │ │ │ └─ mc.movie_id:16!null\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ ProcessTable\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\n" + + " │ │ │ └─ TableAlias(mc)\n" + + " │ │ │ └─ ProcessTable\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:16!null]\n" + + " │ │ ├─ colSet: (1-7)\n" + + " │ │ ├─ tableId: 1\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: cast_info\n" + + " │ │ └─ columns: [person_id movie_id note]\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(ci.person_id:18!null)\n" + + " │ ├─ right-key: TUPLE(n.id:0!null)\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(mi.movie_id:2!null, mi_idx.movie_id:7!null, ci.movie_id:19!null, mk.movie_id:14!null, mc.movie_id:16!null)\n" + + " ├─ right-key: TUPLE(t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null, t.id:0!null)\n" + + " └─ TableAlias(t)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title]\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" + + " └─ GroupBy\n" + + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + + " ├─ Grouping()\n" + + " └─ HashJoin\n" + + " ├─ (((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (it2.id = mi_idx.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it2.info = 'votes')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it2.id)\n" + + " │ │ ├─ right-key: (mi_idx.info_type_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ ((mi.movie_id = mc.movie_id) AND (mi.movie_id = mi_idx.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'genres')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (mi.movie_id, mi.movie_id)\n" + + " │ │ ├─ right-key: (mc.movie_id, mi_idx.movie_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ ((mi_idx.movie_id = mc.movie_id) AND (mi_idx.movie_id = mk.movie_id))\n" + + " │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (mi_idx.movie_id, mi_idx.movie_id)\n" + + " │ │ ├─ right-key: (mc.movie_id, mk.movie_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (k.id = mk.keyword_id)\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ ((cn.name >= 'Lionsgate') AND (cn.name <= 'Lionsgateÿ'))\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id name]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (cn.id)\n" + + " │ │ ├─ right-key: (mc.company_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mk.movie_id = mc.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\n" + + " │ │ │ └─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, ci.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title]\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" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(mi.info), MIN(mi_idx.info), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ InnerJoin\n" + + " └─ HashJoin\n" + " ├─ (((((t.id = mi.movie_id) AND (t.id = mi_idx.movie_id)) AND (t.id = ci.movie_id)) AND (t.id = mk.movie_id)) AND (t.id = mc.movie_id))\n" + - " ├─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title]\n" + - " └─ InnerJoin\n" + - " ├─ (n.id = ci.person_id)\n" + - " ├─ TableAlias(n)\n" + - " │ └─ Table\n" + - " │ ├─ 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" + - " └─ 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" + - " ├─ 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" + - " └─ 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" + + " ├─ HashJoin\n" + + " │ ├─ (n.id = ci.person_id)\n" + + " │ ├─ HashJoin\n" + + " │ │ ├─ (it2.id = mi_idx.info_type_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ (it2.info = 'votes')\n" + + " │ │ │ └─ TableAlias(it2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (it2.id)\n" + + " │ │ ├─ right-key: (mi_idx.info_type_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ ((mi.movie_id = mc.movie_id) AND (mi.movie_id = mi_idx.movie_id))\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (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" + + " │ │ │ └─ Filter\n" + + " │ │ │ ├─ (it1.info = 'genres')\n" + + " │ │ │ └─ TableAlias(it1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: info_type\n" + + " │ │ │ └─ columns: [id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (mi.movie_id, mi.movie_id)\n" + + " │ │ ├─ right-key: (mc.movie_id, mi_idx.movie_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ ((mi_idx.movie_id = mc.movie_id) AND (mi_idx.movie_id = mk.movie_id))\n" + + " │ │ ├─ TableAlias(mi_idx)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (mi_idx.movie_id, mi_idx.movie_id)\n" + + " │ │ ├─ right-key: (mc.movie_id, mk.movie_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (k.id = mk.keyword_id)\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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (k.id)\n" + + " │ │ ├─ right-key: (mk.keyword_id)\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ (cn.id = mc.company_id)\n" + + " │ │ ├─ Filter\n" + + " │ │ │ ├─ ((cn.name >= 'Lionsgate') AND (cn.name <= 'Lionsgateÿ'))\n" + + " │ │ │ └─ TableAlias(cn)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: company_name\n" + + " │ │ │ └─ columns: [id name]\n" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: (cn.id)\n" + + " │ │ ├─ right-key: (mc.company_id)\n" + + " │ │ └─ LookupJoin\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ (mk.movie_id = mc.movie_id)\n" + + " │ │ │ ├─ TableAlias(mk)\n" + + " │ │ │ │ └─ Table\n" + + " │ │ │ │ ├─ name: movie_keyword\n" + + " │ │ │ │ └─ columns: [movie_id keyword_id]\n" + + " │ │ │ └─ TableAlias(mc)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_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" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: (ci.person_id)\n" + + " │ ├─ right-key: (n.id)\n" + + " │ └─ TableAlias(n)\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ HashLookup\n" + + " ├─ left-key: (mi.movie_id, mi_idx.movie_id, ci.movie_id, mk.movie_id, mc.movie_id)\n" + + " ├─ right-key: (t.id, t.id, t.id, t.id, t.id)\n" + + " └─ TableAlias(t)\n" + + " └─ Table\n" + + " ├─ name: title\n" + + " └─ columns: [id title]\n" + "", }, { @@ -26166,29 +27371,47 @@ WHERE k.keyword ='10,000-mile-club' ExpectedPlan: "Project\n" + " ├─ columns: [min(lt.link):0!null as link_type, min(t1.title):1!null as first_movie, min(t2.title):2!null as second_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(lt.link:10!null), MIN(t1.title:3!null), MIN(t2.title:1!null)\n" + + " ├─ select: MIN(lt.link:6!null), MIN(t1.title:8!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" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title]\n" + + " ├─ AND\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ml.movie_id:2!null\n" + + " │ │ └─ t1.id:7!null\n" + + " │ └─ Eq\n" + + " │ ├─ mk.movie_id:9!null\n" + + " │ └─ ml.movie_id:2!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ml.linked_movie_id:3!null\n" + + " │ │ └─ t2.id:0!null\n" + + " │ ├─ TableAlias(t2)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ lt.id:5!null\n" + + " │ │ └─ ml.link_type_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" + + " │ └─ TableAlias(lt)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: link_type\n" + + " │ └─ columns: [id link]\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" + + " │ │ ├─ t1.id:7!null\n" + + " │ │ └─ mk.movie_id:9!null\n" + " │ └─ Eq\n" + - " │ ├─ mk.movie_id:7!null\n" + - " │ └─ t1.id:2!null\n" + + " │ ├─ mk.movie_id:9!null\n" + + " │ └─ t1.id:7!null\n" + " ├─ TableAlias(t1)\n" + " │ └─ Table\n" + " │ ├─ name: title\n" + @@ -26196,42 +27419,23 @@ WHERE k.keyword ='10,000-mile-club' " │ ├─ 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" + + " ├─ Eq\n" + + " │ ├─ mk.keyword_id:10!null\n" + + " │ └─ k.id:11!null\n" + + " ├─ TableAlias(mk)\n" + " │ └─ ProcessTable\n" + " │ └─ Table\n" + - " │ ├─ name: movie_link\n" + - " │ └─ columns: [movie_id linked_movie_id link_type_id]\n" + - " └─ InnerJoin\n" + + " │ ├─ name: movie_keyword\n" + + " │ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\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" + + " │ ├─ 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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(lt.link) as link_type, min(t1.title) as first_movie, min(t2.title) as second_movie]\n" + @@ -26239,40 +27443,41 @@ WHERE k.keyword ='10,000-mile-club' " ├─ 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" + + " ├─ ((ml.movie_id = t1.id) AND (mk.movie_id = ml.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ml.linked_movie_id = t2.id)\n" + + " │ ├─ TableAlias(t2)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (lt.id = ml.link_type_id)\n" + + " │ ├─ TableAlias(ml)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_link\n" + + " │ │ └─ columns: [movie_id linked_movie_id link_type_id]\n" + + " │ └─ TableAlias(lt)\n" + + " │ └─ Table\n" + + " │ ├─ name: link_type\n" + + " │ └─ columns: [id link]\n" + " └─ InnerJoin\n" + - " ├─ (((t1.id = mk.movie_id) AND (ml.movie_id = t1.id)) AND (mk.movie_id = t1.id))\n" + + " ├─ ((t1.id = mk.movie_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" + + " ├─ (mk.keyword_id = k.id)\n" + + " ├─ TableAlias(mk)\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" + + " │ ├─ name: movie_keyword\n" + + " │ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\n" + + " ├─ (k.keyword = '10,000-mile-club')\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " ├─ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(lt.link) as link_type, min(t1.title) as first_movie, min(t2.title) as second_movie]\n" + @@ -26280,40 +27485,41 @@ WHERE k.keyword ='10,000-mile-club' " ├─ 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" + + " ├─ ((ml.movie_id = t1.id) AND (mk.movie_id = ml.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ml.linked_movie_id = t2.id)\n" + + " │ ├─ TableAlias(t2)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (lt.id = ml.link_type_id)\n" + + " │ ├─ TableAlias(ml)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_link\n" + + " │ │ └─ columns: [movie_id linked_movie_id link_type_id]\n" + + " │ └─ TableAlias(lt)\n" + + " │ └─ Table\n" + + " │ ├─ name: link_type\n" + + " │ └─ columns: [id link]\n" + " └─ InnerJoin\n" + - " ├─ (((t1.id = mk.movie_id) AND (ml.movie_id = t1.id)) AND (mk.movie_id = t1.id))\n" + + " ├─ ((t1.id = mk.movie_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" + + " ├─ (mk.keyword_id = k.id)\n" + + " ├─ TableAlias(mk)\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" + + " │ ├─ name: movie_keyword\n" + + " │ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\n" + + " ├─ (k.keyword = '10,000-mile-club')\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " ├─ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", }, { @@ -26339,29 +27545,47 @@ WHERE k.keyword ='character-name-in-title' ExpectedPlan: "Project\n" + " ├─ columns: [min(lt.link):0!null as link_type, min(t1.title):1!null as first_movie, min(t2.title):2!null as second_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(lt.link:10!null), MIN(t1.title:3!null), MIN(t2.title:1!null)\n" + + " ├─ select: MIN(lt.link:6!null), MIN(t1.title:8!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" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title]\n" + + " ├─ AND\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ml.movie_id:2!null\n" + + " │ │ └─ t1.id:7!null\n" + + " │ └─ Eq\n" + + " │ ├─ mk.movie_id:9!null\n" + + " │ └─ ml.movie_id:2!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ml.linked_movie_id:3!null\n" + + " │ │ └─ t2.id:0!null\n" + + " │ ├─ TableAlias(t2)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ lt.id:5!null\n" + + " │ │ └─ ml.link_type_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" + + " │ └─ TableAlias(lt)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: link_type\n" + + " │ └─ columns: [id link]\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" + + " │ │ ├─ t1.id:7!null\n" + + " │ │ └─ mk.movie_id:9!null\n" + " │ └─ Eq\n" + - " │ ├─ mk.movie_id:7!null\n" + - " │ └─ t1.id:2!null\n" + + " │ ├─ mk.movie_id:9!null\n" + + " │ └─ t1.id:7!null\n" + " ├─ TableAlias(t1)\n" + " │ └─ Table\n" + " │ ├─ name: title\n" + @@ -26369,42 +27593,23 @@ WHERE k.keyword ='character-name-in-title' " │ ├─ 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" + + " ├─ Eq\n" + + " │ ├─ mk.keyword_id:10!null\n" + + " │ └─ k.id:11!null\n" + + " ├─ TableAlias(mk)\n" + " │ └─ ProcessTable\n" + " │ └─ Table\n" + - " │ ├─ name: movie_link\n" + - " │ └─ columns: [movie_id linked_movie_id link_type_id]\n" + - " └─ InnerJoin\n" + + " │ ├─ name: movie_keyword\n" + + " │ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\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" + + " │ ├─ 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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(lt.link) as link_type, min(t1.title) as first_movie, min(t2.title) as second_movie]\n" + @@ -26412,40 +27617,41 @@ WHERE k.keyword ='character-name-in-title' " ├─ 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" + + " ├─ ((ml.movie_id = t1.id) AND (mk.movie_id = ml.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ml.linked_movie_id = t2.id)\n" + + " │ ├─ TableAlias(t2)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (lt.id = ml.link_type_id)\n" + + " │ ├─ TableAlias(ml)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_link\n" + + " │ │ └─ columns: [movie_id linked_movie_id link_type_id]\n" + + " │ └─ TableAlias(lt)\n" + + " │ └─ Table\n" + + " │ ├─ name: link_type\n" + + " │ └─ columns: [id link]\n" + " └─ InnerJoin\n" + - " ├─ (((t1.id = mk.movie_id) AND (ml.movie_id = t1.id)) AND (mk.movie_id = t1.id))\n" + + " ├─ ((t1.id = mk.movie_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" + + " ├─ (mk.keyword_id = k.id)\n" + + " ├─ TableAlias(mk)\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" + + " │ ├─ name: movie_keyword\n" + + " │ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\n" + + " ├─ (k.keyword = 'character-name-in-title')\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " ├─ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(lt.link) as link_type, min(t1.title) as first_movie, min(t2.title) as second_movie]\n" + @@ -26453,40 +27659,41 @@ WHERE k.keyword ='character-name-in-title' " ├─ 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" + + " ├─ ((ml.movie_id = t1.id) AND (mk.movie_id = ml.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ml.linked_movie_id = t2.id)\n" + + " │ ├─ TableAlias(t2)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (lt.id = ml.link_type_id)\n" + + " │ ├─ TableAlias(ml)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_link\n" + + " │ │ └─ columns: [movie_id linked_movie_id link_type_id]\n" + + " │ └─ TableAlias(lt)\n" + + " │ └─ Table\n" + + " │ ├─ name: link_type\n" + + " │ └─ columns: [id link]\n" + " └─ InnerJoin\n" + - " ├─ (((t1.id = mk.movie_id) AND (ml.movie_id = t1.id)) AND (mk.movie_id = t1.id))\n" + + " ├─ ((t1.id = mk.movie_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" + + " ├─ (mk.keyword_id = k.id)\n" + + " ├─ TableAlias(mk)\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" + + " │ ├─ name: movie_keyword\n" + + " │ └─ columns: [movie_id keyword_id]\n" + + " └─ Filter\n" + + " ├─ (k.keyword = 'character-name-in-title')\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " ├─ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", }, { @@ -26545,202 +27752,187 @@ WHERE cn1.country_code = '[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn1.name):0!null as first_company, min(cn2.name):1!null as second_company, min(mi_idx1.info):2!null as first_rating, min(mi_idx2.info):3!null as second_rating, min(t1.title):4!null as first_movie, min(t2.title):5!null as second_movie]\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:31!null), MIN(cn2.name:29!null), MIN(mi_idx1.info:23!null), MIN(mi_idx2.info:18!null), MIN(t1.title:7!null), MIN(t2.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + - " │ │ ├─ AND\n" + - " │ │ │ ├─ Eq\n" + - " │ │ │ │ ├─ t2.id:0!null\n" + - " │ │ │ │ └─ ml.linked_movie_id:8!null\n" + - " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t2.id:0!null\n" + - " │ │ │ └─ mi_idx2.movie_id:10!null\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ t2.id:0!null\n" + + " │ │ │ └─ ml.linked_movie_id:12!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ kt2.id:22!null\n" + - " │ │ └─ t2.kind_id:2!null\n" + + " │ │ ├─ t2.id:0!null\n" + + " │ │ └─ mi_idx2.movie_id:16!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" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title kind_id production_year]\n" + + " │ └─ mc2.movie_id:26!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ kt2.id:4!null\n" + + " │ │ └─ t2.kind_id:2!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" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title kind_id production_year]\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" + " └─ 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" + + " │ │ │ ├─ t1.id:6!null\n" + + " │ │ │ └─ ml.movie_id:11!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ kt1.id:24!null\n" + - " │ │ └─ t1.kind_id:6!null\n" + + " │ │ ├─ t1.id:6!null\n" + + " │ │ └─ mi_idx1.movie_id:21!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" + + " │ ├─ t1.id:6!null\n" + + " │ └─ mc1.movie_id:33!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ kt1.id:9!null\n" + + " │ │ └─ t1.kind_id:8!null\n" + + " │ ├─ TableAlias(t1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ ├─ columns: [id title kind_id]\n" + + " │ │ ├─ colSet: (49-60)\n" + + " │ │ └─ tableId: 13\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" + " └─ InnerJoin\n" + " ├─ AND\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mi_idx1.movie_id:21!null\n" + + " │ │ └─ mc1.movie_id:33!null\n" + + " │ └─ Eq\n" + + " │ ├─ ml.movie_id:11!null\n" + + " │ └─ mc1.movie_id:33!null\n" + + " ├─ InnerJoin\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.movie_id:11!null\n" + + " │ │ │ └─ mi_idx1.movie_id:21!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" + + " │ │ ├─ ml.linked_movie_id:12!null\n" + + " │ │ └─ mi_idx2.movie_id:16!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ lt.id:14!null\n" + + " │ │ │ └─ ml.link_type_id:13!null\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id linked_movie_id link_type_id]\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" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:19!null\n" + + " │ │ │ └─ mi_idx2.info_type_id:17!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" + + " │ │ └─ 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" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it1.id:24!null\n" + + " │ │ │ └─ mi_idx1.info_type_id:22!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" + + " │ │ └─ 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" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn2.id:28!null\n" + + " │ │ │ └─ mc2.company_id:27!null\n" + + " │ │ ├─ TableAlias(mc2)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id]\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" + + " └─ TableAlias(mc1)\n" + + " └─ Table\n" + + " ├─ name: movie_companies\n" + + " ├─ columns: [movie_id company_id]\n" + + " ├─ colSet: (25-29)\n" + + " └─ tableId: 8\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" + @@ -26748,97 +27940,100 @@ WHERE cn1.country_code = '[us]' " ├─ 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" + + " ├─ (((t2.id = ml.linked_movie_id) AND (t2.id = mi_idx2.movie_id)) AND (t2.id = mc2.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (kt2.id = t2.kind_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" + + " │ └─ Filter\n" + + " │ ├─ (kt2.kind HASH IN ('tv series'))\n" + + " │ └─ TableAlias(kt2)\n" + + " │ └─ Table\n" + + " │ ├─ name: kind_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ InnerJoin\n" + + " ├─ (((t1.id = ml.movie_id) AND (t1.id = mi_idx1.movie_id)) AND (t1.id = mc1.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (kt1.id = t1.kind_id)\n" + + " │ ├─ TableAlias(t1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title kind_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (kt1.kind HASH IN ('tv series'))\n" + + " │ └─ TableAlias(kt1)\n" + + " │ └─ Table\n" + + " │ ├─ name: kind_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ InnerJoin\n" + + " ├─ ((mi_idx1.movie_id = mc1.movie_id) AND (ml.movie_id = mc1.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ ((ml.movie_id = mi_idx1.movie_id) AND (ml.linked_movie_id = mi_idx2.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id linked_movie_id link_type_id]\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" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (it2.id = mi_idx2.info_type_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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it2.info = 'rating')\n" + + " │ │ └─ TableAlias(it2)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (it1.id = mi_idx1.info_type_id)\n" + + " │ │ ├─ TableAlias(mi_idx1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it1.info = 'rating')\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn2.id = mc2.company_id)\n" + + " │ │ ├─ TableAlias(mc2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id]\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" + + " └─ TableAlias(mc1)\n" + + " └─ Table\n" + + " ├─ name: movie_companies\n" + + " └─ columns: [movie_id company_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" + @@ -26846,97 +28041,100 @@ WHERE cn1.country_code = '[us]' " ├─ 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" + + " ├─ (((t2.id = ml.linked_movie_id) AND (t2.id = mi_idx2.movie_id)) AND (t2.id = mc2.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (kt2.id = t2.kind_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" + + " │ └─ Filter\n" + + " │ ├─ (kt2.kind HASH IN ('tv series'))\n" + + " │ └─ TableAlias(kt2)\n" + + " │ └─ Table\n" + + " │ ├─ name: kind_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ InnerJoin\n" + + " ├─ (((t1.id = ml.movie_id) AND (t1.id = mi_idx1.movie_id)) AND (t1.id = mc1.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (kt1.id = t1.kind_id)\n" + + " │ ├─ TableAlias(t1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title kind_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (kt1.kind HASH IN ('tv series'))\n" + + " │ └─ TableAlias(kt1)\n" + + " │ └─ Table\n" + + " │ ├─ name: kind_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ InnerJoin\n" + + " ├─ ((mi_idx1.movie_id = mc1.movie_id) AND (ml.movie_id = mc1.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ ((ml.movie_id = mi_idx1.movie_id) AND (ml.linked_movie_id = mi_idx2.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id linked_movie_id link_type_id]\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" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (it2.id = mi_idx2.info_type_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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it2.info = 'rating')\n" + + " │ │ └─ TableAlias(it2)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (it1.id = mi_idx1.info_type_id)\n" + + " │ │ ├─ TableAlias(mi_idx1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it1.info = 'rating')\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn2.id = mc2.company_id)\n" + + " │ │ ├─ TableAlias(mc2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id]\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" + + " └─ TableAlias(mc1)\n" + + " └─ Table\n" + + " ├─ name: movie_companies\n" + + " └─ columns: [movie_id company_id]\n" + "", }, { @@ -26993,196 +28191,181 @@ WHERE cn1.country_code = '[nl]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn1.name):0!null as first_company, min(cn2.name):1!null as second_company, min(mi_idx1.info):2!null as first_rating, min(mi_idx2.info):3!null as second_rating, min(t1.title):4!null as first_movie, min(t2.title):5!null as second_movie]\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:31!null), MIN(cn2.name:29!null), MIN(mi_idx1.info:23!null), MIN(mi_idx2.info:18!null), MIN(t1.title:7!null), MIN(t2.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + - " │ │ ├─ AND\n" + - " │ │ │ ├─ Eq\n" + - " │ │ │ │ ├─ t2.id:0!null\n" + - " │ │ │ │ └─ ml.linked_movie_id:8!null\n" + - " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t2.id:0!null\n" + - " │ │ │ └─ mi_idx2.movie_id:10!null\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ t2.id:0!null\n" + + " │ │ │ └─ ml.linked_movie_id:12!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ kt2.id:22!null\n" + - " │ │ └─ t2.kind_id:2!null\n" + + " │ │ ├─ t2.id:0!null\n" + + " │ │ └─ mi_idx2.movie_id:16!null\n" + " │ └─ Eq\n" + " │ ├─ t2.id:0!null\n" + - " │ └─ mc2.movie_id:16!null\n" + - " ├─ Filter\n" + + " │ └─ mc2.movie_id:26!null\n" + + " ├─ InnerJoin\n" + " │ ├─ Eq\n" + - " │ │ ├─ t2.production_year:3\n" + - " │ │ └─ 2007 (int)\n" + - " │ └─ TableAlias(t2)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title kind_id production_year]\n" + + " │ │ ├─ kt2.id:4!null\n" + + " │ │ └─ t2.kind_id:2!null\n" + + " │ ├─ Filter\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ t2.production_year:3\n" + + " │ │ │ └─ 2007 (int)\n" + + " │ │ └─ TableAlias(t2)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title kind_id production_year]\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" + " └─ 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" + + " │ │ │ ├─ t1.id:6!null\n" + + " │ │ │ └─ ml.movie_id:11!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ kt1.id:24!null\n" + - " │ │ └─ t1.kind_id:6!null\n" + + " │ │ ├─ t1.id:6!null\n" + + " │ │ └─ mi_idx1.movie_id:21!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" + + " │ ├─ t1.id:6!null\n" + + " │ └─ mc1.movie_id:33!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ kt1.id:9!null\n" + + " │ │ └─ t1.kind_id:8!null\n" + + " │ ├─ TableAlias(t1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ ├─ columns: [id title kind_id]\n" + + " │ │ ├─ colSet: (49-60)\n" + + " │ │ └─ tableId: 13\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" + " └─ InnerJoin\n" + " ├─ AND\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mi_idx1.movie_id:21!null\n" + + " │ │ └─ mc1.movie_id:33!null\n" + + " │ └─ Eq\n" + + " │ ├─ ml.movie_id:11!null\n" + + " │ └─ mc1.movie_id:33!null\n" + + " ├─ InnerJoin\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.movie_id:11!null\n" + + " │ │ │ └─ mi_idx1.movie_id:21!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" + + " │ │ ├─ ml.linked_movie_id:12!null\n" + + " │ │ └─ mi_idx2.movie_id:16!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ lt.id:14!null\n" + + " │ │ │ └─ ml.link_type_id:13!null\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id linked_movie_id link_type_id]\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" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:19!null\n" + + " │ │ │ └─ mi_idx2.info_type_id:17!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" + + " │ │ └─ 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" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it1.id:24!null\n" + + " │ │ │ └─ mi_idx1.info_type_id:22!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" + + " │ │ └─ 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" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn2.id:28!null\n" + + " │ │ │ └─ mc2.company_id:27!null\n" + + " │ │ ├─ TableAlias(mc2)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id]\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" + + " └─ TableAlias(mc1)\n" + + " └─ Table\n" + + " ├─ name: movie_companies\n" + + " ├─ columns: [movie_id company_id]\n" + + " ├─ colSet: (25-29)\n" + + " └─ tableId: 8\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" + @@ -27190,97 +28373,100 @@ WHERE cn1.country_code = '[nl]' " ├─ 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" + + " ├─ (((t2.id = ml.linked_movie_id) AND (t2.id = mi_idx2.movie_id)) AND (t2.id = mc2.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (kt2.id = t2.kind_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" + + " │ └─ Filter\n" + + " │ ├─ (kt2.kind HASH IN ('tv series'))\n" + + " │ └─ TableAlias(kt2)\n" + + " │ └─ Table\n" + + " │ ├─ name: kind_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ InnerJoin\n" + + " ├─ (((t1.id = ml.movie_id) AND (t1.id = mi_idx1.movie_id)) AND (t1.id = mc1.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (kt1.id = t1.kind_id)\n" + + " │ ├─ TableAlias(t1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title kind_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (kt1.kind HASH IN ('tv series'))\n" + + " │ └─ TableAlias(kt1)\n" + + " │ └─ Table\n" + + " │ ├─ name: kind_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ InnerJoin\n" + + " ├─ ((mi_idx1.movie_id = mc1.movie_id) AND (ml.movie_id = mc1.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ ((ml.movie_id = mi_idx1.movie_id) AND (ml.linked_movie_id = mi_idx2.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id linked_movie_id link_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (it2.id = mi_idx2.info_type_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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it2.info = 'rating')\n" + + " │ │ └─ TableAlias(it2)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (it1.id = mi_idx1.info_type_id)\n" + + " │ │ ├─ TableAlias(mi_idx1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it1.info = 'rating')\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn2.id = mc2.company_id)\n" + + " │ │ ├─ TableAlias(mc2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id]\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" + + " └─ TableAlias(mc1)\n" + + " └─ Table\n" + + " ├─ name: movie_companies\n" + + " └─ columns: [movie_id company_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" + @@ -27288,97 +28474,100 @@ WHERE cn1.country_code = '[nl]' " ├─ 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" + + " ├─ (((t2.id = ml.linked_movie_id) AND (t2.id = mi_idx2.movie_id)) AND (t2.id = mc2.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (kt2.id = t2.kind_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" + + " │ └─ Filter\n" + + " │ ├─ (kt2.kind HASH IN ('tv series'))\n" + + " │ └─ TableAlias(kt2)\n" + + " │ └─ Table\n" + + " │ ├─ name: kind_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ InnerJoin\n" + + " ├─ (((t1.id = ml.movie_id) AND (t1.id = mi_idx1.movie_id)) AND (t1.id = mc1.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (kt1.id = t1.kind_id)\n" + + " │ ├─ TableAlias(t1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title kind_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (kt1.kind HASH IN ('tv series'))\n" + + " │ └─ TableAlias(kt1)\n" + + " │ └─ Table\n" + + " │ ├─ name: kind_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ InnerJoin\n" + + " ├─ ((mi_idx1.movie_id = mc1.movie_id) AND (ml.movie_id = mc1.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ ((ml.movie_id = mi_idx1.movie_id) AND (ml.linked_movie_id = mi_idx2.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id linked_movie_id link_type_id]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ lt.link LIKE '%follow%'\n" + + " │ │ └─ TableAlias(lt)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: link_type\n" + + " │ │ └─ columns: [id link]\n" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (it2.id = mi_idx2.info_type_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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it2.info = 'rating')\n" + + " │ │ └─ TableAlias(it2)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (it1.id = mi_idx1.info_type_id)\n" + + " │ │ ├─ TableAlias(mi_idx1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it1.info = 'rating')\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn2.id = mc2.company_id)\n" + + " │ │ ├─ TableAlias(mc2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id]\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" + + " └─ TableAlias(mc1)\n" + + " └─ Table\n" + + " ├─ name: movie_companies\n" + + " └─ columns: [movie_id company_id]\n" + "", }, { @@ -27439,203 +28628,188 @@ WHERE cn1.country_code != '[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(cn1.name):0!null as first_company, min(cn2.name):1!null as second_company, min(mi_idx1.info):2!null as first_rating, min(mi_idx2.info):3!null as second_rating, min(t1.title):4!null as first_movie, min(t2.title):5!null as second_movie]\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:31!null), MIN(cn2.name:29!null), MIN(mi_idx1.info:23!null), MIN(mi_idx2.info:18!null), MIN(t1.title:7!null), MIN(t2.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ AND\n" + - " │ │ ├─ AND\n" + - " │ │ │ ├─ Eq\n" + - " │ │ │ │ ├─ t2.id:0!null\n" + - " │ │ │ │ └─ ml.linked_movie_id:8!null\n" + - " │ │ │ └─ Eq\n" + - " │ │ │ ├─ t2.id:0!null\n" + - " │ │ │ └─ mi_idx2.movie_id:10!null\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ t2.id:0!null\n" + + " │ │ │ └─ ml.linked_movie_id:12!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ kt2.id:22!null\n" + - " │ │ └─ t2.kind_id:2!null\n" + + " │ │ ├─ t2.id:0!null\n" + + " │ │ └─ mi_idx2.movie_id:16!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" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title kind_id production_year]\n" + + " │ └─ mc2.movie_id:26!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ kt2.id:4!null\n" + + " │ │ └─ t2.kind_id:2!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" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title kind_id production_year]\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" + " └─ 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" + + " │ │ │ ├─ t1.id:6!null\n" + + " │ │ │ └─ ml.movie_id:11!null\n" + " │ │ └─ Eq\n" + - " │ │ ├─ kt1.id:24!null\n" + - " │ │ └─ t1.kind_id:6!null\n" + + " │ │ ├─ t1.id:6!null\n" + + " │ │ └─ mi_idx1.movie_id:21!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" + + " │ ├─ t1.id:6!null\n" + + " │ └─ mc1.movie_id:33!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ kt1.id:9!null\n" + + " │ │ └─ t1.kind_id:8!null\n" + + " │ ├─ TableAlias(t1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ ├─ columns: [id title kind_id]\n" + + " │ │ ├─ colSet: (49-60)\n" + + " │ │ └─ tableId: 13\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" + " └─ InnerJoin\n" + " ├─ AND\n" + + " │ ├─ Eq\n" + + " │ │ ├─ mi_idx1.movie_id:21!null\n" + + " │ │ └─ mc1.movie_id:33!null\n" + + " │ └─ Eq\n" + + " │ ├─ ml.movie_id:11!null\n" + + " │ └─ mc1.movie_id:33!null\n" + + " ├─ InnerJoin\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.movie_id:11!null\n" + + " │ │ │ └─ mi_idx1.movie_id:21!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" + + " │ │ ├─ ml.linked_movie_id:12!null\n" + + " │ │ └─ mi_idx2.movie_id:16!null\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ lt.id:14!null\n" + + " │ │ │ └─ ml.link_type_id:13!null\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id linked_movie_id link_type_id]\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" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it2.id:19!null\n" + + " │ │ │ └─ mi_idx2.info_type_id:17!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" + + " │ │ └─ 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" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it1.id:24!null\n" + + " │ │ │ └─ mi_idx1.info_type_id:22!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" + + " │ │ └─ 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" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ cn2.id:28!null\n" + + " │ │ │ └─ mc2.company_id:27!null\n" + + " │ │ ├─ TableAlias(mc2)\n" + + " │ │ │ └─ ProcessTable\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id]\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" + + " └─ TableAlias(mc1)\n" + + " └─ Table\n" + + " ├─ name: movie_companies\n" + + " ├─ columns: [movie_id company_id]\n" + + " ├─ colSet: (25-29)\n" + + " └─ tableId: 8\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" + @@ -27643,97 +28817,100 @@ WHERE cn1.country_code != '[us]' " ├─ 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" + + " ├─ (((t2.id = ml.linked_movie_id) AND (t2.id = mi_idx2.movie_id)) AND (t2.id = mc2.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (kt2.id = t2.kind_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" + + " │ └─ Filter\n" + + " │ ├─ (kt2.kind HASH IN ('tv series', 'episode'))\n" + + " │ └─ TableAlias(kt2)\n" + + " │ └─ Table\n" + + " │ ├─ name: kind_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ InnerJoin\n" + + " ├─ (((t1.id = ml.movie_id) AND (t1.id = mi_idx1.movie_id)) AND (t1.id = mc1.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (kt1.id = t1.kind_id)\n" + + " │ ├─ TableAlias(t1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title kind_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (kt1.kind HASH IN ('tv series', 'episode'))\n" + + " │ └─ TableAlias(kt1)\n" + + " │ └─ Table\n" + + " │ ├─ name: kind_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ InnerJoin\n" + + " ├─ ((mi_idx1.movie_id = mc1.movie_id) AND (ml.movie_id = mc1.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ ((ml.movie_id = mi_idx1.movie_id) AND (ml.linked_movie_id = mi_idx2.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id linked_movie_id link_type_id]\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" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (it2.id = mi_idx2.info_type_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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it2.info = 'rating')\n" + + " │ │ └─ TableAlias(it2)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (it1.id = mi_idx1.info_type_id)\n" + + " │ │ ├─ TableAlias(mi_idx1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it1.info = 'rating')\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn2.id = mc2.company_id)\n" + + " │ │ ├─ TableAlias(mc2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id]\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" + + " └─ TableAlias(mc1)\n" + + " └─ Table\n" + + " ├─ name: movie_companies\n" + + " └─ columns: [movie_id company_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" + @@ -27741,97 +28918,100 @@ WHERE cn1.country_code != '[us]' " ├─ 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" + + " ├─ (((t2.id = ml.linked_movie_id) AND (t2.id = mi_idx2.movie_id)) AND (t2.id = mc2.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (kt2.id = t2.kind_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" + + " │ └─ Filter\n" + + " │ ├─ (kt2.kind HASH IN ('tv series', 'episode'))\n" + + " │ └─ TableAlias(kt2)\n" + + " │ └─ Table\n" + + " │ ├─ name: kind_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ InnerJoin\n" + + " ├─ (((t1.id = ml.movie_id) AND (t1.id = mi_idx1.movie_id)) AND (t1.id = mc1.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (kt1.id = t1.kind_id)\n" + + " │ ├─ TableAlias(t1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title kind_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (kt1.kind HASH IN ('tv series', 'episode'))\n" + + " │ └─ TableAlias(kt1)\n" + + " │ └─ Table\n" + + " │ ├─ name: kind_type\n" + + " │ └─ columns: [id kind]\n" + + " └─ InnerJoin\n" + + " ├─ ((mi_idx1.movie_id = mc1.movie_id) AND (ml.movie_id = mc1.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ ((ml.movie_id = mi_idx1.movie_id) AND (ml.linked_movie_id = mi_idx2.movie_id))\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (lt.id = ml.link_type_id)\n" + + " │ │ ├─ TableAlias(ml)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_link\n" + + " │ │ │ └─ columns: [movie_id linked_movie_id link_type_id]\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" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (it2.id = mi_idx2.info_type_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" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it2.info = 'rating')\n" + + " │ │ └─ TableAlias(it2)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (it1.id = mi_idx1.info_type_id)\n" + + " │ │ ├─ TableAlias(mi_idx1)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_info_idx\n" + + " │ │ │ └─ columns: [movie_id info_type_id info]\n" + + " │ │ └─ Filter\n" + + " │ │ ├─ (it1.info = 'rating')\n" + + " │ │ └─ TableAlias(it1)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: info_type\n" + + " │ │ └─ columns: [id info]\n" + + " │ └─ CrossJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ (cn2.id = mc2.company_id)\n" + + " │ │ ├─ TableAlias(mc2)\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: movie_companies\n" + + " │ │ │ └─ columns: [movie_id company_id]\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" + + " └─ TableAlias(mc1)\n" + + " └─ Table\n" + + " ├─ name: movie_companies\n" + + " └─ columns: [movie_id company_id]\n" + "", }, { @@ -27865,50 +29045,49 @@ WHERE k.keyword LIKE '%sequel%' " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mi.movie_id:5!null\n" + + " │ │ ├─ mk.movie_id:5!null\n" + + " │ │ └─ mi.movie_id:3!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" + + " │ └─ mk.movie_id:5!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mi.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" + + " │ └─ 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" + - " │ │ ├─ 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" + + " ├─ Eq\n" + + " │ ├─ k.id:7!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" + - " │ ├─ 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" + + " └─ Filter\n" + + " ├─ k.keyword LIKE '%sequel%'\n" + + " └─ TableAlias(k)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(t.title) as movie_title]\n" + @@ -27916,32 +29095,33 @@ WHERE k.keyword LIKE '%sequel%' " ├─ 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" + + " ├─ ((mk.movie_id = mi.movie_id) AND (t.id = mk.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" + + " │ └─ 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" + - " ├─ ((mk.movie_id = mi.movie_id) AND (k.id = mk.keyword_id))\n" + + " ├─ (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" + + " └─ 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" + @@ -27949,32 +29129,33 @@ WHERE k.keyword LIKE '%sequel%' " ├─ 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" + + " ├─ ((mk.movie_id = mi.movie_id) AND (t.id = mk.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" + + " │ └─ 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" + - " ├─ ((mk.movie_id = mi.movie_id) AND (k.id = mk.keyword_id))\n" + + " ├─ (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" + + " └─ Filter\n" + + " ├─ k.keyword LIKE '%sequel%'\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " ├─ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", }, { @@ -28001,50 +29182,49 @@ WHERE k.keyword LIKE '%sequel%' " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mi.movie_id:5!null\n" + + " │ │ ├─ mk.movie_id:5!null\n" + + " │ │ └─ mi.movie_id:3!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" + + " │ └─ mk.movie_id:5!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mi.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" + + " │ └─ 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" + " └─ 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" + + " ├─ Eq\n" + + " │ ├─ k.id:7!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" + - " │ ├─ 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" + + " └─ Filter\n" + + " ├─ k.keyword LIKE '%sequel%'\n" + + " └─ TableAlias(k)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(t.title) as movie_title]\n" + @@ -28052,32 +29232,33 @@ WHERE k.keyword LIKE '%sequel%' " ├─ 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" + + " ├─ ((mk.movie_id = mi.movie_id) AND (t.id = mk.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" + + " │ └─ Filter\n" + + " │ ├─ (mi.info HASH IN ('Bulgaria'))\n" + + " │ └─ TableAlias(mi)\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_info\n" + + " │ └─ columns: [movie_id info]\n" + " └─ InnerJoin\n" + - " ├─ ((mk.movie_id = mi.movie_id) AND (k.id = mk.keyword_id))\n" + + " ├─ (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" + + " └─ 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" + @@ -28085,32 +29266,33 @@ WHERE k.keyword LIKE '%sequel%' " ├─ 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" + + " ├─ ((mk.movie_id = mi.movie_id) AND (t.id = mk.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" + + " │ └─ Filter\n" + + " │ ├─ (mi.info HASH IN ('Bulgaria'))\n" + + " │ └─ TableAlias(mi)\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_info\n" + + " │ └─ columns: [movie_id info]\n" + " └─ InnerJoin\n" + - " ├─ ((mk.movie_id = mi.movie_id) AND (k.id = mk.keyword_id))\n" + + " ├─ (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" + + " └─ Filter\n" + + " ├─ k.keyword LIKE '%sequel%'\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " ├─ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", }, { @@ -28146,50 +29328,49 @@ WHERE k.keyword LIKE '%sequel%' " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mi.movie_id:5!null\n" + + " │ │ ├─ mk.movie_id:5!null\n" + + " │ │ └─ mi.movie_id:3!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" + + " │ └─ mk.movie_id:5!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mi.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" + + " │ └─ 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" + " └─ 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" + + " ├─ Eq\n" + + " │ ├─ k.id:7!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" + - " │ ├─ 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" + + " └─ Filter\n" + + " ├─ k.keyword LIKE '%sequel%'\n" + + " └─ TableAlias(k)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(t.title) as movie_title]\n" + @@ -28197,32 +29378,33 @@ WHERE k.keyword LIKE '%sequel%' " ├─ 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" + + " ├─ ((mk.movie_id = mi.movie_id) AND (t.id = mk.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" + + " │ └─ 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" + " └─ InnerJoin\n" + - " ├─ ((mk.movie_id = mi.movie_id) AND (k.id = mk.keyword_id))\n" + + " ├─ (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" + + " └─ 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" + @@ -28230,32 +29412,33 @@ WHERE k.keyword LIKE '%sequel%' " ├─ 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" + + " ├─ ((mk.movie_id = mi.movie_id) AND (t.id = mk.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" + + " │ └─ 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" + " └─ InnerJoin\n" + - " ├─ ((mk.movie_id = mi.movie_id) AND (k.id = mk.keyword_id))\n" + + " ├─ (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" + + " └─ Filter\n" + + " ├─ k.keyword LIKE '%sequel%'\n" + + " └─ TableAlias(k)\n" + + " └─ Table\n" + + " ├─ name: keyword\n" + + " └─ columns: [id keyword]\n" + "", }, { @@ -28281,68 +29464,68 @@ WHERE it.info ='rating' ExpectedPlan: "Project\n" + " ├─ columns: [min(mi_idx.info):0!null as rating, min(t.title):1!null as movie_title]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(mi_idx.info:7!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(mi_idx.info:5!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + - " │ ├─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mi_idx.movie_id:5!null\n" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it.id:10!null\n" + + " │ │ │ └─ mi_idx.info_type_id:4!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ mk.movie_id:6!null\n" + + " │ │ └─ mi_idx.movie_id:3!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" + + " │ └─ mk.movie_id:6!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mi_idx.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" + + " │ └─ 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" + + " ├─ InnerJoin\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" + + " │ │ ├─ k.id:8!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" + + " │ └─ 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.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" + + " │ ├─ 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" + @@ -28350,40 +29533,40 @@ WHERE it.info ='rating' " ├─ 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" + + " ├─ (((it.id = mi_idx.info_type_id) AND (mk.movie_id = mi_idx.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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 production_year]\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" + + " ├─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(mi_idx.info) as rating, min(t.title) as movie_title]\n" + @@ -28391,40 +29574,40 @@ WHERE it.info ='rating' " ├─ 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" + + " ├─ (((it.id = mi_idx.info_type_id) AND (mk.movie_id = mi_idx.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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 production_year]\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" + + " ├─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + "", }, { @@ -28450,68 +29633,68 @@ WHERE it.info ='rating' ExpectedPlan: "Project\n" + " ├─ columns: [min(mi_idx.info):0!null as rating, min(t.title):1!null as movie_title]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(mi_idx.info:7!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(mi_idx.info:5!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + - " ├─ AND\n" + - " │ ├─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mi_idx.movie_id:5!null\n" + + " ├─ AND\n" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it.id:10!null\n" + + " │ │ │ └─ mi_idx.info_type_id:4!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ mk.movie_id:6!null\n" + + " │ │ └─ mi_idx.movie_id:3!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" + + " │ └─ mk.movie_id:6!null\n" + + " ├─ InnerJoin\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" + + " │ └─ 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" + + " ├─ InnerJoin\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" + + " │ │ ├─ k.id:8!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" + + " │ └─ 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.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" + + " │ ├─ 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" + @@ -28519,40 +29702,40 @@ WHERE it.info ='rating' " ├─ 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" + + " ├─ (((it.id = mi_idx.info_type_id) AND (mk.movie_id = mi_idx.movie_id)) AND (t.id = mk.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" + + " │ └─ 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" + + " ├─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(mi_idx.info) as rating, min(t.title) as movie_title]\n" + @@ -28560,40 +29743,40 @@ WHERE it.info ='rating' " ├─ 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" + + " ├─ (((it.id = mi_idx.info_type_id) AND (mk.movie_id = mi_idx.movie_id)) AND (t.id = mk.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" + + " │ └─ 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" + + " ├─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + "", }, { @@ -28619,68 +29802,68 @@ WHERE it.info ='rating' ExpectedPlan: "Project\n" + " ├─ columns: [min(mi_idx.info):0!null as rating, min(t.title):1!null as movie_title]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(mi_idx.info:7!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(mi_idx.info:5!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + - " │ ├─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mi_idx.movie_id:5!null\n" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ it.id:10!null\n" + + " │ │ │ └─ mi_idx.info_type_id:4!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ mk.movie_id:6!null\n" + + " │ │ └─ mi_idx.movie_id:3!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" + + " │ └─ mk.movie_id:6!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mi_idx.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" + + " │ └─ 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" + + " ├─ InnerJoin\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" + + " │ │ ├─ k.id:8!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" + + " │ └─ 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.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" + + " │ ├─ 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" + @@ -28688,40 +29871,40 @@ WHERE it.info ='rating' " ├─ 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" + + " ├─ (((it.id = mi_idx.info_type_id) AND (mk.movie_id = mi_idx.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mi_idx.movie_id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (t.production_year > 1990)\n" + + " │ │ └─ TableAlias(t)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title production_year]\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" + + " ├─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(mi_idx.info) as rating, min(t.title) as movie_title]\n" + @@ -28729,40 +29912,40 @@ WHERE it.info ='rating' " ├─ 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" + + " ├─ (((it.id = mi_idx.info_type_id) AND (mk.movie_id = mi_idx.movie_id)) AND (t.id = mk.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mi_idx.movie_id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (t.production_year > 1990)\n" + + " │ │ └─ TableAlias(t)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title production_year]\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" + + " ├─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + "", }, { @@ -28799,66 +29982,66 @@ WHERE ct.kind = 'production companies' " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + - " │ ├─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mi.movie_id:3!null\n" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ct.id:10!null\n" + + " │ │ │ └─ mc.company_type_id:4!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ mc.movie_id:3!null\n" + + " │ │ └─ mi.movie_id:6!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" + - " ├─ AND\n" + + " │ └─ mi.movie_id:6!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mc.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" + + " │ └─ 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" + + " ├─ InnerJoin\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" + + " │ │ ├─ it.id:9!null\n" + + " │ │ └─ mi.info_type_id:7!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" + + " │ └─ TableAlias(it)\n" + " │ └─ ProcessTable\n" + " │ └─ Table\n" + - " │ ├─ name: movie_info\n" + - " │ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id]\n" + + " └─ Filter\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" + + " │ ├─ ct.kind:1!null\n" + + " │ └─ production companies (longtext)\n" + + " └─ TableAlias(ct)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: company_type\n" + + " └─ columns: [id kind]\n" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(t.title) as typical_european_movie]\n" + @@ -28866,40 +30049,40 @@ WHERE ct.kind = 'production companies' " ├─ 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" + + " ├─ (((ct.id = mc.company_type_id) AND (mc.movie_id = mi.movie_id)) AND (t.id = mi.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ 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" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ TableAlias(it)\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" + + " │ ├─ 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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(t.title) as typical_european_movie]\n" + @@ -28907,40 +30090,40 @@ WHERE ct.kind = 'production companies' " ├─ 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" + + " ├─ (((ct.id = mc.company_type_id) AND (mc.movie_id = mi.movie_id)) AND (t.id = mi.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ 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" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ 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" + "", }, { @@ -28972,68 +30155,68 @@ WHERE ct.kind = 'production companies' " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + - " │ ├─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mi.movie_id:3!null\n" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ct.id:10!null\n" + + " │ │ │ └─ mc.company_type_id:4!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ mc.movie_id:3!null\n" + + " │ │ └─ mi.movie_id:6!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" + + " │ └─ mi.movie_id:6!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mc.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" + + " │ └─ 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" + + " ├─ InnerJoin\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" + + " │ │ ├─ it.id:9!null\n" + + " │ │ └─ mi.info_type_id:7!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" + + " │ └─ TableAlias(it)\n" + " │ └─ ProcessTable\n" + " │ └─ Table\n" + - " │ ├─ name: movie_info\n" + - " │ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id]\n" + + " └─ Filter\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" + + " │ ├─ ct.kind:1!null\n" + + " │ └─ production companies (longtext)\n" + + " └─ TableAlias(ct)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: company_type\n" + + " └─ columns: [id kind]\n" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(t.title) as american_vhs_movie]\n" + @@ -29041,40 +30224,40 @@ WHERE ct.kind = 'production companies' " ├─ 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" + + " ├─ (((ct.id = mc.company_type_id) AND (mc.movie_id = mi.movie_id)) AND (t.id = mi.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" + + " │ └─ 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" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ TableAlias(it)\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" + + " │ ├─ 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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(t.title) as american_vhs_movie]\n" + @@ -29082,40 +30265,40 @@ WHERE ct.kind = 'production companies' " ├─ 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" + + " ├─ (((ct.id = mc.company_type_id) AND (mc.movie_id = mi.movie_id)) AND (t.id = mi.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" + + " │ └─ 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" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ TableAlias(it)\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" + + " │ ├─ 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" + "", }, { @@ -29154,67 +30337,67 @@ WHERE ct.kind = 'production companies' " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + - " │ ├─ Eq\n" + - " │ │ ├─ t.id:0!null\n" + - " │ │ └─ mi.movie_id:3!null\n" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ ct.id:10!null\n" + + " │ │ │ └─ mc.company_type_id:4!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ mc.movie_id:3!null\n" + + " │ │ └─ mi.movie_id:6!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" + - " ├─ AND\n" + + " │ └─ mi.movie_id:6!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mc.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" + + " │ └─ 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" + + " ├─ InnerJoin\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" + + " │ │ ├─ it.id:9!null\n" + + " │ │ └─ mi.info_type_id:7!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" + + " │ └─ TableAlias(it)\n" + " │ └─ ProcessTable\n" + " │ └─ Table\n" + - " │ ├─ name: movie_info\n" + - " │ └─ columns: [movie_id info_type_id info]\n" + - " └─ InnerJoin\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id]\n" + + " └─ Filter\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" + + " │ ├─ ct.kind:1!null\n" + + " │ └─ production companies (longtext)\n" + + " └─ TableAlias(ct)\n" + + " └─ ProcessTable\n" + + " └─ Table\n" + + " ├─ name: company_type\n" + + " └─ columns: [id kind]\n" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(t.title) as american_movie]\n" + @@ -29222,40 +30405,40 @@ WHERE ct.kind = 'production companies' " ├─ 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" + + " ├─ (((ct.id = mc.company_type_id) AND (mc.movie_id = mi.movie_id)) AND (t.id = mi.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ 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" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ TableAlias(it)\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" + + " │ ├─ 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" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(t.title) as american_movie]\n" + @@ -29263,40 +30446,40 @@ WHERE ct.kind = 'production companies' " ├─ 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" + + " ├─ (((ct.id = mc.company_type_id) AND (mc.movie_id = mi.movie_id)) AND (t.id = mi.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ 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" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ TableAlias(it)\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" + + " │ ├─ 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" + "", }, { @@ -29322,28 +30505,50 @@ WHERE k.keyword = 'marvel-cinematic-universe' ExpectedPlan: "Project\n" + " ├─ columns: [min(k.keyword):0!null as movie_keyword, min(n.name):1!null as actor_name, min(t.title):2!null as marvel_movie]\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:8!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" + + " │ │ ├─ ci.movie_id:10!null\n" + + " │ │ └─ mk.movie_id:3!null\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" + + " │ │ ├─ 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" + + " │ ├─ Eq\n" + + " │ │ ├─ k.id:5!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" + + " │ └─ 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" + " └─ InnerJoin\n" + " ├─ Eq\n" + - " │ ├─ n.id:3!null\n" + + " │ ├─ n.id:7!null\n" + " │ └─ ci.person_id:9!null\n" + " ├─ Filter\n" + " │ ├─ n.name LIKE '%Downey%Robert%'\n" + @@ -29352,34 +30557,11 @@ 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" + + " └─ TableAlias(ci)\n" + + " └─ ProcessTable\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" + @@ -29387,13 +30569,27 @@ WHERE k.keyword = 'marvel-cinematic-universe' " ├─ SelectedExprs(MIN(k.keyword), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + " └─ InnerJoin\n" + - " ├─ ((t.id = mk.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" + + " ├─ ((ci.movie_id = mk.movie_id) AND (t.id = ci.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" + + " │ └─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (k.keyword = 'marvel-cinematic-universe')\n" + + " │ └─ TableAlias(k)\n" + + " │ └─ Table\n" + + " │ ├─ name: keyword\n" + + " │ └─ columns: [id keyword]\n" + " └─ InnerJoin\n" + " ├─ (n.id = ci.person_id)\n" + " ├─ Filter\n" + @@ -29402,23 +30598,10 @@ 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" + + " └─ TableAlias(ci)\n" + + " └─ Table\n" + + " ├─ name: cast_info\n" + + " └─ columns: [person_id 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" + @@ -29426,13 +30609,27 @@ WHERE k.keyword = 'marvel-cinematic-universe' " ├─ SelectedExprs(MIN(k.keyword), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + " └─ InnerJoin\n" + - " ├─ ((t.id = mk.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" + + " ├─ ((ci.movie_id = mk.movie_id) AND (t.id = ci.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" + + " │ └─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (k.keyword = 'marvel-cinematic-universe')\n" + + " │ └─ TableAlias(k)\n" + + " │ └─ Table\n" + + " │ ├─ name: keyword\n" + + " │ └─ columns: [id keyword]\n" + " └─ InnerJoin\n" + " ├─ (n.id = ci.person_id)\n" + " ├─ Filter\n" + @@ -29441,23 +30638,10 @@ 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" + + " └─ TableAlias(ci)\n" + + " └─ Table\n" + + " ├─ name: cast_info\n" + + " └─ columns: [person_id movie_id]\n" + "", }, { @@ -29490,28 +30674,50 @@ WHERE k.keyword IN ('superhero', ExpectedPlan: "Project\n" + " ├─ columns: [min(k.keyword):0!null as movie_keyword, min(n.name):1!null as actor_name, min(t.title):2!null as hero_movie]\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:8!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" + + " │ │ ├─ ci.movie_id:10!null\n" + + " │ │ └─ mk.movie_id:3!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + " │ └─ ci.movie_id:10!null\n" + - " ├─ Filter\n" + - " │ ├─ GreaterThan\n" + - " │ │ ├─ t.production_year:2\n" + - " │ │ └─ 2014 (int)\n" + - " │ └─ TableAlias(t)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title production_year]\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mk.movie_id:3!null\n" + + " │ ├─ Filter\n" + + " │ │ ├─ GreaterThan\n" + + " │ │ │ ├─ t.production_year:2\n" + + " │ │ │ └─ 2014 (int)\n" + + " │ │ └─ TableAlias(t)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title production_year]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ k.id:5!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" + + " │ └─ 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" + " ├─ Eq\n" + - " │ ├─ n.id:3!null\n" + + " │ ├─ n.id:7!null\n" + " │ └─ ci.person_id:9!null\n" + " ├─ Filter\n" + " │ ├─ n.name LIKE '%Downey%Robert%'\n" + @@ -29520,34 +30726,11 @@ 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" + + " └─ TableAlias(ci)\n" + + " └─ ProcessTable\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" + @@ -29555,13 +30738,27 @@ WHERE k.keyword IN ('superhero', " ├─ SelectedExprs(MIN(k.keyword), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + " └─ InnerJoin\n" + - " ├─ ((t.id = mk.movie_id) AND (t.id = ci.movie_id))\n" + - " ├─ Filter\n" + - " │ ├─ (t.production_year > 2014)\n" + - " │ └─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title production_year]\n" + + " ├─ ((ci.movie_id = mk.movie_id) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.movie_id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (t.production_year > 2014)\n" + + " │ │ └─ TableAlias(t)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title production_year]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " ├─ (n.id = ci.person_id)\n" + " ├─ Filter\n" + @@ -29570,23 +30767,10 @@ 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" + + " └─ TableAlias(ci)\n" + + " └─ Table\n" + + " ├─ name: cast_info\n" + + " └─ columns: [person_id 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" + @@ -29594,13 +30778,27 @@ WHERE k.keyword IN ('superhero', " ├─ SelectedExprs(MIN(k.keyword), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + " └─ InnerJoin\n" + - " ├─ ((t.id = mk.movie_id) AND (t.id = ci.movie_id))\n" + - " ├─ Filter\n" + - " │ ├─ (t.production_year > 2014)\n" + - " │ └─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title production_year]\n" + + " ├─ ((ci.movie_id = mk.movie_id) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.movie_id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (t.production_year > 2014)\n" + + " │ │ └─ TableAlias(t)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title production_year]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " ├─ (n.id = ci.person_id)\n" + " ├─ Filter\n" + @@ -29609,23 +30807,10 @@ 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" + + " └─ TableAlias(ci)\n" + + " └─ Table\n" + + " ├─ name: cast_info\n" + + " └─ columns: [person_id movie_id]\n" + "", }, { @@ -29651,28 +30836,50 @@ WHERE k.keyword = 'marvel-cinematic-universe' ExpectedPlan: "Project\n" + " ├─ columns: [min(k.keyword):0!null as movie_keyword, min(n.name):1!null as actor_name, min(t.title):2!null as marvel_movie]\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:8!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" + + " │ │ ├─ ci.movie_id:10!null\n" + + " │ │ └─ mk.movie_id:3!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + " │ └─ ci.movie_id:10!null\n" + - " ├─ Filter\n" + - " │ ├─ GreaterThan\n" + - " │ │ ├─ t.production_year:2\n" + - " │ │ └─ 2014 (int)\n" + - " │ └─ TableAlias(t)\n" + - " │ └─ ProcessTable\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title production_year]\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mk.movie_id:3!null\n" + + " │ ├─ Filter\n" + + " │ │ ├─ GreaterThan\n" + + " │ │ │ ├─ t.production_year:2\n" + + " │ │ │ └─ 2014 (int)\n" + + " │ │ └─ TableAlias(t)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title production_year]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ k.id:5!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" + + " │ └─ 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" + " └─ InnerJoin\n" + " ├─ Eq\n" + - " │ ├─ n.id:3!null\n" + + " │ ├─ n.id:7!null\n" + " │ └─ ci.person_id:9!null\n" + " ├─ Filter\n" + " │ ├─ n.name LIKE '%Downey%Robert%'\n" + @@ -29681,34 +30888,11 @@ 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" + + " └─ TableAlias(ci)\n" + + " └─ ProcessTable\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" + @@ -29716,13 +30900,27 @@ WHERE k.keyword = 'marvel-cinematic-universe' " ├─ SelectedExprs(MIN(k.keyword), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + " └─ InnerJoin\n" + - " ├─ ((t.id = mk.movie_id) AND (t.id = ci.movie_id))\n" + - " ├─ Filter\n" + - " │ ├─ (t.production_year > 2014)\n" + - " │ └─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title production_year]\n" + + " ├─ ((ci.movie_id = mk.movie_id) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.movie_id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (t.production_year > 2014)\n" + + " │ │ └─ TableAlias(t)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title production_year]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (k.keyword = 'marvel-cinematic-universe')\n" + + " │ └─ TableAlias(k)\n" + + " │ └─ Table\n" + + " │ ├─ name: keyword\n" + + " │ └─ columns: [id keyword]\n" + " └─ InnerJoin\n" + " ├─ (n.id = ci.person_id)\n" + " ├─ Filter\n" + @@ -29731,23 +30929,10 @@ 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" + + " └─ TableAlias(ci)\n" + + " └─ Table\n" + + " ├─ name: cast_info\n" + + " └─ columns: [person_id 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" + @@ -29755,13 +30940,27 @@ WHERE k.keyword = 'marvel-cinematic-universe' " ├─ SelectedExprs(MIN(k.keyword), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + " └─ InnerJoin\n" + - " ├─ ((t.id = mk.movie_id) AND (t.id = ci.movie_id))\n" + - " ├─ Filter\n" + - " │ ├─ (t.production_year > 2014)\n" + - " │ └─ TableAlias(t)\n" + - " │ └─ Table\n" + - " │ ├─ name: title\n" + - " │ └─ columns: [id title production_year]\n" + + " ├─ ((ci.movie_id = mk.movie_id) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.movie_id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (t.production_year > 2014)\n" + + " │ │ └─ TableAlias(t)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: title\n" + + " │ │ └─ columns: [id title production_year]\n" + + " │ └─ InnerJoin\n" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (k.keyword = 'marvel-cinematic-universe')\n" + + " │ └─ TableAlias(k)\n" + + " │ └─ Table\n" + + " │ ├─ name: keyword\n" + + " │ └─ columns: [id keyword]\n" + " └─ InnerJoin\n" + " ├─ (n.id = ci.person_id)\n" + " ├─ Filter\n" + @@ -29770,23 +30969,10 @@ 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" + + " └─ TableAlias(ci)\n" + + " └─ Table\n" + + " ├─ name: cast_info\n" + + " └─ columns: [person_id movie_id]\n" + "", }, { @@ -29819,28 +31005,50 @@ WHERE k.keyword IN ('superhero', ExpectedPlan: "Project\n" + " ├─ columns: [min(k.keyword):0!null as movie_keyword, min(n.name):1!null as actor_name, min(t.title):2!null as hero_movie]\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:8!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" + + " │ │ ├─ ci.movie_id:10!null\n" + + " │ │ └─ mk.movie_id:3!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + " │ └─ ci.movie_id:10!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" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mk.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" + + " │ ├─ Eq\n" + + " │ │ ├─ k.id:5!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" + + " │ └─ 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" + " ├─ Eq\n" + - " │ ├─ n.id:3!null\n" + + " │ ├─ n.id:7!null\n" + " │ └─ ci.person_id:9!null\n" + " ├─ Filter\n" + " │ ├─ n.name LIKE '%Downey%Robert%'\n" + @@ -29849,34 +31057,11 @@ 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" + + " └─ TableAlias(ci)\n" + + " └─ ProcessTable\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" + @@ -29884,13 +31069,27 @@ WHERE k.keyword IN ('superhero', " ├─ SelectedExprs(MIN(k.keyword), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + " └─ InnerJoin\n" + - " ├─ ((t.id = mk.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" + + " ├─ ((ci.movie_id = mk.movie_id) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.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" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " ├─ (n.id = ci.person_id)\n" + " ├─ Filter\n" + @@ -29899,23 +31098,10 @@ 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" + + " └─ TableAlias(ci)\n" + + " └─ Table\n" + + " ├─ name: cast_info\n" + + " └─ columns: [person_id 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" + @@ -29923,13 +31109,27 @@ WHERE k.keyword IN ('superhero', " ├─ SelectedExprs(MIN(k.keyword), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + " └─ InnerJoin\n" + - " ├─ ((t.id = mk.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" + + " ├─ ((ci.movie_id = mk.movie_id) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.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" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " ├─ (n.id = ci.person_id)\n" + " ├─ Filter\n" + @@ -29938,23 +31138,10 @@ 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" + + " └─ TableAlias(ci)\n" + + " └─ Table\n" + + " ├─ name: cast_info\n" + + " └─ columns: [person_id movie_id]\n" + "", }, { @@ -29980,64 +31167,63 @@ WHERE k.keyword = 'marvel-cinematic-universe' ExpectedPlan: "Project\n" + " ├─ columns: [min(k.keyword):0!null as movie_keyword, min(n.name):1!null as actor_name, min(t.title):2!null as marvel_movie]\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:8!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" + + " │ │ ├─ ci.movie_id:10!null\n" + + " │ │ └─ mk.movie_id:3!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + " │ └─ ci.movie_id:10!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" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mk.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" + + " │ ├─ Eq\n" + + " │ │ ├─ k.id:5!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" + + " │ └─ 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" + " └─ InnerJoin\n" + " ├─ Eq\n" + - " │ ├─ n.id:3!null\n" + + " │ ├─ n.id:7!null\n" + " │ └─ ci.person_id:9!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" + - " │ ├─ 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" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: name\n" + + " │ └─ columns: [id name]\n" + + " └─ TableAlias(ci)\n" + + " └─ ProcessTable\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" + @@ -30045,13 +31231,27 @@ WHERE k.keyword = 'marvel-cinematic-universe' " ├─ SelectedExprs(MIN(k.keyword), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + " └─ InnerJoin\n" + - " ├─ ((t.id = mk.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" + + " ├─ ((ci.movie_id = mk.movie_id) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.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" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (k.keyword = 'marvel-cinematic-universe')\n" + + " │ └─ TableAlias(k)\n" + + " │ └─ Table\n" + + " │ ├─ name: keyword\n" + + " │ └─ columns: [id keyword]\n" + " └─ InnerJoin\n" + " ├─ (n.id = ci.person_id)\n" + " ├─ Filter\n" + @@ -30060,23 +31260,10 @@ 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" + + " └─ TableAlias(ci)\n" + + " └─ Table\n" + + " ├─ name: cast_info\n" + + " └─ columns: [person_id 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" + @@ -30084,13 +31271,27 @@ WHERE k.keyword = 'marvel-cinematic-universe' " ├─ SelectedExprs(MIN(k.keyword), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + " └─ InnerJoin\n" + - " ├─ ((t.id = mk.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" + + " ├─ ((ci.movie_id = mk.movie_id) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.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" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\n" + + " │ └─ Filter\n" + + " │ ├─ (k.keyword = 'marvel-cinematic-universe')\n" + + " │ └─ TableAlias(k)\n" + + " │ └─ Table\n" + + " │ ├─ name: keyword\n" + + " │ └─ columns: [id keyword]\n" + " └─ InnerJoin\n" + " ├─ (n.id = ci.person_id)\n" + " ├─ Filter\n" + @@ -30099,23 +31300,10 @@ 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" + + " └─ TableAlias(ci)\n" + + " └─ Table\n" + + " ├─ name: cast_info\n" + + " └─ columns: [person_id movie_id]\n" + "", }, { @@ -30147,62 +31335,61 @@ WHERE k.keyword IN ('superhero', ExpectedPlan: "Project\n" + " ├─ columns: [min(k.keyword):0!null as movie_keyword, min(n.name):1!null as actor_name, min(t.title):2!null as hero_movie]\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:8!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" + + " │ │ ├─ ci.movie_id:10!null\n" + + " │ │ └─ mk.movie_id:3!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + " │ └─ ci.movie_id:10!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" + + " │ ├─ Eq\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ mk.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" + + " │ ├─ Eq\n" + + " │ │ ├─ k.id:5!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" + + " │ └─ 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" + " ├─ Eq\n" + - " │ ├─ n.id:3!null\n" + + " │ ├─ n.id:7!null\n" + " │ └─ ci.person_id:9!null\n" + " ├─ TableAlias(n)\n" + " │ └─ ProcessTable\n" + " │ └─ 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" + + " └─ TableAlias(ci)\n" + + " └─ ProcessTable\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" + @@ -30210,36 +31397,37 @@ WHERE k.keyword IN ('superhero', " ├─ SelectedExprs(MIN(k.keyword), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + " └─ InnerJoin\n" + - " ├─ ((t.id = mk.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" + + " ├─ ((ci.movie_id = mk.movie_id) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.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" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " ├─ (n.id = ci.person_id)\n" + " ├─ TableAlias(n)\n" + " │ └─ 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" + + " └─ TableAlias(ci)\n" + + " └─ Table\n" + + " ├─ name: cast_info\n" + + " └─ columns: [person_id 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" + @@ -30247,36 +31435,37 @@ WHERE k.keyword IN ('superhero', " ├─ SelectedExprs(MIN(k.keyword), MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + " └─ InnerJoin\n" + - " ├─ ((t.id = mk.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" + + " ├─ ((ci.movie_id = mk.movie_id) AND (t.id = ci.movie_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (t.id = mk.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" + + " │ ├─ (k.id = mk.keyword_id)\n" + + " │ ├─ TableAlias(mk)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_keyword\n" + + " │ │ └─ columns: [movie_id keyword_id]\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" + " ├─ (n.id = ci.person_id)\n" + " ├─ TableAlias(n)\n" + " │ └─ 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" + + " └─ TableAlias(ci)\n" + + " └─ Table\n" + + " ├─ name: cast_info\n" + + " └─ columns: [person_id movie_id]\n" + "", }, { @@ -30316,260 +31505,268 @@ WHERE an.name LIKE '%a%' ExpectedPlan: "Project\n" + " ├─ columns: [min(n.name):0!null as of_person, min(t.title):1!null as biography_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(n.name:6!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(n.name:9!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + - " └─ LookupJoin\n" + + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ n.id:5!null\n" + - " │ │ └─ an.person_id:18!null\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ ci.movie_id:13!null\n" + " │ └─ Eq\n" + - " │ ├─ pi.person_id:13!null\n" + - " │ └─ an.person_id:18!null\n" + - " ├─ InnerJoin\n" + - " │ ├─ Eq\n" + - " │ │ ├─ n.id:5!null\n" + - " │ │ └─ pi.person_id:13!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" + - " │ │ │ ├─ 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" + - " │ │ │ │ │ └─ 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" + - " │ │ └─ Filter\n" + - " │ │ ├─ Eq\n" + - " │ │ │ ├─ lt.link:1!null\n" + - " │ │ │ └─ features (longtext)\n" + - " │ │ └─ TableAlias(lt)\n" + - " │ │ └─ ProcessTable\n" + - " │ │ └─ 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" + - " │ ├─ Filter\n" + - " │ │ ├─ Eq\n" + - " │ │ │ ├─ pi.note:2\n" + - " │ │ │ └─ Volker Boehm (longtext)\n" + - " │ │ └─ TableAlias(pi)\n" + - " │ │ └─ ProcessTable\n" + - " │ │ └─ Table\n" + - " │ │ ├─ name: person_info\n" + - " │ │ └─ columns: [person_id info_type_id note]\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" + - " ├─ 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" + - " ├─ colSet: (1-8)\n" + - " ├─ tableId: 1\n" + - " └─ Table\n" + - " ├─ name: aka_name\n" + - " └─ columns: [person_id name]\n" + + " │ ├─ ml.linked_movie_id:16!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" + + " │ └─ Table\n" + + " │ ├─ name: title\n" + + " │ └─ columns: [id title production_year]\n" + + " └─ InnerJoin\n" + + " ├─ AND\n" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ n.id:8!null\n" + + " │ │ │ └─ pi.person_id:3!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ pi.person_id:3!null\n" + + " │ │ └─ an.person_id:14!null\n" + + " │ └─ Eq\n" + + " │ ├─ pi.person_id:3!null\n" + + " │ └─ ci.person_id:12!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ it.id:6!null\n" + + " │ │ └─ pi.info_type_id:4!null\n" + + " │ ├─ Filter\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ pi.note:2\n" + + " │ │ │ └─ Volker Boehm (longtext)\n" + + " │ │ └─ TableAlias(pi)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: person_info\n" + + " │ │ └─ columns: [person_id info_type_id note]\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" + + " └─ InnerJoin\n" + + " ├─ Eq\n" + + " │ ├─ lt.id:18!null\n" + + " │ └─ ml.link_type_id:17!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ci.movie_id:13!null\n" + + " │ │ └─ ml.linked_movie_id:16!null\n" + + " │ ├─ LookupJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ n.id:8!null\n" + + " │ │ │ └─ an.person_id:14!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ ci.person_id:12!null\n" + + " │ │ │ │ └─ n.id:8!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" + + " │ │ └─ Filter\n" + + " │ │ ├─ an.name LIKE '%a%'\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" + + " │ └─ TableAlias(ml)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_link\n" + + " │ └─ columns: [linked_movie_id link_type_id]\n" + + " └─ Filter\n" + + " ├─ Eq\n" + + " │ ├─ lt.link:1!null\n" + + " │ └─ features (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 of_person, min(t.title) as biography_movie]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ LookupJoin\n" + - " ├─ ((n.id = an.person_id) AND (pi.person_id = an.person_id))\n" + - " ├─ InnerJoin\n" + - " │ ├─ (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" + - " │ │ │ ├─ 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" + - " │ │ └─ 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" + - " │ ├─ Filter\n" + - " │ │ ├─ (pi.note = 'Volker Boehm')\n" + - " │ │ └─ TableAlias(pi)\n" + - " │ │ └─ Table\n" + - " │ │ ├─ name: person_info\n" + - " │ │ └─ columns: [person_id info_type_id note]\n" + - " │ └─ Filter\n" + - " │ ├─ (it.info = 'mini biography')\n" + - " │ └─ TableAlias(it)\n" + - " │ └─ Table\n" + - " │ ├─ name: info_type\n" + - " │ └─ columns: [id info]\n" + - " └─ Filter\n" + - " ├─ an.name LIKE '%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" + + " └─ InnerJoin\n" + + " ├─ ((t.id = ci.movie_id) AND (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" + + " └─ InnerJoin\n" + + " ├─ (((n.id = pi.person_id) AND (pi.person_id = an.person_id)) AND (pi.person_id = ci.person_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (it.id = pi.info_type_id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (pi.note = 'Volker Boehm')\n" + + " │ │ └─ TableAlias(pi)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: person_info\n" + + " │ │ └─ columns: [person_id info_type_id note]\n" + + " │ └─ Filter\n" + + " │ ├─ (it.info = 'mini biography')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ InnerJoin\n" + + " ├─ (lt.id = ml.link_type_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = ml.linked_movie_id)\n" + + " │ ├─ LookupJoin\n" + + " │ │ ├─ (n.id = an.person_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" + + " │ │ └─ Filter\n" + + " │ │ ├─ an.name LIKE '%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" + + " │ └─ TableAlias(ml)\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_link\n" + + " │ └─ columns: [linked_movie_id link_type_id]\n" + + " └─ Filter\n" + + " ├─ (lt.link = 'features')\n" + + " └─ TableAlias(lt)\n" + + " └─ Table\n" + + " ├─ name: link_type\n" + + " └─ columns: [id link]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(n.name) as of_person, min(t.title) as biography_movie]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ LookupJoin\n" + - " ├─ ((n.id = an.person_id) AND (pi.person_id = an.person_id))\n" + - " ├─ InnerJoin\n" + - " │ ├─ (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" + - " │ │ │ ├─ 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" + - " │ │ └─ 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" + - " │ ├─ Filter\n" + - " │ │ ├─ (pi.note = 'Volker Boehm')\n" + - " │ │ └─ TableAlias(pi)\n" + - " │ │ └─ Table\n" + - " │ │ ├─ name: person_info\n" + - " │ │ └─ columns: [person_id info_type_id note]\n" + - " │ └─ Filter\n" + - " │ ├─ (it.info = 'mini biography')\n" + - " │ └─ TableAlias(it)\n" + - " │ └─ Table\n" + - " │ ├─ name: info_type\n" + - " │ └─ columns: [id info]\n" + - " └─ Filter\n" + - " ├─ an.name LIKE '%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" + + " └─ InnerJoin\n" + + " ├─ ((t.id = ci.movie_id) AND (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" + + " └─ InnerJoin\n" + + " ├─ (((n.id = pi.person_id) AND (pi.person_id = an.person_id)) AND (pi.person_id = ci.person_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (it.id = pi.info_type_id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (pi.note = 'Volker Boehm')\n" + + " │ │ └─ TableAlias(pi)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: person_info\n" + + " │ │ └─ columns: [person_id info_type_id note]\n" + + " │ └─ Filter\n" + + " │ ├─ (it.info = 'mini biography')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ InnerJoin\n" + + " ├─ (lt.id = ml.link_type_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = ml.linked_movie_id)\n" + + " │ ├─ LookupJoin\n" + + " │ │ ├─ (n.id = an.person_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" + + " │ │ └─ Filter\n" + + " │ │ ├─ an.name LIKE '%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" + + " │ └─ TableAlias(ml)\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_link\n" + + " │ └─ columns: [linked_movie_id link_type_id]\n" + + " └─ Filter\n" + + " ├─ (lt.link = 'features')\n" + + " └─ TableAlias(lt)\n" + + " └─ Table\n" + + " ├─ name: link_type\n" + + " └─ columns: [id link]\n" + "", }, { @@ -30607,248 +31804,256 @@ WHERE an.name LIKE '%a%' ExpectedPlan: "Project\n" + " ├─ columns: [min(n.name):0!null as of_person, min(t.title):1!null as biography_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(n.name:6!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(n.name:9!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + - " └─ LookupJoin\n" + + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ n.id:5!null\n" + - " │ │ └─ an.person_id:18!null\n" + + " │ │ ├─ t.id:0!null\n" + + " │ │ └─ ci.movie_id:13!null\n" + " │ └─ Eq\n" + - " │ ├─ pi.person_id:13!null\n" + - " │ └─ an.person_id:18!null\n" + - " ├─ InnerJoin\n" + - " │ ├─ Eq\n" + - " │ │ ├─ n.id:5!null\n" + - " │ │ └─ pi.person_id:13!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" + - " │ │ │ ├─ 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" + - " │ │ │ │ │ └─ 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" + - " │ │ └─ Filter\n" + - " │ │ ├─ Eq\n" + - " │ │ │ ├─ lt.link:1!null\n" + - " │ │ │ └─ features (longtext)\n" + - " │ │ └─ TableAlias(lt)\n" + - " │ │ └─ ProcessTable\n" + - " │ │ └─ 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" + - " │ ├─ Filter\n" + - " │ │ ├─ Eq\n" + - " │ │ │ ├─ pi.note:2\n" + - " │ │ │ └─ Volker Boehm (longtext)\n" + - " │ │ └─ TableAlias(pi)\n" + - " │ │ └─ ProcessTable\n" + - " │ │ └─ Table\n" + - " │ │ ├─ name: person_info\n" + - " │ │ └─ columns: [person_id info_type_id note]\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" + - " ├─ 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" + - " ├─ colSet: (1-8)\n" + - " ├─ tableId: 1\n" + - " └─ Table\n" + - " ├─ name: aka_name\n" + - " └─ columns: [person_id name]\n" + + " │ ├─ ml.linked_movie_id:16!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" + + " │ └─ Table\n" + + " │ ├─ name: title\n" + + " │ └─ columns: [id title production_year]\n" + + " └─ InnerJoin\n" + + " ├─ AND\n" + + " │ ├─ AND\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ n.id:8!null\n" + + " │ │ │ └─ pi.person_id:3!null\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ pi.person_id:3!null\n" + + " │ │ └─ an.person_id:14!null\n" + + " │ └─ Eq\n" + + " │ ├─ pi.person_id:3!null\n" + + " │ └─ ci.person_id:12!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ it.id:6!null\n" + + " │ │ └─ pi.info_type_id:4!null\n" + + " │ ├─ Filter\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ pi.note:2\n" + + " │ │ │ └─ Volker Boehm (longtext)\n" + + " │ │ └─ TableAlias(pi)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: person_info\n" + + " │ │ └─ columns: [person_id info_type_id note]\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" + + " └─ InnerJoin\n" + + " ├─ Eq\n" + + " │ ├─ lt.id:18!null\n" + + " │ └─ ml.link_type_id:17!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ci.movie_id:13!null\n" + + " │ │ └─ ml.linked_movie_id:16!null\n" + + " │ ├─ LookupJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ n.id:8!null\n" + + " │ │ │ └─ an.person_id:14!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ ci.person_id:12!null\n" + + " │ │ │ │ └─ n.id:8!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" + + " │ │ └─ Filter\n" + + " │ │ ├─ an.name LIKE '%a%'\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" + + " │ └─ TableAlias(ml)\n" + + " │ └─ ProcessTable\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_link\n" + + " │ └─ columns: [linked_movie_id link_type_id]\n" + + " └─ Filter\n" + + " ├─ Eq\n" + + " │ ├─ lt.link:1!null\n" + + " │ └─ features (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 of_person, min(t.title) as biography_movie]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ LookupJoin\n" + - " ├─ ((n.id = an.person_id) AND (pi.person_id = an.person_id))\n" + - " ├─ InnerJoin\n" + - " │ ├─ (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" + - " │ │ │ ├─ 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" + - " │ │ └─ 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" + - " │ ├─ Filter\n" + - " │ │ ├─ (pi.note = 'Volker Boehm')\n" + - " │ │ └─ TableAlias(pi)\n" + - " │ │ └─ Table\n" + - " │ │ ├─ name: person_info\n" + - " │ │ └─ columns: [person_id info_type_id note]\n" + - " │ └─ Filter\n" + - " │ ├─ (it.info = 'mini biography')\n" + - " │ └─ TableAlias(it)\n" + - " │ └─ Table\n" + - " │ ├─ name: info_type\n" + - " │ └─ columns: [id info]\n" + - " └─ Filter\n" + - " ├─ an.name LIKE '%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" + + " └─ InnerJoin\n" + + " ├─ ((t.id = ci.movie_id) AND (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" + + " └─ InnerJoin\n" + + " ├─ (((n.id = pi.person_id) AND (pi.person_id = an.person_id)) AND (pi.person_id = ci.person_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (it.id = pi.info_type_id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (pi.note = 'Volker Boehm')\n" + + " │ │ └─ TableAlias(pi)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: person_info\n" + + " │ │ └─ columns: [person_id info_type_id note]\n" + + " │ └─ Filter\n" + + " │ ├─ (it.info = 'mini biography')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ InnerJoin\n" + + " ├─ (lt.id = ml.link_type_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = ml.linked_movie_id)\n" + + " │ ├─ LookupJoin\n" + + " │ │ ├─ (n.id = an.person_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" + + " │ │ └─ Filter\n" + + " │ │ ├─ an.name LIKE '%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" + + " │ └─ TableAlias(ml)\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_link\n" + + " │ └─ columns: [linked_movie_id link_type_id]\n" + + " └─ Filter\n" + + " ├─ (lt.link = 'features')\n" + + " └─ TableAlias(lt)\n" + + " └─ Table\n" + + " ├─ name: link_type\n" + + " └─ columns: [id link]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(n.name) as of_person, min(t.title) as biography_movie]\n" + " └─ GroupBy\n" + " ├─ SelectedExprs(MIN(n.name), MIN(t.title))\n" + " ├─ Grouping()\n" + - " └─ LookupJoin\n" + - " ├─ ((n.id = an.person_id) AND (pi.person_id = an.person_id))\n" + - " ├─ InnerJoin\n" + - " │ ├─ (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" + - " │ │ │ ├─ 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" + - " │ │ └─ 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" + - " │ ├─ Filter\n" + - " │ │ ├─ (pi.note = 'Volker Boehm')\n" + - " │ │ └─ TableAlias(pi)\n" + - " │ │ └─ Table\n" + - " │ │ ├─ name: person_info\n" + - " │ │ └─ columns: [person_id info_type_id note]\n" + - " │ └─ Filter\n" + - " │ ├─ (it.info = 'mini biography')\n" + - " │ └─ TableAlias(it)\n" + - " │ └─ Table\n" + - " │ ├─ name: info_type\n" + - " │ └─ columns: [id info]\n" + - " └─ Filter\n" + - " ├─ an.name LIKE '%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" + + " └─ InnerJoin\n" + + " ├─ ((t.id = ci.movie_id) AND (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" + + " └─ InnerJoin\n" + + " ├─ (((n.id = pi.person_id) AND (pi.person_id = an.person_id)) AND (pi.person_id = ci.person_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (it.id = pi.info_type_id)\n" + + " │ ├─ Filter\n" + + " │ │ ├─ (pi.note = 'Volker Boehm')\n" + + " │ │ └─ TableAlias(pi)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: person_info\n" + + " │ │ └─ columns: [person_id info_type_id note]\n" + + " │ └─ Filter\n" + + " │ ├─ (it.info = 'mini biography')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ InnerJoin\n" + + " ├─ (lt.id = ml.link_type_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = ml.linked_movie_id)\n" + + " │ ├─ LookupJoin\n" + + " │ │ ├─ (n.id = an.person_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" + + " │ │ └─ Filter\n" + + " │ │ ├─ an.name LIKE '%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" + + " │ └─ TableAlias(ml)\n" + + " │ └─ Table\n" + + " │ ├─ name: movie_link\n" + + " │ └─ columns: [linked_movie_id link_type_id]\n" + + " └─ Filter\n" + + " ├─ (lt.link = 'features')\n" + + " └─ TableAlias(lt)\n" + + " └─ Table\n" + + " ├─ name: link_type\n" + + " └─ columns: [id link]\n" + "", }, { @@ -30893,15 +32098,15 @@ WHERE an.name IS NOT NULL ExpectedPlan: "Project\n" + " ├─ columns: [min(n.name):0!null as cast_member_name, min(pi.info):1!null as cast_member_info]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(n.name:7!null), MIN(pi.info:4!null)\n" + + " ├─ select: MIN(n.name:9!null), MIN(pi.info:4!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:16!null\n" + " │ └─ t.id:0!null\n" + " ├─ Filter\n" + " │ ├─ AND\n" + @@ -30919,125 +32124,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:2!null\n" + " │ │ └─ Eq\n" + " │ │ ├─ pi.person_id:2!null\n" + - " │ │ └─ an.person_id:18!null\n" + + " │ │ └─ an.person_id:14!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" + + " │ └─ ci.person_id:12!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ it.id:6!null\n" + + " │ │ └─ pi.info_type_id:3!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" + + " │ └─ 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" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ lt.id:18!null\n" + + " │ └─ ml.link_type_id:17!null\n" + + " ├─ InnerJoin\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" + + " │ │ ├─ ci.movie_id:13!null\n" + + " │ │ └─ ml.linked_movie_id:16!null\n" + + " │ ├─ LookupJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ n.id:8!null\n" + + " │ │ │ └─ an.person_id:14!null\n" + + " │ │ ├─ InnerJoin\n" + + " │ │ │ ├─ Eq\n" + + " │ │ │ │ ├─ ci.person_id:12!null\n" + + " │ │ │ │ └─ n.id:8!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" + + " │ │ │ └─ 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:12!null]\n" + + " │ │ ├─ colSet: (1-8)\n" + + " │ │ ├─ tableId: 1\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: aka_name\n" + + " │ │ └─ columns: [person_id name]\n" + + " │ └─ TableAlias(ml)\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" + + " │ ├─ name: movie_link\n" + + " │ └─ columns: [linked_movie_id link_type_id]\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 +32255,56 @@ 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" + + " ├─ (((n.id = pi.person_id) AND (pi.person_id = an.person_id)) AND (pi.person_id = ci.person_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (it.id = pi.info_type_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" + + " │ └─ Filter\n" + + " │ ├─ (it.info = 'mini biography')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ InnerJoin\n" + + " ├─ (lt.id = ml.link_type_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = ml.linked_movie_id)\n" + + " │ ├─ LookupJoin\n" + + " │ │ ├─ (n.id = an.person_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 >= '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" + + " │ │ │ └─ 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" + + " │ └─ TableAlias(ml)\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" + + " │ ├─ name: movie_link\n" + + " │ └─ columns: [linked_movie_id link_type_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 +32320,56 @@ 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" + + " ├─ (((n.id = pi.person_id) AND (pi.person_id = an.person_id)) AND (pi.person_id = ci.person_id))\n" + + " ├─ InnerJoin\n" + + " │ ├─ (it.id = pi.info_type_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" + + " │ └─ Filter\n" + + " │ ├─ (it.info = 'mini biography')\n" + + " │ └─ TableAlias(it)\n" + + " │ └─ Table\n" + + " │ ├─ name: info_type\n" + + " │ └─ columns: [id info]\n" + + " └─ InnerJoin\n" + + " ├─ (lt.id = ml.link_type_id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = ml.linked_movie_id)\n" + + " │ ├─ LookupJoin\n" + + " │ │ ├─ (n.id = an.person_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 >= '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" + + " │ │ │ └─ 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" + + " │ └─ TableAlias(ml)\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" + + " │ ├─ name: movie_link\n" + + " │ └─ columns: [linked_movie_id link_type_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" + "", }, { @@ -31195,12 +32403,12 @@ WHERE ci.note ='(voice: English version)' ExpectedPlan: "Project\n" + " ├─ columns: [min(an1.name):0!null as actress_pseudonym, min(t.title):1!null as japanese_movie_dubbed]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(an1.name:16!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(an1.name:14!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ ci.movie_id:12!null\n" + + " │ │ ├─ ci.movie_id:10!null\n" + " │ │ └─ t.id:0!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + @@ -31212,7 +32420,7 @@ WHERE ci.note ='(voice: English version)' " │ └─ columns: [id title]\n" + " └─ InnerJoin\n" + " ├─ Eq\n" + - " │ ├─ ci.role_id:14!null\n" + + " │ ├─ ci.role_id:12!null\n" + " │ └─ rt.id:2!null\n" + " ├─ Filter\n" + " │ ├─ Eq\n" + @@ -31226,11 +32434,11 @@ WHERE ci.note ='(voice: English version)' " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ an1.person_id:15!null\n" + + " │ │ ├─ an1.person_id:13!null\n" + " │ │ └─ n1.id:4!null\n" + " │ └─ Eq\n" + " │ ├─ n1.id:4!null\n" + - " │ └─ ci.person_id:11!null\n" + + " │ └─ ci.person_id:9!null\n" + " ├─ Filter\n" + " │ ├─ AND\n" + " │ │ ├─ n1.name LIKE '%Yo%'\n" + @@ -31242,52 +32450,51 @@ WHERE ci.note ='(voice: English version)' " │ ├─ name: name\n" + " │ └─ columns: [id name]\n" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ mc.company_id:7!null\n" + + " │ └─ cn.id:15!null\n" + + " ├─ InnerJoin\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" + + " │ │ ├─ ci.movie_id:10!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" + + " │ └─ 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:9!null]\n" + + " │ ├─ colSet: (1-8)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: aka_name\n" + + " │ └─ columns: [person_id name]\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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(an1.name) as actress_pseudonym, min(t.title) as japanese_movie_dubbed]\n" + @@ -31317,32 +32524,33 @@ WHERE ci.note ='(voice: English version)' " │ ├─ 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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ 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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[jp]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(an1.name) as actress_pseudonym, min(t.title) as japanese_movie_dubbed]\n" + @@ -31372,32 +32580,33 @@ WHERE ci.note ='(voice: English version)' " │ ├─ 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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ 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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[jp]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", }, { @@ -31436,12 +32645,12 @@ WHERE ci.note ='(voice: English version)' ExpectedPlan: "Project\n" + " ├─ columns: [min(an.name):0!null as acress_pseudonym, min(t.title):1!null as japanese_anime_movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(an.name:17!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(an.name:15!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ ci.movie_id:13!null\n" + + " │ │ ├─ ci.movie_id:11!null\n" + " │ │ └─ t.id:0!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + @@ -31477,7 +32686,7 @@ WHERE ci.note ='(voice: English version)' " │ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + " ├─ Eq\n" + - " │ ├─ ci.role_id:15!null\n" + + " │ ├─ ci.role_id:13!null\n" + " │ └─ rt.id:3!null\n" + " ├─ Filter\n" + " │ ├─ Eq\n" + @@ -31491,11 +32700,11 @@ WHERE ci.note ='(voice: English version)' " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ an.person_id:16!null\n" + + " │ │ ├─ an.person_id:14!null\n" + " │ │ └─ n.id:5!null\n" + " │ └─ Eq\n" + " │ ├─ n.id:5!null\n" + - " │ └─ ci.person_id:12!null\n" + + " │ └─ ci.person_id:10!null\n" + " ├─ Filter\n" + " │ ├─ AND\n" + " │ │ ├─ n.name LIKE '%Yo%'\n" + @@ -31505,58 +32714,57 @@ WHERE ci.note ='(voice: English version)' " │ └─ 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" + + " │ └─ columns: [id name]\n" + + " └─ InnerJoin\n" + + " ├─ Eq\n" + + " │ ├─ mc.company_id:8!null\n" + + " │ └─ cn.id:16!null\n" + + " ├─ InnerJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ ci.movie_id:11!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" + + " │ └─ 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:10!null]\n" + + " │ ├─ colSet: (1-8)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: aka_name\n" + + " │ └─ columns: [person_id name]\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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(an.name) as acress_pseudonym, min(t.title) as japanese_anime_movie]\n" + @@ -31588,32 +32796,33 @@ WHERE ci.note ='(voice: English version)' " │ ├─ 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 = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ 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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[jp]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(an.name) as acress_pseudonym, min(t.title) as japanese_anime_movie]\n" + @@ -31645,32 +32854,33 @@ WHERE ci.note ='(voice: English version)' " │ ├─ 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 = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (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" + + " │ └─ 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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[jp]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", }, { @@ -31699,12 +32909,12 @@ WHERE cn.country_code ='[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(a1.name):0!null as writer_pseudo_name, min(t.title):1!null as movie_title]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(a1.name:13!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(a1.name:11!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ ci.movie_id:10!null\n" + + " │ │ ├─ ci.movie_id:8!null\n" + " │ │ └─ t.id:0!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + @@ -31716,7 +32926,7 @@ WHERE cn.country_code ='[us]' " │ └─ columns: [id title]\n" + " └─ InnerJoin\n" + " ├─ Eq\n" + - " │ ├─ ci.role_id:11!null\n" + + " │ ├─ ci.role_id:9!null\n" + " │ └─ rt.id:2!null\n" + " ├─ Filter\n" + " │ ├─ Eq\n" + @@ -31730,54 +32940,53 @@ WHERE cn.country_code ='[us]' " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ a1.person_id:12!null\n" + + " │ │ ├─ a1.person_id:10!null\n" + " │ │ └─ n1.id:4!null\n" + " │ └─ Eq\n" + " │ ├─ n1.id:4!null\n" + - " │ └─ ci.person_id:9!null\n" + + " │ └─ ci.person_id:7!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:12!null\n" + + " ├─ InnerJoin\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" + + " │ │ ├─ ci.movie_id:8!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" + + " │ └─ 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:7!null]\n" + + " │ ├─ colSet: (1-8)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: aka_name\n" + + " │ └─ columns: [person_id name]\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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(a1.name) as writer_pseudo_name, min(t.title) as movie_title]\n" + @@ -31805,28 +33014,29 @@ WHERE cn.country_code ='[us]' " │ ├─ 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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(a1.name) as writer_pseudo_name, min(t.title) as movie_title]\n" + @@ -31854,28 +33064,29 @@ WHERE cn.country_code ='[us]' " │ ├─ 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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", }, { @@ -31904,12 +33115,12 @@ WHERE cn.country_code ='[us]' ExpectedPlan: "Project\n" + " ├─ columns: [min(an1.name):0!null as costume_designer_pseudo, min(t.title):1!null as movie_with_costumes]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(an1.name:13!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(an1.name:11!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ ci.movie_id:10!null\n" + + " │ │ ├─ ci.movie_id:8!null\n" + " │ │ └─ t.id:0!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + @@ -31921,7 +33132,7 @@ WHERE cn.country_code ='[us]' " │ └─ columns: [id title]\n" + " └─ InnerJoin\n" + " ├─ Eq\n" + - " │ ├─ ci.role_id:11!null\n" + + " │ ├─ ci.role_id:9!null\n" + " │ └─ rt.id:2!null\n" + " ├─ Filter\n" + " │ ├─ Eq\n" + @@ -31935,54 +33146,53 @@ WHERE cn.country_code ='[us]' " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ an1.person_id:12!null\n" + + " │ │ ├─ an1.person_id:10!null\n" + " │ │ └─ n1.id:4!null\n" + " │ └─ Eq\n" + " │ ├─ n1.id:4!null\n" + - " │ └─ ci.person_id:9!null\n" + + " │ └─ ci.person_id:7!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:12!null\n" + + " ├─ InnerJoin\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" + + " │ │ ├─ ci.movie_id:8!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" + + " │ └─ 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:7!null]\n" + + " │ ├─ colSet: (1-8)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: aka_name\n" + + " │ └─ columns: [person_id name]\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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(an1.name) as costume_designer_pseudo, min(t.title) as movie_with_costumes]\n" + @@ -32010,28 +33220,29 @@ WHERE cn.country_code ='[us]' " │ ├─ 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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(an1.name) as costume_designer_pseudo, min(t.title) as movie_with_costumes]\n" + @@ -32059,28 +33270,29 @@ WHERE cn.country_code ='[us]' " │ ├─ 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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", }, { @@ -32122,12 +33334,12 @@ WHERE ci.note IN ('(voice)', ExpectedPlan: "Project\n" + " ├─ columns: [min(an.name):0!null as alternative_name, min(chn.name):1!null as character_name, min(t.title):2!null as movie]\n" + " └─ GroupBy\n" + - " ├─ select: MIN(an.name:21!null), MIN(chn.name:19!null), MIN(t.title:1!null)\n" + + " ├─ select: MIN(an.name:19!null), MIN(chn.name:17!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ ci.movie_id:14!null\n" + + " │ │ ├─ ci.movie_id:12!null\n" + " │ │ └─ t.id:0!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + @@ -32147,7 +33359,7 @@ WHERE ci.note IN ('(voice)', " │ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + " ├─ Eq\n" + - " │ ├─ ci.role_id:17!null\n" + + " │ ├─ ci.role_id:15!null\n" + " │ └─ rt.id:3!null\n" + " ├─ Filter\n" + " │ ├─ Eq\n" + @@ -32162,9 +33374,9 @@ WHERE ci.note IN ('(voice)', " ├─ AND\n" + " │ ├─ Eq\n" + " │ │ ├─ n.id:5!null\n" + - " │ │ └─ ci.person_id:13!null\n" + + " │ │ └─ ci.person_id:11!null\n" + " │ └─ Eq\n" + - " │ ├─ an.person_id:20!null\n" + + " │ ├─ an.person_id:18!null\n" + " │ └─ n.id:5!null\n" + " ├─ Filter\n" + " │ ├─ AND\n" + @@ -32178,63 +33390,62 @@ WHERE ci.note IN ('(voice)', " │ ├─ name: name\n" + " │ └─ columns: [id name gender]\n" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ mc.company_id:9!null\n" + + " │ └─ cn.id:20!null\n" + + " ├─ InnerJoin\n" + " │ ├─ Eq\n" + - " │ │ ├─ ci.movie_id:14!null\n" + + " │ │ ├─ ci.movie_id:12!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" + + " │ ├─ 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" + + " │ └─ 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" + + " └─ 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" + "", ExpectedEstimates: "Project\n" + " ├─ columns: [min(an.name) as alternative_name, min(chn.name) as character_name, min(t.title) as movie]\n" + @@ -32266,38 +33477,39 @@ WHERE ci.note IN ('(voice)', " │ ├─ 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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_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" + + " │ └─ 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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", ExpectedAnalysis: "Project\n" + " ├─ columns: [min(an.name) as alternative_name, min(chn.name) as character_name, min(t.title) as movie]\n" + @@ -32329,38 +33541,39 @@ WHERE ci.note IN ('(voice)', " │ ├─ 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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_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" + + " │ └─ 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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", }, { @@ -32400,12 +33613,12 @@ WHERE ci.note = '(voice)' ExpectedPlan: "Project\n" + " ├─ columns: [min(an.name):0!null as alternative_name, min(chn.name):1!null as voiced_character, min(n.name):2!null as voicing_actress, min(t.title):3!null as american_movie]\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:19!null), MIN(chn.name:17!null), MIN(n.name:6!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ ci.movie_id:14!null\n" + + " │ │ ├─ ci.movie_id:12!null\n" + " │ │ └─ t.id:0!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + @@ -32425,7 +33638,7 @@ WHERE ci.note = '(voice)' " │ └─ columns: [id title production_year]\n" + " └─ InnerJoin\n" + " ├─ Eq\n" + - " │ ├─ ci.role_id:17!null\n" + + " │ ├─ ci.role_id:15!null\n" + " │ └─ rt.id:3!null\n" + " ├─ Filter\n" + " │ ├─ Eq\n" + @@ -32440,9 +33653,9 @@ WHERE ci.note = '(voice)' " ├─ AND\n" + " │ ├─ Eq\n" + " │ │ ├─ n.id:5!null\n" + - " │ │ └─ ci.person_id:13!null\n" + + " │ │ └─ ci.person_id:11!null\n" + " │ └─ Eq\n" + - " │ ├─ an.person_id:20!null\n" + + " │ ├─ an.person_id:18!null\n" + " │ └─ n.id:5!null\n" + " ├─ Filter\n" + " │ ├─ AND\n" + @@ -32456,62 +33669,61 @@ WHERE ci.note = '(voice)' " │ ├─ name: name\n" + " │ └─ columns: [id name gender]\n" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ mc.company_id:9!null\n" + + " │ └─ cn.id:20!null\n" + + " ├─ InnerJoin\n" + " │ ├─ Eq\n" + - " │ │ ├─ ci.movie_id:14!null\n" + + " │ │ ├─ ci.movie_id:12!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" + + " │ ├─ 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" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ chn.id:16!null\n" + + " │ │ │ └─ ci.person_role_id:13\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:11!null]\n" + + " │ ├─ colSet: (1-8)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: aka_name\n" + + " │ └─ columns: [person_id name]\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" + "", 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" + @@ -32543,38 +33755,39 @@ WHERE ci.note = '(voice)' " │ ├─ 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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_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" + + " │ └─ 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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\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" + @@ -32606,38 +33819,39 @@ WHERE ci.note = '(voice)' " │ ├─ 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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_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" + + " │ └─ 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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", }, { @@ -32676,12 +33890,12 @@ WHERE ci.note IN ('(voice)', ExpectedPlan: "Project\n" + " ├─ columns: [min(an.name):0!null as alternative_name, min(chn.name):1!null as voiced_character_name, min(n.name):2!null as voicing_actress, min(t.title):3!null as american_movie]\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:17!null), MIN(chn.name:15!null), MIN(n.name:5!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ ci.movie_id:12!null\n" + + " │ │ ├─ ci.movie_id:10!null\n" + " │ │ └─ t.id:0!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + @@ -32693,7 +33907,7 @@ WHERE ci.note IN ('(voice)', " │ └─ columns: [id title]\n" + " └─ InnerJoin\n" + " ├─ Eq\n" + - " │ ├─ ci.role_id:15!null\n" + + " │ ├─ ci.role_id:13!null\n" + " │ └─ rt.id:2!null\n" + " ├─ Filter\n" + " │ ├─ Eq\n" + @@ -32708,9 +33922,9 @@ WHERE ci.note IN ('(voice)', " ├─ AND\n" + " │ ├─ Eq\n" + " │ │ ├─ n.id:4!null\n" + - " │ │ └─ ci.person_id:11!null\n" + + " │ │ └─ ci.person_id:9!null\n" + " │ └─ Eq\n" + - " │ ├─ an.person_id:18!null\n" + + " │ ├─ an.person_id:16!null\n" + " │ └─ n.id:4!null\n" + " ├─ Filter\n" + " │ ├─ AND\n" + @@ -32724,56 +33938,55 @@ WHERE ci.note IN ('(voice)', " │ ├─ name: name\n" + " │ └─ columns: [id name gender]\n" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ mc.company_id:8!null\n" + + " │ └─ cn.id:18!null\n" + + " ├─ InnerJoin\n" + " │ ├─ Eq\n" + - " │ │ ├─ ci.movie_id:12!null\n" + + " │ │ ├─ ci.movie_id:10!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" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ chn.id:14!null\n" + + " │ │ │ └─ ci.person_role_id:11\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:9!null]\n" + + " │ ├─ colSet: (1-8)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: aka_name\n" + + " │ └─ columns: [person_id name]\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" + "", 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" + @@ -32803,36 +34016,37 @@ WHERE ci.note IN ('(voice)', " │ ├─ 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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\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" + @@ -32862,36 +34076,37 @@ WHERE ci.note IN ('(voice)', " │ ├─ 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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", }, { @@ -32929,12 +34144,12 @@ WHERE ci.note IN ('(voice)', ExpectedPlan: "Project\n" + " ├─ columns: [min(an.name):0!null as alternative_name, min(chn.name):1!null as voiced_char_name, min(n.name):2!null as voicing_actress, min(t.title):3!null as american_movie]\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:17!null), MIN(chn.name:15!null), MIN(n.name:5!null), MIN(t.title:1!null)\n" + " ├─ group: \n" + " └─ InnerJoin\n" + " ├─ AND\n" + " │ ├─ Eq\n" + - " │ │ ├─ ci.movie_id:12!null\n" + + " │ │ ├─ ci.movie_id:10!null\n" + " │ │ └─ t.id:0!null\n" + " │ └─ Eq\n" + " │ ├─ t.id:0!null\n" + @@ -32946,7 +34161,7 @@ WHERE ci.note IN ('(voice)', " │ └─ columns: [id title]\n" + " └─ InnerJoin\n" + " ├─ Eq\n" + - " │ ├─ ci.role_id:15!null\n" + + " │ ├─ ci.role_id:13!null\n" + " │ └─ rt.id:2!null\n" + " ├─ Filter\n" + " │ ├─ Eq\n" + @@ -32961,9 +34176,9 @@ WHERE ci.note IN ('(voice)', " ├─ AND\n" + " │ ├─ Eq\n" + " │ │ ├─ n.id:4!null\n" + - " │ │ └─ ci.person_id:11!null\n" + + " │ │ └─ ci.person_id:9!null\n" + " │ └─ Eq\n" + - " │ ├─ an.person_id:18!null\n" + + " │ ├─ an.person_id:16!null\n" + " │ └─ n.id:4!null\n" + " ├─ Filter\n" + " │ ├─ Eq\n" + @@ -32975,56 +34190,55 @@ WHERE ci.note IN ('(voice)', " │ ├─ name: name\n" + " │ └─ columns: [id name gender]\n" + " └─ InnerJoin\n" + - " ├─ AND\n" + + " ├─ Eq\n" + + " │ ├─ mc.company_id:8!null\n" + + " │ └─ cn.id:18!null\n" + + " ├─ InnerJoin\n" + " │ ├─ Eq\n" + - " │ │ ├─ ci.movie_id:12!null\n" + + " │ │ ├─ ci.movie_id:10!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" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ ProcessTable\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\n" + + " │ └─ LookupJoin\n" + + " │ ├─ InnerJoin\n" + + " │ │ ├─ Eq\n" + + " │ │ │ ├─ chn.id:14!null\n" + + " │ │ │ └─ ci.person_role_id:11\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:9!null]\n" + + " │ ├─ colSet: (1-8)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: aka_name\n" + + " │ └─ columns: [person_id name]\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" + "", 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" + @@ -33054,36 +34268,37 @@ WHERE ci.note IN ('(voice)', " │ ├─ 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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\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" + @@ -33113,36 +34328,37 @@ WHERE ci.note IN ('(voice)', " │ ├─ 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" + + " ├─ (mc.company_id = cn.id)\n" + + " ├─ InnerJoin\n" + + " │ ├─ (ci.movie_id = mc.movie_id)\n" + + " │ ├─ TableAlias(mc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: movie_companies\n" + + " │ │ └─ columns: [movie_id company_id]\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" + + " └─ Filter\n" + + " ├─ (cn.country_code = '[us]')\n" + + " └─ TableAlias(cn)\n" + + " └─ Table\n" + + " ├─ name: company_name\n" + + " └─ columns: [id country_code]\n" + "", }, } diff --git a/enginetest/queries/integration_plans.go b/enginetest/queries/integration_plans.go index 8515068c9e..f4a7dc8fd0 100644 --- a/enginetest/queries/integration_plans.go +++ b/enginetest/queries/integration_plans.go @@ -9334,441 +9334,438 @@ WHERE ExpectedPlan: "Distinct\n" + " └─ Project\n" + " ├─ columns: [oxxei.T4IBQ:0!null, oxxei.Z7CP5:3!null, e52ap.KUXQY:7!null, oxxei.BDNYB:1!null, ckele.M6T2N:12!null, oxxei.BTXC5:2 as BTXC5, oxxei.vaf:4 as vaf, oxxei.QCGTS:5 as QCGTS, oxxei.SNY4H:6!null as SNY4H, e52ap.YHVEZ:9!null as YHVEZ, e52ap.YAZ4X:10!null as YAZ4X]\n" + - " └─ Sort(ckele.M6T2N:12!null ASC nullsFirst)\n" + - " └─ Project\n" + - " ├─ columns: [oxxei.T4IBQ:0!null, oxxei.BDNYB:1!null, oxxei.BTXC5:2, oxxei.Z7CP5:3!null, oxxei.vaf:4, oxxei.QCGTS:5, oxxei.SNY4H:6!null, e52ap.KUXQY:7!null, e52ap.BDNYB:8!null, e52ap.YHVEZ:9!null, e52ap.YAZ4X:10!null, ckele.LWQ6O:11!null, ckele.M6T2N:12!null, oxxei.BTXC5:2 as BTXC5, oxxei.vaf:4 as vaf, oxxei.QCGTS:5 as QCGTS, oxxei.SNY4H:6!null as SNY4H, e52ap.YHVEZ:9!null as YHVEZ, e52ap.YAZ4X:10!null as YAZ4X]\n" + - " └─ HashJoin\n" + - " ├─ Eq\n" + - " │ ├─ ckele.LWQ6O:11!null\n" + - " │ └─ oxxei.BDNYB:1!null\n" + - " ├─ HashJoin\n" + - " │ ├─ Eq\n" + - " │ │ ├─ e52ap.BDNYB:8!null\n" + - " │ │ └─ oxxei.BDNYB:1!null\n" + - " │ ├─ SubqueryAlias\n" + - " │ │ ├─ name: oxxei\n" + - " │ │ ├─ outerVisibility: false\n" + - " │ │ ├─ isLateral: false\n" + - " │ │ ├─ cacheable: true\n" + - " │ │ ├─ colSet: (126-132)\n" + - " │ │ ├─ tableId: 15\n" + - " │ │ └─ Project\n" + - " │ │ ├─ columns: [cla.FTQLQ:1!null as T4IBQ, sn.id:12!null as BDNYB, aac.BTXC5:15 as BTXC5, mf.id:4!null as Z7CP5, CASE WHEN NOT\n" + - " │ │ │ └─ mf.LT7K6:9 IS NULL\n" + - " │ │ │ THEN mf.LT7K6:9 ELSE mf.SPPYD:10 END as vaf, CASE WHEN NOT\n" + - " │ │ │ └─ mf.QCGTS:11 IS NULL\n" + - " │ │ │ THEN mf.QCGTS:11 ELSE 0.5 (decimal(2,1)) END as QCGTS, CASE WHEN Eq\n" + - " │ │ │ ├─ vc.ZNP4P:19!null\n" + - " │ │ │ └─ L5Q44 (longtext)\n" + - " │ │ │ THEN 1 (tinyint) ELSE 0 (tinyint) END as SNY4H]\n" + - " │ │ └─ HashJoin\n" + - " │ │ ├─ 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" + - " │ │ │ │ │ └─ 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" + - " │ │ └─ HashLookup\n" + - " │ │ ├─ left-key: TUPLE(w2mao.YH4XB:17!null)\n" + - " │ │ ├─ right-key: TUPLE(vc.id:0!null)\n" + - " │ │ └─ TableAlias(vc)\n" + - " │ │ └─ Table\n" + - " │ │ ├─ name: D34QP\n" + - " │ │ ├─ columns: [id znp4p]\n" + - " │ │ ├─ colSet: (68-73)\n" + - " │ │ └─ tableId: 7\n" + - " │ └─ HashLookup\n" + - " │ ├─ left-key: TUPLE(oxxei.BDNYB:1!null)\n" + - " │ ├─ right-key: TUPLE(e52ap.BDNYB:1!null)\n" + - " │ └─ SubqueryAlias\n" + - " │ ├─ name: e52ap\n" + - " │ ├─ outerVisibility: false\n" + - " │ ├─ isLateral: false\n" + - " │ ├─ cacheable: true\n" + - " │ ├─ colSet: (133-136)\n" + - " │ ├─ tableId: 16\n" + - " │ └─ Project\n" + - " │ ├─ columns: [nd.TW55N:13!null as KUXQY, sn.id:0!null as BDNYB, nma.DZLIM:28!null as YHVEZ, CASE WHEN LessThan\n" + - " │ │ ├─ nd.TCE7A:20\n" + - " │ │ └─ 0.9 (decimal(2,1))\n" + - " │ │ THEN 1 (tinyint) ELSE 0 (tinyint) END as YAZ4X]\n" + - " │ └─ Sort(sn.id:0!null ASC nullsFirst)\n" + - " │ └─ Project\n" + - " │ ├─ columns: [sn.id:0!null, sn.BRQP2:1!null, sn.FFTBJ:2!null, sn.A7XO2:3, sn.KBO7R:4!null, sn.ECDKM:5, sn.NUMK2:6!null, sn.LETOE:7!null, sn.YKSSU:8, sn.FHCYT:9, nd.id:10!null, nd.DKCAJ:11!null, nd.KNG7T:12, nd.TW55N:13!null, nd.QRQXW:14!null, nd.ECXAJ:15!null, nd.FGG57:16, nd.ZH72S:17, nd.FSK67:18!null, nd.XQDYT:19!null, nd.TCE7A:20, nd.IWV2H:21, nd.HPCMS:22!null, nd.N5CC2:23, nd.FHCYT:24, nd.ETAQ7:25, nd.A75X7:26, nma.id:27!null, nma.DZLIM:28!null, nma.F3YUE:29, nd.TW55N:13!null as KUXQY, sn.id:0!null as BDNYB, nma.DZLIM:28!null as YHVEZ, CASE WHEN LessThan\n" + - " │ │ ├─ nd.TCE7A:20\n" + - " │ │ └─ 0.9 (decimal(2,1))\n" + - " │ │ THEN 1 (tinyint) ELSE 0 (tinyint) END as YAZ4X]\n" + - " │ └─ Filter\n" + - " │ ├─ NOT\n" + - " │ │ └─ Eq\n" + - " │ │ ├─ nma.DZLIM:28!null\n" + - " │ │ └─ Q5I4E (longtext)\n" + - " │ └─ LeftOuterLookupJoin\n" + - " │ ├─ LeftOuterMergeJoin\n" + - " │ │ ├─ cmp: Eq\n" + - " │ │ │ ├─ sn.BRQP2:1!null\n" + - " │ │ │ └─ nd.id:10!null\n" + - " │ │ ├─ TableAlias(sn)\n" + - " │ │ │ └─ IndexedTableAccess(NOXN3)\n" + - " │ │ │ ├─ index: [NOXN3.BRQP2]\n" + - " │ │ │ ├─ static: [{[NULL, ∞)}]\n" + - " │ │ │ ├─ colSet: (88-97)\n" + - " │ │ │ ├─ tableId: 10\n" + - " │ │ │ └─ Table\n" + - " │ │ │ ├─ name: NOXN3\n" + - " │ │ │ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + - " │ │ └─ TableAlias(nd)\n" + - " │ │ └─ IndexedTableAccess(E2I7U)\n" + - " │ │ ├─ index: [E2I7U.id]\n" + - " │ │ ├─ static: [{[NULL, ∞)}]\n" + - " │ │ ├─ colSet: (98-114)\n" + - " │ │ ├─ tableId: 11\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" + - " │ └─ TableAlias(nma)\n" + - " │ └─ IndexedTableAccess(TNMXI)\n" + - " │ ├─ index: [TNMXI.id]\n" + - " │ ├─ keys: [nd.HPCMS:22!null]\n" + - " │ ├─ colSet: (115-117)\n" + - " │ ├─ tableId: 12\n" + - " │ └─ Table\n" + - " │ ├─ name: TNMXI\n" + - " │ └─ columns: [id dzlim f3yue]\n" + - " └─ HashLookup\n" + - " ├─ left-key: TUPLE(oxxei.BDNYB:1!null)\n" + - " ├─ right-key: TUPLE(ckele.LWQ6O:0!null)\n" + - " └─ SubqueryAlias\n" + - " ├─ name: ckele\n" + - " ├─ outerVisibility: false\n" + - " ├─ isLateral: false\n" + - " ├─ cacheable: true\n" + - " ├─ colSet: (150,151)\n" + - " ├─ tableId: 18\n" + - " └─ Project\n" + - " ├─ columns: [noxn3.id:1!null as LWQ6O, row_number() over ( order by noxn3.id asc):0!null as M6T2N]\n" + - " └─ Window\n" + - " ├─ row_number() over ( order by noxn3.id ASC)\n" + - " ├─ noxn3.id:0!null\n" + - " └─ Table\n" + - " ├─ name: NOXN3\n" + - " ├─ columns: [id]\n" + - " ├─ colSet: (137-146)\n" + - " └─ tableId: 17\n" + + " └─ Project\n" + + " ├─ columns: [oxxei.T4IBQ:0!null, oxxei.BDNYB:1!null, oxxei.BTXC5:2, oxxei.Z7CP5:3!null, oxxei.vaf:4, oxxei.QCGTS:5, oxxei.SNY4H:6!null, e52ap.KUXQY:7!null, e52ap.BDNYB:8!null, e52ap.YHVEZ:9!null, e52ap.YAZ4X:10!null, ckele.LWQ6O:11!null, ckele.M6T2N:12!null, oxxei.BTXC5:2 as BTXC5, oxxei.vaf:4 as vaf, oxxei.QCGTS:5 as QCGTS, oxxei.SNY4H:6!null as SNY4H, e52ap.YHVEZ:9!null as YHVEZ, e52ap.YAZ4X:10!null as YAZ4X]\n" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ ckele.LWQ6O:11!null\n" + + " │ └─ oxxei.BDNYB:1!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ e52ap.BDNYB:8!null\n" + + " │ │ └─ oxxei.BDNYB:1!null\n" + + " │ ├─ SubqueryAlias\n" + + " │ │ ├─ name: oxxei\n" + + " │ │ ├─ outerVisibility: false\n" + + " │ │ ├─ isLateral: false\n" + + " │ │ ├─ cacheable: true\n" + + " │ │ ├─ colSet: (126-132)\n" + + " │ │ ├─ tableId: 15\n" + + " │ │ └─ Project\n" + + " │ │ ├─ columns: [cla.FTQLQ:1!null as T4IBQ, sn.id:12!null as BDNYB, aac.BTXC5:15 as BTXC5, mf.id:4!null as Z7CP5, CASE WHEN NOT\n" + + " │ │ │ └─ mf.LT7K6:9 IS NULL\n" + + " │ │ │ THEN mf.LT7K6:9 ELSE mf.SPPYD:10 END as vaf, CASE WHEN NOT\n" + + " │ │ │ └─ mf.QCGTS:11 IS NULL\n" + + " │ │ │ THEN mf.QCGTS:11 ELSE 0.5 (decimal(2,1)) END as QCGTS, CASE WHEN Eq\n" + + " │ │ │ ├─ vc.ZNP4P:19!null\n" + + " │ │ │ └─ L5Q44 (longtext)\n" + + " │ │ │ THEN 1 (tinyint) ELSE 0 (tinyint) END as SNY4H]\n" + + " │ │ └─ HashJoin\n" + + " │ │ ├─ 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" + + " │ │ │ │ │ └─ 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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(w2mao.YH4XB:17!null)\n" + + " │ │ ├─ right-key: TUPLE(vc.id:0!null)\n" + + " │ │ └─ TableAlias(vc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: D34QP\n" + + " │ │ ├─ columns: [id znp4p]\n" + + " │ │ ├─ colSet: (68-73)\n" + + " │ │ └─ tableId: 7\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(oxxei.BDNYB:1!null)\n" + + " │ ├─ right-key: TUPLE(e52ap.BDNYB:1!null)\n" + + " │ └─ SubqueryAlias\n" + + " │ ├─ name: e52ap\n" + + " │ ├─ outerVisibility: false\n" + + " │ ├─ isLateral: false\n" + + " │ ├─ cacheable: true\n" + + " │ ├─ colSet: (133-136)\n" + + " │ ├─ tableId: 16\n" + + " │ └─ Project\n" + + " │ ├─ columns: [nd.TW55N:13!null as KUXQY, sn.id:0!null as BDNYB, nma.DZLIM:28!null as YHVEZ, CASE WHEN LessThan\n" + + " │ │ ├─ nd.TCE7A:20\n" + + " │ │ └─ 0.9 (decimal(2,1))\n" + + " │ │ THEN 1 (tinyint) ELSE 0 (tinyint) END as YAZ4X]\n" + + " │ └─ Sort(sn.id:0!null ASC nullsFirst)\n" + + " │ └─ Project\n" + + " │ ├─ columns: [sn.id:0!null, sn.BRQP2:1!null, sn.FFTBJ:2!null, sn.A7XO2:3, sn.KBO7R:4!null, sn.ECDKM:5, sn.NUMK2:6!null, sn.LETOE:7!null, sn.YKSSU:8, sn.FHCYT:9, nd.id:10!null, nd.DKCAJ:11!null, nd.KNG7T:12, nd.TW55N:13!null, nd.QRQXW:14!null, nd.ECXAJ:15!null, nd.FGG57:16, nd.ZH72S:17, nd.FSK67:18!null, nd.XQDYT:19!null, nd.TCE7A:20, nd.IWV2H:21, nd.HPCMS:22!null, nd.N5CC2:23, nd.FHCYT:24, nd.ETAQ7:25, nd.A75X7:26, nma.id:27!null, nma.DZLIM:28!null, nma.F3YUE:29, nd.TW55N:13!null as KUXQY, sn.id:0!null as BDNYB, nma.DZLIM:28!null as YHVEZ, CASE WHEN LessThan\n" + + " │ │ ├─ nd.TCE7A:20\n" + + " │ │ └─ 0.9 (decimal(2,1))\n" + + " │ │ THEN 1 (tinyint) ELSE 0 (tinyint) END as YAZ4X]\n" + + " │ └─ Filter\n" + + " │ ├─ NOT\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ nma.DZLIM:28!null\n" + + " │ │ └─ Q5I4E (longtext)\n" + + " │ └─ LeftOuterLookupJoin\n" + + " │ ├─ LeftOuterMergeJoin\n" + + " │ │ ├─ cmp: Eq\n" + + " │ │ │ ├─ sn.BRQP2:1!null\n" + + " │ │ │ └─ nd.id:10!null\n" + + " │ │ ├─ TableAlias(sn)\n" + + " │ │ │ └─ IndexedTableAccess(NOXN3)\n" + + " │ │ │ ├─ index: [NOXN3.BRQP2]\n" + + " │ │ │ ├─ static: [{[NULL, ∞)}]\n" + + " │ │ │ ├─ colSet: (88-97)\n" + + " │ │ │ ├─ tableId: 10\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: NOXN3\n" + + " │ │ │ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + + " │ │ └─ TableAlias(nd)\n" + + " │ │ └─ IndexedTableAccess(E2I7U)\n" + + " │ │ ├─ index: [E2I7U.id]\n" + + " │ │ ├─ static: [{[NULL, ∞)}]\n" + + " │ │ ├─ colSet: (98-114)\n" + + " │ │ ├─ tableId: 11\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" + + " │ └─ TableAlias(nma)\n" + + " │ └─ IndexedTableAccess(TNMXI)\n" + + " │ ├─ index: [TNMXI.id]\n" + + " │ ├─ keys: [nd.HPCMS:22!null]\n" + + " │ ├─ colSet: (115-117)\n" + + " │ ├─ tableId: 12\n" + + " │ └─ Table\n" + + " │ ├─ name: TNMXI\n" + + " │ └─ columns: [id dzlim f3yue]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(oxxei.BDNYB:1!null)\n" + + " ├─ right-key: TUPLE(ckele.LWQ6O:0!null)\n" + + " └─ SubqueryAlias\n" + + " ├─ name: ckele\n" + + " ├─ outerVisibility: false\n" + + " ├─ isLateral: false\n" + + " ├─ cacheable: true\n" + + " ├─ colSet: (150,151)\n" + + " ├─ tableId: 18\n" + + " └─ Project\n" + + " ├─ columns: [noxn3.id:1!null as LWQ6O, row_number() over ( order by noxn3.id asc):0!null as M6T2N]\n" + + " └─ Window\n" + + " ├─ row_number() over ( order by noxn3.id ASC)\n" + + " ├─ noxn3.id:0!null\n" + + " └─ Table\n" + + " ├─ name: NOXN3\n" + + " ├─ columns: [id]\n" + + " ├─ colSet: (137-146)\n" + + " └─ tableId: 17\n" + "", ExpectedEstimates: "Distinct\n" + " └─ Project\n" + " ├─ columns: [oxxei.T4IBQ, oxxei.Z7CP5, e52ap.KUXQY, oxxei.BDNYB, ckele.M6T2N, oxxei.BTXC5 as BTXC5, oxxei.vaf as vaf, oxxei.QCGTS as QCGTS, oxxei.SNY4H as SNY4H, e52ap.YHVEZ as YHVEZ, e52ap.YAZ4X as YAZ4X]\n" + - " └─ Sort(ckele.M6T2N ASC)\n" + - " └─ Project\n" + - " ├─ columns: [oxxei.T4IBQ, oxxei.BDNYB, oxxei.BTXC5, oxxei.Z7CP5, oxxei.vaf, oxxei.QCGTS, oxxei.SNY4H, e52ap.KUXQY, e52ap.BDNYB, e52ap.YHVEZ, e52ap.YAZ4X, ckele.LWQ6O, ckele.M6T2N, oxxei.BTXC5 as BTXC5, oxxei.vaf as vaf, oxxei.QCGTS as QCGTS, oxxei.SNY4H as SNY4H, e52ap.YHVEZ as YHVEZ, e52ap.YAZ4X as YAZ4X]\n" + - " └─ HashJoin\n" + - " ├─ (ckele.LWQ6O = oxxei.BDNYB)\n" + - " ├─ HashJoin\n" + - " │ ├─ (e52ap.BDNYB = oxxei.BDNYB)\n" + - " │ ├─ SubqueryAlias\n" + - " │ │ ├─ name: oxxei\n" + - " │ │ ├─ outerVisibility: false\n" + - " │ │ ├─ isLateral: false\n" + - " │ │ ├─ cacheable: true\n" + - " │ │ └─ Project\n" + - " │ │ ├─ 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" + - " │ │ └─ 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: (oxxei.BDNYB)\n" + - " │ ├─ right-key: (e52ap.BDNYB)\n" + - " │ └─ SubqueryAlias\n" + - " │ ├─ name: e52ap\n" + - " │ ├─ outerVisibility: false\n" + - " │ ├─ isLateral: false\n" + - " │ ├─ cacheable: true\n" + - " │ └─ Project\n" + - " │ ├─ columns: [nd.TW55N as KUXQY, sn.id as BDNYB, nma.DZLIM as YHVEZ, CASE WHEN (nd.TCE7A < 0.9) THEN 1 ELSE 0 END as YAZ4X]\n" + - " │ └─ Sort(sn.id ASC)\n" + - " │ └─ Project\n" + - " │ ├─ columns: [sn.id, sn.BRQP2, sn.FFTBJ, sn.A7XO2, sn.KBO7R, sn.ECDKM, sn.NUMK2, sn.LETOE, sn.YKSSU, sn.FHCYT, nd.id, nd.DKCAJ, nd.KNG7T, nd.TW55N, nd.QRQXW, nd.ECXAJ, nd.FGG57, nd.ZH72S, nd.FSK67, nd.XQDYT, nd.TCE7A, nd.IWV2H, nd.HPCMS, nd.N5CC2, nd.FHCYT, nd.ETAQ7, nd.A75X7, nma.id, nma.DZLIM, nma.F3YUE, nd.TW55N as KUXQY, sn.id as BDNYB, nma.DZLIM as YHVEZ, CASE WHEN (nd.TCE7A < 0.9) THEN 1 ELSE 0 END as YAZ4X]\n" + - " │ └─ Filter\n" + - " │ ├─ (NOT((nma.DZLIM = 'Q5I4E')))\n" + - " │ └─ LeftOuterLookupJoin\n" + - " │ ├─ LeftOuterMergeJoin\n" + - " │ │ ├─ cmp: (sn.BRQP2 = nd.id)\n" + - " │ │ ├─ TableAlias(sn)\n" + - " │ │ │ └─ IndexedTableAccess(NOXN3)\n" + - " │ │ │ ├─ index: [NOXN3.BRQP2]\n" + - " │ │ │ ├─ filters: [{[NULL, ∞)}]\n" + - " │ │ │ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + - " │ │ └─ TableAlias(nd)\n" + - " │ │ └─ IndexedTableAccess(E2I7U)\n" + - " │ │ ├─ index: [E2I7U.id]\n" + - " │ │ ├─ filters: [{[NULL, ∞)}]\n" + - " │ │ └─ columns: [id dkcaj kng7t tw55n qrqxw ecxaj fgg57 zh72s fsk67 xqdyt tce7a iwv2h hpcms n5cc2 fhcyt etaq7 a75x7]\n" + - " │ └─ TableAlias(nma)\n" + - " │ └─ IndexedTableAccess(TNMXI)\n" + - " │ ├─ index: [TNMXI.id]\n" + - " │ ├─ columns: [id dzlim f3yue]\n" + - " │ └─ keys: nd.HPCMS\n" + - " └─ HashLookup\n" + - " ├─ left-key: (oxxei.BDNYB)\n" + - " ├─ right-key: (ckele.LWQ6O)\n" + - " └─ SubqueryAlias\n" + - " ├─ name: ckele\n" + - " ├─ outerVisibility: false\n" + - " ├─ isLateral: false\n" + - " ├─ cacheable: true\n" + - " └─ Project\n" + - " ├─ columns: [noxn3.id as LWQ6O, row_number() over ( order by noxn3.id asc) as M6T2N]\n" + - " └─ Window(row_number() over ( order by noxn3.id ASC), noxn3.id)\n" + - " └─ Table\n" + - " ├─ name: NOXN3\n" + - " └─ columns: [id]\n" + + " └─ Project\n" + + " ├─ columns: [oxxei.T4IBQ, oxxei.BDNYB, oxxei.BTXC5, oxxei.Z7CP5, oxxei.vaf, oxxei.QCGTS, oxxei.SNY4H, e52ap.KUXQY, e52ap.BDNYB, e52ap.YHVEZ, e52ap.YAZ4X, ckele.LWQ6O, ckele.M6T2N, oxxei.BTXC5 as BTXC5, oxxei.vaf as vaf, oxxei.QCGTS as QCGTS, oxxei.SNY4H as SNY4H, e52ap.YHVEZ as YHVEZ, e52ap.YAZ4X as YAZ4X]\n" + + " └─ HashJoin (estimated cost=427.500 rows=125)\n" + + " ├─ (ckele.LWQ6O = oxxei.BDNYB)\n" + + " ├─ HashJoin (estimated cost=402.250 rows=125)\n" + + " │ ├─ (e52ap.BDNYB = oxxei.BDNYB)\n" + + " │ ├─ SubqueryAlias\n" + + " │ │ ├─ name: oxxei\n" + + " │ │ ├─ outerVisibility: false\n" + + " │ │ ├─ isLateral: false\n" + + " │ │ ├─ cacheable: true\n" + + " │ │ └─ Project\n" + + " │ │ ├─ 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" + + " │ │ └─ 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: (oxxei.BDNYB)\n" + + " │ ├─ right-key: (e52ap.BDNYB)\n" + + " │ └─ SubqueryAlias\n" + + " │ ├─ name: e52ap\n" + + " │ ├─ outerVisibility: false\n" + + " │ ├─ isLateral: false\n" + + " │ ├─ cacheable: true\n" + + " │ └─ Project\n" + + " │ ├─ columns: [nd.TW55N as KUXQY, sn.id as BDNYB, nma.DZLIM as YHVEZ, CASE WHEN (nd.TCE7A < 0.9) THEN 1 ELSE 0 END as YAZ4X]\n" + + " │ └─ Sort(sn.id ASC)\n" + + " │ └─ Project\n" + + " │ ├─ columns: [sn.id, sn.BRQP2, sn.FFTBJ, sn.A7XO2, sn.KBO7R, sn.ECDKM, sn.NUMK2, sn.LETOE, sn.YKSSU, sn.FHCYT, nd.id, nd.DKCAJ, nd.KNG7T, nd.TW55N, nd.QRQXW, nd.ECXAJ, nd.FGG57, nd.ZH72S, nd.FSK67, nd.XQDYT, nd.TCE7A, nd.IWV2H, nd.HPCMS, nd.N5CC2, nd.FHCYT, nd.ETAQ7, nd.A75X7, nma.id, nma.DZLIM, nma.F3YUE, nd.TW55N as KUXQY, sn.id as BDNYB, nma.DZLIM as YHVEZ, CASE WHEN (nd.TCE7A < 0.9) THEN 1 ELSE 0 END as YAZ4X]\n" + + " │ └─ Filter\n" + + " │ ├─ (NOT((nma.DZLIM = 'Q5I4E')))\n" + + " │ └─ LeftOuterLookupJoin\n" + + " │ ├─ LeftOuterMergeJoin\n" + + " │ │ ├─ cmp: (sn.BRQP2 = nd.id)\n" + + " │ │ ├─ TableAlias(sn)\n" + + " │ │ │ └─ IndexedTableAccess(NOXN3)\n" + + " │ │ │ ├─ index: [NOXN3.BRQP2]\n" + + " │ │ │ ├─ filters: [{[NULL, ∞)}]\n" + + " │ │ │ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + + " │ │ └─ TableAlias(nd)\n" + + " │ │ └─ IndexedTableAccess(E2I7U)\n" + + " │ │ ├─ index: [E2I7U.id]\n" + + " │ │ ├─ filters: [{[NULL, ∞)}]\n" + + " │ │ └─ columns: [id dkcaj kng7t tw55n qrqxw ecxaj fgg57 zh72s fsk67 xqdyt tce7a iwv2h hpcms n5cc2 fhcyt etaq7 a75x7]\n" + + " │ └─ TableAlias(nma)\n" + + " │ └─ IndexedTableAccess(TNMXI)\n" + + " │ ├─ index: [TNMXI.id]\n" + + " │ ├─ columns: [id dzlim f3yue]\n" + + " │ └─ keys: nd.HPCMS\n" + + " └─ HashLookup\n" + + " ├─ left-key: (oxxei.BDNYB)\n" + + " ├─ right-key: (ckele.LWQ6O)\n" + + " └─ SubqueryAlias\n" + + " ├─ name: ckele\n" + + " ├─ outerVisibility: false\n" + + " ├─ isLateral: false\n" + + " ├─ cacheable: true\n" + + " └─ Project\n" + + " ├─ columns: [noxn3.id as LWQ6O, row_number() over ( order by noxn3.id asc) as M6T2N]\n" + + " └─ Window(row_number() over ( order by noxn3.id ASC), noxn3.id)\n" + + " └─ Table\n" + + " ├─ name: NOXN3\n" + + " └─ columns: [id]\n" + "", ExpectedAnalysis: "Distinct\n" + " └─ Project\n" + " ├─ columns: [oxxei.T4IBQ, oxxei.Z7CP5, e52ap.KUXQY, oxxei.BDNYB, ckele.M6T2N, oxxei.BTXC5 as BTXC5, oxxei.vaf as vaf, oxxei.QCGTS as QCGTS, oxxei.SNY4H as SNY4H, e52ap.YHVEZ as YHVEZ, e52ap.YAZ4X as YAZ4X]\n" + - " └─ Sort(ckele.M6T2N ASC)\n" + - " └─ Project\n" + - " ├─ columns: [oxxei.T4IBQ, oxxei.BDNYB, oxxei.BTXC5, oxxei.Z7CP5, oxxei.vaf, oxxei.QCGTS, oxxei.SNY4H, e52ap.KUXQY, e52ap.BDNYB, e52ap.YHVEZ, e52ap.YAZ4X, ckele.LWQ6O, ckele.M6T2N, oxxei.BTXC5 as BTXC5, oxxei.vaf as vaf, oxxei.QCGTS as QCGTS, oxxei.SNY4H as SNY4H, e52ap.YHVEZ as YHVEZ, e52ap.YAZ4X as YAZ4X]\n" + - " └─ HashJoin\n" + - " ├─ (ckele.LWQ6O = oxxei.BDNYB)\n" + - " ├─ HashJoin\n" + - " │ ├─ (e52ap.BDNYB = oxxei.BDNYB)\n" + - " │ ├─ SubqueryAlias\n" + - " │ │ ├─ name: oxxei\n" + - " │ │ ├─ outerVisibility: false\n" + - " │ │ ├─ isLateral: false\n" + - " │ │ ├─ cacheable: true\n" + - " │ │ └─ Project\n" + - " │ │ ├─ 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" + - " │ │ └─ 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: (oxxei.BDNYB)\n" + - " │ ├─ right-key: (e52ap.BDNYB)\n" + - " │ └─ SubqueryAlias\n" + - " │ ├─ name: e52ap\n" + - " │ ├─ outerVisibility: false\n" + - " │ ├─ isLateral: false\n" + - " │ ├─ cacheable: true\n" + - " │ └─ Project\n" + - " │ ├─ columns: [nd.TW55N as KUXQY, sn.id as BDNYB, nma.DZLIM as YHVEZ, CASE WHEN (nd.TCE7A < 0.9) THEN 1 ELSE 0 END as YAZ4X]\n" + - " │ └─ Sort(sn.id ASC)\n" + - " │ └─ Project\n" + - " │ ├─ columns: [sn.id, sn.BRQP2, sn.FFTBJ, sn.A7XO2, sn.KBO7R, sn.ECDKM, sn.NUMK2, sn.LETOE, sn.YKSSU, sn.FHCYT, nd.id, nd.DKCAJ, nd.KNG7T, nd.TW55N, nd.QRQXW, nd.ECXAJ, nd.FGG57, nd.ZH72S, nd.FSK67, nd.XQDYT, nd.TCE7A, nd.IWV2H, nd.HPCMS, nd.N5CC2, nd.FHCYT, nd.ETAQ7, nd.A75X7, nma.id, nma.DZLIM, nma.F3YUE, nd.TW55N as KUXQY, sn.id as BDNYB, nma.DZLIM as YHVEZ, CASE WHEN (nd.TCE7A < 0.9) THEN 1 ELSE 0 END as YAZ4X]\n" + - " │ └─ Filter\n" + - " │ ├─ (NOT((nma.DZLIM = 'Q5I4E')))\n" + - " │ └─ LeftOuterLookupJoin\n" + - " │ ├─ LeftOuterMergeJoin\n" + - " │ │ ├─ cmp: (sn.BRQP2 = nd.id)\n" + - " │ │ ├─ TableAlias(sn)\n" + - " │ │ │ └─ IndexedTableAccess(NOXN3)\n" + - " │ │ │ ├─ index: [NOXN3.BRQP2]\n" + - " │ │ │ ├─ filters: [{[NULL, ∞)}]\n" + - " │ │ │ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + - " │ │ └─ TableAlias(nd)\n" + - " │ │ └─ IndexedTableAccess(E2I7U)\n" + - " │ │ ├─ index: [E2I7U.id]\n" + - " │ │ ├─ filters: [{[NULL, ∞)}]\n" + - " │ │ └─ columns: [id dkcaj kng7t tw55n qrqxw ecxaj fgg57 zh72s fsk67 xqdyt tce7a iwv2h hpcms n5cc2 fhcyt etaq7 a75x7]\n" + - " │ └─ TableAlias(nma)\n" + - " │ └─ IndexedTableAccess(TNMXI)\n" + - " │ ├─ index: [TNMXI.id]\n" + - " │ ├─ columns: [id dzlim f3yue]\n" + - " │ └─ keys: nd.HPCMS\n" + - " └─ HashLookup\n" + - " ├─ left-key: (oxxei.BDNYB)\n" + - " ├─ right-key: (ckele.LWQ6O)\n" + - " └─ SubqueryAlias\n" + - " ├─ name: ckele\n" + - " ├─ outerVisibility: false\n" + - " ├─ isLateral: false\n" + - " ├─ cacheable: true\n" + - " └─ Project\n" + - " ├─ columns: [noxn3.id as LWQ6O, row_number() over ( order by noxn3.id asc) as M6T2N]\n" + - " └─ Window(row_number() over ( order by noxn3.id ASC), noxn3.id)\n" + - " └─ Table\n" + - " ├─ name: NOXN3\n" + - " └─ columns: [id]\n" + + " └─ Project\n" + + " ├─ columns: [oxxei.T4IBQ, oxxei.BDNYB, oxxei.BTXC5, oxxei.Z7CP5, oxxei.vaf, oxxei.QCGTS, oxxei.SNY4H, e52ap.KUXQY, e52ap.BDNYB, e52ap.YHVEZ, e52ap.YAZ4X, ckele.LWQ6O, ckele.M6T2N, oxxei.BTXC5 as BTXC5, oxxei.vaf as vaf, oxxei.QCGTS as QCGTS, oxxei.SNY4H as SNY4H, e52ap.YHVEZ as YHVEZ, e52ap.YAZ4X as YAZ4X]\n" + + " └─ HashJoin (estimated cost=427.500 rows=125) (actual rows=0 loops=1)\n" + + " ├─ (ckele.LWQ6O = oxxei.BDNYB)\n" + + " ├─ HashJoin (estimated cost=402.250 rows=125) (actual rows=0 loops=1)\n" + + " │ ├─ (e52ap.BDNYB = oxxei.BDNYB)\n" + + " │ ├─ SubqueryAlias\n" + + " │ │ ├─ name: oxxei\n" + + " │ │ ├─ outerVisibility: false\n" + + " │ │ ├─ isLateral: false\n" + + " │ │ ├─ cacheable: true\n" + + " │ │ └─ Project\n" + + " │ │ ├─ 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" + + " │ │ └─ 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: (oxxei.BDNYB)\n" + + " │ ├─ right-key: (e52ap.BDNYB)\n" + + " │ └─ SubqueryAlias\n" + + " │ ├─ name: e52ap\n" + + " │ ├─ outerVisibility: false\n" + + " │ ├─ isLateral: false\n" + + " │ ├─ cacheable: true\n" + + " │ └─ Project\n" + + " │ ├─ columns: [nd.TW55N as KUXQY, sn.id as BDNYB, nma.DZLIM as YHVEZ, CASE WHEN (nd.TCE7A < 0.9) THEN 1 ELSE 0 END as YAZ4X]\n" + + " │ └─ Sort(sn.id ASC)\n" + + " │ └─ Project\n" + + " │ ├─ columns: [sn.id, sn.BRQP2, sn.FFTBJ, sn.A7XO2, sn.KBO7R, sn.ECDKM, sn.NUMK2, sn.LETOE, sn.YKSSU, sn.FHCYT, nd.id, nd.DKCAJ, nd.KNG7T, nd.TW55N, nd.QRQXW, nd.ECXAJ, nd.FGG57, nd.ZH72S, nd.FSK67, nd.XQDYT, nd.TCE7A, nd.IWV2H, nd.HPCMS, nd.N5CC2, nd.FHCYT, nd.ETAQ7, nd.A75X7, nma.id, nma.DZLIM, nma.F3YUE, nd.TW55N as KUXQY, sn.id as BDNYB, nma.DZLIM as YHVEZ, CASE WHEN (nd.TCE7A < 0.9) THEN 1 ELSE 0 END as YAZ4X]\n" + + " │ └─ Filter\n" + + " │ ├─ (NOT((nma.DZLIM = 'Q5I4E')))\n" + + " │ └─ LeftOuterLookupJoin\n" + + " │ ├─ LeftOuterMergeJoin\n" + + " │ │ ├─ cmp: (sn.BRQP2 = nd.id)\n" + + " │ │ ├─ TableAlias(sn)\n" + + " │ │ │ └─ IndexedTableAccess(NOXN3)\n" + + " │ │ │ ├─ index: [NOXN3.BRQP2]\n" + + " │ │ │ ├─ filters: [{[NULL, ∞)}]\n" + + " │ │ │ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + + " │ │ └─ TableAlias(nd)\n" + + " │ │ └─ IndexedTableAccess(E2I7U)\n" + + " │ │ ├─ index: [E2I7U.id]\n" + + " │ │ ├─ filters: [{[NULL, ∞)}]\n" + + " │ │ └─ columns: [id dkcaj kng7t tw55n qrqxw ecxaj fgg57 zh72s fsk67 xqdyt tce7a iwv2h hpcms n5cc2 fhcyt etaq7 a75x7]\n" + + " │ └─ TableAlias(nma)\n" + + " │ └─ IndexedTableAccess(TNMXI)\n" + + " │ ├─ index: [TNMXI.id]\n" + + " │ ├─ columns: [id dzlim f3yue]\n" + + " │ └─ keys: nd.HPCMS\n" + + " └─ HashLookup\n" + + " ├─ left-key: (oxxei.BDNYB)\n" + + " ├─ right-key: (ckele.LWQ6O)\n" + + " └─ SubqueryAlias\n" + + " ├─ name: ckele\n" + + " ├─ outerVisibility: false\n" + + " ├─ isLateral: false\n" + + " ├─ cacheable: true\n" + + " └─ Project\n" + + " ├─ columns: [noxn3.id as LWQ6O, row_number() over ( order by noxn3.id asc) as M6T2N]\n" + + " └─ Window(row_number() over ( order by noxn3.id ASC), noxn3.id)\n" + + " └─ Table\n" + + " ├─ name: NOXN3\n" + + " └─ columns: [id]\n" + "", }, { @@ -9840,431 +9837,428 @@ WHERE ExpectedPlan: "Distinct\n" + " └─ Project\n" + " ├─ columns: [oxxei.T4IBQ:0!null, oxxei.Z7CP5:3!null, e52ap.KUXQY:7!null, oxxei.BDNYB:1!null, ckele.M6T2N:12!null, oxxei.BTXC5:2 as BTXC5, oxxei.vaf:4 as vaf, oxxei.QCGTS:5 as QCGTS, oxxei.SNY4H:6!null as SNY4H, e52ap.YHVEZ:9!null as YHVEZ, e52ap.YAZ4X:10!null as YAZ4X]\n" + - " └─ Sort(ckele.M6T2N:12!null ASC nullsFirst)\n" + - " └─ Project\n" + - " ├─ columns: [oxxei.T4IBQ:0!null, oxxei.BDNYB:1!null, oxxei.BTXC5:2, oxxei.Z7CP5:3!null, oxxei.vaf:4, oxxei.QCGTS:5, oxxei.SNY4H:6!null, e52ap.KUXQY:7!null, e52ap.BDNYB:8!null, e52ap.YHVEZ:9!null, e52ap.YAZ4X:10!null, ckele.LWQ6O:11!null, ckele.M6T2N:12!null, oxxei.BTXC5:2 as BTXC5, oxxei.vaf:4 as vaf, oxxei.QCGTS:5 as QCGTS, oxxei.SNY4H:6!null as SNY4H, e52ap.YHVEZ:9!null as YHVEZ, e52ap.YAZ4X:10!null as YAZ4X]\n" + - " └─ HashJoin\n" + - " ├─ Eq\n" + - " │ ├─ ckele.LWQ6O:11!null\n" + - " │ └─ oxxei.BDNYB:1!null\n" + - " ├─ HashJoin\n" + - " │ ├─ Eq\n" + - " │ │ ├─ e52ap.BDNYB:8!null\n" + - " │ │ └─ oxxei.BDNYB:1!null\n" + - " │ ├─ SubqueryAlias\n" + - " │ │ ├─ name: oxxei\n" + - " │ │ ├─ outerVisibility: false\n" + - " │ │ ├─ isLateral: false\n" + - " │ │ ├─ cacheable: true\n" + - " │ │ ├─ colSet: (126-132)\n" + - " │ │ ├─ tableId: 15\n" + - " │ │ └─ Project\n" + - " │ │ ├─ columns: [cla.FTQLQ:15!null as T4IBQ, sn.id:0!null as BDNYB, aac.BTXC5:13 as BTXC5, mf.id:2!null as Z7CP5, CASE WHEN NOT\n" + - " │ │ │ └─ mf.LT7K6:7 IS NULL\n" + - " │ │ │ THEN mf.LT7K6:7 ELSE mf.SPPYD:8 END as vaf, CASE WHEN NOT\n" + - " │ │ │ └─ mf.QCGTS:9 IS NULL\n" + - " │ │ │ THEN mf.QCGTS:9 ELSE 0.5 (decimal(2,1)) END as QCGTS, CASE WHEN Eq\n" + - " │ │ │ ├─ vc.ZNP4P:19!null\n" + - " │ │ │ └─ L5Q44 (longtext)\n" + - " │ │ │ THEN 1 (tinyint) ELSE 0 (tinyint) END as SNY4H]\n" + - " │ │ └─ 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" + - " │ │ │ │ ├─ LookupJoin\n" + - " │ │ │ │ │ ├─ LookupJoin\n" + - " │ │ │ │ │ │ ├─ TableAlias(sn)\n" + - " │ │ │ │ │ │ │ └─ Table\n" + - " │ │ │ │ │ │ │ ├─ name: NOXN3\n" + - " │ │ │ │ │ │ │ ├─ columns: [id brqp2]\n" + - " │ │ │ │ │ │ │ ├─ colSet: (52-61)\n" + - " │ │ │ │ │ │ │ └─ tableId: 4\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" + - " │ │ │ │ │ │ ├─ keys: [sn.BRQP2:1!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(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" + - " │ │ │ │ └─ 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" + - " │ │ └─ HashLookup\n" + - " │ │ ├─ left-key: TUPLE(w2mao.YH4XB:11!null)\n" + - " │ │ ├─ right-key: TUPLE(vc.id:0!null)\n" + - " │ │ └─ TableAlias(vc)\n" + - " │ │ └─ Table\n" + - " │ │ ├─ name: D34QP\n" + - " │ │ ├─ columns: [id znp4p]\n" + - " │ │ ├─ colSet: (68-73)\n" + - " │ │ └─ tableId: 7\n" + - " │ └─ HashLookup\n" + - " │ ├─ left-key: TUPLE(oxxei.BDNYB:1!null)\n" + - " │ ├─ right-key: TUPLE(e52ap.BDNYB:1!null)\n" + - " │ └─ SubqueryAlias\n" + - " │ ├─ name: e52ap\n" + - " │ ├─ outerVisibility: false\n" + - " │ ├─ isLateral: false\n" + - " │ ├─ cacheable: true\n" + - " │ ├─ colSet: (133-136)\n" + - " │ ├─ tableId: 16\n" + - " │ └─ Project\n" + - " │ ├─ columns: [nd.TW55N:13!null as KUXQY, sn.id:0!null as BDNYB, nma.DZLIM:28!null as YHVEZ, CASE WHEN LessThan\n" + - " │ │ ├─ nd.TCE7A:20\n" + - " │ │ └─ 0.9 (decimal(2,1))\n" + - " │ │ THEN 1 (tinyint) ELSE 0 (tinyint) END as YAZ4X]\n" + - " │ └─ Sort(sn.id:0!null ASC nullsFirst)\n" + - " │ └─ Project\n" + - " │ ├─ columns: [sn.id:0!null, sn.BRQP2:1!null, sn.FFTBJ:2!null, sn.A7XO2:3, sn.KBO7R:4!null, sn.ECDKM:5, sn.NUMK2:6!null, sn.LETOE:7!null, sn.YKSSU:8, sn.FHCYT:9, nd.id:10!null, nd.DKCAJ:11!null, nd.KNG7T:12, nd.TW55N:13!null, nd.QRQXW:14!null, nd.ECXAJ:15!null, nd.FGG57:16, nd.ZH72S:17, nd.FSK67:18!null, nd.XQDYT:19!null, nd.TCE7A:20, nd.IWV2H:21, nd.HPCMS:22!null, nd.N5CC2:23, nd.FHCYT:24, nd.ETAQ7:25, nd.A75X7:26, nma.id:27!null, nma.DZLIM:28!null, nma.F3YUE:29, nd.TW55N:13!null as KUXQY, sn.id:0!null as BDNYB, nma.DZLIM:28!null as YHVEZ, CASE WHEN LessThan\n" + - " │ │ ├─ nd.TCE7A:20\n" + - " │ │ └─ 0.9 (decimal(2,1))\n" + - " │ │ THEN 1 (tinyint) ELSE 0 (tinyint) END as YAZ4X]\n" + - " │ └─ Filter\n" + - " │ ├─ NOT\n" + - " │ │ └─ Eq\n" + - " │ │ ├─ nma.DZLIM:28!null\n" + - " │ │ └─ Q5I4E (longtext)\n" + - " │ └─ LeftOuterLookupJoin\n" + - " │ ├─ LeftOuterMergeJoin\n" + - " │ │ ├─ cmp: Eq\n" + - " │ │ │ ├─ sn.BRQP2:1!null\n" + - " │ │ │ └─ nd.id:10!null\n" + - " │ │ ├─ TableAlias(sn)\n" + - " │ │ │ └─ IndexedTableAccess(NOXN3)\n" + - " │ │ │ ├─ index: [NOXN3.BRQP2]\n" + - " │ │ │ ├─ static: [{[NULL, ∞)}]\n" + - " │ │ │ ├─ colSet: (88-97)\n" + - " │ │ │ ├─ tableId: 10\n" + - " │ │ │ └─ Table\n" + - " │ │ │ ├─ name: NOXN3\n" + - " │ │ │ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + - " │ │ └─ TableAlias(nd)\n" + - " │ │ └─ IndexedTableAccess(E2I7U)\n" + - " │ │ ├─ index: [E2I7U.id]\n" + - " │ │ ├─ static: [{[NULL, ∞)}]\n" + - " │ │ ├─ colSet: (98-114)\n" + - " │ │ ├─ tableId: 11\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" + - " │ └─ TableAlias(nma)\n" + - " │ └─ IndexedTableAccess(TNMXI)\n" + - " │ ├─ index: [TNMXI.id]\n" + - " │ ├─ keys: [nd.HPCMS:22!null]\n" + - " │ ├─ colSet: (115-117)\n" + - " │ ├─ tableId: 12\n" + - " │ └─ Table\n" + - " │ ├─ name: TNMXI\n" + - " │ └─ columns: [id dzlim f3yue]\n" + - " └─ HashLookup\n" + - " ├─ left-key: TUPLE(oxxei.BDNYB:1!null)\n" + - " ├─ right-key: TUPLE(ckele.LWQ6O:0!null)\n" + - " └─ SubqueryAlias\n" + - " ├─ name: ckele\n" + - " ├─ outerVisibility: false\n" + - " ├─ isLateral: false\n" + - " ├─ cacheable: true\n" + - " ├─ colSet: (150,151)\n" + - " ├─ tableId: 18\n" + - " └─ Project\n" + - " ├─ columns: [noxn3.id:1!null as LWQ6O, row_number() over ( order by noxn3.id asc):0!null as M6T2N]\n" + - " └─ Window\n" + - " ├─ row_number() over ( order by noxn3.id ASC)\n" + - " ├─ noxn3.id:0!null\n" + - " └─ Table\n" + - " ├─ name: NOXN3\n" + - " ├─ columns: [id]\n" + - " ├─ colSet: (137-146)\n" + - " └─ tableId: 17\n" + + " └─ Project\n" + + " ├─ columns: [oxxei.T4IBQ:0!null, oxxei.BDNYB:1!null, oxxei.BTXC5:2, oxxei.Z7CP5:3!null, oxxei.vaf:4, oxxei.QCGTS:5, oxxei.SNY4H:6!null, e52ap.KUXQY:7!null, e52ap.BDNYB:8!null, e52ap.YHVEZ:9!null, e52ap.YAZ4X:10!null, ckele.LWQ6O:11!null, ckele.M6T2N:12!null, oxxei.BTXC5:2 as BTXC5, oxxei.vaf:4 as vaf, oxxei.QCGTS:5 as QCGTS, oxxei.SNY4H:6!null as SNY4H, e52ap.YHVEZ:9!null as YHVEZ, e52ap.YAZ4X:10!null as YAZ4X]\n" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ ckele.LWQ6O:11!null\n" + + " │ └─ oxxei.BDNYB:1!null\n" + + " ├─ HashJoin\n" + + " │ ├─ Eq\n" + + " │ │ ├─ e52ap.BDNYB:8!null\n" + + " │ │ └─ oxxei.BDNYB:1!null\n" + + " │ ├─ SubqueryAlias\n" + + " │ │ ├─ name: oxxei\n" + + " │ │ ├─ outerVisibility: false\n" + + " │ │ ├─ isLateral: false\n" + + " │ │ ├─ cacheable: true\n" + + " │ │ ├─ colSet: (126-132)\n" + + " │ │ ├─ tableId: 15\n" + + " │ │ └─ Project\n" + + " │ │ ├─ columns: [cla.FTQLQ:15!null as T4IBQ, sn.id:0!null as BDNYB, aac.BTXC5:13 as BTXC5, mf.id:2!null as Z7CP5, CASE WHEN NOT\n" + + " │ │ │ └─ mf.LT7K6:7 IS NULL\n" + + " │ │ │ THEN mf.LT7K6:7 ELSE mf.SPPYD:8 END as vaf, CASE WHEN NOT\n" + + " │ │ │ └─ mf.QCGTS:9 IS NULL\n" + + " │ │ │ THEN mf.QCGTS:9 ELSE 0.5 (decimal(2,1)) END as QCGTS, CASE WHEN Eq\n" + + " │ │ │ ├─ vc.ZNP4P:19!null\n" + + " │ │ │ └─ L5Q44 (longtext)\n" + + " │ │ │ THEN 1 (tinyint) ELSE 0 (tinyint) END as SNY4H]\n" + + " │ │ └─ 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" + + " │ │ │ │ ├─ LookupJoin\n" + + " │ │ │ │ │ ├─ LookupJoin\n" + + " │ │ │ │ │ │ ├─ TableAlias(sn)\n" + + " │ │ │ │ │ │ │ └─ Table\n" + + " │ │ │ │ │ │ │ ├─ name: NOXN3\n" + + " │ │ │ │ │ │ │ ├─ columns: [id brqp2]\n" + + " │ │ │ │ │ │ │ ├─ colSet: (52-61)\n" + + " │ │ │ │ │ │ │ └─ tableId: 4\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" + + " │ │ │ │ │ │ ├─ keys: [sn.BRQP2:1!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(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" + + " │ │ │ │ └─ 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" + + " │ │ └─ HashLookup\n" + + " │ │ ├─ left-key: TUPLE(w2mao.YH4XB:11!null)\n" + + " │ │ ├─ right-key: TUPLE(vc.id:0!null)\n" + + " │ │ └─ TableAlias(vc)\n" + + " │ │ └─ Table\n" + + " │ │ ├─ name: D34QP\n" + + " │ │ ├─ columns: [id znp4p]\n" + + " │ │ ├─ colSet: (68-73)\n" + + " │ │ └─ tableId: 7\n" + + " │ └─ HashLookup\n" + + " │ ├─ left-key: TUPLE(oxxei.BDNYB:1!null)\n" + + " │ ├─ right-key: TUPLE(e52ap.BDNYB:1!null)\n" + + " │ └─ SubqueryAlias\n" + + " │ ├─ name: e52ap\n" + + " │ ├─ outerVisibility: false\n" + + " │ ├─ isLateral: false\n" + + " │ ├─ cacheable: true\n" + + " │ ├─ colSet: (133-136)\n" + + " │ ├─ tableId: 16\n" + + " │ └─ Project\n" + + " │ ├─ columns: [nd.TW55N:13!null as KUXQY, sn.id:0!null as BDNYB, nma.DZLIM:28!null as YHVEZ, CASE WHEN LessThan\n" + + " │ │ ├─ nd.TCE7A:20\n" + + " │ │ └─ 0.9 (decimal(2,1))\n" + + " │ │ THEN 1 (tinyint) ELSE 0 (tinyint) END as YAZ4X]\n" + + " │ └─ Sort(sn.id:0!null ASC nullsFirst)\n" + + " │ └─ Project\n" + + " │ ├─ columns: [sn.id:0!null, sn.BRQP2:1!null, sn.FFTBJ:2!null, sn.A7XO2:3, sn.KBO7R:4!null, sn.ECDKM:5, sn.NUMK2:6!null, sn.LETOE:7!null, sn.YKSSU:8, sn.FHCYT:9, nd.id:10!null, nd.DKCAJ:11!null, nd.KNG7T:12, nd.TW55N:13!null, nd.QRQXW:14!null, nd.ECXAJ:15!null, nd.FGG57:16, nd.ZH72S:17, nd.FSK67:18!null, nd.XQDYT:19!null, nd.TCE7A:20, nd.IWV2H:21, nd.HPCMS:22!null, nd.N5CC2:23, nd.FHCYT:24, nd.ETAQ7:25, nd.A75X7:26, nma.id:27!null, nma.DZLIM:28!null, nma.F3YUE:29, nd.TW55N:13!null as KUXQY, sn.id:0!null as BDNYB, nma.DZLIM:28!null as YHVEZ, CASE WHEN LessThan\n" + + " │ │ ├─ nd.TCE7A:20\n" + + " │ │ └─ 0.9 (decimal(2,1))\n" + + " │ │ THEN 1 (tinyint) ELSE 0 (tinyint) END as YAZ4X]\n" + + " │ └─ Filter\n" + + " │ ├─ NOT\n" + + " │ │ └─ Eq\n" + + " │ │ ├─ nma.DZLIM:28!null\n" + + " │ │ └─ Q5I4E (longtext)\n" + + " │ └─ LeftOuterLookupJoin\n" + + " │ ├─ LeftOuterMergeJoin\n" + + " │ │ ├─ cmp: Eq\n" + + " │ │ │ ├─ sn.BRQP2:1!null\n" + + " │ │ │ └─ nd.id:10!null\n" + + " │ │ ├─ TableAlias(sn)\n" + + " │ │ │ └─ IndexedTableAccess(NOXN3)\n" + + " │ │ │ ├─ index: [NOXN3.BRQP2]\n" + + " │ │ │ ├─ static: [{[NULL, ∞)}]\n" + + " │ │ │ ├─ colSet: (88-97)\n" + + " │ │ │ ├─ tableId: 10\n" + + " │ │ │ └─ Table\n" + + " │ │ │ ├─ name: NOXN3\n" + + " │ │ │ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + + " │ │ └─ TableAlias(nd)\n" + + " │ │ └─ IndexedTableAccess(E2I7U)\n" + + " │ │ ├─ index: [E2I7U.id]\n" + + " │ │ ├─ static: [{[NULL, ∞)}]\n" + + " │ │ ├─ colSet: (98-114)\n" + + " │ │ ├─ tableId: 11\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" + + " │ └─ TableAlias(nma)\n" + + " │ └─ IndexedTableAccess(TNMXI)\n" + + " │ ├─ index: [TNMXI.id]\n" + + " │ ├─ keys: [nd.HPCMS:22!null]\n" + + " │ ├─ colSet: (115-117)\n" + + " │ ├─ tableId: 12\n" + + " │ └─ Table\n" + + " │ ├─ name: TNMXI\n" + + " │ └─ columns: [id dzlim f3yue]\n" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(oxxei.BDNYB:1!null)\n" + + " ├─ right-key: TUPLE(ckele.LWQ6O:0!null)\n" + + " └─ SubqueryAlias\n" + + " ├─ name: ckele\n" + + " ├─ outerVisibility: false\n" + + " ├─ isLateral: false\n" + + " ├─ cacheable: true\n" + + " ├─ colSet: (150,151)\n" + + " ├─ tableId: 18\n" + + " └─ Project\n" + + " ├─ columns: [noxn3.id:1!null as LWQ6O, row_number() over ( order by noxn3.id asc):0!null as M6T2N]\n" + + " └─ Window\n" + + " ├─ row_number() over ( order by noxn3.id ASC)\n" + + " ├─ noxn3.id:0!null\n" + + " └─ Table\n" + + " ├─ name: NOXN3\n" + + " ├─ columns: [id]\n" + + " ├─ colSet: (137-146)\n" + + " └─ tableId: 17\n" + "", ExpectedEstimates: "Distinct\n" + " └─ Project\n" + " ├─ columns: [oxxei.T4IBQ, oxxei.Z7CP5, e52ap.KUXQY, oxxei.BDNYB, ckele.M6T2N, oxxei.BTXC5 as BTXC5, oxxei.vaf as vaf, oxxei.QCGTS as QCGTS, oxxei.SNY4H as SNY4H, e52ap.YHVEZ as YHVEZ, e52ap.YAZ4X as YAZ4X]\n" + - " └─ Sort(ckele.M6T2N ASC)\n" + - " └─ Project\n" + - " ├─ columns: [oxxei.T4IBQ, oxxei.BDNYB, oxxei.BTXC5, oxxei.Z7CP5, oxxei.vaf, oxxei.QCGTS, oxxei.SNY4H, e52ap.KUXQY, e52ap.BDNYB, e52ap.YHVEZ, e52ap.YAZ4X, ckele.LWQ6O, ckele.M6T2N, oxxei.BTXC5 as BTXC5, oxxei.vaf as vaf, oxxei.QCGTS as QCGTS, oxxei.SNY4H as SNY4H, e52ap.YHVEZ as YHVEZ, e52ap.YAZ4X as YAZ4X]\n" + - " └─ HashJoin\n" + - " ├─ (ckele.LWQ6O = oxxei.BDNYB)\n" + - " ├─ HashJoin\n" + - " │ ├─ (e52ap.BDNYB = oxxei.BDNYB)\n" + - " │ ├─ SubqueryAlias\n" + - " │ │ ├─ name: oxxei\n" + - " │ │ ├─ outerVisibility: false\n" + - " │ │ ├─ isLateral: false\n" + - " │ │ ├─ cacheable: true\n" + - " │ │ └─ Project\n" + - " │ │ ├─ 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" + - " │ │ │ │ │ ├─ LookupJoin\n" + - " │ │ │ │ │ │ ├─ TableAlias(sn)\n" + - " │ │ │ │ │ │ │ └─ Table\n" + - " │ │ │ │ │ │ │ ├─ name: NOXN3\n" + - " │ │ │ │ │ │ │ └─ columns: [id brqp2]\n" + - " │ │ │ │ │ │ └─ Filter\n" + - " │ │ │ │ │ │ ├─ (mf.FSDY2 HASH IN ('SRARY', 'UBQWG'))\n" + - " │ │ │ │ │ │ └─ TableAlias(mf)\n" + - " │ │ │ │ │ │ └─ IndexedTableAccess(HGMQ6)\n" + - " │ │ │ │ │ │ ├─ 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" + - " │ │ └─ 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: (oxxei.BDNYB)\n" + - " │ ├─ right-key: (e52ap.BDNYB)\n" + - " │ └─ SubqueryAlias\n" + - " │ ├─ name: e52ap\n" + - " │ ├─ outerVisibility: false\n" + - " │ ├─ isLateral: false\n" + - " │ ├─ cacheable: true\n" + - " │ └─ Project\n" + - " │ ├─ columns: [nd.TW55N as KUXQY, sn.id as BDNYB, nma.DZLIM as YHVEZ, CASE WHEN (nd.TCE7A < 0.9) THEN 1 ELSE 0 END as YAZ4X]\n" + - " │ └─ Sort(sn.id ASC)\n" + - " │ └─ Project\n" + - " │ ├─ columns: [sn.id, sn.BRQP2, sn.FFTBJ, sn.A7XO2, sn.KBO7R, sn.ECDKM, sn.NUMK2, sn.LETOE, sn.YKSSU, sn.FHCYT, nd.id, nd.DKCAJ, nd.KNG7T, nd.TW55N, nd.QRQXW, nd.ECXAJ, nd.FGG57, nd.ZH72S, nd.FSK67, nd.XQDYT, nd.TCE7A, nd.IWV2H, nd.HPCMS, nd.N5CC2, nd.FHCYT, nd.ETAQ7, nd.A75X7, nma.id, nma.DZLIM, nma.F3YUE, nd.TW55N as KUXQY, sn.id as BDNYB, nma.DZLIM as YHVEZ, CASE WHEN (nd.TCE7A < 0.9) THEN 1 ELSE 0 END as YAZ4X]\n" + - " │ └─ Filter\n" + - " │ ├─ (NOT((nma.DZLIM = 'Q5I4E')))\n" + - " │ └─ LeftOuterLookupJoin\n" + - " │ ├─ LeftOuterMergeJoin\n" + - " │ │ ├─ cmp: (sn.BRQP2 = nd.id)\n" + - " │ │ ├─ TableAlias(sn)\n" + - " │ │ │ └─ IndexedTableAccess(NOXN3)\n" + - " │ │ │ ├─ index: [NOXN3.BRQP2]\n" + - " │ │ │ ├─ filters: [{[NULL, ∞)}]\n" + - " │ │ │ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + - " │ │ └─ TableAlias(nd)\n" + - " │ │ └─ IndexedTableAccess(E2I7U)\n" + - " │ │ ├─ index: [E2I7U.id]\n" + - " │ │ ├─ filters: [{[NULL, ∞)}]\n" + - " │ │ └─ columns: [id dkcaj kng7t tw55n qrqxw ecxaj fgg57 zh72s fsk67 xqdyt tce7a iwv2h hpcms n5cc2 fhcyt etaq7 a75x7]\n" + - " │ └─ TableAlias(nma)\n" + - " │ └─ IndexedTableAccess(TNMXI)\n" + - " │ ├─ index: [TNMXI.id]\n" + - " │ ├─ columns: [id dzlim f3yue]\n" + - " │ └─ keys: nd.HPCMS\n" + - " └─ HashLookup\n" + - " ├─ left-key: (oxxei.BDNYB)\n" + - " ├─ right-key: (ckele.LWQ6O)\n" + - " └─ SubqueryAlias\n" + - " ├─ name: ckele\n" + - " ├─ outerVisibility: false\n" + - " ├─ isLateral: false\n" + - " ├─ cacheable: true\n" + - " └─ Project\n" + - " ├─ columns: [noxn3.id as LWQ6O, row_number() over ( order by noxn3.id asc) as M6T2N]\n" + - " └─ Window(row_number() over ( order by noxn3.id ASC), noxn3.id)\n" + - " └─ Table\n" + - " ├─ name: NOXN3\n" + - " └─ columns: [id]\n" + + " └─ Project\n" + + " ├─ columns: [oxxei.T4IBQ, oxxei.BDNYB, oxxei.BTXC5, oxxei.Z7CP5, oxxei.vaf, oxxei.QCGTS, oxxei.SNY4H, e52ap.KUXQY, e52ap.BDNYB, e52ap.YHVEZ, e52ap.YAZ4X, ckele.LWQ6O, ckele.M6T2N, oxxei.BTXC5 as BTXC5, oxxei.vaf as vaf, oxxei.QCGTS as QCGTS, oxxei.SNY4H as SNY4H, e52ap.YHVEZ as YHVEZ, e52ap.YAZ4X as YAZ4X]\n" + + " └─ HashJoin (estimated cost=427.500 rows=125)\n" + + " ├─ (ckele.LWQ6O = oxxei.BDNYB)\n" + + " ├─ HashJoin (estimated cost=402.250 rows=125)\n" + + " │ ├─ (e52ap.BDNYB = oxxei.BDNYB)\n" + + " │ ├─ SubqueryAlias\n" + + " │ │ ├─ name: oxxei\n" + + " │ │ ├─ outerVisibility: false\n" + + " │ │ ├─ isLateral: false\n" + + " │ │ ├─ cacheable: true\n" + + " │ │ └─ Project\n" + + " │ │ ├─ 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" + + " │ │ │ │ │ ├─ LookupJoin\n" + + " │ │ │ │ │ │ ├─ TableAlias(sn)\n" + + " │ │ │ │ │ │ │ └─ Table\n" + + " │ │ │ │ │ │ │ ├─ name: NOXN3\n" + + " │ │ │ │ │ │ │ └─ columns: [id brqp2]\n" + + " │ │ │ │ │ │ └─ Filter\n" + + " │ │ │ │ │ │ ├─ (mf.FSDY2 HASH IN ('SRARY', 'UBQWG'))\n" + + " │ │ │ │ │ │ └─ TableAlias(mf)\n" + + " │ │ │ │ │ │ └─ IndexedTableAccess(HGMQ6)\n" + + " │ │ │ │ │ │ ├─ 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" + + " │ │ └─ 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: (oxxei.BDNYB)\n" + + " │ ├─ right-key: (e52ap.BDNYB)\n" + + " │ └─ SubqueryAlias\n" + + " │ ├─ name: e52ap\n" + + " │ ├─ outerVisibility: false\n" + + " │ ├─ isLateral: false\n" + + " │ ├─ cacheable: true\n" + + " │ └─ Project\n" + + " │ ├─ columns: [nd.TW55N as KUXQY, sn.id as BDNYB, nma.DZLIM as YHVEZ, CASE WHEN (nd.TCE7A < 0.9) THEN 1 ELSE 0 END as YAZ4X]\n" + + " │ └─ Sort(sn.id ASC)\n" + + " │ └─ Project\n" + + " │ ├─ columns: [sn.id, sn.BRQP2, sn.FFTBJ, sn.A7XO2, sn.KBO7R, sn.ECDKM, sn.NUMK2, sn.LETOE, sn.YKSSU, sn.FHCYT, nd.id, nd.DKCAJ, nd.KNG7T, nd.TW55N, nd.QRQXW, nd.ECXAJ, nd.FGG57, nd.ZH72S, nd.FSK67, nd.XQDYT, nd.TCE7A, nd.IWV2H, nd.HPCMS, nd.N5CC2, nd.FHCYT, nd.ETAQ7, nd.A75X7, nma.id, nma.DZLIM, nma.F3YUE, nd.TW55N as KUXQY, sn.id as BDNYB, nma.DZLIM as YHVEZ, CASE WHEN (nd.TCE7A < 0.9) THEN 1 ELSE 0 END as YAZ4X]\n" + + " │ └─ Filter\n" + + " │ ├─ (NOT((nma.DZLIM = 'Q5I4E')))\n" + + " │ └─ LeftOuterLookupJoin\n" + + " │ ├─ LeftOuterMergeJoin\n" + + " │ │ ├─ cmp: (sn.BRQP2 = nd.id)\n" + + " │ │ ├─ TableAlias(sn)\n" + + " │ │ │ └─ IndexedTableAccess(NOXN3)\n" + + " │ │ │ ├─ index: [NOXN3.BRQP2]\n" + + " │ │ │ ├─ filters: [{[NULL, ∞)}]\n" + + " │ │ │ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + + " │ │ └─ TableAlias(nd)\n" + + " │ │ └─ IndexedTableAccess(E2I7U)\n" + + " │ │ ├─ index: [E2I7U.id]\n" + + " │ │ ├─ filters: [{[NULL, ∞)}]\n" + + " │ │ └─ columns: [id dkcaj kng7t tw55n qrqxw ecxaj fgg57 zh72s fsk67 xqdyt tce7a iwv2h hpcms n5cc2 fhcyt etaq7 a75x7]\n" + + " │ └─ TableAlias(nma)\n" + + " │ └─ IndexedTableAccess(TNMXI)\n" + + " │ ├─ index: [TNMXI.id]\n" + + " │ ├─ columns: [id dzlim f3yue]\n" + + " │ └─ keys: nd.HPCMS\n" + + " └─ HashLookup\n" + + " ├─ left-key: (oxxei.BDNYB)\n" + + " ├─ right-key: (ckele.LWQ6O)\n" + + " └─ SubqueryAlias\n" + + " ├─ name: ckele\n" + + " ├─ outerVisibility: false\n" + + " ├─ isLateral: false\n" + + " ├─ cacheable: true\n" + + " └─ Project\n" + + " ├─ columns: [noxn3.id as LWQ6O, row_number() over ( order by noxn3.id asc) as M6T2N]\n" + + " └─ Window(row_number() over ( order by noxn3.id ASC), noxn3.id)\n" + + " └─ Table\n" + + " ├─ name: NOXN3\n" + + " └─ columns: [id]\n" + "", ExpectedAnalysis: "Distinct\n" + " └─ Project\n" + " ├─ columns: [oxxei.T4IBQ, oxxei.Z7CP5, e52ap.KUXQY, oxxei.BDNYB, ckele.M6T2N, oxxei.BTXC5 as BTXC5, oxxei.vaf as vaf, oxxei.QCGTS as QCGTS, oxxei.SNY4H as SNY4H, e52ap.YHVEZ as YHVEZ, e52ap.YAZ4X as YAZ4X]\n" + - " └─ Sort(ckele.M6T2N ASC)\n" + - " └─ Project\n" + - " ├─ columns: [oxxei.T4IBQ, oxxei.BDNYB, oxxei.BTXC5, oxxei.Z7CP5, oxxei.vaf, oxxei.QCGTS, oxxei.SNY4H, e52ap.KUXQY, e52ap.BDNYB, e52ap.YHVEZ, e52ap.YAZ4X, ckele.LWQ6O, ckele.M6T2N, oxxei.BTXC5 as BTXC5, oxxei.vaf as vaf, oxxei.QCGTS as QCGTS, oxxei.SNY4H as SNY4H, e52ap.YHVEZ as YHVEZ, e52ap.YAZ4X as YAZ4X]\n" + - " └─ HashJoin\n" + - " ├─ (ckele.LWQ6O = oxxei.BDNYB)\n" + - " ├─ HashJoin\n" + - " │ ├─ (e52ap.BDNYB = oxxei.BDNYB)\n" + - " │ ├─ SubqueryAlias\n" + - " │ │ ├─ name: oxxei\n" + - " │ │ ├─ outerVisibility: false\n" + - " │ │ ├─ isLateral: false\n" + - " │ │ ├─ cacheable: true\n" + - " │ │ └─ Project\n" + - " │ │ ├─ 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" + - " │ │ │ │ │ ├─ LookupJoin\n" + - " │ │ │ │ │ │ ├─ TableAlias(sn)\n" + - " │ │ │ │ │ │ │ └─ Table\n" + - " │ │ │ │ │ │ │ ├─ name: NOXN3\n" + - " │ │ │ │ │ │ │ └─ columns: [id brqp2]\n" + - " │ │ │ │ │ │ └─ Filter\n" + - " │ │ │ │ │ │ ├─ (mf.FSDY2 HASH IN ('SRARY', 'UBQWG'))\n" + - " │ │ │ │ │ │ └─ TableAlias(mf)\n" + - " │ │ │ │ │ │ └─ IndexedTableAccess(HGMQ6)\n" + - " │ │ │ │ │ │ ├─ 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" + - " │ │ └─ 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: (oxxei.BDNYB)\n" + - " │ ├─ right-key: (e52ap.BDNYB)\n" + - " │ └─ SubqueryAlias\n" + - " │ ├─ name: e52ap\n" + - " │ ├─ outerVisibility: false\n" + - " │ ├─ isLateral: false\n" + - " │ ├─ cacheable: true\n" + - " │ └─ Project\n" + - " │ ├─ columns: [nd.TW55N as KUXQY, sn.id as BDNYB, nma.DZLIM as YHVEZ, CASE WHEN (nd.TCE7A < 0.9) THEN 1 ELSE 0 END as YAZ4X]\n" + - " │ └─ Sort(sn.id ASC)\n" + - " │ └─ Project\n" + - " │ ├─ columns: [sn.id, sn.BRQP2, sn.FFTBJ, sn.A7XO2, sn.KBO7R, sn.ECDKM, sn.NUMK2, sn.LETOE, sn.YKSSU, sn.FHCYT, nd.id, nd.DKCAJ, nd.KNG7T, nd.TW55N, nd.QRQXW, nd.ECXAJ, nd.FGG57, nd.ZH72S, nd.FSK67, nd.XQDYT, nd.TCE7A, nd.IWV2H, nd.HPCMS, nd.N5CC2, nd.FHCYT, nd.ETAQ7, nd.A75X7, nma.id, nma.DZLIM, nma.F3YUE, nd.TW55N as KUXQY, sn.id as BDNYB, nma.DZLIM as YHVEZ, CASE WHEN (nd.TCE7A < 0.9) THEN 1 ELSE 0 END as YAZ4X]\n" + - " │ └─ Filter\n" + - " │ ├─ (NOT((nma.DZLIM = 'Q5I4E')))\n" + - " │ └─ LeftOuterLookupJoin\n" + - " │ ├─ LeftOuterMergeJoin\n" + - " │ │ ├─ cmp: (sn.BRQP2 = nd.id)\n" + - " │ │ ├─ TableAlias(sn)\n" + - " │ │ │ └─ IndexedTableAccess(NOXN3)\n" + - " │ │ │ ├─ index: [NOXN3.BRQP2]\n" + - " │ │ │ ├─ filters: [{[NULL, ∞)}]\n" + - " │ │ │ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + - " │ │ └─ TableAlias(nd)\n" + - " │ │ └─ IndexedTableAccess(E2I7U)\n" + - " │ │ ├─ index: [E2I7U.id]\n" + - " │ │ ├─ filters: [{[NULL, ∞)}]\n" + - " │ │ └─ columns: [id dkcaj kng7t tw55n qrqxw ecxaj fgg57 zh72s fsk67 xqdyt tce7a iwv2h hpcms n5cc2 fhcyt etaq7 a75x7]\n" + - " │ └─ TableAlias(nma)\n" + - " │ └─ IndexedTableAccess(TNMXI)\n" + - " │ ├─ index: [TNMXI.id]\n" + - " │ ├─ columns: [id dzlim f3yue]\n" + - " │ └─ keys: nd.HPCMS\n" + - " └─ HashLookup\n" + - " ├─ left-key: (oxxei.BDNYB)\n" + - " ├─ right-key: (ckele.LWQ6O)\n" + - " └─ SubqueryAlias\n" + - " ├─ name: ckele\n" + - " ├─ outerVisibility: false\n" + - " ├─ isLateral: false\n" + - " ├─ cacheable: true\n" + - " └─ Project\n" + - " ├─ columns: [noxn3.id as LWQ6O, row_number() over ( order by noxn3.id asc) as M6T2N]\n" + - " └─ Window(row_number() over ( order by noxn3.id ASC), noxn3.id)\n" + - " └─ Table\n" + - " ├─ name: NOXN3\n" + - " └─ columns: [id]\n" + + " └─ Project\n" + + " ├─ columns: [oxxei.T4IBQ, oxxei.BDNYB, oxxei.BTXC5, oxxei.Z7CP5, oxxei.vaf, oxxei.QCGTS, oxxei.SNY4H, e52ap.KUXQY, e52ap.BDNYB, e52ap.YHVEZ, e52ap.YAZ4X, ckele.LWQ6O, ckele.M6T2N, oxxei.BTXC5 as BTXC5, oxxei.vaf as vaf, oxxei.QCGTS as QCGTS, oxxei.SNY4H as SNY4H, e52ap.YHVEZ as YHVEZ, e52ap.YAZ4X as YAZ4X]\n" + + " └─ HashJoin (estimated cost=427.500 rows=125) (actual rows=0 loops=1)\n" + + " ├─ (ckele.LWQ6O = oxxei.BDNYB)\n" + + " ├─ HashJoin (estimated cost=402.250 rows=125) (actual rows=0 loops=1)\n" + + " │ ├─ (e52ap.BDNYB = oxxei.BDNYB)\n" + + " │ ├─ SubqueryAlias\n" + + " │ │ ├─ name: oxxei\n" + + " │ │ ├─ outerVisibility: false\n" + + " │ │ ├─ isLateral: false\n" + + " │ │ ├─ cacheable: true\n" + + " │ │ └─ Project\n" + + " │ │ ├─ 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" + + " │ │ │ │ │ ├─ LookupJoin\n" + + " │ │ │ │ │ │ ├─ TableAlias(sn)\n" + + " │ │ │ │ │ │ │ └─ Table\n" + + " │ │ │ │ │ │ │ ├─ name: NOXN3\n" + + " │ │ │ │ │ │ │ └─ columns: [id brqp2]\n" + + " │ │ │ │ │ │ └─ Filter\n" + + " │ │ │ │ │ │ ├─ (mf.FSDY2 HASH IN ('SRARY', 'UBQWG'))\n" + + " │ │ │ │ │ │ └─ TableAlias(mf)\n" + + " │ │ │ │ │ │ └─ IndexedTableAccess(HGMQ6)\n" + + " │ │ │ │ │ │ ├─ 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" + + " │ │ └─ 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: (oxxei.BDNYB)\n" + + " │ ├─ right-key: (e52ap.BDNYB)\n" + + " │ └─ SubqueryAlias\n" + + " │ ├─ name: e52ap\n" + + " │ ├─ outerVisibility: false\n" + + " │ ├─ isLateral: false\n" + + " │ ├─ cacheable: true\n" + + " │ └─ Project\n" + + " │ ├─ columns: [nd.TW55N as KUXQY, sn.id as BDNYB, nma.DZLIM as YHVEZ, CASE WHEN (nd.TCE7A < 0.9) THEN 1 ELSE 0 END as YAZ4X]\n" + + " │ └─ Sort(sn.id ASC)\n" + + " │ └─ Project\n" + + " │ ├─ columns: [sn.id, sn.BRQP2, sn.FFTBJ, sn.A7XO2, sn.KBO7R, sn.ECDKM, sn.NUMK2, sn.LETOE, sn.YKSSU, sn.FHCYT, nd.id, nd.DKCAJ, nd.KNG7T, nd.TW55N, nd.QRQXW, nd.ECXAJ, nd.FGG57, nd.ZH72S, nd.FSK67, nd.XQDYT, nd.TCE7A, nd.IWV2H, nd.HPCMS, nd.N5CC2, nd.FHCYT, nd.ETAQ7, nd.A75X7, nma.id, nma.DZLIM, nma.F3YUE, nd.TW55N as KUXQY, sn.id as BDNYB, nma.DZLIM as YHVEZ, CASE WHEN (nd.TCE7A < 0.9) THEN 1 ELSE 0 END as YAZ4X]\n" + + " │ └─ Filter\n" + + " │ ├─ (NOT((nma.DZLIM = 'Q5I4E')))\n" + + " │ └─ LeftOuterLookupJoin\n" + + " │ ├─ LeftOuterMergeJoin\n" + + " │ │ ├─ cmp: (sn.BRQP2 = nd.id)\n" + + " │ │ ├─ TableAlias(sn)\n" + + " │ │ │ └─ IndexedTableAccess(NOXN3)\n" + + " │ │ │ ├─ index: [NOXN3.BRQP2]\n" + + " │ │ │ ├─ filters: [{[NULL, ∞)}]\n" + + " │ │ │ └─ columns: [id brqp2 fftbj a7xo2 kbo7r ecdkm numk2 letoe ykssu fhcyt]\n" + + " │ │ └─ TableAlias(nd)\n" + + " │ │ └─ IndexedTableAccess(E2I7U)\n" + + " │ │ ├─ index: [E2I7U.id]\n" + + " │ │ ├─ filters: [{[NULL, ∞)}]\n" + + " │ │ └─ columns: [id dkcaj kng7t tw55n qrqxw ecxaj fgg57 zh72s fsk67 xqdyt tce7a iwv2h hpcms n5cc2 fhcyt etaq7 a75x7]\n" + + " │ └─ TableAlias(nma)\n" + + " │ └─ IndexedTableAccess(TNMXI)\n" + + " │ ├─ index: [TNMXI.id]\n" + + " │ ├─ columns: [id dzlim f3yue]\n" + + " │ └─ keys: nd.HPCMS\n" + + " └─ HashLookup\n" + + " ├─ left-key: (oxxei.BDNYB)\n" + + " ├─ right-key: (ckele.LWQ6O)\n" + + " └─ SubqueryAlias\n" + + " ├─ name: ckele\n" + + " ├─ outerVisibility: false\n" + + " ├─ isLateral: false\n" + + " ├─ cacheable: true\n" + + " └─ Project\n" + + " ├─ columns: [noxn3.id as LWQ6O, row_number() over ( order by noxn3.id asc) as M6T2N]\n" + + " └─ Window(row_number() over ( order by noxn3.id ASC), noxn3.id)\n" + + " └─ Table\n" + + " ├─ name: NOXN3\n" + + " └─ columns: [id]\n" + "", }, { @@ -16289,134 +16283,131 @@ ORDER BY cla.FTQLQ ASC`, ExpectedPlan: "Distinct\n" + " └─ Project\n" + " ├─ columns: [cla.FTQLQ:1!null]\n" + - " └─ Sort(cla.FTQLQ:1!null ASC nullsFirst)\n" + - " └─ Project\n" + - " ├─ columns: [cla.id:1!null, cla.FTQLQ:2!null, cla.TUXML:3, cla.PAEF5:4, cla.RUCY4:5, cla.TPNJ6:6!null, cla.LBL53:7, cla.NB3QS:8, cla.EO7IV:9, cla.MUHJF:10, cla.FM34L:11, cla.TY5RF:12, cla.ZHTLH:13, cla.NPB7W:14, cla.SX3HH:15, cla.ISBNF:16, cla.YA7YB:17, cla.C5YKB:18, cla.QK7KT:19, cla.FFGE6:20, cla.FIIGJ:21, cla.SH3NC:22, cla.NTENA:23, cla.M4AUB:24, cla.X5AIR:25, cla.SAB6M:26, cla.G5QI5:27, cla.ZVQVD:28, cla.YKSSU:29, cla.FHCYT:30]\n" + - " └─ HashJoin\n" + - " ├─ Eq\n" + - " │ ├─ cla.id:1!null\n" + - " │ └─ bs.IXUXU:0\n" + - " ├─ Distinct\n" + - " │ └─ 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" + - " │ └─ Project\n" + - " │ ├─ columns: [amyxq.GXLUB:1!null]\n" + - " │ └─ IndexedTableAccess(AMYXQ)\n" + - " │ ├─ index: [AMYXQ.GXLUB]\n" + - " │ ├─ keys: [bs.id:0!null]\n" + - " │ ├─ colSet: (52-59)\n" + - " │ ├─ tableId: 4\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" + - " └─ TableAlias(cla)\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" + + " └─ Project\n" + + " ├─ columns: [cla.id:1!null, cla.FTQLQ:2!null, cla.TUXML:3, cla.PAEF5:4, cla.RUCY4:5, cla.TPNJ6:6!null, cla.LBL53:7, cla.NB3QS:8, cla.EO7IV:9, cla.MUHJF:10, cla.FM34L:11, cla.TY5RF:12, cla.ZHTLH:13, cla.NPB7W:14, cla.SX3HH:15, cla.ISBNF:16, cla.YA7YB:17, cla.C5YKB:18, cla.QK7KT:19, cla.FFGE6:20, cla.FIIGJ:21, cla.SH3NC:22, cla.NTENA:23, cla.M4AUB:24, cla.X5AIR:25, cla.SAB6M:26, cla.G5QI5:27, cla.ZVQVD:28, cla.YKSSU:29, cla.FHCYT:30]\n" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ cla.id:1!null\n" + + " │ └─ bs.IXUXU:0\n" + + " ├─ Distinct\n" + + " │ └─ 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" + + " │ └─ Project\n" + + " │ ├─ columns: [amyxq.GXLUB:1!null]\n" + + " │ └─ IndexedTableAccess(AMYXQ)\n" + + " │ ├─ index: [AMYXQ.GXLUB]\n" + + " │ ├─ keys: [bs.id:0!null]\n" + + " │ ├─ colSet: (52-59)\n" + + " │ ├─ tableId: 4\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" + + " └─ TableAlias(cla)\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" + "", ExpectedEstimates: "Distinct\n" + " └─ Project\n" + " ├─ columns: [cla.FTQLQ]\n" + - " └─ Sort(cla.FTQLQ ASC)\n" + - " └─ Project\n" + - " ├─ columns: [cla.id, cla.FTQLQ, cla.TUXML, cla.PAEF5, cla.RUCY4, cla.TPNJ6, cla.LBL53, cla.NB3QS, cla.EO7IV, cla.MUHJF, cla.FM34L, cla.TY5RF, cla.ZHTLH, cla.NPB7W, cla.SX3HH, cla.ISBNF, cla.YA7YB, cla.C5YKB, cla.QK7KT, cla.FFGE6, cla.FIIGJ, cla.SH3NC, cla.NTENA, cla.M4AUB, cla.X5AIR, cla.SAB6M, cla.G5QI5, cla.ZVQVD, cla.YKSSU, cla.FHCYT]\n" + - " └─ HashJoin\n" + - " ├─ (cla.id = bs.IXUXU)\n" + - " ├─ Distinct\n" + - " │ └─ 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" + - " │ └─ Project\n" + - " │ ├─ columns: [amyxq.GXLUB]\n" + - " │ └─ IndexedTableAccess(AMYXQ)\n" + - " │ ├─ index: [AMYXQ.GXLUB]\n" + - " │ └─ keys: bs.id\n" + - " └─ HashLookup\n" + - " ├─ left-key: (bs.IXUXU)\n" + - " ├─ right-key: (cla.id)\n" + - " └─ TableAlias(cla)\n" + - " └─ Table\n" + - " └─ name: YK2GW\n" + + " └─ Project\n" + + " ├─ columns: [cla.id, cla.FTQLQ, cla.TUXML, cla.PAEF5, cla.RUCY4, cla.TPNJ6, cla.LBL53, cla.NB3QS, cla.EO7IV, cla.MUHJF, cla.FM34L, cla.TY5RF, cla.ZHTLH, cla.NPB7W, cla.SX3HH, cla.ISBNF, cla.YA7YB, cla.C5YKB, cla.QK7KT, cla.FFGE6, cla.FIIGJ, cla.SH3NC, cla.NTENA, cla.M4AUB, cla.X5AIR, cla.SAB6M, cla.G5QI5, cla.ZVQVD, cla.YKSSU, cla.FHCYT]\n" + + " └─ HashJoin (estimated cost=660254.220 rows=639961)\n" + + " ├─ (cla.id = bs.IXUXU)\n" + + " ├─ Distinct\n" + + " │ └─ Project\n" + + " │ ├─ columns: [bs.IXUXU]\n" + + " │ └─ SemiLookupJoin (estimated cost=1983900.000 rows=639961)\n" + + " │ ├─ Project\n" + + " │ │ ├─ columns: [bs.id, bs.NFRYN, bs.IXUXU, bs.FHCYT]\n" + + " │ │ └─ MergeJoin (estimated cost=524731.360 rows=511969)\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" + + " │ └─ Project\n" + + " │ ├─ columns: [amyxq.GXLUB]\n" + + " │ └─ IndexedTableAccess(AMYXQ)\n" + + " │ ├─ index: [AMYXQ.GXLUB]\n" + + " │ └─ keys: bs.id\n" + + " └─ HashLookup\n" + + " ├─ left-key: (bs.IXUXU)\n" + + " ├─ right-key: (cla.id)\n" + + " └─ TableAlias(cla)\n" + + " └─ Table\n" + + " └─ name: YK2GW\n" + "", ExpectedAnalysis: "Distinct\n" + " └─ Project\n" + " ├─ columns: [cla.FTQLQ]\n" + - " └─ Sort(cla.FTQLQ ASC)\n" + - " └─ Project\n" + - " ├─ columns: [cla.id, cla.FTQLQ, cla.TUXML, cla.PAEF5, cla.RUCY4, cla.TPNJ6, cla.LBL53, cla.NB3QS, cla.EO7IV, cla.MUHJF, cla.FM34L, cla.TY5RF, cla.ZHTLH, cla.NPB7W, cla.SX3HH, cla.ISBNF, cla.YA7YB, cla.C5YKB, cla.QK7KT, cla.FFGE6, cla.FIIGJ, cla.SH3NC, cla.NTENA, cla.M4AUB, cla.X5AIR, cla.SAB6M, cla.G5QI5, cla.ZVQVD, cla.YKSSU, cla.FHCYT]\n" + - " └─ HashJoin\n" + - " ├─ (cla.id = bs.IXUXU)\n" + - " ├─ Distinct\n" + - " │ └─ 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" + - " │ └─ Project\n" + - " │ ├─ columns: [amyxq.GXLUB]\n" + - " │ └─ IndexedTableAccess(AMYXQ)\n" + - " │ ├─ index: [AMYXQ.GXLUB]\n" + - " │ └─ keys: bs.id\n" + - " └─ HashLookup\n" + - " ├─ left-key: (bs.IXUXU)\n" + - " ├─ right-key: (cla.id)\n" + - " └─ TableAlias(cla)\n" + - " └─ Table\n" + - " └─ name: YK2GW\n" + + " └─ Project\n" + + " ├─ columns: [cla.id, cla.FTQLQ, cla.TUXML, cla.PAEF5, cla.RUCY4, cla.TPNJ6, cla.LBL53, cla.NB3QS, cla.EO7IV, cla.MUHJF, cla.FM34L, cla.TY5RF, cla.ZHTLH, cla.NPB7W, cla.SX3HH, cla.ISBNF, cla.YA7YB, cla.C5YKB, cla.QK7KT, cla.FFGE6, cla.FIIGJ, cla.SH3NC, cla.NTENA, cla.M4AUB, cla.X5AIR, cla.SAB6M, cla.G5QI5, cla.ZVQVD, cla.YKSSU, cla.FHCYT]\n" + + " └─ HashJoin (estimated cost=660254.220 rows=639961) (actual rows=0 loops=1)\n" + + " ├─ (cla.id = bs.IXUXU)\n" + + " ├─ Distinct\n" + + " │ └─ Project\n" + + " │ ├─ columns: [bs.IXUXU]\n" + + " │ └─ SemiLookupJoin (estimated cost=1983900.000 rows=639961) (actual rows=0 loops=1)\n" + + " │ ├─ Project\n" + + " │ │ ├─ columns: [bs.id, bs.NFRYN, bs.IXUXU, bs.FHCYT]\n" + + " │ │ └─ MergeJoin (estimated cost=524731.360 rows=511969) (actual rows=0 loops=1)\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" + + " │ └─ Project\n" + + " │ ├─ columns: [amyxq.GXLUB]\n" + + " │ └─ IndexedTableAccess(AMYXQ)\n" + + " │ ├─ index: [AMYXQ.GXLUB]\n" + + " │ └─ keys: bs.id\n" + + " └─ HashLookup\n" + + " ├─ left-key: (bs.IXUXU)\n" + + " ├─ right-key: (cla.id)\n" + + " └─ TableAlias(cla)\n" + + " └─ Table\n" + + " └─ name: YK2GW\n" + "", }, { @@ -16432,87 +16423,84 @@ ORDER BY cla.FTQLQ ASC`, ExpectedPlan: "Distinct\n" + " └─ Project\n" + " ├─ columns: [cla.FTQLQ:22!null]\n" + - " └─ Sort(cla.FTQLQ:22!null ASC nullsFirst)\n" + - " └─ HashJoin\n" + - " ├─ Eq\n" + - " │ ├─ mf.GXLUB:1!null\n" + - " │ └─ bs.id:17!null\n" + - " ├─ TableAlias(mf)\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" + - " └─ 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:19\n" + - " │ └─ cla.id:21!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 nfryn ixuxu fhcyt]\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 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" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ mf.GXLUB:1!null\n" + + " │ └─ bs.id:17!null\n" + + " ├─ TableAlias(mf)\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" + + " └─ 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:19\n" + + " │ └─ cla.id:21!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 nfryn ixuxu fhcyt]\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 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" + "", ExpectedEstimates: "Distinct\n" + " └─ Project\n" + " ├─ columns: [cla.FTQLQ]\n" + - " └─ Sort(cla.FTQLQ ASC)\n" + - " └─ HashJoin\n" + - " ├─ (mf.GXLUB = bs.id)\n" + - " ├─ TableAlias(mf)\n" + - " │ └─ Table\n" + - " │ └─ name: HGMQ6\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" + - " └─ TableAlias(cla)\n" + - " └─ IndexedTableAccess(YK2GW)\n" + - " ├─ index: [YK2GW.id]\n" + - " └─ filters: [{[NULL, ∞)}]\n" + + " └─ HashJoin (estimated cost=529702.380 rows=511969)\n" + + " ├─ (mf.GXLUB = bs.id)\n" + + " ├─ TableAlias(mf)\n" + + " │ └─ Table\n" + + " │ └─ name: HGMQ6\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" + + " └─ TableAlias(cla)\n" + + " └─ IndexedTableAccess(YK2GW)\n" + + " ├─ index: [YK2GW.id]\n" + + " └─ filters: [{[NULL, ∞)}]\n" + "", ExpectedAnalysis: "Distinct\n" + " └─ Project\n" + " ├─ columns: [cla.FTQLQ]\n" + - " └─ Sort(cla.FTQLQ ASC)\n" + - " └─ HashJoin\n" + - " ├─ (mf.GXLUB = bs.id)\n" + - " ├─ TableAlias(mf)\n" + - " │ └─ Table\n" + - " │ └─ name: HGMQ6\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" + - " └─ TableAlias(cla)\n" + - " └─ IndexedTableAccess(YK2GW)\n" + - " ├─ index: [YK2GW.id]\n" + - " └─ filters: [{[NULL, ∞)}]\n" + + " └─ HashJoin (estimated cost=529702.380 rows=511969) (actual rows=0 loops=1)\n" + + " ├─ (mf.GXLUB = bs.id)\n" + + " ├─ TableAlias(mf)\n" + + " │ └─ Table\n" + + " │ └─ name: HGMQ6\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" + + " └─ TableAlias(cla)\n" + + " └─ IndexedTableAccess(YK2GW)\n" + + " ├─ index: [YK2GW.id]\n" + + " └─ filters: [{[NULL, ∞)}]\n" + "", }, { @@ -16527,111 +16515,108 @@ ORDER BY cla.FTQLQ ASC`, ExpectedPlan: "Distinct\n" + " └─ Project\n" + " ├─ columns: [cla.FTQLQ:1!null]\n" + - " └─ Sort(cla.FTQLQ:1!null ASC nullsFirst)\n" + - " └─ Project\n" + - " ├─ columns: [cla.id:1!null, cla.FTQLQ:2!null, cla.TUXML:3, cla.PAEF5:4, cla.RUCY4:5, cla.TPNJ6:6!null, cla.LBL53:7, cla.NB3QS:8, cla.EO7IV:9, cla.MUHJF:10, cla.FM34L:11, cla.TY5RF:12, cla.ZHTLH:13, cla.NPB7W:14, cla.SX3HH:15, cla.ISBNF:16, cla.YA7YB:17, cla.C5YKB:18, cla.QK7KT:19, cla.FFGE6:20, cla.FIIGJ:21, cla.SH3NC:22, cla.NTENA:23, cla.M4AUB:24, cla.X5AIR:25, cla.SAB6M:26, cla.G5QI5:27, cla.ZVQVD:28, cla.YKSSU:29, cla.FHCYT:30]\n" + - " └─ HashJoin\n" + - " ├─ Eq\n" + - " │ ├─ cla.id:1!null\n" + - " │ └─ bs.IXUXU:0\n" + - " ├─ 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" + - " └─ HashLookup\n" + - " ├─ left-key: TUPLE(bs.IXUXU:0)\n" + - " ├─ right-key: TUPLE(cla.id:0!null)\n" + - " └─ TableAlias(cla)\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" + + " └─ Project\n" + + " ├─ columns: [cla.id:1!null, cla.FTQLQ:2!null, cla.TUXML:3, cla.PAEF5:4, cla.RUCY4:5, cla.TPNJ6:6!null, cla.LBL53:7, cla.NB3QS:8, cla.EO7IV:9, cla.MUHJF:10, cla.FM34L:11, cla.TY5RF:12, cla.ZHTLH:13, cla.NPB7W:14, cla.SX3HH:15, cla.ISBNF:16, cla.YA7YB:17, cla.C5YKB:18, cla.QK7KT:19, cla.FFGE6:20, cla.FIIGJ:21, cla.SH3NC:22, cla.NTENA:23, cla.M4AUB:24, cla.X5AIR:25, cla.SAB6M:26, cla.G5QI5:27, cla.ZVQVD:28, cla.YKSSU:29, cla.FHCYT:30]\n" + + " └─ HashJoin\n" + + " ├─ Eq\n" + + " │ ├─ cla.id:1!null\n" + + " │ └─ bs.IXUXU:0\n" + + " ├─ 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" + + " └─ HashLookup\n" + + " ├─ left-key: TUPLE(bs.IXUXU:0)\n" + + " ├─ right-key: TUPLE(cla.id:0!null)\n" + + " └─ TableAlias(cla)\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" + "", ExpectedEstimates: "Distinct\n" + " └─ Project\n" + " ├─ columns: [cla.FTQLQ]\n" + - " └─ Sort(cla.FTQLQ ASC)\n" + - " └─ Project\n" + - " ├─ columns: [cla.id, cla.FTQLQ, cla.TUXML, cla.PAEF5, cla.RUCY4, cla.TPNJ6, cla.LBL53, cla.NB3QS, cla.EO7IV, cla.MUHJF, cla.FM34L, cla.TY5RF, cla.ZHTLH, cla.NPB7W, cla.SX3HH, cla.ISBNF, cla.YA7YB, cla.C5YKB, cla.QK7KT, cla.FFGE6, cla.FIIGJ, cla.SH3NC, cla.NTENA, cla.M4AUB, cla.X5AIR, cla.SAB6M, cla.G5QI5, cla.ZVQVD, cla.YKSSU, cla.FHCYT]\n" + - " └─ HashJoin\n" + - " ├─ (cla.id = bs.IXUXU)\n" + - " ├─ 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" + - " └─ HashLookup\n" + - " ├─ left-key: (bs.IXUXU)\n" + - " ├─ right-key: (cla.id)\n" + - " └─ TableAlias(cla)\n" + - " └─ Table\n" + - " └─ name: YK2GW\n" + + " └─ Project\n" + + " ├─ columns: [cla.id, cla.FTQLQ, cla.TUXML, cla.PAEF5, cla.RUCY4, cla.TPNJ6, cla.LBL53, cla.NB3QS, cla.EO7IV, cla.MUHJF, cla.FM34L, cla.TY5RF, cla.ZHTLH, cla.NPB7W, cla.SX3HH, cla.ISBNF, cla.YA7YB, cla.C5YKB, cla.QK7KT, cla.FFGE6, cla.FIIGJ, cla.SH3NC, cla.NTENA, cla.M4AUB, cla.X5AIR, cla.SAB6M, cla.G5QI5, cla.ZVQVD, cla.YKSSU, cla.FHCYT]\n" + + " └─ HashJoin (estimated cost=4889905.560 rows=4786678)\n" + + " ├─ (cla.id = bs.IXUXU)\n" + + " ├─ Distinct\n" + + " │ └─ Project\n" + + " │ ├─ columns: [bs.IXUXU]\n" + + " │ └─ Project\n" + + " │ ├─ columns: [bs.id, bs.NFRYN, bs.IXUXU, bs.FHCYT]\n" + + " │ └─ MergeJoin (estimated cost=4884934.540 rows=4786678)\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" + + " └─ HashLookup\n" + + " ├─ left-key: (bs.IXUXU)\n" + + " ├─ right-key: (cla.id)\n" + + " └─ TableAlias(cla)\n" + + " └─ Table\n" + + " └─ name: YK2GW\n" + "", ExpectedAnalysis: "Distinct\n" + " └─ Project\n" + " ├─ columns: [cla.FTQLQ]\n" + - " └─ Sort(cla.FTQLQ ASC)\n" + - " └─ Project\n" + - " ├─ columns: [cla.id, cla.FTQLQ, cla.TUXML, cla.PAEF5, cla.RUCY4, cla.TPNJ6, cla.LBL53, cla.NB3QS, cla.EO7IV, cla.MUHJF, cla.FM34L, cla.TY5RF, cla.ZHTLH, cla.NPB7W, cla.SX3HH, cla.ISBNF, cla.YA7YB, cla.C5YKB, cla.QK7KT, cla.FFGE6, cla.FIIGJ, cla.SH3NC, cla.NTENA, cla.M4AUB, cla.X5AIR, cla.SAB6M, cla.G5QI5, cla.ZVQVD, cla.YKSSU, cla.FHCYT]\n" + - " └─ HashJoin\n" + - " ├─ (cla.id = bs.IXUXU)\n" + - " ├─ 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" + - " └─ HashLookup\n" + - " ├─ left-key: (bs.IXUXU)\n" + - " ├─ right-key: (cla.id)\n" + - " └─ TableAlias(cla)\n" + - " └─ Table\n" + - " └─ name: YK2GW\n" + + " └─ Project\n" + + " ├─ columns: [cla.id, cla.FTQLQ, cla.TUXML, cla.PAEF5, cla.RUCY4, cla.TPNJ6, cla.LBL53, cla.NB3QS, cla.EO7IV, cla.MUHJF, cla.FM34L, cla.TY5RF, cla.ZHTLH, cla.NPB7W, cla.SX3HH, cla.ISBNF, cla.YA7YB, cla.C5YKB, cla.QK7KT, cla.FFGE6, cla.FIIGJ, cla.SH3NC, cla.NTENA, cla.M4AUB, cla.X5AIR, cla.SAB6M, cla.G5QI5, cla.ZVQVD, cla.YKSSU, cla.FHCYT]\n" + + " └─ HashJoin (estimated cost=4889905.560 rows=4786678) (actual rows=0 loops=1)\n" + + " ├─ (cla.id = bs.IXUXU)\n" + + " ├─ Distinct\n" + + " │ └─ Project\n" + + " │ ├─ columns: [bs.IXUXU]\n" + + " │ └─ Project\n" + + " │ ├─ columns: [bs.id, bs.NFRYN, bs.IXUXU, bs.FHCYT]\n" + + " │ └─ MergeJoin (estimated cost=4884934.540 rows=4786678) (actual rows=0 loops=1)\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" + + " └─ HashLookup\n" + + " ├─ left-key: (bs.IXUXU)\n" + + " ├─ right-key: (cla.id)\n" + + " └─ TableAlias(cla)\n" + + " └─ Table\n" + + " └─ name: YK2GW\n" + "", }, { @@ -16645,59 +16630,56 @@ ORDER BY ci.FTQLQ`, ExpectedPlan: "Distinct\n" + " └─ Project\n" + " ├─ columns: [ci.FTQLQ:13!null]\n" + - " └─ Sort(ci.FTQLQ:13!null ASC nullsFirst)\n" + - " └─ MergeJoin\n" + - " ├─ cmp: Eq\n" + - " │ ├─ ct.FZ2R5:1!null\n" + - " │ └─ ci.id:12!null\n" + - " ├─ TableAlias(ct)\n" + - " │ └─ IndexedTableAccess(FLQLP)\n" + - " │ ├─ index: [FLQLP.FZ2R5]\n" + - " │ ├─ static: [{[NULL, ∞)}]\n" + - " │ ├─ colSet: (1-12)\n" + - " │ ├─ tableId: 1\n" + - " │ └─ Table\n" + - " │ ├─ name: FLQLP\n" + - " │ └─ columns: [id fz2r5 luevy m22qn ove3e nrurt oca7e xmm6q v5dpx s3q3y zrv3b fhcyt]\n" + - " └─ TableAlias(ci)\n" + - " └─ IndexedTableAccess(JDLNA)\n" + - " ├─ index: [JDLNA.id]\n" + - " ├─ static: [{[NULL, ∞)}]\n" + - " ├─ colSet: (13-17)\n" + - " ├─ tableId: 2\n" + - " └─ Table\n" + - " ├─ name: JDLNA\n" + - " └─ columns: [id ftqlq fwwiq o3qxw fhcyt]\n" + + " └─ MergeJoin\n" + + " ├─ cmp: Eq\n" + + " │ ├─ ct.FZ2R5:1!null\n" + + " │ └─ ci.id:12!null\n" + + " ├─ TableAlias(ct)\n" + + " │ └─ IndexedTableAccess(FLQLP)\n" + + " │ ├─ index: [FLQLP.FZ2R5]\n" + + " │ ├─ static: [{[NULL, ∞)}]\n" + + " │ ├─ colSet: (1-12)\n" + + " │ ├─ tableId: 1\n" + + " │ └─ Table\n" + + " │ ├─ name: FLQLP\n" + + " │ └─ columns: [id fz2r5 luevy m22qn ove3e nrurt oca7e xmm6q v5dpx s3q3y zrv3b fhcyt]\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(JDLNA)\n" + + " ├─ index: [JDLNA.id]\n" + + " ├─ static: [{[NULL, ∞)}]\n" + + " ├─ colSet: (13-17)\n" + + " ├─ tableId: 2\n" + + " └─ Table\n" + + " ├─ name: JDLNA\n" + + " └─ columns: [id ftqlq fwwiq o3qxw fhcyt]\n" + "", ExpectedEstimates: "Distinct\n" + " └─ Project\n" + " ├─ columns: [ci.FTQLQ]\n" + - " └─ Sort(ci.FTQLQ ASC)\n" + - " └─ MergeJoin\n" + - " ├─ cmp: (ct.FZ2R5 = ci.id)\n" + - " ├─ TableAlias(ct)\n" + - " │ └─ IndexedTableAccess(FLQLP)\n" + - " │ ├─ index: [FLQLP.FZ2R5]\n" + - " │ └─ filters: [{[NULL, ∞)}]\n" + - " └─ TableAlias(ci)\n" + - " └─ IndexedTableAccess(JDLNA)\n" + - " ├─ index: [JDLNA.id]\n" + - " └─ filters: [{[NULL, ∞)}]\n" + + " └─ MergeJoin (estimated cost=15479.610 rows=14781)\n" + + " ├─ cmp: (ct.FZ2R5 = ci.id)\n" + + " ├─ TableAlias(ct)\n" + + " │ └─ IndexedTableAccess(FLQLP)\n" + + " │ ├─ index: [FLQLP.FZ2R5]\n" + + " │ └─ filters: [{[NULL, ∞)}]\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(JDLNA)\n" + + " ├─ index: [JDLNA.id]\n" + + " └─ filters: [{[NULL, ∞)}]\n" + "", ExpectedAnalysis: "Distinct\n" + " └─ Project\n" + " ├─ columns: [ci.FTQLQ]\n" + - " └─ Sort(ci.FTQLQ ASC)\n" + - " └─ MergeJoin\n" + - " ├─ cmp: (ct.FZ2R5 = ci.id)\n" + - " ├─ TableAlias(ct)\n" + - " │ └─ IndexedTableAccess(FLQLP)\n" + - " │ ├─ index: [FLQLP.FZ2R5]\n" + - " │ └─ filters: [{[NULL, ∞)}]\n" + - " └─ TableAlias(ci)\n" + - " └─ IndexedTableAccess(JDLNA)\n" + - " ├─ index: [JDLNA.id]\n" + - " └─ filters: [{[NULL, ∞)}]\n" + + " └─ MergeJoin (estimated cost=15479.610 rows=14781) (actual rows=0 loops=1)\n" + + " ├─ cmp: (ct.FZ2R5 = ci.id)\n" + + " ├─ TableAlias(ct)\n" + + " │ └─ IndexedTableAccess(FLQLP)\n" + + " │ ├─ index: [FLQLP.FZ2R5]\n" + + " │ └─ filters: [{[NULL, ∞)}]\n" + + " └─ TableAlias(ci)\n" + + " └─ IndexedTableAccess(JDLNA)\n" + + " ├─ index: [JDLNA.id]\n" + + " └─ filters: [{[NULL, ∞)}]\n" + "", }, { diff --git a/enginetest/queries/query_plans.go b/enginetest/queries/query_plans.go index 15703e2398..5fa43f593d 100644 --- a/enginetest/queries/query_plans.go +++ b/enginetest/queries/query_plans.go @@ -25074,7 +25074,7 @@ order by x, y; "", }, { - Query: "select * from xy where x = json_object();", + Query: `select * from xy where x = json_object();`, ExpectedPlan: "Filter\n" + " ├─ Eq\n" + " │ ├─ xy.x:0!null\n" + @@ -25084,9 +25084,21 @@ order by x, y; " ├─ name: xy\n" + " └─ columns: [x y]\n" + "", + ExpectedEstimates: "Filter\n" + + " ├─ (xy.x = {})\n" + + " └─ Table\n" + + " ├─ name: xy\n" + + " └─ columns: [x y]\n" + + "", + ExpectedAnalysis: "Filter\n" + + " ├─ (xy.x = {})\n" + + " └─ Table\n" + + " ├─ name: xy\n" + + " └─ columns: [x y]\n" + + "", }, { - Query: "select * from xy where x = json_array();", + Query: `select * from xy where x = json_array();`, ExpectedPlan: "Filter\n" + " ├─ Eq\n" + " │ ├─ xy.x:0!null\n" + @@ -25096,5 +25108,17 @@ order by x, y; " ├─ name: xy\n" + " └─ columns: [x y]\n" + "", + ExpectedEstimates: "Filter\n" + + " ├─ (xy.x = [])\n" + + " └─ Table\n" + + " ├─ name: xy\n" + + " └─ columns: [x y]\n" + + "", + ExpectedAnalysis: "Filter\n" + + " ├─ (xy.x = [])\n" + + " └─ Table\n" + + " ├─ name: xy\n" + + " └─ columns: [x y]\n" + + "", }, }