protected void writeBinary(MapWriter writer, String fieldName, ByteBuffer buf) { int bufLen = buf.remaining(); buffer = buffer.reallocIfNeeded(bufLen); buffer.setBytes(0, buf, buf.position(), bufLen); writer.varBinary(fieldName).writeVarBinary(0, bufLen, buffer); }
case INT32: { if (type.getOriginalType() == null) { IntWriter writer = type.getRepetition() == Repetition.REPEATED ? mapWriter.list(name).integer() : mapWriter.integer(name); return new DrillIntConverter(writer); case INT_16 : case INT_32 : { IntWriter writer = type.getRepetition() == Repetition.REPEATED ? mapWriter.list(name).integer() : mapWriter.integer(name); return new DrillIntConverter(writer); ParquetReaderUtility.checkDecimalTypeEnabled(options); VarDecimalWriter writer = type.getRepetition() == Repetition.REPEATED ? mapWriter.list(name).varDecimal(type.getDecimalMetadata().getScale(), type.getDecimalMetadata().getPrecision()) : mapWriter.varDecimal(name, type.getDecimalMetadata().getScale(), type.getDecimalMetadata().getPrecision()); return new DrillVarDecimalConverter(writer, type.getDecimalMetadata().getPrecision(), type.getDecimalMetadata().getScale(), mutator.getManagedBuffer()); DateWriter writer = type.getRepetition() == Repetition.REPEATED ? mapWriter.list(name).date() : mapWriter.date(name); switch(containsCorruptedDates) { case META_SHOWS_CORRUPTION: TimeWriter writer = type.getRepetition() == Repetition.REPEATED ? mapWriter.list(name).time() : mapWriter.time(name); return new DrillTimeConverter(writer); BigIntWriter writer = type.getRepetition() == Repetition.REPEATED ? mapWriter.list(name).bigInt() : mapWriter.bigInt(name); return new DrillBigIntConverter(writer); case INT_64 : case TIMESTAMP_MICROS: {
case TINYINT: if (repeated) { fieldReader.copyAsValue(mapWriter.list(fieldName).tinyInt()); } else { fieldReader.copyAsValue(mapWriter.tinyInt(fieldName)); fieldReader.copyAsValue(mapWriter.list(fieldName).smallInt()); } else { fieldReader.copyAsValue(mapWriter.smallInt(fieldName)); fieldReader.copyAsValue(mapWriter.list(fieldName).bigInt()); } else { fieldReader.copyAsValue(mapWriter.bigInt(fieldName)); fieldReader.copyAsValue(mapWriter.list(fieldName).integer()); } else { fieldReader.copyAsValue(mapWriter.integer(fieldName)); fieldReader.copyAsValue(mapWriter.list(fieldName).uInt1()); } else { fieldReader.copyAsValue(mapWriter.uInt1(fieldName)); fieldReader.copyAsValue(mapWriter.list(fieldName).uInt2()); } else { fieldReader.copyAsValue(mapWriter.uInt2(fieldName)); fieldReader.copyAsValue(mapWriter.list(fieldName).uInt4()); } else { fieldReader.copyAsValue(mapWriter.uInt4(fieldName));
case TINYINT: if (repeated) { fieldReader.copyAsValue(mapWriter.list(MappifyUtility.fieldValue).tinyInt()); } else { fieldReader.copyAsValue(mapWriter.tinyInt(MappifyUtility.fieldValue)); fieldReader.copyAsValue(mapWriter.list(MappifyUtility.fieldValue).smallInt()); } else { fieldReader.copyAsValue(mapWriter.smallInt(MappifyUtility.fieldValue)); fieldReader.copyAsValue(mapWriter.list(MappifyUtility.fieldValue).bigInt()); } else { fieldReader.copyAsValue(mapWriter.bigInt(MappifyUtility.fieldValue)); fieldReader.copyAsValue(mapWriter.list(MappifyUtility.fieldValue).integer()); } else { fieldReader.copyAsValue(mapWriter.integer(MappifyUtility.fieldValue)); fieldReader.copyAsValue(mapWriter.list(MappifyUtility.fieldValue).uInt1()); } else { fieldReader.copyAsValue(mapWriter.uInt1(MappifyUtility.fieldValue)); fieldReader.copyAsValue(mapWriter.list(MappifyUtility.fieldValue).uInt2()); } else { fieldReader.copyAsValue(mapWriter.uInt2(MappifyUtility.fieldValue)); fieldReader.copyAsValue(mapWriter.list(MappifyUtility.fieldValue).uInt4()); } else { fieldReader.copyAsValue(mapWriter.uInt4(MappifyUtility.fieldValue));
boolean moveForward) throws IOException { map.start(); try { outside: while (true) { writeData(map.list(fieldName)); break; case START_OBJECT: if (!writeMapDataIfTyped(map, fieldName)) { writeData(map.map(fieldName), childSelection, false); map.bit(fieldName).writeBit(0); break; map.bit(fieldName).writeBit(1); break; map.float8(fieldName).writeFloat8(parser.getDoubleValue()); break; case VALUE_NUMBER_INT: if (this.readNumbersAsDouble) { map.float8(fieldName).writeFloat8(parser.getDoubleValue()); } else { map.bigInt(fieldName).writeBigInt(parser.getLongValue()); map.end();
writer.bit(tagName).writeBit((Boolean) value ? 1 : 0); } else if (value instanceof Byte) { writer.integer(tagName).writeInt(((Byte) value).intValue()); } else if (value instanceof Short) { writer.integer(tagName).writeInt(((Short) value).intValue()); } else if (value instanceof Integer) { writer.integer(tagName).writeInt((Integer) value); } else if (value instanceof Long) { writer.bigInt(tagName).writeBigInt((Long) value); } else if (value instanceof Float) { writer.float4(tagName).writeFloat4((Float) value); } else if (value instanceof Double) { writer.float8(tagName).writeFloat8((Double) value); } else if (value instanceof Rational) { writer.float8(tagName).writeFloat8(((Rational) value).doubleValue()); } else if (value instanceof String) { writeString(writer.varChar(tagName), (String) value); } else if (value instanceof StringValue) { writeString(writer.varChar(tagName), ((StringValue) value).toString()); } else if (value instanceof Date) { writer.timeStamp(tagName).writeTimeStamp(((Date) value).getTime()); } else if (value instanceof boolean[]) { for (boolean v : (boolean[]) value) { writer.list(tagName).bit().writeBit(v ? 1 : 0); writer.integer(tagName).writeInt(bytes[0]); } else if (bytes.length <= 4) {
private void writeDataAllText(MapWriter map, FieldSelection selection, boolean moveForward) throws IOException { map.start(); outside: while (true) { writeDataAllText(map.list(fieldName)); break; case START_OBJECT: if (!writeMapDataIfTyped(map, fieldName)) { writeDataAllText(map.map(fieldName), childSelection, false); map.end();
mapWriter.start(); mapWriter.end(); return; org.apache.drill.exec.expr.fn.impl.StringFunctionHelpers.toStringFromUTF8(in.start, in.end, in.buffer); try { mapWriter.start(); rowHolder.end = protocolBytes.length; rowHolder.buffer = outBuffer; mapWriter.varChar((String) entry.getKey()).write(rowHolder); org.apache.drill.exec.expr.holders.IntHolder intHolder = new org.apache.drill.exec.expr.holders.IntHolder(); intHolder.value = port; mapWriter.integer("port").write(intHolder); mapWriter.end(); } catch (Exception e) { mapWriter.end();
parser.addParseTarget(this.getClass().getMethod("setWildcard", String.class, Double.class), parserFieldName); parser.addParseTarget(this.getClass().getMethod("setWildcard", String.class, Long.class), parserFieldName); wildcards.put(cleanName, mapWriter.map(drillFieldName)); doubles.put(parserFieldName, mapWriter.float8(drillFieldName)); longs.put(parserFieldName, mapWriter.bigInt(drillFieldName)); strings.put(parserFieldName, mapWriter.varChar(drillFieldName));
org.apache.drill.exec.expr.fn.impl.StringFunctionHelpers.toStringFromUTF8(in.start, in.end, in.buffer); try { mapWriter.start(); rowHolder.end = protocolBytes.length; rowHolder.buffer = outBuffer; mapWriter.varChar((String) entry.getKey()).write(rowHolder); org.apache.drill.exec.expr.holders.IntHolder intHolder = new org.apache.drill.exec.expr.holders.IntHolder(); intHolder.value = port; mapWriter.integer("port").write(intHolder); mapWriter.end(); } catch (Exception e) { mapWriter.end();
private static FieldWriter getMapWriterForReader(FieldReader reader, MapWriter writer, String name) { switch (reader.getType().getMinorType()) { case TINYINT: return (FieldWriter) writer.tinyInt(name); case UINT1: return (FieldWriter) writer.uInt1(name); case UINT2: return (FieldWriter) writer.uInt2(name); case SMALLINT: return (FieldWriter) writer.smallInt(name); case INT: return (FieldWriter) writer.integer(name); case UINT4: return (FieldWriter) writer.uInt4(name); case FLOAT4: return (FieldWriter) writer.float4(name); case TIME: return (FieldWriter) writer.time(name); case INTERVALYEAR: return (FieldWriter) writer.intervalYear(name); case BIGINT: return (FieldWriter) writer.bigInt(name); case UINT8: return (FieldWriter) writer.uInt8(name); case FLOAT8: return (FieldWriter) writer.float8(name); case DATE: return (FieldWriter) writer.date(name); case TIMESTAMP: return (FieldWriter) writer.timeStamp(name);
parser, String.format("Cannot read from the middle of a record. Current token was %s ", token)); writer.rootAsMap().bit("count").writeBit(1); parser.skipChildren(); } catch (com.fasterxml.jackson.core.JsonParseException ex) {
rowHolder.buffer = outBuffer; queryMapWriter.varChar(fieldName).write(rowHolder);
@SuppressWarnings("resource") @Override public void writeBinary(boolean isNull) throws IOException { VarBinaryWriter bin = writer.varBinary(fieldName); if(!isNull){ byte[] binaryData = parser.getBinaryValue(); if (hasType()) { //Ignoring type info as of now. long type = getType(); if (type < 0 || type > 255) { throw UserException.validationError() .message("$type should be between 0 to 255") .build(LOG); } } work.prepareBinary(binaryData, binary); bin.write(binary); } }
@Override public void eval() { if (in.isSet == 0) { // Return empty map org.apache.drill.exec.vector.complex.writer.BaseWriter.MapWriter mapWriter = writer.rootAsMap(); mapWriter.start(); mapWriter.end(); return; } try { jsonReader.setSource(in.start, in.end, in.buffer); jsonReader.write(writer); buffer = jsonReader.getWorkBuf(); } catch (Exception e) { throw new org.apache.drill.common.exceptions.DrillRuntimeException("Error while converting from JSON. ", e); } } }
/** * This method is referenced and called via reflection. When the parser processes a field like: * HTTP.URI:request.firstline.uri.query.* where star is an arbitrary field that the parser found this method will be * invoked. <br> * * @param field name of field * @param value value of field */ @SuppressWarnings("unused") public void setWildcard(final String field, final Long value) { if (value != null) { final MapWriter mapWriter = getWildcardWriter(field); LOG.trace("Parsed wildcard field: {}, as long: {}", field, value); final BigIntWriter w = mapWriter.bigInt(cleanExtensions.get(field)); w.writeBigInt(value); } }
@Override public void eval() { if (in.isSet == 0) { // Return empty map org.apache.drill.exec.vector.complex.writer.BaseWriter.MapWriter mapWriter = writer.rootAsMap(); mapWriter.start(); mapWriter.end(); return; } try { jsonReader.setSource(in.start, in.end, in.buffer); jsonReader.write(writer); buffer = jsonReader.getWorkBuf(); } catch (Exception e) { throw new org.apache.drill.common.exceptions.DrillRuntimeException("Error while converting from JSON. ", e); } } }