Update of /cvsroot/monetdb/sql/src/server
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv18391/src/server

Modified Files:
        sql_mvc.mx sql_schema.mx sql_semantic.mx sql_symbol.mx 
Log Message:
small performance improvements


Index: sql_mvc.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_mvc.mx,v
retrieving revision 1.174
retrieving revision 1.175
diff -u -d -r1.174 -r1.175
--- sql_mvc.mx  16 Mar 2007 12:36:25 -0000      1.174
+++ sql_mvc.mx  20 Mar 2007 18:26:02 -0000      1.175
@@ -108,6 +108,7 @@
 
        int result_id;
        res_table *results;
+       sql_column *last;       /* last accessed column */
 } mvc;
 
 extern int mvc_init(int debug, backend_stack stk);
@@ -368,6 +369,7 @@
                store_unlock();
                m->type = Q_TRANS;
                m->session->schema = find_sql_schema(m->session->tr, 
m->session->schema_name);
+               m->last = NULL;
                if (mvc_debug)
                        fprintf(stderr, "mvc_commit %s done\n", (name) ? name : 
"");
                return 0;
@@ -473,6 +475,7 @@
        }
        store_unlock();
        m->type = Q_TRANS;
+       m->last = NULL;
        if (mvc_debug)
                fprintf(stderr, "mvc_rollback %s done\n", (name) ? name : "");
        return res;
@@ -515,6 +518,7 @@
        cur -> parent = tr;
 
        m->type = res;
+       m->last = NULL;
        return res;
 }
 
@@ -570,6 +574,7 @@
 
        m->result_id = 0;
        m->results = NULL;
+       m->last = NULL;
 
        scanner_init(&m->scanner, rs, ws);
        return m;
@@ -635,6 +640,7 @@
 
        m->result_id = 0;
        m->results = NULL;
+       m->last = NULL;
 
        scanner_init(&m->scanner, rs, ws);
 }
@@ -729,7 +735,11 @@
 
        if (!tr)
                return NULL;
-       s = find_sql_schema(tr, sname);
+
+       if (m->last && strcmp(m->last->t->s->base.name, sname) == 0)
+               s = m->last->t->s;
+       else 
+               s = find_sql_schema(tr, sname);
        if (!s)
                return NULL;
 
@@ -741,9 +751,13 @@
 sql_table *
 mvc_bind_table(mvc *m, sql_schema *s, char *tname)
 {
-       sql_table *t = find_sql_table(s, tname);
+       sql_table *t;
 
-       (void) m;
+       if (m->last && m->last->t->s == s &&
+               strcmp(m->last->t->base.name, tname) == 0)
+               t = m->last->t;
+       else 
+               t = find_sql_table(s, tname);
        if (!t)
                return NULL;
        if (mvc_debug)
@@ -755,14 +769,19 @@
 sql_column *
 mvc_bind_column(mvc *m, sql_table *t, char *cname)
 {
-       sql_column *c = find_sql_column(t, cname);
+       sql_column *c;
 
-       (void) m;
+       if (m->last && m->last->t == t &&
+               strcmp(m->last->base.name, cname) == 0)
+               c = m->last;
+       else 
+               c = find_sql_column(t, cname);
        if (!c)
                return NULL;
        if (mvc_debug)
                fprintf(stderr, "mvc_bind_column %s.%s\n", t->base.name, cname);
 
+       m->last = c;
        return c;
 }
 

Index: sql_symbol.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_symbol.mx,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- sql_symbol.mx       3 Jan 2007 12:39:48 -0000       1.28
+++ sql_symbol.mx       20 Mar 2007 18:26:03 -0000      1.29
@@ -110,12 +110,11 @@
 
 int symbol_debug = 0;
 
-symbol *
-symbol_init(symbol *s, int token)
+static symbol *
+symbol_init(symbol *s, int token, int type )
 {
        s->token = token;
-       s->type = type_symbol;
-       s->data.lval = NULL;
+       s->type = type;
        return s;
 }
 
@@ -125,9 +124,8 @@
        symbol *s = SA_NEW(sa, symbol);
 
        if (s) {
-               symbol_init(s, token);
+               symbol_init(s, token, type_string);
                s->data.sval = data;
-               s->type = type_string;
                if (symbol_debug)
                        fprintf(stderr, "%ld = symbol_create_string(%s,%s)\n", 
(long) s, token2string(s->token), s->data.sval);
        }
@@ -140,9 +138,8 @@
        symbol *s = SA_NEW(sa, symbol);
 
        if (s) {
-               symbol_init(s, token);
+               symbol_init(s, token, type_list);
                s->data.lval = data;
-               s->type = type_list;
                if (symbol_debug)
                        fprintf(stderr, "%ld = symbol_create_list(%s,%ld)\n", 
(long) s, token2string(s->token), (long) s->data.lval);
        }
@@ -155,9 +152,8 @@
        symbol *s = SA_NEW(sa, symbol);
 
        if (s) {
-               symbol_init(s, token);
+               symbol_init(s, token, type_int);
                s->data.ival = data;
-               s->type = type_int;
                if (symbol_debug)
                        fprintf(stderr, "%ld = symbol_create_int(%s,%lld)\n", 
(long) s, token2string(s->token), data);
        }
@@ -170,7 +166,7 @@
        symbol *s = SA_NEW(sa, symbol);
 
        if (s) {
-               symbol_init(s, token);
+               symbol_init(s, token, type_symbol);
                s->data.sym = data;
                if (symbol_debug)
                        fprintf(stderr, "%ld = symbol_create_symbol(%s,%s)\n", 
(long) s, token2string(s->token), token2string(data->token));
@@ -183,11 +179,8 @@
 {
        dnode *n = SA_NEW(sa, dnode);
 
-       if (n) {
+       if (n) 
                n->next = NULL;
-               n->data.sval = NULL;
-               n->type = type_symbol;
-       }
        return n;
 }
 
@@ -339,7 +332,7 @@
        symbol *s = (symbol *) sn;
 
        if (s) {
-               symbol_init(s, SQL_SELECT);
+               symbol_init(s, SQL_SELECT, type_symbol);
                sn->distinct = distinct;
                sn->limit = limit;
                sn->offset = offset;
@@ -362,7 +355,7 @@
        symbol *s = (symbol *) an;
 
        if (s) {
-               symbol_init(s, SQL_ATOM);
+               symbol_init(s, SQL_ATOM, type_symbol);
                an->a = data;
        }
        return s;

Index: sql_semantic.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_semantic.mx,v
retrieving revision 1.158
retrieving revision 1.159
diff -u -d -r1.158 -r1.159
--- sql_semantic.mx     4 Feb 2007 22:55:18 -0000       1.158
+++ sql_semantic.mx     20 Mar 2007 18:26:02 -0000      1.159
@@ -273,6 +273,7 @@
        stream *buf;
 
        m->qc = NULL;
+       m->last = NULL;
 
        m->cache = 0;
        m->mode = mode;
@@ -327,6 +328,7 @@
        } else {
                *m = o;
        }
+       m->last = NULL;
        return sq;
 }
 

Index: sql_schema.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_schema.mx,v
retrieving revision 1.115
retrieving revision 1.116
diff -u -d -r1.115 -r1.116
--- sql_schema.mx       16 Mar 2007 12:36:26 -0000      1.115
+++ sql_schema.mx       20 Mar 2007 18:26:02 -0000      1.116
@@ -1988,5 +1988,6 @@
        default:
                return sql_error(sql, 01, "schema statement unknown 
symbol(%ld)->token = %s", (long) s, token2string(s->token));
        }
+       sql->last = NULL;
        return ret;
 }


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to