Changeset: 018cf16b1c6e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=018cf16b1c6e
Modified Files:
sql/src/backends/monet5/sql_scenario.mx
Branch: default
Log Message:
keep prepared statements in result set, such that they can be removed
using Xclose.
diffs (34 lines):
diff -r 5d3ceb380e51 -r 018cf16b1c6e sql/src/backends/monet5/sql_scenario.mx
--- a/sql/src/backends/monet5/sql_scenario.mx Wed Dec 15 09:37:15 2010 +0100
+++ b/sql/src/backends/monet5/sql_scenario.mx Wed Dec 15 13:22:26 2010 +0100
@@ -1204,8 +1204,13 @@
v = (int) strtol(in->buf+in->pos+6,NULL,0);
t = res_tables_find(m->results, v);
- if (t)
+ if (t) {
+ cq *q = NULL;
+
+ if (t->query_type == Q_PREPARE && (q =
qc_find(m->qc, t->cur_col)) != NULL)
+ qc_delete(m->qc, q);
m->results = res_tables_remove(m->results, t);
+ }
in->pos = in->len; /* HACK: should use parsed
lenght */
return NULL;
}
@@ -1320,8 +1325,14 @@
(m->emode == m_prepare)?Q_PREPARE:
m->type,/* the type of the statement
*/
sql_escape_str(QUERY(m->scanner)));
-
scanner_query_processed(&(m->scanner));
+ /* keep prepared statements in list of results, such
+ that Xclose statements can clean them up */
+ if (be->q->type == Q_PREPARE) {
+ res_table *t = res_table_create(m->session->tr,
m->result_id++, 0, Q_PREPARE, m->results, NULL);
+ m->results = t;
+ t->cur_col = be->q->id;
+ }
be->q->code =
(backend_code)backend_dumpproc(be, c, be->q, s);
be->q->stk = 0;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list