@@ -296,11 +296,14 @@ int Concatenator::create_partition_keys(GrpInfo &grp)
296296 seq.is_key_seq = true ;
297297 seq.is_key_cnt = false ;
298298 seq.name = part_key_base + " .key.seq" ;
299- #ifndef DELAY_KEY_DSET_CREATION
300- /* delay creation until writing it in write_partition_key_datasets() */
301- herr_t err = create_dataset (grp.id , seq, true );
302- if (err < 0 ) RETURN_ERROR (" create_dataset" , " key.seq" )
299+ #ifdef DELAY_KEY_DSET_CREATION
300+ if (seq.global_dims [0 ] == 0 )
303301#endif
302+ {
303+ /* delay creation until writing it in write_partition_key_datasets() */
304+ herr_t err = create_dataset (grp.id , seq, false );
305+ if (err < 0 ) RETURN_ERROR (" create_dataset" , " key.seq" )
306+ }
304307 grp.seq_dset = &seq;
305308 total_num_datasets++;
306309
@@ -310,11 +313,14 @@ int Concatenator::create_partition_keys(GrpInfo &grp)
310313 cnt.is_key_cnt = true ;
311314 cnt.is_key_seq = false ;
312315 cnt.name = part_key_base + " .key.cnt" ;
313- #ifndef DELAY_KEY_DSET_CREATION
314- /* delay creation until writing it in write_partition_key_datasets() */
315- err = create_dataset (grp.id , cnt, true );
316- if (err < 0 ) RETURN_ERROR (" create_dataset" , " key.cnt" )
316+ #ifdef DELAY_KEY_DSET_CREATION
317+ if (cnt.global_dims [0 ] == 0 )
317318#endif
319+ {
320+ /* delay creation until writing it in write_partition_key_datasets() */
321+ herr_t err = create_dataset (grp.id , cnt, !set_extent);
322+ if (err < 0 ) RETURN_ERROR (" create_dataset" , " key.cnt" )
323+ }
318324 grp.cnt_dset = &cnt;
319325 total_num_datasets++;
320326
@@ -950,8 +956,12 @@ int Concatenator::create_dataset(hid_t group_id,
950956 if (err < 0 ) HANDLE_ERROR (" H5Pset_deflate" )
951957 }
952958
953- /* HDF5 default fill value is 0 */
954- if (!toFill) {
959+ if (toFill) {
960+ /* HDF5 default fill value is 0, skip call H5Pset_fill_value() */
961+ err = H5Pset_fill_time (dcpl_id, H5D_FILL_TIME_ALLOC);
962+ if (err < 0 ) HANDLE_ERROR (" H5Pset_fill_time" )
963+ }
964+ else {
955965 /* Never fill in the chunk in advance. */
956966 err = H5Pset_fill_time (dcpl_id, H5D_FILL_TIME_NEVER);
957967 if (err < 0 ) HANDLE_ERROR (" H5Pset_fill_time" )
0 commit comments