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