Merge pull request #41 from apache/fix_default_params
fixed treatment of default parameters
diff --git a/src/aod_sketch_pg_functions.c b/src/aod_sketch_pg_functions.c
index a1f0673..d3d27cc 100644
--- a/src/aod_sketch_pg_functions.c
+++ b/src/aod_sketch_pg_functions.c
@@ -173,8 +173,7 @@
bytes_in = PG_GETARG_BYTEA_P(0);
sketchptr = aod_sketch_deserialize(VARDATA(bytes_in), VARSIZE(bytes_in) - VARHDRSZ);
- num_std_devs = PG_GETARG_INT32(1);
- if (num_std_devs == 0) num_std_devs = 1; // default
+ num_std_devs = PG_NARGS() > 1 ? PG_GETARG_INT32(1) : 1;
est_and_bounds = (Datum*) aod_sketch_get_estimate_and_bounds(sketchptr, num_std_devs);
compact_aod_sketch_delete(sketchptr);
@@ -190,11 +189,7 @@
bool print_entries;
char* str;
bytes_in = PG_GETARG_BYTEA_P(0);
- if (PG_NARGS() > 1) {
- print_entries = PG_GETARG_BOOL(1);
- } else {
- print_entries = false;
- }
+ print_entries = PG_NARGS() > 1 ? PG_GETARG_BOOL(1) : false;
sketchptr = aod_sketch_deserialize(VARDATA(bytes_in), VARSIZE(bytes_in) - VARHDRSZ);
str = aod_sketch_to_string(sketchptr, print_entries);
compact_aod_sketch_delete(sketchptr);
@@ -390,9 +385,8 @@
int num_values;
int lg_k;
- num_values = PG_GETARG_INT32(2);
- if (num_values == 0) num_values = 1;
- lg_k = PG_GETARG_INT32(3);
+ num_values = PG_NARGS() > 2 ? PG_GETARG_INT32(2) : 1;
+ lg_k = PG_NARGS() > 3 ? PG_GETARG_INT32(3) : 0;
unionptr = lg_k ? aod_union_new_lgk(num_values, lg_k) : aod_union_new(num_values);
if (!PG_ARGISNULL(0)) {
bytes_in1 = PG_GETARG_BYTEA_P(0);
@@ -424,8 +418,7 @@
struct ptr_with_size bytes_out;
int num_values;
- num_values = PG_GETARG_INT32(2);
- if (num_values == 0) num_values = 1;
+ num_values = PG_NARGS() > 2 ? PG_GETARG_INT32(2) : 1;
interptr = aod_intersection_new(num_values);
if (!PG_ARGISNULL(0)) {
bytes_in1 = PG_GETARG_BYTEA_P(0);
diff --git a/src/cpc_sketch_pg_functions.c b/src/cpc_sketch_pg_functions.c
index 00a521e..2d0d626 100644
--- a/src/cpc_sketch_pg_functions.c
+++ b/src/cpc_sketch_pg_functions.c
@@ -129,8 +129,7 @@
bytes_in = PG_GETARG_BYTEA_P(0);
sketchptr = cpc_sketch_deserialize(VARDATA(bytes_in), VARSIZE(bytes_in) - VARHDRSZ);
- num_std_devs = PG_GETARG_INT32(1);
- if (num_std_devs == 0) num_std_devs = 1; // default
+ num_std_devs = PG_NARGS() > 1 ? PG_GETARG_INT32(1) : 1;
est_and_bounds = (Datum*) cpc_sketch_get_estimate_and_bounds(sketchptr, num_std_devs);
cpc_sketch_delete(sketchptr);
@@ -272,8 +271,8 @@
struct ptr_with_size bytes_out;
int lg_k;
- lg_k = PG_GETARG_INT32(2);
- unionptr = cpc_union_new(lg_k ? lg_k : CPC_DEFAULT_LG_K);
+ lg_k = PG_NARGS() > 2 ? PG_GETARG_INT32(2) : CPC_DEFAULT_LG_K;
+ unionptr = cpc_union_new(lg_k);
if (!PG_ARGISNULL(0)) {
bytes_in1 = PG_GETARG_BYTEA_P(0);
sketchptr1 = cpc_sketch_deserialize(VARDATA(bytes_in1), VARSIZE(bytes_in1) - VARHDRSZ);
diff --git a/src/hll_sketch_pg_functions.c b/src/hll_sketch_pg_functions.c
index 4de4b68..743cced 100644
--- a/src/hll_sketch_pg_functions.c
+++ b/src/hll_sketch_pg_functions.c
@@ -138,8 +138,7 @@
bytes_in = PG_GETARG_BYTEA_P(0);
sketchptr = hll_sketch_deserialize(VARDATA(bytes_in), VARSIZE(bytes_in) - VARHDRSZ);
- num_std_devs = PG_GETARG_INT32(1);
- if (num_std_devs == 0) num_std_devs = 1; // default
+ num_std_devs = PG_NARGS() > 1 ? PG_GETARG_INT32(1) : 1;
est_and_bounds = (Datum*) hll_sketch_get_estimate_and_bounds(sketchptr, num_std_devs);
hll_sketch_delete(sketchptr);
diff --git a/src/kll_float_sketch_pg_functions.c b/src/kll_float_sketch_pg_functions.c
index 3e31159..44ab20f 100644
--- a/src/kll_float_sketch_pg_functions.c
+++ b/src/kll_float_sketch_pg_functions.c
@@ -358,8 +358,7 @@
bytes_in = PG_GETARG_BYTEA_P(0);
sketchptr = kll_float_sketch_deserialize(VARDATA(bytes_in), VARSIZE(bytes_in) - VARHDRSZ);
- num_bins = PG_GETARG_INT32(1);
- if (num_bins == 0) num_bins = DEFAULT_NUM_BINS;
+ num_bins = PG_NARGS() > 1 ? PG_GETARG_INT32(1) : DEFAULT_NUM_BINS;
if (num_bins < 2) {
elog(ERROR, "at least two bins expected");
}
diff --git a/src/theta_sketch_pg_functions.c b/src/theta_sketch_pg_functions.c
index 04f64bf..00b8195 100644
--- a/src/theta_sketch_pg_functions.c
+++ b/src/theta_sketch_pg_functions.c
@@ -141,8 +141,7 @@
bytes_in = PG_GETARG_BYTEA_P(0);
sketchptr = theta_sketch_deserialize(VARDATA(bytes_in), VARSIZE(bytes_in) - VARHDRSZ);
- num_std_devs = PG_GETARG_INT32(1);
- if (num_std_devs == 0) num_std_devs = 1; // default
+ num_std_devs = PG_NARGS() > 1 ? PG_GETARG_INT32(1) : 1;
est_and_bounds = (Datum*) theta_sketch_get_estimate_and_bounds(sketchptr, num_std_devs);
theta_sketch_delete(sketchptr);