This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.

Bug 13745 - [XQuery 3.0] "deterministic" and "nondeterministic"
Summary: [XQuery 3.0] "deterministic" and "nondeterministic"
Status: RESOLVED FIXED
Alias: None
Product: XPath / XQuery / XSLT
Classification: Unclassified
Component: XQuery 3.0 (show other bugs)
Version: Working drafts
Hardware: PC Windows NT
: P2 normal
Target Milestone: ---
Assignee: Jonathan Robie
QA Contact: Mailing list for public feedback on specs from XSL and XML Query WGs
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-08-10 09:57 UTC by Michael Kay
Modified: 2011-09-06 19:15 UTC (History)
0 users

See Also:


Attachments

Description Michael Kay 2011-08-10 09:57:19 UTC
The XQuery specification often seems to use the phrase "nondeterministic" where "implementation-dependent" would be more appropriate. For example:

2.4.3: "The effective boolean value of a sequence that contains at least one node and at least one atomic value may be nondeterministic in regions of a query where ordering mode is unordered."

3.2.1: "In a region of a query where ordering mode is unordered, the result of a numeric predicate is nondeterministic, as explained in 3.10 Ordered and Unordered Expressions."

I note also that "nondeterministic" is sometimes hyphenated, sometimes not; and that we sometimes say "is nondeterministic", sometimes "may be nondeterministic", with no apparent difference in intended meaning.

I suspect our intent is that wherever the result of an expression is implementation-defined or implementation-dependent (i.e. varies from one implementation to another) then it is also implementation-defined or -dependent whether it is deterministic (i.e. varies from one execution to another).
Comment 1 Jonathan Robie 2011-09-06 19:15:37 UTC
(In reply to comment #0)
> I suspect our intent is that wherever the result of an expression is
> implementation-defined or implementation-dependent (i.e. varies from one
> implementation to another) then it is also implementation-defined or -dependent
> whether it is deterministic (i.e. varies from one execution to another).

This is not a general principle. For instance, documentation order is stable even when it is implementation-defined.

> The XQuery specification often seems to use the phrase "nondeterministic" where
> "implementation-dependent" would be more appropriate. For example:
> 
> 2.4.3: "The effective boolean value of a sequence that contains at least one
> node and at least one atomic value may be nondeterministic in regions of a
> query where ordering mode is unordered."

We should either eliminate the term or define it. 

It looks like most users are in non-normative notes. The following use is normative:

<quote>
In addition to ordered and unordered expressions, XQuery provides a function named fn:unordered that operates on any sequence of items and returns the same sequence in a nondeterministic order.
</quote>

The other uses all seem to refer to this one, directly or indirectly.

I would say that in this case the result should be implementation-defined, and is not required to be stable. In the non-normative notes, I would change "nondeterministic" to "implementation-defined".

I do not believe this changes any requirements on processors, so it's probably an editorial change. I'll go ahead and make it, please reopen if I got this wrong.

> I note also that "nondeterministic" is sometimes hyphenated, sometimes not; and
> that we sometimes say "is nondeterministic", sometimes "may be
> nondeterministic", with no apparent difference in intended meaning.

Yes, it looks like the hyphenated spelling is used only when discussing annotations. I just eliminated these hyphens.

And I changed "may be nondeterministic" to "is implementation-dependent" in the two places where I saw it.