diff --git a/src/main/java/org/qed/Generated/RRuleInstances-unprovable/PruneLeftEmptyJoin.java b/src/main/java/org/qed/Generated/RRuleInstances-unprovable/PruneLeftEmptyJoin.java new file mode 100644 index 0000000..fbe5979 --- /dev/null +++ b/src/main/java/org/qed/Generated/RRuleInstances-unprovable/PruneLeftEmptyJoin.java @@ -0,0 +1,21 @@ +package org.qed.Generated.RRuleInstances; + +import org.apache.calcite.rel.core.JoinRelType; +import org.qed.RRule; +import org.qed.RelRN; +import org.qed.RexRN; + +public record PruneLeftEmptyJoin() implements RRule { + static final RelRN left = RelRN.scan("Left", "Left_Type"); + static final RelRN right = RelRN.scan("Right", "Right_Type"); + + @Override + public RelRN before() { + return left.empty().join(JoinRelType.RIGHT, "pred", right); + } + + @Override + public RelRN after() { + return right; + } +} diff --git a/src/main/java/org/qed/Generated/RRuleInstances-unprovable/PruneRightEmptyJoin.java b/src/main/java/org/qed/Generated/RRuleInstances-unprovable/PruneRightEmptyJoin.java new file mode 100644 index 0000000..4b4b5c0 --- /dev/null +++ b/src/main/java/org/qed/Generated/RRuleInstances-unprovable/PruneRightEmptyJoin.java @@ -0,0 +1,22 @@ +package org.qed.Generated.RRuleInstances; + +import org.apache.calcite.rel.core.JoinRelType; +import org.qed.RRule; +import org.qed.RelRN; +import org.qed.RexRN; + +public record PruneRightEmptyJoin() implements RRule { + static final RelRN left = RelRN.scan("Left", "Left_Type"); + static final RelRN right = RelRN.scan("Right", "Right_Type"); + static final RexRN joinCond = left.joinPred("join", right.empty()); + + @Override + public RelRN before() { + return left.join(JoinRelType.LEFT, "pred", right.empty()); + } + + @Override + public RelRN after() { + return left; + } +} diff --git a/src/main/java/org/qed/Generated/RRuleInstances/PruneEmptyFilter.java b/src/main/java/org/qed/Generated/RRuleInstances/PruneEmptyFilter.java new file mode 100644 index 0000000..a0c5eaf --- /dev/null +++ b/src/main/java/org/qed/Generated/RRuleInstances/PruneEmptyFilter.java @@ -0,0 +1,20 @@ +package org.qed.Generated.RRuleInstances; + +import org.qed.RRule; +import org.qed.RelRN; +import org.qed.RexRN; + +public record PruneEmptyFilter() implements RRule { + static final RelRN source = RelRN.scan("Source", "Source_Type"); + static final RexRN cond = source.pred("filter_cond"); + + @Override + public RelRN before() { + return source.empty().filter(cond); + } + + @Override + public RelRN after() { + return source.empty(); + } +} diff --git a/src/main/java/org/qed/Generated/RRuleInstances/PruneEmptyIntersect.java b/src/main/java/org/qed/Generated/RRuleInstances/PruneEmptyIntersect.java new file mode 100644 index 0000000..fb4938f --- /dev/null +++ b/src/main/java/org/qed/Generated/RRuleInstances/PruneEmptyIntersect.java @@ -0,0 +1,20 @@ +package org.qed.Generated.RRuleInstances; + +import org.qed.RRule; +import org.qed.RelRN; +import org.qed.RexRN; + +public record PruneEmptyIntersect() implements RRule { + static final RelRN a = RelRN.scan("A", "Common_Type"); + static final RelRN b = RelRN.scan("B", "Common_Type"); + + @Override + public RelRN before() { + return a.intersect(false, b.empty()); + } + + @Override + public RelRN after() { + return a.empty().intersect(false, b.empty()); + } +} diff --git a/src/main/java/org/qed/Generated/RRuleInstances/PruneEmptyProject.java b/src/main/java/org/qed/Generated/RRuleInstances/PruneEmptyProject.java new file mode 100644 index 0000000..0aac108 --- /dev/null +++ b/src/main/java/org/qed/Generated/RRuleInstances/PruneEmptyProject.java @@ -0,0 +1,20 @@ +package org.qed.Generated.RRuleInstances; + +import org.qed.RRule; +import org.qed.RelRN; +import org.qed.RexRN; + +public record PruneEmptyProject() implements RRule { + static final RelRN source = RelRN.scan("Source", "Source_Type"); + static final RexRN proj = source.proj("proj", "Project_Type"); + + @Override + public RelRN before() { + return source.empty().project(proj); + } + + @Override + public RelRN after() { + return source.empty(); + } +}