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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list