소스 검색

Merge branch 'candidate-6.4.0'

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 8 년 전
부모
커밋
25a1c1061d
34개의 변경된 파일218개의 추가작업 그리고 78개의 파일을 삭제
  1. 1 1
      dali/daliadmin/daliadmin.cpp
  2. 93 38
      docs/ECLLanguageReference/ECLR_mods/BltInFunc-BUILD.xml
  3. 5 3
      docs/ECLStandardLibraryReference/SLR-Mods/AdjustCalendar.xml
  4. 3 1
      docs/ECLStandardLibraryReference/SLR-Mods/AdjustDate.xml
  5. 2 2
      docs/ECLStandardLibraryReference/SLR-Mods/BLAS.xml
  6. 2 0
      docs/ECLStandardLibraryReference/SLR-Mods/CleanAccents.xml
  7. 2 0
      docs/ECLStandardLibraryReference/SLR-Mods/CountWords.xml
  8. 6 0
      docs/ECLStandardLibraryReference/SLR-Mods/DateDataTypes.xml
  9. 5 1
      docs/ECLStandardLibraryReference/SLR-Mods/DateFromParts.xml
  10. 2 0
      docs/ECLStandardLibraryReference/SLR-Mods/Day.xml
  11. 2 0
      docs/ECLStandardLibraryReference/SLR-Mods/FromGregorianYMD.xml
  12. 12 15
      docs/ECLStandardLibraryReference/SLR-Mods/GetNthWord.xml
  13. 2 0
      docs/ECLStandardLibraryReference/SLR-Mods/Hour.xml
  14. 2 0
      docs/ECLStandardLibraryReference/SLR-Mods/IsDateLeapYear.xml
  15. 5 2
      docs/ECLStandardLibraryReference/SLR-Mods/IsLeapYear.xml
  16. 2 0
      docs/ECLStandardLibraryReference/SLR-Mods/IsValidDate.xml
  17. 2 0
      docs/ECLStandardLibraryReference/SLR-Mods/IsValidGregorianDate.xml
  18. 2 0
      docs/ECLStandardLibraryReference/SLR-Mods/IsValidTime.xml
  19. 2 0
      docs/ECLStandardLibraryReference/SLR-Mods/Minute.xml
  20. 2 0
      docs/ECLStandardLibraryReference/SLR-Mods/Month.xml
  21. 2 0
      docs/ECLStandardLibraryReference/SLR-Mods/Second.xml
  22. 4 2
      docs/ECLStandardLibraryReference/SLR-Mods/SplitWords.xml
  23. 5 1
      docs/ECLStandardLibraryReference/SLR-Mods/TimeDataTypes.xml
  24. 2 0
      docs/ECLStandardLibraryReference/SLR-Mods/TimeFromParts.xml
  25. 2 0
      docs/ECLStandardLibraryReference/SLR-Mods/ToGregorianYMD.xml
  26. 2 0
      docs/ECLStandardLibraryReference/SLR-Mods/WordCount.xml
  27. 12 4
      docs/ECLStandardLibraryReference/SLR-Mods/WorkunitExists.xml
  28. 2 0
      docs/ECLStandardLibraryReference/SLR-Mods/Year.xml
  29. 1 0
      initfiles/componentfiles/configxml/esp.xsd.in
  30. 1 1
      initfiles/etc/DIR_NAME/genenvrules.conf
  31. 4 6
      roxie/ccd/ccdprotocol.cpp
  32. 4 0
      system/jlib/jstatcodes.h
  33. 21 1
      system/jlib/jstats.cpp
  34. 2 0
      system/jlib/jstats.h

+ 1 - 1
dali/daliadmin/daliadmin.cpp

@@ -2985,7 +2985,7 @@ static void migrateFiles(const char *srcGroup, const char *tgtGroup, const char
                                 if (NotFound == groupOffset)
                                     groupOffset = srcRelPos;
                                 unsigned dstRelPos = srcRelPos % tgtClusterSize;
-                                dstPositions.append(dstRelPos);
+                                dstPositions.append(dstRelPos+1);
                             }
                             StringBuffer rangeText;
                             encodeChildGroupRange(dstPositions, rangeText);

+ 93 - 38
docs/ECLLanguageReference/ECLR_mods/BltInFunc-BUILD.xml

@@ -134,7 +134,7 @@
   <para>The first four forms of the <emphasis role="bold">BUILD
   </emphasis>action create index files. Indexes are automatically compressed,
   minimizing overhead associated with using indexed record access. The keyword
