This is an automated email from the ASF dual-hosted git repository. volodymyr pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/drill.git
commit 1c34b3923399f8f56b662dd4702041b7026e0b11 Author: Volodymyr Vysotskyi <[email protected]> AuthorDate: Fri Jul 5 13:17:52 2019 +0300 DRILL-7315: Revise precision and scale order in the method arguments --- .../java/org/apache/drill/common/types/Types.java | 4 +-- .../store/hive/writers/HiveValueWriterFactory.java | 4 +-- .../apache/drill/exec/expr/EvaluationVisitor.java | 4 +-- .../expr/fn/interpreter/InterpreterEvaluator.java | 4 +-- .../drill/exec/planner/logical/DrillOptiq.java | 7 ++-- .../drill/exec/planner/sql/SqlConverter.java | 2 +- .../drill/exec/store/avro/AvroRecordReader.java | 6 ++-- .../exec/store/parquet/ParquetReaderUtility.java | 4 +-- .../store/parquet/ParquetTableMetadataUtils.java | 2 +- .../store/parquet2/DrillParquetGroupConverter.java | 10 +++--- .../drill/exec/vector/complex/MapUtility.java | 10 +++--- .../java/org/apache/drill/TestFrameworkTest.java | 2 +- .../drill/exec/fn/impl/TestAggregateFunctions.java | 16 ++++----- .../drill/exec/fn/impl/TestCastFunctions.java | 10 +++--- .../src/main/codegen/data/ValueVectorTypes.tdd | 25 +++++++++----- .../codegen/templates/AbstractFieldReader.java | 2 +- .../codegen/templates/AbstractFieldWriter.java | 4 +-- .../templates/AbstractPromotableFieldWriter.java | 8 ++--- .../src/main/codegen/templates/BaseWriter.java | 6 ++-- .../src/main/codegen/templates/ComplexCopier.java | 4 +-- .../src/main/codegen/templates/ComplexReaders.java | 38 +++++++++------------- .../src/main/codegen/templates/ListWriters.java | 4 +-- .../src/main/codegen/templates/MapWriters.java | 4 +-- .../src/main/codegen/templates/NullReader.java | 2 +- .../codegen/templates/RepeatedValueVectors.java | 5 +-- .../main/codegen/templates/UnionListWriter.java | 4 +-- .../src/main/codegen/templates/UnionWriter.java | 8 ++--- .../drill/exec/vector/ValueHolderHelper.java | 4 +-- .../vector/complex/impl/MapOrListWriterImpl.java | 4 +-- 29 files changed, 105 insertions(+), 102 deletions(-) diff --git a/common/src/main/java/org/apache/drill/common/types/Types.java b/common/src/main/java/org/apache/drill/common/types/Types.java index f5567e5..7a31c7a 100644 --- a/common/src/main/java/org/apache/drill/common/types/Types.java +++ b/common/src/main/java/org/apache/drill/common/types/Types.java @@ -549,7 +549,7 @@ public class Types { return MajorType.newBuilder().setMinorType(type).setMode(mode).setPrecision(precision).build(); } - public static MajorType withScaleAndPrecision(final MinorType type, final DataMode mode, final int scale, final int precision) { + public static MajorType withPrecisionAndScale(MinorType type, DataMode mode, int precision, int scale) { return MajorType.newBuilder().setMinorType(type).setMode(mode).setScale(scale).setPrecision(precision).build(); } @@ -566,7 +566,7 @@ public class Types { } public static MajorType overrideMode(final MajorType originalMajorType, final DataMode overrideMode) { - return withScaleAndPrecision(originalMajorType.getMinorType(), overrideMode, originalMajorType.getScale(), originalMajorType.getPrecision()); + return withPrecisionAndScale(originalMajorType.getMinorType(), overrideMode, originalMajorType.getPrecision(), originalMajorType.getScale()); } public static MajorType getMajorTypeFromName(final String typeName) { diff --git a/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/writers/HiveValueWriterFactory.java b/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/writers/HiveValueWriterFactory.java index c724a7a..0b2fd9d 100644 --- a/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/writers/HiveValueWriterFactory.java +++ b/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/writers/HiveValueWriterFactory.java @@ -198,8 +198,8 @@ public final class HiveValueWriterFactory { int scale = decimalType.getScale(); int precision = decimalType.getPrecision(); VarDecimalWriter writer = extractWriter(name, parentWriter, - (mapWriter, key) -> mapWriter.varDecimal(key, scale, precision), - listWriter -> listWriter.varDecimal(scale, precision)); + (mapWriter, key) -> mapWriter.varDecimal(key, precision, scale), + listWriter -> listWriter.varDecimal(precision, scale)); return new HiveDecimalWriter((HiveDecimalObjectInspector) inspector, writer, scale); } default: diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java index 4d85c6a..54644bf 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java @@ -651,7 +651,7 @@ public class EvaluationVisitor { return getHoldingContainer( generator, e.getMajorType(), - buffer -> ValueHolderHelper.getDecimal9Holder(e.getIntFromDecimal(), e.getScale(), e.getPrecision())); + buffer -> ValueHolderHelper.getDecimal9Holder(e.getIntFromDecimal(), e.getPrecision(), e.getScale())); } @Override @@ -660,7 +660,7 @@ public class EvaluationVisitor { return getHoldingContainer( generator, e.getMajorType(), - buffer -> ValueHolderHelper.getDecimal18Holder(e.getLongFromDecimal(), e.getScale(), e.getPrecision())); + buffer -> ValueHolderHelper.getDecimal18Holder(e.getLongFromDecimal(), e.getPrecision(), e.getScale())); } @Override diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/interpreter/InterpreterEvaluator.java b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/interpreter/InterpreterEvaluator.java index 7648ff4..cb0a3b6 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/interpreter/InterpreterEvaluator.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/interpreter/InterpreterEvaluator.java @@ -223,12 +223,12 @@ public class InterpreterEvaluator { @Override public ValueHolder visitDecimal9Constant(ValueExpressions.Decimal9Expression decExpr,Integer value) throws RuntimeException { - return ValueHolderHelper.getDecimal9Holder(decExpr.getIntFromDecimal(), decExpr.getScale(), decExpr.getPrecision()); + return ValueHolderHelper.getDecimal9Holder(decExpr.getIntFromDecimal(), decExpr.getPrecision(), decExpr.getScale()); } @Override public ValueHolder visitDecimal18Constant(ValueExpressions.Decimal18Expression decExpr,Integer value) throws RuntimeException { - return ValueHolderHelper.getDecimal18Holder(decExpr.getLongFromDecimal(), decExpr.getScale(), decExpr.getPrecision()); + return ValueHolderHelper.getDecimal18Holder(decExpr.getLongFromDecimal(), decExpr.getPrecision(), decExpr.getScale()); } @Override diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillOptiq.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillOptiq.java index 63ce90f..aa7e06a 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillOptiq.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillOptiq.java @@ -642,11 +642,12 @@ public class DrillOptiq { .getBoolean(ENABLE_DECIMAL_DATA_TYPE.getOptionName())) { if (isLiteralNull(literal)) { return new TypedNullConstant( - Types.withScaleAndPrecision( + Types.withPrecisionAndScale( MinorType.VARDECIMAL, TypeProtos.DataMode.OPTIONAL, - literal.getType().getScale(), - literal.getType().getPrecision())); + literal.getType().getPrecision(), + literal.getType().getScale() + )); } return ValueExpressions.getVarDecimal((BigDecimal) literal.getValue(), literal.getType().getPrecision(), diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SqlConverter.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SqlConverter.java index 097c7aa..dbf97a4 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SqlConverter.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SqlConverter.java @@ -633,7 +633,7 @@ public class SqlConverter { if (type.getScale() > type.getPrecision()) { throw UserException.validationError() .message("Expected scale less than or equal to precision, " + - "but was scale %s and precision %s.", type.getScale(), type.getPrecision()) + "but was precision %s and scale %s.", type.getPrecision(), type.getScale()) .build(logger); } RexLiteral literal = (RexLiteral) exp; diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroRecordReader.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroRecordReader.java index 07444e9..7b89dae 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroRecordReader.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroRecordReader.java @@ -326,8 +326,8 @@ public class AvroRecordReader extends AbstractRecordReader { case "decimal": ParquetReaderUtility.checkDecimalTypeEnabled(optionManager); LogicalTypes.Decimal decimalType = (LogicalTypes.Decimal) logicalType; - writer.varDecimal(fieldName, decimalType.getScale(), decimalType.getPrecision()) - .writeVarDecimal(0, length, buffer, decimalType.getScale(), decimalType.getPrecision()); + writer.varDecimal(fieldName, decimalType.getPrecision(), decimalType.getScale()) + .writeVarDecimal(0, length, buffer, decimalType.getPrecision(), decimalType.getScale()); break; default: writer.binary(fieldName).writeVarBinary(0, length, buffer); @@ -354,7 +354,7 @@ public class AvroRecordReader extends AbstractRecordReader { case "decimal": ParquetReaderUtility.checkDecimalTypeEnabled(optionManager); LogicalTypes.Decimal decimalType = (LogicalTypes.Decimal) logicalType; - writer.varDecimal(fieldName, decimalType.getScale(), decimalType.getPrecision()) + writer.varDecimal(fieldName, decimalType.getPrecision(), decimalType.getScale()) .writeVarDecimal(new BigDecimal(new BigInteger(genericFixed.bytes()), decimalType.getScale())); break; default: diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetReaderUtility.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetReaderUtility.java index a453fea..709d9d5 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetReaderUtility.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetReaderUtility.java @@ -593,10 +593,10 @@ public class ParquetReaderUtility { * @param precision type precision (used for DECIMAL type) * @return major type */ - public static TypeProtos.MajorType getType(PrimitiveTypeName type, OriginalType originalType, int scale, int precision) { + public static TypeProtos.MajorType getType(PrimitiveTypeName type, OriginalType originalType, int precision, int scale) { TypeProtos.MinorType minorType = getMinorType(type, originalType); if (originalType == OriginalType.DECIMAL) { - return Types.withScaleAndPrecision(minorType, TypeProtos.DataMode.OPTIONAL, scale, precision); + return Types.withPrecisionAndScale(minorType, TypeProtos.DataMode.OPTIONAL, precision, scale); } return Types.optional(minorType); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetTableMetadataUtils.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetTableMetadataUtils.java index b4d2bf2..9df3f73 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetTableMetadataUtils.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetTableMetadataUtils.java @@ -500,7 +500,7 @@ public class ParquetTableMetadataUtils { mode = TypeProtos.DataMode.OPTIONAL; } TypeProtos.MajorType columnType = - TypeProtos.MajorType.newBuilder(ParquetReaderUtility.getType(primitiveType, originalType, scale, precision)) + TypeProtos.MajorType.newBuilder(ParquetReaderUtility.getType(primitiveType, originalType, precision, scale)) .setMode(mode) .build(); diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet2/DrillParquetGroupConverter.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet2/DrillParquetGroupConverter.java index 898fcf1..924f611 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet2/DrillParquetGroupConverter.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet2/DrillParquetGroupConverter.java @@ -389,12 +389,12 @@ public class DrillParquetGroupConverter extends GroupConverter { } private PrimitiveConverter getVarDecimalConverter(String name, PrimitiveType type) { - int s = type.getDecimalMetadata().getScale(); - int p = type.getDecimalMetadata().getPrecision(); + int scale = type.getDecimalMetadata().getScale(); + int precision = type.getDecimalMetadata().getPrecision(); VarDecimalWriter writer = type.isRepetition(Repetition.REPEATED) - ? getWriter(name, (m, f) -> m.list(f).varDecimal(s, p), l -> l.list().varDecimal(s, p)) - : getWriter(name, (m, f) -> m.varDecimal(f, s, p), l -> l.varDecimal(s, p)); - return new DrillVarDecimalConverter(writer, p, s, mutator.getManagedBuffer()); + ? getWriter(name, (m, f) -> m.list(f).varDecimal(precision, scale), l -> l.list().varDecimal(precision, scale)) + : getWriter(name, (m, f) -> m.varDecimal(f, precision, scale), l -> l.varDecimal(precision, scale)); + return new DrillVarDecimalConverter(writer, precision, scale, mutator.getManagedBuffer()); } @Override diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/MapUtility.java b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/MapUtility.java index f4d29e9..f73bcf7 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/MapUtility.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/MapUtility.java @@ -134,10 +134,10 @@ public class MapUtility { if (repeated) { fieldReader.copyAsValue( mapWriter.list(MappifyUtility.fieldValue) - .varDecimal(valueMajorType.getScale(), valueMajorType.getPrecision())); + .varDecimal(valueMajorType.getPrecision(), valueMajorType.getScale())); } else { fieldReader.copyAsValue( - mapWriter.varDecimal(MappifyUtility.fieldValue, valueMajorType.getScale(), valueMajorType.getPrecision())); + mapWriter.varDecimal(MappifyUtility.fieldValue, valueMajorType.getPrecision(), valueMajorType.getScale())); } break; case DATE: @@ -335,9 +335,9 @@ public class MapUtility { break; case VARDECIMAL: if (repeated) { - fieldReader.copyAsValue(mapWriter.list(fieldName).varDecimal(valueMajorType.getScale(), valueMajorType.getPrecision())); + fieldReader.copyAsValue(mapWriter.list(fieldName).varDecimal(valueMajorType.getPrecision(), valueMajorType.getScale())); } else { - fieldReader.copyAsValue(mapWriter.varDecimal(fieldName, valueMajorType.getScale(), valueMajorType.getPrecision())); + fieldReader.copyAsValue(mapWriter.varDecimal(fieldName, valueMajorType.getPrecision(), valueMajorType.getScale())); } break; case DATE: @@ -485,7 +485,7 @@ public class MapUtility { fieldReader.copyAsValue(listWriter.decimal38Sparse()); break; case VARDECIMAL: - fieldReader.copyAsValue(listWriter.varDecimal(valueMajorType.getScale(), valueMajorType.getPrecision())); + fieldReader.copyAsValue(listWriter.varDecimal(valueMajorType.getPrecision(), valueMajorType.getScale())); break; case DATE: fieldReader.copyAsValue(listWriter.date()); diff --git a/exec/java-exec/src/test/java/org/apache/drill/TestFrameworkTest.java b/exec/java-exec/src/test/java/org/apache/drill/TestFrameworkTest.java index d19e075..d55da30 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/TestFrameworkTest.java +++ b/exec/java-exec/src/test/java/org/apache/drill/TestFrameworkTest.java @@ -144,7 +144,7 @@ public class TestFrameworkTest extends BaseTestQuery { .sqlQuery("select cast(dec_col as decimal(38,2)) dec_col from cp.`testframework/decimal_test.json`") .unOrdered() .csvBaselineFile("testframework/decimal_test.tsv") - .baselineTypes(Types.withScaleAndPrecision(TypeProtos.MinorType.VARDECIMAL, TypeProtos.DataMode.REQUIRED, 2, 38)) + .baselineTypes(Types.withPrecisionAndScale(TypeProtos.MinorType.VARDECIMAL, TypeProtos.DataMode.REQUIRED, 38, 2)) .baselineColumns("dec_col") .build().run(); diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestAggregateFunctions.java b/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestAggregateFunctions.java index 5c3a433..29575e6 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestAggregateFunctions.java +++ b/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestAggregateFunctions.java @@ -391,21 +391,21 @@ public class TestAggregateFunctions extends BaseTestQuery { final List<Pair<SchemaPath, TypeProtos.MajorType>> expectedSchema = ImmutableList.of( Pair.of(SchemaPath.getSimplePath("sum_col"), - Types.withScaleAndPrecision(TypeProtos.MinorType.VARDECIMAL, TypeProtos.DataMode.OPTIONAL, 3, 38)), + Types.withPrecisionAndScale(TypeProtos.MinorType.VARDECIMAL, TypeProtos.DataMode.OPTIONAL, 38, 3)), Pair.of(SchemaPath.getSimplePath("avg_col"), - Types.withScaleAndPrecision(TypeProtos.MinorType.VARDECIMAL, TypeProtos.DataMode.OPTIONAL, 6, 38)), + Types.withPrecisionAndScale(TypeProtos.MinorType.VARDECIMAL, TypeProtos.DataMode.OPTIONAL, 38, 6)), Pair.of(SchemaPath.getSimplePath("stddev_pop_col"), - Types.withScaleAndPrecision(TypeProtos.MinorType.VARDECIMAL, TypeProtos.DataMode.OPTIONAL, 6, 38)), + Types.withPrecisionAndScale(TypeProtos.MinorType.VARDECIMAL, TypeProtos.DataMode.OPTIONAL, 38, 6)), Pair.of(SchemaPath.getSimplePath("stddev_samp_col"), - Types.withScaleAndPrecision(TypeProtos.MinorType.VARDECIMAL, TypeProtos.DataMode.OPTIONAL, 6, 38)), + Types.withPrecisionAndScale(TypeProtos.MinorType.VARDECIMAL, TypeProtos.DataMode.OPTIONAL, 38, 6)), Pair.of(SchemaPath.getSimplePath("var_pop_col"), - Types.withScaleAndPrecision(TypeProtos.MinorType.VARDECIMAL, TypeProtos.DataMode.OPTIONAL, 6, 38)), + Types.withPrecisionAndScale(TypeProtos.MinorType.VARDECIMAL, TypeProtos.DataMode.OPTIONAL, 38, 6)), Pair.of(SchemaPath.getSimplePath("var_samp_col"), - Types.withScaleAndPrecision(TypeProtos.MinorType.VARDECIMAL, TypeProtos.DataMode.OPTIONAL, 6, 38)), + Types.withPrecisionAndScale(TypeProtos.MinorType.VARDECIMAL, TypeProtos.DataMode.OPTIONAL, 38, 6)), Pair.of(SchemaPath.getSimplePath("max_col"), - Types.withScaleAndPrecision(TypeProtos.MinorType.VARDECIMAL, TypeProtos.DataMode.OPTIONAL, 3, 9)), + Types.withPrecisionAndScale(TypeProtos.MinorType.VARDECIMAL, TypeProtos.DataMode.OPTIONAL, 9, 3)), Pair.of(SchemaPath.getSimplePath("min_col"), - Types.withScaleAndPrecision(TypeProtos.MinorType.VARDECIMAL, TypeProtos.DataMode.OPTIONAL, 3, 9))); + Types.withPrecisionAndScale(TypeProtos.MinorType.VARDECIMAL, TypeProtos.DataMode.OPTIONAL, 9, 3))); String query = "select\n" + diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestCastFunctions.java b/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestCastFunctions.java index 6efbb19..73853fe 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestCastFunctions.java +++ b/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestCastFunctions.java @@ -640,7 +640,7 @@ public class TestCastFunctions extends ClusterTest { String query = "select cast('123.0' as decimal(3, 5))"; thrown.expect(UserRemoteException.class); - thrown.expectMessage(containsString("VALIDATION ERROR: Expected scale less than or equal to precision, but was scale 5 and precision 3")); + thrown.expectMessage(containsString("VALIDATION ERROR: Expected scale less than or equal to precision, but was precision 3 and scale 5")); run(query); } @@ -836,10 +836,10 @@ public class TestCastFunctions extends ClusterTest { // todo: uncomment after DRILL-6993 is resolved // typesMap.put("VARBINARY(31)", Types.withPrecision(VARBINARY, mode, 31)); typesMap.put("VARCHAR(26)", Types.withPrecision(VARCHAR, mode, 26)); - typesMap.put("DECIMAL(9, 2)", Types.withScaleAndPrecision(VARDECIMAL, mode, 2, 9)); - typesMap.put("DECIMAL(18, 5)", Types.withScaleAndPrecision(VARDECIMAL, mode, 5, 18)); - typesMap.put("DECIMAL(28, 3)", Types.withScaleAndPrecision(VARDECIMAL, mode, 3, 28)); - typesMap.put("DECIMAL(38, 2)", Types.withScaleAndPrecision(VARDECIMAL, mode, 2, 38)); + typesMap.put("DECIMAL(9, 2)", Types.withPrecisionAndScale(VARDECIMAL, mode, 9, 2)); + typesMap.put("DECIMAL(18, 5)", Types.withPrecisionAndScale(VARDECIMAL, mode, 18, 5)); + typesMap.put("DECIMAL(28, 3)", Types.withPrecisionAndScale(VARDECIMAL, mode, 28, 3)); + typesMap.put("DECIMAL(38, 2)", Types.withPrecisionAndScale(VARDECIMAL, mode, 38, 2)); return typesMap; } diff --git a/exec/vector/src/main/codegen/data/ValueVectorTypes.tdd b/exec/vector/src/main/codegen/data/ValueVectorTypes.tdd index d4851ca..64a5710 100644 --- a/exec/vector/src/main/codegen/data/ValueVectorTypes.tdd +++ b/exec/vector/src/main/codegen/data/ValueVectorTypes.tdd @@ -71,8 +71,9 @@ { class: "Time", javaType: "int", friendlyType: "LocalTime", accessorType: "int" }, { class: "IntervalYear", javaType: "int", friendlyType: "Period" } { class: "Decimal9", maxPrecisionDigits: 9, friendlyType: "BigDecimal", - fields: [{name:"value", type:"int"}, {name: "scale", type: "int", include: false}, - {name: "precision", type: "int", include: false}] }, + fields: [{name:"value", type:"int"}, + {name: "precision", type: "int", include: false}, + {name: "scale", type: "int", include: false}] }, ] }, { @@ -88,8 +89,9 @@ { class: "Date", javaType: "long", friendlyType: "LocalDate", accessorType: "long" }, { class: "TimeStamp", javaType: "long", friendlyType: "LocalDateTime", accessorType: "long" } { class: "Decimal18", maxPrecisionDigits: 18, friendlyType: "BigDecimal", - fields: [{name:"value", type:"long"}, {name: "scale", type: "int", include: false}, - {name: "precision", type: "int", include: false}] }, + fields: [{name:"value", type:"long"}, + {name: "precision", type: "int", include: false}, + {name: "scale", type: "int", include: false}] }, <#-- { class: "Money", maxPrecisionDigits: 2, scale: 1, }, --> @@ -128,7 +130,8 @@ --> { class: "Decimal28Dense", maxPrecisionDigits: 28, nDecimalDigits: 3, friendlyType: "BigDecimal", fields: [{name: "start", type: "int"}, {name: "buffer", type: "DrillBuf"}, - {name: "scale", type: "int", include: false}, {name: "precision", type: "int", include: false}] } + {name: "precision", type: "int", include: false}, + {name: "scale", type: "int", include: false}] } ] }, { @@ -140,7 +143,8 @@ minor: [ { class: "Decimal38Dense", maxPrecisionDigits: 38, nDecimalDigits: 4,friendlyType: "BigDecimal", fields: [{name: "start", type: "int"}, {name: "buffer", type: "DrillBuf"}, - {name: "scale", type: "int", include: false}, {name: "precision", type: "int", include: false}] } + {name: "precision", type: "int", include: false}, + {name: "scale", type: "int", include: false}] } ] }, { @@ -151,7 +155,8 @@ minor: [ { class: "Decimal38Sparse", maxPrecisionDigits: 38, nDecimalDigits: 6, friendlyType: "BigDecimal", fields: [{name: "start", type: "int"}, {name: "buffer", type: "DrillBuf"}, - {name: "scale", type: "int", include: false}, {name: "precision", type: "int", include: false}] } + {name: "precision", type: "int", include: false}, + {name: "scale", type: "int", include: false}] } ] }, { @@ -162,7 +167,8 @@ minor: [ { class: "Decimal28Sparse", maxPrecisionDigits: 28, nDecimalDigits: 5, friendlyType: "BigDecimal", fields: [{name: "start", type: "int"}, {name: "buffer", type: "DrillBuf"}, - {name: "scale", type: "int", include: false}, {name: "precision", type: "int", include: false}] } + {name: "precision", type: "int", include: false}, + {name: "scale", type: "int", include: false}] } ] }, { @@ -185,7 +191,8 @@ minor: [ { class: "VarDecimal", friendlyType: "BigDecimal", fields: [{name: "start", type: "int"}, {name: "end", type: "int"}, {name: "buffer", type: "DrillBuf"}, - {name: "scale", type: "int", include: false}, {name: "precision", type: "int", include: false}] } + {name: "precision", type: "int", include: false}, + {name: "scale", type: "int", include: false}] } ] }, { diff --git a/exec/vector/src/main/codegen/templates/AbstractFieldReader.java b/exec/vector/src/main/codegen/templates/AbstractFieldReader.java index 7400d39..b5ea6de 100644 --- a/exec/vector/src/main/codegen/templates/AbstractFieldReader.java +++ b/exec/vector/src/main/codegen/templates/AbstractFieldReader.java @@ -95,7 +95,7 @@ public abstract class AbstractFieldReader extends AbstractBaseReader implements } <#if minor.class == "VarDecimal"> - public void copyAsField(String name, ${name}Writer writer, int scale, int precision) { + public void copyAsField(String name, ${name}Writer writer, int precision, int scale) { <#else> public void copyAsField(String name, ${name}Writer writer) { </#if> diff --git a/exec/vector/src/main/codegen/templates/AbstractFieldWriter.java b/exec/vector/src/main/codegen/templates/AbstractFieldWriter.java index dcf99d3..9a5bd67 100644 --- a/exec/vector/src/main/codegen/templates/AbstractFieldWriter.java +++ b/exec/vector/src/main/codegen/templates/AbstractFieldWriter.java @@ -119,13 +119,13 @@ abstract class AbstractFieldWriter extends AbstractBaseWriter implements FieldWr <#assign capName = minor.class?cap_first /> <#if minor.class?contains("Decimal") > @Override - public ${capName}Writer ${lowerName}(String name, int scale, int precision) { + public ${capName}Writer ${lowerName}(String name, int precision, int scale) { fail("${capName}"); return null; } @Override - public ${capName}Writer ${lowerName}(int scale, int precision) { + public ${capName}Writer ${lowerName}(int precision, int scale) { fail("${capName}"); return null; } diff --git a/exec/vector/src/main/codegen/templates/AbstractPromotableFieldWriter.java b/exec/vector/src/main/codegen/templates/AbstractPromotableFieldWriter.java index 96b45d3..e065057 100644 --- a/exec/vector/src/main/codegen/templates/AbstractPromotableFieldWriter.java +++ b/exec/vector/src/main/codegen/templates/AbstractPromotableFieldWriter.java @@ -127,13 +127,13 @@ abstract class AbstractPromotableFieldWriter extends AbstractFieldWriter { <#if minor.class?contains("Decimal")> @Override - public ${capName}Writer ${lowerName}(String name, int scale, int precision) { - return getWriter(MinorType.MAP).${lowerName}(name, scale, precision); + public ${capName}Writer ${lowerName}(String name, int precision, int scale) { + return getWriter(MinorType.MAP).${lowerName}(name, precision, scale); } @Override - public ${capName}Writer ${lowerName}(int scale, int precision) { - return getWriter(MinorType.LIST).${lowerName}(scale, precision); + public ${capName}Writer ${lowerName}(int precision, int scale) { + return getWriter(MinorType.LIST).${lowerName}(precision, scale); } <#else> diff --git a/exec/vector/src/main/codegen/templates/BaseWriter.java b/exec/vector/src/main/codegen/templates/BaseWriter.java index e650609..5ae2648 100644 --- a/exec/vector/src/main/codegen/templates/BaseWriter.java +++ b/exec/vector/src/main/codegen/templates/BaseWriter.java @@ -54,7 +54,7 @@ package org.apache.drill.exec.vector.complex.writer; <#assign upperName = minor.class?upper_case /> <#assign capName = minor.class?cap_first /> <#if minor.class?contains("Decimal") > - ${capName}Writer ${lowerName}(String name, int scale, int precision); + ${capName}Writer ${lowerName}(String name, int precision, int scale); </#if> ${capName}Writer ${lowerName}(String name); </#list></#list> @@ -79,7 +79,7 @@ package org.apache.drill.exec.vector.complex.writer; <#assign upperName = minor.class?upper_case /> <#assign capName = minor.class?cap_first /> <#if minor.class?contains("Decimal") > - ${capName}Writer ${lowerName}(int scale, int precision); + ${capName}Writer ${lowerName}(int precision, int scale); </#if> ${capName}Writer ${lowerName}(); </#list></#list> @@ -115,7 +115,7 @@ package org.apache.drill.exec.vector.complex.writer; VarCharWriter varChar(String name); Var16CharWriter var16Char(String name); VarDecimalWriter varDecimal(String name); - VarDecimalWriter varDecimal(String name, int scale, int precision); + VarDecimalWriter varDecimal(String name, int precision, int scale); TinyIntWriter tinyInt(String name); SmallIntWriter smallInt(String name); IntWriter integer(String name); diff --git a/exec/vector/src/main/codegen/templates/ComplexCopier.java b/exec/vector/src/main/codegen/templates/ComplexCopier.java index c138ef6..256e79e 100644 --- a/exec/vector/src/main/codegen/templates/ComplexCopier.java +++ b/exec/vector/src/main/codegen/templates/ComplexCopier.java @@ -103,7 +103,7 @@ public class ComplexCopier { return (FieldWriter) writer.<#if name == "Int">integer<#else>${uncappedName}</#if>(name); <#elseif minor.class?contains("VarDecimal")> case ${name?upper_case}: - return (FieldWriter) writer.${uncappedName}(name, type.getScale(), type.getPrecision()); + return (FieldWriter) writer.${uncappedName}(name, type.getPrecision(), type.getScale()); </#if> </#list></#list> case MAP: @@ -125,7 +125,7 @@ public class ComplexCopier { return (FieldWriter) writer.<#if name == "Int">integer<#else>${uncappedName}</#if>(); <#elseif minor.class?contains("VarDecimal")> case ${name?upper_case}: - return (FieldWriter) writer.${uncappedName}(reader.getType().getScale(), reader.getType().getPrecision()); + return (FieldWriter) writer.${uncappedName}(reader.getType().getPrecision(), reader.getType().getScale()); </#if> </#list></#list> case MAP: diff --git a/exec/vector/src/main/codegen/templates/ComplexReaders.java b/exec/vector/src/main/codegen/templates/ComplexReaders.java index d72c7c6..77252ad 100644 --- a/exec/vector/src/main/codegen/templates/ComplexReaders.java +++ b/exec/vector/src/main/codegen/templates/ComplexReaders.java @@ -50,9 +50,9 @@ package org.apache.drill.exec.vector.complex.impl; */ @SuppressWarnings("unused") public class ${nullMode}${name}ReaderImpl extends AbstractFieldReader { - + private final ${nullMode}${name}Vector vector; - + public ${nullMode}${name}ReaderImpl(${nullMode}${name}Vector vector) { super(); this.vector = vector; @@ -65,7 +65,7 @@ public class ${nullMode}${name}ReaderImpl extends AbstractFieldReader { public MaterializedField getField() { return vector.getField(); } - + public boolean isSet() { <#if nullMode == "Nullable"> return !vector.getAccessor().isNull(idx()); @@ -82,16 +82,16 @@ public class ${nullMode}${name}ReaderImpl extends AbstractFieldReader { } <#if minor.class == "VarDecimal"> - public void copyAsField(String name, MapWriter writer, int scale, int precision) { + public void copyAsField(String name, MapWriter writer, int precision, int scale) { Repeated${minor.class?cap_first}WriterImpl impl - = (Repeated${minor.class?cap_first}WriterImpl) writer.list(name).${lowerName}(scale, precision); + = (Repeated${minor.class?cap_first}WriterImpl) writer.list(name).${lowerName}(precision, scale); <#else> public void copyAsField(String name, MapWriter writer) { Repeated${minor.class?cap_first}WriterImpl impl = (Repeated${minor.class?cap_first}WriterImpl) writer.list(name).${lowerName}(); </#if> impl.vector.copyFromSafe(idx(), impl.idx(), vector); } - + public int size() { return vector.getAccessor().getInnerValueCountAt(idx()); } @@ -103,27 +103,26 @@ public class ${nullMode}${name}ReaderImpl extends AbstractFieldReader { public void read(int arrayIndex, Nullable${minor.class?cap_first}Holder h) { vector.getAccessor().get(idx(), arrayIndex, h); } - + public ${friendlyType} read${safeType}(int arrayIndex) { return vector.getAccessor().getSingleObject(idx(), arrayIndex); } - public List<Object> readObject() { return (List<Object>) (Object) vector.getAccessor().getObject(idx()); } - + <#else> - + public void copyAsValue(${minor.class?cap_first}Writer writer) { ${nullMode}${minor.class?cap_first}WriterImpl impl = (${nullMode}${minor.class?cap_first}WriterImpl) writer; impl.vector.copyFromSafe(idx(), impl.idx(), vector); } <#if minor.class == "VarDecimal"> - public void copyAsField(String name, MapWriter writer, int scale, int precision) { + public void copyAsField(String name, MapWriter writer, int precision, int scale) { ${nullMode}${minor.class?cap_first}WriterImpl impl - = (${nullMode}${minor.class?cap_first}WriterImpl) writer.${lowerName}(name, scale, precision); + = (${nullMode}${minor.class?cap_first}WriterImpl) writer.${lowerName}(name, precision, scale); <#else> public void copyAsField(String name, MapWriter writer) { ${nullMode}${minor.class?cap_first}WriterImpl impl = (${nullMode}${minor.class?cap_first}WriterImpl) writer.${lowerName}(name); @@ -140,15 +139,14 @@ public class ${nullMode}${name}ReaderImpl extends AbstractFieldReader { public void read(Nullable${minor.class?cap_first}Holder h) { vector.getAccessor().get(idx(), h); } - + public ${friendlyType} read${safeType}() { return vector.getAccessor().getObject(idx()); } - + public void copyValue(FieldWriter w) { - } - + public Object readObject() { return vector.getAccessor().getObject(idx()); } @@ -165,7 +163,7 @@ package org.apache.drill.exec.vector.complex.reader; <#include "/@includes/vv_imports.ftl" /> @SuppressWarnings("unused") public interface ${name}Reader extends BaseReader { - + <#if mode == "Repeated"> public int size(); public void read(int arrayIndex, ${minor.class?cap_first}Holder h); @@ -181,16 +179,12 @@ public interface ${name}Reader extends BaseReader { public boolean isSet(); public void copyAsValue(${minor.class}Writer writer); <#if minor.class == "VarDecimal"> - public void copyAsField(String name, ${minor.class}Writer writer, int scale, int precision); + public void copyAsField(String name, ${minor.class}Writer writer, int precision, int scale); <#else> public void copyAsField(String name, ${minor.class}Writer writer); </#if> } - - </#list> </#list> </#list> - - diff --git a/exec/vector/src/main/codegen/templates/ListWriters.java b/exec/vector/src/main/codegen/templates/ListWriters.java index 4300857..904c6c5 100644 --- a/exec/vector/src/main/codegen/templates/ListWriters.java +++ b/exec/vector/src/main/codegen/templates/ListWriters.java @@ -170,8 +170,8 @@ public class ${mode}ListWriter extends AbstractFieldWriter { } @Override - public ${capName}Writer ${lowerName}(int scale, int precision) { - final MajorType ${upperName}_TYPE = Types.withScaleAndPrecision(MinorType.${upperName}, DataMode.REPEATED, scale, precision); + public ${capName}Writer ${lowerName}(int precision, int scale) { + final MajorType ${upperName}_TYPE = Types.withPrecisionAndScale(MinorType.${upperName}, DataMode.REPEATED, precision, scale); <#else> private static final MajorType ${upperName}_TYPE = Types.repeated(MinorType.${upperName}); diff --git a/exec/vector/src/main/codegen/templates/MapWriters.java b/exec/vector/src/main/codegen/templates/MapWriters.java index 8f215a3..f6fda90 100644 --- a/exec/vector/src/main/codegen/templates/MapWriters.java +++ b/exec/vector/src/main/codegen/templates/MapWriters.java @@ -207,8 +207,8 @@ public class ${mode}MapWriter extends AbstractFieldWriter { } @Override - public ${minor.class}Writer ${lowerName}(String name, int scale, int precision) { - final MajorType ${upperName}_TYPE = Types.withScaleAndPrecision(MinorType.${upperName}, DataMode.OPTIONAL, scale, precision); + public ${minor.class}Writer ${lowerName}(String name, int precision, int scale) { + final MajorType ${upperName}_TYPE = Types.withPrecisionAndScale(MinorType.${upperName}, DataMode.OPTIONAL, precision, scale); <#else> private static final MajorType ${upperName}_TYPE = Types.optional(MinorType.${upperName}); @Override diff --git a/exec/vector/src/main/codegen/templates/NullReader.java b/exec/vector/src/main/codegen/templates/NullReader.java index 28d48b7..f67ff22 100644 --- a/exec/vector/src/main/codegen/templates/NullReader.java +++ b/exec/vector/src/main/codegen/templates/NullReader.java @@ -72,7 +72,7 @@ public class NullReader extends AbstractBaseReader implements FieldReader { public void copyAsValue(${minor.class}Writer writer) {} <#if minor.class == "VarDecimal"> - public void copyAsField(String name, ${minor.class}Writer writer, int scale, int precision) {} + public void copyAsField(String name, ${minor.class}Writer writer, int precision, int scale) {} <#else> public void copyAsField(String name, ${minor.class}Writer writer) {} </#if> diff --git a/exec/vector/src/main/codegen/templates/RepeatedValueVectors.java b/exec/vector/src/main/codegen/templates/RepeatedValueVectors.java index 037332f..186c9f8 100644 --- a/exec/vector/src/main/codegen/templates/RepeatedValueVectors.java +++ b/exec/vector/src/main/codegen/templates/RepeatedValueVectors.java @@ -58,9 +58,10 @@ public final class Repeated${minor.class}Vector extends BaseRepeatedValueVector public Repeated${minor.class}Vector(MaterializedField field, BufferAllocator allocator) { super(field, allocator); MajorType majorType = field.getType(); - addOrGetVector(VectorDescriptor.create(Types.withScaleAndPrecision( + addOrGetVector(VectorDescriptor.create(Types.withPrecisionAndScale( majorType.getMinorType(), DataMode.REQUIRED, - majorType.getScale(), majorType.getPrecision()))); + majorType.getPrecision(), + majorType.getScale()))); } @Override diff --git a/exec/vector/src/main/codegen/templates/UnionListWriter.java b/exec/vector/src/main/codegen/templates/UnionListWriter.java index 4ea907d..a9ff5e7 100644 --- a/exec/vector/src/main/codegen/templates/UnionListWriter.java +++ b/exec/vector/src/main/codegen/templates/UnionListWriter.java @@ -83,12 +83,12 @@ public class UnionListWriter extends AbstractFieldWriter { <#if minor.class == "VarDecimal"> @Override - public ${name}Writer <#if uncappedName == "int">integer<#else>${uncappedName}</#if>(String name, int scale, int precision) { + public ${name}Writer <#if uncappedName == "int">integer<#else>${uncappedName}</#if>(String name, int precision, int scale) { assert inMap; final int nextOffset = offsets.getAccessor().get(idx() + 1); vector.getMutator().setNotNull(idx()); writer.setPosition(nextOffset); - ${name}Writer ${uncappedName}Writer = writer.${uncappedName}(name, scale, precision); + ${name}Writer ${uncappedName}Writer = writer.${uncappedName}(name, precision, scale); return ${uncappedName}Writer; } <#else> diff --git a/exec/vector/src/main/codegen/templates/UnionWriter.java b/exec/vector/src/main/codegen/templates/UnionWriter.java index 13c093a..3e62415 100644 --- a/exec/vector/src/main/codegen/templates/UnionWriter.java +++ b/exec/vector/src/main/codegen/templates/UnionWriter.java @@ -183,17 +183,17 @@ public class UnionWriter extends AbstractFieldWriter implements FieldWriter { <#assign capName = minor.class?cap_first /> <#if minor.class == "VarDecimal"> @Override - public ${capName}Writer ${lowerName}(String name, int scale, int precision) { + public ${capName}Writer ${lowerName}(String name, int precision, int scale) { data.getMutator().setType(idx(), MinorType.MAP); getMapWriter().setPosition(idx()); - return getMapWriter().${lowerName}(name, scale, precision); + return getMapWriter().${lowerName}(name, precision, scale); } @Override - public ${capName}Writer ${lowerName}(int scale, int precision) { + public ${capName}Writer ${lowerName}(int precision, int scale) { data.getMutator().setType(idx(), MinorType.LIST); getListWriter().setPosition(idx()); - return getListWriter().${lowerName}(scale, precision); + return getListWriter().${lowerName}(precision, scale); } <#else> @Override diff --git a/exec/vector/src/main/java/org/apache/drill/exec/vector/ValueHolderHelper.java b/exec/vector/src/main/java/org/apache/drill/exec/vector/ValueHolderHelper.java index 15a2a2d..1f5abd5 100644 --- a/exec/vector/src/main/java/org/apache/drill/exec/vector/ValueHolderHelper.java +++ b/exec/vector/src/main/java/org/apache/drill/exec/vector/ValueHolderHelper.java @@ -150,7 +150,7 @@ public class ValueHolderHelper { return dch; } - public static Decimal9Holder getDecimal9Holder(int decimal, int scale, int precision) { + public static Decimal9Holder getDecimal9Holder(int decimal, int precision, int scale) { Decimal9Holder dch = new Decimal9Holder(); dch.scale = scale; @@ -160,7 +160,7 @@ public class ValueHolderHelper { return dch; } - public static Decimal18Holder getDecimal18Holder(long decimal, int scale, int precision) { + public static Decimal18Holder getDecimal18Holder(long decimal, int precision, int scale) { Decimal18Holder dch = new Decimal18Holder(); dch.scale = scale; diff --git a/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/impl/MapOrListWriterImpl.java b/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/impl/MapOrListWriterImpl.java index 937df86..2cdaead 100644 --- a/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/impl/MapOrListWriterImpl.java +++ b/exec/vector/src/main/java/org/apache/drill/exec/vector/complex/impl/MapOrListWriterImpl.java @@ -229,8 +229,8 @@ public class MapOrListWriterImpl implements MapOrListWriter { } @Override - public VarDecimalWriter varDecimal(String name, int scale, int precision) { - return (map != null) ? map.varDecimal(name, scale, precision) : list.varDecimal(scale, precision); + public VarDecimalWriter varDecimal(String name, int precision, int scale) { + return (map != null) ? map.varDecimal(name, precision, scale) : list.varDecimal(precision, scale); } @Override
