浏览代码

Merge branch 'candidate-6.0.0' into candidate-6.0.2

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 9 年之前
父节点
当前提交
1202589b6d
共有 67 个文件被更改,包括 3027 次插入210 次删除
  1. 3 0
      docs/ECLLanguageReference/ECLR-includer.xml
  2. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-AGGREGATE.xml
  3. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-APPLY.xml
  4. 48 2
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-ASCII.xml
  5. 78 4
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-ASSERT.xml
  6. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-AVE.xml
  7. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-BUILD.xml
  8. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-CATCH.xml
  9. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-CHOOSEN.xml
  10. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-CHOOSETS.xml
  11. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-COMBINE.xml
  12. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-CORRELATION.xml
  13. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-COUNT.xml
  14. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-COVARIANCE.xml
  15. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-DEDUP.xml
  16. 47 3
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-DENORMALIZE.xml
  17. 49 7
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-DISTRIBUTE.xml
  18. 47 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-DISTRIBUTION.xml
  19. 46 2
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-EBCDIC.xml
  20. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-ENTH.xml
  21. 47 4
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-EXISTS.xml
  22. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-FETCH.xml
  23. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-GRAPH.xml
  24. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-GROUP.xml
  25. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-HAVING.xml
  26. 47 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-ITERATE.xml
  27. 44 8
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-JOIN.xml
  28. 47 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-KEYDIFF.xml
  29. 47 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-KEYPATCH.xml
  30. 48 3
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-LIMIT.xml
  31. 50 26
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-LOOP.xml
  32. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-MAX.xml
  33. 47 2
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-MERGE.xml
  34. 47 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-MERGEJOIN.xml
  35. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-MIN.xml
  36. 47 3
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-NORMALIZE.xml
  37. 1 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-ORDERED.xml
  38. 53 8
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-OUTPUT.xml
  39. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-PARSE.xml
  40. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-PIPE.xml
  41. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-PROCESS.xml
  42. 47 2
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-PROJECT.xml
  43. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-RANGE.xml
  44. 46 2
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-REGROUP.xml
  45. 48 4
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-ROLLUP.xml
  46. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-SAMPLE.xml
  47. 71 2
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-SET.xml
  48. 47 3
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-SOAPCALL.xml
  49. 36 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-SORT.xml
  50. 47 2
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-STEPPED.xml
  51. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-SUM.xml
  52. 54 13
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-TABLE.xml
  53. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-TOPN.xml
  54. 46 2
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-UNGROUP.xml
  55. 41 0
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-UNORDERED.xml
  56. 46 1
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-VARIANCE.xml
  57. 146 9
      docs/ECLLanguageReference/ECLR_mods/Expr-RecordSetOps.xml
  58. 5 4
      docs/ECLWatch/ECLWa_mods/ECLWatchSrc.xml
  59. 154 36
      docs/Installing_and_RunningTheHPCCPlatform/Installing_and_RunningTheHPCCPlatform.xml
  60. 二进制
      docs/images/ECLWAZ01.jpg
  61. 二进制
      docs/images/GS-InitStart.jpg
  62. 123 0
      ecl/eclcc/DOCUMENTATION.rst
  63. 6 0
      ecl/hql/hqlopt.cpp
  64. 15 15
      plugins/kafka/README.md
  65. 7 7
      plugins/memcached/CMakeLists.txt
  66. 1 1
      plugins/memcached/lib_memcached.ecllib
  67. 2 2
      testing/regress/ecl/kafkatest.ecl

+ 3 - 0
docs/ECLLanguageReference/ECLR-includer.xml

@@ -919,6 +919,9 @@
     <xi:include href="ECLLanguageReference/ECLR_mods/BltInFunc-UNICODEORDER.xml"
                 xpointer="element(/1)"
                 xmlns:xi="http://www.w3.org/2001/XInclude" />
+    <xi:include href="ECLLanguageReference/ECLR_mods/BltInFunc-UNORDERED.xml"
+                xpointer="element(/1)"
+                xmlns:xi="http://www.w3.org/2001/XInclude" />
 
     <xi:include href="ECLLanguageReference/ECLR_mods/BltInFunc-VARIANCE.xml"
                 xpointer="element(/1)"

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-AGGREGATE.xml

@@ -22,7 +22,7 @@
       <primary>FEW</primary>
     </indexterm> | MANY<indexterm>
       <primary>MANY</primary>
-    </indexterm>] )</emphasis></para>
+    </indexterm>] [, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -93,6 +93,51 @@
             <entry>Optional. Indicates that the expression will result in more
             than 10,000 records.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-APPLY.xml

@@ -15,7 +15,7 @@
     </indexterm>( </emphasis><emphasis>actionlist </emphasis><emphasis
   role="bold">) ]</emphasis><emphasis role="bold"> [ , AFTER<indexterm>
       <primary>AFTER</primary>
-    </indexterm>( </emphasis><emphasis>actionlist </emphasis><emphasis
+    </indexterm>( </emphasis><emphasis>actionlist </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ]</emphasis><emphasis
   role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
@@ -69,6 +69,51 @@
             processed. Not yet implemented in Thor, valid only in hthor and
             Roxie.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
         </tbody>
       </tgroup>
     </informaltable></para>

+ 48 - 2
docs/ECLLanguageReference/ECLR_mods/BltInFunc-ASCII.xml

@@ -8,8 +8,9 @@
       <primary>ASCII</primary>
     </indexterm><indexterm>
       <primary>ASCII function</primary>
-    </indexterm>(</emphasis><emphasis>recordset</emphasis><emphasis
-  role="bold">)</emphasis></para>
+    </indexterm>(</emphasis><emphasis>recordset</emphasis>
+    <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ]</emphasis>
+    <emphasis role="bold">)</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -25,6 +26,51 @@
             dataset or a record set derived from some filter condition, or any
             expression that results in a derived record set.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 78 - 4
docs/ECLLanguageReference/ECLR_mods/BltInFunc-ASSERT.xml

@@ -17,13 +17,22 @@
   <para><emphasis role="bold">ASSERT( </emphasis><emphasis>recset, condition
   </emphasis><emphasis role="bold">[ </emphasis><emphasis>, message
   </emphasis><emphasis role="bold">] [ </emphasis>, <emphasis role="bold">FAIL
-  ] [ </emphasis>, <emphasis role="bold">CONST ])</emphasis><emphasis
-  role="bold"><indexterm>
+  ] [ </emphasis>, <emphasis role="bold">CONST ] [, UNORDERED |
+  ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [,
+  STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads
+  </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis>
+  <emphasis>name </emphasis><emphasis role="bold">) ]</emphasis><emphasis
+  role="bold"> )</emphasis><indexterm>
       <primary>ASSERT function</primary>
-    </indexterm></emphasis></para>
+    </indexterm></para>
 
   <para><emphasis role="bold">ASSERT( </emphasis><emphasis>recset,
-  assertlist</emphasis><emphasis role="bold"> )</emphasis></para>
+  assertlist</emphasis><emphasis role="bold"> [, UNORDERED |
+  ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [,
+  STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads
+  </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis>
+  <emphasis>name </emphasis><emphasis role="bold">) ]</emphasis><emphasis
+  role="bold"> )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -69,6 +78,71 @@
           </row>
 
           <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not
+            significant.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record
+            order.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not
+            significant. When True, specifies the default output record
+            order.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is
+            significant.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not
+            significant.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in
+            parallel.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using
+            <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this
+            activity.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the
+            list of supported algorithms for the SORT function's STABLE and
+            UNSTABLE options.</entry>
+          </row>
+
+          <row>
             <entry><emphasis>assertlist</emphasis></entry>
 
             <entry>A comma-delimited list of ASSERTs of the first form, used

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-AVE.xml

@@ -12,7 +12,7 @@
   role="bold">[ </emphasis><emphasis>, expression </emphasis><emphasis
   role="bold">] [, KEYED<indexterm>
       <primary>KEYED</primary>
-    </indexterm> ])</emphasis><emphasis role="bold"></emphasis></para>
+    </indexterm> ] [, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><emphasis
   role="bold">AVE(</emphasis><emphasis>valuelist</emphasis><emphasis
@@ -57,6 +57,51 @@
             operation, which allows the optimizer to generate optimal code for
             the operation.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry><emphasis>valuelist</emphasis></entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-BUILD.xml

@@ -204,7 +204,7 @@
     ] ] <emphasis role="bold">[, MAXLENGTH<indexterm>
         <primary>MAXLENGTH</primary>
       </indexterm>[(</emphasis><emphasis>value</emphasis><emphasis
-    role="bold">)] ] ]</emphasis></emphasis></emphasis></para>
+    role="bold">)] ] ]</emphasis></emphasis></emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ]</emphasis></para>
 
     <para><informaltable colsep="1" frame="all" rowsep="1">
         <tgroup cols="2">
@@ -480,6 +480,51 @@
               structure. Variable-length records that do not specify MAXLENGTH
               may be slightly inefficient</entry>
             </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
           </tbody>
         </tgroup>
       </informaltable></para>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-CATCH.xml

@@ -8,7 +8,7 @@
       <primary>CATCH</primary>
     </indexterm><indexterm>
       <primary>CATCH Function</primary>
-    </indexterm>(</emphasis> <emphasis>recset, action</emphasis><emphasis
+    </indexterm>(</emphasis> <emphasis>recset, action</emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ]</emphasis><emphasis
   role="bold"> );</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
@@ -36,6 +36,51 @@
 
             <entry>One of the three valid actions below.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-CHOOSEN.xml

@@ -12,7 +12,7 @@
   role="bold">[</emphasis><emphasis>, startpos </emphasis><emphasis
   role="bold">] [, FEW<indexterm>
       <primary>FEW</primary>
-    </indexterm>])</emphasis></para>
+    </indexterm>] [, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -53,6 +53,51 @@
             operation if n is a variable number (an attribute or passed
             parameter) and the input recordset comes from a SORT.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-CHOOSETS.xml

@@ -20,7 +20,7 @@
   role="bold">|</emphasis><emphasis> </emphasis><emphasis
   role="bold">ENTH<indexterm>
       <primary>ENTH</primary>
-    </indexterm></emphasis><emphasis> </emphasis><emphasis role="bold">]
+    </indexterm></emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] ]
   )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
