Преглед изворни кода

HPCC-24140 Fix problem casting from DATA to UTF8

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Gavin Halliday пре 5 година
родитељ
комит
dfcf31aa5c
2 измењених фајлова са 8 додато и 1 уклоњено
  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);