Changeset: 0942b01da867 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0942b01da867
Modified Files:
        sql/test/testdb-reload/Tests/reload.stable.out
        sql/test/testdb/Tests/dump.stable.out
        sql/test/testdb/Tests/load.sql
Branch: Jun2020
Log Message:

Test dumping of foreign language functions.


diffs (155 lines):

diff --git a/sql/test/testdb-reload/Tests/reload.stable.out 
b/sql/test/testdb-reload/Tests/reload.stable.out
--- a/sql/test/testdb-reload/Tests/reload.stable.out
+++ b/sql/test/testdb-reload/Tests/reload.stable.out
@@ -101352,6 +101352,48 @@ 8    "attempt"
 CREATE TABLE "testschema"."""" (
        """" INTEGER
 );
+CREATE FUNCTION "testschema"."pyapi01"("i" INTEGER) RETURNS TABLE ("i" 
INTEGER, "d" DOUBLE) LANGUAGE PYTHON
+{
+        x = range(1, i + 1)
+        y = [42.0] * i
+        return([x,y])
+};
+CREATE FUNCTION "testschema"."pyapi02"("i" INTEGER, "j" INTEGER, "z" INTEGER) 
RETURNS INTEGER LANGUAGE PYTHON3
+{
+    x = i * sum(j) * z
+    return x
+};
+CREATE FUNCTION "testschema"."rapi01"("i" INTEGER) RETURNS TABLE ("i" INTEGER, 
"d" DOUBLE) LANGUAGE R
+{
+        return(data.frame(i=seq(1,i),d=42.0));
+};
+CREATE FUNCTION "testschema"."rapi02"("i" INTEGER, "j" INTEGER, "z" INTEGER) 
RETURNS INTEGER LANGUAGE R
+{
+        return(i*sum(j)*z);
+};
+CREATE FUNCTION "testschema"."capi00"("inp" INTEGER) RETURNS INTEGER LANGUAGE C
+{
+    size_t i;
+    result->initialize(result, inp.count);
+    for(i = 0; i < inp.count; i++) {
+        result->data[i] = inp.data[i] * 2;
+    }
+};
+CREATE AGGREGATE "testschema"."aggrmedian"("val" INTEGER) RETURNS INTEGER 
LANGUAGE PYTHON
+{
+        if 'aggr_group' in locals():
+                unique = numpy.unique(aggr_group)
+                x = numpy.zeros(shape=(unique.size))
+                for i in range(0,unique.size):
+                        x[i] = 
numpy.median(val[numpy.where(aggr_group==unique[i])])
+                return(x)
+        else:
+                return(numpy.median(val))
+};
+CREATE FUNCTION "testschema"."pyapi10_mult"("i" INTEGER, "j" INTEGER) RETURNS 
INTEGER LANGUAGE PYTHON_MAP
+{
+    return(i*j)
+};
 ALTER TABLE "testschema"."testme" ADD TABLE "testschema"."subtable1" AS 
PARTITION FROM RANGE MINVALUE TO '11' WITH NULL VALUES;
 ALTER TABLE "testschema"."testme" ADD TABLE "testschema"."subtable2" AS 
PARTITION FROM '11' TO '20';
 ALTER TABLE "testschema"."testme" ADD TABLE "testschema"."subtable3" AS 
PARTITION FROM '21' TO RANGE MAXVALUE;
diff --git a/sql/test/testdb/Tests/dump.stable.out 
b/sql/test/testdb/Tests/dump.stable.out
--- a/sql/test/testdb/Tests/dump.stable.out
+++ b/sql/test/testdb/Tests/dump.stable.out
@@ -101369,6 +101369,48 @@ 8    "attempt"
 CREATE TABLE "testschema"."""" (
        """" INTEGER
 );
