Changeset: bfceeb0cef79 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bfceeb0cef79
Modified Files:
        sql/backends/monet5/sql_gencode.c
        sql/common/sql_list.c
        sql/test/Tests/bogus-auto-generated-keys.stable.out
        sql/test/Tests/copy-from-compressed.sql.in
        sql/test/Tests/copy-into-fwf.sql.in
        sql/test/Tests/copy-into-lz4.sql.in
        sql/test/Tests/copy_into.sql.in
        sql/test/Tests/zones.sql
        sql/test/bogus-auto-generated-keys.sql
        sql/test/like_tests.sql
Branch: default
Log Message:

Merge with Nov2019


diffs (273 lines):

diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -64,7 +64,7 @@ constantAtom(backend *sql, MalBlkPtr mb,
 
        (void) sql;
        cst.vtype = 0;
-       if(VALcopy(&cst, vr) == NULL)
+       if (VALcopy(&cst, vr) == NULL)
                return -1;
        idx = defConstant(mb, vr->vtype, &cst);
        return idx;
@@ -280,7 +280,7 @@ static int
        Symbol backup = NULL;
        const char *local_tbl = prp->value;
        node *n;
-       int i, q, v;
+       int i, q, v, res = 0;
        int *lret, *rret;
        char *lname;
        sql_rel *r = rel;
@@ -558,9 +558,9 @@ static int
 
        /* catch exceptions */
        p = newCatchStmt(curBlk,"MALexception");
-        p = newExitStmt(curBlk,"MALexception");
-        p = newCatchStmt(curBlk,"SQLexception");
-        p = newExitStmt(curBlk,"SQLexception");
+       p = newExitStmt(curBlk,"MALexception");
+       p = newCatchStmt(curBlk,"SQLexception");
+       p = newExitStmt(curBlk,"SQLexception");
        /* remote.disconnect(q); */
        p = newStmt(curBlk, remoteRef, disconnectRef);
        p = pushArgument(curBlk, p, q);
@@ -573,12 +573,14 @@ static int
 
        SQLaddQueryToCache(c);
        //chkProgram(c->usermodule, c->curprg->def);
-       if(!c->curprg->def->errors)
+       if (!c->curprg->def->errors)
                c->curprg->def->errors = SQLoptimizeFunction(c, c->curprg->def);
+       if (c->curprg->def->errors)
+               res = -1;
        if (backup)
                c->curprg = backup;
        GDKfree(lname);         /* make sure stub is called */
-       return 0;
+       return res;
 }
 
 int
@@ -805,12 +807,14 @@ backend_dumpproc(backend *be, Client c, 
        if (backend_dumpstmt(be, mb, r, 1, 1, be->q?be->q->codestring:NULL) < 
0) 
                goto cleanup;
 
-       if (cq){
+       if (cq) {
                SQLaddQueryToCache(c);
                // optimize this code the 'old' way
-               if ( (m->emode == m_prepare || 
!qc_isaquerytemplate(getFunctionId(getInstrPtr(c->curprg->def,0)))) && 
!c->curprg->def->errors )
+               if ((m->emode == m_prepare || 
!qc_isaquerytemplate(getFunctionId(getInstrPtr(c->curprg->def,0)))) && 
!c->curprg->def->errors)
                        c->curprg->def->errors = 
SQLoptimizeFunction(c,c->curprg->def);
        }
+       if (c->curprg->def->errors)
+               goto cleanup;
 
        // restore the context for the wrapper code
        curPrg = c->curprg;
@@ -1165,6 +1169,7 @@ backend_create_sql_func(backend *be, sql
        Symbol backup = NULL, curPrg = NULL;
        int i, retseen = 0, sideeffects = 0, vararg = (f->varres || f->vararg), 
no_inline = 0;
        sql_rel *r;
+       str msg = MAL_SUCCEED;
 
        /* nothing to do for internal and ready (not recompiling) functions, 
besides finding respective MAL implementation */
        if (!f->sql && (f->lang == FUNC_LANG_INT || f->lang == FUNC_LANG_MAL)) {
@@ -1280,13 +1285,21 @@ backend_create_sql_func(backend *be, sql
                curBlk->unsafeProp = 1;
        /* optimize the code */
        SQLaddQueryToCache(c);
-       if( curBlk->inlineProp == 0 && !c->curprg->def->errors) {
-               c->curprg->def->errors = SQLoptimizeFunction(c, c->curprg->def);
-       } else if(curBlk->inlineProp != 0){
+       if (curBlk->inlineProp == 0 && !c->curprg->def->errors) {
+               msg = SQLoptimizeFunction(c, c->curprg->def);
+       } else if (curBlk->inlineProp != 0) {
                chkProgram(c->usermodule, c->curprg->def);
-               if(!c->curprg->def->errors)
-                       c->curprg->def->errors = 
SQLoptimizeFunction(c,c->curprg->def);
+               if (!c->curprg->def->errors)
+                       msg = SQLoptimizeFunction(c,c->curprg->def);
        }
+       if (msg) {
+               if (c->curprg->def->errors)
+                       GDKfree(msg);
+               else
+                       c->curprg->def->errors = msg;
+       }
+       if (c->curprg->def->errors)
+               goto cleanup;
        if (backup)
                c->curprg = backup;
        return 0;
@@ -1409,4 +1422,3 @@ rel_print(mvc *sql, sql_rel *rel, int de
        close_stream(s);
        buffer_destroy(b);
 }
-
diff --git a/sql/common/sql_list.c b/sql/common/sql_list.c
--- a/sql/common/sql_list.c
+++ b/sql/common/sql_list.c
@@ -739,44 +739,3 @@ list_hash_add(list *l, void *data, fcmp 
        }
        return data;
 }
-
-#ifdef TEST
-#include <string.h>
-
-void
-print_data(void *dummy, void *data)
-{
-       printf("%s ", (char *) data);
-}
-
-void
-destroy_data(void *dummy, void *data)
-{
-       _DELETE(data);
-}
-
-int
-main()
-{
-       list *l = list_create(NULL);
-
-       printf("0 list_length %d\n", list_length(l));
-       list_append_string(l, _STRDUP("niels"));
-       printf("1 list_length %d\n", list_length(l));
-       list_append_string(l, _STRDUP("nes"));
-       printf("1 list_length %d\n", list_length(l));
-       list_append_string(l, _STRDUP("lilian"));
-       printf("1 list_length %d\n", list_length(l));
-       list_append_string(l, _STRDUP("nes"));
-       printf("1 list_length %d\n", list_length(l));
-       list_append_string(l, _STRDUP("max"));
-       printf("1 list_length %d\n", list_length(l));
-       list_append_string(l, _STRDUP("nes"));
-       printf("1 list_length %d\n", list_length(l));
-       list_traverse(l, print_data, NULL);
-       printf("\n");
-
-       list_traverse(l, destroy_data, NULL);
-       list_destroy(l);
-}
-#endif
diff --git a/sql/test/Tests/bogus-auto-generated-keys.stable.out 
b/sql/test/Tests/bogus-auto-generated-keys.stable.out
--- a/sql/test/Tests/bogus-auto-generated-keys.stable.out
+++ b/sql/test/Tests/bogus-auto-generated-keys.stable.out
@@ -28,6 +28,8 @@ stdout of test 'bogus-auto-generated-key
 # 15:49:00 >  Mtimeout -timeout 60  java nl.cwi.monetdb.client.JdbcClient -h 
pegasus -p 37335 -d mTests_src_test -e -f 
"../../../../../../../../../../../net/volund.ins.cwi.nl/export/scratch1/fabian/monetdb/stable/sql/src/test/Tests/../bogus-auto-generated-keys.sql"
 # 15:49:00 >  
 
+START TRANSACTION;
+Operation successful
 -- generate a simple table with an auto-generated key (id)
 CREATE TABLE gen_keys (
        "id" serial,
@@ -54,10 +56,11 @@ 1 affected row, last generated key: 1
 UPDATE gen_keys SET "x" = 'bla' WHERE "id" = 12;
 0 affected rows, last generated key: 1
 
-
 -- ok, cleanup a bit
 DROP TABLE gen_keys;
 Operation successful
+ROLLBACK;
+Operation successful
 
 
 # 15:49:01 >  
diff --git a/sql/test/Tests/copy-from-compressed.sql.in 
b/sql/test/Tests/copy-from-compressed.sql.in
--- a/sql/test/Tests/copy-from-compressed.sql.in
+++ b/sql/test/Tests/copy-from-compressed.sql.in
@@ -1,3 +1,4 @@
+start transaction;
 create table compression_schemes (
        name varchar(20),
        extension varchar(5)
@@ -23,4 +24,4 @@ using delimiters ',', E'\n';
 
 select * from compression_schemes order by extension;
 
-drop table compression_schemes;
+rollback;
diff --git a/sql/test/Tests/copy-into-fwf.sql.in 
b/sql/test/Tests/copy-into-fwf.sql.in
--- a/sql/test/Tests/copy-into-fwf.sql.in
+++ b/sql/test/Tests/copy-into-fwf.sql.in
@@ -1,3 +1,4 @@
+START TRANSACTION;
 create table mtcars (
     mpg DOUBLE PRECISION,
     cyl DOUBLE PRECISION,
@@ -16,4 +17,4 @@ copy into mtcars from E'$QTSTSRCDIR/mtca
 
 select * from mtcars;
 
-drop table mtcars;
+ROLLBACK;
diff --git a/sql/test/Tests/copy-into-lz4.sql.in 
b/sql/test/Tests/copy-into-lz4.sql.in
--- a/sql/test/Tests/copy-into-lz4.sql.in
+++ b/sql/test/Tests/copy-into-lz4.sql.in
@@ -1,4 +1,5 @@
+START TRANSACTION;
 CREATE TABLE testlz4 (a bigint, b real, c clob, d varchar(64));
 COPY INTO testlz4 FROM E'$QTSTSRCDIR/testlz4.lz4' USING DELIMITERS 
',',E'\n','"' NULL AS '';
 SELECT a, b, c, d FROM testlz4 limit 1024;
-DROP TABLE testlz4;
+ROLLBACK;
diff --git a/sql/test/Tests/copy_into.sql.in b/sql/test/Tests/copy_into.sql.in
--- a/sql/test/Tests/copy_into.sql.in
+++ b/sql/test/Tests/copy_into.sql.in
@@ -1,3 +1,4 @@
+start transaction;
 create table copyouttest ( str VARCHAR(20), str2 VARCHAR(20));
 insert into copyouttest values ('', 'test');
 insert into copyouttest values ('test', '');
@@ -12,5 +13,4 @@ create table copyintest ( str VARCHAR(20
 copy into copyintest from E'$QTSTTRGDIR/x.dat' delimiters '[]', E'\n', '"';
 
 select * from copyintest;
-drop table copyintest;
-
+rollback;
diff --git a/sql/test/Tests/zones.sql b/sql/test/Tests/zones.sql
--- a/sql/test/Tests/zones.sql
+++ b/sql/test/Tests/zones.sql
@@ -1,3 +1,4 @@
+START TRANSACTION;
 declare epsilon double;
 set epsilon=0.00001;
 
@@ -153,3 +154,4 @@ drop table alphatest;
 drop table zonetest;
 drop table zoneindex;
 
+ROLLBACK;
diff --git a/sql/test/bogus-auto-generated-keys.sql 
b/sql/test/bogus-auto-generated-keys.sql
--- a/sql/test/bogus-auto-generated-keys.sql
+++ b/sql/test/bogus-auto-generated-keys.sql
@@ -1,3 +1,4 @@
+START TRANSACTION;
 -- generate a simple table with an auto-generated key (id)
 CREATE TABLE gen_keys (
        "id" serial,
@@ -17,3 +18,4 @@ UPDATE gen_keys SET "x" = 'bla' WHERE "i
 
 -- ok, cleanup a bit
 DROP TABLE gen_keys;
+ROLLBACK;
diff --git a/sql/test/like_tests.sql b/sql/test/like_tests.sql
--- a/sql/test/like_tests.sql
+++ b/sql/test/like_tests.sql
@@ -1,3 +1,4 @@
+START TRANSACTION;
 -- create our table to test with
 CREATE TABLE liketable (
        str varchar(20)
@@ -71,3 +72,4 @@ SELECT * FROM liketable WHERE str LIKE '
 
 -- clean up mess we made
 drop table liketable;
+ROLLBACK;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to