浏览代码

Merge remote-tracking branch 'origin/candidate-3.10.0' into candidate-3.10.x

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 12 年之前
父节点
当前提交
bfb7a3c2db

+ 2 - 2
docs/UsingConfigManager/UsingConfigManager.xml

@@ -1483,9 +1483,9 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi
                     </row>
 
                     <row>
-                      <entry><emphasis>maxCompileThreads</emphasis></entry>
+                      <entry><emphasis>maxEclccProcesses</emphasis></entry>
 
-                      <entry>The maximum number of compile threads</entry>
+                      <entry>The maximum number of eclcc processes that will be launched in parallel</entry>
                     </row>
 
                     <row>

+ 4 - 1
ecl/eclccserver/eclccserver.cpp

@@ -574,7 +574,10 @@ int main(int argc, const char *argv[])
         getEclCCServerQueueNames(queueNames, globals->queryProp("@name"));
         if (!queueNames.length())
             throw MakeStringException(0, "No clusters found to listen on");
-        EclccServer server(queueNames.str(), globals->getPropInt("@maxCompileThreads", 1));
+        // The option has been renamed to avoid confusion with the similarly-named eclcc option, but
+        // still accept the old name if the new one is not present.
+        unsigned maxThreads = globals->getPropInt("@maxEclccProcesses", globals->getPropInt("@maxCompileThreads", 4));
+        EclccServer server(queueNames.str(), maxThreads);
         // if we got here, eclserver is successfully started and all options are good, so create the "sentinel file" for re-runs from the script
         // put in its own "scope" to force the flush
         writeSentinelFile(sentinelFile);

+ 2 - 0
ecl/hqlcpp/hqlcpp.cpp

@@ -8812,9 +8812,11 @@ void HqlCppTranslator::doBuildAssignHashElement(BuildCtx & ctx, HashCodeCreator
             //fallthrough
             if (creator.optimize() && hasOutOfLineRows(elem->queryType()))
             {
+                creator.beginCondition(ctx);
                 BuildCtx iterctx(ctx);
                 BoundRow * row = buildDatasetIterate(iterctx, elem, false);
                 doBuildAssignHashElement(iterctx, creator, elem->queryNormalizedSelector(), elem->queryRecord());
+                creator.endCondition(iterctx);
                 return;
             }
             else

+ 33 - 0
ecl/regress/dedupall5.ecl

@@ -0,0 +1,33 @@
+/*##############################################################################
+
+    HPCC SYSTEMS software Copyright (C) 2012 HPCC Systems.
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+############################################################################## */
+
+idRecord := { unsigned id; };
+
+namesRecord :=
+            RECORD
+string        surname;
+string        forename;
+dataset(idRecord) ids;
+            END;
+
+namesTable := dataset([
+    {'Fred', 'Smith', [1,2,3]},
+    {'Fred', 'Smith', [1,2,4]},
+    {'John', 'Smith', [4,5,6]},
+    {'John', 'Smith', [4,5,6]}], namesRecord);
+
+output(dedup(NOFOLD(namesTable), ALL));

+ 2 - 2
initfiles/componentfiles/configxml/eclccserver.xsd

@@ -192,10 +192,10 @@
                 </xs:annotation>
             </xs:attribute>
             <xs:attribute name="traceLevel" type="xs:nonNegativeInteger" use="optional" default="1"/>
-            <xs:attribute name="maxCompileThreads" type="xs:nonNegativeInteger" use="optional" default="4">
+            <xs:attribute name="maxEclccProcesses" type="xs:nonNegativeInteger" use="optional" default="4">
                 <xs:annotation>
                     <xs:appinfo>
-                        <tooltip>Number of compile threads.</tooltip>
+                        <tooltip>Maximum number of instances of eclcc that will be launched in parallel.</tooltip>
                     </xs:appinfo>
                 </xs:annotation>
             </xs:attribute>

+ 1 - 1
initfiles/etc/DIR_NAME/environment.xml.in

@@ -387,7 +387,7 @@
                     daliServers="mydali"
                     description="EclCCServer process"
                     enableSysLog="true"
-                    maxCompileThreads="4"
+                    maxEclccProcesses="4"
                     name="myeclccserver"
                     traceLevel="1">
    <Instance computer="localhost"