Changeset: 358e2ad0ee7d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=358e2ad0ee7d
Modified Files:
sql/backends/monet5/sql_gencode.c
Branch: default
Log Message:
in case of topn look at project for the return list
diffs (48 lines):
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
@@ -242,11 +242,14 @@ table_func_create_result( MalBlkPtr mb,
static InstrPtr
relational_func_create_result( MalBlkPtr mb, InstrPtr q, sql_rel *f)
{
+ sql_rel *r = f;
node *n;
int i;
+ if (is_topn(f->op))
+ r = f->l;
q->argc = q->retc = 0;
- for (i = 0, n = f->exps->h; n; n = n->next, i++ ) {
+ for (i = 0, n = r->exps->h; n; n = n->next, i++ ) {
sql_exp *e = n->data;
int type = exp_subtype(e)->type->localtype;
@@ -334,7 +337,10 @@ _create_relational_remote(mvc *m, char *
int *lret = SA_NEW_ARRAY(m->sa, int, list_length(rel->exps));
int *rret = SA_NEW_ARRAY(m->sa, int, list_length(rel->exps));
char old = name[0];
+ sql_rel *r = rel;
+ if (is_topn(r->op))
+ r = rel->l;
/* dirty hack, rename (change first char of name) L->l, local
* functions name start with 'l' */
name[0] = 'l';
@@ -370,7 +376,7 @@ _create_relational_remote(mvc *m, char *
}
/* declare return variables */
- for (i = 0, n = rel->exps->h; n; n = n->next, i++ ) {
+ for (i = 0, n = r->exps->h; n; n = n->next, i++ ) {
sql_exp *e = n->data;
int type = exp_subtype(e)->type->localtype;
@@ -404,7 +410,7 @@ _create_relational_remote(mvc *m, char *
p = pushStr(curBlk, p, userRef);
p = pushStr(curBlk, p, name);
- for (i = 0, n = rel->exps->h; n; n = n->next, i++ ) {
+ for (i = 0, n = r->exps->h; n; n = n->next, i++ ) {
/* x1 := remote.put(q, :type) */
o = newFcnCall(curBlk, remoteRef, putRef);
o = pushArgument(curBlk, o, q);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list