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