Skip to content

Instantly share code, notes, and snippets.

@rareddy
Created September 30, 2015 19:06
Show Gist options
  • Save rareddy/3ea33f0983496389fa18 to your computer and use it in GitHub Desktop.
Save rareddy/3ea33f0983496389fa18 to your computer and use it in GitHub Desktop.
============================================================================
USER COMMAND:
SELECT p.UserName AS x, pf.UserName AS y FROM trippin.People AS p INNER JOIN trippin.People_Friends AS pf ON p.UserName = pf.People_UserName LIMIT 100
----------------------------------------------------------------------------
OPTIMIZE:
SELECT p.UserName AS x, pf.UserName AS y FROM trippin.People AS p INNER JOIN trippin.People_Friends AS pf ON p.UserName = pf.People_UserName LIMIT 100
----------------------------------------------------------------------------
GENERATE CANONICAL:
SELECT p.UserName AS x, pf.UserName AS y FROM trippin.People AS p INNER JOIN trippin.People_Friends AS pf ON p.UserName = pf.People_UserName LIMIT 100
CANONICAL PLAN:
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=100})
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p], props={PROJECT_COLS=[p.UserName AS x, pf.UserName AS y]})
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[p.UserName = pf.People_UserName]})
Source(groups=[trippin.People AS p])
Source(groups=[trippin.People_Friends AS pf])
============================================================================
EXECUTING PlaceAccess
AFTER:
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=100})
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p], props={PROJECT_COLS=[p.UserName AS x, pf.UserName AS y]})
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[p.UserName = pf.People_UserName]})
Access(groups=[trippin.People AS p], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000})
Source(groups=[trippin.People AS p])
Access(groups=[trippin.People_Friends AS pf], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, ACCESS_PATTERNS=[Access Pattern: Unsatisfied [pf.People_UserName] History [[pf.People_UserName]]]})
Source(groups=[trippin.People_Friends AS pf])
============================================================================
EXECUTING PushNonJoinCriteria
AFTER:
TupleLimit(groups=[])
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p])
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[p.UserName = pf.People_UserName]})
Access(groups=[trippin.People AS p])
Source(groups=[trippin.People AS p])
Access(groups=[trippin.People_Friends AS pf])
Source(groups=[trippin.People_Friends AS pf])
============================================================================
EXECUTING CleanCriteria
AFTER:
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=100, OUTPUT_COLS=null})
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p], props={PROJECT_COLS=[p.UserName AS x, pf.UserName AS y], OUTPUT_COLS=null})
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[p.UserName = pf.People_UserName], OUTPUT_COLS=null})
Access(groups=[trippin.People AS p], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, OUTPUT_COLS=null})
Source(groups=[trippin.People AS p], props={OUTPUT_COLS=null})
Access(groups=[trippin.People_Friends AS pf], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, ACCESS_PATTERNS=[Access Pattern: Unsatisfied [pf.People_UserName] History [[pf.People_UserName]]], OUTPUT_COLS=null})
Source(groups=[trippin.People_Friends AS pf], props={OUTPUT_COLS=null})
============================================================================
EXECUTING RaiseAccess
AFTER:
TupleLimit(groups=[])
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p])
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[p.UserName = pf.People_UserName], OUTPUT_COLS=null})
Access(groups=[trippin.People AS p], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, OUTPUT_COLS=null})
Source(groups=[trippin.People AS p])
Access(groups=[trippin.People_Friends AS pf], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, ACCESS_PATTERNS=[Access Pattern: Unsatisfied [pf.People_UserName] History [[pf.People_UserName]]], OUTPUT_COLS=null})
Source(groups=[trippin.People_Friends AS pf])
============================================================================
EXECUTING CopyCriteria
AFTER:
TupleLimit(groups=[])
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p])
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[p.UserName = pf.People_UserName], OUTPUT_COLS=null, IS_COPIED=true})
Access(groups=[trippin.People AS p])
Source(groups=[trippin.People AS p])
Access(groups=[trippin.People_Friends AS pf])
Source(groups=[trippin.People_Friends AS pf])
============================================================================
EXECUTING CleanCriteria
AFTER:
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=100, OUTPUT_COLS=null})
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p], props={PROJECT_COLS=[p.UserName AS x, pf.UserName AS y], OUTPUT_COLS=null})
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[p.UserName = pf.People_UserName], OUTPUT_COLS=null, IS_COPIED=true})
Access(groups=[trippin.People AS p], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, OUTPUT_COLS=null})
Source(groups=[trippin.People AS p], props={OUTPUT_COLS=null})
Access(groups=[trippin.People_Friends AS pf], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, ACCESS_PATTERNS=[Access Pattern: Unsatisfied [pf.People_UserName] History [[pf.People_UserName]]], OUTPUT_COLS=null})
Source(groups=[trippin.People_Friends AS pf], props={OUTPUT_COLS=null})
============================================================================
EXECUTING PlanJoins
AFTER:
TupleLimit(groups=[])
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p], props={PROJECT_COLS=[p.UserName AS x, pf.UserName AS y], OUTPUT_COLS=null})
Select(groups=[trippin.People_Friends AS pf, trippin.People AS p], props={SELECT_CRITERIA=p.UserName = pf.People_UserName, EST_SELECTIVITY=0.037})
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=CROSS JOIN, JOIN_STRATEGY=NESTED_LOOP})
Access(groups=[trippin.People AS p], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, OUTPUT_COLS=null, EST_CARDINALITY=-1.0})
Source(groups=[trippin.People AS p], props={OUTPUT_COLS=null, EST_COL_STATS={p.UserName=[-1.0, -1.0], p.FirstName=[-1.0, -1.0], p.LastName=[-1.0, -1.0], p.Emails=[-1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
Access(groups=[trippin.People_Friends AS pf], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, ACCESS_PATTERNS=[Access Pattern: Unsatisfied [pf.People_UserName] History [[pf.People_UserName]]], OUTPUT_COLS=null, ACCESS_PATTERN_USED=Access Pattern: Unsatisfied [pf.People_UserName] History [[pf.People_UserName]], REQUIRED_ACCESS_PATTERN_GROUPS=[trippin.People AS p], EST_CARDINALITY=-1.0})
Source(groups=[trippin.People_Friends AS pf], props={OUTPUT_COLS=null, EST_COL_STATS={pf.UserName=[-1.0, -1.0], pf.FirstName=[-1.0, -1.0], pf.LastName=[-1.0, -1.0], pf.Emails=[-1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
============================================================================
EXECUTING PushSelectCriteria
AFTER:
TupleLimit(groups=[])
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p], props={PROJECT_COLS=[p.UserName AS x, pf.UserName AS y], OUTPUT_COLS=null})
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[p.UserName = pf.People_UserName]})
Access(groups=[trippin.People AS p])
Source(groups=[trippin.People AS p])
Access(groups=[trippin.People_Friends AS pf])
Source(groups=[trippin.People_Friends AS pf])
============================================================================
EXECUTING RaiseAccess
AFTER:
TupleLimit(groups=[])
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p])
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[p.UserName = pf.People_UserName]})
Access(groups=[trippin.People AS p], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, OUTPUT_COLS=null, EST_CARDINALITY=-1.0})
Source(groups=[trippin.People AS p])
Access(groups=[trippin.People_Friends AS pf], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, ACCESS_PATTERNS=[Access Pattern: Unsatisfied [pf.People_UserName] History [[pf.People_UserName]]], OUTPUT_COLS=null, ACCESS_PATTERN_USED=Access Pattern: Unsatisfied [pf.People_UserName] History [[pf.People_UserName]], REQUIRED_ACCESS_PATTERN_GROUPS=[trippin.People AS p], EST_CARDINALITY=-1.0})
Source(groups=[trippin.People_Friends AS pf])
============================================================================
EXECUTING org.teiid.query.optimizer.relational.rules.RulePlanOuterJoins@2cb435f5
AFTER:
TupleLimit(groups=[])
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p])
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[p.UserName = pf.People_UserName]})
Access(groups=[trippin.People AS p])
Source(groups=[trippin.People AS p])
Access(groups=[trippin.People_Friends AS pf])
Source(groups=[trippin.People_Friends AS pf])
============================================================================
EXECUTING ChooseJoinStrategy
AFTER:
TupleLimit(groups=[])
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p])
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[p.UserName = pf.People_UserName], LEFT_EXPRESSIONS=[p.UserName], RIGHT_EXPRESSIONS=[pf.People_UserName], NON_EQUI_JOIN_CRITERIA=[]})
Access(groups=[trippin.People AS p])
Source(groups=[trippin.People AS p])
Access(groups=[trippin.People_Friends AS pf])
Source(groups=[trippin.People_Friends AS pf])
============================================================================
EXECUTING ChooseDependent
LOW [Relational Planner] unsatisfied access pattern detected - marking as dependent side of join Access(groups=[trippin.People_Friends AS pf], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, ACCESS_PATTERNS=[Access Pattern: Unsatisfied [pf.People_UserName] History [[pf.People_UserName]]], OUTPUT_COLS=null, ACCESS_PATTERN_USED=Access Pattern: Unsatisfied [pf.People_UserName] History [[pf.People_UserName]], REQUIRED_ACCESS_PATTERN_GROUPS=[trippin.People AS p], EST_CARDINALITY=-1.0}
AFTER:
TupleLimit(groups=[])
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p])
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[p.UserName = pf.People_UserName], LEFT_EXPRESSIONS=[p.UserName], RIGHT_EXPRESSIONS=[pf.People_UserName], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id2})
Access(groups=[trippin.People AS p], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, OUTPUT_COLS=null, EST_CARDINALITY=-1.0})
Source(groups=[trippin.People AS p], props={OUTPUT_COLS=null, EST_COL_STATS={p.UserName=[-1.0, -1.0], p.FirstName=[-1.0, -1.0], p.LastName=[-1.0, -1.0], p.Emails=[-1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
Select(groups=[trippin.People_Friends AS pf], props={SELECT_CRITERIA=pf.People_UserName IN (<dependent values>), IS_DEPENDENT_SET=true})
Access(groups=[trippin.People_Friends AS pf], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, ACCESS_PATTERNS=[Access Pattern: Unsatisfied [pf.People_UserName] History [[pf.People_UserName]]], OUTPUT_COLS=null, ACCESS_PATTERN_USED=Access Pattern: Unsatisfied [pf.People_UserName] History [[pf.People_UserName]], REQUIRED_ACCESS_PATTERN_GROUPS=[trippin.People AS p], EST_CARDINALITY=-1.0})
Source(groups=[trippin.People_Friends AS pf])
============================================================================
EXECUTING PushSelectCriteria
AFTER:
TupleLimit(groups=[])
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p])
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[p.UserName = pf.People_UserName], LEFT_EXPRESSIONS=[p.UserName], RIGHT_EXPRESSIONS=[pf.People_UserName], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id2})
Access(groups=[trippin.People AS p])
Source(groups=[trippin.People AS p])
Access(groups=[trippin.People_Friends AS pf], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, OUTPUT_COLS=null, ACCESS_PATTERN_USED=Access Pattern: Unsatisfied [] History [[pf.People_UserName]], REQUIRED_ACCESS_PATTERN_GROUPS=[trippin.People AS p], EST_CARDINALITY=-1.0, IS_DEPENDENT_SET=true})
Select(groups=[trippin.People_Friends AS pf], props={SELECT_CRITERIA=pf.People_UserName IN (<dependent values>), IS_DEPENDENT_SET=true, IS_PUSHED=true})
Source(groups=[trippin.People_Friends AS pf], props={OUTPUT_COLS=null, EST_COL_STATS={pf.UserName=[-1.0, -1.0], pf.FirstName=[-1.0, -1.0], pf.LastName=[-1.0, -1.0], pf.Emails=[-1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
============================================================================
EXECUTING CleanCriteria
AFTER:
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=100, OUTPUT_COLS=null})
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p], props={PROJECT_COLS=[p.UserName AS x, pf.UserName AS y], OUTPUT_COLS=null})
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[p.UserName = pf.People_UserName], LEFT_EXPRESSIONS=[p.UserName], RIGHT_EXPRESSIONS=[pf.People_UserName], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id2, OUTPUT_COLS=null})
Access(groups=[trippin.People AS p], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, OUTPUT_COLS=null, EST_CARDINALITY=-1.0})
Source(groups=[trippin.People AS p], props={OUTPUT_COLS=null, EST_COL_STATS={p.UserName=[-1.0, -1.0], p.FirstName=[-1.0, -1.0], p.LastName=[-1.0, -1.0], p.Emails=[-1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
Access(groups=[trippin.People_Friends AS pf], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, OUTPUT_COLS=null, ACCESS_PATTERN_USED=Access Pattern: Unsatisfied [] History [[pf.People_UserName]], REQUIRED_ACCESS_PATTERN_GROUPS=[trippin.People AS p], EST_CARDINALITY=-1.0, IS_DEPENDENT_SET=true})
Select(groups=[trippin.People_Friends AS pf], props={SELECT_CRITERIA=pf.People_UserName IN (<dependent values>), IS_DEPENDENT_SET=true, IS_PUSHED=true, OUTPUT_COLS=null})
Source(groups=[trippin.People_Friends AS pf], props={OUTPUT_COLS=null, EST_COL_STATS={pf.UserName=[-1.0, -1.0], pf.FirstName=[-1.0, -1.0], pf.LastName=[-1.0, -1.0], pf.Emails=[-1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
============================================================================
EXECUTING AssignOutputElements
AFTER:
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=100, OUTPUT_COLS=[p.UserName AS x, pf.UserName AS y]})
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p], props={PROJECT_COLS=[p.UserName AS x, pf.UserName AS y], OUTPUT_COLS=[p.UserName AS x, pf.UserName AS y]})
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[p.UserName = pf.People_UserName], LEFT_EXPRESSIONS=[p.UserName], RIGHT_EXPRESSIONS=[pf.People_UserName], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id2, OUTPUT_COLS=[p.UserName, pf.UserName]})
Access(groups=[trippin.People AS p], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, OUTPUT_COLS=[p.UserName], EST_CARDINALITY=-1.0})
Source(groups=[trippin.People AS p], props={OUTPUT_COLS=[p.UserName], EST_COL_STATS={p.UserName=[-1.0, -1.0], p.FirstName=[-1.0, -1.0], p.LastName=[-1.0, -1.0], p.Emails=[-1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
Access(groups=[trippin.People_Friends AS pf], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, OUTPUT_COLS=[pf.People_UserName, pf.UserName], ACCESS_PATTERN_USED=Access Pattern: Unsatisfied [] History [[pf.People_UserName]], REQUIRED_ACCESS_PATTERN_GROUPS=[trippin.People AS p], EST_CARDINALITY=-1.0, IS_DEPENDENT_SET=true})
Select(groups=[trippin.People_Friends AS pf], props={SELECT_CRITERIA=pf.People_UserName IN (<dependent values>), IS_DEPENDENT_SET=true, IS_PUSHED=true, OUTPUT_COLS=[pf.People_UserName, pf.UserName]})
Source(groups=[trippin.People_Friends AS pf], props={OUTPUT_COLS=[pf.People_UserName, pf.UserName], EST_COL_STATS={pf.UserName=[-1.0, -1.0], pf.FirstName=[-1.0, -1.0], pf.LastName=[-1.0, -1.0], pf.Emails=[-1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
============================================================================
EXECUTING PushLimit
AFTER:
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p], props={PROJECT_COLS=[p.UserName AS x, pf.UserName AS y], OUTPUT_COLS=[p.UserName AS x, pf.UserName AS y], SOURCE_HINT=null})
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=100, OUTPUT_COLS=[p.UserName, pf.UserName]})
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[p.UserName = pf.People_UserName], LEFT_EXPRESSIONS=[p.UserName], RIGHT_EXPRESSIONS=[pf.People_UserName], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id2, OUTPUT_COLS=[p.UserName, pf.UserName]})
Access(groups=[trippin.People AS p])
Source(groups=[trippin.People AS p])
Access(groups=[trippin.People_Friends AS pf])
Select(groups=[trippin.People_Friends AS pf])
Source(groups=[trippin.People_Friends AS pf])
============================================================================
EXECUTING CalculateCost
AFTER:
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p], props={PROJECT_COLS=[p.UserName AS x, pf.UserName AS y], OUTPUT_COLS=[p.UserName AS x, pf.UserName AS y], SOURCE_HINT=null, EST_CARDINALITY=100.0, EST_COL_STATS={p.UserName AS x=[100.0, 1.0], pf.UserName AS y=[100.0, 1.0]}})
TupleLimit(groups=[], props={MAX_TUPLE_LIMIT=100, OUTPUT_COLS=[p.UserName, pf.UserName], EST_CARDINALITY=100.0, EST_COL_STATS={p.UserName=[100.0, 0.0], pf.UserName=[100.0, 0.0]}})
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[p.UserName = pf.People_UserName], LEFT_EXPRESSIONS=[p.UserName], RIGHT_EXPRESSIONS=[pf.People_UserName], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id2, OUTPUT_COLS=[p.UserName, pf.UserName], EST_CARDINALITY=-1.0})
Access(groups=[trippin.People AS p], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, OUTPUT_COLS=[p.UserName], EST_CARDINALITY=-1.0})
Source(groups=[trippin.People AS p], props={OUTPUT_COLS=[p.UserName], EST_COL_STATS={p.UserName=[-1.0, -1.0], p.FirstName=[-1.0, -1.0], p.LastName=[-1.0, -1.0], p.Emails=[-1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
Access(groups=[trippin.People_Friends AS pf], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, OUTPUT_COLS=[pf.People_UserName, pf.UserName], ACCESS_PATTERN_USED=Access Pattern: Unsatisfied [] History [[pf.People_UserName]], REQUIRED_ACCESS_PATTERN_GROUPS=[trippin.People AS p], EST_CARDINALITY=-1.0, IS_DEPENDENT_SET=true})
Select(groups=[trippin.People_Friends AS pf], props={SELECT_CRITERIA=pf.People_UserName IN (<dependent values>), IS_DEPENDENT_SET=true, IS_PUSHED=true, OUTPUT_COLS=[pf.People_UserName, pf.UserName], EST_CARDINALITY=-1.0})
Source(groups=[trippin.People_Friends AS pf], props={OUTPUT_COLS=[pf.People_UserName, pf.UserName], EST_COL_STATS={pf.UserName=[-1.0, -1.0], pf.FirstName=[-1.0, -1.0], pf.LastName=[-1.0, -1.0], pf.Emails=[-1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
============================================================================
EXECUTING ImplementJoinStrategy
AFTER:
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p])
TupleLimit(groups=[])
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[p.UserName = pf.People_UserName], LEFT_EXPRESSIONS=[p.UserName], RIGHT_EXPRESSIONS=[pf.People_UserName], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id2, OUTPUT_COLS=[p.UserName, pf.UserName], EST_CARDINALITY=-1.0, IS_LEFT_DISTINCT=true})
Access(groups=[trippin.People AS p], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, OUTPUT_COLS=[p.UserName], EST_CARDINALITY=-1.0})
Sort(groups=[], props={SORT_ORDER=ORDER BY p.UserName, OUTPUT_COLS=[p.UserName]})
Source(groups=[trippin.People AS p], props={OUTPUT_COLS=[p.UserName], EST_COL_STATS={p.UserName=[-1.0, -1.0], p.FirstName=[-1.0, -1.0], p.LastName=[-1.0, -1.0], p.Emails=[-1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
Access(groups=[trippin.People_Friends AS pf], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, OUTPUT_COLS=[pf.People_UserName, pf.UserName], ACCESS_PATTERN_USED=Access Pattern: Unsatisfied [] History [[pf.People_UserName]], REQUIRED_ACCESS_PATTERN_GROUPS=[trippin.People AS p], EST_CARDINALITY=-1.0, IS_DEPENDENT_SET=true})
Sort(groups=[], props={SORT_ORDER=ORDER BY pf.People_UserName, OUTPUT_COLS=[pf.People_UserName, pf.UserName]})
Select(groups=[trippin.People_Friends AS pf], props={SELECT_CRITERIA=pf.People_UserName IN (<dependent values>), IS_DEPENDENT_SET=true, IS_PUSHED=true, OUTPUT_COLS=[pf.People_UserName, pf.UserName], EST_CARDINALITY=-1.0})
Source(groups=[trippin.People_Friends AS pf], props={OUTPUT_COLS=[pf.People_UserName, pf.UserName], EST_COL_STATS={pf.UserName=[-1.0, -1.0], pf.FirstName=[-1.0, -1.0], pf.LastName=[-1.0, -1.0], pf.Emails=[-1.0, -1.0], ...}, EST_CARDINALITY=-1.0})
============================================================================
EXECUTING MergeCriteria
AFTER:
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p])
TupleLimit(groups=[])
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf])
Access(groups=[trippin.People AS p])
Sort(groups=[])
Source(groups=[trippin.People AS p])
Access(groups=[trippin.People_Friends AS pf])
Sort(groups=[])
Select(groups=[trippin.People_Friends AS pf])
Source(groups=[trippin.People_Friends AS pf])
============================================================================
EXECUTING PlanSorts
AFTER:
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p])
TupleLimit(groups=[])
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf], props={JOIN_TYPE=INNER JOIN, JOIN_STRATEGY=MERGE, JOIN_CRITERIA=[p.UserName = pf.People_UserName], LEFT_EXPRESSIONS=[p.UserName], RIGHT_EXPRESSIONS=[pf.People_UserName], NON_EQUI_JOIN_CRITERIA=[], DEPENDENT_VALUE_SOURCE=$dsc/id2, OUTPUT_COLS=[p.UserName, pf.UserName], EST_CARDINALITY=-1.0, IS_LEFT_DISTINCT=true})
Access(groups=[trippin.People AS p])
Sort(groups=[])
Source(groups=[trippin.People AS p])
Access(groups=[trippin.People_Friends AS pf])
Sort(groups=[])
Select(groups=[trippin.People_Friends AS pf])
Source(groups=[trippin.People_Friends AS pf])
============================================================================
EXECUTING CollapseSource
AFTER:
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p])
TupleLimit(groups=[])
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf])
Access(groups=[trippin.People AS p], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, OUTPUT_COLS=[p.UserName], EST_CARDINALITY=-1.0, ATOMIC_REQUEST=SELECT p.UserName FROM trippin.People AS p ORDER BY p.UserName})
Access(groups=[trippin.People_Friends AS pf], props={SOURCE_HINT=null, MODEL_ID=Schema name=trippin, nameInSource=null, uuid=tid:504e52bcc3ea-c0d78f50-00000000, OUTPUT_COLS=[pf.People_UserName, pf.UserName], ACCESS_PATTERN_USED=Access Pattern: Unsatisfied [] History [[pf.People_UserName]], REQUIRED_ACCESS_PATTERN_GROUPS=[trippin.People AS p], EST_CARDINALITY=-1.0, IS_DEPENDENT_SET=true, ATOMIC_REQUEST=SELECT pf.People_UserName, pf.UserName FROM trippin.People_Friends AS pf WHERE pf.People_UserName IN (<dependent values>) ORDER BY pf.People_UserName})
============================================================================
EXECUTING AccessPatternValidation
AFTER:
Project(groups=[trippin.People_Friends AS pf, trippin.People AS p])
TupleLimit(groups=[])
Join(groups=[trippin.People AS p, trippin.People_Friends AS pf])
Access(groups=[trippin.People AS p])
Access(groups=[trippin.People_Friends AS pf])
============================================================================
CONVERTING PLAN TREE TO PROCESS TREE
PROCESS PLAN =
ProjectNode(0) output=[p.UserName AS x, pf.UserName AS y] [p.UserName AS x, pf.UserName AS y]
LimitNode(1) output=[p.UserName, pf.UserName] limit 100
JoinNode(2) [Dependent] [MERGE JOIN (ALREADY_SORTED/ALREADY_SORTED)] [INNER JOIN] criteria=[p.UserName=pf.People_UserName] output=[p.UserName, pf.UserName]
AccessNode(3) output=[p.UserName] SELECT trippin.People.UserName FROM trippin.People ORDER BY trippin.People.UserName
DependentAccessNode(4) output=[pf.People_UserName, pf.UserName] SELECT trippin.People_Friends.People_UserName, trippin.People_Friends.UserName FROM trippin.People_Friends WHERE trippin.People_Friends.People_UserName IN (<dependent values>) ORDER BY trippin.People_Friends.People_UserName
============================================================================
----------------------------------------------------------------------------
OPTIMIZATION COMPLETE:
PROCESSOR PLAN:
ProjectNode(0) output=[p.UserName AS x, pf.UserName AS y] [p.UserName AS x, pf.UserName AS y]
LimitNode(1) output=[p.UserName, pf.UserName] limit 100
JoinNode(2) [Dependent] [MERGE JOIN (ALREADY_SORTED/ALREADY_SORTED)] [INNER JOIN] criteria=[p.UserName=pf.People_UserName] output=[p.UserName, pf.UserName]
AccessNode(3) output=[p.UserName] SELECT trippin.People.UserName FROM trippin.People ORDER BY trippin.People.UserName
DependentAccessNode(4) output=[pf.People_UserName, pf.UserName] SELECT trippin.People_Friends.People_UserName, trippin.People_Friends.UserName FROM trippin.People_Friends WHERE trippin.People_Friends.People_UserName IN (<dependent values>) ORDER BY trippin.People_Friends.People_UserName
============================================================================
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment