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