Update of /cvsroot/monetdb/sql/src/backends/monet4
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv8785/backends/monet4

Modified Files:
        sql_gencode.mx sql_session.mx 
Log Message:
when a 'relational query fails' we no correctly reset the mvc status

embedded client now uses the renamed mapi module

gencode now handles decimal hacks also for functions with n arguments
sql_optimizer: for now disabled JoinPath optimizer


Index: sql_session.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet4/sql_session.mx,v
retrieving revision 1.237
retrieving revision 1.238
diff -u -d -r1.237 -r1.238
--- sql_session.mx      15 Jan 2008 10:42:52 -0000      1.237
+++ sql_session.mx      27 Jan 2008 15:09:24 -0000      1.238
@@ -122,6 +122,7 @@
        stmt *s = NULL;
 
        if (mvc_debug_on(c,16384)) {
+               int status = c->session->status;
                sql_rel *r;
                printf("# semantic relational algebra\n");
                r = rel_semantic(c, c->sym);
@@ -130,7 +131,7 @@
                                printf("# %s\n", c->errstr);
                                return NULL;
                        } else {
-                               c->session->status = 0;
+                               c->session->status = status;
                                printf("# falling back to direct mode \n");
                                s = output_semantic(c, NULL, c->sym);
                        }

Index: sql_gencode.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet4/sql_gencode.mx,v
retrieving revision 1.167
retrieving revision 1.168
diff -u -d -r1.167 -r1.168
--- sql_gencode.mx      11 Jan 2008 10:51:57 -0000      1.167
+++ sql_gencode.mx      27 Jan 2008 15:09:24 -0000      1.168
@@ -899,8 +899,8 @@
 
                        buflen = strlen(fimp) + SMALLBUFSIZ;
                        buf = NEW_ARRAY(char, buflen + 1);
-                       dec_func[0] = 0;
                        backend_create_func(sql, s->op4.funcval->func); 
+                       dec_func[0] = 0;
                        if (strcmp(fimp, "round")==0 &&
                            tpe->type->eclass == EC_DEC) {
                                len = snprintf(dec_func, SMALLBUFSIZ, "%u,%u,",
@@ -921,13 +921,24 @@
                }
                case st_Nop:{
                        char *fimp = sql_func_imp(s->op4.funcval->func);
+                       sql_subtype *tpe = NULL;
                        int opslen = 0;
                        char *ops;
                        node *n;
                        int cnt = list_length(s->op1.stval->op1.lval);
+                       char dec_func[SMALLBUFSIZ];
 
                        backend_create_func(sql, s->op4.funcval->func); 
                        backend_dumpstmt_(s->op1.stval, nr, sql);       /* dump 
operands */
+                       if (cnt)
+                               tpe = 
tail_type(s->op1.stval->op1.lval->h->data);
+                       dec_func[0] = 0;
+                       if (strcmp(fimp, "round")==0 && tpe &&
+                           tpe->type->eclass == EC_DEC) {
+                               len = snprintf(dec_func, SMALLBUFSIZ, ",%u,%u",
+                               tpe->digits, tpe->scale);
+                               assert(len < SMALLBUFSIZ);
+                       }
                        write_head(sql, -s->nr);
                        if (s->nrcols) {
                                stmt *h;
@@ -951,7 +962,8 @@
                                                stmt *op = n->data;
                                                int n = op->nr;
        
-                                               opslen += snprintf(ops + 
opslen, buflen - opslen, "%cs%d", (opslen) ? ',' : ' ', n);
+                                               opslen += snprintf(ops + 
opslen, buflen - opslen, "%cs%d%s", (opslen) ? ',' : ' ', n, dec_func);
+                                               dec_func[0] = 0;
                                        }
                                }
                                buflen = strlen(fimp) + opslen + SMALLBUFSIZ;
@@ -973,7 +985,8 @@
                                                stmt *op = n->data;
                                                int n = op->nr;
 
-                                               opslen += snprintf(ops + 
opslen, buflen - opslen, "%cs%d", (opslen) ? ',' : ' ', n);
+                                               opslen += snprintf(ops + 
opslen, buflen - opslen, "%cs%d%s", (opslen) ? ',' : ' ', n, dec_func);
+                                               dec_func[0] = 0;
                                        }
                                }
                                buflen = strlen(fimp) + opslen + SMALLBUFSIZ;


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to