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

Modified Files:
        sql_mvc.mx 
Log Message:
fix concurrent access to mvc's last field


U sql_mvc.mx
Index: sql_mvc.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_mvc.mx,v
retrieving revision 1.204
retrieving revision 1.205
diff -u -d -r1.204 -r1.205
--- sql_mvc.mx  23 Jun 2008 21:27:07 -0000      1.204
+++ sql_mvc.mx  16 Jul 2008 08:42:11 -0000      1.205
@@ -755,15 +755,16 @@
 sql_schema *
 mvc_bind_schema(mvc *m, char *sname)
 {
+       sql_column *l = m->last;
        sql_trans *tr = m->session->tr;
        sql_schema *s;
 
        if (!tr)
                return NULL;
 
-       if (m->last && m->last->t->s &&
-               strcmp(m->last->t->s->base.name, sname) == 0)
-               s = m->last->t->s;
+       if (l && l->t->s &&
+               strcmp(l->t->s->base.name, sname) == 0)
+               s = l->t->s;
        else 
                s = find_sql_schema(tr, sname);
        if (!s)
@@ -777,6 +778,7 @@
 sql_table *
 mvc_bind_table(mvc *m, sql_schema *s, char *tname)
 {
+       sql_column *l = m->last;
        sql_table *t = NULL;
 
        if (!s) { /* Declared tables during query compilation have no schema */
@@ -787,9 +789,9 @@
                        s = mvc_bind_schema(m, "%dt%");
                        return mvc_bind_table(m, s, tname);
                }
-       } else if (m->last && m->last->t->s == s &&
-               strcmp(m->last->t->base.name, tname) == 0) {
-               t = m->last->t;
+       } else if (l && l->t->s == s &&
+               strcmp(l->t->base.name, tname) == 0) {
+               t = l->t;
        } else {
                t = find_sql_table(s, tname);
        }
@@ -804,11 +806,11 @@
 sql_column *
 mvc_bind_column(mvc *m, sql_table *t, char *cname)
 {
+       sql_column *l = m->last;
        sql_column *c;
 
-       if (m->last && m->last->t == t &&
-               strcmp(m->last->base.name, cname) == 0)
-               c = m->last;
+       if (l && l->t == t && strcmp(l->base.name, cname) == 0)
+               c = l;
        else 
                c = find_sql_column(t, cname);
        if (!c)


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to