Different behavior with same query in BaseX 7.9 and 8.2.3
Wednesday, 9 September 2015 · 4 messages · last reply 16 Sep 2015
AW
Antoine WOLF9 Sep 2015 11:22 #
*Hi,*
*We are in the process of evaluating BaseX and recently upgraded from version 7.9 to 8.2.3We have a DB “TESTDB” with 50 xml files, named Fund1.xml, Fund2.xml, Fund3.xml,…. each having the same
structure:Fund1.xml--------------< fund>…<properties>…<domain reference=”fund1”>…</domain>…</properties>…</fund>Fund2.xml--------------< fund>…<properties>…<domain
reference=”fund2”>…</domain>…</properties>…</fund>….….The following query does not behave the same on both versions :For $d at $i in
db:open(“TESTDB”)/fund/properties/domainwhere $i < 2return
data($d/@reference)Result in 7.9------------------“Fund1”Result in 8.2.3-----------------“Fund1 Fund2 Fund3 Fund4 …”Is this a bug or is there something wrong with the query ?Best Regards,Antoine Wolf*
DK
Dirk Kirsten9 Sep 2015 13:29 #
Hello Antoine,
this appears to be a bug in most recent BaseX version. The optimizer seems to think the where clause is equivilant to the position predicate and it is rewritten to
for $d_0 in
document-node()()/descendant::fund/properties/domain[position() = 1]
return data($d_0/@reference)i.e. without a where clause but with the position() predicate. Also, if you return something like "return data($d/@reference) || $i" it works as expected.
Hence, I created a new issue for this at
https://github.com/BaseXdb/basex/issues/1189.
Thanks for reporting this. Please be aware that our main developer Christian is currently on vacation (until next week), so it will take slightly longer to get this fixed (as I know Christian usually this would be fixed by the end of the day). I hope this doesn't influence your decision making process in your evaluation.
Cheers
Dirk
Quoted text · Antoine WOLF · 72 lines
On 09/09/2015 11:22 AM, Antoine WOLF wrote: > *Hi,* > ** > *We are in the process of evaluating BaseX and recently upgraded from > version 7.9 to 8.2.3 > > > We have a DB “TESTDB” with 50 xml files, named Fund1.xml, Fund2.xml, > Fund3.xml,…. each having the same structure: > > Fund1.xml > -------------- > > < fund> > … > <properties> > … > <domain reference=”fund1”> > … > </domain> > … > </properties> > … > </fund> > > > Fund2.xml > -------------- > > < fund> > … > <properties> > … > <domain reference=”fund2”> > … > </domain> > … > </properties> > … > </fund> > > …. > …. > > > > The following query does not behave the same on both versions : > > > For $d at $i in db:open(“TESTDB”)/fund/properties/domain > where $i < 2 > return data($d/@reference) > > > Result in 7.9 > ------------------ > > “Fund1” > > > Result in 8.2.3 > ----------------- > > “Fund1 Fund2 Fund3 Fund4 …” > > > Is this a bug or is there something wrong with the query ? > > > Best Regards, > > Antoine Wolf*
--
Dirk Kirsten, BaseX GmbH, http://basexgmbh.de
|-- Firmensitz: Blarerstrasse 56, 78462 Konstanz
|-- Registergericht Freiburg, HRB: 708285, Geschäftsführer:
| Dr. Christian Grün, Dr. Alexander Holupirek, Michael Seiferle `-- Phone: 0049 7531 28 28 676, Fax: 0049 7531 20 05 22
CG
Christian Grün14 Sep 2015 16:41 #
Thanks Antoine, thanks Dirk,
The bug has been fixed in the latest snapshot [1]. BaseX 8.3 is planned to be released this month.
Best,
Christian
[1] http://files.basex.org/releases/latest
Quoted text · Dirk Kirsten · 112 lines
On Wed, Sep 9, 2015 at 1:29 PM, Dirk Kirsten <dk at basex.org> wrote: > Hello Antoine, > > this appears to be a bug in most recent BaseX version. The optimizer seems > to think the where clause is equivilant to the position predicate and it is > rewritten to > > for $d_0 in > document-node()()/descendant::fund/properties/domain[position() = 1] return > data($d_0/@reference) > > i.e. without a where clause but with the position() predicate. Also, if you > return something like "return data($d/@reference) || $i" it works as > expected. > > Hence, I created a new issue for this at > https://github.com/BaseXdb/basex/issues/1189. > > Thanks for reporting this. Please be aware that our main developer Christian > is currently on vacation (until next week), so it will take slightly longer > to get this fixed (as I know Christian usually this would be fixed by the > end of the day). I hope this doesn't influence your decision making process > in your evaluation. > > Cheers > Dirk > > > > > > On 09/09/2015 11:22 AM, Antoine WOLF wrote: > > Hi, > > We are in the process of evaluating BaseX and recently upgraded from > version 7.9 to 8.2.3 > > > We have a DB “TESTDB” with 50 xml files, named Fund1.xml, Fund2.xml, > Fund3.xml,…. each having the same structure: > > Fund1.xml > -------------- > > < fund> > … > <properties> > … > <domain reference=”fund1”> > … > </domain> > … > </properties> > … > </fund> > > > Fund2.xml > -------------- > > < fund> > … > <properties> > … > <domain reference=”fund2”> > … > </domain> > … > </properties> > … > </fund> > > …. > …. > > > > The following query does not behave the same on both versions : > > > For $d at $i in db:open(“TESTDB”)/fund/properties/domain > where $i < 2 > return data($d/@reference) > > > Result in 7.9 > ------------------ > > “Fund1” > > > Result in 8.2.3 > ----------------- > > “Fund1 Fund2 Fund3 Fund4 …” > > > Is this a bug or is there something wrong with the query ? > > > Best Regards, > > Antoine Wolf > > > -- > Dirk Kirsten, BaseX GmbH, http://basexgmbh.de > |-- Firmensitz: Blarerstrasse 56, 78462 Konstanz > |-- Registergericht Freiburg, HRB: 708285, Geschäftsführer: > | Dr. Christian Grün, Dr. Alexander Holupirek, Michael Seiferle > `-- Phone: 0049 7531 28 28 676, Fax: 0049 7531 20 05 22
AW
Antoine WOLF16 Sep 2015 00:34 #
Hello Christian, hello Dirk,
Thank you for your quick answer and for the fix.
We will update to the latest snapshot.
Best Regards,
Antoine
—
Sent from Mailbox
Quoted text · Christian Grün · 120 lines
On Mon, Sep 14, 2015 at 4:41 PM, Christian Grün <christian.gruen at gmail.com> wrote: > Thanks Antoine, thanks Dirk, > The bug has been fixed in the latest snapshot [1]. BaseX 8.3 is > planned to be released this month. > Best, > Christian > [1] http://files.basex.org/releases/latest > On Wed, Sep 9, 2015 at 1:29 PM, Dirk Kirsten <dk at basex.org> wrote: >> Hello Antoine, >> >> this appears to be a bug in most recent BaseX version. The optimizer seems >> to think the where clause is equivilant to the position predicate and it is >> rewritten to >> >> for $d_0 in >> document-node()()/descendant::fund/properties/domain[position() = 1] return >> data($d_0/@reference) >> >> i.e. without a where clause but with the position() predicate. Also, if you >> return something like "return data($d/@reference) || $i" it works as >> expected. >> >> Hence, I created a new issue for this at >> https://github.com/BaseXdb/basex/issues/1189. >> >> Thanks for reporting this. Please be aware that our main developer Christian >> is currently on vacation (until next week), so it will take slightly longer >> to get this fixed (as I know Christian usually this would be fixed by the >> end of the day). I hope this doesn't influence your decision making process >> in your evaluation. >> >> Cheers >> Dirk >> >> >> >> >> >> On 09/09/2015 11:22 AM, Antoine WOLF wrote: >> >> Hi, >> >> We are in the process of evaluating BaseX and recently upgraded from >> version 7.9 to 8.2.3 >> >> >> We have a DB “TESTDB” with 50 xml files, named Fund1.xml, Fund2.xml, >> Fund3.xml,…. each having the same structure: >> >> Fund1.xml >> -------------- >> >> < fund> >> … >> <properties> >> … >> <domain reference=”fund1”> >> … >> </domain> >> … >> </properties> >> … >> </fund> >> >> >> Fund2.xml >> -------------- >> >> < fund> >> … >> <properties> >> … >> <domain reference=”fund2”> >> … >> </domain> >> … >> </properties> >> … >> </fund> >> >> …. >> …. >> >> >> >> The following query does not behave the same on both versions : >> >> >> For $d at $i in db:open(“TESTDB”)/fund/properties/domain >> where $i < 2 >> return data($d/@reference) >> >> >> Result in 7.9 >> ------------------ >> >> “Fund1” >> >> >> Result in 8.2.3 >> ----------------- >> >> “Fund1 Fund2 Fund3 Fund4 …” >> >> >> Is this a bug or is there something wrong with the query ? >> >> >> Best Regards, >> >> Antoine Wolf >> >> >> -- >> Dirk Kirsten, BaseX GmbH, http://basexgmbh.de >> |-- Firmensitz: Blarerstrasse 56, 78462 Konstanz >> |-- Registergericht Freiburg, HRB: 708285, Geschäftsführer: >> | Dr. Christian Grün, Dr. Alexander Holupirek, Michael Seiferle >> `-- Phone: 0049 7531 28 28 676, Fax: 0049 7531 20 05 22
Written for BaseX 8.2. BaseX may have changed since: please check the current documentation.
⚡Generated with XQuery