Update of /cvsroot/monetdb/pathfinder/runtime
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv9671/runtime
Modified Files:
Tag: XQuery_0-24
pf_support.mx
Log Message:
A rather aggresive fix for the order of attributes and nodes in updates.
Now we reverse in algebra the order of insert as last and insert before at
runtime like the MPS. This fix the bug [1981844] PF/alg: result order differs
from mps. Also it fix the test Update/update.xq (which makes unnecessary the
algebra specific output). Also other failing tests of updates are fixed in
tests/BugTrack.
However, now the test insert_test_order_seq fails:( However, this is a
different error that should be addressed with a diffrent fix.
To be continued...
U pf_support.mx
Index: pf_support.mx
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/runtime/pf_support.mx,v
retrieving revision 1.299.2.3
retrieving revision 1.299.2.4
diff -u -d -r1.299.2.3 -r1.299.2.4
--- pf_support.mx 29 May 2008 16:45:15 -0000 1.299.2.3
+++ pf_support.mx 6 Jun 2008 21:00:46 -0000 1.299.2.4
@@ -3321,9 +3321,27 @@
{
var inserts := command.ord_select(UPDATE_INSERT_FIRST,
UPDATE_REPLACENODE); # [i,insertcommand]
if (inserts.count() > 0) {
+
+ # UPDATE_INSERT_LAST and UPDATE_INSERT_BEFORE commands must be executed
in reverse order
+ var order := inserts.ord_uselect(UPDATE_INSERT_LAST,
UPDATE_INSERT_BEFORE).copy().mark([EMAIL PROTECTED]);
+ if (order.count() > 1) {
+
pre_tgt.access(BAT_WRITE).replace(order.leftjoin(order.mirror().leftjoin(pre_tgt).access(BAT_WRITE).revert().tmark([EMAIL
PROTECTED])));
+
pre_cont_tgt.access(BAT_WRITE).replace(order.leftjoin(order.mirror().leftjoin(pre_cont_tgt).access(BAT_WRITE).revert().tmark([EMAIL
PROTECTED])));
+
attr_tgt.access(BAT_WRITE).replace(order.leftjoin(order.mirror().leftjoin(attr_tgt).access(BAT_WRITE).revert().tmark([EMAIL
PROTECTED])));
+
attr_cont_tgt.access(BAT_WRITE).replace(order.leftjoin(order.mirror().leftjoin(attr_cont_tgt).access(BAT_WRITE).revert().tmark([EMAIL
PROTECTED])));
+
pre_ins.access(BAT_WRITE).replace(order.leftjoin(order.mirror().leftjoin(pre_ins).access(BAT_WRITE).revert().tmark([EMAIL
PROTECTED])));
+
pre_cont_ins.access(BAT_WRITE).replace(order.leftjoin(order.mirror().leftjoin(pre_cont_ins).access(BAT_WRITE).revert().tmark([EMAIL
PROTECTED])));
+
attr_ins.access(BAT_WRITE).replace(order.leftjoin(order.mirror().leftjoin(attr_ins).access(BAT_WRITE).revert().tmark([EMAIL
PROTECTED])));
+
attr_cont_ins.access(BAT_WRITE).replace(order.leftjoin(order.mirror().leftjoin(attr_cont_ins).access(BAT_WRITE).revert().tmark([EMAIL
PROTECTED])));
+
inserts.access(BAT_WRITE).replace(order.leftjoin(order.mirror().leftjoin(inserts).access(BAT_WRITE).revert().tmark([EMAIL
PROTECTED])));
+
command.access(BAT_WRITE).replace(order.leftjoin(order.mirror().leftjoin(command).access(BAT_WRITE).revert().tmark([EMAIL
PROTECTED])));
+ }
+
var inserts_pre_ins := inserts.mirror().leftfetchjoin(pre_ins); # [i,PRE]
var inserts_elems := inserts_pre_ins.ord_uselect(oid_nil,
oid_nil).hmark([EMAIL PROTECTED]); # [j,i] inserts on elements
var inserts_attrs := inserts_pre_ins.ord_uselect(oid_nil).hmark([EMAIL
PROTECTED]); # [k,i] inserts on attributes
+
+
if (inserts_attrs.count() > 0) {
do_update_insert_attributes(ws, inserts_attrs.leftjoin(pre_tgt),
inserts_attrs.leftjoin(pre_cont_tgt), inserts_attrs.leftjoin(attr_ins),
inserts_attrs.leftjoin(attr_cont_ins));
}
-------------------------------------------------------------------------
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