Hi Christian,

Seems to work fine with latest snapshot with some straightforward
cases but I do get an error in some cases which I cannot understand.
Though I appreciate that it may be difficult to support all types of
dynamic calls.

The error is: [bxerr:BXXQ0001] No updating expression allowed.

I am not using updating expressions. I also tried this in my little
test project and it runs against the same error. I haven't been able
to pinpoint it yet as it happens deep in the bowels of the code. When
I'm able to I will let you know.

You can use a simple/small set of unit tests to verify [1]. I've
%unit:ignored the last test that causes the error above.

Cheers,
--Marc

[1] https://github.com/xokomola/origami-examples/blob/master/check/test-eval.xqm

On Fri, Jan 15, 2016 at 6:57 PM, Christian Grün
<christian.gr...@gmail.com> wrote:
> Hi Marc,
>
> This was a deliberate restriction: As maps and arrays are function
> items, and as they can contain references to other functions that have
> been declared in the evaluated query, it is generally tricky to
> evaluate and return them dynamically.
>
> However, I spent some more thoughts on the underlying semantics, and I
> may have found a solution that overcomes some of the earlier
> limitations.
>
> A new snapshot is available [1], which now allows you to return
> function items (incl. maps and arrays) as result of xquery:eval. Your
> testing feedback will be welcome.
>
> Christian
>
> [1] http://files.basex.org/releases/latest/
>
>
>
> On Thu, Jan 14, 2016 at 11:17 PM, Marc van Grootel
> <marc.van.groo...@gmail.com> wrote:
>> Hi,
>>
>> I'm trying to return a map or an array from xquery:eval. Seems this is
>> not possible, yet the signature says it returns item()*
>>
>>     xquery:eval('1 + 1') => 2
>>     xquery:eval('[1,2]') => ERROR: [FOTY0014] Items of type array(*)
>> have no string representation.
>>     xquery:eval('map { "x": 10 }') => ERROR: [FOTY0014] Items of type
>> map(*) have no string representation.
>>
>> BTW: I saw that xquery:eval#3 is documented as returning item() while
>> the other arities return item()*
>>
>> Tested on 8.3, haven't tested yet on 8.4beta but it's trivial to repro I 
>> figure.
>>
>> --
>> --Marc



-- 
--Marc

Reply via email to