aboutsummaryrefslogtreecommitdiff
path: root/exec/java-exec/src/main/java/org/apache/drill/exec/physical/base/SchemalessScan.java
diff options
context:
space:
mode:
authorVitalii Diravka <vitalii.diravka@gmail.com>2017-12-01 22:48:05 +0200
committerBen-Zvi <bben-zvi@mapr.com>2018-02-01 18:05:34 -0800
commitf30200812eb27c76b8d4d246008cbd9bd59fb0a5 (patch)
treebb3809b6b4cb7ae560d4a0eb2a7b3ea2c73ae386 /exec/java-exec/src/main/java/org/apache/drill/exec/physical/base/SchemalessScan.java
parent07dae3c34001f15b28f0332ddc1be23adb539b41 (diff)
DRILL-4185: UNION ALL involving empty directory on any side of union all results in Failed query
closes #1083
Diffstat (limited to 'exec/java-exec/src/main/java/org/apache/drill/exec/physical/base/SchemalessScan.java')
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/physical/base/SchemalessScan.java94
1 files changed, 94 insertions, 0 deletions
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/base/SchemalessScan.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/base/SchemalessScan.java
new file mode 100644
index 000000000..e0db1aeb6
--- /dev/null
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/base/SchemalessScan.java
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.drill.exec.physical.base;
+
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.google.common.base.Preconditions;
+import org.apache.drill.common.exceptions.ExecutionSetupException;
+import org.apache.drill.common.expression.SchemaPath;
+import org.apache.drill.exec.physical.PhysicalOperatorSetupException;
+import org.apache.drill.exec.planner.logical.DynamicDrillTable;
+import org.apache.drill.exec.proto.CoordinationProtos;
+
+import java.util.List;
+
+/**
+ * The type of scan operator, which allows to scan schemaless tables ({@link DynamicDrillTable} with null selection)
+ */
+@JsonTypeName("schemaless-scan")
+public class SchemalessScan extends AbstractFileGroupScan implements SubScan {
+
+ private final String selectionRoot;
+
+ public SchemalessScan(String userName, String selectionRoot) {
+ super(userName);
+ this.selectionRoot = selectionRoot;
+ }
+
+ public SchemalessScan(final SchemalessScan that) {
+ super(that);
+ this.selectionRoot = that.selectionRoot;
+ }
+
+ @Override
+ public void applyAssignments(List<CoordinationProtos.DrillbitEndpoint> endpoints) throws PhysicalOperatorSetupException {
+ }
+
+ @Override
+ public SubScan getSpecificScan(int minorFragmentId) throws ExecutionSetupException {
+ return this;
+ }
+
+ @Override
+ public int getMaxParallelizationWidth() {
+ return 1;
+ }
+
+ @Override
+ public String getDigest() {
+ return toString();
+ }
+
+ @Override
+ public String toString() {
+ final String pattern = "SchemalessScan [selectionRoot = %s]";
+ return String.format(pattern, selectionRoot);
+ }
+
+ @Override
+ public PhysicalOperator getNewWithChildren(List<PhysicalOperator> children) throws ExecutionSetupException {
+ Preconditions.checkArgument(children.isEmpty());
+ assert children == null || children.isEmpty();
+ return new SchemalessScan(this);
+ }
+
+ @Override
+ public GroupScan clone(List<SchemaPath> columns) {
+ return this;
+ }
+
+ @Override
+ public ScanStats getScanStats() {
+ return ScanStats.ZERO_RECORD_TABLE;
+ }
+
+ @Override
+ public boolean supportsPartitionFilterPushdown() {
+ return false;
+ }
+
+}