Browse Source

Merge pull request #2021 from ghalliday/failerror

Allow ERROR(ds, FAIL...) as well as FAIL(ds, FAIL...)

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 13 years ago
parent
commit
910c8e8fc0
2 changed files with 14 additions and 1 deletions
  1. 13 0
      ecl/hql/hqlgram.y
  2. 1 1
      ecl/hql/hqlgram2.cpp

+ 13 - 0
ecl/hql/hqlgram.y

@@ -8388,6 +8388,19 @@ simpleDataSet
                             $$.setExpr(createDataset(no_fail, LINK(ds->queryRecord()), $4.getExpr()));
                             $$.setPosition($1);
                         }
+    | TOK_ERROR '(' recordDef failDatasetParam ')'
+                        {
+                            //Actually allow a sequence of arbitrary actions....
+                            $$.setExpr(createDataset(no_fail, $3.getExpr(), $4.getExpr()));
+                            $$.setPosition($1);
+                        }
+    | TOK_ERROR '(' dataSet failDatasetParam ')'
+                        {
+                            OwnedHqlExpr ds = $3.getExpr();
+                            //Actually allow a sequence of arbitrary actions....
+                            $$.setExpr(createDataset(no_fail, LINK(ds->queryRecord()), $4.getExpr()));
+                            $$.setPosition($1);
+                        }
     | SKIP '(' recordDef ')'
                         {
                             if (!parser->curTransform)

+ 1 - 1
ecl/hql/hqlgram2.cpp

@@ -10293,7 +10293,7 @@ void HqlGram::simplifyExpected(int *expected)
                        GROUP, GROUPED, KEYED, UNGROUP, JOIN, PULL, ROLLUP, ITERATE, PROJECT, NORMALIZE, PIPE, DENORMALIZE, CASE, MAP, 
                        HTTPCALL, SOAPCALL, LIMIT, PARSE, FAIL, MERGE, PRELOAD, ROW, TOPN, ALIAS, LOCAL, NOFOLD, NOHOIST, NOTHOR, IF, GLOBAL, __COMMON__, __COMPOUND__, TOK_ASSERT, _EMPTY_,
                        COMBINE, ROWS, REGROUP, XMLPROJECT, SKIP, LOOP, CLUSTER, NOLOCAL, REMOTE, PROCESS, ALLNODES, THISNODE, GRAPH, MERGEJOIN, STEPPED, NONEMPTY, HAVING,
-                       TOK_CATCH, '@', SECTION, WHEN, IFF, COGROUP, HINT, INDEX, PARTITION, AGGREGATE, SHUFFLE, 0);
+                       TOK_CATCH, '@', SECTION, WHEN, IFF, COGROUP, HINT, INDEX, PARTITION, AGGREGATE, SHUFFLE, TOK_ERROR, 0);
     simplify(expected, EXP, ABS, SIN, COS, TAN, SINH, COSH, TANH, ACOS, ASIN, ATAN, ATAN2, 
                        COUNT, CHOOSE, MAP, CASE, IF, HASH, HASH32, HASH64, HASHMD5, CRC, LN, TOK_LOG, POWER, RANDOM, ROUND, ROUNDUP, SQRT, 
                        TRUNCATE, LENGTH, TRIM, INTFORMAT, REALFORMAT, ASSTRING, TRANSFER, MAX, MIN, EVALUATE, SUM,