Changeset: 3ad705bdfa08 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3ad705bdfa08
Modified Files:
        monetdb5/extras/jaql/jaqlgencode.c
Branch: Oct2012
Log Message:

group into: simplify preparing new array


diffs (93 lines):

diff --git a/monetdb5/extras/jaql/jaqlgencode.c 
b/monetdb5/extras/jaql/jaqlgencode.c
--- a/monetdb5/extras/jaql/jaqlgencode.c
+++ b/monetdb5/extras/jaql/jaqlgencode.c
@@ -5938,65 +5938,8 @@ dumptree(jc *j, Client cntxt, MalBlkPtr 
                                        if (w == NULL) {
                                                MALCOMMENT(mb, "simple group 
into {");
                                                /* simple "into" query: 
equivalent of a single group */
-                                               q = newInstruction(mb, 
ASSIGNsymbol);
-                                               setModuleId(q, algebraRef);
-                                               setFunctionId(q, 
putName("selectH", 7));
-                                               q = pushReturn(mb, q, 
newTmpVariable(mb, TYPE_any));
-                                               q = pushArgument(mb, q, j->j5);
-                                               q = pushOid(mb, q, (oid)0);
-                                               a = getArg(q, 0);
-                                               pushInstruction(mb, q);
-                                               q = newInstruction(mb, 
ASSIGNsymbol);
-                                               setModuleId(q, algebraRef);
-                                               setFunctionId(q, 
putName("kdifference", 11));
-                                               q = pushReturn(mb, q, 
newTmpVariable(mb, TYPE_any));
-                                               q = pushArgument(mb, q, j->j5);
-                                               q = pushArgument(mb, q, a);
-                                               j->j5 = getArg(q, 0);
-                                               pushInstruction(mb, q);
                                                b = dumpnextid(mb, j->j1);
-                                               q = newInstruction(mb, 
ASSIGNsymbol);
-                                               setModuleId(q, algebraRef);
-                                               setFunctionId(q, projectRef);
-                                               q = pushReturn(mb, q, 
newTmpVariable(mb, TYPE_any));
-                                               q = pushArgument(mb, q, b);
-                                               q = pushArgument(mb, q, a);
-                                               a = getArg(q, 0);
-                                               pushInstruction(mb, q);
-                                               q = newInstruction(mb, 
ASSIGNsymbol);
-                                               setModuleId(q, batRef);
-                                               setFunctionId(q, insertRef);
-                                               q = pushReturn(mb, q, 
newTmpVariable(mb, TYPE_any));
-                                               q = pushArgument(mb, q, a);
-                                               q = pushOid(mb, q, (oid)0);
-                                               q = pushArgument(mb, q, b);
-                                               a = getArg(q, 0);
-                                               pushInstruction(mb, q);
-                                               q = newInstruction(mb, 
ASSIGNsymbol);
-                                               setModuleId(q, batRef);
-                                               setFunctionId(q, insertRef);
-                                               q = pushReturn(mb, q, 
newTmpVariable(mb, TYPE_any));
-                                               q = pushArgument(mb, q, a);
-                                               q = pushArgument(mb, q, j->j5);
-                                               j->j5 = getArg(q, 0);
-                                               pushInstruction(mb, q);
-
-                                               q = newInstruction(mb, 
ASSIGNsymbol);
-                                               setModuleId(q, batRef);
-                                               setFunctionId(q, newRef);
-                                               q = pushReturn(mb, q, 
newTmpVariable(mb, TYPE_any));
-                                               q = pushType(mb, q, TYPE_oid);
-                                               q = pushType(mb, q, TYPE_bte);
-                                               c = getArg(q, 0);
-                                               pushInstruction(mb, q);
-                                               q = newInstruction(mb, 
ASSIGNsymbol);
-                                               setModuleId(q, batRef);
-                                               setFunctionId(q, insertRef);
-                                               q = pushReturn(mb, q, 
newTmpVariable(mb, TYPE_any));
-                                               q = pushArgument(mb, q, c);
-                                               q = pushArgument(mb, q, j->j1);
-                                               j->j1 = getArg(q, 0);
-                                               pushInstruction(mb, q);
+                                               dumpbatwritable(j, mb, 1);
                                                q = newInstruction(mb, 
ASSIGNsymbol);
                                                setModuleId(q, batRef);
                                                setFunctionId(q, insertRef);
@@ -6006,6 +5949,22 @@ dumptree(jc *j, Client cntxt, MalBlkPtr 
                                                q = pushBte(mb, q, 'a');
                                                j->j1 = getArg(q, 0);
                                                pushInstruction(mb, q);
+                                               dumpbatwritable(j, mb, 5);
+                                               q = newInstruction(mb, 
ASSIGNsymbol);
+                                               setModuleId(q, batRef);
+                                               setFunctionId(q, insertRef);
+                                               q = pushReturn(mb, q, 
newTmpVariable(mb, TYPE_any));
+                                               q = pushArgument(mb, q, j->j5);
+                                               q = pushArgument(mb, q, b);
+                                               if (j->startoid == 0) {
+                                                       q = pushOid(mb, q, 
(oid)0);
+                                               } else {
+                                                       q = pushArgument(mb, q, 
j->startoid);
+                                               }
+                                               j->j5 = getArg(q, 0);
+                                               pushInstruction(mb, q);
+
+                                               j->startoid = b;
 
                                                t->type = j_transform;
                                                t->tval1 = 
GDKzalloc(sizeof(tree));
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to