Changeset: c1a84302b8e8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c1a84302b8e8
Branch: mtest
Log Message:

merged


diffs (truncated from 11439 to 300 lines):

diff --git a/sql/backends/monet5/UDF/capi/Tests/All 
b/sql/backends/monet5/UDF/capi/Tests/All
--- a/sql/backends/monet5/UDF/capi/Tests/All
+++ b/sql/backends/monet5/UDF/capi/Tests/All
@@ -11,9 +11,10 @@ NOT_WIN32?capi08
 NOT_WIN32?capi09
 NOT_WIN32?capi10
 NOT_WIN32?capi11
-NOT_WIN32?capi12
+#NOT_WIN32?capi12 no oids
 NOT_WIN32?capi13
 NOT_WIN32?capi14
 NOT_WIN32?capi15
 NOT_WIN32?capi16
-NOT_WIN32?capi17
+#NOT_WIN32?capi17 no oids
+NOT_WIN32?capi18
diff --git a/sql/backends/monet5/UDF/capi/Tests/capi00.test 
b/sql/backends/monet5/UDF/capi/Tests/capi00.test
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/UDF/capi/Tests/capi00.test
@@ -0,0 +1,37 @@
+statement ok
+START TRANSACTION
+
+statement ok
+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;
+    }
+}
+
+statement ok
+CREATE TABLE integers(i INTEGER)
+
+statement ok
+INSERT INTO integers VALUES (1), (2), (3), (4), (5)
+
+query II rowsort
+SELECT i, capi00(i) FROM integers
+----
+1
+2
+2
+4
+3
+6
+4
+8
+5
+10
+
+statement ok
+DROP FUNCTION capi00
+
+statement ok
+DROP TABLE integers
diff --git a/sql/backends/monet5/UDF/capi/Tests/capi01.test 
b/sql/backends/monet5/UDF/capi/Tests/capi01.test
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/UDF/capi/Tests/capi01.test
@@ -0,0 +1,30 @@
+statement ok
+START TRANSACTION
+
+statement ok
+CREATE FUNCTION capi01(inp INTEGER) RETURNS TABLE (i INTEGER, d DOUBLE)
+language C
+{
+#include <math.h>
+    size_t j;
+    size_t count = inp.data[0];
+    i->initialize(i, count);
+    d->initialize(d, count);
+    for(j = 0; j < count; j++) {
+        i->data[j] = j;
+        d->data[j] = round(j > 0 ? 42.0 / j : 42.0);
+    }
+};
+
+query II rowsort
+SELECT i,d FROM capi01(42) AS R
+----
+84 values hashing to 5bb395f601dde2dc995b28f19ffe7d50
+
+statement ok
+DROP FUNCTION capi01
+
+statement ok
+ROLLBACK
+
+
diff --git a/sql/backends/monet5/UDF/capi/Tests/capi02.sql 
b/sql/backends/monet5/UDF/capi/Tests/capi02.sql
--- a/sql/backends/monet5/UDF/capi/Tests/capi02.sql
+++ b/sql/backends/monet5/UDF/capi/Tests/capi02.sql
@@ -87,7 +87,6 @@ language C
             result->data[i].date.year = d.data[i].date.year + 1;
             result->data[i].date.month = d.data[i].date.month;
             result->data[i].date.day = d.data[i].date.day;
-
             result->data[i].time.hours = (i + 1234) % 24;
             result->data[i].time.minutes = (i + 1234) % 60;
             result->data[i].time.seconds = (i + 1234) % 60;
