Update of /cvsroot/monetdb/sql/src/backends/monet5
In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv1316

Modified Files:
        sql.mx sql_gencode.mx sql_optimizer.mx 
Log Message:
The garbage collection administration has been changed. Every variable record
now comes with an end-of-life field (eolife), which denotes the instruction 
whereafter
the BAT variable reference counter can be decremented. The garbage collector is
never called automagically on MAL functions, because there may be other
pressing needs to retain them. This means that MAL functions defined and
used in the context of SQL, and which are not inlined, may cause a leakage.
The garbage collection has become part of each interpreter step.
The new approach makes the SQL/MAL plans half te size as before.


Index: sql_gencode.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql_gencode.mx,v
retrieving revision 1.357
retrieving revision 1.358
diff -u -d -r1.357 -r1.358
--- sql_gencode.mx      27 Feb 2010 19:27:45 -0000      1.357
+++ sql_gencode.mx      14 Mar 2010 08:25:48 -0000      1.358
@@ -1563,8 +1563,8 @@
                        char *n = (s->type==st_append_col)?appendRef:updateRef;
 
                        q = newStmt2(mb, sqlRef, n);
-                       getArg(q, 0) = sql->mvc_var;
                        q = pushArgument(mb, q, sql->mvc_var); 
+                       getArg(q, 0) = sql->mvc_var= 
newTmpVariable(mb,TYPE_ptr);
                        q = pushSchema(mb, q, c->t);
                        q = pushStr(mb, q, c->t->base.name);
                        q = pushStr(mb, q, c->base.name);
@@ -1579,8 +1579,8 @@
                        char *n = (s->type==st_append_idx)?appendRef:updateRef;
 
                        q = newStmt2(mb, sqlRef, n);
-                       getArg(q, 0) = sql->mvc_var;
                        q = pushArgument(mb, q, sql->mvc_var); 
+                       getArg(q, 0) = sql->mvc_var= 
newTmpVariable(mb,TYPE_ptr);
                        q = pushSchema(mb, q, i->t);
                        q = pushStr(mb, q, i->t->base.name);
                        q = pushStr(mb, q, i->base.name);
@@ -1592,8 +1592,8 @@
                        sql_table *t = s->op1.tval;
 
                        q = newStmt1(mb, sqlRef, "delete");
-                       getArg(q, 0) = sql->mvc_var;
                        q = pushArgument(mb, q, sql->mvc_var); 
+                       getArg(q, 0) = sql->mvc_var= 
newTmpVariable(mb,TYPE_ptr);
                        q = pushSchema(mb, q, t);
                        q = pushStr(mb, q, t->base.name);
                        q = pushArgument(mb, q, r);
@@ -1883,6 +1883,8 @@
                        getArg(q,0) = bvar;
                        q->argc = q->retc = 1;
                        q->barrier= EXITsymbol;
