@@ -152,7 +152,7 @@ PartitionTransformsEqual(IcebergPartitionSpec * spec, List *partitionTransforms)
152152 * ErrorIfColumnEverUsedInIcebergPartitionSpec(). Still, let's be
153153 * defensive and also check source field ids.
154154 */
155- if (specField -> source_id != transform -> sourceField . id )
155+ if (specField -> source_id != transform -> sourceField -> id )
156156 return false;
157157
158158 /*
@@ -162,7 +162,7 @@ PartitionTransformsEqual(IcebergPartitionSpec * spec, List *partitionTransforms)
162162 * Iceberg does here:
163163 * https://github.com/apache/iceberg/blob/8b55ac834015ce664f879ecfe1e80a941a994420/api/src/main/java/org/apache/iceberg/PartitionSpec.java#L239-L259
164164 */
165- if (strcasecmp (specField -> name , transform -> specField . name ) != 0 )
165+ if (strcasecmp (specField -> name , transform -> specField -> name ) != 0 )
166166 {
167167 return false;
168168 }
@@ -251,7 +251,7 @@ GetPartitionTransformFromSpecField(Oid relationId, IcebergPartitionSpecField * s
251251{
252252 IcebergPartitionTransform * transform = palloc0 (sizeof (IcebergPartitionTransform ));
253253
254- transform -> specField = * specField ;
254+ transform -> specField = DeepCopyIcebergPartitionSpecField ( specField ) ;
255255
256256 transform -> attnum =
257257 GetAttributeForFieldId (relationId , specField -> source_id );
@@ -260,23 +260,19 @@ GetPartitionTransformFromSpecField(Oid relationId, IcebergPartitionSpecField * s
260260
261261 if (IsInternalIcebergTable (relationId ))
262262 {
263- DataFileSchemaField * sourceField = GetRegisteredFieldForAttribute (relationId , transform -> attnum );
264-
265- transform -> sourceField = * sourceField ;
263+ transform -> sourceField = GetRegisteredFieldForAttribute (relationId , transform -> attnum );
266264 }
267265 else
268266 {
269267 Assert (IsExternalIcebergTable (relationId ));
270268
271269 DataFileSchema * schema = GetDataFileSchemaForTable (relationId );
272270
273- DataFileSchemaField * sourceField = GetDataFileSchemaFieldById (schema , specField -> source_id );
274-
275- transform -> sourceField = * sourceField ;
271+ transform -> sourceField = GetDataFileSchemaFieldById (schema , specField -> source_id );
276272 }
277273
278274 /* parse transform name */
279- ParseTransformName (transform -> specField . transform ,
275+ ParseTransformName (transform -> specField -> transform ,
280276 & transform -> parsedTransform .type ,
281277 & transform -> parsedTransform .bucketCount ,
282278 & transform -> parsedTransform .truncateLen );
@@ -415,8 +411,8 @@ ApplyPartitionTransformToTuple(IcebergPartitionTransform * transform, TupleTable
415411{
416412 PartitionField * field = palloc0 (sizeof (PartitionField ));
417413
418- field -> field_name = pstrdup (transform -> specField . name );
419- field -> field_id = transform -> specField . field_id ;
414+ field -> field_name = pstrdup (transform -> specField -> name );
415+ field -> field_id = transform -> specField -> field_id ;
420416
421417 bool isNull = false;
422418 Datum columnValue = slot_getattr (slot , transform -> attnum , & isNull );
@@ -455,7 +451,7 @@ ApplyPartitionTransformToTuple(IcebergPartitionTransform * transform, TupleTable
455451 ereport (ERROR ,
456452 (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
457453 errmsg ("applying transform %s is not yet support " ,
458- transform -> specField . transform )));
454+ transform -> specField -> transform )));
459455 }
460456
461457 field -> value_type = GetTransformResultAvroType (transform );
@@ -479,7 +475,7 @@ ApplyIdentityTransformToColumn(IcebergPartitionTransform * transform, Datum colu
479475 return NULL ;
480476 }
481477
482- return PGIcebergBinarySerializePartitionFieldValue (columnValue , transform -> sourceField . type ,
478+ return PGIcebergBinarySerializePartitionFieldValue (columnValue , transform -> sourceField -> type ,
483479 transform -> pgType , valueSize );
484480}
485481
@@ -840,15 +836,15 @@ ApplyBucketTransformToColumn(IcebergPartitionTransform * transform, Datum column
840836 else if (transform -> pgType .postgresTypeOid == UUIDOID )
841837 {
842838 size_t valueSize = 0 ;
843- unsigned char * value = PGIcebergBinarySerializePartitionFieldValue (columnValue , transform -> sourceField . type ,
839+ unsigned char * value = PGIcebergBinarySerializePartitionFieldValue (columnValue , transform -> sourceField -> type ,
844840 transform -> pgType , & valueSize );
845841
846842 * bucketValue = (MurmurHash3_32_Bytes (value , valueSize ) & INT32_MAX ) % transform -> parsedTransform .bucketCount ;
847843 }
848844 else if (transform -> pgType .postgresTypeOid == NUMERICOID )
849845 {
850846 size_t valueSize = 0 ;
851- unsigned char * value = PGIcebergBinarySerializePartitionFieldValue (columnValue , transform -> sourceField . type ,
847+ unsigned char * value = PGIcebergBinarySerializePartitionFieldValue (columnValue , transform -> sourceField -> type ,
852848 transform -> pgType , & valueSize );
853849
854850 * bucketValue = (MurmurHash3_32_Bytes (value , valueSize ) & INT32_MAX ) % transform -> parsedTransform .bucketCount ;
0 commit comments