@@ -88,6 +88,51 @@
             the condition instead of the first n. This option is implicitly
             EXCLUSIVE.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-COMBINE.xml

@@ -19,7 +19,7 @@
     </indexterm> </emphasis>,<emphasis> transform </emphasis><emphasis
   role="bold">[,LOCAL]<indexterm>
       <primary>LOCAL</primary>
-    </indexterm> </emphasis><emphasis role="bold">)</emphasis></para>
+    </indexterm> </emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -62,6 +62,51 @@
             <entry>Specifies the <emphasis>rightrecset</emphasis> has been
             GROUPed. If this is not the case, an error occurs.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-CORRELATION.xml

@@ -12,7 +12,7 @@
   </emphasis><emphasis role="bold">[ </emphasis><emphasis>,
   expresssion</emphasis><emphasis role="bold">] [, KEYED<indexterm>
       <primary>KEYED</primary>
-    </indexterm> ] )</emphasis></para>
+    </indexterm> ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -60,6 +60,51 @@
             operation, which allows the optimizer to generate optimal code for
             the operation.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-COUNT.xml

@@ -10,7 +10,7 @@
   role="bold">[ </emphasis><emphasis>, expression </emphasis><emphasis
   role="bold">] [, KEYED<indexterm>
       <primary>KEYED</primary>
-    </indexterm> ])</emphasis><emphasis role="bold"></emphasis></para>
+    </indexterm> ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><emphasis role="bold">COUNT<indexterm>
       <primary>COUNT</primary>
@@ -51,6 +51,51 @@
             operation, which allows the optimizer to generate optimal code for
             the operation.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry><emphasis>valuelist</emphasis></entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-COVARIANCE.xml

@@ -12,7 +12,7 @@
   </emphasis><emphasis role="bold">[ </emphasis><emphasis>,
   expresssion</emphasis><emphasis role="bold">] [, KEYED<indexterm>
       <primary>KEYED</primary>
-    </indexterm> ])</emphasis></para>
+    </indexterm> ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -59,6 +59,51 @@
             operation, which allows the optimizer to generate optimal code for
             the operation.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-DEDUP.xml

@@ -20,7 +20,7 @@
   [</emphasis>,<emphasis> keeper </emphasis><emphasis role="bold">] ]
   [</emphasis><emphasis>, </emphasis><emphasis role="bold">LOCAL<indexterm>
       <primary>LOCAL</primary>
-    </indexterm>])</emphasis></para>
+    </indexterm>]</emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -96,6 +96,51 @@
             with all other nodes to acquire data; the operation maintains the
             distribution of any previous DISTRIBUTE.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 47 - 3
docs/ECLLanguageReference/ECLR_mods/BltInFunc-DENORMALIZE.xml

@@ -13,14 +13,13 @@
       <primary>LOCAL</primary>
     </indexterm>] [,NOSORT<indexterm>
       <primary>NOSORT</primary>
-    </indexterm>])</emphasis><emphasis role="bold"></emphasis></para>
+    </indexterm>] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><emphasis role="bold">DENORMALIZE(</emphasis><emphasis>parentrecset,
   childrecset, condition, </emphasis><emphasis
   role="bold">GROUP</emphasis><emphasis><indexterm>
       <primary>GROUP</primary>
-    </indexterm>, transform </emphasis><emphasis role="bold"> [,LOCAL]
-  [,NOSORT])</emphasis></para>
+    </indexterm>, transform </emphasis><emphasis role="bold"> [,LOCAL] [,NOSORT] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -84,6 +83,51 @@
             records are passed as a dataset parameter to the
             transform.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 49 - 7
docs/ECLLanguageReference/ECLR_mods/BltInFunc-DISTRIBUTE.xml

@@ -8,25 +8,22 @@
 
   <para><emphasis role="bold">DISTRIBUTE<indexterm>
       <primary>DISTRIBUTE function</primary>
-    </indexterm>(</emphasis><emphasis>recordset </emphasis><emphasis
-  role="bold">)</emphasis><emphasis role="bold"></emphasis></para>
+    </indexterm>(</emphasis><emphasis>recordset </emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><emphasis role="bold">DISTRIBUTE(</emphasis><emphasis>recordset,
   expression </emphasis><emphasis role="bold"> [<emphasis>,</emphasis>
-  MERGE(</emphasis><emphasis> sorts </emphasis><emphasis role="bold">) ]
-  )</emphasis></para>
+  MERGE(</emphasis><emphasis> sorts </emphasis><emphasis role="bold">) ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><emphasis role="bold">DISTRIBUTE(</emphasis><emphasis>recordset, index
   </emphasis><emphasis role="bold">[</emphasis><emphasis>, joincondition
-  </emphasis><emphasis role="bold">] )</emphasis><emphasis
-  role="bold"></emphasis></para>
+  </emphasis><emphasis role="bold">] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><emphasis role="bold">DISTRIBUTE(</emphasis><emphasis>recordset,
   </emphasis><emphasis role="bold"> SKEW<indexterm>
       <primary>SKEW</primary>
     </indexterm>(</emphasis><emphasis> maxskew </emphasis><emphasis
   role="bold">[</emphasis><emphasis>, skewlimit</emphasis><emphasis
-  role="bold"> ] ) )</emphasis></para>
+  role="bold"> ] ) </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -99,6 +96,51 @@
             (0.0) to one (1.0) specifying the maximum skew to allow
             (0.1=10%).</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 47 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-DISTRIBUTION.xml

@@ -13,7 +13,7 @@
   ] [</emphasis><emphasis>,</emphasis><emphasis role="bold"> NAMED<indexterm>
       <primary>NAMED</primary>
     </indexterm>( </emphasis><emphasis>name</emphasis><emphasis role="bold"> )
-  ] )</emphasis></para>
+  ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -48,6 +48,52 @@
 
             <entry>A string constant containing the result label.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
+          
         </tbody>
       </tgroup>
     </informaltable></para>

+ 46 - 2
docs/ECLLanguageReference/ECLR_mods/BltInFunc-EBCDIC.xml

@@ -8,8 +8,7 @@
 
   <para><emphasis role="bold">EBCDIC<indexterm>
       <primary>EBCDIC function</primary>
-    </indexterm>(</emphasis><emphasis>recordset</emphasis><emphasis
-  role="bold">)</emphasis></para>
+    </indexterm>(</emphasis><emphasis>recordset</emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -25,6 +24,51 @@
             dataset or a record set derived from some filter condition, or any
             expression that results in a derived record set.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-ENTH.xml

@@ -14,7 +14,7 @@
   </emphasis><emphasis role="bold">] ] [</emphasis>,<emphasis role="bold">
   LOCAL<indexterm>
       <primary>LOCAL</primary>
-    </indexterm>] )</emphasis></para>
+    </indexterm>] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -63,6 +63,51 @@
             other nodes, significantly improving performance if exact results
             are not required.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 47 - 4
docs/ECLLanguageReference/ECLR_mods/BltInFunc-EXISTS.xml

@@ -11,11 +11,9 @@
     </indexterm>(</emphasis><emphasis>recordset </emphasis><emphasis
   role="bold">[, KEYED<indexterm>
       <primary>KEYED</primary>
-    </indexterm> ])</emphasis></para>
+    </indexterm> ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
-  <para><emphasis
-  role="bold">EXISTS(</emphasis><emphasis>valuelist</emphasis><emphasis
-  role="bold">)</emphasis></para>
+  <para><emphasis role="bold">EXISTS(</emphasis><emphasis> valuelist</emphasis><emphasis role="bold"> )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -47,6 +45,51 @@
             <entry>A comma-delimited list of expressions. This may also be a
             SET of values.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-FETCH.xml

@@ -13,7 +13,7 @@
   </emphasis><emphasis role="bold">]</emphasis><emphasis> </emphasis><emphasis
   role="bold">[, LOCAL<indexterm>
       <primary>LOCAL</primary>
-    </indexterm>] )</emphasis></para>
+    </indexterm>] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -64,6 +64,51 @@
             with all other nodes to acquire data; the operation maintains the
             distribution of any previous DISTRIBUTE.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-GRAPH.xml

@@ -10,7 +10,7 @@
       <primary>GRAPH function</primary>
     </indexterm>( </emphasis><emphasis>recordset , iterations
   </emphasis><emphasis role="bold">, </emphasis><emphasis>
-  processor</emphasis><emphasis role="bold"> )</emphasis></para>
+  processor</emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -62,6 +62,51 @@
 </programlisting></entry>
           </row>
 
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-GROUP.xml

@@ -16,7 +16,7 @@
   role="bold">LOCAL<indexterm>
       <primary>LOCAL</primary>
     </indexterm></emphasis><emphasis> </emphasis><emphasis role="bold">]
-  )</emphasis></para>
+  </emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -61,6 +61,51 @@
             with all other nodes to acquire data; the operation maintains the
             distribution of any previous DISTRIBUTE.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-HAVING.xml

@@ -9,7 +9,7 @@
     </indexterm><indexterm>
       <primary>HAVING function</primary>
     </indexterm>(</emphasis><emphasis> groupdataset, expression
-  </emphasis><emphasis role="bold">)</emphasis></para>
+  </emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -30,6 +30,51 @@
             <entry>The logical expression by which to filter the
             groups.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 47 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-ITERATE.xml

@@ -11,7 +11,7 @@
     </indexterm>(</emphasis><emphasis>recordset, transform
   </emphasis><emphasis role="bold">[, LOCAL<indexterm>
       <primary>LOCAL</primary>
-    </indexterm> ] )</emphasis></para>
+    </indexterm> ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <informaltable colsep="1" frame="all" rowsep="1">
     <tgroup cols="2">
@@ -30,6 +30,52 @@
           <entry>The TRANSFORM function to call for each record in the
           <emphasis>recordset</emphasis>.</entry>
         </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
+
       </tbody>
     </tgroup>
   </informaltable>

+ 44 - 8
docs/ECLLanguageReference/ECLR_mods/BltInFunc-JOIN.xml

