@@ -78,17 +78,21 @@ idx_t WriteToFile(IcebergTableInformation &table_info, const IcebergManifestFile
7878 vector<LogicalType> types;
7979
8080 auto ¤t_partition_spec = table_info.table_metadata .GetLatestPartitionSpec ();
81+
8182 {
83+ child_list_t <Value> status_field;
8284 // status: int - 0
8385 names.push_back (" status" );
8486 types.push_back (LogicalType::INTEGER);
85- field_ids.emplace_back (" status" , Value::INTEGER (STATUS));
87+ status_field.emplace_back (" __duckdb_field_id" , Value::INTEGER (STATUS));
88+ status_field.emplace_back (" __duckdb_nullable" , Value::BOOLEAN (false ));
8689
8790 auto field_obj = yyjson_mut_arr_add_obj (doc, fields_arr);
8891 yyjson_mut_obj_add_uint (doc, field_obj, " id" , STATUS);
8992 yyjson_mut_obj_add_strcpy (doc, field_obj, " name" , " status" );
9093 yyjson_mut_obj_add_bool (doc, field_obj, " required" , true );
9194 yyjson_mut_obj_add_strcpy (doc, field_obj, " type" , " int" );
95+ field_ids.emplace_back (" status" , Value::STRUCT (status_field));
9296 }
9397
9498 {
@@ -137,9 +141,12 @@ idx_t WriteToFile(IcebergTableInformation &table_info, const IcebergManifestFile
137141
138142 auto child_fields_arr = yyjson_mut_arr (doc);
139143 {
144+ child_list_t <Value> content_field;
140145 // content: int - 134
141146 children.emplace_back (" content" , LogicalType::INTEGER);
142- data_file_field_ids.emplace_back (" content" , Value::INTEGER (CONTENT));
147+ content_field.emplace_back (" __duckdb_field_id" , Value::INTEGER (CONTENT));
148+ content_field.emplace_back (" __duckdb_nullable" , Value::BOOLEAN (false ));
149+ data_file_field_ids.emplace_back (" content" , Value::STRUCT (content_field));
143150
144151 auto field_obj = yyjson_mut_arr_add_obj (doc, child_fields_arr);
145152 yyjson_mut_obj_add_uint (doc, field_obj, " id" , CONTENT);
@@ -149,9 +156,12 @@ idx_t WriteToFile(IcebergTableInformation &table_info, const IcebergManifestFile
149156 }
150157
151158 {
159+ child_list_t <Value> file_path;
152160 // file_path: string - 100
153161 children.emplace_back (" file_path" , LogicalType::VARCHAR);
154- data_file_field_ids.emplace_back (" file_path" , Value::INTEGER (FILE_PATH));
162+ file_path.emplace_back (" __duckdb_field_id" , Value::INTEGER (FILE_PATH));
163+ file_path.emplace_back (" __duckdb_nullable" , Value::BOOLEAN (false ));
164+ data_file_field_ids.emplace_back (" file_path" , Value::STRUCT (file_path));
155165
156166 auto field_obj = yyjson_mut_arr_add_obj (doc, child_fields_arr);
157167 yyjson_mut_obj_add_uint (doc, field_obj, " id" , FILE_PATH);
@@ -161,9 +171,12 @@ idx_t WriteToFile(IcebergTableInformation &table_info, const IcebergManifestFile
161171 }
162172
163173 {
174+ child_list_t <Value> file_format;
164175 // file_format: string - 101
165176 children.emplace_back (" file_format" , LogicalType::VARCHAR);
166- data_file_field_ids.emplace_back (" file_format" , Value::INTEGER (FILE_FORMAT));
177+ file_format.emplace_back (" __duckdb_field_id" , Value::INTEGER (FILE_FORMAT));
178+ file_format.emplace_back (" __duckdb_nullable" , Value::BOOLEAN (false ));
179+ data_file_field_ids.emplace_back (" file_format" , Value::STRUCT (file_format));
167180
168181 auto field_obj = yyjson_mut_arr_add_obj (doc, child_fields_arr);
169182 yyjson_mut_obj_add_uint (doc, field_obj, " id" , FILE_FORMAT);
@@ -173,9 +186,12 @@ idx_t WriteToFile(IcebergTableInformation &table_info, const IcebergManifestFile
173186 }
174187
175188 {
189+ child_list_t <Value> partition;
176190 // partition: struct(...) - 102
177191 children.emplace_back (" partition" , PartitionStructType (table_info, manifest_file));
178- data_file_field_ids.emplace_back (" partition" , Value::INTEGER (PARTITION));
192+ partition.emplace_back (" __duckdb_field_id" , Value::INTEGER (PARTITION));
193+ partition.emplace_back (" __duckdb_nullable" , Value::BOOLEAN (false ));
194+ data_file_field_ids.emplace_back (" partition" , Value::STRUCT (partition));
179195
180196 auto field_obj = yyjson_mut_arr_add_obj (doc, child_fields_arr);
181197 yyjson_mut_obj_add_uint (doc, field_obj, " id" , PARTITION);
@@ -190,9 +206,12 @@ idx_t WriteToFile(IcebergTableInformation &table_info, const IcebergManifestFile
190206 }
191207
192208 {
209+ child_list_t <Value> record_count;
193210 // record_count: long - 103
194211 children.emplace_back (" record_count" , LogicalType::BIGINT);
195- data_file_field_ids.emplace_back (" record_count" , Value::INTEGER (RECORD_COUNT));
212+ record_count.emplace_back (" __duckdb_field_id" , Value::INTEGER (RECORD_COUNT));
213+ record_count.emplace_back (" __duckdb_nullable" , Value::BOOLEAN (false ));
214+ data_file_field_ids.emplace_back (" record_count" , Value::STRUCT (record_count));
196215
197216 auto field_obj = yyjson_mut_arr_add_obj (doc, child_fields_arr);
198217 yyjson_mut_obj_add_uint (doc, field_obj, " id" , RECORD_COUNT);
@@ -202,9 +221,12 @@ idx_t WriteToFile(IcebergTableInformation &table_info, const IcebergManifestFile
202221 }
203222
204223 {
224+ child_list_t <Value> file_size_in_bytes;
205225 // file_size_in_bytes: long - 104
206226 children.emplace_back (" file_size_in_bytes" , LogicalType::BIGINT);
207- data_file_field_ids.emplace_back (" file_size_in_bytes" , Value::INTEGER (FILE_SIZE_IN_BYTES));
227+ file_size_in_bytes.emplace_back (" __duckdb_field_id" , Value::INTEGER (FILE_SIZE_IN_BYTES));
228+ file_size_in_bytes.emplace_back (" __duckdb_nullable" , Value::BOOLEAN (false ));
229+ data_file_field_ids.emplace_back (" file_size_in_bytes" , Value::STRUCT (file_size_in_bytes));
208230
209231 auto field_obj = yyjson_mut_arr_add_obj (doc, child_fields_arr);
210232 yyjson_mut_obj_add_uint (doc, field_obj, " id" , FILE_SIZE_IN_BYTES);
@@ -226,6 +248,7 @@ idx_t WriteToFile(IcebergTableInformation &table_info, const IcebergManifestFile
226248 names.push_back (" data_file" );
227249 types.push_back (LogicalType::STRUCT (std::move (children)));
228250 data_file_field_ids.emplace_back (" __duckdb_field_id" , Value::INTEGER (DATA_FILE));
251+ data_file_field_ids.emplace_back (" __duckdb_nullable" , Value::BOOLEAN (false ));
229252 field_ids.emplace_back (" data_file" , Value::STRUCT (data_file_field_ids));
230253
231254 auto field_obj = yyjson_mut_arr_add_obj (doc, fields_arr);
0 commit comments