Forgot the attachments!
---------------------------------------------------------------------------
Hi all,
I checked out today the MonetDB/XQuery code and Mserver is crashing
whenever I try to execute MIL statements using the mclient command. More
details follow.
I first compile an XQuery to MIL statements using the command "pf -A"
Then I execute the MIL statements with "mclient -t -l"
Whenever I do so, I get the correct results but Mserver aborts after
giving the following error message:
Mserver: monet_tbl.mx:1743: TBL_M_decref: Assertion `p' failed.
Aborted
I have attached the XQuery file and the generated MIL file.
Thank you and best regards,
Riham
--
Address: Database Group, Dept of EEMCS, University of Twente, POBox 217, 7500 AE Enschede, The Netherlands
Phone: +31 (0)53 489 4628
Fax: +31 (0)53 489 2927
Email: r.abdelkader@ewi.utwente.nl
for $p in doc("doc_100000_10ab_1000pr.xml")//a/p,
$r in doc("doc_100000_10ab_1000pr.xml")//b/r
where $p/text() = $r/text()
return $r
module ("pathfinder");
module ("mkey");
var time_load;
var time_query;
var time_print;
var a0000;
var a0001;
var a0002;
var a0003;
var a0004;
var a0005;
var a0006;
var a0007;
var a0008;
var a0009;
var a0010;
var a0011;
var a0012;
var a0013;
var a0014;
var unused;
var ws;
unused := nil;
# trace structure
var trace_outer;
var trace_inner;
var trace_iter;
var trace_msg;
var trace_item;
var trace_type;
var trace_rel;
# Begin rule: "Query: serialize(FragList, Rel)"
a0001 := CATCH ({
ws := ws_create ();
# Begin rule: "Rel: lit_tbl"
# a0000: iter(nat)
a0000 := new (void, oid).seqbase (0@0);
a0000.append (1@0);
a0000.access (BAT_READ);
# a0001: item(str)
a0001 := new (void, str).seqbase (0@0);
a0001.append ("doc_100000_10ab_1000pr.xml");
a0001.access (BAT_READ);
# End rule: "Rel: lit_tbl"
# Begin rule: "FragRel: doc_tbl(Rel)"
# a0000: iter(nat)
# a0005: item(pre)
# a0004: item(pfrag)
a0003 := doc_tbl (ws, a0001);
a0005 := a0003.fetch (1);
a0004 := a0003.fetch (2);
ws := a0003.fetch (0);
a0003 := unused;
a0002 := unused;
a0001 := unused;
# End rule: "FragRel: doc_tbl(Rel)"
# Begin rule: "Rel: roots(FragRel)"
# a0000: iter(nat)
# a0005: item(pre)
# a0004: item(pfrag)
# End rule: "Rel: roots(FragRel)"
# Begin rule: "Frag: fragment(FragRel)"
# End rule: "Frag: fragment(FragRel)"
# Begin rule: "FragList: empty_frag"
# End rule: "FragList: empty_frag"
# Begin rule: "FragList: frag_union(FragList, Frag)"
# End rule: "FragList: frag_union(FragList, Frag)"
# Begin rule: "Rel: llscj_desc(FragList, Rel)"
a0001 := loop_lifted_descendant_step_with_nsloc_test (a0000, a0005, a0004, ws, 2, "", "b");
a0002 := a0001.fetch (1);
a0003 := a0001.fetch (2).materialize (a0002);
# a0002: item(pre)
# a0003: item(pfrag)
a0006 := a0001.fetch (0).materialize (a0001.fetch (1));
# a0006: iter(nat)
a0001 := unused;
# End rule: "Rel: llscj_desc(FragList, Rel)"
# Begin rule: "Rel: llscj_child(FragList, Rel)"
a0001 := loop_lifted_child_step_with_nsloc_test (a0006, a0002, a0003, ws, 3, "", "r");
a0007 := a0001.fetch (1);
a0008 := a0001.fetch (2).materialize (a0007);
# a0007: item(pre)
# a0008: item(pfrag)
# a0009: iter(nat)
a0001 := unused;
a0002 := unused;
a0003 := unused;
a0006 := unused;
# End rule: "Rel: llscj_child(FragList, Rel)"
# Begin rule: "Rel: project(Rel)"
# a0008: item(pfrag)
# a0007: item(pre)
a0009 := unused;
# End rule: "Rel: project(Rel)"
# Begin rule: "Rel: number(Rel)"
# a0008: item(pfrag)
# a0007: item(pre)
a0001 := a0007.mark (1@0);
# a0001: iter1(nat)
# End rule: "Rel: number(Rel)"
# Begin rule: "Rel: project(Rel)"
# a0008: item(pfrag)
# a0007: item(pre)
# a0001: iter(nat)
# End rule: "Rel: project(Rel)"
# Begin rule: "Rel: llscj_child(FragList, Rel)"
a0002 := loop_lifted_child_step_with_kind_test (a0001, a0007, a0008, ws, 3, TEXT);
a0003 := a0002.fetch (1);
a0006 := a0002.fetch (2);
# a0003: item(pre)
# a0006: item(pfrag)
a0009 := a0002.fetch (0).materialize (a0002.fetch (1));
# a0009: iter(nat)
a0002 := unused;
# End rule: "Rel: llscj_child(FragList, Rel)"
# Begin rule: "Rel: doc_access(FragList, Rel)"
# a0003: item(pre)
# a0006: item(pfrag)
# a0009: iter(nat)
a0002 := mposjoin (mposjoin (a0003, a0006, ws.fetch (PRE_PROP)), mposjoin (a0003, a0006, ws.fetch (PRE_CONT)), ws.fetch (PROP_TEXT));
# a0002: item1(str)
# End rule: "Rel: doc_access(FragList, Rel)"
# Begin rule: "Rel: project(Rel)"
# a0009: iter(nat)
# a0002: item1(str)
a0003 := unused;
a0006 := unused;
# End rule: "Rel: project(Rel)"
# Begin rule: "Rel: project(Rel)"
# a0000: iter(nat)
# a0004: item1(pfrag)
# a0005: item1(pre)
# End rule: "Rel: project(Rel)"
# Begin rule: "Rel: llscj_desc(FragList, Rel)"
a0003 := loop_lifted_descendant_step_with_nsloc_test (a0000, a0005, a0004, ws, 2, "", "a");
a0006 := a0003.fetch (1);
a0010 := a0003.fetch (2).materialize (a0006);
# a0006: item1(pre)
# a0010: item1(pfrag)
a0011 := a0003.fetch (0).materialize (a0003.fetch (1));
# a0011: iter(nat)
a0003 := unused;
a0000 := unused;
a0004 := unused;
a0005 := unused;
# End rule: "Rel: llscj_desc(FragList, Rel)"
# Begin rule: "Rel: llscj_child(FragList, Rel)"
a0000 := loop_lifted_child_step_with_nsloc_test (a0011, a0006, a0010, ws, 3, "", "p");
a0003 := a0000.fetch (1);
a0004 := a0000.fetch (2).materialize (a0003);
# a0003: item1(pre)
# a0004: item1(pfrag)
# a0005: iter(nat)
a0000 := unused;
a0006 := unused;
a0010 := unused;
a0011 := unused;
# End rule: "Rel: llscj_child(FragList, Rel)"
# Begin rule: "Rel: project(Rel)"
# a0004: item1(pfrag)
# a0003: item1(pre)
a0005 := unused;
# End rule: "Rel: project(Rel)"
# Begin rule: "Rel: number(Rel)"
# a0004: item1(pfrag)
# a0003: item1(pre)
a0000 := a0003.mark (1@0);
# a0000: iter2(nat)
# End rule: "Rel: number(Rel)"
# Begin rule: "Rel: llscj_child(FragList, Rel)"
a0005 := loop_lifted_child_step_with_kind_test (a0000, a0003, a0004, ws, 3, TEXT);
a0006 := a0005.fetch (1);
a0010 := a0005.fetch (2);
# a0006: item1(pre)
# a0010: item1(pfrag)
a0011 := a0005.fetch (0).materialize (a0005.fetch (1));
# a0011: iter2(nat)
a0005 := unused;
# End rule: "Rel: llscj_child(FragList, Rel)"
# Begin rule: "Rel: doc_access(FragList, Rel)"
# a0006: item1(pre)
# a0010: item1(pfrag)
# a0011: iter2(nat)
a0005 := mposjoin (mposjoin (a0006, a0010, ws.fetch (PRE_PROP)), mposjoin (a0006, a0010, ws.fetch (PRE_CONT)), ws.fetch (PROP_TEXT));
# a0005: item(str)
# End rule: "Rel: doc_access(FragList, Rel)"
# Begin rule: "Rel: project(Rel)"
# a0011: iter2(nat)
# a0005: item(str)
a0006 := unused;
a0010 := unused;
# End rule: "Rel: project(Rel)"
# Begin rule: "Rel: unq2_thetajoin(Rel, Rel)"
# a0010: iter2(nat)
# a0012: iter(nat)
a0006 := htordered_unique_thetajoin (EQ, a0011.reverse ().leftjoin (a0005), a0009.reverse ().leftjoin (a0002), nil, nil);
a0010 := a0006.mark (0@0).reverse ();
a0010 := a0010.assert_order ();
a0012 := a0006.reverse ().mark (0@0).reverse ();
a0006 := unused;
a0011 := unused;
a0005 := unused;
a0009 := unused;
a0002 := unused;
# End rule: "Rel: unq2_thetajoin(Rel, Rel)"
# Begin rule: "Rel: project(Rel)"
# a0010: iter2(nat)
# a0012: iter(nat)
# End rule: "Rel: project(Rel)"
# Begin rule: "Rel: leftjoin(Rel, Rel)"
a0002 := a0012.leftjoin (a0001.reverse ());
a0005 := a0002.mark (0@0).reverse ();
a0006 := a0002.reverse ().mark (0@0).reverse ();
a0002 := unused;
a0002 := a0005.leftjoin (a0010);
a0002 := a0002.reverse ().mark (0@0).reverse ();
# a0002: iter2(nat)
# a0009: iter(nat)
a0011 := a0006.leftjoin (a0008);
a0011 := a0011.reverse ().mark (0@0).reverse ();
# a0011: item(pfrag)
a0013 := a0006.leftjoin (a0007);
a0013 := a0013.reverse ().mark (0@0).reverse ();
# a0013: item(pre)
# a0014: iter1(nat)
a0005 := unused;
a0006 := unused;
a0010 := unused;
a0012 := unused;
a0008 := unused;
a0007 := unused;
a0001 := unused;
# End rule: "Rel: leftjoin(Rel, Rel)"
# Begin rule: "Rel: project(Rel)"
# a0011: item(pfrag)
# a0013: item(pre)
# a0002: iter2(nat)
a0009 := unused;
a0014 := unused;
# End rule: "Rel: project(Rel)"
# Begin rule: "Rel: project(Rel)"
# a0004: item1(pfrag)
# a0003: item1(pre)
# a0000: iter(nat)
# End rule: "Rel: project(Rel)"
# Begin rule: "Rel: leftjoin(Rel, Rel)"
a0001 := a0000.leftjoin (a0002.reverse ());
a0005 := a0001.mark (0@0).reverse ();
a0006 := a0001.reverse ().mark (0@0).reverse ();
a0001 := unused;
a0001 := a0005.leftjoin (a0004);
a0001 := a0001.reverse ().mark (0@0).reverse ();
# a0001: item1(pfrag)
a0007 := a0005.leftjoin (a0003);
a0007 := a0007.reverse ().mark (0@0).reverse ();
# a0007: item1(pre)
# a0008: iter(nat)
a0009 := a0006.leftjoin (a0011);
a0009 := a0009.reverse ().mark (0@0).reverse ();
# a0009: item(pfrag)
a0010 := a0006.leftjoin (a0013);
a0010 := a0010.reverse ().mark (0@0).reverse ();
# a0010: item(pre)
# a0012: iter2(nat)
a0005 := unused;
a0006 := unused;
a0004 := unused;
a0003 := unused;
a0000 := unused;
a0011 := unused;
a0013 := unused;
a0002 := unused;
# End rule: "Rel: leftjoin(Rel, Rel)"
# Begin rule: "Rel: project(Rel)"
# a0009: item(pfrag)
# a0010: item(pre)
# a0001: item1(pfrag)
# a0007: item1(pre)
a0008 := unused;
a0012 := unused;
# End rule: "Rel: project(Rel)"
# Begin rule: "Rel: refine_sort(Rel)"
a0000 := a0001;
a0000 := a0000.CTrefine (a0007);
a0000 := a0000.CTrefine (a0009);
a0000 := a0000.CTrefine (a0010);
a0000 := a0000.mark (0@0).reverse ();
a0002 := a0000.leftjoin (a0009);
a0002 := a0002.reverse ().mark (0@0).reverse ();
# a0002: item(pfrag)
a0003 := a0000.leftjoin (a0010);
a0003 := a0003.reverse ().mark (0@0).reverse ();
# a0003: item(pre)
# a0001: item1(pfrag)
# a0007: item1(pre)
a0000 := unused;
a0009 := unused;
a0010 := unused;
# End rule: "Rel: refine_sort(Rel)"
# Begin rule: "Rel: number(Rel)"
# a0002: item(pfrag)
# a0003: item(pre)
# a0001: item1(pfrag)
# a0007: item1(pre)
# a0000: pos(nat)
# End rule: "Rel: number(Rel)"
# Begin rule: "Rel: project(Rel)"
# a0002: item(pfrag)
# a0003: item(pre)
# a0000: pos(nat)
a0001 := unused;
a0007 := unused;
# End rule: "Rel: project(Rel)"
a0004 := new (lng, void).key (true).reverse ().seqbase (0@0);
a0005 := new (dbl, void).key (true).reverse ().seqbase (0@0);
a0006 := new (str, void).key (true).reverse ().seqbase (0@0);
a0007 := a0003;
a0008 := a0002.set_kind (ELEM);
a0007 := a0007.reverse ().mark (0@0).reverse ();
a0008 := a0008.reverse ().mark (0@0).reverse ();
print_result ("xml", ws, a0007, a0008, a0004, a0005, a0005, a0006);
a0004 := unused;
a0005 := unused;
a0006 := unused;
a0007 := unused;
a0008 := unused;
a0001 := unused;
});
if (not(isnil(ws))) {
ws_destroy (ws);
} else {
}
if (not(isnil(a0001))) {
ERROR (a0001);
} else {
}
a0001 := unused;
a0002 := unused;
a0003 := unused;
a0000 := unused;
# End rule: "Query: serialize(FragList, Rel)"