Changeset: 7b6a86b21952 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7b6a86b21952
Modified Files:
sql/backends/monet5/sql_gencode.c
Branch: pushcands
Log Message:
Reset backend before compiling a function
diffs (70 lines):
diff --git a/sql/backends/monet5/sql_gencode.c
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -720,8 +720,12 @@ backend_dumpstmt(backend *be, MalBlkPtr
{
mvc *m = be->mvc;
InstrPtr q, querylog = NULL;
- int old_mv = be->mvc_var;
- MalBlkPtr old_mb = be->mb;
+ backend backup;
+ rel_bin_stmt *s = NULL;
+ int res = 0;
+
+ memcpy(&backup, be, sizeof(backend));
+ backend_reset(be);
/* Always keep the SQL query around for monitoring */
if (query) {
@@ -760,14 +764,15 @@ backend_dumpstmt(backend *be, MalBlkPtr
}
be->mvc_var = getDestVar(q);
be->mb = mb;
- if (!sql_relation2stmt(be, r, top)) {
+ if (!(s = sql_relation2stmt(be, r, top))) {
if (querylog)
(void) pushInt(mb, querylog, mb->stop);
- return (be->mvc->errstr[0] == '\0') ? 0 : -1;
+ res = (be->mvc->errstr[0] == '\0') ? 0 : -1;
}
+ memcpy(be, &backup, sizeof(backend)); /* reset before returning */
+ if (!s)
+ return res;
- be->mvc_var = old_mv;
- be->mb = old_mb;
if (top && !be->depth && (m->type == Q_SCHEMA || m->type == Q_TRANS) &&
!GDKembedded()) {
q = newStmt(mb, sqlRef, exportOperationRef);
if (q == NULL) {
@@ -1373,11 +1378,12 @@ int
backend_create_subfunc(backend *be, sql_subfunc *f, list *ops)
{
int res;
- MalBlkPtr mb = be->mb;
+ backend backup;
- be->mb = NULL;
+ memcpy(&backup, be, sizeof(backend));
+ backend_reset(be);
res = backend_create_func(be, f->func, f->res, ops);
- be->mb = mb;
+ memcpy(be, &backup, sizeof(backend));
return res;
}
@@ -1385,11 +1391,12 @@ int
backend_create_subaggr(backend *be, sql_subfunc *f)
{
int res;
- MalBlkPtr mb = be->mb;
+ backend backup;
- be->mb = NULL;
+ memcpy(&backup, be, sizeof(backend));
+ backend_reset(be);
res = backend_create_func(be, f->func, f->res, NULL);
- be->mb = mb;
+ memcpy(be, &backup, sizeof(backend));
return res;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list