You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datasketches.apache.org by al...@apache.org on 2021/01/09 00:27:57 UTC

[datasketches-postgresql] branch pg_nargs created (now 77b8dd9)

This is an automated email from the ASF dual-hosted git repository.

alsay pushed a change to branch pg_nargs
in repository https://gitbox.apache.org/repos/asf/datasketches-postgresql.git.


      at 77b8dd9  better handling of optional args

This branch includes the following new commits:

     new 77b8dd9  better handling of optional args

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org


[datasketches-postgresql] 01/01: better handling of optional args

Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

alsay pushed a commit to branch pg_nargs
in repository https://gitbox.apache.org/repos/asf/datasketches-postgresql.git

commit 77b8dd9b82fe04e5918ca5979547bdb3bf2d8fb4
Author: AlexanderSaydakov <Al...@users.noreply.github.com>
AuthorDate: Fri Jan 8 16:27:24 2021 -0800

    better handling of optional args
---
 src/aod_sketch_pg_functions.c              | 17 +++++++----------
 src/cpc_sketch_pg_functions.c              |  8 ++++----
 src/frequent_strings_sketch_pg_functions.c | 18 +++---------------
 src/hll_sketch_pg_functions.c              | 17 ++++++++---------
 src/kll_float_sketch_pg_functions.c        |  8 ++++----
 src/theta_sketch_pg_functions.c            |  8 ++++----
 6 files changed, 30 insertions(+), 46 deletions(-)

