Changeset: b496d502ec4e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b496d502ec4e
Modified Files:
        monetdb5/mal/mal_module.c
        sql/backends/monet5/sql_cat.c
        sql/backends/monet5/sql_gencode.c
Branch: Nov2019
Log Message:

Merge with Apr2019 branch.


diffs (75 lines):

diff --git a/monetdb5/mal/mal_module.c b/monetdb5/mal/mal_module.c
--- a/monetdb5/mal/mal_module.c
+++ b/monetdb5/mal/mal_module.c
@@ -117,7 +117,7 @@ Module getModule(str name) {
        int index = getModuleIndex(name);
        Module m = moduleIndex[index];
        while(m) {
-               if (strcmp(name, m->name) == 0)
+               if (name == m->name)
                        return m;
                m = m->link;
        }
diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c
--- a/sql/backends/monet5/sql_cat.c
+++ b/sql/backends/monet5/sql_cat.c
@@ -782,10 +782,15 @@ create_func(mvc *sql, char *sname, char 
                s = cur_schema(sql);
        nf = mvc_create_func(sql, NULL, s, f->base.name, f->ops, f->res, 
f->type, f->lang, f->mod, f->imp, f->query, f->varres, f->vararg, f->system);
        assert(nf);
-       if (nf->lang == FUNC_LANG_INT || nf->lang == FUNC_LANG_MAL) { /* 
FUNC_LANG_INT shouldn't be reachable, but leave it here */
+       switch (nf->lang) {
+       case FUNC_LANG_INT:
+       case FUNC_LANG_MAL: /* shouldn't be reachable, but leave it here */
                if (!backend_resolve_function(sql, nf))
                        throw(SQL,"sql.create_func", SQLSTATE(3F000) "CREATE 
%s%s: external name %s.%s not bound", KF, F, nf->mod, nf->base.name);
-       } else if (nf->lang == FUNC_LANG_SQL) {
+               if (nf->query == NULL)
+                       break;
+               /* fall through */
+       case FUNC_LANG_SQL: {
                char *buf;
                sql_rel *r = NULL;
                sql_allocator *sa = sql->sa;
@@ -825,6 +830,9 @@ create_func(mvc *sql, char *sname, char 
                sa_destroy(sql->sa);
                sql->sa = sa;
        }
+       default:
+               break;
+       }
        return MAL_SUCCEED;
 }
 
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
@@ -855,19 +855,19 @@ backend_call(backend *be, Client c, cq *
 int
 monet5_resolve_function(ptr M, sql_func *f)
 {
+       str mname = getName(f->mod), fname = getName(f->imp);
        (void) M;
 
-       for (Module m = getModule(f->mod); m; m = m->link) {
-               if (strcmp(m->name, f->mod) == 0) {
-                       Symbol s = m->space[(int) (getSymbolIndex(f->imp))];
-                       for (; s; s = s->peer) {
-                               InstrPtr sig = getSignature(s);
-                               int argc = sig->argc - sig->retc;
+       if (!mname || !fname)
+               return 0;
 
-                               if (strcmp(s->name, f->imp) == 0 && ((!f->ops 
&& argc == 0) || list_length(f->ops) == argc || (sig->varargs & VARARGS) == 
VARARGS))
-                                       return 1;
+       for (Module m = getModule(mname); m; m = m->link) {
+               for (Symbol s = findSymbolInModule(m, fname); s; s = s->peer) {
+                       InstrPtr sig = getSignature(s);
+                       int argc = sig->argc - sig->retc;
 
-                       }
+                       if ((!f->ops && argc == 0) || list_length(f->ops) == 
argc || (sig->varargs & VARARGS) == VARARGS)
+                               return 1;
                }
        }
        return 0;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to