Skip to content

Commit

Permalink
X
Browse files Browse the repository at this point in the history
  • Loading branch information
andyfengHKU committed Dec 6, 2022
1 parent 353d393 commit 3a6215b
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 37 deletions.
23 changes: 8 additions & 15 deletions src/include/planner/join_order_enumerator.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,25 +73,16 @@ class JoinOrderEnumerator {

void planRelScan(uint32_t relPos);

bool needExtendToNewGroup(
RelExpression& rel, NodeExpression& boundNode, RelDirection direction);
void planExtendFiltersAndPropertyScans(shared_ptr<RelExpression> rel, RelDirection direction,
expression_vector& predicates, LogicalPlan& plan);
// inline void planRelExtendFiltersAndProperties(shared_ptr<RelExpression> rel,
// shared_ptr<NodeExpression> boundNode, RelDirection direction, expression_vector&
// predicates, LogicalPlan& plan) { auto extendToNewGroup = needExtendToNewGroup();
// appendExtend(rel, direction, plan);
// planFiltersForRel(predicates, *rel, direction, plan);
// planPropertyScansForRel(*rel, direction, plan);
// }
// Filter push down for rel table.
void planFiltersForRel(const expression_vector& predicates, shared_ptr<NodeExpression> boundNode,
shared_ptr<NodeExpression> nbrNode, shared_ptr<RelExpression> rel, RelDirection direction,
LogicalPlan& plan);
void planFiltersForRel(const expression_vector& predicates,
shared_ptr<NodeExpression> boundNode, shared_ptr<NodeExpression> nbrNode,
shared_ptr<RelExpression> rel, RelDirection direction, LogicalPlan& plan);
// Property push down for rel table.
void planPropertyScansForRel(const expression_vector& properties, shared_ptr<NodeExpression> boundNode,
shared_ptr<NodeExpression> nbrNode, shared_ptr<RelExpression> rel, RelDirection direction,
LogicalPlan& plan);
void planPropertyScansForRel(const expression_vector& properties,
shared_ptr<NodeExpression> boundNode, shared_ptr<NodeExpression> nbrNode,
shared_ptr<RelExpression> rel, RelDirection direction, LogicalPlan& plan);

void planLevel(uint32_t level);

Expand All @@ -118,6 +109,8 @@ class JoinOrderEnumerator {
shared_ptr<Expression> indexExpression, LogicalPlan& plan);

bool needFlatInput(RelExpression& rel, NodeExpression& boundNode, RelDirection direction);
bool needExtendToNewGroup(
RelExpression& rel, NodeExpression& boundNode, RelDirection direction);
void appendExtend(shared_ptr<NodeExpression> boundNode, shared_ptr<NodeExpression> nbrNode,
shared_ptr<RelExpression> rel, RelDirection direction, const expression_vector& properties,
LogicalPlan& plan);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,6 @@ class LogicalExtend : public LogicalOperator {
bool extendToNewGroup;
};

/**
* LogicalGenericExtend stands for
*/
class LogicalGenericExtend : public LogicalExtend {
public:
LogicalGenericExtend(shared_ptr<NodeExpression> boundNode, shared_ptr<NodeExpression> nbrNode,
Expand All @@ -72,7 +69,7 @@ class LogicalGenericExtend : public LogicalExtend {
return LogicalOperatorType::LOGICAL_GENERIC_EXTEND;
}

inline void computeSchema(Schema &schema) override {
inline void computeSchema(Schema& schema) override {
LogicalExtend::computeSchema(schema);
auto nbrNodePos = schema.getGroupPos(nbrNode->getInternalIDPropertyName());
for (auto& property : properties) {
Expand Down
1 change: 0 additions & 1 deletion src/include/planner/query_planner.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,6 @@ class QueryPlanner {
private:
const Catalog& catalog;
expression_vector propertiesToScan;

JoinOrderEnumerator joinOrderEnumerator;
ProjectionPlanner projectionPlanner;
UpdatePlanner updatePlanner;
Expand Down
9 changes: 4 additions & 5 deletions src/include/processor/operator/generic_extend.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,12 @@ struct ColumnAndListCollection {
class GenericExtend : public PhysicalOperator {
public:
GenericExtend(const DataPos& inVectorPos, const DataPos& outNodeVectorPos,
ColumnAndListCollection adjColumnAndListCollection,
vector<DataPos> outPropertyVectorsPos,
ColumnAndListCollection adjColumnAndListCollection, vector<DataPos> outPropertyVectorsPos,
vector<ColumnAndListCollection> propertyColumnAndListCollections,
unique_ptr<PhysicalOperator> child, uint32_t id, const string& paramsString)
: PhysicalOperator{std::move(child), id, paramsString}, inVectorPos{inVectorPos},
outNodeVectorPos{outNodeVectorPos}, adjColumnAndListCollection{std::move(
adjColumnAndListCollection)},
adjColumnAndListCollection)},
outPropertyVectorsPos{std::move(outPropertyVectorsPos)},
propertyColumnAndListCollections{std::move(propertyColumnAndListCollections)} {}
~GenericExtend() override = default;
Expand All @@ -37,8 +36,8 @@ class GenericExtend : public PhysicalOperator {

unique_ptr<PhysicalOperator> clone() override {
return make_unique<GenericExtend>(inVectorPos, outNodeVectorPos, adjColumnAndListCollection,
outPropertyVectorsPos, propertyColumnAndListCollections, children[0]->clone(),
id, paramsString);
outPropertyVectorsPos, propertyColumnAndListCollections, children[0]->clone(), id,
paramsString);
}

private:
Expand Down
24 changes: 12 additions & 12 deletions src/planner/join_order_enumerator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -258,18 +258,6 @@ void JoinOrderEnumerator::planRelScan(uint32_t relPos) {
}
}

bool JoinOrderEnumerator::needExtendToNewGroup(
RelExpression& rel, NodeExpression& boundNode, RelDirection direction) {
auto extendToNewGroup = false;
extendToNewGroup |= rel.getNumTableIDs() > 1;
if (rel.getNumTableIDs() == 1) {
auto relTableID = *rel.getTableIDs().begin();
extendToNewGroup |=
!catalog.getReadOnlyVersion()->isSingleMultiplicityInDirection(relTableID, direction);
}
return extendToNewGroup;
}

void JoinOrderEnumerator::planExtendFiltersAndPropertyScans(shared_ptr<RelExpression> rel,
RelDirection direction, expression_vector& predicates, LogicalPlan& plan) {
auto [boundNode, dstNode] = getBoundAndNbrNodes(*rel, direction);
Expand Down Expand Up @@ -578,6 +566,18 @@ void JoinOrderEnumerator::appendIndexScanNode(
plan.setLastOperator(std::move(scan));
}

bool JoinOrderEnumerator::needExtendToNewGroup(
RelExpression& rel, NodeExpression& boundNode, RelDirection direction) {
auto extendToNewGroup = false;
extendToNewGroup |= rel.getNumTableIDs() > 1;
if (rel.getNumTableIDs() == 1) {
auto relTableID = *rel.getTableIDs().begin();
extendToNewGroup |=
!catalog.getReadOnlyVersion()->isSingleMultiplicityInDirection(relTableID, direction);
}
return extendToNewGroup;
}

bool JoinOrderEnumerator::needFlatInput(
RelExpression& rel, NodeExpression& boundNode, RelDirection direction) {
auto needFlatInput = needExtendToNewGroup(rel, boundNode, direction);
Expand Down

0 comments on commit 3a6215b

Please sign in to comment.