+CREATE FUNCTION "testschema"."pyapi01"("i" INTEGER) RETURNS TABLE ("i" 
INTEGER, "d" DOUBLE) LANGUAGE PYTHON
+{
+        x = range(1, i + 1)
+        y = [42.0] * i
+        return([x,y])
+};
+CREATE FUNCTION "testschema"."pyapi02"("i" INTEGER, "j" INTEGER, "z" INTEGER) 
RETURNS INTEGER LANGUAGE PYTHON3
+{
+    x = i * sum(j) * z
+    return x
+};
+CREATE FUNCTION "testschema"."rapi01"("i" INTEGER) RETURNS TABLE ("i" INTEGER, 
"d" DOUBLE) LANGUAGE R
+{
+        return(data.frame(i=seq(1,i),d=42.0));
+};
+CREATE FUNCTION "testschema"."rapi02"("i" INTEGER, "j" INTEGER, "z" INTEGER) 
RETURNS INTEGER LANGUAGE R
+{
+        return(i*sum(j)*z);
+};
+CREATE FUNCTION "testschema"."capi00"("inp" INTEGER) RETURNS INTEGER LANGUAGE C
+{
+    size_t i;
+    result->initialize(result, inp.count);
+    for(i = 0; i < inp.count; i++) {
+        result->data[i] = inp.data[i] * 2;
+    }
+};
+CREATE AGGREGATE "testschema"."aggrmedian"("val" INTEGER) RETURNS INTEGER 
LANGUAGE PYTHON
+{
+        if 'aggr_group' in locals():
+                unique = numpy.unique(aggr_group)
+                x = numpy.zeros(shape=(unique.size))
+                for i in range(0,unique.size):
+                        x[i] = 
numpy.median(val[numpy.where(aggr_group==unique[i])])
+                return(x)
+        else:
+                return(numpy.median(val))
+};
+CREATE FUNCTION "testschema"."pyapi10_mult"("i" INTEGER, "j" INTEGER) RETURNS 
INTEGER LANGUAGE PYTHON_MAP
+{
+    return(i*j)
+};
 CREATE TABLE "testschema"."geomtest" (
        "p"   GEOMETRY(POINT),
        "c"   GEOMETRY(LINESTRING),
diff --git a/sql/test/testdb/Tests/load.sql b/sql/test/testdb/Tests/load.sql
--- a/sql/test/testdb/Tests/load.sql
+++ b/sql/test/testdb/Tests/load.sql
@@ -101280,4 +101280,47 @@ INSERT INTO testschema.sublimits1 VALUES
 INSERT INTO testschema.sublimits2 VALUES (NULL, 'successful');
 INSERT INTO testschema.sublimits3 VALUES (8, 'attempt');
 CREATE TABLE """" ("""" int);
+CREATE FUNCTION pyapi01(i integer) returns table (i integer, d double)
+language P
+{
+        x = range(1, i + 1)
+        y = [42.0] * i
+        return([x,y])
+};
+CREATE FUNCTION pyapi02(i integer,j integer,z integer) returns integer
+language Python3
+{
+    x = i * sum(j) * z
+    return x
+};
+CREATE FUNCTION rapi01(i integer) returns table (i integer, d double)
+language R {
+        return(data.frame(i=seq(1,i),d=42.0));
+};
+CREATE FUNCTION rapi02(i integer,j integer,z integer) returns integer
+language R {
+        return(i*sum(j)*z);
+};
+CREATE FUNCTION capi00(inp INTEGER) RETURNS INTEGER LANGUAGE C {
+    size_t i;
+    result->initialize(result, inp.count);
+    for(i = 0; i < inp.count; i++) {
+        result->data[i] = inp.data[i] * 2;
+    }
+};
+CREATE AGGREGATE aggrmedian(val integer) RETURNS integer LANGUAGE P {
+        if 'aggr_group' in locals():
+                unique = numpy.unique(aggr_group)
+                x = numpy.zeros(shape=(unique.size))
+                for i in range(0,unique.size):
+                        x[i] = 
numpy.median(val[numpy.where(aggr_group==unique[i])])
+                return(x)
+        else:
+                return(numpy.median(val))
+};
+CREATE FUNCTION pyapi10_mult(i integer,j integer) returns integer
+language PYTHON_MAP
+{
+    return(i*j)
+};
 COMMIT;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to