Преглед на файлове

HPCC-15449 Fix bug indexing sets with signed characters

Signed-off-by: Gavin Halliday <gavin.halliday@lexisnexis.com>
Gavin Halliday преди 9 години
родител
ревизия
21d2e80e16
променени са 3 файла, в които са добавени 18 реда и са изтрити 0 реда
  1. 1 0
      ecl/hqlcpp/hqlcppcase.cpp
  2. 13 0
      testing/regress/ecl/key/sets.xml
  3. 4 0
      testing/regress/ecl/sets.ecl

+ 1 - 0
ecl/hqlcpp/hqlcppcase.cpp

@@ -427,6 +427,7 @@ IHqlExpression * HqlCppCaseInfo::buildIndexedMap(BuildCtx & ctx, IHqlExpression
             break;
         case type_string:
             tableIndex = createValue(no_index, makeCharType(), LINK(test), getZero());
+            tableIndex = createValue(no_cast, makeIntType(1, false), tableIndex);
             break;
         default:
             throwUnexpectedType(compareType);

+ 13 - 0
testing/regress/ecl/key/sets.xml

@@ -126,3 +126,16 @@
 <Dataset name='Result 31'>
  <Row><Result_31>true</Result_31></Row>
 </Dataset>
+<Dataset name='Result 32'>
+ <Row><ok>true</ok></Row>
+ <Row><ok>false</ok></Row>
+ <Row><ok>false</ok></Row>
+ <Row><ok>false</ok></Row>
+ <Row><ok>false</ok></Row>
+ <Row><ok>true</ok></Row>
+ <Row><ok>false</ok></Row>
+ <Row><ok>false</ok></Row>
+ <Row><ok>false</ok></Row>
+ <Row><ok>false</ok></Row>
+ <Row><ok>false</ok></Row>
+</Dataset>

+ 4 - 0
testing/regress/ecl/sets.ecl

@@ -96,3 +96,7 @@ set2 = ALL;
 set2 != ALL;
 set2 = [];
 set2 != [];
+
+dsx := dataset(['a','b','d','X','È','Ö','â','\240','\241','\376','\377'], { string1 f1 });
+
+output (nofold(dsx), { ok := f1 in ['a','c','e','f','g','h','i','j','0','_','Ö','ü','¢'] });