Bläddra i källkod

Merge pull request #2501 from ghalliday/packedrecord

Fix problem with inline dataset and packed records

Reviewed-By: Renato Golin <rengolin@hpccsystems.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 13 år sedan
förälder
incheckning
716b8ff9cc
3 ändrade filer med 30 tillägg och 2 borttagningar
  1. 0 2
      ecl/hql/hqlgram.y
  2. 2 0
      ecl/hqlcpp/hqlttcpp.cpp
  3. 28 0
      ecl/regress/packed3.ecl

+ 0 - 2
ecl/hql/hqlgram.y

@@ -3976,8 +3976,6 @@ endrecord
                             record->Link();     // link should be in startrecord, but can only link after closeExpr()
                             parser->popSelfScope();
                             OwnedHqlExpr newRecord = record->closeExpr();
-                            if (newRecord->hasProperty(packedAtom))
-                                newRecord.setown(getPackedRecord(newRecord));
                             $$.setExpr(newRecord.getClear());
                             parser->popLocale();
                             $$.setPosition($1);

+ 2 - 0
ecl/hqlcpp/hqlttcpp.cpp

@@ -11095,6 +11095,8 @@ IHqlExpression * HqlTreeNormalizer::createTransformedBody(IHqlExpression * expr)
     case no_record:
         {
             OwnedHqlExpr transformed = completeTransform(expr);
+            if (transformed->hasProperty(packedAtom))
+                transformed.setown(getPackedRecord(transformed));
 
             if (options.ensureRecordsHaveSymbols)
             {

+ 28 - 0
ecl/regress/packed3.ecl

@@ -0,0 +1,28 @@
+/*##############################################################################
+
+    Copyright (C) 2011 HPCC Systems.
+
+    All rights reserved. This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU Affero General Public License as
+    published by the Free Software Foundation, either version 3 of the
+    License, or (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU Affero General Public License for more details.
+
+    You should have received a copy of the GNU Affero General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+############################################################################## */
+
+rec := RECORD,packed
+  STRING name;
+  unsigned1 flag;
+  real value;
+END;
+
+
+ds := DATASET([{'Gavin',1,100.0},{'James',2,98.6}], rec);
+
+output(ds);