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);
 }

Reply via email to