introduce SetJoinRelatedColumnsCompat

PG13 uses joinmergedcols, joinleftcols and joinrightcols for finding
join order now. There relevant fields are set on citus side.

Postgres side commit:
9ce77d75c5ab094637cc4a446296dc3be6e3c221
pull/3900/head
Sait Talha Nisanci 2020-05-29 22:22:17 +03:00
parent 135af84859
commit bc20920252
1 changed files with 26 additions and 0 deletions

View File

@ -130,6 +130,8 @@ static List * QuerySelectClauseList(MultiNode *multiNode);
static List * QueryFromList(List *rangeTableList);
static Node * QueryJoinTree(MultiNode *multiNode, List *dependentJobList,
List **rangeTableList);
static void SetJoinRelatedColumnsCompat(RangeTblEntry *rangeTableEntry, int joinMergedCols,
List *leftColumnVars, List *rightColumnVars);
static RangeTblEntry * JoinRangeTableEntry(JoinExpr *joinExpr, List *dependentJobList,
List *rangeTableList);
static int ExtractRangeTableId(Node *node);
@ -1260,9 +1262,33 @@ JoinRangeTableEntry(JoinExpr *joinExpr, List *dependentJobList, List *rangeTable
rangeTableEntry->eref->colnames = joinedColumnNames;
rangeTableEntry->joinaliasvars = joinedColumnVars;
SetJoinRelatedColumnsCompat(rangeTableEntry, list_length(joinExpr->usingClause),
leftColumnVars, rightColumnVars);
return rangeTableEntry;
}
static void SetJoinRelatedColumnsCompat(RangeTblEntry *rangeTableEntry, int joinMergedCols,
List *leftColumnVars, List *rightColumnVars) {
#if PG_VERSION_NUM >= PG_VERSION_13
rangeTableEntry->joinmergedcols = joinMergedCols;
Var* var = NULL;
List* joinleftcols = NIL;
foreach_ptr(var, leftColumnVars) {
joinleftcols = lappend_int(joinleftcols, var->varno);
}
List* joinrightcols = NIL;
foreach_ptr(var, rightColumnVars) {
joinrightcols = lappend_int(joinrightcols, var->varno);
}
rangeTableEntry->joinleftcols = joinleftcols;
rangeTableEntry->joinrightcols = joinrightcols;
#endif
}
/*
* ExtractRangeTableId gets the range table id from a node that could