Changeset: 331a0848fcd1 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=331a0848fcd1 Added Files: sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.sql sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.stable.err sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.stable.out Modified Files: monetdb5/modules/atoms/uuid.c sql/backends/monet5/rel_bin.c sql/server/rel_schema.c sql/test/BugTracker-2019/Tests/All testing/exportutils.py Branch: default Log Message:
Merge with Nov2019 diffs (truncated from 331 to 300 lines): diff --git a/monetdb5/modules/atoms/uuid.c b/monetdb5/modules/atoms/uuid.c --- a/monetdb5/modules/atoms/uuid.c +++ b/monetdb5/modules/atoms/uuid.c @@ -163,7 +163,7 @@ UUIDfromString(const char *svalue, size_ return (ssize_t) (s - svalue); bailout: - GDKerror("Syntax error in UUID.\n"); + **retval = uuid_nil; return -1; } diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -330,6 +330,27 @@ handle_in_exps(backend *be, sql_exp *ce, s = stmt_uselect(be, stmt_const(be, bin_first_column(be, left), s), stmt_bool(be, 1), cmp_equal, sel, 0); + } else if (list_length(nl) < 16) { + comp_type cmp = (in)?cmp_equal:cmp_notequal; + + if (!in) + s = sel; + for( n = nl->h; n; n = n->next) { + sql_exp *e = n->data; + stmt *i = exp_bin(be, use_r?e->r:e, left, right, grp, ext, cnt, NULL); + if(!i) + return NULL; + + if (in) { + i = stmt_uselect(be, c, i, cmp, sel, 0); + if (s) + s = stmt_tunion(be, s, i); + else + s = i; + } else { + s = stmt_uselect(be, c, i, cmp, s, 0); + } + } } else { // TODO: handle_in_exps should contain all necessary logic for in-expressions to be SQL compliant. // For non-SQL-standard compliant behavior, e.g. PostgreSQL backwards compatibility, we should @@ -379,7 +400,6 @@ handle_in_exps(backend *be, sql_exp *ce, s = stmt_result(be, s, 0); } } - return s; } diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c --- a/sql/server/rel_schema.c +++ b/sql/server/rel_schema.c @@ -1484,11 +1484,9 @@ sql_alter_table(sql_query *query, dlist return rel_psm_block(sql->sa, new_exp_list(sql->sa)); return sql_error(sql, 02, SQLSTATE(42S02) "ALTER TABLE: no such table '%s' in schema '%s'", tname, s->base.name); } else { - int i; - node *n; sql_rel *res = NULL, *r; sql_table *nt = NULL; - sql_exp ** updates, *e; + sql_exp **updates, *e; assert(te); if (t->persistence != SQL_DECLARED_TABLE) @@ -1604,21 +1602,17 @@ sql_alter_table(sql_query *query, dlist if (!isTable(nt)) return res; - /* new columns need update with default values */ - updates = SA_ZNEW_ARRAY(sql->sa, sql_exp*, list_length(nt->columns.set)); - for (n = nt->columns.set->h, i = 0; n; n = n->next, i++) { - sql_column *c = n->data; - c->colnr = i; - } + /* New columns need update with default values. Add one more element for new column */ + updates = SA_ZNEW_ARRAY(sql->sa, sql_exp*, (list_length(nt->columns.set) + 1)); e = exp_column(sql->sa, nt->base.name, TID, sql_bind_localtype("oid"), CARD_MULTI, 0, 1); r = rel_project(sql->sa, res, append(new_exp_list(sql->sa),e)); if (nt->columns.nelm) { list *cols = new_exp_list(sql->sa); - for (n = nt->columns.nelm; n; n = n->next) { + for (node *n = nt->columns.nelm; n; n = n->next) { sql_column *c = n->data; if (c->def) { char *d, *typestr = subtype2string2(&c->type); - if(!typestr) + if (!typestr) return sql_error(sql, 02, SQLSTATE(HY001) MAL_MALLOC_FAIL); d = sql_message("select cast(%s as %s);", c->def, typestr); _DELETE(typestr); diff --git a/sql/test/BugTracker-2019/Tests/All b/sql/test/BugTracker-2019/Tests/All --- a/sql/test/BugTracker-2019/Tests/All +++ b/sql/test/BugTracker-2019/Tests/All @@ -46,3 +46,4 @@ msqldump-mapi-cache.Bug-6777 rank-nan.Bug-6780 index-insert-crash.Bug-6781 avg-changes-value-scale.Bug-6783 +isaUUID.Bug-6784 diff --git a/sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.sql b/sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.sql @@ -0,0 +1,13 @@ +select isauuid('this is not a uuid'); -- false +select isauuid(''); -- false +select isauuid(4); -- false +select isauuid('XYZaee1a538-aca1-381b-d9f4-8c29ef3f5'); -- false + +select isauuid(uuid()); -- true +select isauuid('aee1a538-aca1-381b-d9f4-8c29ef3f5f34'); -- true +select isauuid('AEE1A538-ACA1-381B-D9F4-8C29EF3F5F34'); -- true +select isauuid(null); -- false +select cast('aee1a538-aca1-381b-d9f4-8c29ef3f5f34' as uuid); -- true +select cast('AEE1A538-ACA1-381B-D9F4-8C29EF3F5F34' as uuid); -- true + +select cast('XYZaee1a538-aca1-381b-d9f4-8c29ef3f5' as uuid); -- error: Not a UUID diff --git a/sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.stable.err b/sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.stable.err @@ -0,0 +1,37 @@ +stderr of test 'isaUUID.Bug-6784` in directory 'sql/test/BugTracker-2019` itself: + + +# 12:59:22 > +# 12:59:22 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=36427" "--set" "mapi_usock=/var/tmp/mtest-16881/.s.monetdb.36427" "--forcemito" "--dbpath=/home/kutsurak/work/src/monet/workdirs/MonetDB_Nov2019/build/install/var/MonetDB/mTests_sql_test_BugTracker-2019" "--set" "embedded_c=true" +# 12:59:22 > + +# builtin opt gdk_dbpath = /home/kutsurak/work/src/monet/workdirs/MonetDB_Nov2019/build/install/var/monetdb5/dbfarm/demo +# builtin opt mapi_port = 50000 +# builtin opt mapi_open = false +# builtin opt mapi_ipv6 = false +# builtin opt mapi_autosense = false +# builtin opt sql_optimizer = default_pipe +# builtin opt sql_debug = 0 +# cmdline opt gdk_nr_threads = 0 +# cmdline opt mapi_open = true +# cmdline opt mapi_port = 36427 +# cmdline opt mapi_usock = /var/tmp/mtest-16881/.s.monetdb.36427 +# cmdline opt gdk_dbpath = /home/kutsurak/work/src/monet/workdirs/MonetDB_Nov2019/build/install/var/MonetDB/mTests_sql_test_BugTracker-2019 +# cmdline opt embedded_c = true +#client2:!ERROR:MALException:uuid.uuid:Not a UUID +#client2:!ERROR:MALException:uuid.uuid:Not a UUID + +# 12:59:22 > +# 12:59:22 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-16881" "--port=36427" +# 12:59:22 > + +MAPI = (monetdb) /var/tmp/mtest-16881/.s.monetdb.36427 +QUERY = select cast('XYZaee1a538-aca1-381b-d9f4-8c29ef3f5' as uuid); -- error: Not a UUID +ERROR = !Not a UUID + + + +# 12:59:22 > +# 12:59:22 > "Done." +# 12:59:22 > + diff --git a/sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.stable.out b/sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.stable.out new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.stable.out @@ -0,0 +1,126 @@ +stdout of test 'isaUUID.Bug-6784` in directory 'sql/test/BugTracker-2019` itself: + + +# 12:59:22 > +# 12:59:22 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=36427" "--set" "mapi_usock=/var/tmp/mtest-16881/.s.monetdb.36427" "--forcemito" "--dbpath=/home/kutsurak/work/src/monet/workdirs/MonetDB_Nov2019/build/install/var/MonetDB/mTests_sql_test_BugTracker-2019" "--set" "embedded_c=true" +# 12:59:22 > + +# MonetDB 5 server v11.35.0 +# This is an unreleased version +# Serving database 'mTests_sql_test_BugTracker-2019', using 4 threads +# Compiled for x86_64-pc-linux-gnu/64bit with 128bit integers +# Found 15.488 GiB available main-memory. +# Copyright (c) 1993 - July 2008 CWI. +# Copyright (c) August 2008 - 2019 MonetDB B.V., all rights reserved +# Visit https://www.monetdb.org/ for further information +# Listening for connection requests on mapi:monetdb://zarquon.zarniwoop.org:36427/ +# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-16881/.s.monetdb.36427 +# SQL catalog created, loading sql scripts once +# loading sql script: 09_like.sql +# loading sql script: 10_math.sql +# loading sql script: 12_url.sql +# loading sql script: 13_date.sql +# loading sql script: 14_inet.sql +# loading sql script: 15_querylog.sql +# loading sql script: 16_tracelog.sql +# loading sql script: 17_temporal.sql +# loading sql script: 18_index.sql +# loading sql script: 20_vacuum.sql +# loading sql script: 21_dependency_views.sql +# loading sql script: 22_clients.sql +# loading sql script: 23_skyserver.sql +# loading sql script: 25_debug.sql +# loading sql script: 26_sysmon.sql +# loading sql script: 27_rejects.sql +# loading sql script: 39_analytics.sql +# loading sql script: 39_analytics_hge.sql +# loading sql script: 40_json.sql +# loading sql script: 40_json_hge.sql +# loading sql script: 41_md5sum.sql +# loading sql script: 45_uuid.sql +# loading sql script: 46_profiler.sql +# loading sql script: 51_sys_schema_extension.sql +# loading sql script: 60_wlcr.sql +# loading sql script: 61_wlcr.sql +# loading sql script: 72_fits.sql +# loading sql script: 74_netcdf.sql +# loading sql script: 75_lidar.sql +# loading sql script: 75_storagemodel.sql +# loading sql script: 80_statistics.sql +# loading sql script: 80_udf.sql +# loading sql script: 80_udf_hge.sql +# loading sql script: 85_bam.sql +# loading sql script: 90_generator.sql +# loading sql script: 90_generator_hge.sql +# loading sql script: 99_system.sql +# MonetDB/SQL module loaded + +# 12:59:22 > +# 12:59:22 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-16881" "--port=36427" +# 12:59:22 > + +#select isauuid('this is not a uuid'); -- false +% .L2 # table_name +% L2 # name +% boolean # type +% 5 # length +[ false ] +#select isauuid(''); -- false +% .L2 # table_name +% L2 # name +% boolean # type +% 5 # length +[ false ] +#select isauuid(4); -- false +% .L2 # table_name +% L2 # name +% boolean # type +% 5 # length +[ false ] +#select isauuid('XYZaee1a538-aca1-381b-d9f4-8c29ef3f5'); -- false +% .L2 # table_name +% L2 # name +% boolean # type +% 5 # length +[ false ] +#select isauuid(uuid()); -- true +% .L2 # table_name +% L2 # name +% boolean # type +% 5 # length +[ true ] +#select isauuid('aee1a538-aca1-381b-d9f4-8c29ef3f5f34'); -- true +% .L2 # table_name +% L2 # name +% boolean # type +% 5 # length +[ true ] +#select isauuid('AEE1A538-ACA1-381B-D9F4-8C29EF3F5F34'); -- true +% .L2 # table_name +% L2 # name +% boolean # type +% 5 # length +[ true ] +#select isauuid(null); -- false +% .L2 # table_name +% L2 # name +% boolean # type +% 5 # length +[ false ] +#select cast('aee1a538-aca1-381b-d9f4-8c29ef3f5f34' as uuid); -- true +% .L2 # table_name +% L2 # name +% uuid # type +% 36 # length +[ aee1a538-aca1-381b-d9f4-8c29ef3f5f34 ] +#select cast('AEE1A538-ACA1-381B-D9F4-8C29EF3F5F34' as uuid); -- true +% .L2 # table_name +% L2 # name +% uuid # type +% 36 # length +[ aee1a538-aca1-381b-d9f4-8c29ef3f5f34 ] + +# 12:59:22 > +# 12:59:22 > "Done." +# 12:59:22 > + diff --git a/testing/exportutils.py b/testing/exportutils.py --- a/testing/exportutils.py +++ b/testing/exportutils.py @@ -10,9 +10,6 @@ defre = re.compile(r'^[ \t]*#[ \t]*defin # line starting with a "#" cldef = re.compile(r'^[ \t]*#', re.MULTILINE) -ifdef = re.compile(r'^[ \t]*#[ \t]*if') _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list