rdblue commented on code in PR #11904:
URL: https://github.com/apache/iceberg/pull/11904#discussion_r1927618131


##########
parquet/src/main/java/org/apache/iceberg/data/parquet/BaseParquetWriter.java:
##########
@@ -50,6 +54,32 @@ protected ParquetValueWriter<T> createWriter(MessageType 
type) {
   protected abstract ParquetValueWriters.StructWriter<T> createStructWriter(
       List<ParquetValueWriter<?>> writers);
 
+  protected ParquetValueWriter<?> fixedWriter(ColumnDescriptor desc) {
+    return new FixedWriter(desc);
+  }
+
+  protected ParquetValueWriters.PrimitiveWriter<?> dateWriter(ColumnDescriptor 
desc) {
+    return new DateWriter(desc);
+  }
+
+  protected ParquetValueWriters.PrimitiveWriter<?> timeWriter(ColumnDescriptor 
desc) {
+    return new TimeWriter(desc);
+  }
+
+  protected ParquetValueWriters.PrimitiveWriter<?> timestampWriter(
+      ColumnDescriptor desc, boolean isAdjustedToUTC) {
+    if (isAdjustedToUTC) {
+      return new TimestamptzWriter(desc);
+    } else {
+      return new TimestampWriter(desc);
+    }
+  }
+
+  protected ParquetValueWriters.PrimitiveWriter<?> uuidWriter(ColumnDescriptor 
desc) {
+    // Use primitive-type writer; no special writer needed.

Review Comment:
   Okay, I did some digging and it looks like this behavior was accidentally 
introduced when moving to the type annotation visitor 
(https://github.com/apache/iceberg/commit/1d13a10d4c8a1174083eb81373310b8499f84f44).
 Before that point, UUID was not supported but after that it would fall through 
to the primitive type and return a writer for bytes.
   
   The problem is that this conflicts with the representation used by the Avro 
generic object model: 
https://github.com/apache/iceberg/blob/main/core/src/main/java/org/apache/iceberg/avro/ValueReaders.java#L108-L110
   
   I think this change is the right choice because the object models should 
match and using UUID for this is well-established in the Avro implementation 
and the generic random data generator.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org
For additional commands, e-mail: issues-h...@iceberg.apache.org

Reply via email to