mirror of https://github.com/citusdata/citus.git
Pass pointer of AttributeEquivalenceClass instead of pointer of pointer
AttributeEquivalenceClass seems to be unnecessarily used with multiple pointers. Just use a single pointer for ease of read.pull/4756/head
parent
d1cd198655
commit
54ee96470e
|
@ -94,11 +94,11 @@ static List * GenerateAttributeEquivalencesForRelationRestrictions(
|
||||||
RelationRestrictionContext *restrictionContext);
|
RelationRestrictionContext *restrictionContext);
|
||||||
static AttributeEquivalenceClass * AttributeEquivalenceClassForEquivalenceClass(
|
static AttributeEquivalenceClass * AttributeEquivalenceClassForEquivalenceClass(
|
||||||
EquivalenceClass *plannerEqClass, RelationRestriction *relationRestriction);
|
EquivalenceClass *plannerEqClass, RelationRestriction *relationRestriction);
|
||||||
static void AddToAttributeEquivalenceClass(AttributeEquivalenceClass **
|
static void AddToAttributeEquivalenceClass(AttributeEquivalenceClass *
|
||||||
attributeEquivalenceClass,
|
attributeEquivalenceClass,
|
||||||
PlannerInfo *root, Var *varToBeAdded);
|
PlannerInfo *root, Var *varToBeAdded);
|
||||||
static void AddRteSubqueryToAttributeEquivalenceClass(AttributeEquivalenceClass *
|
static void AddRteSubqueryToAttributeEquivalenceClass(AttributeEquivalenceClass *
|
||||||
*attributeEquivalenceClass,
|
attributeEquivalenceClass,
|
||||||
RangeTblEntry *
|
RangeTblEntry *
|
||||||
rangeTableEntry,
|
rangeTableEntry,
|
||||||
PlannerInfo *root,
|
PlannerInfo *root,
|
||||||
|
@ -106,17 +106,17 @@ static void AddRteSubqueryToAttributeEquivalenceClass(AttributeEquivalenceClass
|
||||||
static Query * GetTargetSubquery(PlannerInfo *root, RangeTblEntry *rangeTableEntry,
|
static Query * GetTargetSubquery(PlannerInfo *root, RangeTblEntry *rangeTableEntry,
|
||||||
Var *varToBeAdded);
|
Var *varToBeAdded);
|
||||||
static void AddUnionAllSetOperationsToAttributeEquivalenceClass(
|
static void AddUnionAllSetOperationsToAttributeEquivalenceClass(
|
||||||
AttributeEquivalenceClass **
|
AttributeEquivalenceClass *
|
||||||
attributeEquivalenceClass,
|
attributeEquivalenceClass,
|
||||||
PlannerInfo *root,
|
PlannerInfo *root,
|
||||||
Var *varToBeAdded);
|
Var *varToBeAdded);
|
||||||
static void AddUnionSetOperationsToAttributeEquivalenceClass(AttributeEquivalenceClass **
|
static void AddUnionSetOperationsToAttributeEquivalenceClass(AttributeEquivalenceClass *
|
||||||
attributeEquivalenceClass,
|
attributeEquivalenceClass,
|
||||||
PlannerInfo *root,
|
PlannerInfo *root,
|
||||||
SetOperationStmt *
|
SetOperationStmt *
|
||||||
setOperation,
|
setOperation,
|
||||||
Var *varToBeAdded);
|
Var *varToBeAdded);
|
||||||
static void AddRteRelationToAttributeEquivalenceClass(AttributeEquivalenceClass **
|
static void AddRteRelationToAttributeEquivalenceClass(AttributeEquivalenceClass *
|
||||||
attrEquivalenceClass,
|
attrEquivalenceClass,
|
||||||
RangeTblEntry *rangeTableEntry,
|
RangeTblEntry *rangeTableEntry,
|
||||||
Var *varToBeAdded);
|
Var *varToBeAdded);
|
||||||
|
@ -144,7 +144,7 @@ static AttributeEquivalenceClass * GenerateEquivalenceClassForRelationRestrictio
|
||||||
RelationRestrictionContext
|
RelationRestrictionContext
|
||||||
*
|
*
|
||||||
relationRestrictionContext);
|
relationRestrictionContext);
|
||||||
static void ListConcatUniqueAttributeClassMemberLists(AttributeEquivalenceClass **
|
static void ListConcatUniqueAttributeClassMemberLists(AttributeEquivalenceClass *
|
||||||
firstClass,
|
firstClass,
|
||||||
AttributeEquivalenceClass *
|
AttributeEquivalenceClass *
|
||||||
secondClass);
|
secondClass);
|
||||||
|
@ -331,17 +331,17 @@ SafeToPushdownUnionSubquery(PlannerRestrictionContext *plannerRestrictionContext
|
||||||
* we check whether all the relations have partition keys in the
|
* we check whether all the relations have partition keys in the
|
||||||
* same position.
|
* same position.
|
||||||
*/
|
*/
|
||||||
if ((attributeEquivalence)->unionQueryPartitionKeyIndex == InvalidAttrNumber)
|
if (attributeEquivalence->unionQueryPartitionKeyIndex == InvalidAttrNumber)
|
||||||
{
|
{
|
||||||
(attributeEquivalence)->unionQueryPartitionKeyIndex = partitionKeyIndex;
|
attributeEquivalence->unionQueryPartitionKeyIndex = partitionKeyIndex;
|
||||||
}
|
}
|
||||||
else if ((attributeEquivalence)->unionQueryPartitionKeyIndex != partitionKeyIndex)
|
else if (attributeEquivalence->unionQueryPartitionKeyIndex != partitionKeyIndex)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
Assert(varToBeAdded != NULL);
|
Assert(varToBeAdded != NULL);
|
||||||
AddToAttributeEquivalenceClass(&attributeEquivalence, relationPlannerRoot,
|
AddToAttributeEquivalenceClass(attributeEquivalence, relationPlannerRoot,
|
||||||
varToBeAdded);
|
varToBeAdded);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -802,14 +802,14 @@ AttributeEquivalenceClassForEquivalenceClass(EquivalenceClass *plannerEqClass,
|
||||||
equivalenceParam, &outerNodeRoot);
|
equivalenceParam, &outerNodeRoot);
|
||||||
if (expressionVar)
|
if (expressionVar)
|
||||||
{
|
{
|
||||||
AddToAttributeEquivalenceClass(&attributeEquivalence, outerNodeRoot,
|
AddToAttributeEquivalenceClass(attributeEquivalence, outerNodeRoot,
|
||||||
expressionVar);
|
expressionVar);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (IsA(strippedEquivalenceExpr, Var))
|
else if (IsA(strippedEquivalenceExpr, Var))
|
||||||
{
|
{
|
||||||
expressionVar = (Var *) strippedEquivalenceExpr;
|
expressionVar = (Var *) strippedEquivalenceExpr;
|
||||||
AddToAttributeEquivalenceClass(&attributeEquivalence, plannerInfo,
|
AddToAttributeEquivalenceClass(attributeEquivalence, plannerInfo,
|
||||||
expressionVar);
|
expressionVar);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -992,7 +992,7 @@ GenerateCommonEquivalence(List *attributeEquivalenceList,
|
||||||
if (AttributeClassContainsAttributeClassMember(attributeEquialanceMember,
|
if (AttributeClassContainsAttributeClassMember(attributeEquialanceMember,
|
||||||
commonEquivalenceClass))
|
commonEquivalenceClass))
|
||||||
{
|
{
|
||||||
ListConcatUniqueAttributeClassMemberLists(&commonEquivalenceClass,
|
ListConcatUniqueAttributeClassMemberLists(commonEquivalenceClass,
|
||||||
currentEquivalenceClass);
|
currentEquivalenceClass);
|
||||||
|
|
||||||
addedEquivalenceIds = bms_add_member(addedEquivalenceIds,
|
addedEquivalenceIds = bms_add_member(addedEquivalenceIds,
|
||||||
|
@ -1072,7 +1072,7 @@ GenerateEquivalenceClassForRelationRestriction(
|
||||||
* firstClass.
|
* firstClass.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
ListConcatUniqueAttributeClassMemberLists(AttributeEquivalenceClass **firstClass,
|
ListConcatUniqueAttributeClassMemberLists(AttributeEquivalenceClass *firstClass,
|
||||||
AttributeEquivalenceClass *secondClass)
|
AttributeEquivalenceClass *secondClass)
|
||||||
{
|
{
|
||||||
ListCell *equivalenceClassMemberCell = NULL;
|
ListCell *equivalenceClassMemberCell = NULL;
|
||||||
|
@ -1083,12 +1083,12 @@ ListConcatUniqueAttributeClassMemberLists(AttributeEquivalenceClass **firstClass
|
||||||
AttributeEquivalenceClassMember *newEqMember =
|
AttributeEquivalenceClassMember *newEqMember =
|
||||||
(AttributeEquivalenceClassMember *) lfirst(equivalenceClassMemberCell);
|
(AttributeEquivalenceClassMember *) lfirst(equivalenceClassMemberCell);
|
||||||
|
|
||||||
if (AttributeClassContainsAttributeClassMember(newEqMember, *firstClass))
|
if (AttributeClassContainsAttributeClassMember(newEqMember, firstClass))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
(*firstClass)->equivalentAttributes = lappend((*firstClass)->equivalentAttributes,
|
firstClass->equivalentAttributes = lappend(firstClass->equivalentAttributes,
|
||||||
newEqMember);
|
newEqMember);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1164,10 +1164,10 @@ GenerateAttributeEquivalencesForJoinRestrictions(JoinRestrictionContext *
|
||||||
sizeof(AttributeEquivalenceClass));
|
sizeof(AttributeEquivalenceClass));
|
||||||
attributeEquivalence->equivalenceId = attributeEquivalenceId++;
|
attributeEquivalence->equivalenceId = attributeEquivalenceId++;
|
||||||
|
|
||||||
AddToAttributeEquivalenceClass(&attributeEquivalence,
|
AddToAttributeEquivalenceClass(attributeEquivalence,
|
||||||
joinRestriction->plannerInfo, leftVar);
|
joinRestriction->plannerInfo, leftVar);
|
||||||
|
|
||||||
AddToAttributeEquivalenceClass(&attributeEquivalence,
|
AddToAttributeEquivalenceClass(attributeEquivalence,
|
||||||
joinRestriction->plannerInfo, rightVar);
|
joinRestriction->plannerInfo, rightVar);
|
||||||
|
|
||||||
attributeEquivalenceList =
|
attributeEquivalenceList =
|
||||||
|
@ -1208,7 +1208,7 @@ GenerateAttributeEquivalencesForJoinRestrictions(JoinRestrictionContext *
|
||||||
* equivalence class
|
* equivalence class
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
AddToAttributeEquivalenceClass(AttributeEquivalenceClass **attributeEquivalenceClass,
|
AddToAttributeEquivalenceClass(AttributeEquivalenceClass *attributeEquivalenceClass,
|
||||||
PlannerInfo *root, Var *varToBeAdded)
|
PlannerInfo *root, Var *varToBeAdded)
|
||||||
{
|
{
|
||||||
/* punt if it's a whole-row var rather than a plain column reference */
|
/* punt if it's a whole-row var rather than a plain column reference */
|
||||||
|
@ -1247,7 +1247,7 @@ AddToAttributeEquivalenceClass(AttributeEquivalenceClass **attributeEquivalenceC
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
AddRteSubqueryToAttributeEquivalenceClass(AttributeEquivalenceClass
|
AddRteSubqueryToAttributeEquivalenceClass(AttributeEquivalenceClass
|
||||||
**attributeEquivalenceClass,
|
*attributeEquivalenceClass,
|
||||||
RangeTblEntry *rangeTableEntry,
|
RangeTblEntry *rangeTableEntry,
|
||||||
PlannerInfo *root,
|
PlannerInfo *root,
|
||||||
Var *varToBeAdded)
|
Var *varToBeAdded)
|
||||||
|
@ -1370,7 +1370,7 @@ GetTargetSubquery(PlannerInfo *root, RangeTblEntry *rangeTableEntry, Var *varToB
|
||||||
* var the given equivalence class.
|
* var the given equivalence class.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
AddUnionAllSetOperationsToAttributeEquivalenceClass(AttributeEquivalenceClass **
|
AddUnionAllSetOperationsToAttributeEquivalenceClass(AttributeEquivalenceClass *
|
||||||
attributeEquivalenceClass,
|
attributeEquivalenceClass,
|
||||||
PlannerInfo *root,
|
PlannerInfo *root,
|
||||||
Var *varToBeAdded)
|
Var *varToBeAdded)
|
||||||
|
@ -1427,13 +1427,13 @@ AddUnionAllSetOperationsToAttributeEquivalenceClass(AttributeEquivalenceClass **
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((*attributeEquivalenceClass)->unionQueryPartitionKeyIndex == 0)
|
if (attributeEquivalenceClass->unionQueryPartitionKeyIndex == 0)
|
||||||
{
|
{
|
||||||
/* the first partition key index we found */
|
/* the first partition key index we found */
|
||||||
(*attributeEquivalenceClass)->unionQueryPartitionKeyIndex =
|
attributeEquivalenceClass->unionQueryPartitionKeyIndex =
|
||||||
partitionKeyIndex;
|
partitionKeyIndex;
|
||||||
}
|
}
|
||||||
else if ((*attributeEquivalenceClass)->unionQueryPartitionKeyIndex !=
|
else if (attributeEquivalenceClass->unionQueryPartitionKeyIndex !=
|
||||||
partitionKeyIndex)
|
partitionKeyIndex)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -1497,7 +1497,7 @@ ParentCountPriorToAppendRel(List *appendRelList, AppendRelInfo *targetAppendRelI
|
||||||
* messages.
|
* messages.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
AddUnionSetOperationsToAttributeEquivalenceClass(AttributeEquivalenceClass **
|
AddUnionSetOperationsToAttributeEquivalenceClass(AttributeEquivalenceClass *
|
||||||
attributeEquivalenceClass,
|
attributeEquivalenceClass,
|
||||||
PlannerInfo *root,
|
PlannerInfo *root,
|
||||||
SetOperationStmt *setOperation,
|
SetOperationStmt *setOperation,
|
||||||
|
@ -1525,7 +1525,7 @@ AddUnionSetOperationsToAttributeEquivalenceClass(AttributeEquivalenceClass **
|
||||||
* the input rte to be an RTE_RELATION.
|
* the input rte to be an RTE_RELATION.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
AddRteRelationToAttributeEquivalenceClass(AttributeEquivalenceClass **
|
AddRteRelationToAttributeEquivalenceClass(AttributeEquivalenceClass *
|
||||||
attrEquivalenceClass,
|
attrEquivalenceClass,
|
||||||
RangeTblEntry *rangeTableEntry,
|
RangeTblEntry *rangeTableEntry,
|
||||||
Var *varToBeAdded)
|
Var *varToBeAdded)
|
||||||
|
@ -1562,8 +1562,8 @@ AddRteRelationToAttributeEquivalenceClass(AttributeEquivalenceClass **
|
||||||
attributeEqMember->rteIdentity = GetRTEIdentity(rangeTableEntry);
|
attributeEqMember->rteIdentity = GetRTEIdentity(rangeTableEntry);
|
||||||
attributeEqMember->relationId = rangeTableEntry->relid;
|
attributeEqMember->relationId = rangeTableEntry->relid;
|
||||||
|
|
||||||
(*attrEquivalenceClass)->equivalentAttributes =
|
attrEquivalenceClass->equivalentAttributes =
|
||||||
lappend((*attrEquivalenceClass)->equivalentAttributes,
|
lappend(attrEquivalenceClass->equivalentAttributes,
|
||||||
attributeEqMember);
|
attributeEqMember);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue