Changeset: b89244f86b36 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b89244f86b36
Added Files:
sql/backends/monet5/vaults/fits.sql
sql/test/BugTracker-2015/Tests/prepare_unop_crash.Bug-3653.sql
sql/test/BugTracker-2015/Tests/prepare_unop_crash.Bug-3653.stable.err
sql/test/BugTracker-2015/Tests/prepare_unop_crash.Bug-3653.stable.out
Modified Files:
sql/backends/monet5/vaults/Makefile.ag
sql/common/sql_changeset.c
sql/include/sql_catalog.h
sql/server/rel_select.c
sql/storage/store.c
sql/test/BugTracker-2015/Tests/All
sql/test/BugTracker-2015/Tests/name_conflict.Bug-3650.stable.err
Branch: default
Log Message:
Merge with default
diffs (276 lines):
diff --git a/sql/backends/monet5/vaults/Makefile.ag
b/sql/backends/monet5/vaults/Makefile.ag
--- a/sql/backends/monet5/vaults/Makefile.ag
+++ b/sql/backends/monet5/vaults/Makefile.ag
@@ -78,6 +78,13 @@ headers_mseedmal = {
SOURCES = mseed.mal
}
+headers_mseedsql = {
+ COND = HAVE_MSEED
+ HEADERS = sql
+ DIR = libdir/monetdb5
+ SOURCES = mseed.sql
+}
+
headers_fitsmal = {
COND = HAVE_CFITSIO
HEADERS = mal
@@ -85,6 +92,13 @@ headers_fitsmal = {
SOURCES = fits.mal
}
+headers_fitssql = {
+ COND = HAVE_CFITSIO
+ HEADERS = sql
+ DIR = libdir/monetdb5
+ SOURCES = fits.sql
+}
+
headers_autoload = {
HEADERS = mal
DIR = libdir/monetdb5/autoload
@@ -106,4 +120,7 @@ headers_fitsautoload = {
}
EXTRA_DIST_DIR = Tests
-EXTRA_DIST = 70_vault.mal 71_mseed.mal 72_fits.mal fits.mal fits.h mseed.mal
mseed.h vault.mal vault.sql vault.h
+EXTRA_DIST = 70_vault.mal 71_mseed.mal 72_fits.mal \
+ fits.mal fits.sql fits.h \
+ mseed.mal mseed.sql mseed.h \
+ vault.mal vault.sql vault.h
diff --git a/sql/backends/monet5/vaults/fits.sql
b/sql/backends/monet5/vaults/fits.sql
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/vaults/fits.sql
@@ -0,0 +1,6 @@
+
+
+create procedure listdir(dirname string) external name fits.listdir;
+create procedure fitsattach(fname string) external name fits.attach;
+create procedure fitsload(tname string) external name fits.load;
+create procedure listdirpat(dirname string,pat string) external name
fits.listdirpattern;
diff --git a/sql/common/sql_changeset.c b/sql/common/sql_changeset.c
--- a/sql/common/sql_changeset.c
+++ b/sql/common/sql_changeset.c
@@ -98,3 +98,11 @@ cs_last_node(changeset * cs)
{
return cs->set->t;
}
+
+void
+cs_remove_node(changeset * cs, node *n)
+{
+ list_remove_node(cs->set, n);
+ if (cs->nelm == n)
+ cs->nelm = n->next;
+}
diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h
--- a/sql/include/sql_catalog.h
+++ b/sql/include/sql_catalog.h
@@ -197,6 +197,7 @@ extern node *cs_find_name(changeset * cs
extern node *cs_find_id(changeset * cs, int id);
extern node *cs_first_node(changeset * cs);
extern node *cs_last_node(changeset * cs);
+extern void cs_remove_node(changeset * cs, node *n);
typedef void *backend_code;
typedef size_t backend_stack;
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -3601,9 +3601,22 @@ rel_unop(mvc *sql, sql_rel **rel, symbol
return NULL;
t = exp_subtype(e);
- f = bind_func(sql, s, fname, t, NULL, type);
- if (!f)
- f = bind_func(sql, s, fname, t, NULL, F_AGGR);
+ if (!t) {
+ f = find_func(sql, s, fname, 1, type);
+ if (!f)
+ f = find_func(sql, s, fname, 1, F_AGGR);
+ if (f) {
+ sql_arg *a = f->func->ops->h->data;
+
+ t = &a->type;
+ if (rel_set_type_param(sql, t, e, 1) < 0)
+ return NULL;
+ }
+ } else {
+ f = bind_func(sql, s, fname, t, NULL, type);
+ if (!f)
+ f = bind_func(sql, s, fname, t, NULL, F_AGGR);
+ }
if (f && IS_AGGR(f->func))
return _rel_aggr(sql, rel, 0, s, fname, l->next, fs);
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -177,7 +177,7 @@ trans_drop_tmp(sql_trans *tr)
sql_table *t = n->data;
if (t->persistence == SQL_LOCAL_TEMP)
- list_remove_node(tmp->tables.set, n);
+ cs_remove_node(&tmp->tables, n);
n = nxt;
}
}
@@ -2321,7 +2321,7 @@ rollforward_changeset_updates(sql_trans
ts->dset =
list_new(tr->sa, ts->destroy);
list_move_data(ts->set,
ts->dset, tb);
//} else {
- //list_remove_node(ts->set,
tbn);
+ //cs_remove_node(ts, tbn);
//}
}
}
@@ -2911,7 +2911,7 @@ reset_changeset(sql_trans *tr, changeset
for (n = fs->nelm; n; ) {
node *nxt = n->next;
- list_remove_node(fs->set, n);
+ cs_remove_node(fs, n);
n = nxt;
}
fs->nelm = NULL;
@@ -2944,7 +2944,7 @@ reset_changeset(sql_trans *tr, changeset
sql_base *b = n->data;
fprintf(stderr, "#reset_cs free %s\n",
(b->name)?b->name:"help");
}
- list_remove_node(fs->set, n);
+ cs_remove_node(fs, n);
n = t;
} else { /* a new id */
sql_base *r = fd(tr, TR_OLD, pfb, b);
@@ -2975,7 +2975,7 @@ reset_changeset(sql_trans *tr, changeset
fprintf(stderr, "#reset_cs free %s\n",
(b->name)?b->name:"help");
}
- list_remove_node(fs->set, n);
+ cs_remove_node(fs, n);
n = t;
}
}
@@ -3092,7 +3092,7 @@ reset_schema(sql_trans *tr, sql_schema *
for (n = fs->tables.nelm; n; ) {
node *nxt = n->next;
- list_remove_node(fs->tables.set, n);
+ cs_remove_node(&fs->tables, n);
n = nxt;
}
fs->tables.nelm = NULL;
diff --git a/sql/test/BugTracker-2015/Tests/All
b/sql/test/BugTracker-2015/Tests/All
--- a/sql/test/BugTracker-2015/Tests/All
+++ b/sql/test/BugTracker-2015/Tests/All
@@ -1,3 +1,4 @@
inet-ordering.Bug-3646
sharp-alias.Bug-3467
name_conflict.Bug-3650
+prepare_unop_crash.Bug-3653
diff --git a/sql/test/BugTracker-2015/Tests/name_conflict.Bug-3650.stable.err
b/sql/test/BugTracker-2015/Tests/name_conflict.Bug-3650.stable.err
--- a/sql/test/BugTracker-2015/Tests/name_conflict.Bug-3650.stable.err
+++ b/sql/test/BugTracker-2015/Tests/name_conflict.Bug-3650.stable.err
@@ -30,7 +30,7 @@ stderr of test 'name_conflict.Bug-3650`
# 18:58:39 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-24602" "--port=35483"
# 18:58:39 >
-MAPI = (monetdb) /var/tmp/mtest-24602/.s.monetdb.35483
+MAPI = (monetdb) /var/tmp/mtest-32037/.s.monetdb.32270
QUERY = create table foo_bar (id integer);
ERROR = !CREATE TABLE: sys_foo_bar_id conflicts
diff --git a/sql/test/BugTracker-2015/Tests/prepare_unop_crash.Bug-3653.sql
b/sql/test/BugTracker-2015/Tests/prepare_unop_crash.Bug-3653.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2015/Tests/prepare_unop_crash.Bug-3653.sql
@@ -0,0 +1,1 @@
+PREPARE SELECT id FROM tables WHERE name = LOWER(?);
diff --git
a/sql/test/BugTracker-2015/Tests/prepare_unop_crash.Bug-3653.stable.err
b/sql/test/BugTracker-2015/Tests/prepare_unop_crash.Bug-3653.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2015/Tests/prepare_unop_crash.Bug-3653.stable.err
@@ -0,0 +1,37 @@
+stderr of test 'prepare_unop_crash.Bug-3653` in directory
'sql/test/BugTracker-2015` itself:
+
+
+# 08:58:48 >
+# 08:58:48 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=32270" "--set"
"mapi_usock=/var/tmp/mtest-32037/.s.monetdb.32270" "--set" "monet_prompt="
"--forcemito" "--set" "mal_listing=2"
"--dbpath=/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2015"
"--set" "mal_listing=0" "--set" "embedded_r=yes"
+# 08:58:48 >
+
+# builtin opt gdk_dbpath =
/home/niels/scratch/rc-clean/Linux-x86_64/var/monetdb5/dbfarm/demo
+# builtin opt gdk_debug = 0
+# builtin opt gdk_vmtrim = no
+# builtin opt monet_prompt = >
+# builtin opt monet_daemon = no
+# builtin opt mapi_port = 50000
+# builtin opt mapi_open = 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 = 32270
+# cmdline opt mapi_usock = /var/tmp/mtest-32037/.s.monetdb.32270
+# cmdline opt monet_prompt =
+# cmdline opt mal_listing = 2
+# cmdline opt gdk_dbpath =
/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2015
+# cmdline opt mal_listing = 0
+# cmdline opt embedded_r = yes
+# cmdline opt gdk_debug = 536870922
+
+# 08:58:49 >
+# 08:58:49 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-32037" "--port=32270"
+# 08:58:49 >
+
+
+# 08:58:49 >
+# 08:58:49 > "Done."
+# 08:58:49 >
+
diff --git
a/sql/test/BugTracker-2015/Tests/prepare_unop_crash.Bug-3653.stable.out
b/sql/test/BugTracker-2015/Tests/prepare_unop_crash.Bug-3653.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2015/Tests/prepare_unop_crash.Bug-3653.stable.out
@@ -0,0 +1,40 @@
+stdout of test 'prepare_unop_crash.Bug-3653` in directory
'sql/test/BugTracker-2015` itself:
+
+
+# 08:58:48 >
+# 08:58:48 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=32270" "--set"
"mapi_usock=/var/tmp/mtest-32037/.s.monetdb.32270" "--set" "monet_prompt="
"--forcemito" "--set" "mal_listing=2"
"--dbpath=/home/niels/scratch/rc-clean/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2015"
"--set" "mal_listing=0" "--set" "embedded_r=yes"
+# 08:58:48 >
+
+# MonetDB 5 server v11.19.8
+# This is an unreleased version
+# Serving database 'mTests_sql_test_BugTracker-2015', using 4 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically
linked
+# Found 7.333 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2015 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://localhost.nes.nl:32270/
+# Listening for UNIX domain connection requests on
mapi:monetdb:///var/tmp/mtest-32037/.s.monetdb.32270
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+# MonetDB/R module loaded
+
+Ready.
+
+# 08:58:49 >
+# 08:58:49 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-32037" "--port=32270"
+# 08:58:49 >
+
+#PREPARE SELECT id FROM tables WHERE name = LOWER(?);
+#PREPARE SELECT id FROM tables WHERE name = LOWER(?);
+% .prepare, .prepare, .prepare, .prepare, .prepare,
.prepare # table_name
+% type, digits, scale, schema, table, column # name
+% varchar, int, int, str, str, str # type
+% 4, 2, 1, 0, 6, 2 # length
+[ "int", 32, 0, "", "tables", "id" ]
+[ "clob", 0, 0, NULL, NULL, NULL ]
+
+# 08:58:49 >
+# 08:58:49 > "Done."
+# 08:58:49 >
+
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list