Another change that accompanied the recent filter changes was a change in the way nc_def_var_deflate() behaves when called more than once for the same var before enddef.
It used to be that nc_def_var_deflate() could be called repeatedly, and the settings could be changed, until enddef.
Now, the first call to nc_def_var_deflate() sets the deflate settings. Subsequent calls are ignored.
This was never tested in netCDF tests, but it does come up in PIO tests, so I'm sorry I didn't notice this before - I've been spending my time on the GFS weather model instead. ;-)
I'm putting together a test now to demonstrate the problem. @WardF if there is going to soon be a new release, with a reverse of some of the other changes in this code, then we probably want to get this fix in as well before that.
PIO counts on this behavior,. and its not hard to see how other programs may as well, especially fortran codes, which may set all vars to a default deflate, and then allow individual vars to be set to different levels as needed. This worked before, but with 4.7.4 all vars will receive the default deflate settings, and subsequent changes will be ignored.
Another change that accompanied the recent filter changes was a change in the way nc_def_var_deflate() behaves when called more than once for the same var before enddef.
It used to be that nc_def_var_deflate() could be called repeatedly, and the settings could be changed, until enddef.
Now, the first call to nc_def_var_deflate() sets the deflate settings. Subsequent calls are ignored.
This was never tested in netCDF tests, but it does come up in PIO tests, so I'm sorry I didn't notice this before - I've been spending my time on the GFS weather model instead. ;-)
I'm putting together a test now to demonstrate the problem. @WardF if there is going to soon be a new release, with a reverse of some of the other changes in this code, then we probably want to get this fix in as well before that.
PIO counts on this behavior,. and its not hard to see how other programs may as well, especially fortran codes, which may set all vars to a default deflate, and then allow individual vars to be set to different levels as needed. This worked before, but with 4.7.4 all vars will receive the default deflate settings, and subsequent changes will be ignored.