From: Wolfgang M. M. <wol...@us...> - 2004-06-30 15:57:39
|
Update of /cvsroot/exist/eXist-1.0/src/org/exist/xquery In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21812/src/org/exist/xquery Modified Files: OrderSpec.java BindingExpression.java DynamicCardinalityCheck.java Log Message: Fixed xquery caching bug in "order by" clause, which leads to a NullPointerException in DOMFile.getNodeValue. Index: OrderSpec.java =================================================================== RCS file: /cvsroot/exist/eXist-1.0/src/org/exist/xquery/OrderSpec.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** OrderSpec.java 29 Jan 2004 15:06:42 -0000 1.1 --- OrderSpec.java 30 Jun 2004 15:56:59 -0000 1.2 *************** *** 65,67 **** --- 65,71 ---- return buf.toString(); } + + public void resetState() { + expression.resetState(); + } } Index: BindingExpression.java =================================================================== RCS file: /cvsroot/exist/eXist-1.0/src/org/exist/xquery/BindingExpression.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** BindingExpression.java 28 May 2004 10:54:12 -0000 1.3 --- BindingExpression.java 30 Jun 2004 15:56:59 -0000 1.4 *************** *** 191,194 **** --- 191,199 ---- if(whereExpr != null) whereExpr.resetState(); returnExpr.resetState(); + if(orderSpecs != null) { + for(int i = 0; i < orderSpecs.length; i++) { + orderSpecs[i].resetState(); + } + } } } Index: DynamicCardinalityCheck.java =================================================================== RCS file: /cvsroot/exist/eXist-1.0/src/org/exist/xquery/DynamicCardinalityCheck.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** DynamicCardinalityCheck.java 28 May 2004 10:54:12 -0000 1.2 --- DynamicCardinalityCheck.java 30 Jun 2004 15:56:59 -0000 1.3 *************** *** 52,60 **** int items = seq.getLength(); if(items > 0 && requiredCardinality == Cardinality.EMPTY) ! throw new XPathException("Empty sequence expected; got " + items); if(items == 0 && (requiredCardinality & Cardinality.ZERO) == 0) ! throw new XPathException("Empty sequence is not allowed here"); else if(items > 1 && (requiredCardinality & Cardinality.MANY) == 0) ! throw new XPathException("Sequence with more than one item is not allowed here"); return seq; } --- 52,60 ---- int items = seq.getLength(); if(items > 0 && requiredCardinality == Cardinality.EMPTY) ! throw new XPathException(getASTNode(), "Empty sequence expected; got " + items); if(items == 0 && (requiredCardinality & Cardinality.ZERO) == 0) ! throw new XPathException(getASTNode(), "Empty sequence is not allowed here"); else if(items > 1 && (requiredCardinality & Cardinality.MANY) == 0) ! throw new XPathException(getASTNode(), "Sequence with more than one item is not allowed here"); return seq; } |