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