diff --git a/src/aod_sketch_pg_functions.c b/src/aod_sketch_pg_functions.c
index 98766ef..a1f0673 100644
--- a/src/aod_sketch_pg_functions.c
+++ b/src/aod_sketch_pg_functions.c
@@ -118,8 +118,8 @@ Datum pg_aod_sketch_add_item(PG_FUNCTION_ARGS) {
   }
 
   if (PG_ARGISNULL(0)) {
-    lg_k = PG_GETARG_INT32(3);
-    p = PG_GETARG_FLOAT4(4);
+    lg_k = PG_NARGS() > 3 ? PG_GETARG_INT32(3) : 0;
+    p = PG_NARGS() > 4 ? PG_GETARG_FLOAT4(4) : 1;
     if (lg_k) {
       sketchptr = p ? aod_sketch_new_lgk_p(arr_len, lg_k, p) : aod_sketch_new_lgk(arr_len, lg_k);
     } else {
@@ -129,7 +129,7 @@ Datum pg_aod_sketch_add_item(PG_FUNCTION_ARGS) {
     sketchptr = PG_GETARG_POINTER(0);
   }
 
-    element_type = get_fn_expr_argtype(fcinfo->flinfo, 1);
+  element_type = get_fn_expr_argtype(fcinfo->flinfo, 1);
   element = PG_GETARG_DATUM(1);
   get_typlenbyvalalign(element_type, &typlen, &typbyval, &typalign);
   if (typlen == -1) {
@@ -222,8 +222,7 @@ Datum pg_aod_sketch_intersection_agg(PG_FUNCTION_ARGS) {
   oldcontext = MemoryContextSwitchTo(aggcontext);
 
   if (PG_ARGISNULL(0)) {
-    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);
   } else {
     interptr = PG_GETARG_POINTER(0);
@@ -261,9 +260,8 @@ Datum pg_aod_sketch_union_agg(PG_FUNCTION_ARGS) {
   oldcontext = MemoryContextSwitchTo(aggcontext);
 
   if (PG_ARGISNULL(0)) {
-    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);
   } else {
     unionptr = PG_GETARG_POINTER(0);
@@ -485,8 +483,7 @@ Datum pg_aod_sketch_to_kll_float_sketch(PG_FUNCTION_ARGS) {
   bytes_in = PG_GETARG_BYTEA_P(0);
   aodptr = aod_sketch_deserialize(VARDATA(bytes_in), VARSIZE(bytes_in) - VARHDRSZ);
   column_index = PG_GETARG_INT32(1);
-  k = PG_GETARG_INT32(2);
-  if (k == 0) k = DEFAULT_K;
+  k = PG_NARGS() > 2 ? PG_GETARG_INT32(2) : DEFAULT_K;
   kllptr = aod_sketch_to_kll_float_sketch(aodptr, column_index, k);
   bytes_out = kll_float_sketch_serialize(kllptr, VARHDRSZ);
   kll_float_sketch_delete(kllptr);
diff --git a/src/cpc_sketch_pg_functions.c b/src/cpc_sketch_pg_functions.c
index 2e5d3d4..00a521e 100644
--- a/src/cpc_sketch_pg_functions.c
+++ b/src/cpc_sketch_pg_functions.c
@@ -79,8 +79,8 @@ Datum pg_cpc_sketch_add_item(PG_FUNCTION_ARGS) {
   oldcontext = MemoryContextSwitchTo(aggcontext);
 
   if (PG_ARGISNULL(0)) {
-    lg_k = PG_GETARG_INT32(2);
-    sketchptr = cpc_sketch_new(lg_k ? lg_k : CPC_DEFAULT_LG_K);
+    lg_k = PG_NARGS() > 2 ? PG_GETARG_INT32(2) : CPC_DEFAULT_LG_K;
+    sketchptr = cpc_sketch_new(lg_k);
   } else {
     sketchptr = PG_GETARG_POINTER(0);
   }
@@ -172,8 +172,8 @@ Datum pg_cpc_sketch_union_agg(PG_FUNCTION_ARGS) {
   oldcontext = MemoryContextSwitchTo(aggcontext);
 
   if (PG_ARGISNULL(0)) {
-    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);
   } else {
     unionptr = PG_GETARG_POINTER(0);
   }
diff --git a/src/frequent_strings_sketch_pg_functions.c b/src/frequent_strings_sketch_pg_functions.c
index dced821..5c63c15 100644
--- a/src/frequent_strings_sketch_pg_functions.c
+++ b/src/frequent_strings_sketch_pg_functions.c
@@ -79,11 +79,7 @@ Datum pg_frequent_strings_sketch_add_item(PG_FUNCTION_ARGS) {
   str = PG_GETARG_VARCHAR_P(2);
 
   // optional weight
-  if (PG_NARGS() == 3) {
-    weight = 1;
-  } else {
-    weight = PG_GETARG_INT64(3);
-  }
+  weight = PG_NARGS() > 3 ? PG_GETARG_INT64(3) : 1;
 
   frequent_strings_sketch_update(sketchptr, VARDATA(str), VARSIZE(str) - VARHDRSZ, weight);
 
@@ -150,11 +146,7 @@ Datum pg_frequent_strings_sketch_to_string(PG_FUNCTION_ARGS) {
   bool print_items;
   char* str;
   bytes_in = PG_GETARG_BYTEA_P(0);
-  if (PG_NARGS() > 1) {
-    print_items = PG_GETARG_BOOL(1);
-  } else {
-    print_items = false;
-  }
+  print_items = PG_NARGS() > 1 ? PG_GETARG_BOOL(1) : false;
   sketchptr = frequent_strings_sketch_deserialize(VARDATA(bytes_in), VARSIZE(bytes_in) - VARHDRSZ);
   str = frequent_strings_sketch_to_string(sketchptr, print_items);
   frequent_strings_sketch_delete(sketchptr);
@@ -182,11 +174,7 @@ Datum frequent_strings_sketch_get_result(PG_FUNCTION_ARGS, bool no_false_positiv
     if (PG_ARGISNULL(0)) SRF_RETURN_DONE(funcctx);
     bytes_in = PG_GETARG_BYTEA_P(0);
     sketchptr = frequent_strings_sketch_deserialize(VARDATA(bytes_in), VARSIZE(bytes_in) - VARHDRSZ);
-    if (PG_ARGISNULL(1)) {
-      threshold = 0;
-    } else {
-      threshold = PG_GETARG_INT64(1);
-    }
+    threshold = PG_NARGS() > 1 ? PG_GETARG_INT64(1) : 0;
 
     funcctx->user_fctx = frequent_strings_sketch_get_frequent_items(sketchptr, no_false_positives, threshold);
     funcctx->max_calls = ((struct frequent_strings_sketch_result*) funcctx->user_fctx)->num;
diff --git a/src/hll_sketch_pg_functions.c b/src/hll_sketch_pg_functions.c
index 2454e66..4de4b68 100644
--- a/src/hll_sketch_pg_functions.c
+++ b/src/hll_sketch_pg_functions.c
@@ -80,9 +80,8 @@ Datum pg_hll_sketch_add_item(PG_FUNCTION_ARGS) {
   oldcontext = MemoryContextSwitchTo(aggcontext);
 
   if (PG_ARGISNULL(0)) {
-    lg_k = PG_GETARG_INT32(2);
-    if (lg_k == 0) lg_k = HLL_DEFAULT_LG_K;
-    tgt_type = PG_GETARG_INT32(3);
+    lg_k = PG_NARGS() > 2 ? PG_GETARG_INT32(2) : HLL_DEFAULT_LG_K;
+    tgt_type = PG_NARGS() > 3 ? PG_GETARG_INT32(3) : 0;
     if (tgt_type) {
       if ((tgt_type != 4) && (tgt_type != 6) && (tgt_type != 8)) {
         elog(ERROR, "hll_sketch_add_item: unsupported target type, must be 4, 6 or 8");
@@ -187,10 +186,10 @@ Datum pg_hll_sketch_union_agg(PG_FUNCTION_ARGS) {
   oldcontext = MemoryContextSwitchTo(aggcontext);
 
   if (PG_ARGISNULL(0)) {
-    lg_k = PG_GETARG_INT32(2);
+    lg_k = PG_NARGS() > 2 ? PG_GETARG_INT32(2) : HLL_DEFAULT_LG_K;
     stateptr = palloc(sizeof(struct hll_union_state));
-    stateptr->unionptr = hll_union_new(lg_k ? lg_k : HLL_DEFAULT_LG_K);
-    stateptr->tgt_type = PG_GETARG_INT32(3);
+    stateptr->unionptr = hll_union_new(lg_k);
+    stateptr->tgt_type = PG_NARGS() > 3 ? PG_GETARG_INT32(3) : 0;
     if (stateptr->tgt_type) {
       if ((stateptr->tgt_type != 4) && (stateptr->tgt_type != 6) && (stateptr->tgt_type != 8)) {
         elog(ERROR, "hll_sketch_union_agg: unsupported target type, must be 4, 6 or 8");
@@ -300,14 +299,14 @@ Datum pg_hll_sketch_union(PG_FUNCTION_ARGS) {
   unsigned lg_k;
   unsigned tgt_type;
 
-  lg_k = PG_GETARG_INT32(2);
-  tgt_type = PG_GETARG_INT32(3);
+  lg_k = PG_NARGS() > 2 ? PG_GETARG_INT32(2) : HLL_DEFAULT_LG_K;
+  tgt_type = PG_NARGS() > 3 ? PG_GETARG_INT32(3) : 0;
   if (tgt_type) {
     if ((tgt_type != 4) && (tgt_type != 6) && (tgt_type != 8)) {
       elog(ERROR, "hll_sketch_union: unsupported target type, must be 4, 6 or 8");
     }
   }
-  unionptr = hll_union_new(lg_k ? lg_k : HLL_DEFAULT_LG_K);
+  unionptr = hll_union_new(lg_k);
   if (!PG_ARGISNULL(0)) {
     bytes_in1 = PG_GETARG_BYTEA_P(0);
     sketchptr1 = hll_sketch_deserialize(VARDATA(bytes_in1), VARSIZE(bytes_in1) - VARHDRSZ);
diff --git a/src/kll_float_sketch_pg_functions.c b/src/kll_float_sketch_pg_functions.c
index 87426c8..3e31159 100644
--- a/src/kll_float_sketch_pg_functions.c
+++ b/src/kll_float_sketch_pg_functions.c
@@ -77,8 +77,8 @@ Datum pg_kll_float_sketch_add_item(PG_FUNCTION_ARGS) {
   oldcontext = MemoryContextSwitchTo(aggcontext);
 
   if (PG_ARGISNULL(0)) {
-    k = PG_GETARG_INT32(2);
-    sketchptr = kll_float_sketch_new(k ? k : DEFAULT_K);
+    k = PG_NARGS() > 2 ? PG_GETARG_INT32(2) : DEFAULT_K;
+    sketchptr = kll_float_sketch_new(k);
   } else {
     sketchptr = PG_GETARG_POINTER(0);
   }
@@ -160,8 +160,8 @@ Datum pg_kll_float_sketch_merge(PG_FUNCTION_ARGS) {
   oldcontext = MemoryContextSwitchTo(aggcontext);
 
   if (PG_ARGISNULL(0)) {
-    k = PG_GETARG_INT32(2);
-    unionptr = kll_float_sketch_new(k ? k : DEFAULT_K);
+    k = PG_NARGS() > 2 ? PG_GETARG_INT32(2) : DEFAULT_K;
+    unionptr = kll_float_sketch_new(k);
   } else {
     unionptr = PG_GETARG_POINTER(0);
   }
diff --git a/src/theta_sketch_pg_functions.c b/src/theta_sketch_pg_functions.c
index 1e9f077..04f64bf 100644
--- a/src/theta_sketch_pg_functions.c
+++ b/src/theta_sketch_pg_functions.c
@@ -86,8 +86,8 @@ Datum pg_theta_sketch_add_item(PG_FUNCTION_ARGS) {
   oldcontext = MemoryContextSwitchTo(aggcontext);
 
   if (PG_ARGISNULL(0)) {
-    lg_k = PG_GETARG_INT32(2);
-    p = PG_GETARG_FLOAT4(3);
+    lg_k = PG_NARGS() > 2 ? PG_GETARG_INT32(2) : 0;
+    p = PG_NARGS() > 3 ? PG_GETARG_FLOAT4(3) : 1;
     if (lg_k) {
       sketchptr = p ? theta_sketch_new_lgk_p(lg_k, p) : theta_sketch_new_lgk(lg_k);
     } else {
@@ -219,7 +219,7 @@ Datum pg_theta_sketch_union_agg(PG_FUNCTION_ARGS) {
   oldcontext = MemoryContextSwitchTo(aggcontext);
 
   if (PG_ARGISNULL(0)) {
-    lg_k = PG_GETARG_INT32(2);
+    lg_k = PG_NARGS() > 2 ? PG_GETARG_INT32(2) : 0;
     unionptr = lg_k ? theta_union_new(lg_k) : theta_union_new_default();
   } else {
     unionptr = PG_GETARG_POINTER(0);
@@ -347,7 +347,7 @@ Datum pg_theta_sketch_union(PG_FUNCTION_ARGS) {
   struct ptr_with_size bytes_out;
   int lg_k;
   
-  lg_k = PG_GETARG_INT32(2);
+  lg_k = PG_NARGS() > 2 ? PG_GETARG_INT32(2) : 0;
   unionptr = lg_k ? theta_union_new(lg_k) : theta_union_new_default();
   if (!PG_ARGISNULL(0)) {
     bytes_in1 = PG_GETARG_BYTEA_P(0);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org