mirror of https://github.com/citusdata/citus.git
introduce SetJoinRelatedColumnsCompat
PG13 uses joinmergedcols, joinleftcols and joinrightcols for finding join order now. There relevant fields are set on citus side. Postgres side commit: 9ce77d75c5ab094637cc4a446296dc3be6e3c221pull/3900/head
parent
135af84859
commit
bc20920252
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue