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

Reply via email to