Update of /cvsroot/monetdb/MonetDB5/src/optimizer
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv17076

Modified Files:
        opt_recycler.mx 
Log Message:
The expected gain is largest if we can re-use selections
on the base tables in SQL. These, however, are marked as
uselect() calls, which only produces the oid head.
For cheap types we re-map uselect() back into select().
For the time being for all possible selects encountered.
(keeping track of the sql.bind() dependency is more work)


Index: opt_recycler.mx
===================================================================
RCS file: /cvsroot/monetdb/MonetDB5/src/optimizer/opt_recycler.mx,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- opt_recycler.mx     8 Mar 2008 18:21:46 -0000       1.6
+++ opt_recycler.mx     14 Mar 2008 07:30:56 -0000      1.7
@@ -95,7 +95,7 @@
 @-
 Functions with side effects can not be subject to recycle actions.
 @c
-               if( hasSideEffects(p,TRUE))
+               if( hasSideEffects(p,TRUE) || isUnsafeFunction(p))
                        continue;
                cnt= 0;
                for( j=p->retc; j<p->argc; j++)
@@ -115,15 +115,21 @@
 #endif
                        }
                }
[EMAIL PROTECTED]
+The expected gain is largest if we can re-use selections
+on the base tables in SQL. These, however, are marked as
+uselect() calls, which only produces the oid head.
+For cheap types we re-map uselect() back into select().
+For the time being for all possible selects encountered.
+(keeping track of the sql.bind() dependency is more work)
[EMAIL PROTECTED]
                /* take care of semantic driven recyling */
-               if( getFunctionId(p)== uselectRef ||
-                       getFunctionId(p)== selectRef ||
-                       getFunctionId(p)== markTRef ||
-                       getFunctionId(p)== joinRef ||
-                       getFunctionId(p)== semijoinRef
+               if( p->recycle &&
+                       getFunctionId(p)== selectRef &&
+                       !ATOMvarsized( getGDKType( getArgType(mb,p,1)))
                ){
-                       actions ++;
-                       p->recycle = 1; /* this instruction is to be monitored 
*/
+                       setFunctionId(p, selectRef);
+                       typeChecker(MCgetClient()->nspace,mb,p,TRUE);
                }
        }
        if( actions)


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Monetdb-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-checkins

Reply via email to