+                       q = newStmt1(mb, sqlRef, "mvc");
+                       sql->mvc_var = getDestVar(q);
                }       break;
                case st_if: {
                        int c,t,e;
@@ -1896,6 +1898,8 @@
                        getArg(q,0)= t;
                        q->argc= q->retc=1;
                        q->barrier= EXITsymbol;
+                       q = newStmt1(mb, sqlRef, "mvc");
+                       sql->mvc_var = getDestVar(q);
 
                        q= newStmt1(mb, calcRef, "not");
                        q->barrier= BARRIERsymbol;
@@ -1907,6 +1911,8 @@
                        getArg(q,0)= e;
                        q->argc= q->retc=1;
                        q->barrier= EXITsymbol;
+                       q = newStmt1(mb, sqlRef, "mvc");
+                       sql->mvc_var = getDestVar(q);
                }       break;
                case st_return: {
                        int c = _dumpstmt(sql,mb, s->op1.stval);

Index: sql_optimizer.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql_optimizer.mx,v
retrieving revision 1.244
retrieving revision 1.245
diff -u -d -r1.244 -r1.245
--- sql_optimizer.mx    27 Feb 2010 19:27:47 -0000      1.244
+++ sql_optimizer.mx    14 Mar 2010 08:25:48 -0000      1.245
@@ -453,7 +453,7 @@
        
 str
 SQLvalidatePipeline(void){
-       int mitosis= FALSE, deadcode= FALSE, mergetable= FALSE, replication= 
FALSE;
+       int mitosis= FALSE, deadcode= FALSE, mergetable= FALSE, replication= 
FALSE, multiplex=FALSE, garbage=FALSE;
        int i;
 
        mal_set_lock(sql_contextLock,"SQL optimizer");
@@ -475,6 +475,12 @@
                else
                if (strcmp(optimizers[i],"replication") == 0)
                        replication= TRUE;
+               else
+               if (strcmp(optimizers[i],"multiplex") == 0)
+                       multiplex= TRUE;
+               else
+               if (strcmp(optimizers[i],"garbageCollector") == 0 && 
optimizers[i+1] == 0)
+                       garbage= TRUE;
 
 #ifdef WIN32
                else
@@ -488,14 +494,18 @@
                throw(SQL,"optimizer"," 'mitosis' needs 'mergetable'\n");
        }
 
-       if ( --i >= 0 && optimizers[i] && strcmp(optimizers[i],"multiplex") ){
+       if (optimizers[0] && multiplex == 0){
                mal_unset_lock(sql_contextLock,"SQL optimizer");
-               throw(SQL,"optimizer"," 'multiplex' should be the last\n");
+               throw(SQL,"optimizer"," 'multiplex' should be used\n");
        }
        if (optimizers[0] && deadcode == FALSE ){
                mal_unset_lock(sql_contextLock,"SQL optimizer");
                throw(SQL,"optimizer"," 'deadcode' should be used at least 
once\n");
        }
+       if (optimizers[0] && garbage == FALSE ){
+               mal_unset_lock(sql_contextLock,"SQL optimizer");
+               throw(SQL,"optimizer"," 'garbageCollector' should be used as 
the last one\n");
+       }
 @-
 For replicated databases we need to ensure that the corresponding optimizer
 is enabled.

Index: sql.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/backends/monet5/sql.mx,v
retrieving revision 1.404
retrieving revision 1.405
diff -u -d -r1.404 -r1.405
--- sql.mx      27 Feb 2010 19:27:40 -0000      1.404
+++ sql.mx      14 Mar 2010 08:25:45 -0000      1.405
@@ -68,19 +68,19 @@
 address SQLstatement
 comment "Compile and execute a single sql statement (and optionaly send output 
on the output stream)";
 
-pattern assert{unsafe}(b:bit,msg:str):void
+pattern assert(b:bit,msg:str):void
 address SQLassert
 comment "Generate an exception when b==true";
 
-pattern assert{unsafe}(b:int,msg:str):void
+pattern assert(b:int,msg:str):void
 address SQLassertInt
 comment "Generate an exception when b!=0";
 
-pattern assert{unsafe}(b:wrd,msg:str):void
+pattern assert(b:wrd,msg:str):void
 address SQLassertWrd
 comment "Generate an exception when b!=0";
 
-pattern assert{unsafe}(b:lng,msg:str):void
+pattern assert(b:lng,msg:str):void
 address SQLassertLng
 comment "Generate an exception when b!=0";
 @- The SQL multi-version catalog
@@ -379,7 +379,7 @@
 address SQLargRecord
 comment "Glue together the calling sequence";
 
-function sql_environment():bat[:str,:bat];
+function sql_environment{inline}():bat[:str,:bat];
        b := bat.new(:str,:bat,2);
        e := inspect.getEnvironment();
        n := algebra.markT(e, 0:oid);
@@ -390,7 +390,7 @@
        return sql_environment := b2;
 end sql_environment;
 
-function clients():bat[:str,:bat];
+function clients{inline}():bat[:str,:bat];
        b := bat.new(:str,:bat,5);
        u:= clients.getUsers();
        b1:= bat.insert(b,"user",u);
@@ -405,7 +405,7 @@
        return clients := b5;
 end clients;
 
-function bbp():bat[:str,:bat];
+function bbp{inline}():bat[:str,:bat];
        b := bat.new(:str,:bat,12);
        ns := bbp.getNames();
        ri := algebra.markT(ns, 0:oid);


------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to