- From: <bugzilla@wiggum.w3.org>
- Date: Mon, 02 Apr 2007 21:27:31 +0000
- To: public-qt-comments@w3.org
- CC:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=4446
Summary: [XQuery] 2.3.4 Equivalent expressions
Product: XPath / XQuery / XSLT
Version: Recommendation
Platform: PC
OS/Version: Windows XP
Status: NEW
Severity: normal
Priority: P2
Component: XQuery
AssignedTo: chamberl@almaden.ibm.com
ReportedBy: hrennau@yahoo.de
QAContact: public-qt-comments@w3.org
Section 2.3.4 „Errors and Optimization“ introduces the notion of equivalent
expressions:
“… implementations are free to rewrite expressions into equivalent expressions.
Other than the raising or not raising of errors, the result of evaluating an
equivalent expression must be the same as the result of evaluating the original
expression.”
If I understand the text correctly, this amounts to the definition of
“equivalent expressions”.
Subsequent text shows that the expression
$N[@x castable as xs:date][xs:date(@x) gt xs:date("2000-01-01")]
is unsafe, whereas
$N[if (@x castable as xs:date) then xs:date(@x) gt xs:date("2000-01-01")
else false()]
is safe. But are these not equivalent expressions, according to the definition?
If so, the second expression is not safe, because it might be rewritten! And I
even wonder if the expression:
if (not(local:isInputOK())) then error((),”blablabla”)
else local:doSomething()
is not “equivalent” to the expression
local:doSomething()
because “other than the raising or not raising or errors”, the result is the
same! I am sure no implementation would do such a rewrite, but the example
points to the basic uncertainty.
Please consider explicit clarification of the notion “equivalent expression” so
as to ensure fully predictable query results.
Regards,
- Hans-Juergen
Received on Monday, 2 April 2007 21:27:41 UTC