Update of /cvsroot/monetdb/pathfinder/compiler/algebra/opt
In directory 
sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv20201/compiler/algebra/opt

Modified Files:
        opt_algebra_cse.c opt_const.c opt_general.brg opt_join_pd.c 
        opt_mvd.c opt_thetajoin.c 
Log Message:
Basic Algebra implementation for the fn:error functions (32 files edited).
Introduced a new operator on the logical level, namely la_error.
Operator la_error takes a BAT of strings as parameter (containing the error
message) and carry it all the way until the MIL level where the conditions are
checked and the mil if-statement is printed.

Disclaimer:
Most likely the switch-case clauses on the prop/ and opt/ directories
are not always treated correctly for the la_error operator, but a man has
to start from somewhere.


Index: opt_algebra_cse.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/opt/opt_algebra_cse.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- opt_algebra_cse.c   6 Dec 2007 08:42:21 -0000       1.6
+++ opt_algebra_cse.c   10 Dec 2007 15:10:00 -0000      1.7
@@ -758,6 +758,9 @@
         case la_empty_frag:
         {
         } break;
+        case la_error:
+        {
+        } break;
         case la_cond_err:
         {
             PFalg_schema_t schema = n->schema;
@@ -984,6 +987,7 @@
         case la_fragment:
         case la_frag_union:
         case la_empty_frag:
+        case la_error:
         case la_cond_err:
         case la_nil:
         {
@@ -1561,6 +1565,10 @@
         {
             return true;
         } break;
+        case la_error:
+        {
+            return true;
+        } break;
         case la_cond_err:
         {
             PFla_op_t *achild = L (a);

Index: opt_join_pd.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/opt/opt_join_pd.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- opt_join_pd.c       6 Dec 2007 08:42:26 -0000       1.33
+++ opt_join_pd.c       10 Dec 2007 15:10:00 -0000      1.34
@@ -328,6 +328,7 @@
             case la_fragment:
             case la_frag_union:
             case la_empty_frag:
+            case la_error:
             case la_cond_err:
             case la_nil:
             case la_trace:
@@ -1604,6 +1605,7 @@
                 }
                 break;
 
+            case la_error: /* don't rewrite errors */
             case la_cond_err:
                 /* this breaks proxy generation - thus don't
                    rewrite conditional errors */
@@ -1778,6 +1780,7 @@
         case la_semijoin:
         case la_thetajoin:
         case la_trace:
+        case la_error:
         case la_cond_err:
             /* name does not change */
             break;

Index: opt_const.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/opt/opt_const.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- opt_const.c 6 Dec 2007 08:42:22 -0000       1.23
+++ opt_const.c 10 Dec 2007 15:10:00 -0000      1.24
@@ -112,6 +112,7 @@
             case la_min:
             case la_rownum:
             case la_rank:
+            case la_error:
             case la_cond_err:
                 /* these rules apply a 'real rewrite'
                    and therefore continue */

Index: opt_general.brg
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/opt/opt_general.brg,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -d -r1.42 -r1.43
--- opt_general.brg     6 Dec 2007 22:23:31 -0000       1.42
+++ opt_general.brg     10 Dec 2007 15:10:00 -0000      1.43
@@ -134,6 +134,7 @@
 %term  fragment        =  71
 %term  frag_union      =  72
 %term  empty_frag      =  73
+%term  error           =  79
 %term  cond_err        =  80
 %term  nil             =  81
 %term  trace           =  82
@@ -230,6 +231,7 @@
 
 Rel:    cond_err (Rel, Rel)                       =  88 (10);
 Rel:    cond_err (Rel, EmptyRel)                  =  89  (0);
+Rel:    error (Rel)                               =  90 (10);
 Rel:    trace (Rel, Msg)                          =  93 (10);
 Msg:    trace_msg (Rel, Map)                      =  94 (10);
 Map:    trace_map (Rel, Map)                      =  95 (10);

Index: opt_thetajoin.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/opt/opt_thetajoin.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- opt_thetajoin.c     6 Dec 2007 08:42:27 -0000       1.11
+++ opt_thetajoin.c     10 Dec 2007 15:10:00 -0000      1.12
@@ -1875,6 +1875,8 @@
         case la_empty_frag:
             break;
 
+        case la_error: /* don't rewrite errors */
+            break;
         case la_cond_err:
             /* We push the error operator into the left input
                as we do not know whether it relates to the left or

Index: opt_mvd.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/opt/opt_mvd.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- opt_mvd.c   6 Dec 2007 08:42:26 -0000       1.28
+++ opt_mvd.c   10 Dec 2007 15:10:00 -0000      1.29
@@ -1590,6 +1590,8 @@
     case la_empty_frag:
         break;
 
+    case la_error: /* don't rewrite errors */
+        break;
     case la_cond_err:
         if (is_cross (L(p))) {
             *p = *(cross_can (cond_err (LL(p), R(p),


-------------------------------------------------------------------------
SF.Net email is sponsored by: 
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to