@@ -255,11 +255,9 @@
     role="bold">] ) [, THRESHOLD<indexterm>
         <primary>THRESHOLD</primary>
       </indexterm>( </emphasis><emphasis>size</emphasis><emphasis role="bold">
-    ) ] ] [, PARALLEL<indexterm>
-        <primary>PARALLEL</primary>
-      </indexterm> ][, SMART<indexterm>
+    ) ] ] [, SMART<indexterm>
         <primary>SMART</primary>
-      </indexterm> ]</emphasis></para>
+      </indexterm> ]</emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ]</emphasis></para>
 
     <informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -554,11 +552,49 @@
           </row>
 
           <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
             <entry><emphasis role="bold">PARALLEL</emphasis></entry>
 
-            <entry>Specifies the <emphasis>leftrecset</emphasis> and
-            <emphasis>rightrecset</emphasis> should be read on separate
-            threads to minimize latency.</entry>
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
           </row>
         </tbody>
       </tgroup>
@@ -858,7 +894,7 @@ SEQUENTIAL(PtblOut,Bld1,Bld2,OUTPUT(FilledRecs1),OUTPUT(FilledRecs2))
         <primary>SORTED</primary>
       </indexterm>( </emphasis><emphasis>fields</emphasis><emphasis
     role="bold">) [</emphasis><emphasis>, jointype</emphasis><emphasis
-    role="bold">] )</emphasis></para>
+    role="bold">] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
     <para><emphasis role="bold"><emphasis>The second form of JOIN is similar
     to the MERGEJOIN function<indexterm>

+ 47 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-KEYDIFF.xml

@@ -17,7 +17,7 @@
   EXPIRE<indexterm>
       <primary>EXPIRE</primary>
     </indexterm>( [ </emphasis><emphasis>days </emphasis><emphasis
-  role="bold">] ) ] );</emphasis></para>
+  role="bold">] ) ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] );</emphasis></para>
 
   <informaltable colsep="1" frame="all" rowsep="1">
     <tgroup cols="2">
@@ -74,6 +74,52 @@
           <entry>Optional. The number of days after which the file may be
           automatically deleted. If omitted, the default is seven (7).</entry>
         </row>
+
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
       </tbody>
     </tgroup>
   </informaltable>

+ 47 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-KEYPATCH.xml

@@ -16,7 +16,7 @@
   EXPIRE<indexterm>
       <primary>EXPIRE</primary>
     </indexterm>( [ </emphasis><emphasis>days </emphasis><emphasis
-  role="bold">] ) ] );</emphasis></para>
+  role="bold">] ) ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] );</emphasis></para>
 
   <informaltable colsep="1" frame="all" rowsep="1">
     <tgroup cols="2">
@@ -74,6 +74,52 @@
           <entry>Optional. The number of days after which the file may be
           automatically deleted. If omitted, the default is seven (7).</entry>
         </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
+        
       </tbody>
     </tgroup>
   </informaltable>

+ 48 - 3
docs/ECLLanguageReference/ECLR_mods/BltInFunc-LIMIT.xml

@@ -20,8 +20,7 @@
     </indexterm></emphasis><emphasis> </emphasis><emphasis role="bold">] ]
   [</emphasis><emphasis>, </emphasis><emphasis role="bold">SKIP<indexterm>
       <primary>SKIP</primary>
-    </indexterm></emphasis><emphasis> </emphasis><emphasis role="bold">]
-  )</emphasis></para>
+    </indexterm></emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><emphasis role="bold">LIMIT(</emphasis><emphasis>recset,
   maxrecs</emphasis><emphasis role="bold"> [</emphasis><emphasis>,
@@ -36,7 +35,7 @@
   role="bold">COUNT<indexterm>
       <primary>COUNT</primary>
     </indexterm></emphasis><emphasis> </emphasis><emphasis role="bold">] ]
-  )</emphasis></para>
+  [, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ]</emphasis></para>
 
   <informaltable colsep="1" frame="all" rowsep="1">
     <tgroup cols="2">
@@ -100,6 +99,52 @@
           <entry>The TRANSFORM function to call to produce the single output
           record.</entry>
         </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
+        
       </tbody>
     </tgroup>
   </informaltable>

+ 50 - 26
docs/ECLLanguageReference/ECLR_mods/BltInFunc-LOOP.xml

@@ -9,31 +9,23 @@
     </indexterm><indexterm>
       <primary>LOOP function</primary>
     </indexterm>(</emphasis><emphasis> dataset,</emphasis><emphasis
-  role="bold"> </emphasis><emphasis>loopcount, loopbody </emphasis><emphasis
-  role="bold"> [, PARALLEL<indexterm>
-      <primary>PARALLEL</primary>
-    </indexterm>( </emphasis><emphasis>iterations </emphasis><emphasis
-  role="bold"> ) ] )</emphasis></para>
+  role="bold"> </emphasis><emphasis>loopcount, loopbody </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><emphasis role="bold">LOOP(</emphasis><emphasis>
   dataset,</emphasis><emphasis role="bold"> </emphasis><emphasis>loopcount,
-  loopfilter, loopbody </emphasis><emphasis role="bold"> [, PARALLEL(
-  </emphasis><emphasis>iterations </emphasis><emphasis role="bold">] ) ]
-  )</emphasis></para>
+  loopfilter, loopbody </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><emphasis role="bold">LOOP(</emphasis><emphasis>
   dataset,</emphasis><emphasis role="bold"> </emphasis><emphasis>loopfilter,
-  loopbody </emphasis><emphasis role="bold">)</emphasis><emphasis
-  role="bold"></emphasis></para>
+  loopbody </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><emphasis role="bold">LOOP(</emphasis><emphasis>
   dataset, rowfilter,
-  loopcondition, loopbody </emphasis><emphasis role="bold">)</emphasis></para>
+  loopcondition, loopbody </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><emphasis role="bold">LOOP(</emphasis><emphasis>
   dataset,</emphasis><emphasis role="bold"> </emphasis><emphasis>loopfilter,
-  loopcondition, loopbody </emphasis><emphasis
-  role="bold">)</emphasis></para>
+  loopcondition, loopbody </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <informaltable colsep="1" frame="all" rowsep="1">
     <tgroup cols="2">
@@ -69,19 +61,6 @@
         </row>
 
         <row>
-          <entry><emphasis role="bold">PARALLEL</emphasis></entry>
-
-          <entry>Optional. Specifies parallel execution of loop iterations.
-          This option is available only on Roxie.</entry>
-        </row>
-
-        <row>
-          <entry><emphasis>iterations</emphasis></entry>
-
-          <entry>The number of parallel iterations.</entry>
-        </row>
-
-        <row>
           <entry><emphasis>loopfilter<indexterm>
               <primary>loopfilter</primary>
             </indexterm></emphasis></entry>
@@ -111,6 +90,51 @@
           set. This evaluation occurs during the iteration of the
           <emphasis>loopbody</emphasis>.</entry>
         </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
         <row>
           <entry>Return:</entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-MAX.xml

@@ -7,7 +7,7 @@
   <para><emphasis role="bold">MAX <indexterm>
       <primary>MAX function</primary>
     </indexterm>(</emphasis><emphasis>recordset, value </emphasis><emphasis
-  role="bold">[, KEYED ])</emphasis></para>
+  role="bold">[, KEYED ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><emphasis
   role="bold">MAX(</emphasis><emphasis>valuelist</emphasis><emphasis
@@ -51,6 +51,51 @@
           <entry>A comma-delimited list of expressions to find the maximum
           value of. This may also be a SET of values.</entry>
         </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
         <row>
           <entry>Return:</entry>

+ 47 - 2
docs/ECLLanguageReference/ECLR_mods/BltInFunc-MERGE.xml

@@ -19,7 +19,7 @@
     </indexterm> ] [</emphasis><emphasis>, </emphasis><emphasis
   role="bold">LOCAL<indexterm>
       <primary>LOCAL</primary>
-    </indexterm> ] )</emphasis></para>
+    </indexterm> ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><emphasis role="bold"></emphasis><emphasis
   role="bold">MERGE(</emphasis><emphasis>recordsetset ,
@@ -28,7 +28,7 @@
   role="bold">SORTED( </emphasis><emphasis>fieldlist</emphasis><emphasis
   role="bold"> ) [</emphasis><emphasis>, </emphasis><emphasis
   role="bold">DEDUP ] [</emphasis><emphasis>, </emphasis><emphasis
-  role="bold">LOCAL ] )</emphasis></para>
+  role="bold">LOCAL ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <informaltable colsep="1" frame="all" rowsep="1">
     <tgroup cols="2">
@@ -81,6 +81,51 @@
           <entry>A SET ( [ds1,ds2,ds3] ) of the datasets or indexes to merge,
           which must all be in exactly the same format.</entry>
         </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
         <row>
           <entry>Return:</entry>

+ 47 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-MERGEJOIN.xml

@@ -15,7 +15,7 @@
   role="bold">) [</emphasis><emphasis>, jointype</emphasis><emphasis
   role="bold">] [, DEDUP<indexterm>
       <primary>DEDUP</primary>
-    </indexterm> ])</emphasis></para>
+    </indexterm> ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <informaltable colsep="1" frame="all" rowsep="1">
     <tgroup cols="2">
@@ -69,6 +69,52 @@
           <entry>Optional. Specifies the output result set contains only
           unique records.</entry>
         </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
+
       </tbody>
     </tgroup>
   </informaltable>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-MIN.xml

@@ -11,7 +11,7 @@
     </indexterm>(</emphasis><emphasis>recordset, value </emphasis><emphasis
   role="bold">[, KEYED<indexterm>
       <primary>KEYED</primary>
-    </indexterm> ])</emphasis><emphasis role="bold"></emphasis></para>
+    </indexterm> ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><emphasis
   role="bold">MIN(</emphasis><emphasis>valuelist</emphasis><emphasis
@@ -55,6 +55,51 @@
           <entry>A comma-delimited list of expressions to find the minimum
           value of. This may also be a SET of values.</entry>
         </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
         <row>
           <entry>Return:</entry>

+ 47 - 3
docs/ECLLanguageReference/ECLR_mods/BltInFunc-NORMALIZE.xml

@@ -9,14 +9,13 @@
     </indexterm><indexterm>
       <primary>NORMALIZE function</primary>
     </indexterm>(</emphasis><emphasis>recordset, expression, transform
-  </emphasis><emphasis role="bold">)</emphasis><emphasis
-  role="bold"></emphasis></para>
+  </emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><emphasis role="bold">NORMALIZE(</emphasis><emphasis>recordset,
   </emphasis><emphasis role="bold">LEFT<indexterm>
       <primary>LEFT</primary>
     </indexterm>.</emphasis><emphasis>childdataset, transform
-  </emphasis><emphasis role="bold">)</emphasis></para>
+  </emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -51,6 +50,51 @@
             <entry>The field name of a child DATASET in the recordset. This
             must use the keyword LEFT as its qualifier.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 1 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-ORDERED.xml

@@ -8,7 +8,7 @@
   :=<emphasis role="bold"> ] ORDERED<indexterm>
       <primary>ORDERED</primary>
     </indexterm><indexterm>
