This is an automated email from the ASF dual-hosted git repository.

michaelsmith pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/impala.git

commit d91cdb0cec6eb024a006c42649b2f864745e8c86
Author: Michael Smith <[email protected]>
AuthorDate: Wed Apr 19 11:56:16 2023 -0700

    IMPALA-12077: Remove deprecated Avro methods
    
    Switches Avro methods deprecated in Avro 1.8 to new alternatives.
    
    Change-Id: I8c01886774eb4ca5964a82c2fa568d7c4354c70c
    Reviewed-on: http://gerrit.cloudera.org:8080/19772
    Reviewed-by: Impala Public Jenkins <[email protected]>
    Tested-by: Impala Public Jenkins <[email protected]>
---
 .../java/org/apache/impala/util/AvroSchemaConverter.java | 12 +++---------
 .../java/org/apache/impala/util/AvroSchemaParser.java    | 16 ++++++++--------
 .../apache/impala/infra/tableflattener/FileMigrator.java |  2 +-
 .../impala/infra/tableflattener/SchemaFlattener.java     |  2 +-
 .../apache/impala/infra/tableflattener/SchemaUtil.java   |  6 ++----
 5 files changed, 15 insertions(+), 23 deletions(-)

diff --git a/fe/src/main/java/org/apache/impala/util/AvroSchemaConverter.java 
b/fe/src/main/java/org/apache/impala/util/AvroSchemaConverter.java
index 31022260b..efe62d366 100644
--- a/fe/src/main/java/org/apache/impala/util/AvroSchemaConverter.java
+++ b/fe/src/main/java/org/apache/impala/util/AvroSchemaConverter.java
@@ -21,9 +21,6 @@ import java.util.List;
 
 import org.apache.avro.Schema;
 import org.apache.hadoop.hive.metastore.api.FieldSchema;
-import org.codehaus.jackson.JsonNode;
-import org.codehaus.jackson.node.IntNode;
-import org.codehaus.jackson.node.JsonNodeFactory;
 
 import org.apache.impala.analysis.ColumnDef;
 import org.apache.impala.catalog.ArrayType;
@@ -105,7 +102,6 @@ public class AvroSchemaConverter {
   private Schema convertFieldSchemasImpl(
       List<FieldSchema> fieldSchemas, String schemaName) {
     List<Schema.Field> avroFields = Lists.newArrayList();
-    JsonNode nullDefault = JsonNodeFactory.instance.nullNode();
     for (FieldSchema fs: fieldSchemas) {
       Type impalaType = Type.parseColumnType(fs.getType());
       if (impalaType == null) {
@@ -113,7 +109,7 @@ public class AvroSchemaConverter {
             fs.getType() + " is not a suppported Impala type");
       }
       final Schema.Field avroField = new Schema.Field(fs.getName(),
-          createAvroSchema(impalaType), fs.getComment(), nullDefault);
+          createAvroSchema(impalaType), fs.getComment(), Schema.NULL_VALUE);
       avroFields.add(avroField);
     }
     return createAvroRecord(avroFields, schemaName);
@@ -178,10 +174,8 @@ public class AvroSchemaConverter {
     Schema decimalSchema = Schema.create(Schema.Type.BYTES);
     decimalSchema.addProp(AVRO_LOGICAL_TYPE, AVRO_DECIMAL_TYPE);
     // precision and scale must be integer values
-    decimalSchema.addProp(PRECISION_PROP_NAME,
-        new IntNode(impalaDecimalType.decimalPrecision()));
-    decimalSchema.addProp(SCALE_PROP_NAME,
-        new IntNode(impalaDecimalType.decimalScale()));
+    decimalSchema.addProp(PRECISION_PROP_NAME, 
impalaDecimalType.decimalPrecision());
+    decimalSchema.addProp(SCALE_PROP_NAME, impalaDecimalType.decimalScale());
     return decimalSchema;
   }
 
diff --git a/fe/src/main/java/org/apache/impala/util/AvroSchemaParser.java 
b/fe/src/main/java/org/apache/impala/util/AvroSchemaParser.java
index a214664f7..c661c732f 100644
--- a/fe/src/main/java/org/apache/impala/util/AvroSchemaParser.java
+++ b/fe/src/main/java/org/apache/impala/util/AvroSchemaParser.java
@@ -44,7 +44,6 @@ import org.apache.impala.catalog.StructField;
 import org.apache.impala.catalog.StructType;
 import org.apache.impala.catalog.Type;
 import org.apache.impala.common.AnalysisException;
-import org.codehaus.jackson.JsonNode;
 
 /**
  * Utility class used to parse Avro schema. Checks that the schema is valid
@@ -201,15 +200,16 @@ public class AvroSchemaParser {
    * Throws a SchemaParseException if the property doesn't parse to a
    * natural number.
    */
-  private static Integer getDecimalProp(Schema schema, String propName)
-      throws SchemaParseException {
-    JsonNode node = schema.getJsonProp(propName);
+  private static Integer getDecimalProp(Schema schema, String propName) {
+    Object node = schema.getObjectProp(propName);
     if (node == null) return null;
-    int propValue = node.getValueAsInt(-1);
-    if (propValue < 0) {
+    Integer value = -1;
+    if (node instanceof Integer) value = (Integer) node;
+    if (node instanceof Double) value = ((Double) node).intValue();
+    if (value < 0) {
       throw new SchemaParseException(String.format("Invalid decimal '%s' " +
-          "property value: %s", propName, node.getValueAsText()));
+          "property value: %s", propName, node));
     }
-    return propValue;
+    return value;
   }
 }
