mirror of https://github.com/citusdata/citus.git
refactor
parent
d637814e46
commit
83f08b6aa6
|
@ -69,11 +69,11 @@ static uint32 LargeDataTransferLocation(List *joinOrder);
|
|||
static List * TableEntryListDifference(List *lhsTableList, List *rhsTableList);
|
||||
static bool ConvertSemiToInnerInJoinInfoContext(JoinInfoContext *joinOrderContext);
|
||||
static bool JoinInfoContextHasAntiJoin(JoinInfoContext *joinOrderContext);
|
||||
static List * FindJoinClauseForTables(List *joinRestrictInfoListList,
|
||||
List *generatedEcJoinClauseList,
|
||||
List *lhsTableIdList,
|
||||
uint32 rhsTableId,
|
||||
JoinType joinType);
|
||||
static List * FindApplicableJoinClausesForTables(List *joinRestrictInfoListList,
|
||||
List *generatedEcJoinClauseList,
|
||||
List *lhsTableIdList,
|
||||
uint32 rhsTableId,
|
||||
JoinType joinType);
|
||||
static const char * JoinTypeName(JoinType jointype);
|
||||
static List * ExtractPushdownJoinRestrictInfos(List *joinRestrictInfoList,
|
||||
RestrictInfo *joinRestrictInfo,
|
||||
|
@ -382,6 +382,8 @@ ExtractPushdownJoinRestrictInfos(List *restrictInfoListOfJoin,
|
|||
Bitmapset *joinRelids = bms_union(joinRestrictInfo->left_relids,
|
||||
joinRestrictInfo->right_relids);
|
||||
|
||||
/* todo:aykut joinRelids should be taken from planner context */
|
||||
|
||||
RestrictInfo *restrictInfo = NULL;
|
||||
foreach_ptr(restrictInfo, restrictInfoListOfJoin)
|
||||
{
|
||||
|
@ -398,14 +400,17 @@ ExtractPushdownJoinRestrictInfos(List *restrictInfoListOfJoin,
|
|||
|
||||
|
||||
/*
|
||||
* FindJoinClauseForTables finds join clause for given left hand side tables and
|
||||
* right hand side table.
|
||||
* FindApplicableJoinClausesForTables finds all applicable join clauses for given
|
||||
* left hand side tables and right hand side table. It encapsulates pushdownable
|
||||
* and nonpushdownable parts of the join clauses inside ApplicableJoinClauseContext.
|
||||
*/
|
||||
static List *
|
||||
FindJoinClauseForTables(List *joinRestrictInfoListList, List *generatedEcJoinClauseList,
|
||||
List *lhsTableIdList, uint32 rhsTableId, JoinType joinType)
|
||||
FindApplicableJoinClausesForTables(List *joinRestrictInfoListList,
|
||||
List *generatedEcJoinClauseList,
|
||||
List *lhsTableIdList, uint32 rhsTableId, JoinType
|
||||
joinType)
|
||||
{
|
||||
List *applicableJoinClauseListList = NIL;
|
||||
List *applicableJoinClauseContextList = NIL;
|
||||
|
||||
List *joinRestrictInfoList = NIL;
|
||||
foreach_ptr(joinRestrictInfoList, joinRestrictInfoListList)
|
||||
|
@ -420,13 +425,24 @@ FindJoinClauseForTables(List *joinRestrictInfoListList, List *generatedEcJoinCla
|
|||
{
|
||||
List *pushdownableJoinRestrictInfoList = ExtractPushdownJoinRestrictInfos(
|
||||
joinRestrictInfoList, joinRestrictInfo, joinType);
|
||||
List *pushdownableJoinRestrictClauseList =
|
||||
get_all_actual_clauses(pushdownableJoinRestrictInfoList);
|
||||
List *nonPushdownableJoinRestrictInfoList = list_difference(
|
||||
joinRestrictInfoList,
|
||||
pushdownableJoinRestrictInfoList);
|
||||
List *nonPushdownableJoinRestrictClauseList =
|
||||
get_all_actual_clauses(nonPushdownableJoinRestrictInfoList);
|
||||
applicableJoinClauseListList = lappend(applicableJoinClauseListList,
|
||||
nonPushdownableJoinRestrictClauseList);
|
||||
|
||||
ApplicableJoinClauseContext *applicableJoinClauseContext = palloc0(
|
||||
sizeof(ApplicableJoinClauseContext));
|
||||
applicableJoinClauseContext->joinClauseList = get_all_actual_clauses(
|
||||
joinRestrictInfoList);
|
||||
applicableJoinClauseContext->pushdownableJoinClauseList =
|
||||
pushdownableJoinRestrictClauseList;
|
||||
applicableJoinClauseContext->nonPushdownableJoinClauseList =
|
||||
nonPushdownableJoinRestrictClauseList;
|
||||
applicableJoinClauseContextList = lappend(applicableJoinClauseContextList,
|
||||
applicableJoinClauseContext);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -439,13 +455,30 @@ FindJoinClauseForTables(List *joinRestrictInfoListList, List *generatedEcJoinCla
|
|||
{
|
||||
if (IsApplicableJoinClause(lhsTableIdList, rhsTableId, ecClause))
|
||||
{
|
||||
applicableJoinClauseListList = lappend(applicableJoinClauseListList,
|
||||
list_make1(ecClause));
|
||||
List *generatedJoinClauseList = list_make1(ecClause);
|
||||
ApplicableJoinClauseContext *applicableJoinClauseContext = palloc0(
|
||||
sizeof(ApplicableJoinClauseContext));
|
||||
applicableJoinClauseContext->joinClauseList = generatedJoinClauseList;
|
||||
applicableJoinClauseContext->pushdownableJoinClauseList = NIL;
|
||||
applicableJoinClauseContext->nonPushdownableJoinClauseList =
|
||||
generatedJoinClauseList;
|
||||
applicableJoinClauseContextList = lappend(applicableJoinClauseContextList,
|
||||
applicableJoinClauseContext);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return applicableJoinClauseListList;
|
||||
/* add an empty join clause list to be evaluated by cartesian rules */
|
||||
List *emptyClauseList = NIL;
|
||||
ApplicableJoinClauseContext *emptyApplicableJoinClauseContext = palloc0(
|
||||
sizeof(ApplicableJoinClauseContext));
|
||||
emptyApplicableJoinClauseContext->joinClauseList = emptyClauseList;
|
||||
emptyApplicableJoinClauseContext->pushdownableJoinClauseList = emptyClauseList;
|
||||
emptyApplicableJoinClauseContext->nonPushdownableJoinClauseList = emptyClauseList;
|
||||
applicableJoinClauseContextList = lappend(applicableJoinClauseContextList,
|
||||
emptyApplicableJoinClauseContext);
|
||||
|
||||
return applicableJoinClauseContextList;
|
||||
}
|
||||
|
||||
|
||||
|
@ -989,13 +1022,12 @@ EvaluateJoinRules(List *joinedTableList, JoinOrderNode *currentJoinNode,
|
|||
*/
|
||||
List *joinedTableIdList = RangeTableIdList(joinedTableList);
|
||||
uint32 candidateTableId = candidateTable->rangeTableId;
|
||||
List *applicableJoinClauseListList = FindJoinClauseForTables(joinRestrictInfoListList,
|
||||
generatedEcJoinClauseList,
|
||||
joinedTableIdList,
|
||||
candidateTableId,
|
||||
joinType);
|
||||
List *emptyClauseList = NIL;
|
||||
applicableJoinClauseListList = lappend(applicableJoinClauseListList, emptyClauseList);
|
||||
List *applicableJoinClauseContextList = FindApplicableJoinClausesForTables(
|
||||
joinRestrictInfoListList,
|
||||
generatedEcJoinClauseList,
|
||||
joinedTableIdList,
|
||||
candidateTableId,
|
||||
joinType);
|
||||
|
||||
/* we then evaluate all join rules in order */
|
||||
for (uint32 ruleIndex = lowestValidIndex; ruleIndex <= highestValidIndex; ruleIndex++)
|
||||
|
@ -1003,9 +1035,11 @@ EvaluateJoinRules(List *joinedTableList, JoinOrderNode *currentJoinNode,
|
|||
JoinRuleType ruleType = (JoinRuleType) ruleIndex;
|
||||
RuleEvalFunction ruleEvalFunction = JoinRuleEvalFunction(ruleType);
|
||||
|
||||
List *applicableJoinClauseList = NIL;
|
||||
foreach_ptr(applicableJoinClauseList, applicableJoinClauseListList)
|
||||
ApplicableJoinClauseContext *applicableJoinClauseContext = NULL;
|
||||
foreach_ptr(applicableJoinClauseContext, applicableJoinClauseContextList)
|
||||
{
|
||||
List *applicableJoinClauseList =
|
||||
applicableJoinClauseContext->nonPushdownableJoinClauseList;
|
||||
nextJoinNode = (*ruleEvalFunction)(currentJoinNode,
|
||||
candidateTable,
|
||||
applicableJoinClauseList,
|
||||
|
@ -1015,7 +1049,9 @@ EvaluateJoinRules(List *joinedTableList, JoinOrderNode *currentJoinNode,
|
|||
if (nextJoinNode != NULL)
|
||||
{
|
||||
nextJoinNode->joinType = joinType;
|
||||
nextJoinNode->joinClauseList = applicableJoinClauseList;
|
||||
nextJoinNode->joinClauseList =
|
||||
applicableJoinClauseContext->nonPushdownableJoinClauseList;
|
||||
nextJoinNode->applicableJoinClauseContext = applicableJoinClauseContext;
|
||||
return nextJoinNode;
|
||||
}
|
||||
}
|
||||
|
@ -1542,6 +1578,7 @@ MakeJoinOrderNode(TableEntry *tableEntry, JoinRuleType joinRuleType,
|
|||
joinOrderNode->partitionColumnList = partitionColumnList;
|
||||
joinOrderNode->partitionMethod = partitionMethod;
|
||||
joinOrderNode->joinClauseList = NIL;
|
||||
joinOrderNode->applicableJoinClauseContext = NULL;
|
||||
joinOrderNode->anchorTable = anchorTable;
|
||||
|
||||
return joinOrderNode;
|
||||
|
|
|
@ -169,8 +169,9 @@ typedef struct OrderByLimitReference
|
|||
|
||||
|
||||
/* Local functions forward declarations */
|
||||
static MultiSelect * PushdownableSelectNode(MultiSelect *selectNode);
|
||||
static MultiSelect * NonPushdownableSelectNode(MultiSelect *selectNode);
|
||||
static MultiSelect * AndSelectNode(MultiSelect *selectNode);
|
||||
static MultiSelect * OrSelectNode(MultiSelect *selectNode);
|
||||
static List * OrSelectClauseList(List *selectClauseList);
|
||||
static void PushDownNodeLoop(MultiUnaryNode *currentNode);
|
||||
static void PullUpCollectLoop(MultiCollect *collectNode);
|
||||
static void AddressProjectSpecialConditions(MultiProject *projectNode);
|
||||
|
@ -380,29 +381,27 @@ MultiLogicalPlanOptimize(MultiTreeRoot *multiLogicalPlan)
|
|||
if (selectNodeList != NIL)
|
||||
{
|
||||
MultiSelect *selectNode = (MultiSelect *) linitial(selectNodeList);
|
||||
MultiSelect *pushdownableSelectNode = PushdownableSelectNode(selectNode);
|
||||
MultiSelect *nonPushdownableSelectNode = NonPushdownableSelectNode(selectNode);
|
||||
MultiSelect *andSelectNode = AndSelectNode(selectNode);
|
||||
MultiSelect *orSelectNode = OrSelectNode(selectNode);
|
||||
|
||||
if (pushdownableSelectNode != NULL && nonPushdownableSelectNode != NULL)
|
||||
if (andSelectNode != NULL && orSelectNode != NULL)
|
||||
{
|
||||
MultiNode *parentNode = ParentNode((MultiNode *) selectNode);
|
||||
MultiNode *childNode = ChildNode((MultiUnaryNode *) selectNode);
|
||||
Assert(UnaryOperator(parentNode));
|
||||
|
||||
SetChild((MultiUnaryNode *) parentNode,
|
||||
(MultiNode *) nonPushdownableSelectNode);
|
||||
SetChild((MultiUnaryNode *) nonPushdownableSelectNode,
|
||||
(MultiNode *) pushdownableSelectNode);
|
||||
SetChild((MultiUnaryNode *) pushdownableSelectNode, (MultiNode *) childNode);
|
||||
SetChild((MultiUnaryNode *) parentNode, (MultiNode *) orSelectNode);
|
||||
SetChild((MultiUnaryNode *) orSelectNode, (MultiNode *) andSelectNode);
|
||||
SetChild((MultiUnaryNode *) andSelectNode, (MultiNode *) childNode);
|
||||
}
|
||||
else if (pushdownableSelectNode != NULL && nonPushdownableSelectNode == NULL)
|
||||
else if (andSelectNode != NULL && orSelectNode == NULL)
|
||||
{
|
||||
pushdownableSelectNode = selectNode; /* no need to modify the tree */
|
||||
andSelectNode = selectNode; /* no need to modify the tree */
|
||||
}
|
||||
|
||||
if (pushdownableSelectNode != NULL)
|
||||
if (andSelectNode != NULL)
|
||||
{
|
||||
PushDownNodeLoop((MultiUnaryNode *) pushdownableSelectNode);
|
||||
PushDownNodeLoop((MultiUnaryNode *) andSelectNode);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -487,44 +486,71 @@ MultiLogicalPlanOptimize(MultiTreeRoot *multiLogicalPlan)
|
|||
|
||||
|
||||
/*
|
||||
* PushdownableSelectNode looks for pushdownable clauses in the given select node.
|
||||
* If they exist, the function returns these clauses in a new node. Otherwise, the function
|
||||
* AndSelectNode looks for AND clauses in the given select node. If they exist,
|
||||
* the function returns these clauses in a new node. Otherwise, the function
|
||||
* returns null.
|
||||
*/
|
||||
static MultiSelect *
|
||||
PushdownableSelectNode(MultiSelect *selectNode)
|
||||
AndSelectNode(MultiSelect *selectNode)
|
||||
{
|
||||
MultiSelect *pushdownableSelectNode = NULL;
|
||||
MultiSelect *andSelectNode = NULL;
|
||||
List *selectClauseList = selectNode->selectClauseList;
|
||||
List *orSelectClauseList = OrSelectClauseList(selectClauseList);
|
||||
|
||||
if (selectNode->pushdownableSelectClauseList != NIL)
|
||||
/* AND clauses are select clauses that are not OR clauses */
|
||||
List *andSelectClauseList = list_difference(selectClauseList, orSelectClauseList);
|
||||
if (andSelectClauseList != NIL)
|
||||
{
|
||||
pushdownableSelectNode = CitusMakeNode(MultiSelect);
|
||||
pushdownableSelectNode->selectClauseList =
|
||||
selectNode->pushdownableSelectClauseList;
|
||||
andSelectNode = CitusMakeNode(MultiSelect);
|
||||
andSelectNode->selectClauseList = andSelectClauseList;
|
||||
}
|
||||
|
||||
return pushdownableSelectNode;
|
||||
return andSelectNode;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* PushdownableSelectNode looks for nonpushdownable clauses in the given select node.
|
||||
* If they exist, the function returns these clauses in a new node. Otherwise, the function
|
||||
* OrSelectNode looks for OR clauses in the given select node. If they exist,
|
||||
* the function returns these clauses in a new node. Otherwise, the function
|
||||
* returns null.
|
||||
*/
|
||||
static MultiSelect *
|
||||
NonPushdownableSelectNode(MultiSelect *selectNode)
|
||||
OrSelectNode(MultiSelect *selectNode)
|
||||
{
|
||||
MultiSelect *nonPushdownableSelectNode = NULL;
|
||||
MultiSelect *orSelectNode = NULL;
|
||||
List *selectClauseList = selectNode->selectClauseList;
|
||||
List *orSelectClauseList = OrSelectClauseList(selectClauseList);
|
||||
|
||||
if (selectNode->nonPushdownableSelectClauseList != NIL)
|
||||
if (orSelectClauseList != NIL)
|
||||
{
|
||||
nonPushdownableSelectNode = CitusMakeNode(MultiSelect);
|
||||
nonPushdownableSelectNode->selectClauseList =
|
||||
selectNode->nonPushdownableSelectClauseList;
|
||||
orSelectNode = CitusMakeNode(MultiSelect);
|
||||
orSelectNode->selectClauseList = orSelectClauseList;
|
||||
}
|
||||
|
||||
return nonPushdownableSelectNode;
|
||||
return orSelectNode;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* OrSelectClauseList walks over the select clause list, and returns all clauses
|
||||
* that have OR expressions in them.
|
||||
*/
|
||||
static List *
|
||||
OrSelectClauseList(List *selectClauseList)
|
||||
{
|
||||
List *orSelectClauseList = NIL;
|
||||
|
||||
Node *selectClause = NULL;
|
||||
foreach_ptr(selectClause, selectClauseList)
|
||||
{
|
||||
bool orClause = is_orclause(selectClause);
|
||||
if (orClause)
|
||||
{
|
||||
orSelectClauseList = lappend(orSelectClauseList, selectClause);
|
||||
}
|
||||
}
|
||||
|
||||
return orSelectClauseList;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -88,13 +88,14 @@ static List * MultiTableNodeList(List *tableEntryList, List *rangeTableList);
|
|||
static List * AddMultiCollectNodes(List *tableNodeList);
|
||||
static MultiNode * MultiJoinTree(List *joinOrderList, List *collectTableList);
|
||||
static MultiCollect * CollectNodeForTable(List *collectTableList, uint32 rangeTableId);
|
||||
static MultiSelect * MultiSelectNode(List *pushdownableClauseList,
|
||||
List *nonPushdownableClauseList);
|
||||
static MultiSelect * MultiSelectNode(List *selectClauseList);
|
||||
static bool IsSelectClause(Node *clause);
|
||||
|
||||
static JoinInfoContext * FetchJoinOrderContext(FromExpr *fromExpr);
|
||||
static bool JoinInfoWalker(Node *node, JoinInfoContext *joinInfoContext);
|
||||
static List * ExtractNonPushdownableJoinClauses(List *joinOrderList);
|
||||
static ApplicableJoinClauseContext * ExtractApplicableJoinClauseContext(
|
||||
List *joinOrderList);
|
||||
static List * ExtractPushdownableSelectClausesFromJoinClauses(List *joinRestricInfoList);
|
||||
|
||||
/* Local functions forward declarations for applying joins */
|
||||
static MultiNode * ApplyJoinRule(MultiNode *leftNode, MultiNode *rightNode,
|
||||
|
@ -722,28 +723,31 @@ MultiNodeTree(Query *queryTree, PlannerRestrictionContext *plannerRestrictionCon
|
|||
|
||||
Assert(currentTopNode != NULL);
|
||||
|
||||
/* all base clauses are pushdownable */
|
||||
List *selectClauseList = baseClauseList;
|
||||
|
||||
/* pseudoconstant clauses like false, null can be pushdowned */
|
||||
selectClauseList = list_concat(selectClauseList, pseudoClauseList);
|
||||
|
||||
/*
|
||||
* build select node if the query has selection criteria
|
||||
* select node will have pushdownable and non-pushdownable parts.
|
||||
* - all base clauses can be pushdownable
|
||||
* - some of join clauses cannot be pushed down and they can only be applied after join
|
||||
* as join condition. Those should stay in MultiJoin.
|
||||
* - some of join clauses can be pushed down. Those should be in nonpushdownable part of
|
||||
* MultiSelect. ??? todo: can we also pushdown those to workers for optimization
|
||||
* (I put them on nonpushdownable part as they contain reference to both tables and fails at workers now)
|
||||
* - pseudoconstant clauses like false, null can be pushdowned
|
||||
* - some of join clauses cannot be pushed down and they can only be applied
|
||||
* after join as join filter. Those should stay in MultiJoin.
|
||||
* - some of join clauses can be pushed down. (pushdownable part inside
|
||||
* ApplicableJoinClauseContext)
|
||||
*/
|
||||
List *pushdownableSelectClauseList = baseClauseList;
|
||||
pushdownableSelectClauseList = list_concat(pushdownableSelectClauseList,
|
||||
pseudoClauseList);
|
||||
List *nonpushdownableJoinClauseList = ExtractNonPushdownableJoinClauses(
|
||||
joinOrderList);
|
||||
List *pushdownableJoinClauseList = list_difference(allJoinClauseList,
|
||||
nonpushdownableJoinClauseList);
|
||||
List *nonPushdownableSelectClauseList = pushdownableJoinClauseList;
|
||||
MultiSelect *selectNode = MultiSelectNode(pushdownableSelectClauseList,
|
||||
nonPushdownableSelectClauseList);
|
||||
ApplicableJoinClauseContext *applicableJoinClauseContext =
|
||||
ExtractApplicableJoinClauseContext(
|
||||
joinOrderList);
|
||||
List *pushdownableJoinClauseList =
|
||||
applicableJoinClauseContext->pushdownableJoinClauseList;
|
||||
List *innerPushdownableJoinClauseList =
|
||||
ExtractPushdownableSelectClausesFromJoinClauses(joinRestrictInfoList);
|
||||
pushdownableJoinClauseList = list_concat(pushdownableJoinClauseList,
|
||||
innerPushdownableJoinClauseList);
|
||||
selectClauseList = list_concat(selectClauseList,
|
||||
pushdownableJoinClauseList);
|
||||
|
||||
MultiSelect *selectNode = MultiSelectNode(selectClauseList);
|
||||
if (selectNode != NULL)
|
||||
{
|
||||
SetChild((MultiUnaryNode *) selectNode, currentTopNode);
|
||||
|
@ -770,23 +774,67 @@ MultiNodeTree(Query *queryTree, PlannerRestrictionContext *plannerRestrictionCon
|
|||
|
||||
|
||||
/*
|
||||
* ExtractNonPushdownableJoinClauses returns pushdownable clauses from given join
|
||||
* restrict infos.
|
||||
* ExtractPushdownableSelectClausesFromJoinClauses extracts pushdownable clauses from
|
||||
* given joinRestricInfoList.
|
||||
*/
|
||||
static List *
|
||||
ExtractNonPushdownableJoinClauses(List *joinOrderList)
|
||||
ExtractPushdownableSelectClausesFromJoinClauses(List *joinRestricInfoList)
|
||||
{
|
||||
List *nonPushdownJoinClauseList = NIL;
|
||||
List *pushdownableClauseList = NIL;
|
||||
|
||||
RestrictInfo *restrictInfo = NULL;
|
||||
foreach_ptr(restrictInfo, joinRestricInfoList)
|
||||
{
|
||||
bool isOuterRestriction = (bms_num_members(restrictInfo->outer_relids) > 0);
|
||||
if (!restrictInfo->can_join && !isOuterRestriction &&
|
||||
restrictInfo->is_pushed_down)
|
||||
{
|
||||
Node *pushdownableClause = (Node *) restrictInfo->clause;
|
||||
pushdownableClauseList = lappend(pushdownableClauseList, pushdownableClause);
|
||||
}
|
||||
}
|
||||
|
||||
return pushdownableClauseList;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* ExtractApplicableJoinClauseContext returns ApplicableJoinClauseContext which contains
|
||||
* all pushdownable and nonpushdownable clauses from given joinOrderList.
|
||||
*/
|
||||
static ApplicableJoinClauseContext *
|
||||
ExtractApplicableJoinClauseContext(List *joinOrderList)
|
||||
{
|
||||
List *pushdownableJoinClauseList = NIL;
|
||||
List *nonPushdownableJoinClauseList = NIL;
|
||||
|
||||
JoinOrderNode *joinOrderNode = NULL;
|
||||
foreach_ptr(joinOrderNode, joinOrderList)
|
||||
{
|
||||
List *joinClauselist = joinOrderNode->joinClauseList;
|
||||
nonPushdownJoinClauseList = list_concat(nonPushdownJoinClauseList,
|
||||
joinClauselist);
|
||||
ApplicableJoinClauseContext *nodeApplicableJoinClauseContext =
|
||||
joinOrderNode->applicableJoinClauseContext;
|
||||
|
||||
/* first node does not contain ApplicableJoinClauseContext */
|
||||
if (nodeApplicableJoinClauseContext == NULL)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
pushdownableJoinClauseList = list_concat_unique(pushdownableJoinClauseList,
|
||||
nodeApplicableJoinClauseContext->
|
||||
pushdownableJoinClauseList);
|
||||
nonPushdownableJoinClauseList = list_concat_unique(nonPushdownableJoinClauseList,
|
||||
nodeApplicableJoinClauseContext
|
||||
->nonPushdownableJoinClauseList);
|
||||
}
|
||||
|
||||
return nonPushdownJoinClauseList;
|
||||
ApplicableJoinClauseContext *applicableJoinClauseContext = palloc0(
|
||||
sizeof(ApplicableJoinClauseContext));
|
||||
applicableJoinClauseContext->joinClauseList = list_concat_copy(
|
||||
pushdownableJoinClauseList, nonPushdownableJoinClauseList);
|
||||
applicableJoinClauseContext->pushdownableJoinClauseList = pushdownableJoinClauseList;
|
||||
applicableJoinClauseContext->nonPushdownableJoinClauseList =
|
||||
nonPushdownableJoinClauseList;
|
||||
return applicableJoinClauseContext;
|
||||
}
|
||||
|
||||
|
||||
|
@ -820,10 +868,9 @@ ExtractRestrictionInfosFromPlannerContext(
|
|||
baseRestrictInfo);
|
||||
continue;
|
||||
}
|
||||
|
||||
baseRestrictInfoList = list_append_unique(baseRestrictInfoList,
|
||||
baseRestrictInfo);
|
||||
}
|
||||
baseRestrictInfoList = list_concat_unique(baseRestrictInfoList,
|
||||
relOptInfo->baserestrictinfo);
|
||||
|
||||
RestrictInfo *joinRestrictInfo = NULL;
|
||||
foreach_ptr(joinRestrictInfo, relOptInfo->joininfo)
|
||||
|
@ -840,7 +887,6 @@ ExtractRestrictionInfosFromPlannerContext(
|
|||
JoinRestriction *joinRestriction = NULL;
|
||||
foreach_ptr(joinRestriction, joinRestrictionContext->joinRestrictionList)
|
||||
{
|
||||
List *currentJoinRestrictInfoList = NIL;
|
||||
RestrictInfo *joinRestrictInfo = NULL;
|
||||
foreach_ptr(joinRestrictInfo, joinRestriction->joinRestrictInfoList)
|
||||
{
|
||||
|
@ -850,16 +896,13 @@ ExtractRestrictionInfosFromPlannerContext(
|
|||
joinRestrictInfo);
|
||||
continue;
|
||||
}
|
||||
|
||||
currentJoinRestrictInfoList = list_append_unique(currentJoinRestrictInfoList,
|
||||
joinRestrictInfo);
|
||||
|
||||
joinRestrictInfoList = list_append_unique(joinRestrictInfoList,
|
||||
joinRestrictInfo);
|
||||
}
|
||||
|
||||
joinRestrictInfoListList = lappend(joinRestrictInfoListList,
|
||||
currentJoinRestrictInfoList);
|
||||
joinRestrictInfoList = list_concat_unique(joinRestrictInfoList,
|
||||
joinRestriction->joinRestrictInfoList);
|
||||
joinRestrictInfoListList = list_append_unique(joinRestrictInfoListList,
|
||||
joinRestriction->
|
||||
joinRestrictInfoList);
|
||||
}
|
||||
|
||||
RestrictInfoContext *restrictInfoContext = palloc0(sizeof(RestrictInfoContext));
|
||||
|
@ -1878,18 +1921,14 @@ CollectNodeForTable(List *collectTableList, uint32 rangeTableId)
|
|||
* not have any select clauses, the function return null.
|
||||
*/
|
||||
static MultiSelect *
|
||||
MultiSelectNode(List *pushdownableClauseList, List *nonPushdownableClauseList)
|
||||
MultiSelectNode(List *selectClauseList)
|
||||
{
|
||||
MultiSelect *selectNode = NULL;
|
||||
|
||||
if (list_length(pushdownableClauseList) > 0 ||
|
||||
list_length(nonPushdownableClauseList) > 0)
|
||||
if (list_length(selectClauseList) > 0)
|
||||
{
|
||||
selectNode = CitusMakeNode(MultiSelect);
|
||||
selectNode->selectClauseList = list_concat_copy(pushdownableClauseList,
|
||||
nonPushdownableClauseList);
|
||||
selectNode->pushdownableSelectClauseList = pushdownableClauseList;
|
||||
selectNode->nonPushdownableSelectClauseList = nonPushdownableClauseList;
|
||||
selectNode->selectClauseList = selectClauseList;
|
||||
}
|
||||
|
||||
return selectNode;
|
||||
|
|
|
@ -60,6 +60,18 @@ typedef struct TableEntry
|
|||
} TableEntry;
|
||||
|
||||
|
||||
/*
|
||||
* ApplicableJoinClauseContext stores pushdownable and nonpushdownable
|
||||
* parts of applicable join clauses in separate lists.
|
||||
*/
|
||||
typedef struct ApplicableJoinClauseContext
|
||||
{
|
||||
List *joinClauseList;
|
||||
List *pushdownableJoinClauseList;
|
||||
List *nonPushdownableJoinClauseList;
|
||||
} ApplicableJoinClauseContext;
|
||||
|
||||
|
||||
/*
|
||||
* JoinOrderNode represents an element in the join order list; and this list
|
||||
* keeps the total join order for a distributed query. The first node in this
|
||||
|
@ -80,6 +92,7 @@ typedef struct JoinOrderNode
|
|||
|
||||
char partitionMethod;
|
||||
List *joinClauseList; /* not relevant for the first table */
|
||||
ApplicableJoinClauseContext *applicableJoinClauseContext; /* not relevant for the first table */
|
||||
TableEntry *anchorTable;
|
||||
} JoinOrderNode;
|
||||
|
||||
|
|
|
@ -124,8 +124,6 @@ typedef struct MultiSelect
|
|||
{
|
||||
MultiUnaryNode unaryNode;
|
||||
List *selectClauseList;
|
||||
List *pushdownableSelectClauseList;
|
||||
List *nonPushdownableSelectClauseList;
|
||||
} MultiSelect;
|
||||
|
||||
|
||||
|
|
|
@ -286,8 +286,8 @@ NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_res
|
|||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_26_2_3']::text[],'localhost',57637) bytes
|
||||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_26_3_3']::text[],'localhost',57638) bytes
|
||||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_26_4_3']::text[],'localhost',57636) bytes
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_25_1_0,repartition_25_2_0,repartition_25_3_0,repartition_25_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 integer) JOIN read_intermediate_results('{repartition_26_1_0,repartition_26_2_0,repartition_26_3_0,repartition_26_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 integer) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_25_1_3,repartition_25_2_3,repartition_25_3_3,repartition_25_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 integer) JOIN read_intermediate_results('{repartition_26_1_3,repartition_26_2_3,repartition_26_3_3,repartition_26_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 integer) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_25_1_0,repartition_25_2_0,repartition_25_3_0,repartition_25_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 integer) JOIN read_intermediate_results('{repartition_26_1_0,repartition_26_2_0,repartition_26_3_0,repartition_26_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 integer) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_25_1_3,repartition_25_2_3,repartition_25_3_3,repartition_25_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 integer) JOIN read_intermediate_results('{repartition_26_1_3,repartition_26_2_3,repartition_26_3_3,repartition_26_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 integer) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
count
|
||||
---------------------------------------------------------------------
|
||||
100
|
||||
|
@ -325,8 +325,8 @@ NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_res
|
|||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_30_2_5']::text[],'localhost',57637) bytes
|
||||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_30_3_5']::text[],'localhost',57638) bytes
|
||||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_30_4_5']::text[],'localhost',57636) bytes
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_29_1_2,repartition_29_2_2,repartition_29_3_2,repartition_29_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 integer) JOIN read_intermediate_results('{repartition_30_1_2,repartition_30_2_2,repartition_30_3_2,repartition_30_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 integer) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_29_1_5,repartition_29_2_5,repartition_29_3_5,repartition_29_4_5}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 integer) JOIN read_intermediate_results('{repartition_30_1_5,repartition_30_2_5,repartition_30_3_5,repartition_30_4_5}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 integer) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_29_1_2,repartition_29_2_2,repartition_29_3_2,repartition_29_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 integer) JOIN read_intermediate_results('{repartition_30_1_2,repartition_30_2_2,repartition_30_3_2,repartition_30_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 integer) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_29_1_5,repartition_29_2_5,repartition_29_3_5,repartition_29_4_5}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 integer) JOIN read_intermediate_results('{repartition_30_1_5,repartition_30_2_5,repartition_30_3_5,repartition_30_4_5}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 integer) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
count
|
||||
---------------------------------------------------------------------
|
||||
100
|
||||
|
@ -608,8 +608,8 @@ NOTICE: executing the copy locally for shard xxxxx
|
|||
INSERT INTO ref_table SELECT *, * FROM generate_series(1, 100);
|
||||
NOTICE: executing the copy locally for shard xxxxx
|
||||
SELECT COUNT(*) FROM test JOIN ref_table USING(x);
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (coordinator_shouldhaveshards.test_1503000 test JOIN coordinator_shouldhaveshards.ref_table_1503039 ref_table ON ((test.x OPERATOR(pg_catalog.=) ref_table.x))) WHERE (ref_table.x OPERATOR(pg_catalog.=) test.x)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (coordinator_shouldhaveshards.test_1503003 test JOIN coordinator_shouldhaveshards.ref_table_1503039 ref_table ON ((test.x OPERATOR(pg_catalog.=) ref_table.x))) WHERE (ref_table.x OPERATOR(pg_catalog.=) test.x)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (coordinator_shouldhaveshards.test_1503000 test JOIN coordinator_shouldhaveshards.ref_table_1503039 ref_table ON ((test.x OPERATOR(pg_catalog.=) ref_table.x))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (coordinator_shouldhaveshards.test_1503003 test JOIN coordinator_shouldhaveshards.ref_table_1503039 ref_table ON ((test.x OPERATOR(pg_catalog.=) ref_table.x))) WHERE true
|
||||
count
|
||||
---------------------------------------------------------------------
|
||||
100
|
||||
|
|
|
@ -286,8 +286,8 @@ NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_res
|
|||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_26_2_3']::text[],'localhost',57637) bytes
|
||||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_26_3_3']::text[],'localhost',57638) bytes
|
||||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_26_4_3']::text[],'localhost',57636) bytes
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_25_1_0,repartition_25_2_0,repartition_25_3_0,repartition_25_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 integer) JOIN read_intermediate_results('{repartition_26_1_0,repartition_26_2_0,repartition_26_3_0,repartition_26_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 integer) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_25_1_3,repartition_25_2_3,repartition_25_3_3,repartition_25_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 integer) JOIN read_intermediate_results('{repartition_26_1_3,repartition_26_2_3,repartition_26_3_3,repartition_26_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 integer) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_25_1_0,repartition_25_2_0,repartition_25_3_0,repartition_25_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 integer) JOIN read_intermediate_results('{repartition_26_1_0,repartition_26_2_0,repartition_26_3_0,repartition_26_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 integer) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_25_1_3,repartition_25_2_3,repartition_25_3_3,repartition_25_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 integer) JOIN read_intermediate_results('{repartition_26_1_3,repartition_26_2_3,repartition_26_3_3,repartition_26_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 integer) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
count
|
||||
---------------------------------------------------------------------
|
||||
100
|
||||
|
@ -325,8 +325,8 @@ NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_res
|
|||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_30_2_5']::text[],'localhost',57637) bytes
|
||||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_30_3_5']::text[],'localhost',57638) bytes
|
||||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_30_4_5']::text[],'localhost',57636) bytes
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_29_1_2,repartition_29_2_2,repartition_29_3_2,repartition_29_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 integer) JOIN read_intermediate_results('{repartition_30_1_2,repartition_30_2_2,repartition_30_3_2,repartition_30_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 integer) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_29_1_5,repartition_29_2_5,repartition_29_3_5,repartition_29_4_5}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 integer) JOIN read_intermediate_results('{repartition_30_1_5,repartition_30_2_5,repartition_30_3_5,repartition_30_4_5}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 integer) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_29_1_2,repartition_29_2_2,repartition_29_3_2,repartition_29_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 integer) JOIN read_intermediate_results('{repartition_30_1_2,repartition_30_2_2,repartition_30_3_2,repartition_30_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 integer) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_29_1_5,repartition_29_2_5,repartition_29_3_5,repartition_29_4_5}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 integer) JOIN read_intermediate_results('{repartition_30_1_5,repartition_30_2_5,repartition_30_3_5,repartition_30_4_5}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 integer) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
count
|
||||
---------------------------------------------------------------------
|
||||
100
|
||||
|
@ -608,8 +608,8 @@ NOTICE: executing the copy locally for shard xxxxx
|
|||
INSERT INTO ref_table SELECT *, * FROM generate_series(1, 100);
|
||||
NOTICE: executing the copy locally for shard xxxxx
|
||||
SELECT COUNT(*) FROM test JOIN ref_table USING(x);
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (coordinator_shouldhaveshards.test_1503000 test JOIN coordinator_shouldhaveshards.ref_table_1503039 ref_table ON ((test.x OPERATOR(pg_catalog.=) ref_table.x))) WHERE (ref_table.x OPERATOR(pg_catalog.=) test.x)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (coordinator_shouldhaveshards.test_1503003 test JOIN coordinator_shouldhaveshards.ref_table_1503039 ref_table ON ((test.x OPERATOR(pg_catalog.=) ref_table.x))) WHERE (ref_table.x OPERATOR(pg_catalog.=) test.x)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (coordinator_shouldhaveshards.test_1503000 test JOIN coordinator_shouldhaveshards.ref_table_1503039 ref_table ON ((test.x OPERATOR(pg_catalog.=) ref_table.x))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (coordinator_shouldhaveshards.test_1503003 test JOIN coordinator_shouldhaveshards.ref_table_1503039 ref_table ON ((test.x OPERATOR(pg_catalog.=) ref_table.x))) WHERE true
|
||||
count
|
||||
---------------------------------------------------------------------
|
||||
100
|
||||
|
|
|
@ -425,8 +425,8 @@ SELECT * FROM abcd first join abcd second on first.b = second.b ORDER BY 1,2,3,4
|
|||
|
||||
BEGIN;
|
||||
SELECT * FROM abcd first join abcd second on first.b = second.b ORDER BY 1,2,3,4;
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution.abcd_1470025 first JOIN local_shard_execution.abcd_1470025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution.abcd_1470027 first JOIN local_shard_execution.abcd_1470027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution.abcd_1470025 first JOIN local_shard_execution.abcd_1470025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution.abcd_1470027 first JOIN local_shard_execution.abcd_1470027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
b | c | d | b | c | d
|
||||
---------------------------------------------------------------------
|
||||
2 | 3 | 4 | 2 | 3 | 4
|
||||
|
@ -437,8 +437,8 @@ NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second
|
|||
END;
|
||||
BEGIN;
|
||||
SELECT * FROM abcd_view first join abcd_view second on first.b = second.b ORDER BY 1,2,3,4;
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution.abcd_1470025 abcd JOIN local_shard_execution.abcd_1470025 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE (abcd_1.b OPERATOR(pg_catalog.=) abcd.b)
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution.abcd_1470027 abcd JOIN local_shard_execution.abcd_1470027 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE (abcd_1.b OPERATOR(pg_catalog.=) abcd.b)
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution.abcd_1470025 abcd JOIN local_shard_execution.abcd_1470025 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution.abcd_1470027 abcd JOIN local_shard_execution.abcd_1470027 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE true
|
||||
b | c | d | b | c | d
|
||||
---------------------------------------------------------------------
|
||||
2 | 3 | 4 | 2 | 3 | 4
|
||||
|
@ -461,8 +461,8 @@ NOTICE: executing the command locally: SELECT worker_column_1 AS b, worker_colu
|
|||
END;
|
||||
BEGIN;
|
||||
SELECT * FROM abcd first join abcd second USING(b) ORDER BY 1,2,3,4;
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution.abcd_1470025 first JOIN local_shard_execution.abcd_1470025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution.abcd_1470027 first JOIN local_shard_execution.abcd_1470027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution.abcd_1470025 first JOIN local_shard_execution.abcd_1470025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution.abcd_1470027 first JOIN local_shard_execution.abcd_1470027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
b | c | d | c | d
|
||||
---------------------------------------------------------------------
|
||||
2 | 3 | 4 | 3 | 4
|
||||
|
@ -473,8 +473,8 @@ NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second
|
|||
END;
|
||||
BEGIN;
|
||||
SELECT * FROM abcd first join abcd second USING(b) join abcd third on first.b=third.b ORDER BY 1,2,3,4;
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution.abcd_1470025 first JOIN local_shard_execution.abcd_1470025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution.abcd_1470025 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE ((second.b OPERATOR(pg_catalog.=) third.b) AND (second.b OPERATOR(pg_catalog.=) first.b))
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution.abcd_1470027 first JOIN local_shard_execution.abcd_1470027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution.abcd_1470027 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE ((second.b OPERATOR(pg_catalog.=) third.b) AND (second.b OPERATOR(pg_catalog.=) first.b))
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution.abcd_1470025 first JOIN local_shard_execution.abcd_1470025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution.abcd_1470025 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution.abcd_1470027 first JOIN local_shard_execution.abcd_1470027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution.abcd_1470027 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE true
|
||||
b | c | d | c | d | b | c | d
|
||||
---------------------------------------------------------------------
|
||||
2 | 3 | 4 | 3 | 4 | 2 | 3 | 4
|
||||
|
@ -788,10 +788,10 @@ NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_res
|
|||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_66_2_3']::text[],'localhost',57638) bytes
|
||||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_66_3_3']::text[],'localhost',57637) bytes
|
||||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_66_4_3']::text[],'localhost',57638) bytes
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_65_1_0,repartition_65_2_0,repartition_65_3_0,repartition_65_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_66_1_0,repartition_66_2_0,repartition_66_3_0,repartition_66_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_65_1_1,repartition_65_2_1,repartition_65_3_1,repartition_65_4_1}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_66_1_1,repartition_66_2_1,repartition_66_3_1,repartition_66_4_1}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_65_1_2,repartition_65_2_2,repartition_65_3_2,repartition_65_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_66_1_2,repartition_66_2_2,repartition_66_3_2,repartition_66_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_65_1_3,repartition_65_2_3,repartition_65_3_3,repartition_65_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_66_1_3,repartition_66_2_3,repartition_66_3_3,repartition_66_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_65_1_0,repartition_65_2_0,repartition_65_3_0,repartition_65_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_66_1_0,repartition_66_2_0,repartition_66_3_0,repartition_66_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_65_1_1,repartition_65_2_1,repartition_65_3_1,repartition_65_4_1}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_66_1_1,repartition_66_2_1,repartition_66_3_1,repartition_66_4_1}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_65_1_2,repartition_65_2_2,repartition_65_3_2,repartition_65_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_66_1_2,repartition_66_2_2,repartition_66_3_2,repartition_66_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_65_1_3,repartition_65_2_3,repartition_65_3_3,repartition_65_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_66_1_3,repartition_66_2_3,repartition_66_3_3,repartition_66_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
count
|
||||
---------------------------------------------------------------------
|
||||
2
|
||||
|
|
|
@ -425,8 +425,8 @@ SELECT * FROM abcd first join abcd second on first.b = second.b ORDER BY 1,2,3,4
|
|||
|
||||
BEGIN;
|
||||
SELECT * FROM abcd first join abcd second on first.b = second.b ORDER BY 1,2,3,4;
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution.abcd_1470025 first JOIN local_shard_execution.abcd_1470025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution.abcd_1470027 first JOIN local_shard_execution.abcd_1470027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution.abcd_1470025 first JOIN local_shard_execution.abcd_1470025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution.abcd_1470027 first JOIN local_shard_execution.abcd_1470027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
b | c | d | b | c | d
|
||||
---------------------------------------------------------------------
|
||||
2 | 3 | 4 | 2 | 3 | 4
|
||||
|
@ -437,8 +437,8 @@ NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second
|
|||
END;
|
||||
BEGIN;
|
||||
SELECT * FROM abcd_view first join abcd_view second on first.b = second.b ORDER BY 1,2,3,4;
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution.abcd_1470025 abcd JOIN local_shard_execution.abcd_1470025 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE (abcd_1.b OPERATOR(pg_catalog.=) abcd.b)
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution.abcd_1470027 abcd JOIN local_shard_execution.abcd_1470027 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE (abcd_1.b OPERATOR(pg_catalog.=) abcd.b)
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution.abcd_1470025 abcd JOIN local_shard_execution.abcd_1470025 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution.abcd_1470027 abcd JOIN local_shard_execution.abcd_1470027 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE true
|
||||
b | c | d | b | c | d
|
||||
---------------------------------------------------------------------
|
||||
2 | 3 | 4 | 2 | 3 | 4
|
||||
|
@ -461,8 +461,8 @@ NOTICE: executing the command locally: SELECT worker_column_1 AS b, worker_colu
|
|||
END;
|
||||
BEGIN;
|
||||
SELECT * FROM abcd first join abcd second USING(b) ORDER BY 1,2,3,4;
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution.abcd_1470025 first JOIN local_shard_execution.abcd_1470025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution.abcd_1470027 first JOIN local_shard_execution.abcd_1470027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution.abcd_1470025 first JOIN local_shard_execution.abcd_1470025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution.abcd_1470027 first JOIN local_shard_execution.abcd_1470027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
b | c | d | c | d
|
||||
---------------------------------------------------------------------
|
||||
2 | 3 | 4 | 3 | 4
|
||||
|
@ -473,8 +473,8 @@ NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second
|
|||
END;
|
||||
BEGIN;
|
||||
SELECT * FROM abcd first join abcd second USING(b) join abcd third on first.b=third.b ORDER BY 1,2,3,4;
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution.abcd_1470025 first JOIN local_shard_execution.abcd_1470025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution.abcd_1470025 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE ((second.b OPERATOR(pg_catalog.=) third.b) AND (second.b OPERATOR(pg_catalog.=) first.b))
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution.abcd_1470027 first JOIN local_shard_execution.abcd_1470027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution.abcd_1470027 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE ((second.b OPERATOR(pg_catalog.=) third.b) AND (second.b OPERATOR(pg_catalog.=) first.b))
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution.abcd_1470025 first JOIN local_shard_execution.abcd_1470025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution.abcd_1470025 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution.abcd_1470027 first JOIN local_shard_execution.abcd_1470027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution.abcd_1470027 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE true
|
||||
b | c | d | c | d | b | c | d
|
||||
---------------------------------------------------------------------
|
||||
2 | 3 | 4 | 3 | 4 | 2 | 3 | 4
|
||||
|
@ -788,10 +788,10 @@ NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_res
|
|||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_66_2_3']::text[],'localhost',57638) bytes
|
||||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_66_3_3']::text[],'localhost',57637) bytes
|
||||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_66_4_3']::text[],'localhost',57638) bytes
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_65_1_0,repartition_65_2_0,repartition_65_3_0,repartition_65_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_66_1_0,repartition_66_2_0,repartition_66_3_0,repartition_66_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_65_1_1,repartition_65_2_1,repartition_65_3_1,repartition_65_4_1}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_66_1_1,repartition_66_2_1,repartition_66_3_1,repartition_66_4_1}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_65_1_2,repartition_65_2_2,repartition_65_3_2,repartition_65_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_66_1_2,repartition_66_2_2,repartition_66_3_2,repartition_66_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_65_1_3,repartition_65_2_3,repartition_65_3_3,repartition_65_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_66_1_3,repartition_66_2_3,repartition_66_3_3,repartition_66_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_65_1_0,repartition_65_2_0,repartition_65_3_0,repartition_65_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_66_1_0,repartition_66_2_0,repartition_66_3_0,repartition_66_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_65_1_1,repartition_65_2_1,repartition_65_3_1,repartition_65_4_1}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_66_1_1,repartition_66_2_1,repartition_66_3_1,repartition_66_4_1}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_65_1_2,repartition_65_2_2,repartition_65_3_2,repartition_65_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_66_1_2,repartition_66_2_2,repartition_66_3_2,repartition_66_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_65_1_3,repartition_65_2_3,repartition_65_3_3,repartition_65_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_66_1_3,repartition_66_2_3,repartition_66_3_3,repartition_66_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
count
|
||||
---------------------------------------------------------------------
|
||||
2
|
||||
|
|
|
@ -361,10 +361,10 @@ SELECT * FROM abcd first join abcd second on first.b = second.b ORDER BY 1,2,3,4
|
|||
|
||||
BEGIN;
|
||||
SELECT * FROM abcd first join abcd second on first.b = second.b ORDER BY 1,2,3,4;
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500025 first JOIN local_shard_execution_replicated.abcd_1500025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500026 first JOIN local_shard_execution_replicated.abcd_1500026 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500027 first JOIN local_shard_execution_replicated.abcd_1500027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500028 first JOIN local_shard_execution_replicated.abcd_1500028 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500025 first JOIN local_shard_execution_replicated.abcd_1500025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500026 first JOIN local_shard_execution_replicated.abcd_1500026 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500027 first JOIN local_shard_execution_replicated.abcd_1500027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500028 first JOIN local_shard_execution_replicated.abcd_1500028 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
b | c | d | b | c | d
|
||||
---------------------------------------------------------------------
|
||||
2 | 3 | 4 | 2 | 3 | 4
|
||||
|
@ -375,10 +375,10 @@ NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second
|
|||
END;
|
||||
BEGIN;
|
||||
SELECT * FROM abcd_view first join abcd_view second on first.b = second.b ORDER BY 1,2,3,4;
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution_replicated.abcd_1500025 abcd JOIN local_shard_execution_replicated.abcd_1500025 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE (abcd_1.b OPERATOR(pg_catalog.=) abcd.b)
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution_replicated.abcd_1500026 abcd JOIN local_shard_execution_replicated.abcd_1500026 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE (abcd_1.b OPERATOR(pg_catalog.=) abcd.b)
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution_replicated.abcd_1500027 abcd JOIN local_shard_execution_replicated.abcd_1500027 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE (abcd_1.b OPERATOR(pg_catalog.=) abcd.b)
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution_replicated.abcd_1500028 abcd JOIN local_shard_execution_replicated.abcd_1500028 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE (abcd_1.b OPERATOR(pg_catalog.=) abcd.b)
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution_replicated.abcd_1500025 abcd JOIN local_shard_execution_replicated.abcd_1500025 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution_replicated.abcd_1500026 abcd JOIN local_shard_execution_replicated.abcd_1500026 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution_replicated.abcd_1500027 abcd JOIN local_shard_execution_replicated.abcd_1500027 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution_replicated.abcd_1500028 abcd JOIN local_shard_execution_replicated.abcd_1500028 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE true
|
||||
b | c | d | b | c | d
|
||||
---------------------------------------------------------------------
|
||||
2 | 3 | 4 | 2 | 3 | 4
|
||||
|
@ -403,10 +403,10 @@ NOTICE: executing the command locally: SELECT worker_column_1 AS b, worker_colu
|
|||
END;
|
||||
BEGIN;
|
||||
SELECT * FROM abcd first join abcd second USING(b) ORDER BY 1,2,3,4;
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500025 first JOIN local_shard_execution_replicated.abcd_1500025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500026 first JOIN local_shard_execution_replicated.abcd_1500026 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500027 first JOIN local_shard_execution_replicated.abcd_1500027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500028 first JOIN local_shard_execution_replicated.abcd_1500028 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500025 first JOIN local_shard_execution_replicated.abcd_1500025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500026 first JOIN local_shard_execution_replicated.abcd_1500026 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500027 first JOIN local_shard_execution_replicated.abcd_1500027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500028 first JOIN local_shard_execution_replicated.abcd_1500028 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
b | c | d | c | d
|
||||
---------------------------------------------------------------------
|
||||
2 | 3 | 4 | 3 | 4
|
||||
|
@ -417,10 +417,10 @@ NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second
|
|||
END;
|
||||
BEGIN;
|
||||
SELECT * FROM abcd first join abcd second USING(b) join abcd third on first.b=third.b ORDER BY 1,2,3,4;
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution_replicated.abcd_1500025 first JOIN local_shard_execution_replicated.abcd_1500025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution_replicated.abcd_1500025 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE ((second.b OPERATOR(pg_catalog.=) third.b) AND (second.b OPERATOR(pg_catalog.=) first.b))
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution_replicated.abcd_1500026 first JOIN local_shard_execution_replicated.abcd_1500026 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution_replicated.abcd_1500026 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE ((second.b OPERATOR(pg_catalog.=) third.b) AND (second.b OPERATOR(pg_catalog.=) first.b))
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution_replicated.abcd_1500027 first JOIN local_shard_execution_replicated.abcd_1500027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution_replicated.abcd_1500027 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE ((second.b OPERATOR(pg_catalog.=) third.b) AND (second.b OPERATOR(pg_catalog.=) first.b))
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution_replicated.abcd_1500028 first JOIN local_shard_execution_replicated.abcd_1500028 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution_replicated.abcd_1500028 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE ((second.b OPERATOR(pg_catalog.=) third.b) AND (second.b OPERATOR(pg_catalog.=) first.b))
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution_replicated.abcd_1500025 first JOIN local_shard_execution_replicated.abcd_1500025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution_replicated.abcd_1500025 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution_replicated.abcd_1500026 first JOIN local_shard_execution_replicated.abcd_1500026 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution_replicated.abcd_1500026 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution_replicated.abcd_1500027 first JOIN local_shard_execution_replicated.abcd_1500027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution_replicated.abcd_1500027 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution_replicated.abcd_1500028 first JOIN local_shard_execution_replicated.abcd_1500028 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution_replicated.abcd_1500028 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE true
|
||||
b | c | d | c | d | b | c | d
|
||||
---------------------------------------------------------------------
|
||||
2 | 3 | 4 | 3 | 4 | 2 | 3 | 4
|
||||
|
@ -748,10 +748,10 @@ NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_res
|
|||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_65_2_3']::text[],'localhost',57638) bytes
|
||||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_65_3_3']::text[],'localhost',57637) bytes
|
||||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_65_4_3']::text[],'localhost',57638) bytes
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_64_1_0,repartition_64_2_0,repartition_64_3_0,repartition_64_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_65_1_0,repartition_65_2_0,repartition_65_3_0,repartition_65_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_64_1_1,repartition_64_2_1,repartition_64_3_1,repartition_64_4_1}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_65_1_1,repartition_65_2_1,repartition_65_3_1,repartition_65_4_1}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_64_1_2,repartition_64_2_2,repartition_64_3_2,repartition_64_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_65_1_2,repartition_65_2_2,repartition_65_3_2,repartition_65_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_64_1_3,repartition_64_2_3,repartition_64_3_3,repartition_64_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_65_1_3,repartition_65_2_3,repartition_65_3_3,repartition_65_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_64_1_0,repartition_64_2_0,repartition_64_3_0,repartition_64_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_65_1_0,repartition_65_2_0,repartition_65_3_0,repartition_65_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_64_1_1,repartition_64_2_1,repartition_64_3_1,repartition_64_4_1}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_65_1_1,repartition_65_2_1,repartition_65_3_1,repartition_65_4_1}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_64_1_2,repartition_64_2_2,repartition_64_3_2,repartition_64_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_65_1_2,repartition_65_2_2,repartition_65_3_2,repartition_65_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_64_1_3,repartition_64_2_3,repartition_64_3_3,repartition_64_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_65_1_3,repartition_65_2_3,repartition_65_3_3,repartition_65_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
count
|
||||
---------------------------------------------------------------------
|
||||
2
|
||||
|
|
|
@ -361,10 +361,10 @@ SELECT * FROM abcd first join abcd second on first.b = second.b ORDER BY 1,2,3,4
|
|||
|
||||
BEGIN;
|
||||
SELECT * FROM abcd first join abcd second on first.b = second.b ORDER BY 1,2,3,4;
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500025 first JOIN local_shard_execution_replicated.abcd_1500025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500026 first JOIN local_shard_execution_replicated.abcd_1500026 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500027 first JOIN local_shard_execution_replicated.abcd_1500027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500028 first JOIN local_shard_execution_replicated.abcd_1500028 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500025 first JOIN local_shard_execution_replicated.abcd_1500025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500026 first JOIN local_shard_execution_replicated.abcd_1500026 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500027 first JOIN local_shard_execution_replicated.abcd_1500027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.b, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500028 first JOIN local_shard_execution_replicated.abcd_1500028 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
b | c | d | b | c | d
|
||||
---------------------------------------------------------------------
|
||||
2 | 3 | 4 | 2 | 3 | 4
|
||||
|
@ -375,10 +375,10 @@ NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second
|
|||
END;
|
||||
BEGIN;
|
||||
SELECT * FROM abcd_view first join abcd_view second on first.b = second.b ORDER BY 1,2,3,4;
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution_replicated.abcd_1500025 abcd JOIN local_shard_execution_replicated.abcd_1500025 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE (abcd_1.b OPERATOR(pg_catalog.=) abcd.b)
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution_replicated.abcd_1500026 abcd JOIN local_shard_execution_replicated.abcd_1500026 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE (abcd_1.b OPERATOR(pg_catalog.=) abcd.b)
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution_replicated.abcd_1500027 abcd JOIN local_shard_execution_replicated.abcd_1500027 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE (abcd_1.b OPERATOR(pg_catalog.=) abcd.b)
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution_replicated.abcd_1500028 abcd JOIN local_shard_execution_replicated.abcd_1500028 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE (abcd_1.b OPERATOR(pg_catalog.=) abcd.b)
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution_replicated.abcd_1500025 abcd JOIN local_shard_execution_replicated.abcd_1500025 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution_replicated.abcd_1500026 abcd JOIN local_shard_execution_replicated.abcd_1500026 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution_replicated.abcd_1500027 abcd JOIN local_shard_execution_replicated.abcd_1500027 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT abcd.b, abcd.c, abcd.d, abcd_1.b, abcd_1.c, abcd_1.d FROM (local_shard_execution_replicated.abcd_1500028 abcd JOIN local_shard_execution_replicated.abcd_1500028 abcd_1 ON ((abcd.b OPERATOR(pg_catalog.=) abcd_1.b))) WHERE true
|
||||
b | c | d | b | c | d
|
||||
---------------------------------------------------------------------
|
||||
2 | 3 | 4 | 2 | 3 | 4
|
||||
|
@ -403,10 +403,10 @@ NOTICE: executing the command locally: SELECT worker_column_1 AS b, worker_colu
|
|||
END;
|
||||
BEGIN;
|
||||
SELECT * FROM abcd first join abcd second USING(b) ORDER BY 1,2,3,4;
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500025 first JOIN local_shard_execution_replicated.abcd_1500025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500026 first JOIN local_shard_execution_replicated.abcd_1500026 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500027 first JOIN local_shard_execution_replicated.abcd_1500027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500028 first JOIN local_shard_execution_replicated.abcd_1500028 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE (second.b OPERATOR(pg_catalog.=) first.b)
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500025 first JOIN local_shard_execution_replicated.abcd_1500025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500026 first JOIN local_shard_execution_replicated.abcd_1500026 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500027 first JOIN local_shard_execution_replicated.abcd_1500027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d FROM (local_shard_execution_replicated.abcd_1500028 first JOIN local_shard_execution_replicated.abcd_1500028 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) WHERE true
|
||||
b | c | d | c | d
|
||||
---------------------------------------------------------------------
|
||||
2 | 3 | 4 | 3 | 4
|
||||
|
@ -417,10 +417,10 @@ NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second
|
|||
END;
|
||||
BEGIN;
|
||||
SELECT * FROM abcd first join abcd second USING(b) join abcd third on first.b=third.b ORDER BY 1,2,3,4;
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution_replicated.abcd_1500025 first JOIN local_shard_execution_replicated.abcd_1500025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution_replicated.abcd_1500025 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE ((second.b OPERATOR(pg_catalog.=) third.b) AND (second.b OPERATOR(pg_catalog.=) first.b))
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution_replicated.abcd_1500026 first JOIN local_shard_execution_replicated.abcd_1500026 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution_replicated.abcd_1500026 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE ((second.b OPERATOR(pg_catalog.=) third.b) AND (second.b OPERATOR(pg_catalog.=) first.b))
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution_replicated.abcd_1500027 first JOIN local_shard_execution_replicated.abcd_1500027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution_replicated.abcd_1500027 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE ((second.b OPERATOR(pg_catalog.=) third.b) AND (second.b OPERATOR(pg_catalog.=) first.b))
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution_replicated.abcd_1500028 first JOIN local_shard_execution_replicated.abcd_1500028 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution_replicated.abcd_1500028 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE ((second.b OPERATOR(pg_catalog.=) third.b) AND (second.b OPERATOR(pg_catalog.=) first.b))
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution_replicated.abcd_1500025 first JOIN local_shard_execution_replicated.abcd_1500025 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution_replicated.abcd_1500025 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution_replicated.abcd_1500026 first JOIN local_shard_execution_replicated.abcd_1500026 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution_replicated.abcd_1500026 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution_replicated.abcd_1500027 first JOIN local_shard_execution_replicated.abcd_1500027 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution_replicated.abcd_1500027 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT first.b, first.c, first.d, second.c, second.d, third.b, third.c, third.d FROM ((local_shard_execution_replicated.abcd_1500028 first JOIN local_shard_execution_replicated.abcd_1500028 second ON ((first.b OPERATOR(pg_catalog.=) second.b))) JOIN local_shard_execution_replicated.abcd_1500028 third ON ((first.b OPERATOR(pg_catalog.=) third.b))) WHERE true
|
||||
b | c | d | c | d | b | c | d
|
||||
---------------------------------------------------------------------
|
||||
2 | 3 | 4 | 3 | 4 | 2 | 3 | 4
|
||||
|
@ -748,10 +748,10 @@ NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_res
|
|||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_65_2_3']::text[],'localhost',57638) bytes
|
||||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_65_3_3']::text[],'localhost',57637) bytes
|
||||
NOTICE: executing the command locally: SELECT bytes FROM fetch_intermediate_results(ARRAY['repartition_65_4_3']::text[],'localhost',57638) bytes
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_64_1_0,repartition_64_2_0,repartition_64_3_0,repartition_64_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_65_1_0,repartition_65_2_0,repartition_65_3_0,repartition_65_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_64_1_1,repartition_64_2_1,repartition_64_3_1,repartition_64_4_1}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_65_1_1,repartition_65_2_1,repartition_65_3_1,repartition_65_4_1}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_64_1_2,repartition_64_2_2,repartition_64_3_2,repartition_64_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_65_1_2,repartition_65_2_2,repartition_65_3_2,repartition_65_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_64_1_3,repartition_64_2_3,repartition_64_3_3,repartition_64_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_65_1_3,repartition_65_2_3,repartition_65_3_3,repartition_65_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE (intermediate_result_1.column1 OPERATOR(pg_catalog.=) intermediate_result.column1)
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_64_1_0,repartition_64_2_0,repartition_64_3_0,repartition_64_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_65_1_0,repartition_65_2_0,repartition_65_3_0,repartition_65_4_0}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_64_1_1,repartition_64_2_1,repartition_64_3_1,repartition_64_4_1}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_65_1_1,repartition_65_2_1,repartition_65_3_1,repartition_65_4_1}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_64_1_2,repartition_64_2_2,repartition_64_3_2,repartition_64_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_65_1_2,repartition_65_2_2,repartition_65_3_2,repartition_65_4_2}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
NOTICE: executing the command locally: SELECT count(*) AS count FROM (read_intermediate_results('{repartition_64_1_3,repartition_64_2_3,repartition_64_3_3,repartition_64_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result(column1 bigint) JOIN read_intermediate_results('{repartition_65_1_3,repartition_65_2_3,repartition_65_3_3,repartition_65_4_3}'::text[], 'binary'::citus_copy_format) intermediate_result_1(column1 bigint) ON ((intermediate_result.column1 OPERATOR(pg_catalog.=) intermediate_result_1.column1))) WHERE true
|
||||
count
|
||||
---------------------------------------------------------------------
|
||||
2
|
||||
|
|
|
@ -225,51 +225,15 @@ WHERE
|
|||
DEBUG: Router planner cannot handle multi-shard select queries
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: dual partition column types do not match
|
||||
DEBUG: dual partition column types do not match
|
||||
DEBUG: dual partition column types do not match
|
||||
DEBUG: dual partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: dual partition column types do not match
|
||||
DEBUG: dual partition column types do not match
|
||||
DEBUG: dual partition column types do not match
|
||||
DEBUG: dual partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: dual partition column types do not match
|
||||
DEBUG: dual partition column types do not match
|
||||
DEBUG: dual partition column types do not match
|
||||
DEBUG: dual partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: single partition column types do not match
|
||||
DEBUG: dual partition column types do not match
|
||||
DEBUG: dual partition column types do not match
|
||||
DEBUG: dual partition column types do not match
|
||||
DEBUG: dual partition column types do not match
|
||||
LOG: join order: [ "single_hash_repartition_first" ][ local partition join(INNER) "single_hash_repartition_first" ][ cartesian product(INNER) "single_hash_repartition_second" ]
|
||||
ERROR: cannot perform distributed planning on this query
|
||||
|
|
Loading…
Reference in New Issue