-      <primary>ORDERED function</primary>
+      <primary>ORDERED action</primary>
     </indexterm>(</emphasis><emphasis> actionlist </emphasis><emphasis
   role="bold">)</emphasis></para>
 

+ 53 - 8
docs/ECLLanguageReference/ECLR_mods/BltInFunc-OUTPUT.xml

@@ -17,7 +17,7 @@
   role="bold">[</emphasis><emphasis>,</emphasis><emphasis role="bold">
   NOXPATH<indexterm>
       <primary>NOXPATH</primary>
-    </indexterm> ] );</emphasis></para>
+    </indexterm> ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] );</emphasis></para>
 
   <para><emphasis role="bold">[</emphasis><emphasis>attr</emphasis>
   :=<emphasis role="bold"> ]
@@ -31,7 +31,7 @@
   role="bold">[</emphasis><emphasis>csvfileoptions </emphasis><emphasis
   role="bold"> ] </emphasis><emphasis
   role="bold">[</emphasis><emphasis>,</emphasis><emphasis role="bold"> NOXPATH
-  ] );</emphasis></para>
+  ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] );</emphasis></para>
 
   <para><emphasis role="bold">[</emphasis><emphasis>attr</emphasis>
   :=<emphasis role="bold"> ]
@@ -45,7 +45,7 @@
   role="bold">[</emphasis><emphasis>xmlfileoptions </emphasis><emphasis
   role="bold"> ] </emphasis><emphasis
   role="bold">[</emphasis><emphasis>,</emphasis><emphasis role="bold"> NOXPATH
-  ] );</emphasis></para>
+  ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] );</emphasis></para>
 
   <para><emphasis role="bold">[</emphasis><emphasis>attr</emphasis>
   :=<emphasis role="bold"> ]
@@ -59,7 +59,7 @@
   role="bold">[</emphasis><emphasis>jsonfileoptions </emphasis><emphasis
   role="bold"> ] </emphasis><emphasis
   role="bold">[</emphasis><emphasis>,</emphasis><emphasis role="bold"> NOXPATH
-  ] );</emphasis></para>
+  ] <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] );</emphasis></emphasis></para>
 
   <para><emphasis role="bold">[</emphasis><emphasis>attr</emphasis>
   :=<emphasis role="bold"> ]
@@ -69,7 +69,7 @@
       <primary>PIPE</primary>
     </indexterm>(</emphasis><emphasis> pipeoptions </emphasis><emphasis
   role="bold">[</emphasis><emphasis>,</emphasis><emphasis role="bold"> NOXPATH
-  ] );</emphasis></para>
+  ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] );</emphasis></para>
 
   <para><emphasis role="bold">[</emphasis><emphasis>attr</emphasis>
   :=<emphasis role="bold"> ]
@@ -85,7 +85,7 @@
       <primary>ALL</primary>
     </indexterm>] </emphasis><emphasis
   role="bold">[</emphasis><emphasis>,</emphasis><emphasis role="bold"> NOXPATH
-  ] );</emphasis></para>
+  ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] );</emphasis></para>
 
   <para><emphasis role="bold">[</emphasis><emphasis>attr</emphasis>
   :=<emphasis role="bold"> ] OUTPUT(</emphasis><emphasis> expression
@@ -93,7 +93,7 @@
   role="bold"> NAMED(</emphasis><emphasis> name </emphasis><emphasis
   role="bold">) ] </emphasis><emphasis
   role="bold">[</emphasis><emphasis>,</emphasis><emphasis role="bold"> NOXPATH
-  ] );</emphasis></para>
+  ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] );</emphasis></para>
 
   <para><emphasis role="bold">[</emphasis><emphasis>attr</emphasis>
   :=<emphasis role="bold"> ] OUTPUT(</emphasis><emphasis> recordset
@@ -101,7 +101,7 @@
       <primary>THOR</primary>
     </indexterm> </emphasis><emphasis
   role="bold">[</emphasis><emphasis>,</emphasis><emphasis role="bold"> NOXPATH
-  ] );</emphasis></para>
+  ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] );</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -166,6 +166,51 @@
             output, so that XPATHs that were meant only for xml or json input
             can be ignored for output.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry><emphasis role="bold">CSV</emphasis></entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-PARSE.xml

@@ -21,7 +21,7 @@
   </emphasis><emphasis role="bold">XML<indexterm>
       <primary>XML</primary>
     </indexterm>( </emphasis><emphasis>path </emphasis><emphasis role="bold">)
-  )</emphasis></para>
+  </emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -90,6 +90,51 @@
             <entry>A string constant containing the XPATH to the tag that
             delimits the XML data in the dataset.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-PIPE.xml

@@ -26,7 +26,7 @@
     </indexterm>( CSV | XML ) ] [</emphasis>,<emphasis role="bold">
   GROUP<indexterm>
       <primary>GROUP</primary>
-    </indexterm>] )</emphasis></para>
+    </indexterm>] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -96,6 +96,51 @@
             <entry>Optional. Specifies each result record is generated in a
             separate GROUP (only if REPEAT is specified).</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-PROCESS.xml

@@ -12,7 +12,7 @@
   role="bold"> </emphasis><emphasis>datasettransform, rowtransform
   </emphasis><emphasis role="bold">[, LOCAL<indexterm>
       <primary>LOCAL</primary>
-    </indexterm> ] )</emphasis></para>
+    </indexterm> ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -56,6 +56,51 @@
             with all other nodes to acquire data; the operation maintains the
             distribution of any previous DISTRIBUTE.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 47 - 2
docs/ECLLanguageReference/ECLR_mods/BltInFunc-PROJECT.xml

@@ -18,14 +18,14 @@
       <primary>KEYED</primary>
     </indexterm> ] [, LOCAL<indexterm>
       <primary>LOCAL</primary>
-    </indexterm> ])</emphasis><emphasis role="bold"></emphasis></para>
+    </indexterm> ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><emphasis role="bold">PROJECT(</emphasis><emphasis> recordset, record
   </emphasis><emphasis role="bold">[, PREFETCH<indexterm>
       <primary>PREFETCH</primary>
     </indexterm> [ (</emphasis><emphasis>lookahead </emphasis><emphasis
   role="bold">[, PARALLEL]) ] ]</emphasis><emphasis role="bold"> [, KEYED ] [,
-  LOCAL ])</emphasis></para>
+  LOCAL ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -98,6 +98,51 @@
                 <primary>RECORD structure</primary>
               </indexterm> to use for each record in the recordset.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-RANGE.xml

@@ -9,7 +9,7 @@
     </indexterm><indexterm>
       <primary>RANGE function</primary>
     </indexterm>( </emphasis><emphasis>setofdatasets,
-  setofintegers</emphasis><emphasis role="bold"> )</emphasis></para>
+  setofintegers</emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -29,6 +29,51 @@
 
             <entry>A set of integers.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 2
docs/ECLLanguageReference/ECLR_mods/BltInFunc-REGROUP.xml

@@ -8,8 +8,7 @@
       <primary>REGROUP</primary>
     </indexterm><indexterm>
       <primary>REGROUP function</primary>
-    </indexterm>(</emphasis><emphasis>recset,…,recset</emphasis><emphasis
-  role="bold">)</emphasis></para>
+    </indexterm>(</emphasis><emphasis>recset,…,recset</emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -24,6 +23,51 @@
             <entry>A grouped set of records. Each recset must be of exactly
             the same type and must contain the same number of groups.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 48 - 4
docs/ECLLanguageReference/ECLR_mods/BltInFunc-ROLLUP.xml

@@ -11,17 +11,16 @@
     </indexterm>(</emphasis><emphasis>recordset, condition, transform
   </emphasis><emphasis role="bold">[, LOCAL<indexterm>
       <primary>LOCAL</primary>
-    </indexterm>] )</emphasis></para>
+    </indexterm>] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><emphasis role="bold">ROLLUP(</emphasis><emphasis>recordset,
   transform, fieldlist </emphasis><emphasis role="bold">[, LOCAL]
-  )</emphasis></para>
+  [, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><emphasis role="bold">ROLLUP(</emphasis><emphasis>recordset,
   </emphasis><emphasis role="bold">GROUP</emphasis><emphasis><indexterm>
       <primary>GROUP</primary>
-    </indexterm>, transform </emphasis><emphasis role="bold">
-  )</emphasis></para>
+    </indexterm>, transform </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -79,6 +78,51 @@
             the ROLLUP operation will produce a single output record for each
             group. If this is not the case, an error occurs.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-SAMPLE.xml

@@ -10,7 +10,7 @@
       <primary>SAMPLE function</primary>
     </indexterm>(</emphasis><emphasis>recordset, interval </emphasis><emphasis
   role="bold">[</emphasis><emphasis>, which </emphasis><emphasis
-  role="bold">])</emphasis></para>
+  role="bold">] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -40,6 +40,51 @@
             sample set to return. This is used to obtain multiple
             non-overlapping samples from the same recordset.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 71 - 2
docs/ECLLanguageReference/ECLR_mods/BltInFunc-SET.xml

@@ -8,8 +8,12 @@
       <primary>SET</primary>
     </indexterm><indexterm>
       <primary>SET function</primary>
