Changeset: fa9e40ac1681 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fa9e40ac1681
Removed Files:
        sql/backends/monet5/Tests/pyapi32.sql
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql_gencode.c
        sql/server/rel_psm.c
        sql/server/rel_select.c
        sql/server/sql_parser.y
Branch: pythonloader
Log Message:

Revert to revision 5f26457e4859 (because varres arguments are likely not going 
to work).


diffs (232 lines):

diff --git a/sql/backends/monet5/Tests/pyapi32.sql 
b/sql/backends/monet5/Tests/pyapi32.sql
deleted file mode 100644
--- a/sql/backends/monet5/Tests/pyapi32.sql
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-START TRANSACTION;
-
-
-
-CREATE FUNCTION varres_test() RETURNS TABLE(*) LANGUAGE PYTHON {
-    return {'i': 5, 'j': 10};  
-};
-
-debug SELECT * FROM varres_test();
-SELECT * FROM varres_test();
-
-
-ROLLBACK;
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
@@ -1407,18 +1407,14 @@ rel2bin_table( mvc *sql, sql_rel *rel, l
                }
                l = sa_list(sql->sa);
                if (f->func->varres) {
-                       if (f->func->res) {
-                               for(i = 0, en = rel->exps->h, n = f->res->h; 
en; en = en->next, n = n->next, i++ ) {
-                                       sql_exp *exp = en->data;
-                                       sql_subtype *st = n->data;
-                                       const char *rnme = 
exp->rname?exp->rname:exp->l;
-                                       stmt *s = stmt_rs_column(sql->sa, psub, 
i, st); 
-                       
-                                       s = stmt_alias(sql->sa, s, rnme, 
exp->name);
-                                       list_append(l, s);
-                               }
-                       } else {
-                               list_append(l, psub);   
+                       for(i=0, en = rel->exps->h, n = f->res->h; en; en = 
en->next, n = n->next, i++ ) {
+                               sql_exp *exp = en->data;
+                               sql_subtype *st = n->data;
+                               const char *rnme = exp->rname?exp->rname:exp->l;
+                               stmt *s = stmt_rs_column(sql->sa, psub, i, st); 
+               
+                               s = stmt_alias(sql->sa, s, rnme, exp->name);
+                               list_append(l, s);
                        }
                } else {
                        for(i = 0, n = f->func->res->h; n; n = n->next, i++ ) {
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
@@ -2485,63 +2485,49 @@ static int
                                list *l = lst->op4.lval;
                                int cnt = list_length(l);
                                stmt *first;
-                               if (cnt > 0) {
-                                       n = l->h;
-                                       first = n->data;
-
-                                       /* single value result, has a fast exit 
*/
-                                       if (cnt == 1 && first->nrcols <= 0 ){
-                                               stmt *c = n->data;
-                                               sql_subtype *t = tail_type(c);
-                                               const char *tname = 
table_name(sql->mvc->sa, c);
-                                               const char *sname = 
schema_name(sql->mvc->sa, c);
-                                               const char *_empty = "";
-                                               const char *tn = (tname) ? 
tname : _empty;
-                                               const char *sn = (sname) ? 
sname : _empty;
-                                               const char *cn = 
column_name(sql->mvc->sa, c);
-                                               const char *ntn = 
sql_escape_ident(tn);
-                                               const char *nsn = 
sql_escape_ident(sn);
-                                               size_t fqtnl = strlen(ntn) + 1 
+ strlen(nsn) + 1;
-                                               char *fqtn = NEW_ARRAY(char, 
fqtnl);
-
-                                               snprintf(fqtn, fqtnl, "%s.%s", 
nsn, ntn);
-
-                                               q = newStmt(mb, sqlRef, 
resultSetRef);
-                                               if (q) {
-                                                       s->nr = getDestVar(q);
-                                                       q = pushStr(mb, q, 
fqtn);
-                                                       q = pushStr(mb, q, cn);
-                                                       q = pushStr(mb, q, 
t->type->localtype == TYPE_void ? "char" : t->type->sqlname);
-                                                       q = pushInt(mb, q, 
t->digits);
-                                                       q = pushInt(mb, q, 
t->scale);
-                                                       q = pushInt(mb, q, 
t->type->eclass);
-                                                       q = pushArgument(mb, q, 
c->nr);
-                                               }
-
-                                               c_delete(ntn);
-                                               c_delete(nsn);
-                                               _DELETE(fqtn);
-                                               if (q == NULL)
-                                                       return -1;
-                                               break;
-                                       }
-                                       if ( (s->nr =dump_header(sql->mvc, mb, 
s, l)) < 0)
-                                               return -1;
-                               } else {
+
+                               n = l->h;
+                               first = n->data;
+
+                               /* single value result, has a fast exit */
+                               if (cnt == 1 && first->nrcols <= 0 ){
+                                       stmt *c = n->data;
+                                       sql_subtype *t = tail_type(c);
+                                       const char *tname = 
table_name(sql->mvc->sa, c);
+                                       const char *sname = 
schema_name(sql->mvc->sa, c);
+                                       const char *_empty = "";
+                                       const char *tn = (tname) ? tname : 
_empty;
+                                       const char *sn = (sname) ? sname : 
_empty;
+                                       const char *cn = 
column_name(sql->mvc->sa, c);
+                                       const char *ntn = sql_escape_ident(tn);
+                                       const char *nsn = sql_escape_ident(sn);
+                                       size_t fqtnl = strlen(ntn) + 1 + 
strlen(nsn) + 1;
+                                       char *fqtn = NEW_ARRAY(char, fqtnl);
+
+                                       snprintf(fqtn, fqtnl, "%s.%s", nsn, 
ntn);
+
                                        q = newStmt(mb, sqlRef, resultSetRef);
                                        if (q) {
-                                               const char *_empty = "";
-
                                                s->nr = getDestVar(q);
-                                               q = pushStr(mb, q, _empty);
-                                               q = pushStr(mb, q, _empty);
-                                               q = pushStr(mb, q, "char");
-                                               q = pushInt(mb, q, 0);
-                                               q = pushInt(mb, q, 0);
-                                               q = pushInt(mb, q, 0);
-                                               q = pushArgument(mb, q, 1);
+                                               q = pushStr(mb, q, fqtn);
+                                               q = pushStr(mb, q, cn);
+                                               q = pushStr(mb, q, 
t->type->localtype == TYPE_void ? "char" : t->type->sqlname);
+                                               q = pushInt(mb, q, t->digits);
+                                               q = pushInt(mb, q, t->scale);
+                                               q = pushInt(mb, q, 
t->type->eclass);
+                                               q = pushArgument(mb, q, c->nr);
                                        }
+
+                                       c_delete(ntn);
+                                       c_delete(nsn);
+                                       _DELETE(fqtn);
+                                       if (q == NULL)
+                                               return -1;
+                                       break;
                                }
+                               if ( (s->nr =dump_header(sql->mvc, mb, s, l)) < 
0)
+                                       return -1;
+
                        } else {
                                q = newStmt(mb, sqlRef, raiseRef);
                                q = pushStr(mb, q, "not a valid output list\n");
diff --git a/sql/server/rel_psm.c b/sql/server/rel_psm.c
--- a/sql/server/rel_psm.c
+++ b/sql/server/rel_psm.c
@@ -694,7 +694,7 @@ rel_create_func(mvc *sql, dlist *qname, 
        int instantiate = (sql->emode == m_instantiate);
        int deps = (sql->emode == m_deps);
        int create = (!instantiate && !deps);
-       bit vararg = FALSE, varres = FALSE;
+       bit vararg = FALSE;
 
        char is_table = (res && res->token == SQL_TABLE);
        char is_aggr = (type == F_AGGR);
@@ -771,15 +771,10 @@ rel_create_func(mvc *sql, dlist *qname, 
                        if (!l)
                                l = sa_list(sql->sa);
                        if (res) {
-                               if (strcmp(res->data.lval->h->data.sval, "*") 
== 0) {
-                                       varres = TRUE;
-                                       restype = NULL;
-                               } else {
-                                       restype = result_type(sql, res);
-                                       if (!restype)
-                                               return sql_error(sql, 01,
-                                                               "CREATE %s%s: 
failed to get restype", KF, F);
-                               }
+                               restype = result_type(sql, res);
+                               if (!restype)
+                                       return sql_error(sql, 01,
+                                                       "CREATE %s%s: failed to 
get restype", KF, F);
                        }
                        if (body && lang > FUNC_LANG_SQL) {
                                char *lang_body = body->h->data.sval;
@@ -791,7 +786,7 @@ rel_create_func(mvc *sql, dlist *qname, 
                                        (lang == 
FUNC_LANG_MAP_PY)?"pyapimap":"unknown";
                                sql->params = NULL;
                                if (create) {
-                                       f = mvc_create_func(sql, sql->sa, s, 
fname, l, restype, type, lang,  mod, fname, lang_body, (type == 
F_LOADER)?TRUE:varres, vararg);
+                                       f = mvc_create_func(sql, sql->sa, s, 
fname, l, restype, type, lang,  mod, fname, lang_body, (type == 
F_LOADER)?TRUE:FALSE, vararg);
                                } else if (!sf) {
                                        return sql_error(sql, 01, "CREATE %s%s: 
R function %s.%s not bound", KF, F, s->base.name, fname );
                                } /*else {
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
@@ -587,12 +587,10 @@ rel_named_table_function(mvc *sql, sql_r
 
        /* for each column add table.column name */
        exps = new_exp_list(sql->sa);
-       if (!sf->func->varres) {
-               for (m = sf->func->res->h; m; m = m->next) {
-                       sql_arg *a = m->data;
-
-                       append(exps, exp_column(sql->sa, tname, a->name, 
&a->type, CARD_MULTI, 1, 0));
-               }
+       for (m = sf->func->res->h; m; m = m->next) {
+               sql_arg *a = m->data;
+
+               append(exps, exp_column(sql->sa, tname, a->name, &a->type, 
CARD_MULTI, 1, 0));
        }
        return rel_table_func(sql->sa, rel, e, exps, (sq != NULL));
 }
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -2165,12 +2165,6 @@ table_function_column_list:
                                  append_string($$, $3);
                                  append_type($$, &$4);
                                }
-  | '*'
-  {
-       $$ = L();
-       append_string($$, "*");
-       append_type($$, NULL);
-  }
   ;
 
 func_data_type:
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to