diff --git a/sql/backends/monet5/UDF/capi/Tests/capi02.test 
b/sql/backends/monet5/UDF/capi/Tests/capi02.test
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/UDF/capi/Tests/capi02.test
@@ -0,0 +1,119 @@
+statement ok
+START TRANSACTION
+
+statement ok
+CREATE FUNCTION capi02_increment_year(d DATE) RETURNS DATE
+language C
+{
+    size_t i;
+    result->initialize(result, d.count);
+    for(i = 0; i < result->count; i++) {
+        if (d.is_null(d.data[i])) {
+            result->data[i] = result->null_value;
+        } else {
+            result->data[i].year = d.data[i].year + 1;
+            result->data[i].month = d.data[i].month;
+            result->data[i].day = d.data[i].day;
+        }
+    }
+}
+
+statement ok
+CREATE TABLE dates(i DATE)
+
+statement ok
+INSERT INTO dates VALUES ('1992-09-20'), ('2000-03-10'), ('1000-05-03'), (NULL)
+
+query T rowsort
+SELECT capi02_increment_year(i) FROM dates
+----
+1001-05-03
+1993-09-20
+2001-03-10
+NULL
+
+statement ok
+DROP FUNCTION capi02_increment_year
+
+statement ok
+DROP TABLE dates
+
+statement ok
+CREATE FUNCTION capi02_randomize_time(d TIME) RETURNS TIME
+language C
+{
+    size_t i;
+    result->initialize(result, d.count);
+    for(i = 0; i < result->count; i++) {
+        if (d.is_null(d.data[i])) {
+            result->data[i] = result->null_value;
+        } else {
+            result->data[i].hours = (i + 1234) % 24;
+            result->data[i].minutes = (i + 1234) % 60;
+            result->data[i].seconds = (i + 1234) % 60;
+            result->data[i].ms = (i + 1234) % 1000;
+        }
+    }
+}
+
+statement ok
+CREATE TABLE times(i TIME)
+
+statement ok
+INSERT INTO times VALUES ('03:03:02.0101'), (NULL), ('03:03:02.0101')
+
+query T rowsort
+SELECT capi02_randomize_time(i) FROM times
+----
+10:34:34
+12:36:36
+NULL
+
+statement ok
+DROP FUNCTION capi02_randomize_time
+
+statement ok
+DROP TABLE times
+
+statement ok
+CREATE FUNCTION capi02_increment_timestamp(d TIMESTAMP) RETURNS TIMESTAMP
+language C
+{
+    size_t i;
+    result->initialize(result, d.count);
+    for(i = 0; i < result->count; i++) {
+        if (d.is_null(d.data[i])) {
+            result->data[i] = result->null_value;
+        } else {
+            result->data[i].date.year = d.data[i].date.year + 1;
+            result->data[i].date.month = d.data[i].date.month;
+            result->data[i].date.day = d.data[i].date.day;
+            result->data[i].time.hours = (i + 1234) % 24;
+            result->data[i].time.minutes = (i + 1234) % 60;
+            result->data[i].time.seconds = (i + 1234) % 60;
+            result->data[i].time.ms = (i + 1234) % 1000;
+        }
+    }
+}
+
+statement ok
+CREATE TABLE times(i TIMESTAMP)
+
+statement ok
+INSERT INTO times VALUES ('1992-09-20 03:03:02.0101'), (NULL), ('2000-03-10 
03:03:02.0101')
+
+query T rowsort
+SELECT capi02_increment_timestamp(i) FROM times
+----
+1993-09-20 10:34:34.234000
+2001-03-10 12:36:36.236000
+NULL
+
+statement ok
+DROP FUNCTION capi02_increment_timestamp
+
+statement ok
+DROP TABLE times
+
+statement ok
+ROLLBACK
diff --git a/sql/backends/monet5/UDF/capi/Tests/capi03.test 
b/sql/backends/monet5/UDF/capi/Tests/capi03.test
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/UDF/capi/Tests/capi03.test
@@ -0,0 +1,61 @@
+statement ok
+START TRANSACTION
+
+statement ok
+CREATE FUNCTION capi03() RETURNS TABLE(i INTEGER, j INTEGER) LANGUAGE C {
+    size_t index;
+    i->initialize(i, 10);
+    j->initialize(j, 20);
+    for(index = 0; index < i->count; index++) {
+        i->data[index] = 0;
+    }
+    for(index = 0; index < j->count; index++) {
+        j->data[index] = 1;
+    }
+}
+
+statement error
+SELECT * FROM capi03()
+
+statement ok
+ROLLBACK
+
+statement ok
+START TRANSACTION
+
+statement ok
+CREATE FUNCTION capi03(inp INTEGER) RETURNS INTEGER LANGUAGE C {
+    
+}
+
+statement ok
+CREATE TABLE integers(i INTEGER)
+
+statement ok
+INSERT INTO integers VALUES (1), (2), (3), (4), (5)
+
+statement error
+SELECT capi03(i) FROM integers
+
+statement ok
+ROLLBACK
+
+statement ok
+START TRANSACTION
+
+statement ok
+CREATE FUNCTION capi03(inp INTEGER) RETURNS INTEGER LANGUAGE C {
+    return "Something went wrong!";
+}
+
+statement ok
+CREATE TABLE integers(i INTEGER)
+
+statement ok
+INSERT INTO integers VALUES (1), (2), (3), (4), (5)
+
+statement error
+SELECT capi03(i) FROM integers
+
+statement ok
+ROLLBACK
diff --git a/sql/backends/monet5/UDF/capi/Tests/capi04.test 
b/sql/backends/monet5/UDF/capi/Tests/capi04.test
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/UDF/capi/Tests/capi04.test
@@ -0,0 +1,74 @@
+statement ok
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to