Hi Sebastian,

​Thanks for your bug report. I found the culprit, it was a little static typing error​ in our lookup expression optimizations [1].

A new snapshot is available [2]; BaseX 9.0.2 will probably be released around end of May.

Cheers,
Christian





On Fri, May 11, 2018 at 12:52 PM, Sebastian Zimmer <sebastian.zimmer@uni-koeln.de> wrote:

Sorry to bother you again, but I think there is still something wrong with my code and I can't figure it out. This time I checked it consistently on BaseX 9.0.1 (Windows and Linux, console and web server), results are always the same:

xquery version "3.1";
declare namespace array = "http://www.w3.org/2005/xpath-functions/array";

let $array1 := []
let $array2 := array:for-each([], function($i) { lower-case($i) })
let $array3 := array:for-each([], function($i) { $i + 1 })

return (
  empty($array1!?*),
  empty($array2!?*),
  empty($array3!?*),
  empty(
    for $i in 1 to array:size($array1)
    return $array1($i)
  ),
  empty(
    for $i in 1 to array:size($array2)
    return $array2($i)
  ),
  empty(
    for $i in 1 to array:size($array3)
    return $array3($i)
  )
)

The results I get are:
true
false
true
true
true
true

Why isn't the second result "true" too?

Best regards,
Sebastian


Am 11.05.2018 um 11:12 schrieb Sebastian Zimmer:

Hi again,

the problem is gone now after a reboot. It seems that the web server was running on another version while the console was running with 9.0.1

Sorry for the inconvenience.

Best,
Sebastian

Am 11.05.2018 um 11:04 schrieb Sebastian Zimmer:

Hi Giuseppe,

thanks for checking. I double-checked again. The problem is even weirder now:

When using the console, I too get 2x true:

$ ./bin/basex "./webapp/array_test.xql"
true
true

When using the web server, I still get this:

$ curl localhost:8994/rest?run=array_test.xql
false
true

At first I thought there was some cache at work, preventing the update, but it doesn't seem to be the case. I can edit the XQL und both outputs change accordingly, but the first boolean is still different.

Best regards,
Sebastian


Am 11.05.2018 um 08:28 schrieb Giuseppe Celano:
Hi Sebastian,

In my Basex 9.0.1 and 8.6.7 you get two "true". 

Best,
Giuseppe

Universität Leipzig
Institute of Computer Science, NLP
Augustusplatz 10
04109 Leipzig
Deutschland
E-mail: celano@informatik.uni-leipzig.de
E-mail: giuseppegacelano@gmail.com
Web site 1: http://www.dh.uni-leipzig.de/wo/team/
Web site 2: https://sites.google.com/site/giuseppegacelano/

On May 11, 2018, at 1:50 AM, Sebastian Zimmer <sebastian.zimmer@uni-koeln.de> wrote:

Hi,

I have this script where I use the lookup operator to perform a unary lookup:

xquery version "3.1";
declare namespace array = "http://www.w3.org/2005/xpath-functions/array";

let $array := []

return (
  empty($array!?*),   (: returns false :)
  empty(
    for $i in 1 to array:size($array)
    return $array($i)
  )                  (: returns true  :)
)

I'm curious that the first expression returns false even though it should be equivalent to the second expression, if I read the XQuery spec [1] right:

If the context item is an array:
If the KeySpecifier is a wildcard ("*"), the UnaryLookup operator is equivalent to the following expression:
for $k in 1 to array:size(.)
return .($k)

But maybe I'm missing something. I'd be glad if you could help.

Best regards,
Sebastian Zimmer

[1] https://www.w3.org/TR/2017/REC-xquery-31-20170321/#id-unary-lookup



--
Sebastian Zimmer
sebastian.zimmer@uni-koeln.de
CCeH Logo

Cologne Center for eHumanities
DH Center at the University of Cologne
Twitter Logo@CCeHum


--
Sebastian Zimmer
sebastian.zimmer@uni-koeln.de
CCeH Logo

Cologne Center for eHumanities
DH Center at the University of Cologne
Twitter Logo@CCeHum


--
Sebastian Zimmer
sebastian.zimmer@uni-koeln.de
CCeH
              Logo

Cologne Center for eHumanities
DH Center at the University of Cologne
Twitter Logo@CCeHum