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 2019/06/15 01:17:28 UTC

[incubator-datasketches-postgresql] branch cpc_union created (now 61ff0c4)

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

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


      at 61ff0c4  renamed merge to union, added non-agg union

This branch includes the following new commits:

     new 61ff0c4  renamed merge to union, added non-agg union

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


[incubator-datasketches-postgresql] 01/01: renamed merge to union, added non-agg union

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

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

commit 61ff0c47dc226af903007205f792ed83601ef8f8
Author: AlexanderSaydakov <Al...@users.noreply.github.com>
AuthorDate: Fri Jun 14 18:17:01 2019 -0700

    renamed merge to union, added non-agg union
---
 sql/datasketches_cpc_sketch.sql | 24 ++++++++++++++++--------
 src/cpc_sketch_pg_functions.c   | 39 ++++++++++++++++++++++++++++++++++++---
 2 files changed, 52 insertions(+), 11 deletions(-)

diff --git a/sql/datasketches_cpc_sketch.sql b/sql/datasketches_cpc_sketch.sql
index a6e9db3..b86453a 100644
--- a/sql/datasketches_cpc_sketch.sql
+++ b/sql/datasketches_cpc_sketch.sql
@@ -58,12 +58,12 @@ CREATE OR REPLACE FUNCTION cpc_sketch_to_string(cpc_sketch) RETURNS TEXT
     AS '$libdir/datasketches', 'pg_cpc_sketch_to_string'
     LANGUAGE C STRICT IMMUTABLE;
 
-CREATE OR REPLACE FUNCTION cpc_sketch_merge(internal, cpc_sketch) RETURNS internal
-    AS '$libdir/datasketches', 'pg_cpc_sketch_merge'
+CREATE OR REPLACE FUNCTION cpc_sketch_union_agg(internal, cpc_sketch) RETURNS internal
+    AS '$libdir/datasketches', 'pg_cpc_sketch_union_agg'
     LANGUAGE C IMMUTABLE;
 
-CREATE OR REPLACE FUNCTION cpc_sketch_merge(internal, cpc_sketch, int) RETURNS internal
-    AS '$libdir/datasketches', 'pg_cpc_sketch_merge'
+CREATE OR REPLACE FUNCTION cpc_sketch_union_agg(internal, cpc_sketch, int) RETURNS internal
+    AS '$libdir/datasketches', 'pg_cpc_sketch_union_agg'
     LANGUAGE C IMMUTABLE;
 
 CREATE OR REPLACE FUNCTION cpc_union_get_result(internal) RETURNS cpc_sketch
@@ -94,14 +94,22 @@ CREATE AGGREGATE cpc_sketch_build(anyelement, int) (
     finalfunc = cpc_sketch_from_internal
 );
 