-    </indexterm>(</emphasis><emphasis>recordset,field</emphasis><emphasis
-  role="bold">)</emphasis></para>
+    </indexterm>(</emphasis><emphasis>recordset, field</emphasis> <emphasis
+  role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool
+  </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [
+  (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [,
+  ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ]
+  )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -33,6 +37,71 @@
           </row>
 
           <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not
+            significant.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record
+            order.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not
+            significant. When True, specifies the default output record
+            order.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is
+            significant.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not
+            significant.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in
+            parallel.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using
+            <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this
+            activity.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the
+            list of supported algorithms for the SORT function's STABLE and
+            UNSTABLE options.</entry>
+          </row>
+
+          <row>
             <entry>Return:</entry>
 
             <entry>SET returns a SET of values of the same type as the

+ 47 - 3
docs/ECLLanguageReference/ECLR_mods/BltInFunc-SOAPCALL.xml

@@ -18,7 +18,7 @@
     </indexterm>(</emphasis><emphasis>outstructure</emphasis><emphasis
   role="bold">) </emphasis><emphasis>| outstructure </emphasis><emphasis
   role="bold">[</emphasis><emphasis>, options </emphasis><emphasis
-  role="bold">]);</emphasis><emphasis role="bold"></emphasis></para>
+  role="bold">]</emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] );</emphasis></para>
 
   <para><emphasis role="bold">SOAPCALL( [ </emphasis><emphasis>recset,
   </emphasis><emphasis role="bold">]</emphasis><emphasis> url, service,
@@ -26,8 +26,7 @@
   </emphasis><emphasis>transform, </emphasis><emphasis
   role="bold">]</emphasis><emphasis> </emphasis><emphasis
   role="bold">[</emphasis><emphasis> options </emphasis><emphasis
-  role="bold">]</emphasis><emphasis> </emphasis><emphasis
-  role="bold">);</emphasis></para>
+  role="bold">]</emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] );</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -129,6 +128,51 @@
             <entry>A comma-delimited list of optional specifications from the
             list below.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 36 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-SORT.xml

@@ -35,7 +35,7 @@
   role="bold"> )] | UNSTABLE<indexterm>
       <primary>UNSTABLE</primary>
     </indexterm> [ ( </emphasis><emphasis>algorithm</emphasis><emphasis
-  role="bold"> )] ] )</emphasis></para>
+  role="bold"> )] ] </emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -166,6 +166,41 @@
             in any order. Ignored if not supported by the target
             platform.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 47 - 2
docs/ECLLanguageReference/ECLR_mods/BltInFunc-STEPPED.xml

@@ -8,8 +8,7 @@
       <primary>STEPPED</primary>
     </indexterm><indexterm>
       <primary>STEPPED function</primary>
-    </indexterm>( </emphasis><emphasis>index, fields </emphasis><emphasis
-  role="bold">)</emphasis></para>
+    </indexterm>( </emphasis><emphasis>index, fields </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -31,6 +30,52 @@
             <entry>A comma-delimited list of fields by which to sort the
             result, typically trailing elements in the key.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
+          
         </tbody>
       </tgroup>
     </informaltable></para>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-SUM.xml

@@ -15,7 +15,7 @@
     </indexterm> ])</emphasis><emphasis role="bold"></emphasis></para>
 
   <para><emphasis role="bold">SUM(</emphasis><emphasis> valuelist
-  </emphasis><emphasis role="bold">)</emphasis></para>
+  </emphasis> <emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -64,6 +64,51 @@
             <entry>A comma-delimited list of expressions to find the sum of.
             This may also be a SET of values.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 54 - 13
docs/ECLLanguageReference/ECLR_mods/BltInFunc-TABLE.xml

@@ -9,31 +9,27 @@
     </indexterm><indexterm>
       <primary>TABLE Function</primary>
     </indexterm>(</emphasis><emphasis>recordset, format</emphasis><emphasis
-  role="bold"> [</emphasis><emphasis>,expression</emphasis><emphasis
-  role="bold"> [</emphasis><emphasis>,</emphasis><emphasis
-  role="bold">FEW<indexterm>
+  role="bold"> [</emphasis><emphasis>, expression</emphasis><emphasis
+  role="bold"> [</emphasis>,<emphasis role="bold">FEW<indexterm>
       <primary>FEW</primary>
     </indexterm> | MANY<indexterm>
       <primary>MANY</primary>
-    </indexterm>] [</emphasis><emphasis>, </emphasis><emphasis
+    </indexterm>] [</emphasis>, <emphasis
   role="bold">UNSORTED<indexterm>
       <primary>UNSORTED</primary>
-    </indexterm>]] [</emphasis><emphasis>,</emphasis><emphasis
-  role="bold">LOCAL<indexterm>
+    </indexterm>]] [</emphasis>, <emphasis role="bold">LOCAL<indexterm>
       <primary>LOCAL</primary>
-    </indexterm>]</emphasis><emphasis role="bold"> [, KEYED<indexterm>
+    </indexterm>] [, KEYED<indexterm>
       <primary>KEYED</primary>
-    </indexterm> ]</emphasis> <emphasis role="bold"> [, MERGE<indexterm>
+    </indexterm> ] [, MERGE<indexterm>
       <primary>MERGE</primary>
-    </indexterm> ] <emphasis role="bold">[</emphasis>,<emphasis
-  role="bold">SKEW<indexterm>
+    </indexterm> ] [, SKEW<indexterm>
       <primary>SKEW</primary>
-    </indexterm>(</emphasis><emphasis>limit</emphasis><emphasis
-  role="bold">[</emphasis><emphasis>, target</emphasis><emphasis role="bold">]
+    </indexterm>(</emphasis><emphasis>limit</emphasis><emphasis role="bold">[</emphasis><emphasis>, target</emphasis><emphasis role="bold">]
   ) [, THRESHOLD<indexterm>
       <primary>THRESHOLD</primary>
     </indexterm>(</emphasis><emphasis>size</emphasis><emphasis role="bold">) ]
-  ]</emphasis>)</emphasis></para>
+  ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -162,6 +158,51 @@
             <entry>An integer value indicating the minimum number of bytes for
             a single part. Default is 1GB.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-TOPN.xml

@@ -15,7 +15,7 @@
   role="bold"> ) ] [</emphasis><emphasis>,</emphasis><emphasis
   role="bold">LOCAL<indexterm>
       <primary>LOCAL</primary>
-    </indexterm>] )</emphasis></para>
+    </indexterm>] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -75,6 +75,51 @@
             with all other nodes to acquire data; the operation maintains the
             distribution of any previous DISTRIBUTE.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 46 - 2
docs/ECLLanguageReference/ECLR_mods/BltInFunc-UNGROUP.xml

@@ -6,8 +6,7 @@
 
   <para><emphasis role="bold">UNGROUP<indexterm>
       <primary>UNGROUP</primary>
-    </indexterm>( </emphasis><emphasis>recordset </emphasis><emphasis
-  role="bold">)</emphasis></para>
+    </indexterm>( </emphasis><emphasis>recordset </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -21,6 +20,51 @@
 
             <entry>The set of previously GROUPed records.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 41 - 0
docs/ECLLanguageReference/ECLR_mods/BltInFunc-UNORDERED.xml

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+<sect1 id="UNORDERED">
+  <title>UNORDERED</title>
+
+  <para><emphasis role="bold">UNORDERED<indexterm>
+      <primary>UNORDERED</primary>
+    </indexterm><indexterm>
+      <primary>UNORDERED function</primary>
+    </indexterm>(</emphasis><emphasis> dataset </emphasis><emphasis
+  role="bold">)</emphasis></para>
+
+  <para><informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="82.95pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis>dataset</emphasis></entry>
+
+            <entry>The name of the unordered DATASET.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable></para>
+
+  <para>The <emphasis role="bold">UNORDERED </emphasis>function is used to
+  indicate that the order of the records in the <emphasis>dataset</emphasis>
+  is not significant. This will allow the code generator in future versions to
+  apply extra optimizations.</para>
+
+  <para>Example:</para>
+
+  <programlisting>Def1 := UNORDERED(MyDataset);
+//the order of MyDataset is not significant, 
+//so the code generator can perform optimizations based on that
+</programlisting>
+</sect1>

+ 46 - 1
docs/ECLLanguageReference/ECLR_mods/BltInFunc-VARIANCE.xml

@@ -10,7 +10,7 @@
   role="bold">[ </emphasis><emphasis>, expresssion</emphasis><emphasis
   role="bold">] [, KEYED<indexterm>
       <primary>KEYED</primary>
-    </indexterm> ])</emphasis></para>
+    </indexterm> ] </emphasis><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis> <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ] [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name </emphasis><emphasis role="bold">) ] )</emphasis></para>
 
   <para><informaltable colsep="1" frame="all" rowsep="1">
       <tgroup cols="2">
@@ -55,6 +55,51 @@
             operation, which allows the optimizer to generate optimal code for
             the operation.</entry>
           </row>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not significant. When True, specifies the default output record order.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not significant.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in parallel.</entry>
+          </row>
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this activity.</entry>
+          </row>
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the list of supported algorithms for the SORT function's STABLE and UNSTABLE options.</entry>
+          </row>
 
           <row>
             <entry>Return:</entry>

+ 146 - 9
docs/ECLLanguageReference/ECLR_mods/Expr-RecordSetOps.xml

@@ -8,8 +8,8 @@
       <primary>Record Set Operators</primary>
     </indexterm></title>
 
