Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import org.apache.drill.common.exceptions.UserException;
import org.apache.drill.common.expression.PathSegment;
import org.apache.drill.common.expression.SchemaPath;
import org.apache.drill.common.types.TypeProtos;
import org.apache.drill.exec.ExecConstants;
import org.apache.drill.exec.exception.SchemaChangeException;
import org.apache.drill.exec.ops.FragmentContext;
Expand Down Expand Up @@ -205,7 +206,7 @@ public int next() {
if (reader == null) {
break; // no more documents for this scanner
} else if (isSkipQuery()) {
vectorWriter.rootAsMap().bit("count").writeBit(1);
vectorWriter.rootAsMap().bit("count", TypeProtos.DataMode.OPTIONAL).writeBit(1);
} else {
MapOrListWriterImpl writer = new MapOrListWriterImpl(vectorWriter.rootAsMap());
if (idOnly) {
Expand Down Expand Up @@ -337,15 +338,17 @@ private void writeTimeStamp(MapOrListWriterImpl writer, String fieldName, DBDocu
if (allTextMode) {
writeString(writer, fieldName, reader.getTimestamp().toUTCString());
} else {
((writer.map != null) ? writer.map.timeStamp(fieldName) : writer.list.timeStamp()).writeTimeStamp(reader.getTimestampLong());
((writer.map != null) ? writer.map.timeStamp(fieldName, TypeProtos.DataMode.OPTIONAL) :
writer.list.timeStamp()).writeTimeStamp(reader.getTimestampLong());
}
}

private void writeTime(MapOrListWriterImpl writer, String fieldName, DBDocumentReaderBase reader) {
if (allTextMode) {
writeString(writer, fieldName, reader.getTime().toTimeStr());
} else {
((writer.map != null) ? writer.map.time(fieldName) : writer.list.time()).writeTime(reader.getTimeInt());
((writer.map != null) ? writer.map.time(fieldName, TypeProtos.DataMode.OPTIONAL) :
writer.list.time()).writeTime(reader.getTimeInt());
}
}

Expand All @@ -354,73 +357,74 @@ private void writeDate(MapOrListWriterImpl writer, String fieldName, DBDocumentR
writeString(writer, fieldName, reader.getDate().toDateStr());
} else {
long milliSecondsSinceEpoch = reader.getDateInt() * MILLISECONDS_IN_A_DAY;
((writer.map != null) ? writer.map.date(fieldName) : writer.list.date()).writeDate(milliSecondsSinceEpoch);
((writer.map != null) ? writer.map.date(fieldName, TypeProtos.DataMode.OPTIONAL) :
writer.list.date()).writeDate(milliSecondsSinceEpoch);
}
}

private void writeDouble(MapOrListWriterImpl writer, String fieldName, DBDocumentReaderBase reader) {
if (allTextMode) {
writeString(writer, fieldName, String.valueOf(reader.getDouble()));
} else {
writer.float8(fieldName).writeFloat8(reader.getDouble());
writer.float8(fieldName, TypeProtos.DataMode.OPTIONAL).writeFloat8(reader.getDouble());
}
}

private void writeFloat(MapOrListWriterImpl writer, String fieldName, DBDocumentReaderBase reader) {
if (allTextMode) {
writeString(writer, fieldName, String.valueOf(reader.getFloat()));
} else if (readNumbersAsDouble) {
writer.float8(fieldName).writeFloat8(reader.getFloat());
writer.float8(fieldName, TypeProtos.DataMode.OPTIONAL).writeFloat8(reader.getFloat());
} else {
writer.float4(fieldName).writeFloat4(reader.getFloat());
writer.float4(fieldName, TypeProtos.DataMode.OPTIONAL).writeFloat4(reader.getFloat());
}
}

private void writeLong(MapOrListWriterImpl writer, String fieldName, DBDocumentReaderBase reader) {
if (allTextMode) {
writeString(writer, fieldName, String.valueOf(reader.getLong()));
} else if (readNumbersAsDouble) {
writer.float8(fieldName).writeFloat8(reader.getLong());
writer.float8(fieldName, TypeProtos.DataMode.OPTIONAL).writeFloat8(reader.getLong());
} else {
writer.bigInt(fieldName).writeBigInt(reader.getLong());
writer.bigInt(fieldName, TypeProtos.DataMode.OPTIONAL).writeBigInt(reader.getLong());
}
}

private void writeInt(MapOrListWriterImpl writer, String fieldName, DBDocumentReaderBase reader) {
if (allTextMode) {
writeString(writer, fieldName, String.valueOf(reader.getInt()));
} else if (readNumbersAsDouble) {
writer.float8(fieldName).writeFloat8(reader.getInt());
writer.float8(fieldName, TypeProtos.DataMode.OPTIONAL).writeFloat8(reader.getInt());
} else {
writer.integer(fieldName).writeInt(reader.getInt());
writer.integer(fieldName, TypeProtos.DataMode.OPTIONAL).writeInt(reader.getInt());
}
}

private void writeShort(MapOrListWriterImpl writer, String fieldName, DBDocumentReaderBase reader) {
if (allTextMode) {
writeString(writer, fieldName, String.valueOf(reader.getShort()));
} else if (readNumbersAsDouble) {
writer.float8(fieldName).writeFloat8(reader.getShort());
writer.float8(fieldName, TypeProtos.DataMode.OPTIONAL).writeFloat8(reader.getShort());
} else {
((writer.map != null) ? writer.map.smallInt(fieldName) : writer.list.smallInt()).writeSmallInt(reader.getShort());
((writer.map != null) ? writer.map.smallInt(fieldName, TypeProtos.DataMode.OPTIONAL) : writer.list.smallInt()).writeSmallInt(reader.getShort());
}
}

private void writeByte(MapOrListWriterImpl writer, String fieldName, DBDocumentReaderBase reader) {
if (allTextMode) {
writeString(writer, fieldName, String.valueOf(reader.getByte()));
} else if (readNumbersAsDouble) {
writer.float8(fieldName).writeFloat8(reader.getByte());
writer.float8(fieldName, TypeProtos.DataMode.OPTIONAL).writeFloat8(reader.getByte());
} else {
((writer.map != null) ? writer.map.tinyInt(fieldName) : writer.list.tinyInt()).writeTinyInt(reader.getByte());
((writer.map != null) ? writer.map.tinyInt(fieldName, TypeProtos.DataMode.OPTIONAL) : writer.list.tinyInt()).writeTinyInt(reader.getByte());
}
}

private void writeBoolean(MapOrListWriterImpl writer, String fieldName, DBDocumentReaderBase reader) {
if (allTextMode) {
writeString(writer, fieldName, String.valueOf(reader.getBoolean()));
} else {
writer.bit(fieldName).writeBit(reader.getBoolean() ? 1 : 0);
writer.bit(fieldName, TypeProtos.DataMode.OPTIONAL).writeBit(reader.getBoolean() ? 1 : 0);
}
}

Expand All @@ -430,15 +434,15 @@ private void writeBinary(MapOrListWriterImpl writer, String fieldName, ByteBuffe
} else {
buffer = buffer.reallocIfNeeded(buf.remaining());
buffer.setBytes(0, buf, buf.position(), buf.remaining());
writer.binary(fieldName).writeVarBinary(0, buf.remaining(), buffer);
writer.binary(fieldName, TypeProtos.DataMode.OPTIONAL).writeVarBinary(0, buf.remaining(), buffer);
}
}

private void writeString(MapOrListWriterImpl writer, String fieldName, String value) {
final byte[] strBytes = Bytes.toBytes(value);
buffer = buffer.reallocIfNeeded(strBytes.length);
buffer.setBytes(0, strBytes);
writer.varChar(fieldName).writeVarChar(0, strBytes.length, buffer);
writer.varChar(fieldName, TypeProtos.DataMode.OPTIONAL).writeVarChar(0, strBytes.length, buffer);
}

private UserException unsupportedError(String format, Object... args) {
Expand Down
166 changes: 0 additions & 166 deletions exec/java-exec/src/main/codegen/templates/ParquetTypeHelper.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/**
/*
* 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
Expand All @@ -20,13 +20,9 @@
import com.google.common.base.Charsets;

import org.apache.drill.common.exceptions.DrillRuntimeException;
import org.apache.drill.common.types.TypeProtos.DataMode;
//import org.apache.drill.common.types.DataMode;
import org.apache.drill.common.types.MinorType;
import org.apache.drill.common.types.TypeProtos;
import org.apache.drill.exec.expr.holders.VarCharHolder;
import org.apache.drill.exec.vector.complex.MapUtility;
import org.apache.drill.exec.vector.complex.impl.SingleMapReaderImpl;
import org.apache.drill.exec.vector.complex.reader.FieldReader;
import org.apache.drill.exec.vector.complex.writer.BaseWriter;

Expand All @@ -42,7 +38,7 @@ public class MappifyUtility {

public static DrillBuf mappify(FieldReader reader, BaseWriter.ComplexWriter writer, DrillBuf buffer) {
// Currently we expect single map as input
if (DataMode.REPEATED == reader.getType().getMode() || !(reader.getType().getMinorType() == TypeProtos.MinorType.MAP)) {
if (TypeProtos.DataMode.REPEATED == reader.getType().getMode() || !(reader.getType().getMinorType() == TypeProtos.MinorType.MAP)) {
throw new DrillRuntimeException("kvgen function only supports Simple maps as input");
}
BaseWriter.ListWriter listWriter = writer.rootAsList();
Expand Down Expand Up @@ -72,7 +68,7 @@ public static DrillBuf mappify(FieldReader reader, BaseWriter.ComplexWriter writ
vh.start = 0;
vh.end = b.length;
vh.buffer = buffer;
mapWriter.varChar(fieldKey).write(vh);
mapWriter.varChar(fieldKey, TypeProtos.DataMode.OPTIONAL).write(vh);

// Write the value to the map
MapUtility.writeToMapFromReader(fieldReader, mapWriter);
Expand Down
Loading