Update of /cvsroot/monetdb/pathfinder/compiler/algebra/opt
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv15416/compiler/algebra/opt

Modified Files:
      Tag: Aug2009_NFI
        opt_algebra_cse.c opt_complex.c opt_general.brg opt_join_pd.c 
        opt_mvd.c opt_rank.c opt_thetajoin.c 
Log Message:
optimizations for NFI XIRAF use case -- thanks a great bunch Jan R.!!

- ds_link (already in Stable) optimized for 1-node case
- indices now contain all data (but still not used automatically, nor based on 
Lefteris' new indexing schemes)

most prominently though is: subexpression result caching
- caching hints in pragmas 
- query enclosed in (# pf:session id:msec ) { query }  or (# pf:session-use 
id:msec ) { query } 
  + queries in the same session use the same working set (documents opened only 
once)
  + same working set allows to cache results
  + pf:session-use only uses cache, cannot add to it 
    - but, multiple pf:session-use can run concurrently; whereas pf:session is 
exclusive
- inside a query, an arbitrary number of expressions can be marked up for 
caching/reuse
  + (# pf:cache id ) { subexpr }
  + subexpr may not be enclosed by a for-loop




U opt_algebra_cse.c
Index: opt_algebra_cse.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/opt/opt_algebra_cse.c,v
retrieving revision 1.53
retrieving revision 1.53.6.1
diff -u -d -r1.53 -r1.53.6.1
--- opt_algebra_cse.c   16 Jun 2009 13:59:43 -0000      1.53
+++ opt_algebra_cse.c   28 Sep 2009 23:20:25 -0000      1.53.6.1
@@ -119,6 +119,7 @@
     , [la_frag_union]      = "la_frag_union"
     , [la_error]           = "la_error"
     , [la_nil]             = "la_nil"
+    , [la_cache]           = "la_cache"
     , [la_trace]           = "la_trace"
     , [la_trace_items]     = "la_trace_items"
     , [la_trace_msg]       = "la_trace_msg"
@@ -1173,6 +1174,17 @@
         case la_nil:
             return true;
 
+        case la_cache:
+            if (a->sem.cache.id == b->sem.cache.id &&
+                ACTCOL (L(a), a->sem.cache.pos) ==
+                ACTCOL (L(b), b->sem.cache.pos) &&
+                ACTCOL (L(a), a->sem.cache.item) ==
+                ACTCOL (L(b), b->sem.cache.item))
+                return true;
+
+            return false;
+
+
         case la_trace:
         case la_trace_items:
         case la_trace_msg:
@@ -1926,6 +1938,13 @@
         case la_nil:
             return PFla_nil ();
 
+        case la_cache:
+            return PFla_cache (CSE(L(n)),
+                               CSE(R(n)),
+                               n->sem.cache.id,
+                               ACTCOL (R(n), n->sem.cache.pos),
+                               ACTCOL (R(n), n->sem.cache.item));
+
         case la_trace:
             return PFla_trace (CSE(L(n)), CSE(R(n)));
 
@@ -2457,7 +2476,8 @@
             break;
 
         case la_error:
-            actmap = actcol_map_copy (ACT(L(ori)));
+        case la_cache:
+            actmap = actcol_map_copy (ACT(R(ori)));
             break;
 
         case la_nil:

U opt_join_pd.c
Index: opt_join_pd.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/opt/opt_join_pd.c,v
retrieving revision 1.64
retrieving revision 1.64.6.1
diff -u -d -r1.64 -r1.64.6.1
--- opt_join_pd.c       12 Jun 2009 13:06:12 -0000      1.64
+++ opt_join_pd.c       28 Sep 2009 23:20:25 -0000      1.64.6.1
@@ -1153,6 +1153,7 @@
 
             case la_error:
             case la_nil:
+            case la_cache:
             case la_trace:
                 break;
 
@@ -1245,6 +1246,7 @@
         case la_string_join:
         case la_error:
         case la_nil:
+        case la_cache:
         case la_trace:
         case la_trace_items:
         case la_trace_msg:

U opt_rank.c
Index: opt_rank.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/opt/opt_rank.c,v
retrieving revision 1.21.2.1
retrieving revision 1.21.2.1.2.1
diff -u -d -r1.21.2.1 -r1.21.2.1.2.1
--- opt_rank.c  28 Sep 2009 10:02:42 -0000      1.21.2.1
+++ opt_rank.c  28 Sep 2009 23:20:25 -0000      1.21.2.1.2.1
@@ -1254,6 +1254,7 @@
 
         case la_error: /* don't rewrite runtime errors */
         case la_nil:
+        case la_cache: /* don't rewrite side effects */
         case la_trace: /* don't rewrite side effects */
             break;
 

U opt_general.brg
Index: opt_general.brg
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/opt/opt_general.brg,v
retrieving revision 1.69
retrieving revision 1.69.6.1
diff -u -d -r1.69 -r1.69.6.1
--- opt_general.brg     24 Jun 2009 12:15:34 -0000      1.69
+++ opt_general.brg     28 Sep 2009 23:20:25 -0000      1.69.6.1
@@ -139,8 +139,9 @@
 %term  frag_extract    =  72
 %term  frag_union      =  73
 %term  empty_frag      =  74
-%term  error           =  79
-%term  nil             =  80
+%term  error           =  78
+%term  nil             =  79
+%term  cache           =  80
 %term  trace           =  81
 %term  trace_items     =  82
 %term  trace_msg       =  83
@@ -246,17 +247,18 @@
 
 Side:   error (Side, Rel)                         =  91 (10);
 Side:   nil                                       =  92 (10);
-Side:   trace (Side, Trc)                         =  93 (10);
-Trc:    trace_items (Rel, Msg)                    =  94 (10);
-Msg:    trace_msg (Rel, Map)                      =  95 (10);
-Map:    trace_map (Rel, Map)                      =  96 (10);
-Map:    nil                                       =  97 (10);
+Side:   cache (Side, Rel)                         =  93 (10);
+Side:   trace (Side, Trc)                         =  94 (10);
+Trc:    trace_items (Rel, Msg)                    =  95 (10);
+Msg:    trace_msg (Rel, Map)                      =  96 (10);
+Map:    trace_map (Rel, Map)                      =  97 (10);
+Map:    nil                                       =  98 (10);
 
-Rel:    rec_fix (side_effects (Side, Rec), Rel)   =  98 (10);
-Rel:    rec_base                                  =  99 (10);
-Rec:    rec_param (Arg, Rec)                      = 100 (10);
-Rec:    nil                                       = 101 (10);
-Arg:    rec_arg (Rel, Rel)                        = 102 (10);
+Rel:    rec_fix (side_effects (Side, Rec), Rel)   =  99 (10);
+Rel:    rec_base                                  = 100 (10);
+Rec:    rec_param (Arg, Rec)                      = 101 (10);
+Rec:    nil                                       = 102 (10);
+Arg:    rec_arg (Rel, Rel)                        = 103 (10);
 
 Rel:    fun_call (Rel, Param)                     = 105 (10);
 Param:  fun_param (Rel, Param)                    = 106 (10);

U opt_complex.c
Index: opt_complex.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/opt/opt_complex.c,v
retrieving revision 1.80
retrieving revision 1.80.6.1
diff -u -d -r1.80 -r1.80.6.1
--- opt_complex.c       12 Jun 2009 13:06:11 -0000      1.80
+++ opt_complex.c       28 Sep 2009 23:20:25 -0000      1.80.6.1
@@ -2820,7 +2820,7 @@
     /* We have found a rowid operator
        that is used at most once by a given
        side effect (see the reference counter
-       in cases: la_error and la_trace). */
+       in cases: la_error, la_cache and la_trace). */
     if (L(p) &&
         SEEN(L(p)) &&
         L(p)->kind == la_rowid &&
@@ -2921,6 +2921,7 @@
             break;
 
         case la_error:
+        case la_cache:
         case la_trace:
             split_rowid_for_side_effects_worker (L(p));
             PFprop_infer_refctr (R(p));

U opt_thetajoin.c
Index: opt_thetajoin.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/opt/opt_thetajoin.c,v
retrieving revision 1.46
retrieving revision 1.46.6.1
diff -u -d -r1.46 -r1.46.6.1
--- opt_thetajoin.c     24 Jun 2009 20:03:25 -0000      1.46
+++ opt_thetajoin.c     28 Sep 2009 23:20:25 -0000      1.46.6.1
@@ -1666,6 +1666,7 @@
 
         case la_error: /* don't rewrite runtime errors */
         case la_nil:
+        case la_cache: /* don't rewrite side effects */
         case la_trace: /* don't rewrite side effects */
             break;
 

U opt_mvd.c
Index: opt_mvd.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/opt/opt_mvd.c,v
retrieving revision 1.54
retrieving revision 1.54.6.1
diff -u -d -r1.54 -r1.54.6.1
--- opt_mvd.c   12 Jun 2009 13:06:12 -0000      1.54
+++ opt_mvd.c   28 Sep 2009 23:20:25 -0000      1.54.6.1
@@ -1597,6 +1597,7 @@
 
     case la_error: /* don't rewrite runtime errors */
     case la_nil:
+    case la_cache: /* don't rewrite side effects */
     case la_trace: /* don't rewrite side effects */
         break;
 


------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to