-CREATE AGGREGATE cpc_sketch_merge(cpc_sketch) (
-    sfunc = cpc_sketch_merge,
+CREATE AGGREGATE cpc_sketch_union(cpc_sketch) (
+    sfunc = cpc_sketch_union_agg,
     stype = internal,
     finalfunc = cpc_union_get_result
 );
 
-CREATE AGGREGATE cpc_sketch_merge(cpc_sketch, int) (
-    sfunc = cpc_sketch_merge,
+CREATE AGGREGATE cpc_sketch_union(cpc_sketch, int) (
+    sfunc = cpc_sketch_union_agg,
     stype = internal,
     finalfunc = cpc_union_get_result
 );
+
+CREATE OR REPLACE FUNCTION cpc_sketch_union(cpc_sketch, cpc_sketch) RETURNS cpc_sketch
+    AS '$libdir/datasketches', 'pg_cpc_sketch_union'
+    LANGUAGE C IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION cpc_sketch_union(cpc_sketch, cpc_sketch, int) RETURNS cpc_sketch
+    AS '$libdir/datasketches', 'pg_cpc_sketch_union'
+    LANGUAGE C IMMUTABLE;
diff --git a/src/cpc_sketch_pg_functions.c b/src/cpc_sketch_pg_functions.c
index d4e6e35..f37cde8 100644
--- a/src/cpc_sketch_pg_functions.c
+++ b/src/cpc_sketch_pg_functions.c
@@ -31,10 +31,11 @@ const unsigned DEFAULT_LG_K = 11;
 PG_FUNCTION_INFO_V1(pg_cpc_sketch_add_item);
 PG_FUNCTION_INFO_V1(pg_cpc_sketch_get_estimate);
 PG_FUNCTION_INFO_V1(pg_cpc_sketch_to_string);
-PG_FUNCTION_INFO_V1(pg_cpc_sketch_merge);
+PG_FUNCTION_INFO_V1(pg_cpc_sketch_union_agg);
 PG_FUNCTION_INFO_V1(pg_cpc_sketch_from_internal);
 PG_FUNCTION_INFO_V1(pg_cpc_sketch_get_estimate_from_internal);
 PG_FUNCTION_INFO_V1(pg_cpc_union_get_result);
+PG_FUNCTION_INFO_V1(pg_cpc_sketch_union);
 
 /* function declarations */
 Datum pg_cpc_sketch_recv(PG_FUNCTION_ARGS);
@@ -42,10 +43,11 @@ Datum pg_cpc_sketch_send(PG_FUNCTION_ARGS);
 Datum pg_cpc_sketch_add_item(PG_FUNCTION_ARGS);
 Datum pg_cpc_sketch_get_estimate(PG_FUNCTION_ARGS);
 Datum pg_cpc_sketch_to_string(PG_FUNCTION_ARGS);
-Datum pg_cpc_sketch_merge(PG_FUNCTION_ARGS);
+Datum pg_cpc_sketch_union_agg(PG_FUNCTION_ARGS);
 Datum pg_cpc_sketch_from_internal(PG_FUNCTION_ARGS);
 Datum pg_cpc_sketch_get_estimate_from_internal(PG_FUNCTION_ARGS);
 Datum pg_cpc_union_get_result(PG_FUNCTION_ARGS);
+Datum pg_cpc_sketch_union(PG_FUNCTION_ARGS);
 
 Datum pg_cpc_sketch_add_item(PG_FUNCTION_ARGS) {
   void* sketchptr;
@@ -120,7 +122,7 @@ Datum pg_cpc_sketch_to_string(PG_FUNCTION_ARGS) {
   PG_RETURN_TEXT_P(cstring_to_text(str));
 }
 
-Datum pg_cpc_sketch_merge(PG_FUNCTION_ARGS) {
+Datum pg_cpc_sketch_union_agg(PG_FUNCTION_ARGS) {
   void* unionptr;
   bytea* sketch_bytes;
   void* sketchptr;
@@ -228,3 +230,34 @@ Datum pg_cpc_union_get_result(PG_FUNCTION_ARGS) {
 
   PG_RETURN_BYTEA_P(bytes_out);
 }
+
+Datum pg_cpc_sketch_union(PG_FUNCTION_ARGS) {
+  const bytea* bytes_in1;
+  const bytea* bytes_in2;
+  void* sketchptr1;
+  void* sketchptr2;
+  void* unionptr;
+  void* sketchptr;
+  bytea* bytes_out;
+  int lg_k;
+
+  lg_k = PG_GETARG_INT32(2);
+  unionptr = cpc_union_new(lg_k ? lg_k : DEFAULT_LG_K);
+  if (!PG_ARGISNULL(0)) {
+    bytes_in1 = PG_GETARG_BYTEA_P(0);
+    sketchptr1 = cpc_sketch_deserialize(VARDATA(bytes_in1), VARSIZE(bytes_in1) - VARHDRSZ);
+    cpc_union_update(unionptr, sketchptr1);
+    cpc_sketch_delete(sketchptr1);
+  }
+  if (!PG_ARGISNULL(1)) {
+    bytes_in2 = PG_GETARG_BYTEA_P(1);
+    sketchptr2 = cpc_sketch_deserialize(VARDATA(bytes_in2), VARSIZE(bytes_in2) - VARHDRSZ);
+    cpc_union_update(unionptr, sketchptr2);
+    cpc_sketch_delete(sketchptr2);
+  }
+  sketchptr = cpc_union_get_result(unionptr);
+  cpc_union_delete(unionptr);
+  bytes_out = cpc_sketch_serialize(sketchptr);
+  cpc_sketch_delete(sketchptr);
+  PG_RETURN_BYTEA_P(bytes_out);
+}


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