Bug related to copy/modify/return and java binding
Hello everyone,
I have probably found a bug that is related to copy/modify/return and the java-binding. Anyway, I couldn't narrow down the problem any further.
With the following XQuery-Code I get the result “<A>0</A>” in BaseX 10.4 - as expected. In BaseX 12.0 I get an error message “Cannot invoke ”org.basex.query.func.XQFunction.arity()“ because ‘func’ is null”.
(: schnipp :)
declare namespace ll = "java:java.util.LinkedList";
declare variable $linkedList := ll:new();
copy $test := <A>{ll:size($linkedList)}</A>
modify ()
return $test
(: schnapp :)Full StackTrace:
NullPointerException: Cannot invoke "org.basex.query.func.XQFunction.arity()" because "func" is null - [org.basex.query.func.FuncCall.value(FuncCall.java:47), org.basex.query.expr.ParseExpr.iter(ParseExpr.java:49), org.basex.query.up.expr.Transform.value(Transform.java:64), org.basex.query.expr.Pipeline.eval(Pipeline.java:96), org.basex.query.expr.Pipeline.value(Pipeline.java:81), org.basex.query.expr.List.value(List.java:205), org.basex.query.expr.If.value(If.java:159), org.basex.query.expr.List.value(List.java:209), org.basex.query.expr.Pipeline.value(Pipeline.java:82), org.basex.query.expr.gflwor.Let$LetEval.next(Let.java:147), org.basex.query.expr.gflwor.Where$1.next(Where.java:41), org.basex.query.expr.gflwor.GFLWOR$1.next(GFLWOR.java:79), org.basex.query.QueryContext.next(QueryContext.java:395), org.basex.query.expr.List$1.next(List.java:162), org.basex.query.QueryContext.next(QueryContext.java:395), org.basex.query.expr.constr.Constr.add(Constr.java:73), org.basex.query.expr.constr.CElem.item(CElem.java:140), org.basex.query.expr.constr.CElem.item(CElem.java:32), org.basex.query.expr.ParseExpr.value(ParseExpr.java:54), org.basex.query.expr.ParseExpr.iter(ParseExpr.java:49), org.basex.query.expr.IterFilter$1.next(IterFilter.java:36), org.basex.query.QueryContext.next(QueryContext.java:395), org.basex.query.expr.List$1.next(List.java:162), org.basex.query.QueryContext.next(QueryContext.java:395), org.basex.query.expr.constr.Constr.add(Constr.java:73), org.basex.query.expr.constr.CElem.item(CElem.java:140), org.basex.query.expr.constr.CElem.item(CElem.java:32), org.basex.query.expr.ParseExpr.value(ParseExpr.java:54), org.basex.query.expr.ParseExpr.iter(ParseExpr.java:49), org.basex.query.expr.IterFilter.value(IterFilter.java:49), org.basex.query.expr.List.value(List.java:209), org.basex.query.expr.Try.value(Try.java:109), org.basex.query.expr.ParseExpr.iter(ParseExpr.java:49), org.basex.query.scope.MainModule.iter(MainModule.java:53), org.basex.query.QueryContext.lambda$iter$4(QueryContext.java:374), org.basex.query.QueryContext.run(QueryContext.java:770), org.basex.query.QueryContext.iter(QueryContext.java:374), org.basex.query.QueryProcessor.iter(QueryProcessor.java:97)
Many thanks and best regards Andreas
Hi Andreas,
thank you for reporting this, and for the clear and concise reproduction.
The issue is now being addressed in the following pull request: https://github.com/BaseXdb/basex/pull/2455
Best regards, Gunther
Gesendet: Montag, 7. Juli 2025 um 15:29
Quoted text · Andreas Hengsbach | nexoma · 19 lines
Von: "Andreas Hengsbach | nexoma" <andreas.hengsbach at nexoma.com> An: "basex-talk at mailman.uni-konstanz.de" <basex-talk at mailman.uni-konstanz.de> Betreff: [basex-talk] Bug related to copy/modify/return and java binding Hello everyone, I have probably found a bug that is related to copy/modify/return and the java-binding. Anyway, I couldn't narrow down the problem any further. With the following XQuery-Code I get the result “<A>0</A>” in BaseX 10.4 - as expected. In BaseX 12.0 I get an error message “Cannot invoke ”org.basex.query.func.XQFunction.arity()“ because ‘func’ is null”. (: schnipp :) declare namespace ll = "java:java.util.LinkedList"; declare variable $linkedList := ll:new(); copy $test := <A>{ll:size($linkedList)}</A> modify () return $test (: schnapp :) Full StackTrace: NullPointerException: Cannot invoke "org.basex.query.func.XQFunction.arity()" because "func" is null - [org.basex.query.func.FuncCall.value(FuncCall.java:47), org.basex.query.expr.ParseExpr.iter(ParseExpr.java:49), org.basex.query.up.expr.Transform.value(Transform.java:64), org.basex.query.expr.Pipeline.eval(Pipeline.java:96), org.basex.query.expr.Pipeline.value(Pipeline.java:81), org.basex.query.expr.List.value(List.java:205), org.basex.query.expr.If.value(If.java:159), org.basex.query.expr.List.value(List.java:209), org.basex.query.expr.Pipeline.value(Pipeline.java:82), org.basex.query.expr.gflwor.Let$LetEval.next(Let.java:147), org.basex.query.expr.gflwor.Where$1.next(Where.java:41), org.basex.query.expr.gflwor.GFLWOR$1.next(GFLWOR.java:79), org.basex.query.QueryContext.next(QueryContext.java:395), org.basex.query.expr.List$1.next(List.java:162), org.basex.query.QueryContext.next(QueryContext.java:395), org.basex.query.expr.constr.Constr.add(Constr.java:73), org.basex.query.expr.constr.CElem.item(CElem.java:140), org.basex.query.expr.constr.CElem.item(CElem.java:32), org.basex.query.expr.ParseExpr.value(ParseExpr.java:54), org.basex.query.expr.ParseExpr.iter(ParseExpr.java:49), org.basex.query.expr.IterFilter$1.next(IterFilter.java:36), org.basex.query.QueryContext.next(QueryContext.java:395), org.basex.query.expr.List$1.next(List.java:162), org.basex.query.QueryContext.next(QueryContext.java:395), org.basex.query.expr.constr.Constr.add(Constr.java:73), org.basex.query.expr.constr.CElem.item(CElem.java:140), org.basex.query.expr.constr.CElem.item(CElem.java:32), org.basex.query.expr.ParseExpr.value(ParseExpr.java:54), org.basex.query.expr.ParseExpr.iter(ParseExpr.java:49), org.basex.query.expr.IterFilter.value(IterFilter.java:49), org.basex.query.expr.List.value(List.java:209), org.basex.query.expr.Try.value(Try.java:109), org.basex.query.expr.ParseExpr.iter(ParseExpr.java:49), org.basex.query.scope.MainModule.iter(MainModule.java:53), org.basex.query.QueryContext.lambda$iter$4(QueryContext.java:374), org.basex.query.QueryContext.run(QueryContext.java:770), org.basex.query.QueryContext.iter(QueryContext.java:374), org.basex.query.QueryProcessor.iter(QueryProcessor.java:97) Many thanks and best regards Andreas
Written for BaseX 12.0. BaseX may have changed since: please check the current documentation.