-  BUILDINDEX may be used in place of BUILD in these forms. </para>
+  BUILDINDEX may be used in place of BUILD in these forms.</para>
 
   <para>The fifth form creates an external query library<indexterm>
       <primary>query library</primary>
@@ -204,7 +204,13 @@
     ] ] <emphasis role="bold">[, MAXLENGTH<indexterm>
         <primary>MAXLENGTH</primary>
       </indexterm>[(</emphasis><emphasis>value</emphasis><emphasis
-    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>
+    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">)
+    ][, SET (</emphasis> <emphasis>option, value </emphasis><emphasis
+    role="bold">) ]</emphasis></para>
 
     <para><informaltable colsep="1" frame="all" rowsep="1">
         <tgroup cols="2">
@@ -480,51 +486,100 @@
               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>
+            <row>
+              <entry><emphasis role="bold">UNORDERED</emphasis></entry>
 
-            <entry>Specifies the significance of the output record order.</entry>
-          </row>
-          <row>
-            <entry><emphasis>bool</emphasis></entry>
+              <entry>Optional. Specifies the output record order is not
+              significant.</entry>
+            </row>
 
-            <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>
+            <row>
+              <entry><emphasis role="bold">ORDERED</emphasis></entry>
 
-            <entry>Optional. Specifies the input record order is significant.</entry>
-          </row>
-          <row>
-            <entry><emphasis role="bold">UNSTABLE</emphasis></entry>
+              <entry>Specifies the significance of the output record
+              order.</entry>
+            </row>
 
-            <entry>Optional. Specifies the input record order is not significant.</entry>
-          </row>
-          <row>
-            <entry><emphasis role="bold">PARALLEL</emphasis></entry>
+            <row>
+              <entry><emphasis>bool</emphasis></entry>
 
-            <entry>Optional. Try to evaluate this activity in parallel.</entry>
-          </row>
-          <row>
-            <entry><emphasis>numthreads</emphasis></entry>
+              <entry>When False, specifies the output record order is not
+              significant. When True, specifies the default output record
+              order.</entry>
+            </row>
 
-            <entry>Optional. Try to evaluate this activity using <emphasis>numthreads</emphasis> threads.</entry>
-          </row>
-          <row>
-            <entry><emphasis role="bold">ALGORITHM</emphasis></entry>
+            <row>
+              <entry><emphasis role="bold">STABLE</emphasis></entry>
 
-            <entry>Optional. Override the algorithm used for this activity.</entry>
-          </row>
-          <row>
-            <entry><emphasis>name</emphasis></entry>
+              <entry>Optional. Specifies the input record order is
+              significant.</entry>
+            </row>
 
-            <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">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">SET</emphasis></entry>
+
+              <entry>Optional. SET is used to set a value to a named metadata
+              option. This allows you to set user metadata whose use and
+              purpose is up to the developer. Currently
+              <emphasis>_nodeSize</emphasis> is the only system-defined
+              metadata, though other names starting with an underscore (_)
+              should be considered reserved for system use. You may want to
+              use SET(‘_nodeSize’, ‘32768’) if your hardware and usage pattern
+              work better with larger page sizes. The default (8192) may not
+              be optimal for all scenarios on modern hardware. We recommend
+              using a power of 2 and not smaller than 8k.</entry>
+            </row>
+
+            <row>
+              <entry><emphasis>option</emphasis></entry>
+
+              <entry>A case sensitive string constant containing the name of
+              the option to set.</entry>
+            </row>
+
+            <row>
+              <entry><emphasis>value</emphasis></entry>
+
+              <entry>The value to set the option to. This may be any type of
+              value, dependent on what the option expects to be.</entry>
+            </row>
           </tbody>
         </tgroup>
       </informaltable></para>

+ 5 - 3
docs/ECLStandardLibraryReference/SLR-Mods/AdjustCalendar.xml

@@ -8,6 +8,8 @@
       <primary>STD.Date.AdjustCalendar</primary>
     </indexterm><indexterm>
       <primary>Date.AdjustCalendar</primary>
+    </indexterm><indexterm>
+      <primary>AdjustCalendar</primary>
     </indexterm>(</emphasis> <emphasis>date</emphasis> ,
   [<emphasis>year_delta</emphasis>],[<emphasis>month_delta</emphasis>]
   ,[<emphasis>day_delta</emphasis>] <emphasis role="bold">)</emphasis></para>
@@ -58,7 +60,7 @@
 
   <para>The AdjustCalendar function adjusts a date by incrementing or
   decrementing months and/or years. The date must be in the Gregorian calendar
-  after the year 1600. </para>
+  after the year 1600.</para>
 
   <para>This uses the rule outlined in McGinn v. State, 46 Neb. 427, 65 N.W.
   46 (1895):</para>
@@ -68,11 +70,11 @@
     and not appearing to have been used in a different sense, denotes a period
     terminating with the day of the succeeding month numerically corresponding
     to the day of its beginning, less one. If there be no corresponding day of
-    the succeeding month, it terminates with the last day thereof." </para>
+    the succeeding month, it terminates with the last day thereof."</para>
   </blockquote>
 
   <para>Note that day adjustments are performed after year and month
-  adjustments using the preceding rules. </para>
+  adjustments using the preceding rules.</para>
 
   <para>As an example, Jan. 31, 2014 + 1 month results in Feb. 28, 2014; Jan.
   31, 2014 + 1 month + 1 day results in Mar. 1, 2014.</para>

+ 3 - 1
docs/ECLStandardLibraryReference/SLR-Mods/AdjustDate.xml

@@ -8,6 +8,8 @@
       <primary>STD.Date.AdjustDate</primary>
     </indexterm><indexterm>
       <primary>Date.AdjustDate</primary>
+    </indexterm><indexterm>
+      <primary>AdjustDate</primary>
     </indexterm>(</emphasis> <emphasis>date</emphasis> ,
   [<emphasis>year_delta</emphasis>],[<emphasis>month_delta</emphasis>]
   ,[<emphasis>day_delta</emphasis>] <emphasis role="bold">)</emphasis></para>
@@ -58,7 +60,7 @@
 
   <para>The <emphasis role="bold">AdjustDate</emphasis> function adjusts a
   date by incrementing or decrementing year, month, and/or day values. The
-  date must be in the Gregorian calendar after the year 1600. </para>
+  date must be in the Gregorian calendar after the year 1600.</para>
 
   <para>If the new calculated date is invalid then it is normalized according
   to mktime() rules. For example, 20140130 plus 1 month would be

+ 2 - 2
docs/ECLStandardLibraryReference/SLR-Mods/BLAS.xml

@@ -283,9 +283,9 @@ STD.BLAS.dasum(9, test_data, 1); //sums the absolute values of the matrix, and r
     <para><emphasis role="bold">STD.BLAS.daxpy<indexterm>
         <primary>STD.BLAS.daxpy</primary>
       </indexterm><indexterm>
-        <primary>BLAS.dasum</primary>
+        <primary>BLAS.daxpy</primary>
       </indexterm><indexterm>
-        <primary>dasum</primary>
+        <primary>daxpy</primary>
       </indexterm>(</emphasis> <emphasis>N, alpha, X, incX, Y, incY,
     x_skipped,y_skipped);</emphasis> <emphasis></emphasis></para>
 

+ 2 - 0
docs/ECLStandardLibraryReference/SLR-Mods/CleanAccents.xml

@@ -8,6 +8,8 @@
       <primary>STD.Uni.CleanAccents</primary>
     </indexterm><indexterm>
       <primary>Uni.CleanAccents</primary>
+    </indexterm><indexterm>
+      <primary>CleanAccents</primary>
     </indexterm>(</emphasis> <emphasis>source</emphasis> <emphasis
   role="bold">)</emphasis></para>
 

+ 2 - 0
docs/ECLStandardLibraryReference/SLR-Mods/CountWords.xml

@@ -8,6 +8,8 @@
       <primary>STD.Str.CountWords</primary>
     </indexterm><indexterm>
       <primary>Str.CountWords</primary>
+    </indexterm><indexterm>
+      <primary>CountWords</primary>
     </indexterm>(</emphasis> <emphasis>source, separator </emphasis><emphasis
   role="bold">)</emphasis></para>
 

+ 6 - 0
docs/ECLStandardLibraryReference/SLR-Mods/DateDataTypes.xml

@@ -8,18 +8,24 @@
       <primary>STD.Date.Date_rec</primary>
     </indexterm><indexterm>
       <primary>Date.Date_rec</primary>
+    </indexterm><indexterm>
+      <primary>Date_rec</primary>
     </indexterm></emphasis></para>
 
   <para><emphasis role="bold">STD.Date.Date_t<indexterm>
       <primary>STD.Date.Date_t</primary>
     </indexterm><indexterm>
       <primary>Date.Date_t</primary>
+    </indexterm><indexterm>
+      <primary>Date_t</primary>
     </indexterm></emphasis></para>
 
   <para><emphasis role="bold">STD.Date.Days_t<indexterm>
       <primary>STD.Date.Days_t</primary>
     </indexterm><indexterm>
       <primary>Date.Days_t</primary>
+    </indexterm><indexterm>
+      <primary>Days_t</primary>
     </indexterm></emphasis></para>
 
   <informaltable colsep="1" frame="all" rowsep="1">

+ 5 - 1
docs/ECLStandardLibraryReference/SLR-Mods/DateFromParts.xml

@@ -8,6 +8,8 @@
       <primary>STD.Date.DateFromParts</primary>
     </indexterm><indexterm>
       <primary>Date.DateFromParts</primary>
+    </indexterm><indexterm>
+      <primary>DateFromParts</primary>
     </indexterm>(</emphasis> <emphasis>year, month, day</emphasis> <emphasis
   role="bold">)</emphasis></para>
 
@@ -45,7 +47,9 @@
     </tgroup>
   </informaltable>
 
-  <para>The <emphasis role="bold">DateFromParts</emphasis> function returns a Date_t value from the <emphasis>year</emphasis>, <emphasis>month</emphasis>, and <emphasis>day</emphasis> parameters.</para>
+  <para>The <emphasis role="bold">DateFromParts</emphasis> function returns a
+  Date_t value from the <emphasis>year</emphasis>, <emphasis>month</emphasis>,
+  and <emphasis>day</emphasis> parameters.</para>
 
   <para>Example:</para>
 

+ 2 - 0
docs/ECLStandardLibraryReference/SLR-Mods/Day.xml

@@ -8,6 +8,8 @@
       <primary>STD.Date.Day</primary>
     </indexterm><indexterm>
       <primary>Date.Day</primary>
+    </indexterm><indexterm>
+      <primary>Day</primary>
     </indexterm>(</emphasis> <emphasis>date</emphasis> <emphasis
   role="bold">)</emphasis></para>
 

+ 2 - 0
docs/ECLStandardLibraryReference/SLR-Mods/FromGregorianYMD.xml

@@ -8,6 +8,8 @@
       <primary>STD.Date.FromGregorianYMD</primary>
     </indexterm><indexterm>
       <primary>Date.FromGregorianYMD</primary>
+    </indexterm><indexterm>
+      <primary>FromGregorianYMD</primary>
     </indexterm>(</emphasis> <emphasis>year, month, day</emphasis> <emphasis
   role="bold">)</emphasis></para>
 

+ 12 - 15
docs/ECLStandardLibraryReference/SLR-Mods/GetNthWord.xml

@@ -8,22 +8,18 @@
       <primary>STD.Str.GetNthWord</primary>
     </indexterm><indexterm>
       <primary>Str.GetNthWord</primary>
+    </indexterm><indexterm>
+      <primary>GetNthWord</primary>
     </indexterm>(</emphasis> <emphasis>source, instance </emphasis><emphasis
   role="bold">)</emphasis></para>
 
-  <para>
-  <emphasis role="bold">STD.Uni.GetNthWord
-    <indexterm>
+  <para><emphasis role="bold">STD.Uni.GetNthWord <indexterm>
       <primary>STD.Uni.GetNthWord</primary>
-    </indexterm>
-    <indexterm>
+    </indexterm> <indexterm>
       <primary>Uni.GetNthWord</primary>
-    </indexterm>
-    (</emphasis> 
-    <emphasis>source, instance </emphasis>
-    <emphasis role="bold">[</emphasis>
-    <emphasis>, locale</emphasis><emphasis role="bold"> ] )</emphasis>
-  </para>
+    </indexterm> (</emphasis> <emphasis>source, instance </emphasis> <emphasis
+  role="bold">[</emphasis> <emphasis>, locale</emphasis><emphasis role="bold">
+  ] )</emphasis></para>
 
   <informaltable colsep="1" frame="all" rowsep="1">
     <tgroup cols="2">
@@ -47,8 +43,9 @@
         <row>
           <entry><emphasis>locale</emphasis></entry>
 
-          <entry>A null-terminated string containing the language and country code to use to
-determine correct sort order and other operations.</entry>
+          <entry>A null-terminated string containing the language and country
+          code to use to determine correct sort order and other
+          operations.</entry>
         </row>
 
         <row>
@@ -61,7 +58,8 @@ determine correct sort order and other operations.</entry>
   </informaltable>
 
   <para>The <emphasis role="bold">GetNthWord </emphasis>function returns the
-  word in the <emphasis>instance</emphasis> position in the <emphasis>source</emphasis>string.</para>
+  word in the <emphasis>instance</emphasis> position in the
+  <emphasis>source</emphasis>string.</para>
 
   <para>Example:</para>
 
@@ -71,5 +69,4 @@ str1 := 'a word a day keeps the doctor away';
 
 STD.STr.GetNthWord(str1,2);    //returns "word"
 </programlisting>
-
 </sect1>

+ 2 - 0
docs/ECLStandardLibraryReference/SLR-Mods/Hour.xml

@@ -8,6 +8,8 @@
       <primary>STD.Date.Hour</primary>
     </indexterm><indexterm>
       <primary>Date.Hour</primary>
+    </indexterm><indexterm>
+      <primary>Hour</primary>
     </indexterm>(</emphasis> <emphasis>time</emphasis> <emphasis
   role="bold">)</emphasis></para>
 

+ 2 - 0
docs/ECLStandardLibraryReference/SLR-Mods/IsDateLeapYear.xml

@@ -8,6 +8,8 @@
       <primary>STD.Date.IsDateLeapYear</primary>
     </indexterm><indexterm>
       <primary>Date.IsDateLeapYear</primary>
+    </indexterm><indexterm>
+      <primary>IsDateLeapYear</primary>
     </indexterm>(</emphasis> <emphasis>date</emphasis> <emphasis
   role="bold">)</emphasis></para>
 

+ 5 - 2
docs/ECLStandardLibraryReference/SLR-Mods/IsLeapYear.xml

@@ -8,6 +8,8 @@
       <primary>STD.Date.IsLeapYear</primary>
     </indexterm><indexterm>
       <primary>Date.IsLeapYear</primary>
+    </indexterm><indexterm>
+      <primary>IsLeapYear</primary>
     </indexterm>(</emphasis> <emphasis>year</emphasis> <emphasis
   role="bold">)</emphasis></para>
 
@@ -33,8 +35,9 @@
     </tgroup>
   </informaltable>
 
-  <para>The <emphasis role="bold">IsLeapYear</emphasis> function returns TRUE if the <emphasis>year</emphasis> is 
-  a leap year in the Gregorian (or proleptic Gregorian) calendar.</para>
+  <para>The <emphasis role="bold">IsLeapYear</emphasis> function returns TRUE
+  if the <emphasis>year</emphasis> is a leap year in the Gregorian (or
+  proleptic Gregorian) calendar.</para>
 
   <para>Example:</para>
 

+ 2 - 0
docs/ECLStandardLibraryReference/SLR-Mods/IsValidDate.xml

@@ -8,6 +8,8 @@
       <primary>STD.Date.IsValidDate</primary>
     </indexterm><indexterm>
       <primary>Date.IsValidDate</primary>
+    </indexterm><indexterm>
+      <primary>IsValidDate</primary>
     </indexterm>(</emphasis> <emphasis>date</emphasis> ,
   [<emphasis>yearLowerBound</emphasis>],[<emphasis>yearUpperBound</emphasis>]
   <emphasis role="bold">)</emphasis></para>

+ 2 - 0
docs/ECLStandardLibraryReference/SLR-Mods/IsValidGregorianDate.xml

@@ -8,6 +8,8 @@
       <primary>STD.Date.IsValidGregorianDate</primary>
     </indexterm><indexterm>
       <primary>Date.IsValidGregorianDate</primary>
+    </indexterm><indexterm>
+      <primary>IsValidGregorianDate</primary>
     </indexterm>(</emphasis> <emphasis>date</emphasis> <emphasis
   role="bold">)</emphasis></para>
 

+ 2 - 0
docs/ECLStandardLibraryReference/SLR-Mods/IsValidTime.xml

@@ -8,6 +8,8 @@
       <primary>STD.Date.IsValidTime</primary>
     </indexterm><indexterm>
       <primary>Date.IsValidTime</primary>
+    </indexterm><indexterm>
+      <primary>IsValidTime</primary>
     </indexterm>(</emphasis> <emphasis>time</emphasis> <emphasis
   role="bold">)</emphasis></para>
 

+ 2 - 0
docs/ECLStandardLibraryReference/SLR-Mods/Minute.xml

@@ -8,6 +8,8 @@
       <primary>STD.Date.Minute</primary>
     </indexterm><indexterm>
       <primary>Date.Minute</primary>
+    </indexterm><indexterm>
+      <primary>Minute</primary>
     </indexterm>(</emphasis> <emphasis>time</emphasis> <emphasis
   role="bold">)</emphasis></para>
 

+ 2 - 0
docs/ECLStandardLibraryReference/SLR-Mods/Month.xml

@@ -8,6 +8,8 @@
       <primary>STD.Date.Month</primary>
     </indexterm><indexterm>
       <primary>Date.Month</primary>
+    </indexterm><indexterm>
+      <primary>Month</primary>
     </indexterm>(</emphasis> <emphasis>date</emphasis> <emphasis
   role="bold">)</emphasis></para>
 

+ 2 - 0
docs/ECLStandardLibraryReference/SLR-Mods/Second.xml

@@ -8,6 +8,8 @@
       <primary>STD.Date.Second</primary>
     </indexterm><indexterm>
       <primary>Date.Second</primary>
+    </indexterm><indexterm>
+      <primary>Second</primary>
     </indexterm>(</emphasis> <emphasis>time</emphasis> <emphasis
   role="bold">)</emphasis></para>
 

+ 4 - 2
docs/ECLStandardLibraryReference/SLR-Mods/SplitWords.xml

@@ -8,6 +8,8 @@
       <primary>STD.Str.SplitWords</primary>
     </indexterm><indexterm>
       <primary>Str.SplitWords</primary>
+    </indexterm><indexterm>
+      <primary>SplitWords</primary>
     </indexterm>(</emphasis> <emphasis>source, separator </emphasis><emphasis
   role="bold">[ </emphasis><emphasis>, allowblank</emphasis><emphasis
   role="bold"> ] )</emphasis></para>
@@ -34,8 +36,8 @@
         <row>
           <entry><emphasis>allowblank</emphasis></entry>
 
-          <entry>Optional. If TRUE, specifies allowing blank items in the result. 
-          If omitted, the default is FALSE.</entry>
+          <entry>Optional. If TRUE, specifies allowing blank items in the
+          result. If omitted, the default is FALSE.</entry>
         </row>
 
         <row>

+ 5 - 1
docs/ECLStandardLibraryReference/SLR-Mods/TimeDataTypes.xml

@@ -8,12 +8,16 @@
       <primary>STD.Date.Time_rec</primary>
     </indexterm><indexterm>
       <primary>Date.Time_rec</primary>
+    </indexterm><indexterm>
+      <primary>Time_rec</primary>
     </indexterm></emphasis></para>
 
   <para><emphasis role="bold">STD.Date.Time_t<indexterm>
       <primary>STD.Date.Time_t</primary>
     </indexterm><indexterm>
       <primary>Date.Time_t</primary>
+    </indexterm><indexterm>
+      <primary>Time_t</primary>
     </indexterm></emphasis></para>
 
   <para><emphasis role="bold">STD.DateTime_rec <indexterm>
@@ -54,7 +58,7 @@
 
           <entry>An INTEGER8 holding holding a number of seconds. Can be used
           to represent either a duration or the number of seconds since epoch
-          (Jan 1, 1970). </entry>
+          (Jan 1, 1970).</entry>
         </row>
 
         <row>

+ 2 - 0
docs/ECLStandardLibraryReference/SLR-Mods/TimeFromParts.xml

@@ -8,6 +8,8 @@
       <primary>STD.Date.TimeFromParts</primary>
     </indexterm><indexterm>
       <primary>Date.TimeFromParts</primary>
+    </indexterm><indexterm>
+      <primary>TimeFromParts</primary>
     </indexterm>(</emphasis> <emphasis>hour, minute, second</emphasis>
   <emphasis role="bold">)</emphasis></para>
 

+ 2 - 0
docs/ECLStandardLibraryReference/SLR-Mods/ToGregorianYMD.xml

@@ -8,6 +8,8 @@
       <primary>STD.Date.ToGregorianYMD</primary>
     </indexterm><indexterm>
       <primary>Date.ToGregorianYMD</primary>
+    </indexterm><indexterm>
+      <primary>ToGregorianYMD</primary>
     </indexterm>(</emphasis> <emphasis>days</emphasis> <emphasis
   role="bold">)</emphasis></para>
 

+ 2 - 0
docs/ECLStandardLibraryReference/SLR-Mods/WordCount.xml

@@ -8,6 +8,8 @@
       <primary>STD.Str.WordCount</primary>
     </indexterm><indexterm>
       <primary>Str.WordCount</primary>
+    </indexterm><indexterm>
+      <primary>WordCount</primary>
     </indexterm>(</emphasis> <emphasis>source</emphasis><emphasis role="bold">
   )</emphasis></para>
 

+ 12 - 4
docs/ECLStandardLibraryReference/SLR-Mods/WorkunitExists.xml

@@ -4,10 +4,18 @@
 <sect1 id="WorkunitExists">
   <title>WorkunitExists</title>
 
-  <para><emphasis role="bold">STD.System.Workunit.WorkunitExists(</emphasis>
-  <emphasis> wuid </emphasis> <emphasis role="bold">[</emphasis> <emphasis>,
-  online </emphasis> <emphasis role="bold">] [</emphasis> <emphasis>, archived
-  </emphasis> <emphasis role="bold">] )</emphasis></para>
+  <para><emphasis role="bold">STD.System.Workunit.WorkunitExists(<indexterm>
+      <primary>STD.System.Workunit.WorkunitExists</primary>
+    </indexterm><indexterm>
+      <primary>System.Workunit.WorkunitExists</primary>
+    </indexterm><indexterm>
+      <primary>Workunit.WorkunitExists</primary>
+    </indexterm><indexterm>
+      <primary>WorkunitExists</primary>
+    </indexterm></emphasis> <emphasis> wuid </emphasis> <emphasis
+  role="bold">[</emphasis> <emphasis>, online </emphasis> <emphasis
+  role="bold">] [</emphasis> <emphasis>, archived </emphasis> <emphasis
+  role="bold">] )</emphasis></para>
 
   <informaltable colsep="1" frame="all" rowsep="1">
     <tgroup cols="2">

+ 2 - 0
docs/ECLStandardLibraryReference/SLR-Mods/Year.xml

@@ -8,6 +8,8 @@
       <primary>STD.Date.Year</primary>
     </indexterm><indexterm>
       <primary>Date.Year</primary>
+    </indexterm><indexterm>
+      <primary>Year</primary>
     </indexterm>(</emphasis> <emphasis>date</emphasis> <emphasis
   role="bold">)</emphasis></para>
 

+ 1 - 0
initfiles/componentfiles/configxml/esp.xsd.in

@@ -452,6 +452,7 @@
                             <xs:annotation>
                                 <xs:appinfo>
                                     <viewType>password</viewType>
+                                    <tooltip>The passphrase used to generate the private key.</tooltip>
                                 </xs:appinfo>
                             </xs:annotation>
                         </xs:attribute>

+ 1 - 1
initfiles/etc/DIR_NAME/genenvrules.conf

@@ -1,7 +1,7 @@
 
 [Algorithm]
 max_comps_per_node=4
-do_not_generate=SiteCertificate,dfuplus,soapplus,eclplus,ldapServer,ws_account,eclserver,ecldirect,DynamicESDL,cassandraloggingagent,esploggingagent,loggingmanager,wslogging,daliplugin
+do_not_generate=SiteCertificate,dfuplus,soapplus,eclplus,ldapServer,ws_account,eclserver,ecldirect,DynamicESDL,cassandraloggingagent,esploggingagent,loggingmanager,wslogging,daliplugin,backupnode
 avoid_combo=dali-eclagent,dali-sasha
 comps_on_all_nodes=dafilesrv,ftslave
 exclude_from_comps_on_all_nodes=ldapServer

+ 4 - 6
roxie/ccd/ccdprotocol.cpp

@@ -1138,10 +1138,8 @@ public:
         Owned<IXmlWriter> xmlwriter = createIXmlWriterExt(XWFnoindent, 1, content, WTJSON);
         return xmlwriter.getClear();
     }
-    virtual void outputContent()
+    void outputContent()
     {
-        CriticalBlock b1(client->queryCrit());
-
         bool needDelimiter = false;
         ForEachItemIn(seq, contentsMap)
         {
@@ -1177,6 +1175,7 @@ public:
         }
 
         CriticalBlock b(contentsCrit);
+        CriticalBlock b1(client->queryCrit());
 
         StringBuffer responseHead, responseTail;
         if (!resultFilter.ordinality() && !(protocolFlags & HPCC_PROTOCOL_CONTROL))
@@ -1255,10 +1254,8 @@ public:
         Owned<IXmlWriter> xmlwriter = createIXmlWriterExt(0, 1, content, WTStandard);
         return xmlwriter.getClear();
     }
-    virtual void outputContent()
+    void outputContent()
     {
-        CriticalBlock b1(client->queryCrit());
-
         bool needDelimiter = false;
         ForEachItemIn(seq, contentsMap)
         {
@@ -1287,6 +1284,7 @@ public:
             return;
         }
         CriticalBlock b(contentsCrit);
+        CriticalBlock b1(client->queryCrit());
 
         StringBuffer responseHead, responseTail;
         if (!resultFilter.ordinality() && !(protocolFlags & HPCC_PROTOCOL_CONTROL))

+ 4 - 0
system/jlib/jstatcodes.h

@@ -24,6 +24,8 @@
 #define SubGraphScopePrefix "sg"
 #define GraphScopePrefix "graph"
 #define FunctionScopePrefix "f"
+#define WorkflowScopePrefix "w"
+#define ChildGraphScopePrefix "c"
 
 #define CONST_STRLEN(x) (sizeof(x)-1)       // sizeof(const-string) = strlen(const-string) + 1 byte for the \0 terminator
 #define MATCHES_CONST_PREFIX(search, prefix) (strncmp(search, prefix, CONST_STRLEN(prefix)) == 0)
@@ -66,6 +68,8 @@ enum StatisticScopeType
     SSTdfuworkunit,                     // a reference to an executing dfu workunit
     SSTedge,
     SSTfunction,                        // a function call
+    SSTworkflow,
+    SSTchildgraph,
     SSTmax
 };
 

+ 21 - 1
system/jlib/jstats.cpp

@@ -67,7 +67,7 @@ void setStatisticsComponentName(StatisticCreatorType processType, const char * p
 // Textual forms of the different enumerations, first items are for none and all.
 static const char * const measureNames[] = { "", "all", "ns", "ts", "cnt", "sz", "cpu", "skw", "node", "ppm", "ip", "cy", NULL };
 static const char * const creatorTypeNames[]= { "", "all", "unknown", "hthor", "roxie", "roxie:s", "thor", "thor:m", "thor:s", "eclcc", "esp", "summary", NULL };
-static const char * const scopeTypeNames[] = { "", "all", "global", "graph", "subgraph", "activity", "allocator", "section", "compile", "dfu", "edge", "function", NULL };
+static const char * const scopeTypeNames[] = { "", "all", "global", "graph", "subgraph", "activity", "allocator", "section", "compile", "dfu", "edge", "function", "workflow", "child", nullptr };
 
 static unsigned matchString(const char * const * names, const char * search)
 {
@@ -1014,6 +1014,10 @@ StringBuffer & StatsScopeId::getScopeText(StringBuffer & out) const
         return out.append(EdgeScopePrefix).append(id).append("_").append(extra);
     case SSTfunction:
         return out.append(FunctionScopePrefix).append(name);
+    case SSTworkflow:
+        return out.append(WorkflowScopePrefix).append(id);
+    case SSTchildgraph:
+        return out.append(ChildGraphScopePrefix).append(id);
     default:
 #ifdef _DEBUG
         throwUnexpected();
@@ -1060,6 +1064,8 @@ void StatsScopeId::deserialize(MemoryBuffer & in, unsigned version)
     case SSTgraph:
     case SSTsubgraph:
     case SSTactivity:
+    case SSTworkflow:
+    case SSTchildgraph:
         in.read(id);
         break;
     case SSTedge:
@@ -1083,6 +1089,8 @@ void StatsScopeId::serialize(MemoryBuffer & out) const
     case SSTgraph:
     case SSTsubgraph:
     case SSTactivity:
+    case SSTworkflow:
+    case SSTchildgraph:
         out.append(id);
         break;
     case SSTedge:
@@ -1122,6 +1130,10 @@ bool StatsScopeId::setScopeText(const char * text)
     }
     else if (MATCHES_CONST_PREFIX(text, FunctionScopePrefix))
         setFunctionId(text+CONST_STRLEN(FunctionScopePrefix));
+    else if (MATCHES_CONST_PREFIX(text, WorkflowScopePrefix))
+        setWorkflowId(atoi(text+CONST_STRLEN(WorkflowScopePrefix)));
+    else if (MATCHES_CONST_PREFIX(text, ChildGraphScopePrefix))
+        setChildGraphId(atoi(text+CONST_STRLEN(ChildGraphScopePrefix)));
     else
         return false;
 
@@ -1145,6 +1157,14 @@ void StatsScopeId::setFunctionId(const char * _name)
     scopeType = SSTfunction;
     name.set(_name);
 }
+void StatsScopeId::setWorkflowId(unsigned _id)
+{
+    setId(SSTworkflow, _id);
+}
+void StatsScopeId::setChildGraphId(unsigned _id)
+{
+    setId(SSTchildgraph, _id);
+}
 
 //--------------------------------------------------------------------------------------------------------------------
 

+ 2 - 0
system/jlib/jstats.h

@@ -60,6 +60,8 @@ public:
     void setEdgeId(unsigned _id, unsigned _output);
     void setFunctionId(const char * _name);
     void setSubgraphId(unsigned _id);
+    void setWorkflowId(unsigned _id);
+    void setChildGraphId(unsigned _id);
 
     bool operator == (const StatsScopeId & other) const { return matches(other); }