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

Reply via email to