Pārlūkot izejas kodu

Merge branch 'candidate-7.6.x' into candidate-7.8.x

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 5 gadi atpakaļ
vecāks
revīzija
f426ffe208
3 mainītis faili ar 17 papildinājumiem un 3 dzēšanām
  1. 9 2
      dali/dfu/dfuwu.cpp
  2. 5 1
      ecl/hqlcpp/hqlcpp.cpp
  3. 3 0
      ecl/regress/issue24140.ecl

+ 9 - 2
dali/dfu/dfuwu.cpp

@@ -2402,7 +2402,10 @@ public:
         if (reload) {
             if (!checkconn())
                 return NULL;
-            conn->commit();
+            if (updating)
+                conn->commit();
+            else
+                conn->rollback(); // prevent writing created branches
             conn->reload("Progress");
             if (!checkconn())
                 return NULL;
@@ -2417,7 +2420,10 @@ public:
         if (reload) {
             if (!checkconn())
                 return NULL;
-            conn->commit();
+            if (updating)
+                conn->commit();
+            else
+                conn->rollback(); // prevent writing created branches
             conn->reload("Monitor");
             if (!checkconn())
                 return NULL;
@@ -2522,6 +2528,7 @@ public:
         CriticalBlock block(crit);
         if (!conn)
             return 0;
+        assertex(updating);
         localedition++;
         root->setPropInt("Progress/Edition",localedition);
         conn->commit();

+ 5 - 1
ecl/hqlcpp/hqlcpp.cpp

@@ -11616,10 +11616,14 @@ void HqlCppTranslator::assignCastUnknownLength(BuildCtx & ctx, const CHqlBoundTa
                     break;
                 case type_string:
                 case type_data:
+                {
                     funcName = codepageToUtf8XId;
                     codepageParam = createConstant(from->queryCharset()->queryCodepageName());
-                    pure.expr.setown(createValue(no_typetransfer, makeStringType(from->getStringLen(), NULL, NULL), LINK(pure.expr)));
+                    ITypeInfo * type = makeStringType(to->getStringLen(), NULL, NULL);
+                    OwnedHqlExpr translated = createValue(no_typetransfer, type, pure.getTranslatedExpr());
+                    buildExpr(ctx, translated, pure);
                     break;
+                }
                 default:
                     CHqlBoundExpr recast;
                     ITypeInfo * type = makeStringType(to->getStringLen(), NULL, NULL);

+ 3 - 0
ecl/regress/issue24140.ecl

@@ -0,0 +1,3 @@
+fooData := (DATA)'testing' : INDEPENDENT;
+fooUTF8 := (UTF8)fooData;
+OUTPUT(fooUTF8);