mirror of
https://github.com/Unidata/netcdf-c.git
synced 2025-02-05 16:20:10 +08:00
fixed problem with scalar compact
This commit is contained in:
parent
52e3b4659f
commit
418e428a05
@ -1004,23 +1004,6 @@ var_create_dataset(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var, nc_bool_t write_dimid
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set the var storage to contiguous, compact, or chunked. */
|
|
||||||
if (var->contiguous)
|
|
||||||
{
|
|
||||||
if (H5Pset_layout(plistid, H5D_CONTIGUOUS) < 0)
|
|
||||||
BAIL(NC_EHDFERR);
|
|
||||||
}
|
|
||||||
else if (var->compact)
|
|
||||||
{
|
|
||||||
if (H5Pset_layout(plistid, H5D_COMPACT) < 0)
|
|
||||||
BAIL(NC_EHDFERR);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (H5Pset_chunk(plistid, var->ndims, chunksize) < 0)
|
|
||||||
BAIL(NC_EHDFERR);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Create the dataspace. */
|
/* Create the dataspace. */
|
||||||
if ((spaceid = H5Screate_simple(var->ndims, dimsize, maxdimsize)) < 0)
|
if ((spaceid = H5Screate_simple(var->ndims, dimsize, maxdimsize)) < 0)
|
||||||
BAIL(NC_EHDFERR);
|
BAIL(NC_EHDFERR);
|
||||||
@ -1031,6 +1014,25 @@ var_create_dataset(NC_GRP_INFO_T *grp, NC_VAR_INFO_T *var, nc_bool_t write_dimid
|
|||||||
BAIL(NC_EHDFERR);
|
BAIL(NC_EHDFERR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set the var storage to contiguous, compact, or chunked. Don't
|
||||||
|
* try to set chunking for scalar vars, they will default to
|
||||||
|
* contiguous if not set to compact. */
|
||||||
|
if (var->contiguous)
|
||||||
|
{
|
||||||
|
if (H5Pset_layout(plistid, H5D_CONTIGUOUS) < 0)
|
||||||
|
BAIL(NC_EHDFERR);
|
||||||
|
}
|
||||||
|
else if (var->compact)
|
||||||
|
{
|
||||||
|
if (H5Pset_layout(plistid, H5D_COMPACT) < 0)
|
||||||
|
BAIL(NC_EHDFERR);
|
||||||
|
}
|
||||||
|
else if (var->ndims)
|
||||||
|
{
|
||||||
|
if (H5Pset_chunk(plistid, var->ndims, chunksize) < 0)
|
||||||
|
BAIL(NC_EHDFERR);
|
||||||
|
}
|
||||||
|
|
||||||
/* Turn on creation order tracking. */
|
/* Turn on creation order tracking. */
|
||||||
if (H5Pset_attr_creation_order(plistid, H5P_CRT_ORDER_TRACKED|
|
if (H5Pset_attr_creation_order(plistid, H5P_CRT_ORDER_TRACKED|
|
||||||
H5P_CRT_ORDER_INDEXED) < 0)
|
H5P_CRT_ORDER_INDEXED) < 0)
|
||||||
|
@ -234,7 +234,6 @@ main(int argc, char **argv)
|
|||||||
int data = TEST_VAL_42;
|
int data = TEST_VAL_42;
|
||||||
|
|
||||||
/* Create a file with one var which is compact scalar. */
|
/* Create a file with one var which is compact scalar. */
|
||||||
nc_set_log_level(3);
|
|
||||||
if (nc_create(FILE_NAME, NC_NETCDF4|NC_CLOBBER, &ncid)) ERR;
|
if (nc_create(FILE_NAME, NC_NETCDF4|NC_CLOBBER, &ncid)) ERR;
|
||||||
|
|
||||||
/* Define a scalar. Scalars can also be compact. */
|
/* Define a scalar. Scalars can also be compact. */
|
||||||
@ -255,67 +254,66 @@ main(int argc, char **argv)
|
|||||||
if (nc_inq(ncid, &ndims, &nvars, NULL, NULL)) ERR;
|
if (nc_inq(ncid, &ndims, &nvars, NULL, NULL)) ERR;
|
||||||
if (ndims != 0 || nvars != 1) ERR;
|
if (ndims != 0 || nvars != 1) ERR;
|
||||||
if (nc_inq_var_chunking(ncid, 0, &storage_in, NULL)) ERR;
|
if (nc_inq_var_chunking(ncid, 0, &storage_in, NULL)) ERR;
|
||||||
/* if (storage_in != NC_COMPACT) ERR; */
|
if (storage_in != NC_COMPACT) ERR;
|
||||||
if (nc_close(ncid)) ERR;
|
if (nc_close(ncid)) ERR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SUMMARIZE_ERR;
|
SUMMARIZE_ERR;
|
||||||
/* printf("**** testing compact storage..."); */
|
printf("**** testing compact storage...");
|
||||||
/* { */
|
{
|
||||||
/* int ncid, dimid[NDIM2], varid, varid2, varid3; */
|
int ncid, dimid[NDIM2], varid, varid2, varid3;
|
||||||
/* int data[XDIM_LEN]; */
|
int data[XDIM_LEN];
|
||||||
/* int storage_in; */
|
int storage_in;
|
||||||
/* int x; */
|
int x;
|
||||||
|
|
||||||
/* /\* Create some data. *\/ */
|
/* Create some data. */
|
||||||
/* for (x = 0; x < XDIM_LEN; x++) */
|
for (x = 0; x < XDIM_LEN; x++)
|
||||||
/* data[x] = x; */
|
data[x] = x;
|
||||||
|
|
||||||
/* /\* Create a file with one var with compact storage. *\/ */
|
/* Create a file with one var with compact storage. */
|
||||||
/* if (nc_create(FILE_NAME, NC_NETCDF4|NC_CLOBBER, &ncid)) ERR; */
|
if (nc_create(FILE_NAME, NC_NETCDF4|NC_CLOBBER, &ncid)) ERR;
|
||||||
|
|
||||||
/* /\* Define dims. *\/ */
|
/* Define dims. */
|
||||||
/* if (nc_def_dim(ncid, X_NAME, XDIM_LEN, &dimid[0])) ERR; */
|
if (nc_def_dim(ncid, X_NAME, XDIM_LEN, &dimid[0])) ERR;
|
||||||
/* if (nc_def_dim(ncid, Z_NAME, ZDIM_LEN, &dimid[1])) ERR; */
|
if (nc_def_dim(ncid, Z_NAME, ZDIM_LEN, &dimid[1])) ERR;
|
||||||
|
|
||||||
/* /\* Define vars1 to be compact. *\/ */
|
/* Define vars1 to be compact. */
|
||||||
/* if (nc_def_var(ncid, Y_NAME, NC_INT, 1, dimid, &varid)) ERR; */
|
if (nc_def_var(ncid, Y_NAME, NC_INT, 1, dimid, &varid)) ERR;
|
||||||
/* if (nc_def_var_chunking(ncid, varid, NC_COMPACT, NULL)) ERR; */
|
if (nc_def_var_chunking(ncid, varid, NC_COMPACT, NULL)) ERR;
|
||||||
/* if (nc_inq_var_chunking(ncid, varid, &storage_in, NULL)) ERR; */
|
if (nc_inq_var_chunking(ncid, varid, &storage_in, NULL)) ERR;
|
||||||
/* if (storage_in != NC_COMPACT) ERR; */
|
if (storage_in != NC_COMPACT) ERR;
|
||||||
|
|
||||||
/* /\* Define var2 - it's too big for compact. *\/ */
|
/* Define var2 - it's too big for compact. */
|
||||||
/* if (nc_def_var(ncid, CLAIR, NC_INT, NDIM2, dimid, &varid2)) ERR; */
|
if (nc_def_var(ncid, CLAIR, NC_INT, NDIM2, dimid, &varid2)) ERR;
|
||||||
/* /\* This won't work, the var is too big for compact! *\/ */
|
/* This won't work, the var is too big for compact! */
|
||||||
/* if (nc_def_var_chunking(ncid, varid2, NC_COMPACT, NULL) != NC_EVARSIZE) ERR; */
|
if (nc_def_var_chunking(ncid, varid2, NC_COMPACT, NULL) != NC_EVARSIZE) ERR;
|
||||||
|
|
||||||
/* /\* Define var3, a scalar. Scalars can also be compact. *\/ */
|
/* Define var3, a scalar. Scalars can also be compact. */
|
||||||
/* if (nc_def_var(ncid, JAMIE, NC_INT, 0, NULL, &varid3)) ERR; */
|
if (nc_def_var(ncid, JAMIE, NC_INT, 0, NULL, &varid3)) ERR;
|
||||||
/* if (nc_def_var_chunking(ncid, varid3, NC_COMPACT, NULL)) ERR; */
|
if (nc_def_var_chunking(ncid, varid3, NC_COMPACT, NULL)) ERR;
|
||||||
|
|
||||||
/* /\* Write data. *\/ */
|
/* Write data. */
|
||||||
/* if (nc_put_var_int(ncid, varid3, data)) ERR; */
|
if (nc_put_var_int(ncid, varid3, data)) ERR;
|
||||||
|
|
||||||
/* /\* Close file. *\/ */
|
/* Close file. */
|
||||||
/* if (nc_close(ncid)) ERR; */
|
if (nc_close(ncid)) ERR;
|
||||||
|
|
||||||
/* /\* Open the file and check it. *\/ */
|
/* Open the file and check it. */
|
||||||
/* { */
|
{
|
||||||
/* int ndims, nvars; */
|
int ndims, nvars;
|
||||||
/* int storage_in; */
|
int storage_in;
|
||||||
/* nc_set_log_level(3); */
|
if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR;
|
||||||
/* if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR; */
|
if (nc_inq(ncid, &ndims, &nvars, NULL, NULL)) ERR;
|
||||||
/* if (nc_inq(ncid, &ndims, &nvars, NULL, NULL)) ERR; */
|
if (ndims != 2 || nvars != 3) ERR;
|
||||||
/* if (ndims != 2 || nvars != 3) ERR; */
|
if (nc_inq_var_chunking(ncid, varid, &storage_in, NULL)) ERR;
|
||||||
/* if (nc_inq_var_chunking(ncid, varid, &storage_in, NULL)) ERR; */
|
if (storage_in != NC_COMPACT) ERR;
|
||||||
/* if (storage_in != NC_COMPACT) ERR; */
|
if (nc_inq_var_chunking(ncid, varid2, &storage_in, NULL)) ERR;
|
||||||
/* if (nc_inq_var_chunking(ncid, varid2, &storage_in, NULL)) ERR; */
|
if (storage_in != NC_CONTIGUOUS) ERR;
|
||||||
/* if (storage_in != NC_CONTIGUOUS) ERR; */
|
if (nc_inq_var_chunking(ncid, varid3, &storage_in, NULL)) ERR;
|
||||||
/* if (nc_inq_var_chunking(ncid, varid3, &storage_in, NULL)) ERR; */
|
if (storage_in != NC_COMPACT) ERR;
|
||||||
/* /\* if (storage_in != NC_COMPACT) ERR; *\/ */
|
if (nc_close(ncid)) ERR;
|
||||||
/* if (nc_close(ncid)) ERR; */
|
}
|
||||||
/* } */
|
}
|
||||||
/* } */
|
SUMMARIZE_ERR;
|
||||||
/* SUMMARIZE_ERR; */
|
|
||||||
FINAL_RESULTS;
|
FINAL_RESULTS;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user