Update projection pushdown so that it rewrites row type of scan.
Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/cec3fa55 Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/cec3fa55 Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/cec3fa55 Branch: refs/heads/master Commit: cec3fa559bab9a1378fc17b96294373325db72c1 Parents: 69e5d68 Author: Jacques Nadeau <[email protected]> Authored: Wed Jun 4 15:43:29 2014 -0700 Committer: Jacques Nadeau <[email protected]> Committed: Wed Jun 4 16:38:42 2014 -0700 ---------------------------------------------------------------------- .../exec/store/hbase/HBaseStoragePlugin.java | 4 +- .../planner/logical/DrillPushProjIntoScan.java | 27 ++- .../drill/exec/planner/physical/PrelUtil.java | 172 +++++++++++++++++-- .../planner/physical/visitor/RelUniqifier.java | 4 +- .../exec/store/dfs/easy/EasyFormatPlugin.java | 2 + .../exec/store/dfs/easy/EasyGroupScan.java | 3 +- .../exec/store/direct/DirectGroupScan.java | 2 +- .../exec/store/easy/json/JSONFormatPlugin.java | 5 + .../exec/store/easy/text/TextFormatPlugin.java | 5 + .../apache/drill/exec/store/hive/HiveScan.java | 2 +- .../java/org/apache/drill/PlanTestBase.java | 2 +- .../exec/cache/TestCacheSerialization.java | 2 +- .../exec/physical/impl/writer/TestWriter.java | 17 +- 13 files changed, 206 insertions(+), 41 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/cec3fa55/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseStoragePlugin.java ---------------------------------------------------------------------- diff --git a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseStoragePlugin.java b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseStoragePlugin.java index 7bc7c4b..e105836 100644 --- a/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseStoragePlugin.java +++ b/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseStoragePlugin.java @@ -76,7 +76,9 @@ public class HBaseStoragePlugin extends AbstractStoragePlugin { } public Set<StoragePluginOptimizerRule> getOptimizerRules() { - return ImmutableSet.of(HBasePushFilterIntoScan.INSTANCE); + return ImmutableSet.of(); +// reenable once DRILL-904 is fixed +// return ImmutableSet.of(HBasePushFilterIntoScan.INSTANCE); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/cec3fa55/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjIntoScan.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjIntoScan.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjIntoScan.java index 0dd9b9e..829eb14 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjIntoScan.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjIntoScan.java @@ -24,12 +24,15 @@ import java.util.List; import net.hydromatic.optiq.rules.java.JavaRules.EnumerableTableAccessRel; import org.apache.drill.common.exceptions.DrillRuntimeException; -import org.apache.drill.common.expression.SchemaPath; import org.apache.drill.exec.planner.physical.PrelUtil; +import org.apache.drill.exec.planner.physical.PrelUtil.ProjectPushInfo; import org.eigenbase.rel.ProjectRel; import org.eigenbase.rel.rules.RemoveTrivialProjectRule; import org.eigenbase.relopt.RelOptRule; import org.eigenbase.relopt.RelOptRuleCall; +import org.eigenbase.rex.RexNode; + +import com.google.common.collect.Lists; public class DrillPushProjIntoScan extends RelOptRule { public static final RelOptRule INSTANCE = new DrillPushProjIntoScan(); @@ -38,31 +41,37 @@ public class DrillPushProjIntoScan extends RelOptRule { super(RelOptHelper.some(ProjectRel.class, RelOptHelper.any(EnumerableTableAccessRel.class)), "DrillPushProjIntoScan"); } + @Override public void onMatch(RelOptRuleCall call) { final ProjectRel proj = (ProjectRel) call.rel(0); final EnumerableTableAccessRel scan = (EnumerableTableAccessRel) call.rel(1); try { - List<SchemaPath> columns = PrelUtil.getColumns(scan.getRowType(), proj.getProjects()); + ProjectPushInfo columnInfo = PrelUtil.getColumns(scan.getRowType(), proj.getProjects()); - if (columns.isEmpty() || !scan.getTable().unwrap(DrillTable.class) - .getGroupScan().canPushdownProjects(columns)) { - return; - } + if(columnInfo == null || columnInfo.isStarQuery() // + || !scan.getTable().unwrap(DrillTable.class) // + .getGroupScan().canPushdownProjects(columnInfo.columns)) return; final DrillScanRel newScan = new DrillScanRel(scan.getCluster(), scan.getTraitSet().plus(DrillRel.DRILL_LOGICAL), scan.getTable(), - scan.getRowType(), - columns); + columnInfo.createNewRowType(proj.getChild().getCluster().getTypeFactory()), + columnInfo.columns); + + + List<RexNode> newProjects = Lists.newArrayList(); + for(RexNode n : proj.getChildExps()){ + newProjects.add(n.accept(columnInfo.getInputRewriter())); + } final DrillProjectRel newProj = new DrillProjectRel(proj.getCluster(), proj.getTraitSet().plus(DrillRel.DRILL_LOGICAL), newScan, - proj.getChildExps(), + newProjects, proj.getRowType()); if (RemoveTrivialProjectRule.isTrivial(newProj)) { http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/cec3fa55/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PrelUtil.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PrelUtil.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PrelUtil.java index 1de2db3..d982647 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PrelUtil.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PrelUtil.java @@ -31,8 +31,6 @@ import org.apache.drill.common.expression.PathSegment.ArraySegment; import org.apache.drill.common.expression.PathSegment.NameSegment; import org.apache.drill.common.expression.SchemaPath; import org.apache.drill.common.logical.data.Order.Ordering; -import org.apache.drill.exec.physical.base.PhysicalOperator; -import org.apache.drill.exec.physical.config.SelectionVectorRemover; import org.apache.drill.exec.planner.physical.DrillDistributionTrait.DistributionField; import org.apache.drill.exec.record.BatchSchema.SelectionVectorMode; import org.eigenbase.rel.RelCollation; @@ -43,14 +41,19 @@ import org.eigenbase.relopt.RelOptPlanner; import org.eigenbase.relopt.RelOptRuleCall; import org.eigenbase.relopt.RelTraitSet; import org.eigenbase.reltype.RelDataType; +import org.eigenbase.reltype.RelDataTypeFactory; +import org.eigenbase.reltype.RelDataTypeField; import org.eigenbase.rex.RexCall; import org.eigenbase.rex.RexInputRef; import org.eigenbase.rex.RexLiteral; +import org.eigenbase.rex.RexLocalRef; import org.eigenbase.rex.RexNode; +import org.eigenbase.rex.RexShuttle; import org.eigenbase.rex.RexVisitorImpl; -import com.google.common.collect.Lists; +import com.carrotsearch.hppc.IntIntOpenHashMap; import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; import com.google.common.collect.Sets; public class PrelUtil { @@ -109,34 +112,124 @@ public class PrelUtil { return new SelectionVectorRemoverPrel(prel); } - public static List<SchemaPath> getColumns(RelDataType rowType, List<RexNode> projects) { + public static ProjectPushInfo getColumns(RelDataType rowType, List<RexNode> projects) { final List<String> fieldNames = rowType.getFieldNames(); - if (fieldNames.isEmpty()) return ImmutableList.of(); + if (fieldNames.isEmpty()) return null; - RefFieldsVisitor v = new RefFieldsVisitor(fieldNames); + RefFieldsVisitor v = new RefFieldsVisitor(rowType); for (RexNode exp : projects) { PathSegment segment = exp.accept(v); v.addColumn(segment); } - List<SchemaPath> columns = v.getColumns(); - for (SchemaPath column : columns) { - if (column.getRootSegment().getPath().startsWith("*")) { - return ImmutableList.of(); + return v.getInfo(); + + } + + public static class DesiredField { + public final int origIndex; + public final String name; + public final RelDataTypeField field; + + public DesiredField(int origIndex, String name, RelDataTypeField field) { + super(); + this.origIndex = origIndex; + this.name = name; + this.field = field; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((field == null) ? 0 : field.hashCode()); + result = prime * result + ((name == null) ? 0 : name.hashCode()); + result = prime * result + origIndex; + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + DesiredField other = (DesiredField) obj; + if (field == null) { + if (other.field != null) + return false; + } else if (!field.equals(other.field)) + return false; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + if (origIndex != other.origIndex) + return false; + return true; + } + + } + + + public static class ProjectPushInfo { + public final List<SchemaPath> columns; + public final List<DesiredField> desiredFields; + public final InputRewriter rewriter; + private final List<String> fieldNames; + private final List<RelDataType> types; + + public ProjectPushInfo(List<SchemaPath> columns, ImmutableList<DesiredField> desiredFields) { + super(); + this.columns = columns; + this.desiredFields = desiredFields; + + this.fieldNames = Lists.newArrayListWithCapacity(desiredFields.size()); + this.types = Lists.newArrayListWithCapacity(desiredFields.size()); + IntIntOpenHashMap oldToNewIds = new IntIntOpenHashMap(); + + int i =0; + for(DesiredField f : desiredFields){ + fieldNames.add(f.name); + types.add(f.field.getType()); + oldToNewIds.put(f.origIndex, i); + i++; + } + this.rewriter = new InputRewriter(oldToNewIds); + } + + public InputRewriter getInputRewriter(){ + return rewriter; + } + + public boolean isStarQuery() { + for (SchemaPath column : columns) { + if (column.getRootSegment().getPath().startsWith("*")) { + return true; + } } + return false; } - return columns; + public RelDataType createNewRowType(RelDataTypeFactory factory) { + return factory.createStructType(types, fieldNames); + } } /** Visitor that finds the set of inputs that are used. */ private static class RefFieldsVisitor extends RexVisitorImpl<PathSegment> { final Set<SchemaPath> columns = Sets.newLinkedHashSet(); final private List<String> fieldNames; + final private List<RelDataTypeField> fields; + final private Set<DesiredField> desiredFields = Sets.newHashSet(); - public RefFieldsVisitor(List<String> fieldNames) { + public RefFieldsVisitor(RelDataType rowType) { super(true); - this.fieldNames = fieldNames; + this.fieldNames = rowType.getFieldNames(); + this.fields = rowType.getFieldList(); } public void addColumn(PathSegment segment) { @@ -145,13 +238,19 @@ public class PrelUtil { } } - public List<SchemaPath> getColumns() { - return ImmutableList.copyOf(columns); + public ProjectPushInfo getInfo(){ + return new ProjectPushInfo(ImmutableList.copyOf(columns), ImmutableList.copyOf(desiredFields)); } + @Override public PathSegment visitInputRef(RexInputRef inputRef) { - return new NameSegment(fieldNames.get(inputRef.getIndex())); + int index = inputRef.getIndex(); + String name = fieldNames.get(index); + RelDataTypeField field = fields.get(index); + DesiredField f = new DesiredField(index, name, field); + desiredFields.add(f); + return new NameSegment(name); } @Override @@ -196,4 +295,45 @@ public class PrelUtil { return set; } } + + public static class InputRefRemap { + private int oldIndex; + private int newIndex; + + public InputRefRemap(int oldIndex, int newIndex) { + super(); + this.oldIndex = oldIndex; + this.newIndex = newIndex; + } + public int getOldIndex() { + return oldIndex; + } + public int getNewIndex() { + return newIndex; + } + + + } + + + public static class InputRewriter extends RexShuttle { + + final IntIntOpenHashMap map; + + public InputRewriter(IntIntOpenHashMap map) { + super(); + this.map = map; + } + + @Override + public RexNode visitInputRef(RexInputRef inputRef) { + return new RexInputRef(map.get(inputRef.getIndex()), inputRef.getType()); + } + + @Override + public RexNode visitLocalRef(RexLocalRef localRef) { + return new RexInputRef(map.get(localRef.getIndex()), localRef.getType()); + } + + } } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/cec3fa55/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RelUniqifier.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RelUniqifier.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RelUniqifier.java index 7b84edc..c5bf293 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RelUniqifier.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RelUniqifier.java @@ -23,8 +23,8 @@ import java.util.Set; import org.apache.drill.exec.planner.physical.Prel; import org.eigenbase.rel.RelNode; -import com.google.hive12.hive12.common.collect.Sets; -import com.google.hive12.hive12.hive12.common.collect.Lists; +import com.google.common.collect.Sets; +import com.google.common.collect.Lists; public class RelUniqifier extends BasePrelVisitor<Prel, Set<Prel>, RuntimeException>{ static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(RelUniqifier.class); http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/cec3fa55/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/easy/EasyFormatPlugin.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/easy/EasyFormatPlugin.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/easy/EasyFormatPlugin.java index e702c9c..bdab07f 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/easy/EasyFormatPlugin.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/easy/EasyFormatPlugin.java @@ -97,6 +97,8 @@ public abstract class EasyFormatPlugin<T extends FormatPluginConfig> implements return name; } + public abstract boolean supportsPushDown(); + /** * Whether or not you can split the format based on blocks within file boundaries. If not, the simple format engine will * only split on file boundaries. http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/cec3fa55/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/easy/EasyGroupScan.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/easy/EasyGroupScan.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/easy/EasyGroupScan.java index 2b63601..fa219e7 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/easy/EasyGroupScan.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/easy/EasyGroupScan.java @@ -224,6 +224,7 @@ public class EasyGroupScan extends AbstractGroupScan{ @Override public GroupScan clone(List<SchemaPath> columns) { + if(!formatPlugin.supportsPushDown()) throw new IllegalStateException(String.format("%s doesn't support pushdown.", this.getClass().getSimpleName())); EasyGroupScan newScan = new EasyGroupScan(this); newScan.columns = columns; return newScan; @@ -231,7 +232,7 @@ public class EasyGroupScan extends AbstractGroupScan{ @JsonIgnore public boolean canPushdownProjects(List<SchemaPath> columns) { - return true; + return this.formatPlugin.supportsPushDown(); } } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/cec3fa55/exec/java-exec/src/main/java/org/apache/drill/exec/store/direct/DirectGroupScan.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/direct/DirectGroupScan.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/direct/DirectGroupScan.java index 138a024..bcf5984 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/direct/DirectGroupScan.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/direct/DirectGroupScan.java @@ -72,7 +72,7 @@ public class DirectGroupScan extends AbstractGroupScan{ @Override public PhysicalOperator getNewWithChildren(List<PhysicalOperator> children) throws ExecutionSetupException { assert children == null || children.isEmpty(); - return new DirectSubScan(reader); + return new DirectGroupScan(reader); } @Override http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/cec3fa55/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/json/JSONFormatPlugin.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/json/JSONFormatPlugin.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/json/JSONFormatPlugin.java index e410306..7fbb9c7 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/json/JSONFormatPlugin.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/json/JSONFormatPlugin.java @@ -93,5 +93,10 @@ public class JSONFormatPlugin extends EasyFormatPlugin<JSONFormatConfig> { throw new UnsupportedOperationException(); } + @Override + public boolean supportsPushDown() { + return false; + } + } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/cec3fa55/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/text/TextFormatPlugin.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/text/TextFormatPlugin.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/text/TextFormatPlugin.java index 15d2e37..3935008 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/text/TextFormatPlugin.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/text/TextFormatPlugin.java @@ -140,4 +140,9 @@ public class TextFormatPlugin extends EasyFormatPlugin<TextFormatPlugin.TextForm public int getWriterOperatorType() { return CoreOperatorType.TEXT_WRITER_VALUE; } + + @Override + public boolean supportsPushDown() { + return true; + } } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/cec3fa55/exec/java-exec/src/main/java/org/apache/drill/exec/store/hive/HiveScan.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/hive/HiveScan.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/hive/HiveScan.java index c6105ec..504348d 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/hive/HiveScan.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/hive/HiveScan.java @@ -268,7 +268,7 @@ public class HiveScan extends AbstractGroupScan { @Override public PhysicalOperator getNewWithChildren(List<PhysicalOperator> children) throws ExecutionSetupException { - return new HiveScan(hiveReadEntry, storagePlugin, columns); + return new HiveScan(this); } @Override http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/cec3fa55/exec/java-exec/src/test/java/org/apache/drill/PlanTestBase.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/test/java/org/apache/drill/PlanTestBase.java b/exec/java-exec/src/test/java/org/apache/drill/PlanTestBase.java index 89452a1..6331116 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/PlanTestBase.java +++ b/exec/java-exec/src/test/java/org/apache/drill/PlanTestBase.java @@ -52,7 +52,7 @@ public class PlanTestBase extends BaseTestQuery { String planStr = getPlanInString(sql, JSON_FORMAT); for (String colNames : expectedSubstrs) { - assertTrue(planStr.contains(colNames)); + assertTrue(String.format("Unable to find expected string %s in plan: %s!", colNames, planStr), planStr.contains(colNames)); } } http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/cec3fa55/exec/java-exec/src/test/java/org/apache/drill/exec/cache/TestCacheSerialization.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/cache/TestCacheSerialization.java b/exec/java-exec/src/test/java/org/apache/drill/exec/cache/TestCacheSerialization.java index 6375d66..fec3417 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/exec/cache/TestCacheSerialization.java +++ b/exec/java-exec/src/test/java/org/apache/drill/exec/cache/TestCacheSerialization.java @@ -55,7 +55,7 @@ import org.junit.BeforeClass; import org.junit.Test; import com.google.common.collect.Lists; -import com.google.hive12.common.collect.Maps; +import com.google.common.collect.Maps; public class TestCacheSerialization extends ExecTest { http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/cec3fa55/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/writer/TestWriter.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/writer/TestWriter.java b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/writer/TestWriter.java index 8d9a74d..2a6eb39 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/writer/TestWriter.java +++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/writer/TestWriter.java @@ -17,14 +17,15 @@ */ package org.apache.drill.exec.physical.impl.writer; -import com.google.common.base.Charsets; -import com.google.common.io.Files; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.List; + import org.apache.drill.BaseTestQuery; -import org.apache.drill.common.expression.SchemaPath; import org.apache.drill.common.util.FileUtils; import org.apache.drill.exec.ExecConstants; import org.apache.drill.exec.record.RecordBatchLoader; -import org.apache.drill.exec.record.TypedFieldId; import org.apache.drill.exec.rpc.user.QueryResultBatch; import org.apache.drill.exec.vector.BigIntVector; import org.apache.drill.exec.vector.VarCharVector; @@ -33,12 +34,11 @@ import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import com.google.common.base.Charsets; +import com.google.common.io.Files; public class TestWriter extends BaseTestQuery { @@ -53,6 +53,7 @@ public class TestWriter extends BaseTestQuery { fs = FileSystem.get(conf); } + @Ignore("DRILL-903") @Test public void simpleCsv() throws Exception { // before executing the test deleting the existing CSV files in /tmp/csvtest
