private ConstructJoinCondition ( CandidateJoinUnit candidateTree, IMatchJoinStatisticsCalculator statisticsCalculator, GraphMetaData metaData, bool>.Dictionary |
||
candidateTree | CandidateJoinUnit | |
statisticsCalculator | IMatchJoinStatisticsCalculator | |
metaData | GraphMetaData | |
srcNodeStatisticsDict | bool>.Dictionary | |
preJoinSelectivity | double | |
postJoinSelectivity | double | |
sqlEstimatedJoinSelectivity | double | |
return | WBooleanExpression |
/// <summary> /// Transit from current component to the new component in the next state given the Node Unit /// </summary> /// <param name="candidateTree"></param> /// <param name="statisticsCalculator"></param> /// <returns></returns> public MatchComponent GetNextState( CandidateJoinUnit candidateTree, IMatchJoinStatisticsCalculator statisticsCalculator, GraphMetaData metaData) { // Deep copy the component var newComponent = new MatchComponent(this); // Constrcuts join conditions and retrieves join selectivity double joinSelectivity; double sqlEstimatedJoinSelectivity; var joinCondition = newComponent.ConstructJoinCondition(candidateTree, statisticsCalculator, metaData, out joinSelectivity, out sqlEstimatedJoinSelectivity); // Constructs physical join method and join table references newComponent.ConstructPhysicalJoinAndUpdateCost(candidateTree, joinCondition, joinSelectivity, sqlEstimatedJoinSelectivity, metaData); return(newComponent); }
/// <summary> /// Transit from current component to the new component in the next state given the Node Unit /// </summary> /// <param name="candidateTree"></param> /// <param name="statisticsCalculator"></param> /// <param name="metaData"></param> /// <param name="srcNodeStatisticsDict"></param> /// <returns></returns> public MatchComponent GetNextState( CandidateJoinUnit candidateTree, IMatchJoinStatisticsCalculator statisticsCalculator, GraphMetaData metaData, Dictionary<Tuple<string, bool>, Statistics> srcNodeStatisticsDict) { // Deep copy the component var newComponent = new MatchComponent(this); // Constrcuts join conditions and retrieves join selectivity double preJoinSelectivity, postJoinSelectivity, sqlEstimatedJoinSelectivity; var joinCondition = newComponent.ConstructJoinCondition(candidateTree, statisticsCalculator, metaData, srcNodeStatisticsDict, out preJoinSelectivity, out postJoinSelectivity, out sqlEstimatedJoinSelectivity); // Constructs physical join method and join table references newComponent.ConstructPhysicalJoinAndUpdateCost(candidateTree, joinCondition, preJoinSelectivity, postJoinSelectivity, sqlEstimatedJoinSelectivity, metaData); return newComponent; }