瀏覽代碼

Merge branch 'candidate-5.6.2' into candidate-6.0.0

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 9 年之前
父節點
當前提交
7cc1b2ab7e
共有 3 個文件被更改,包括 10 次插入2 次删除
  1. 2 0
      common/dllserver/thorplugin.cpp
  2. 8 1
      ecl/hqlcpp/hqlcppds.cpp
  3. 0 1
      ecl/hqlcpp/hqlinline.cpp

+ 2 - 0
common/dllserver/thorplugin.cpp

@@ -249,6 +249,7 @@ static void secscan (bfd *file, sec_ptr sec, void *userParam)
         bfd_get_section_contents(file, sec, data, 0, size);
     }
 }
+static CriticalSection bfdCs;
 #endif
 
 static bool getResourceFromMappedFile(const char * filename, const byte * start_addr, MemoryBuffer &data, const char * type, unsigned id)
@@ -372,6 +373,7 @@ extern bool getResourceFromFile(const char *filename, MemoryBuffer &data, const
     FreeLibrary(dllHandle);
     return true;
 #elif defined (_USE_BINUTILS)
+    CriticalBlock block(bfdCs);
     bfd_init ();
     bfd *file = bfd_openr(filename, NULL);
     if (file)

+ 8 - 1
ecl/hqlcpp/hqlcppds.cpp

@@ -4489,8 +4489,15 @@ void HqlCppTranslator::buildRowAssign(BuildCtx & ctx, IReferenceSelector * targe
                 buildRowAssign(ctx, target, deserialized->queryChild(0));
             else if (!typeRequiresDeserialization(deserialized->queryType(), serializeForm))
                 buildRowAssign(ctx, target, deserialized);
-            else
+            else if (target->queryRootRow()->queryBuilder())
                 doBuildRowAssignSerializeRow(ctx, target, expr);
+            else
+            {
+                CHqlBoundExpr bound;
+                buildTempExpr(ctx, expr, bound);
+                OwnedHqlExpr translated = bound.getTranslatedExpr();
+                buildRowAssign(ctx, target, translated);
+            }
             return;
         }
     case no_if:

+ 0 - 1
ecl/hqlcpp/hqlinline.cpp

@@ -1008,7 +1008,6 @@ void ParentExtract::beginCreateExtract(BuildCtx & ctx, bool doDeclare)
     //Collect a list of cursors together... NB these are in reverse order..
     gatherActiveRows(*buildctx);
 
-    serialization->BoundRow::setBuilder(queryExtractName());
     childSerialization->setBuilder(this);
 }