diff --git 
a/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/FileMigrator.java
 
b/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/FileMigrator.java
index 88d52fba3..9ca9ecbbc 100644
--- 
a/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/FileMigrator.java
+++ 
b/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/FileMigrator.java
@@ -70,7 +70,7 @@ public class FileMigrator {
       if (SchemaUtil.recordHasField(srcRecord, field.name())) {
         value = srcRecord.get(field.name());
       } else {
-        Preconditions.checkNotNull(field.defaultValue());
+        Preconditions.checkNotNull(field.defaultVal());
         value = GenericData.get().getDefaultValue(field);
       }
       writeValue(value, field.schema(), field.name(), dstRecord, dstDataset,
diff --git 
a/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaFlattener.java
 
b/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaFlattener.java
index cc1897762..535626de1 100644
--- 
a/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaFlattener.java
+++ 
b/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaFlattener.java
@@ -62,7 +62,7 @@ public class SchemaFlattener {
       Schema fieldSchema = field.schema();
       if (SchemaUtil.isSimpleType(fieldSchema)) {
         dstSchemaFields.add(SchemaUtil.createField(fieldNamePrefix + 
field.name(),
-            fieldSchema, field.doc(), field.defaultValue()));
+            fieldSchema, field.doc(), field.defaultVal()));
         continue;
       }
       if (SchemaUtil.isNullable(fieldSchema)) {
diff --git 
a/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaUtil.java
 
b/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaUtil.java
index c46393d4f..2699242f5 100644
--- 
a/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaUtil.java
+++ 
b/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaUtil.java
@@ -24,7 +24,6 @@ import org.apache.avro.Schema;
 import org.apache.avro.Schema.Field;
 import org.apache.avro.Schema.Type;
 import org.apache.avro.generic.GenericRecord;
-import org.codehaus.jackson.JsonNode;
 
 import java.util.Map;
 
@@ -43,7 +42,7 @@ public class SchemaUtil {
     return createField(name, type, null, null);
   }
 
-  static Field createField(String name, Type type, String doc, JsonNode 
defaultValue) {
+  static Field createField(String name, Type type, String doc, Object 
defaultValue) {
     return new Field(name, Schema.createUnion(
         Schema.create(Type.NULL), Schema.create(type)), doc, defaultValue);
   }
@@ -52,8 +51,7 @@ public class SchemaUtil {
     return createField(name, schema, null, null);
   }
 
-  static Field createField(String name, Schema schema, String doc,
-      JsonNode defaultValue) {
+  static Field createField(String name, Schema schema, String doc, Object 
defaultValue) {
     Preconditions.checkState(!schemaHasNesting(schema));
     if (schema.getType() == Type.UNION) {
       return new Field(name, Schema.createUnion(schema.getTypes()), doc, 
defaultValue);

Reply via email to