This is an automated email from the ASF dual-hosted git repository.
cgivre pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/drill.git
The following commit(s) were added to refs/heads/master by this push:
new 634ffa26ae DRILL-8192: Cassandra queries fail when enabled Mongo
plugin (#2518)
634ffa26ae is described below
commit 634ffa26ae21d138488946930570c95d858406cc
Author: Volodymyr Vysotskyi <[email protected]>
AuthorDate: Mon Apr 11 03:29:03 2022 +0300
DRILL-8192: Cassandra queries fail when enabled Mongo plugin (#2518)
---
.../drill/exec/store/iceberg/plan/IcebergPluginImplementor.java | 7 +++++++
.../drill/exec/store/mongo/plan/MongoPluginImplementor.java | 7 +++++++
.../apache/drill/exec/store/plan/AbstractPluginImplementor.java | 8 ++++++++
3 files changed, 22 insertions(+)
diff --git
a/contrib/format-iceberg/src/main/java/org/apache/drill/exec/store/iceberg/plan/IcebergPluginImplementor.java
b/contrib/format-iceberg/src/main/java/org/apache/drill/exec/store/iceberg/plan/IcebergPluginImplementor.java
index 3d85b54a79..a4863273d8 100644
---
a/contrib/format-iceberg/src/main/java/org/apache/drill/exec/store/iceberg/plan/IcebergPluginImplementor.java
+++
b/contrib/format-iceberg/src/main/java/org/apache/drill/exec/store/iceberg/plan/IcebergPluginImplementor.java
@@ -32,6 +32,8 @@ import org.apache.drill.exec.planner.common.DrillLimitRelBase;
import org.apache.drill.exec.planner.logical.DrillOptiq;
import org.apache.drill.exec.planner.logical.DrillParseContext;
import org.apache.drill.exec.planner.physical.PrelUtil;
+import org.apache.drill.exec.store.StoragePlugin;
+import org.apache.drill.exec.store.dfs.FileSystemPlugin;
import org.apache.drill.exec.store.iceberg.IcebergGroupScan;
import org.apache.drill.exec.store.plan.AbstractPluginImplementor;
import org.apache.drill.exec.store.plan.rel.PluginFilterRel;
@@ -134,6 +136,11 @@ public class IcebergPluginImplementor extends
AbstractPluginImplementor {
return true;
}
+ @Override
+ protected Class<? extends StoragePlugin> supportedPlugin() {
+ return FileSystemPlugin.class;
+ }
+
@Override
public boolean splitProject(Project project) {
return true;
diff --git
a/contrib/storage-mongo/src/main/java/org/apache/drill/exec/store/mongo/plan/MongoPluginImplementor.java
b/contrib/storage-mongo/src/main/java/org/apache/drill/exec/store/mongo/plan/MongoPluginImplementor.java
index 64c9b4e24b..b55fa6b173 100644
---
a/contrib/storage-mongo/src/main/java/org/apache/drill/exec/store/mongo/plan/MongoPluginImplementor.java
+++
b/contrib/storage-mongo/src/main/java/org/apache/drill/exec/store/mongo/plan/MongoPluginImplementor.java
@@ -40,10 +40,12 @@ import
org.apache.drill.exec.planner.common.DrillLimitRelBase;
import org.apache.drill.exec.planner.logical.DrillOptiq;
import org.apache.drill.exec.planner.logical.DrillParseContext;
import org.apache.drill.exec.planner.physical.PrelUtil;
+import org.apache.drill.exec.store.StoragePlugin;
import org.apache.drill.exec.store.mongo.MongoAggregateUtils;
import org.apache.drill.exec.store.mongo.MongoFilterBuilder;
import org.apache.drill.exec.store.mongo.MongoGroupScan;
import org.apache.drill.exec.store.mongo.MongoScanSpec;
+import org.apache.drill.exec.store.mongo.MongoStoragePlugin;
import org.apache.drill.exec.store.plan.AbstractPluginImplementor;
import org.apache.drill.exec.store.plan.PluginImplementor;
import org.apache.drill.exec.store.plan.rel.PluginAggregateRel;
@@ -282,6 +284,11 @@ public class MongoPluginImplementor extends
AbstractPluginImplementor {
return hasPluginGroupScan(scan);
}
+ @Override
+ protected Class<? extends StoragePlugin> supportedPlugin() {
+ return MongoStoragePlugin.class;
+ }
+
@Override
public GroupScan getPhysicalOperator() {
MongoScanSpec scanSpec = groupScan.getScanSpec();
diff --git
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/plan/AbstractPluginImplementor.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/plan/AbstractPluginImplementor.java
index ce3a1e4ad6..06384e5d3e 100644
---
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/plan/AbstractPluginImplementor.java
+++
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/plan/AbstractPluginImplementor.java
@@ -31,6 +31,7 @@ import org.apache.drill.exec.physical.base.GroupScan;
import org.apache.drill.exec.planner.common.DrillLimitRelBase;
import org.apache.drill.exec.planner.common.DrillRelOptUtil;
import org.apache.drill.exec.planner.logical.DrillTable;
+import org.apache.drill.exec.store.StoragePlugin;
import org.apache.drill.exec.store.plan.rel.PluginAggregateRel;
import org.apache.drill.exec.store.plan.rel.PluginFilterRel;
import org.apache.drill.exec.store.plan.rel.PluginJoinRel;
@@ -152,9 +153,16 @@ public abstract class AbstractPluginImplementor implements
PluginImplementor {
CheckedFunction<DrillTable, GroupScan, IOException> groupScanFunction =
DrillTable::getGroupScan;
return Optional.ofNullable(DrillRelOptUtil.findScan(node))
.map(DrillRelOptUtil::getDrillTable)
+ .filter(this::supportsDrillTable)
.map(groupScanFunction)
.orElse(null);
}
+ private boolean supportsDrillTable(DrillTable table) {
+ return supportedPlugin().isInstance(table.getPlugin());
+ }
+
+ protected abstract Class<? extends StoragePlugin> supportedPlugin();
+
protected abstract boolean hasPluginGroupScan(RelNode node);
}