Pārlūkot izejas kodu

Merge pull request #13951 from ghalliday/issue24140

HPCC-24140 Fix problem casting from DATA to UTF8

Reviewed-By: Shamser Ahmed <shamser.ahmed@lexisnexis.co.uk>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 4 gadi atpakaļ
vecāks
revīzija
57f53ca9dd
2 mainītis faili ar 8 papildinājumiem un 1 dzēšanām
  1. 5 1
      ecl/hqlcpp/hqlcpp.cpp
  2. 3 0
      ecl/regress/issue24140.ecl

+ 5 - 1
ecl/hqlcpp/hqlcpp.cpp

@@ -11613,10 +11613,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);