Update of /cvsroot/monetdb/sql/src/backends/monet5
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv23665

Modified Files:
        sql.mx sql_gencode.mx sql_result.mx 
Log Message:
The warning of the rsResult is dropped.
The result header and chunking result set are wrapped.


U sql_result.mx
Index: sql_result.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql_result.mx,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -d -r1.105 -r1.106
--- sql_result.mx       29 Dec 2008 21:30:07 -0000      1.105
+++ sql_result.mx       1 Jan 2009 18:44:46 -0000       1.106
@@ -31,7 +31,8 @@
 extern int mvc_export_affrows(mvc *m, stream *s, lng val, str w);
 extern int mvc_export_operation(mvc *m, stream *s, str w);
 extern int mvc_export_value( mvc *m, stream *s, int qtype, str tn, str cn, str 
type, int d, int sc, int eclass, ptr p, int mtype, str w, str ns);
-extern int mvc_export_result(mvc *c, stream *s, int res_id, str w);
+extern int mvc_export_result(mvc *c, stream *s, int res_id);
+extern int mvc_export_head(mvc *c, stream *s, int res_id);
 extern int mvc_export_prepare(mvc *c, stream *s, cq *q, str w);
 extern int mvc_export_chunk(mvc *m, stream *s, int res_id, BUN offset, BUN nr);
 
@@ -980,10 +981,10 @@
        return res;
 }
 
-int
-mvc_export_result(mvc *m, stream *s, int res_id, str w)
+static int
+mvc_export_head_intern(mvc *m, stream *s, int res_id, int flag)
 {
-       int i, clean = 0, res = 0;
+       int i, res = 0;
        BUN count;
        res_table *t = res_tables_find(m->results, res_id);
        BAT *order = NULL;
@@ -991,11 +992,6 @@
        if (!s || !t)
                return 0;
 
-       /* we shouldn't have anything else but Q_TABLE here */
-       assert(t->query_type == Q_TABLE);
-       if (t->tsep)
-               return mvc_export_file(m, s, t);
-
        /* query type: Q_TABLE */
        if (!(stream_write(s, "&1 ", 3, 1) == 1))
                return -1;
@@ -1006,12 +1002,14 @@
                return -1;
 
        /* tuple count */
-       if (t->order) {
-               order = BATdescriptor(t->order);
+       if (flag) {
+               if (t->order) {
+                       order = BATdescriptor(t->order);
 
-               count = BATcount(order);
-       } else
-               count = 1;
+                       count = BATcount(order);
+               } else
+                       count = 1;
+       }
        if (!mvc_send_lng(s, (lng) count) ||
                        stream_write(s, " ", 1, 1) != 1)
                return export_error(order);
@@ -1074,8 +1072,37 @@
        if (stream_write(s, " # length\n", 10, 1) != 1)
                return export_error(order);
 
+       if ( order)
+               BBPunfix(order->batCacheid);
+       return res;
+}
+
+int
+mvc_export_head(mvc *m, stream *s, int res_id){
+       return mvc_export_head_intern(m,s,res_id,FALSE);
+}
+
+int
+mvc_export_result(mvc *m, stream *s, int res_id)
+{
+       int clean = 0, res = 0;
+       BUN count;
+       res_table *t = res_tables_find(m->results, res_id);
+       BAT *order = NULL;
+
+       if (!s || !t)
+               return 0;
+
+       /* we shouldn't have anything else but Q_TABLE here */
+       assert(t->query_type == Q_TABLE);
+       if (t->tsep)
+               return mvc_export_file(m, s, t);
+
+       mvc_export_head_intern(m,s,res_id,TRUE);
+
        if (!t->order)
                return mvc_export_row(m, s, t, "[ ", ",\t", "\t]\n", "\"", 
"NULL");
+       order = BATdescriptor(t->order);
 
        count = m->reply_size;
        if (count == 0 || count >= BATcount(order)) {
@@ -1088,7 +1115,7 @@
                m->results = res_tables_remove(m->results, t);
 
        if (res > 0)
-               res = mvc_export_warning(s, w);
+               res = mvc_export_warning(s, "");
        return res;
 }
 
@@ -1103,14 +1130,6 @@
        if (!s || !t)
                return 0;
 
-       order = BATdescriptor(t->order);
-       cnt = nr;
-       if (cnt == 0) 
-               cnt = BATcount(order);
-       if (offset >= BATcount(order))
-               cnt = 0;
-       if (offset + cnt > BATcount(order)) 
-               cnt = BATcount(order) - offset;
 
        /* query type: Q_BLOCK */
        if (!(stream_write(s, "&6 ", 3, 1) == 1))
@@ -1126,6 +1145,15 @@
                        stream_write(s, " ", 1, 1) != 1)
                return export_error(order);
 
+       order = BATdescriptor(t->order);
+       cnt = nr;
+       if (cnt == 0) 
+               cnt = BATcount(order);
+       if (offset >= BATcount(order))
+               cnt = 0;
+       if (offset + cnt > BATcount(order)) 
+               cnt = BATcount(order) - offset;
+
        /* row count */
        if (!mvc_send_lng(s, (lng) cnt) || 
                        stream_write(s, " ", 1, 1) != 1)

