Changeset: 4e524588ccf4 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4e524588ccf4
Modified Files:
        MonetDB5/src/mal/mal.mx
        MonetDB5/src/modules/mal/tablet_sql.mx
Branch: default
Log Message:

Give the copy command its own lock for possible strict control later


diffs (95 lines):

diff -r 3595d3930d16 -r 4e524588ccf4 MonetDB5/src/mal/mal.mx
--- a/MonetDB5/src/mal/mal.mx   Fri May 28 21:08:28 2010 +0200
+++ b/MonetDB5/src/mal/mal.mx   Sat May 29 23:28:18 2010 +0200
@@ -276,6 +276,7 @@
 mal_export MT_Lock  mal_contextLock;
 mal_export MT_Lock  mal_remoteLock;
 mal_export MT_Lock  mal_profileLock ;
+mal_export MT_Lock  mal_copyLock ;
 
 
 mal_export int mal_init(void);
@@ -327,6 +328,7 @@
 MT_Lock     mal_contextLock;
 MT_Lock     mal_remoteLock;
 MT_Lock        mal_profileLock ;
+MT_Lock     mal_copyLock;
 @-
 Initialization of the MAL context
 The compiler directive STRUCT_ALIGNED tells that the
@@ -362,6 +364,7 @@
        MT_lock_init( &mal_contextLock, "mal_contextLock");
        MT_lock_init( &mal_remoteLock, "mal_remoteLock");
        MT_lock_init( &mal_profileLock, "mal_profileLock");
+       MT_lock_init( &mal_copyLock, "mal_copyLock");
 
        GDKprotect();
        tstAligned();
diff -r 3595d3930d16 -r 4e524588ccf4 MonetDB5/src/modules/mal/tablet_sql.mx
--- a/MonetDB5/src/modules/mal/tablet_sql.mx    Fri May 28 21:08:28 2010 +0200
+++ b/MonetDB5/src/modules/mal/tablet_sql.mx    Sat May 29 23:28:18 2010 +0200
@@ -197,39 +197,39 @@
        str err = 0;
 
        /* watch out for concurrent threads */
-       mal_set_lock(mal_contextLock,"tablet insert value");
+       mal_set_lock(mal_copyLock,"tablet insert value");
        if ( BATcapacity(fmt[col].c[0]) < BATcount(fmt[col].c[0]) + task->next 
) {
                if ( (fmt[col].c[0] =  BATextend(fmt[col].c[0], 
BATgrows(fmt[col].c[0]) + task->limit)) == NULL){
                        if (task->as->error == NULL)
                                task->as->error = GDKstrdup("Failed to extend 
the BAT, perhaps disk full");
-                       mal_unset_lock(mal_contextLock,"tablet insert value");
+                       mal_unset_lock(mal_copyLock,"tablet insert value");
                        stream_printf(GDKout,"Failed to extend the BAT, perhaps 
disk full");
                        return -1;
                }
        }
-       mal_unset_lock(mal_contextLock,"tablet insert value");
+       mal_unset_lock(mal_copyLock,"tablet insert value");
 
        for ( i = 0; i< task->next ; i++)
        if ( task->fields[col][i] ) { /* no errors */
                if (SQLinsert_val(&fmt[col], task->fields[col][i], task->quote, 
NULL, &err, col+1)) {
                        assert(err != NULL);
-                       mal_set_lock(mal_contextLock,"tablet insert value");
+                       mal_set_lock(mal_copyLock,"tablet insert value");
                        if (!task->as->tryall){
                                /* watch out for concurrent threads */
                                if (task->as->error == NULL)
                                        task->as->error = err;  /* restore for 
upper layers */
                        } else
                                BUNins(task->as->complaints, NULL, err, TRUE);
-                       mal_unset_lock(mal_contextLock,"tablet insert value");
+                       mal_unset_lock(mal_copyLock,"tablet insert value");
                }
        }
 
        if (err) {
                /* watch out for concurrent threads */
-               mal_set_lock(mal_contextLock,"tablet insert value");
+               mal_set_lock(mal_copyLock,"tablet insert value");
                if (task->as->error == NULL)
                        task->as->error = err;  /* restore for upper layers */
-               mal_unset_lock(mal_contextLock,"tablet insert value");
+               mal_unset_lock(mal_copyLock,"tablet insert value");
        }
        return err ? -1 : 0;
 }
@@ -288,7 +288,7 @@
                                         fmt->sep, BATcount(fmt->c[0]) + 1 + 
task->next, i);
                errors:
                        /* we save all errors detected */
-                       mal_set_lock(mal_contextLock,"tablet line break");
+                       mal_set_lock(mal_copyLock,"tablet line break");
                        if (as->tryall)
                                BUNins(as->complaints, NULL, errmsg, TRUE);
                        if ( as->error){
@@ -297,7 +297,7 @@
                                GDKfree(s);
                        }
                        as->error = GDKstrdup(errmsg);
-                       mal_unset_lock(mal_contextLock,"tablet line break");
+                       mal_unset_lock(mal_copyLock,"tablet line break");
                        for (i = 0; i < as->nr_attrs ; i++) 
                                task->fields[i][idx] = NULL ;
                        break;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to