public Type primitive()

in parquet/src/main/java/org/apache/iceberg/parquet/ParquetVariantUtil.java [421:493]


    public Type primitive(VariantPrimitive<?> primitive) {
      switch (primitive.type()) {
        case NULL:
          return null;
        case BOOLEAN_TRUE:
        case BOOLEAN_FALSE:
          return shreddedPrimitive(PrimitiveType.PrimitiveTypeName.BOOLEAN);
        case INT8:
          return shreddedPrimitive(
              PrimitiveType.PrimitiveTypeName.INT32, LogicalTypeAnnotation.intType(8));
        case INT16:
          return shreddedPrimitive(
              PrimitiveType.PrimitiveTypeName.INT32, LogicalTypeAnnotation.intType(16));
        case INT32:
          return shreddedPrimitive(PrimitiveType.PrimitiveTypeName.INT32);
        case INT64:
          return shreddedPrimitive(PrimitiveType.PrimitiveTypeName.INT64);
        case FLOAT:
          return shreddedPrimitive(PrimitiveType.PrimitiveTypeName.FLOAT);
        case DOUBLE:
          return shreddedPrimitive(PrimitiveType.PrimitiveTypeName.DOUBLE);
        case DECIMAL4:
          BigDecimal decimal4 = (BigDecimal) primitive.get();
          return shreddedPrimitive(
              PrimitiveType.PrimitiveTypeName.INT32,
              LogicalTypeAnnotation.decimalType(decimal4.scale(), 9));
        case DECIMAL8:
          BigDecimal decimal8 = (BigDecimal) primitive.get();
          return shreddedPrimitive(
              PrimitiveType.PrimitiveTypeName.INT64,
              LogicalTypeAnnotation.decimalType(decimal8.scale(), 18));
        case DECIMAL16:
          BigDecimal decimal16 = (BigDecimal) primitive.get();
          return shreddedPrimitive(
              PrimitiveType.PrimitiveTypeName.BINARY,
              LogicalTypeAnnotation.decimalType(decimal16.scale(), 38));
        case DATE:
          return shreddedPrimitive(
              PrimitiveType.PrimitiveTypeName.INT32, LogicalTypeAnnotation.dateType());
        case TIMESTAMPTZ:
          return shreddedPrimitive(
              PrimitiveType.PrimitiveTypeName.INT64,
              LogicalTypeAnnotation.timestampType(true, LogicalTypeAnnotation.TimeUnit.MICROS));
        case TIMESTAMPNTZ:
          return shreddedPrimitive(
              PrimitiveType.PrimitiveTypeName.INT64,
              LogicalTypeAnnotation.timestampType(false, LogicalTypeAnnotation.TimeUnit.MICROS));
        case BINARY:
          return shreddedPrimitive(PrimitiveType.PrimitiveTypeName.BINARY);
        case STRING:
          return shreddedPrimitive(
              PrimitiveType.PrimitiveTypeName.BINARY, LogicalTypeAnnotation.stringType());
        case TIME:
          return shreddedPrimitive(
              PrimitiveType.PrimitiveTypeName.INT64,
              LogicalTypeAnnotation.timeType(false, LogicalTypeAnnotation.TimeUnit.MICROS));
        case TIMESTAMPTZ_NANOS:
          return shreddedPrimitive(
              PrimitiveType.PrimitiveTypeName.INT64,
              LogicalTypeAnnotation.timestampType(true, LogicalTypeAnnotation.TimeUnit.NANOS));
        case TIMESTAMPNTZ_NANOS:
          return shreddedPrimitive(
              PrimitiveType.PrimitiveTypeName.INT64,
              LogicalTypeAnnotation.timestampType(false, LogicalTypeAnnotation.TimeUnit.NANOS));
        case UUID:
          return shreddedPrimitive(
              PrimitiveType.PrimitiveTypeName.FIXED_LEN_BYTE_ARRAY,
              LogicalTypeAnnotation.uuidType(),
              16);
      }

      throw new UnsupportedOperationException("Unsupported shredding type: " + primitive.type());
    }