U sql_gencode.mx
Index: sql_gencode.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql_gencode.mx,v
retrieving revision 1.305
retrieving revision 1.306
diff -u -d -r1.305 -r1.306
--- sql_gencode.mx      21 Dec 2008 19:38:21 -0000      1.305
+++ sql_gencode.mx      1 Jan 2009 18:44:46 -0000       1.306
@@ -1692,7 +1692,6 @@
                                q = newStmt2(mb, sqlRef, exportResultRef);
                                q = pushArgument(mb, q, file);
                                q = pushArgument(mb, q, s->nr);
-                               q = pushStr(mb, q, ""); /* warning */
                                if (s->type == st_export && s->op4.stval) {
                                        q = newStmt(mb, "streams", "close");
                                        q = pushArgument(mb, q, file);

U sql.mx
Index: sql.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql.mx,v
retrieving revision 1.304
retrieving revision 1.305
diff -u -d -r1.304 -r1.305
--- sql.mx      27 Dec 2008 21:23:11 -0000      1.304
+++ sql.mx      1 Jan 2009 18:44:46 -0000       1.305
@@ -201,10 +201,22 @@
 address mvc_drop_declared_tables_wrap
 comment "drop top n declared tables"; 
 
-pattern exportResult{unsafe}(s:streams, res_id:int, w:str) :void
+pattern exportHead{unsafe}(s:streams, res_id:int) :void
+address mvc_export_head_wrap
+comment "Export a result (in order) to stream s"; 
+
+pattern exportResult{unsafe}(s:streams, res_id:int) :void
 address mvc_export_result_wrap
 comment "Export a result (in order) to stream s"; 
 
+pattern exportChunk{unsafe}(s:streams, res_id:int) :void
+address mvc_export_chunk_wrap
+comment "Export a chunk of the result set (in order) to stream s"; 
+
+pattern exportChunk{unsafe}(s:streams, res_id:int, offset:int, nr:int) :void
+address mvc_export_chunk_wrap
+comment "Export a chunk of the result set (in order) to stream s"; 
+
 pattern exportOperation{unsafe}(w:str) :void
 address mvc_export_operation_wrap
 comment "Export result of schema/transaction queries"; 
@@ -796,6 +808,8 @@
 
 sql5_export str mvc_affected_rows_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
 sql5_export str mvc_export_result_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
+sql5_export str mvc_export_head_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
+sql5_export str mvc_export_chunk_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
 sql5_export str mvc_export_operation_wrap(Client cntxt, MalBlkPtr mb, 
MalStkPtr stk, InstrPtr pci);
 sql5_export str mvc_export_value_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
 sql5_export str mvc_import_table_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
@@ -1949,7 +1963,27 @@
        return NULL;
 }
 
-/* str mvc_export_result_wrap(int *ret, stream **s, int *res_id, str *w); */
+/* str mvc_export_head_wrap(int *ret, stream **s, int *res_id); */
+str
+mvc_export_head_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+       backend *b = NULL;
+       mvc *c = NULL;
+       str msg = getContext(cntxt,mb, &c, &b);
+       int *ret  = (int *) getArgReference(stk, pci, 0);
+       stream **s  = (stream **) getArgReference(stk, pci, 1);
+       int *res_id = (int *) getArgReference(stk, pci, 2);
+
+       (void) cntxt;
+       if (msg)
+               return msg;
+       if (mvc_export_head(c, *s, *res_id)) {
+               throw(SQL, "sql.exportHead", "failed");
+       }
+       (void)ret;
+       return NULL;
+}
+/* str mvc_export_result_wrap(int *ret, stream **s, int *res_id); */
 str
 mvc_export_result_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
@@ -1959,17 +1993,43 @@
        int *ret  = (int *) getArgReference(stk, pci, 0);
        stream **s  = (stream **) getArgReference(stk, pci, 1);
        int *res_id = (int *) getArgReference(stk, pci, 2);
-       str *w = (str *) getArgReference(stk, pci, 3);
 
        (void) cntxt;
        if (msg)
                return msg;
-       if (mvc_export_result(c, *s, *res_id, *w)) {
+       if (mvc_export_result(c, *s, *res_id)) {
                throw(SQL, "sql.exportResult", "failed");
        }
        (void)ret;
        return NULL;
 }
+/* str mvc_export_chunk_wrap(int *ret, stream **s, int *res_id, str *w); */
+str
+mvc_export_chunk_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+       backend *b = NULL;
+       mvc *c = NULL;
+       str msg = getContext(cntxt,mb, &c, &b);
+       int *ret  = (int *) getArgReference(stk, pci, 0);
+       stream **s  = (stream **) getArgReference(stk, pci, 1);
+       int *res_id = (int *) getArgReference(stk, pci, 2);
+       BUN     offset = 0;
+       BUN     nr = 0;
+
+       if ( pci->argc == 5){
+               offset = *(BUN *) getArgReference(stk,pci,3);
+               nr = *(BUN *) getArgReference(stk,pci,4);
+       } 
+
+       (void) cntxt;
+       if (msg)
+               return msg;
+       if (mvc_export_chunk(c, *s, *res_id, offset, nr)) {
+               throw(SQL, "sql.exportChunk", "failed");
+       }
+       (void)ret;
+       return NULL;
+}
 
 /* str mvc_export_operation_wrap(int *ret, str *w); */
 str


------------------------------------------------------------------------------
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to