-  <para>The following record set operators are supported (both require that
-  the files were created using identical RECORD structures<indexterm>
+  <para>The following record set operators are supported (all require that the
+  files were created using identical RECORD structures<indexterm>
       <primary>RECORD structure</primary>
     </indexterm>):</para>
 
@@ -28,16 +28,16 @@
         </row>
 
         <row>
-          <entry>-</entry>
+          <entry>&amp;</entry>
 
-          <entry>Subtract records from a file</entry>
+          <entry>Append all records from both files, maintaining record order
+          on each node</entry>
         </row>
 
         <row>
-          <entry>&amp;</entry>
+          <entry>-</entry>
 
-          <entry>Append all records from both files, maintaining record order
-          on each node</entry>
+          <entry>Subtract records from a file</entry>
         </row>
       </tbody>
     </tgroup>
@@ -56,11 +56,148 @@ SecondRecSet := DATASET([{5, 'FIVE'}, {6, 'SIX'}, {7, 'SEVEN'}, {8, 'EIGHT'}], M
 ExcludeThese := SecondRecSet(Num &gt; 6);
 
 WholeRecSet := FirstRecSet + SecondRecSet;
-ResultSet:= WholeRecSet-ExcludeThese;
+ResultSet   := WholeRecSet-ExcludeThese;
 
 OUTPUT (WholeRecSet);
 OUTPUT(ResultSet);
 </programlisting>
 
-  <para></para>
+  <sect2 id="Prefix_Append_Operator">
+    <title>Prefix Append Operator</title>
+
+    <para><emphasis role="bold">(+)
+    (</emphasis><emphasis>ds_list</emphasis><emphasis role="bold">)
+    [</emphasis><emphasis>, options</emphasis><emphasis role="bold">]
+    )</emphasis></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="92.05pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis role="bold">(+)</emphasis></entry>
+
+            <entry>The prefix append operator.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>ds_list</emphasis></entry>
+
+            <entry>A comma-delimited list of record sets to append (two or
+            more). All the record sets must have identical RECORD
+            structures.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>options</emphasis></entry>
+
+            <entry>Optional. A comma-delimited list of options from the list
+            below.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>The prefix append operator <emphasis>(+)</emphasis> provides more
+    flexibility than the simple infix operators described above. It allows
+    hints and other options to be associated with the operator. Similar syntax
+    will be added in a future change for other infix operators.</para>
+
+    <para>The following <emphasis>options</emphasis> may be used:</para>
+
+    <para><emphasis role="bold">[, UNORDERED | ORDERED(</emphasis>
+    <emphasis>bool </emphasis><emphasis role="bold">) ] [, STABLE | UNSTABLE ]
+    [, PARALLEL [ (</emphasis> <emphasis>numthreads </emphasis><emphasis
+    role="bold">) ] ] [, ALGORITHM(</emphasis> <emphasis>name
+    </emphasis><emphasis role="bold">) ]</emphasis></para>
+
+    <informaltable colsep="1" frame="all" rowsep="1">
+      <tgroup cols="2">
+        <colspec colwidth="92.05pt" />
+
+        <colspec />
+
+        <tbody>
+          <row>
+            <entry><emphasis role="bold">UNORDERED</emphasis></entry>
+
+            <entry>Optional. Specifies the output record order is not
+            significant.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis role="bold">ORDERED</emphasis></entry>
+
+            <entry>Specifies the significance of the output record
+            order.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>bool</emphasis></entry>
+
+            <entry>When False, specifies the output record order is not
+            significant. When True, specifies the default output record
+            order.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis role="bold">STABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is
+            significant.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+
+            <entry>Optional. Specifies the input record order is not
+            significant.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity in
+            parallel.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>numthreads</emphasis></entry>
+
+            <entry>Optional. Try to evaluate this activity using
+            <emphasis>numthreads</emphasis> threads.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+
+            <entry>Optional. Override the algorithm used for this
+            activity.</entry>
+          </row>
+
+          <row>
+            <entry><emphasis>name</emphasis></entry>
+
+            <entry>The algorithm to use for this activity. Must be from the
+            list of supported algorithms for the SORT function's STABLE and
+            UNSTABLE options.</entry>
+          </row>
+        </tbody>
+      </tgroup>
+    </informaltable>
+
+    <para>Example:</para>
+
+    <programlisting>ds_1 := (+)(ds1, ds2, UNORDERED);
+  //equivalent to: ds := ds1 + ds2;        
+  
+ds_2 := (+)(ds1, ds2);
+  //equivalent to: ds := ds1 &amp; ds2;                
+
+ds_3 := (+)(ds1, ds2, ds3);
+  //multiple file appends are supported</programlisting>
+  </sect2>
 </sect1>

+ 5 - 4
docs/ECLWatch/ECLWa_mods/ECLWatchSrc.xml

@@ -538,10 +538,11 @@
           </figure>
 
           <para>Fill in the corresponding values under Description, History,
-          and Timings in the Z.A.P. dialog. Press the <emphasis
-          role="bold">Apply </emphasis>button when finished. The Z.A.P.
-          utililty generates a zip file with all the appropriate information
-          for troubleshooting.</para>
+          and Timings in the Z.A.P. dialog. Optionally, you can password
+          protect the ZAP package and choose to include slave logs. Press the
+          <emphasis role="bold">Apply </emphasis>button when finished. The
+          Z.A.P. utililty generates a zip file with all the appropriate
+          information for troubleshooting.</para>
 
           <para>You can find the generated zip file in your browser's
           designated download directory. You can now send this file to the

+ 154 - 36
docs/Installing_and_RunningTheHPCCPlatform/Installing_and_RunningTheHPCCPlatform.xml

@@ -145,7 +145,7 @@
 
           <programlisting>sudo service hpcc-init start</programlisting>
 
-          <para>Debian 6 (Squeeze):</para>
+          <para>Debian 6 (Squeeze or some Ubuntu versions):</para>
 
           <para><programlisting>sudo /etc/init.d/hpcc-init start</programlisting></para>
         </listitem>
@@ -376,15 +376,6 @@
           <listitem>
             <para>Start the system using the default configuration.</para>
 
-            <para><emphasis role="bold">Centos/Red
-            Hat</emphasis><programlisting>sudo service hpcc-init start</programlisting></para>
-
-            <para><emphasis role="bold">Ubuntu</emphasis></para>
-
-            <programlisting>sudo service hpcc-init start</programlisting>
-
-            <para><emphasis role="bold">Debian 6 (Squeeze)</emphasis></para>
-
             <para><programlisting>sudo /etc/init.d/hpcc-init start</programlisting><graphic
             fileref="images/GS-InitStart.jpg" /><informaltable colsep="1"
                 frame="all" rowsep="1">
@@ -405,11 +396,20 @@
                       role="bold">/var/log/HPCCSystems</emphasis> (default
                       location) including an hpcc-init log for the start up
                       process. If any component fails to start, these logs can
-                      help in troubleshooting.</entry>
+                      help in troubleshooting.<para>*Additional information
+                      about the hpcc-init system and logs in the <link
+                      linkend="hpcc-init">hpcc-init</link> appendix.
+                      </para></entry>
                     </row>
                   </tbody>
                 </tgroup>
               </informaltable></para>
+
+            <para><emphasis role="bold">Note:</emphasis> On many systems the
+            "service" command can still work, however on some versions of
+            Ubuntu it does not provide any logging.</para>
+
+            <programlisting>sudo service hpcc-init start</programlisting>
           </listitem>
         </orderedlist>
       </sect2>
@@ -816,7 +816,8 @@
 
             <para><programlisting>sudo service hpcc-init stop</programlisting></para>
 
-            <para><emphasis role="bold">Debian 6 (Squeeze)</emphasis></para>
+            <para><emphasis role="bold">Debian 6 (Squeeze and some Ubuntu
+            versions)</emphasis></para>
 
             <programlisting>sudo /etc/init.d/hpcc-init stop</programlisting>
 
@@ -837,7 +838,8 @@
                       processes are stopped (on Centos/Red
                       Hat):<para><programlisting>sudo /sbin/service hpcc-init status</programlisting><phrase>For
                       Ubuntu</phrase><programlisting>sudo service hpcc-init status
-</programlisting><phrase>For Debian 6 (Squeeze)</phrase><programlisting>sudo /etc/init.d/hpcc-init status</programlisting></para></entry>
+</programlisting><phrase>For Debian 6 (Squeeze and some Ubuntu
+                      versions)</phrase><programlisting>sudo /etc/init.d/hpcc-init status</programlisting></para></entry>
                     </row>
                   </tbody>
                 </tgroup>
@@ -863,8 +865,6 @@
             interface:</para>
 
             <programlisting>http://&lt;<emphasis>node ip </emphasis>&gt;:8015</programlisting>
-
-            <para></para>
           </listitem>
 
           <listitem>
@@ -1158,12 +1158,11 @@ sudo cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/environment.
 
             <para><programlisting>sudo service hpcc-init start</programlisting></para>
 
-            <para><emphasis role="bold">Debian 6 (Squeeze)</emphasis></para>
+            <para><emphasis role="bold">Debian 6 (Squeeze and some Ubuntu
+            versions)</emphasis></para>
 
             <programlisting>sudo /etc/init.d/hpcc-init start</programlisting>
 
-            <para></para>
-
             <informaltable colsep="1" frame="all" rowsep="1">
               <?dbfo keep-together="always"?>
 
@@ -1216,7 +1215,8 @@ sudo cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/environment.
 
           <para><programlisting>sudo service hpcc-init start</programlisting></para>
 
-          <para><emphasis role="bold">Debian 6 (Squeeze)</emphasis></para>
+          <para><emphasis role="bold">Debian 6 (Squeeze and some Ubuntu
+          versions)</emphasis></para>
 
           <programlisting>sudo /etc/init.d/hpcc-init start</programlisting>
         </sect3>
@@ -1231,7 +1231,8 @@ sudo cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/environment.
 
           <para><programlisting>sudo service hpcc-init stop</programlisting></para>
 
-          <para><emphasis role="bold">Debian 6 (Squeeze)</emphasis></para>
+          <para><emphasis role="bold">Debian 6 (Squeeze and some Ubuntu
+          versions)</emphasis></para>
 
           <programlisting>sudo /etc/init.d/hpcc-init stop</programlisting>
 
@@ -1271,7 +1272,8 @@ sudo cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/environment.
 
           <para><programlisting>sudo service hpcc-init -c &lt;component name&gt; &lt;command&gt;</programlisting></para>
 
-          <para><emphasis role="bold">Debian 6 (Squeeze)</emphasis></para>
+          <para><emphasis role="bold">Debian 6 (Squeeze and some Ubuntu
+          versions)</emphasis></para>
 
           <programlisting>sudo /etc/init.d/hpcc-init -c &lt;component name&gt; &lt;command&gt;</programlisting>
 
@@ -1317,7 +1319,8 @@ sudo cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/environment.
 
             <para><programlisting>sudo service hpcc-init stop</programlisting></para>
 
-            <para><emphasis role="bold">Debian 6 (Squeeze)</emphasis></para>
+            <para><emphasis role="bold">Debian 6 (Squeeze and some Ubuntu
+            versions)</emphasis></para>
 
             <programlisting>sudo /etc/init.d/hpcc-init stop
 </programlisting>
@@ -2610,7 +2613,7 @@ init_start_thor--></property></para>
     <sect1 id="hpcc-init">
       <title>hpcc-init</title>
 
-      <para><emphasis role="bold">sbin/service hpcc-init
+      <para><emphasis role="bold"> service hpcc-init
       </emphasis><emphasis><emphasis>[</emphasis>option<emphasis>]</emphasis>
       command</emphasis></para>
 
@@ -2697,14 +2700,6 @@ init_start_thor--></property></para>
                     </listitem>
 
                     <listitem>
-                      <para>force-reload</para>
-
-                      <para>Deletes all local configuration files, data files,
-                      log files, and then restarts component(s). BE CAREFUL
-                      using this command.</para>
-                    </listitem>
-
-                    <listitem>
                       <para>setup</para>
 
                       <para>Initializes component configuration files but does
@@ -2722,14 +2717,137 @@ init_start_thor--></property></para>
 
       <para><emphasis role="bold">Examples:</emphasis></para>
 
-      <programlisting>sudo /sbin/service hpcc-init start
-sudo /sbin/service hpcc-init stop
+      <programlisting>sudo /etc/init.d/hpcc-init start
+sudo /etc/init.d/hpcc-init stop
 
-sudo /sbin/service hpcc-init -c myeclserver start
-sudo /sbin/service hpcc-init --component=myeclserver start
+sudo /etc/init.d/hpcc-init -c myeclserver start
+sudo /etc/init.d/hpcc-init --component=myeclserver start
 
-sudo /sbin/service hpcc-init -c esp start
+sudo /etc/init.d/hpcc-init -c esp start
 </programlisting>
+
+      <sect2 id="HPCC_systemd_svc">
+        <title>HPCC systemd services</title>
+
+        <para>There are two HPCC systemd services: hpcc-init and dafilesrv.
+        While some hpcc-init systemd services are still developmental, users
+        can use <emphasis>/etc/init.d/hpcc-init</emphasis> and
+        <emphasis>/etc/init.d/dafilesrv</emphasis> directly. Invoking these
+        services in this way provides status in the same manner as invoking
+        them with a service command does for other HPCC processes.</para>
+
+        <para>The hpcc-init system service will only support "start", "stop"
+        and "restart" options. The other options, such as "status", "-c" are
+        not supported.</para>
+
+        <para>There are two sets of HPCC systemd service scripts:
+        <emphasis>hpcc-init.service/dafilesrv.service</emphasis> and
+        <emphasis>hpcc-init@.service/dafilesrv@.service</emphasis> installed
+        under /lib/systemd/system.</para>
+
+        <para>The first set does not have any output to STDOUT/STDERROR,
+        instead it logs to /var/log/syslog. To view the output:</para>
+
+        <programlisting>journalctl -u &lt;service&gt; -f  </programlisting>
+
+        <para>The second set has the same output to STDOUT/STDERROR as
+        directly invoking /etc/init.d/&lt;hpcc-init|dafilesrv&gt;</para>
+
+        <para>Use either: </para>
+
+        <programlisting>sudo service &lt;service&gt; &lt;start|stop|restart&gt;</programlisting>
+
+        <para>or </para>
+
+        <programlisting>sudo systemctl &lt;start|stop|restart&gt; &lt;full_service_name&gt; </programlisting>
+
+        <para>The systemd displays the service status in it's own format.
+        </para>
+
+        <programlisting>sudo service &lt;service&gt; status </programlisting>
+
+        <para>or </para>
+
+        <programlisting>sudo systemctl status &lt;full_service_name&gt; </programlisting>
+
+        <para>These are different than the output from</para>
+
+        <programlisting>/etc/init.d/hpcc-init status</programlisting>
+
+        <para>HPCC services started through systemd will be listed as active
+        in systemd. They can be listed as "sudo systemctl list-units
+        [PATTERN...]". To remove them from the systemd active service list,
+        you must run the stop service from the "service" or "systemctl"
+        commands (as shown above) even though it is already stopped by
+        directly calling /etc/init.d/&lt;hpcc-init|dafilesrv&gt; stop.</para>
+
+        <para>HPCC uninstall will automatically remove HPCC services from
+        active list and /etc/systemd/system/ directory.</para>
+
+        <sect3>
+          <title id="hpcc_systemd_usage">hpcc-init systemd service
+          usage</title>
+
+          <para>To start or stop HPCC with hpcc-init without STDOUT/STDERR
+          output: <orderedlist>
+              <listitem>
+                <para>Start</para>
+
+                <programlisting>sudo service hpcc-init start </programlisting>
+
+                <para>or</para>
+
+                <programlisting>sudo systemctl start hpcc-init.service</programlisting>
+              </listitem>
+
+              <listitem>
+                <para>Check</para>
+
+                <programlisting>sudo journalctl -u hpcc-init -f</programlisting>
+              </listitem>
+
+              <listitem>
+                <para>Stop</para>
+
+                <programlisting>sudo service hpcc-init stop </programlisting>
+
+                <para>or</para>
+
+                <programlisting>sudo systemctl stop hpcc-init.service</programlisting>
+              </listitem>
+            </orderedlist></para>
+
+          <para>To start/stop HPCC with hpcc-init with STDOUT/STDERR output.
+          Get current tty by running "tty". For example, tty -&gt; /dev/pts/1.
+          "pts/1" will be used in following commands. <orderedlist>
+              <listitem>
+                <para>Start</para>
+
+                <programlisting>sudo service hpcc-init@pts/1 start</programlisting>
+
+                <para>or</para>
+
+                <programlisting>sudo systemctl start hpcc-init@pts/1.service</programlisting>
+              </listitem>
+
+              <listitem>
+                <para>Check</para>
+
+                <programlisting>sudo journalctl -u hpcc-init -f</programlisting>
+              </listitem>
+
+              <listitem>
+                <para>Stop</para>
+
+                <programlisting>sudo service hpcc-init@pts/1 stop</programlisting>
+
+                <para>or</para>
+
+                <programlisting>sudo systemctl stop hpcc-init@pts/1.service</programlisting>
+              </listitem>
+            </orderedlist></para>
+        </sect3>
+      </sect2>
     </sect1>
 
     <xi:include href="Installing_and_RunningTheHPCCPlatform/Inst-Mods/UnityLauncher.xml"

二进制
docs/images/ECLWAZ01.jpg


二进制
docs/images/GS-InitStart.jpg


+ 123 - 0
ecl/eclcc/DOCUMENTATION.rst

@@ -69,6 +69,129 @@ In practice the progression is not so clear cut.  There tends to be some overlap
 different stages, and some of them may occur in slightly different orders.  However the order broadly
 holds.
 
+*****************************
+Working on the code generator
+*****************************
+
+The regression suite
+====================
+
+Before any change is accepted for the code generator it is always run against several regression suites to ensure that
+it doesn't introduce any problems, and that the change has the desired effect.  There are several different regression suites:
+
+* testing/regress/ecl  - The run time regression suite.
+* ecl/regress          - a compiler regression suite.  This contains tests that cannot run and error tests.
+* LN private suite     - This contains a large selection (>10Gb) of archived queries.  The contain proprietary code so unfortunately cannot be released as open source.
+
+The ecl/regress directory contains a script 'regress.sh' that is used for running the regression tests.  It should be
+executed in the directory containing the ecl files.  The script generates the c++ code (and workunits) for each of the source
+files to a target directory, and then executes a comparison program to compare the new results with a previous "golden"
+reference set.
+
+Before making any changes to the compiler, a reference set should be created by running the regression script and copying the
+generated files to the reference directory.
+
+Here is a sample command line
+
+``~/dev/hpcc/ecl/regress/regress.sh -t /regress/hpcc -e /home/<user>/buildr/Release/bin/eclcc -I /home/<user>/dev/hpcc/ecl/regress/modules -I /home/<user>/dev/hpcc/plugins/javaembed -I /home/<user>/dev/hpcc/plugins/v8embed -c /regress/hpcc.master -d bcompare``
+
+(A version of this command resides in a shell script in each of my regression suite directories, with the -t and -c options adapted for each suite.)
+
+For a full list of options execute the script with no parameters, or take a look at the script itself. A couple of useful options are:
+
+* The script can be run on a single file by using the -q option.
+
+* The (-e) option selects the path of the eclcc.  This is particularly useful when running from the build
+  directory (see below), or using multiple build directories to compare behaviour between different versions.
+
+We strongly recommend using a comparison program which allows rules to be defined to ignore certain differences (e.g., beyond compare).
+
+Running directly from the build directory
+=========================================
+
+It is much quicker to run eclcc directly from the build directory, rather than deploying a system and running eclcc
+from there.  To do this you need to configure some options that eclcc requires, e.g. where the include files are found.  The
+options can be set by either setting environment variables or by specifiying options in an eclcc.ini
+file.   The following are the names of the different options:
+
++-----------------------+-------------------+
+| Environment flag      | Ini file option   |
++=======================+===================+
+| CL_PATH               | compilerPath      |
++-----------------------+-------------------+
+| ECLCC_LIBRARY_PATH    | libraryPath       |
++-----------------------+-------------------+
+| ECLCC_INCLUDE_PATH    | includePath       |
++-----------------------+-------------------+
+| ECLCC_PLUGIN_PATH     | plugins           |
++-----------------------+-------------------+
+| HPCC_FILEHOOKS_PATH   | filehooks         |
++-----------------------+-------------------+
+| ECLCC_TPL_PATH        | templatePath      |
++-----------------------+-------------------+
+| ECLCC_ECLLIBRARY_PATH | eclLibrariesPath  |
++-----------------------+-------------------+
+| ECLCC_ECLBUNDLE_PATH  | eclBundlesPath    |
++-----------------------+-------------------+
+
+The eclcc.ini can either be a file in the local directory, or specified on the eclcc command line with -specs.
+Including the settings in a local eclcc.ini file also it easy to debug eclcc directly from the build directory
+within the eclipse environment.
+
+Hints and tips
+==============
+
+* Logging
+
+  There is an option for eclcc to output a logging file, and another to specify the level of detail in that logging
+  file.  If the detail level is above 500 then the expresssion tree for the query is output to the logging file after
+  each of the code transformations.  The tracing is very useful for tracking down at which stage inconsistencies are
+  introduced in the expression graph, and also for learning how each transformation affects the query.
+
+  The output format defaults to ECL - which is regenerated from the expression tree.  (This ECL cannot generally be
+  compiled without editing - partly because it contains extra annoations.)   Use either of the following:
+
+  ``eclcc myfile.ecl --logfile myfile.log --logdetail 999``
+
+  ``regress.sh -q myfile.ecl -l myfile.log``
+
+* -ftraceIR
+
+  There is a debug option (-ftraceIR) that generates an intermediate representation of the expression graph rather than
+  regenerating ECL.  The output tends to be less compact and harder to read quickly, but has the advantage of being
+  better structured, and contains more details of the internal representation.  ecl/hql/hqlir.cpp contains
+  more details of the format.
+
+* Adding extra logging into the source code
+
+  If you want to add tracing of expressions at any point in the code generation then adding either of the following
+  calls will include the expression details in the log file:
+
+  ``dbglogExpr(expr); // regenerate the ecl for an expression.  See other functions in ecl/hql/hqlthql.hpp``
+
+  ``EclIR::dbglogIR(expr);  // regenerate the IR for an expression.  See other functions in ecl/hql/hqlir.hpp``
+
+* Logging while debugging
+
+  If you are debugging inside gdb it is often useful to be able to dump out details of an expression.  Calling
+  EclIR:dump_ir(expr); will generate the IR to stdout.
+
+  ``p EclIR::dump_ir(expr)``
+
+  The function can also be used with multiple parameters.  Each expression will be dumped out, but common child nodes
+  will only be generated once.  This can be very useful when trying to determine the difference between two expressions.
+  The quickest way is to call ``EclIR::dump_ir(expr1, expr2)``.  The first difference between the expressions will
+  be the expression that follows the first "return".
+
+* Expression sequence ids.
+
+  Sometimes it can be hard to determine where a particular IHqlExpression node was created.  If that is the case, then
+  defining ``DEBUG_TRACK_INSTANCEID`` (in ecl/hql/hqlexpr.ipp) will add a unique sequence number to each IHqlExpression
+  that is created.  There is also a function checkSeqId() at the start of ecl/hql/hqlexpr.cpp which is called whenever
+  an expression is created, linked, released etc..  Setting a breakpoint in that function can allow you to trace back
+  exactly when and why a particular node was created.
+
+
 ***********
 Expressions
 ***********

+ 6 - 0
ecl/hql/hqlopt.cpp

@@ -497,6 +497,12 @@ IHqlExpression * CTreeOptimizer::optimizeAggregateUnsharedDataset(IHqlExpression
     case no_fetch:
     case no_transformebcdic:
     case no_transformascii:
+        if (expr->hasAttribute(_countProject_Atom))
+        {
+            //Cannot remove a sort before a count project - because subsequent code may be aggregating or filtering
+            //on fields that contain values derived from the COUNTER
+            return LINK(expr);
+        }
         if (childIsSimpleCount && !isPureActivity(expr))
             childIsSimpleCount = false;
         break;

+ 15 - 15
plugins/kafka/README.md

@@ -85,7 +85,7 @@ Publishing string messages begins with instantiating an ECL module that defines
 the Apache Kafka cluster and the topic into which the messages will be posted. 
 The definition of the module is:
 
-    Publisher(VARSTRING topic, VARSTRING brokers = 'localhost') := MODULE
+    KafkaPublisher(VARSTRING topic, VARSTRING brokers = 'localhost') := MODULE
         ...
     END
 
@@ -99,7 +99,7 @@ connection is made.
 
 Example instantiating a publishing module:
 
-    p := kafka.Publisher('MyTopic', '10.211.55.13');
+    p := kafka.KafkaPublisher('MyTopic', '10.211.55.13');
 
 The module contains an exported function for publishing a message, defined as:
 
@@ -138,24 +138,24 @@ As with publishing, consuming string messages begins with instantiating an ECL
 module that defines the Apache Kafka cluster and the topic from which the
 messages will be read.  The definition of the module is:
 
-    Consumer(VARSTRING topic,
-             VARSTRING brokers = 'localhost',
-             VARSTRING consumerGroup = 'hpcc') := MODULE
+    KafkaConsumer(VARSTRING topic,
+                  VARSTRING brokers = 'localhost',
+                  VARSTRING consumerGroup = 'hpcc') := MODULE
         ...
     END
 
 The module requires you to designate a topic by name.  Optionally, you may also
 cite at least one Apache Kafka broker and a consumer group.  The format and
-requirements for a broker are the same as for instantiating a Producer module. 
-Consumer groups in Apache Kafka allow multiple consumer instances, like Thor
-nodes, to form a "logical consumer" and be able to retrieve messages in parallel
-and without duplication.  See the "Consumers" subtopic in Apache Kafka's
-[introduction](https://kafka.apache.org/documentation.html#introduction) for
-more details.
+requirements for a broker are the same as for instantiating a KafkaPublisher
+module.  Consumer groups in Apache Kafka allow multiple consumer instances, like
+Thor nodes, to form a "logical consumer" and be able to retrieve messages in
+parallel and without duplication.  See the "Consumers" subtopic in Apache
+Kafka's [introduction](https://kafka.apache.org/documentation.html#introduction)
+for more details.
 
 Example:
 
-    c := kafka.Consumer('MyTopic', '10.211.55.13');
+    c := kafka.KafkaConsumer('MyTopic', '10.211.55.13');
 
 The module contains an exported function for consuming messages, defined as:
 
@@ -252,7 +252,7 @@ single-node HPCC cluster and have installed Kafka on the same node, you can use
             DISTRIBUTED
         );
 
-    p := kafka.Publisher('MyTestTopic', brokers := '10.211.55.13');
+    p := kafka.KafkaPublisher('MyTestTopic', brokers := '10.211.55.13');
 
     APPLY(ds, ORDERED(p.PublishMessage(message)));
 
@@ -264,7 +264,7 @@ last-read messages.
 
     IMPORT kafka;
 
-    c := kafka.Consumer('MyTestTopic', brokers := '10.211.55.13');
+    c := kafka.KafkaConsumer('MyTestTopic', brokers := '10.211.55.13');
 
     ds := c.GetMessages(200000);
     offsets := c.LastMessageOffsets(ds);
@@ -282,7 +282,7 @@ messages and you need to reread its messages from the very beginning.
 
     IMPORT kafka;
 
-    c := kafka.Consumer('MyTestTopic', brokers := '10.211.55.13');
+    c := kafka.KafkaConsumer('MyTestTopic', brokers := '10.211.55.13');
 
     c.ResetMessageOffsets();
 

+ 7 - 7
plugins/memcached/CMakeLists.txt

@@ -14,7 +14,7 @@
 #    limitations under the License.
 ################################################################################
 
-# Component: memcached
+# Component: memcachedplugin
 
 #####################################################
 # Description:
@@ -22,7 +22,7 @@
 #    Cmake Input File for memcached
 #####################################################
 
-project( memcached )
+project( memcachedplugin )
 
 if (MEMCACHED)
     if(NOT DEFINED LIBMEMCACHED_MINVERSION)
@@ -50,26 +50,26 @@ if (MEMCACHED)
         #All lesser versions explicitly include <tr1/cinttypes> which does not.
         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")
 
-        HPCC_ADD_LIBRARY(memcached SHARED ${SRCS})
+        HPCC_ADD_LIBRARY(memcachedplugin SHARED ${SRCS})
         if(${CMAKE_VERSION} VERSION_LESS "2.8.9")
             message(WARNING "Cannot set NO_SONAME. shlibdeps will give warnings when package is installed")
         elseif(NOT APPLE)
-            set_target_properties(memcached PROPERTIES NO_SONAME 1)
+            set_target_properties(memcachedplugin PROPERTIES NO_SONAME 1)
         endif()
 
         #if we are using generated libmemcached, target appropriate dependencies
         if(MEMCACHED_USE_EXTERNAL_LIBRARY)
-            add_dependencies(memcached libmemcached libmemcachedutil)
+            add_dependencies(memcachedplugin libmemcached libmemcachedutil)
             install(CODE "set(ENV{LD_LIBRARY_PATH} \"\$ENV{LD_LIBRARY_PATH}:${PROJECT_BINARY_DIR}:${PROJECT_BINARY_DIR}/libmemcached-${LIBMEMCACHED_VERSION}/libmemcached/.libs\")")
         endif()
         target_link_libraries(
-            memcached
+            memcachedplugin
             eclrtl
             jlib
             ${LIBMEMCACHED_LIBRARIES})
 
         install(
-            TARGETS memcached
+            TARGETS memcachedplugin
             DESTINATION plugins)
     endif()
 endif()

+ 1 - 1
plugins/memcached/lib_memcached.ecllib

@@ -15,7 +15,7 @@
     limitations under the License.
 ############################################################################## */
 
-export memcached := SERVICE : plugin('memcached'), namespace('MemCachedPlugin')
+export memcached := SERVICE : plugin('memcachedplugin'), namespace('MemCachedPlugin')
   SetUnicode(CONST VARSTRING key, CONST UNICODE value, CONST VARSTRING options, CONST VARSTRING partitionKey = '', UNSIGNED expire = 0) : cpp,action,context,entrypoint='MSet';
   SetString(CONST VARSTRING key, CONST STRING value, CONST VARSTRING options, CONST VARSTRING partitionKey = '', UNSIGNED expire = 0) : cpp,action,context,entrypoint='MSet';
   SetUtf8(CONST VARSTRING key, CONST UTF8 value, CONST VARSTRING options, CONST VARSTRING partitionKey = '', UNSIGNED expire = 0) : cpp,action,context,entrypoint='MSetUtf8';

+ 2 - 2
testing/regress/ecl/kafkatest.ecl

@@ -32,8 +32,8 @@ KAFKA_BROKER := '127.0.0.1';
 KAFKA_TEST_TOPIC := Std.System.Job.WUID() : INDEPENDENT;
 KAFKA_CONSUMER_GROUP := 'regress';
 
-p := kafka.Publisher(KAFKA_TEST_TOPIC, KAFKA_BROKER);
-c := kafka.Consumer(KAFKA_TEST_TOPIC, KAFKA_BROKER, KAFKA_CONSUMER_GROUP);
+p := kafka.KafkaPublisher(KAFKA_TEST_TOPIC, KAFKA_BROKER);
+c := kafka.KafkaConsumer(KAFKA_TEST_TOPIC, KAFKA_BROKER, KAFKA_CONSUMER_GROUP);
 
 SEQUENTIAL
     (