|
@@ -2352,17 +2352,17 @@ actionStmt
|
|
|
}
|
|
|
| BUILD '(' startTopFilter ',' ',' thorFilenameOrList optBuildFlags ')' endTopFilter
|
|
|
{
|
|
|
- $$.setExpr(parser->processIndexBuild($3, NULL, NULL, $6, $7), $1);
|
|
|
+ $$.setExpr(parser->processIndexBuild($1, $3, NULL, NULL, $6, $7), $1);
|
|
|
parser->processUpdateAttr($$);
|
|
|
}
|
|
|
| BUILD '(' startTopFilter ',' recordDef ',' thorFilenameOrList optBuildFlags ')' endTopFilter
|
|
|
{
|
|
|
- $$.setExpr(parser->processIndexBuild($3, &$5, NULL, $7, $8), $1);
|
|
|
+ $$.setExpr(parser->processIndexBuild($1, $3, &$5, NULL, $7, $8), $1);
|
|
|
parser->processUpdateAttr($$);
|
|
|
}
|
|
|
| BUILD '(' startTopFilter ',' recordDef ',' nullRecordDef ',' thorFilenameOrList optBuildFlags ')' endTopFilter
|
|
|
{
|
|
|
- $$.setExpr(parser->processIndexBuild($3, &$5, &$7, $9, $10), $1);
|
|
|
+ $$.setExpr(parser->processIndexBuild($1, $3, &$5, &$7, $9, $10), $1);
|
|
|
parser->processUpdateAttr($$);
|
|
|
}
|
|
|
| BUILD '(' startTopFilter optBuildFlags ')' endTopFilter
|
|
@@ -2697,7 +2697,10 @@ actionStmt
|
|
|
if (!recordTypesMatch($3.queryExpr(), $5.queryExpr()))
|
|
|
parser->reportError(ERR_TYPEMISMATCH_RECORD, $4, "Indexes must have the same structure");
|
|
|
parser->normalizeExpression($7, type_string, false);
|
|
|
- $$.setExpr(createValueFromCommaList(no_keydiff, makeVoidType(), createComma($3.getExpr(), $5.getExpr(), $7.getExpr(), $8.getExpr())));
|
|
|
+
|
|
|
+ OwnedHqlExpr options = createComma($3.getExpr(), $5.getExpr(), $7.getExpr(), $8.getExpr());
|
|
|
+ parser->saveDiskAccessInformation($1, options);
|
|
|
+ $$.setExpr(createValueFromCommaList(no_keydiff, makeVoidType(), options.getClear()));
|
|
|
$$.setPosition($1);
|
|
|
}
|
|
|
| KEYPATCH '(' dataSet ',' expression ',' expression keyDiffFlags ')'
|
|
@@ -2706,7 +2709,10 @@ actionStmt
|
|
|
parser->reportError(ERR_EXPECTED_INDEX,$3,"Expected an index");
|
|
|
parser->normalizeExpression($5, type_string, false);
|
|
|
parser->normalizeExpression($7, type_string, false);
|
|
|
- $$.setExpr(createValueFromCommaList(no_keypatch, makeVoidType(), createComma($3.getExpr(), $5.getExpr(), $7.getExpr(), $8.getExpr())));
|
|
|
+ OwnedHqlExpr options = createComma($3.getExpr(), $5.getExpr(), $7.getExpr(), $8.getExpr());
|
|
|
+
|
|
|
+ parser->saveDiskAccessInformation($1, options);
|
|
|
+ $$.setExpr(createValueFromCommaList(no_keypatch, makeVoidType(), options.getClear()));
|
|
|
$$.setPosition($1);
|
|
|
}
|
|
|
| EVALUATE '(' expression ')'
|
|
@@ -8608,8 +8614,9 @@ simpleDataSet
|
|
|
counter = createAttribute(_countProject_Atom, counter);
|
|
|
|
|
|
//MORE: This should require local otherwise it needs to do a full join type thing.
|
|
|
- IHqlExpression * extra = createComma($5.getExpr(), $7.getExpr(), transform, createComma($12.getExpr(), counter, $14.getExpr()));
|
|
|
- $$.setExpr(createDataset(no_denormalize, ds, extra));
|
|
|
+ OwnedHqlExpr extra = createComma($5.getExpr(), $7.getExpr(), transform, createComma($12.getExpr(), counter, $14.getExpr()));
|
|
|
+ parser->saveDiskAccessInformation($1, extra);
|
|
|
+ $$.setExpr(createDataset(no_denormalize, ds, extra.getClear()));
|
|
|
$$.setPosition($1);
|
|
|
parser->checkJoinFlags($1, $$.queryExpr());
|
|
|
}
|
|
@@ -8618,8 +8625,9 @@ simpleDataSet
|
|
|
parser->normalizeExpression($7, type_boolean, false);
|
|
|
IHqlExpression * ds = $3.getExpr();
|
|
|
IHqlExpression * transform = $13.getExpr();
|
|
|
- IHqlExpression * extra = createComma($5.getExpr(), $7.getExpr(), transform, createComma($14.getExpr(), $16.getExpr(), $17.getExpr()));
|
|
|
- $$.setExpr(createDataset(no_denormalizegroup, ds, extra));
|
|
|
+ OwnedHqlExpr extra = createComma($5.getExpr(), $7.getExpr(), transform, createComma($14.getExpr(), $16.getExpr(), $17.getExpr()));
|
|
|
+ parser->saveDiskAccessInformation($1, extra);
|
|
|
+ $$.setExpr(createDataset(no_denormalizegroup, ds, extra.getClear()));
|
|
|
$$.setPosition($1);
|
|
|
$11.release();
|
|
|
parser->checkJoinFlags($1, $$.queryExpr());
|
|
@@ -8816,6 +8824,8 @@ simpleDataSet
|
|
|
|
|
|
bool hasFileposition = getBoolAttributeInList(extra, filepositionAtom, true);
|
|
|
record.setown(parser->checkIndexRecord(record, $5, extra));
|
|
|
+
|
|
|
+ parser->saveDiskAccessInformation($1, extra);
|
|
|
if (transform)
|
|
|
{
|
|
|
if (!recordTypesMatch(dataset, transform))
|
|
@@ -8841,6 +8851,7 @@ simpleDataSet
|
|
|
OwnedHqlExpr record = $3.getExpr();
|
|
|
OwnedHqlExpr extra = $4.getExpr();
|
|
|
parser->extractIndexRecordAndExtra(record, extra);
|
|
|
+ parser->saveDiskAccessInformation($1, extra);
|
|
|
IHqlExpression *index = parser->createIndexFromRecord(record, extra, $3);
|
|
|
parser->checkValidLookupFlag(index, index->queryChild(3), $1);
|
|
|
parser->checkIndexRecordTypes(index, $1);
|
|
@@ -8862,6 +8873,9 @@ simpleDataSet
|
|
|
else
|
|
|
args.replace(*newName.getLink(), 3);
|
|
|
$6.unwindCommaList(args);
|
|
|
+ OwnedHqlExpr options;
|
|
|
+ parser->saveDiskAccessInformation($1, options);
|
|
|
+ if (options) args.append(*options.getClear());
|
|
|
dataset.setown(createDataset(keyOp, args));
|
|
|
parser->checkValidLookupFlag(dataset, newName, $5);
|
|
|
}
|
|
@@ -8899,7 +8913,8 @@ simpleDataSet
|
|
|
filename.setown(createValue(no_assertconstant, filename->getType(), LINK(filename->queryChild(0))));
|
|
|
options.setown(createComma(options.getClear(), createAttribute(localUploadAtom)));
|
|
|
}
|
|
|
- IHqlExpression * dataset = createNewDataset(filename.getLink(), $6.getExpr(), mode.getClear(), NULL, NULL, parser->getGpgSignature(), options.getClear());
|
|
|
+ parser->saveDiskAccessInformation($1, options);
|
|
|
+ IHqlExpression * dataset = createNewDataset(filename.getLink(), $6.getExpr(), mode.getClear(), NULL, NULL, options.getClear());
|
|
|
parser->checkValidRecordMode(dataset, $4, $9);
|
|
|
parser->checkValidLookupFlag(dataset, filename, $3);
|
|
|
$$.setExpr(dataset);
|
|
@@ -8929,7 +8944,7 @@ simpleDataSet
|
|
|
default:
|
|
|
parser->reportError(ERR_EXPECTED, $1, "Expected STRING/UTF8/UNICODE");
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
OwnedHqlExpr empty = createList(no_list, makeSetType(NULL), NULL);
|
|
|
OwnedHqlExpr quoted = createExprAttribute(quoteAtom, LINK(empty));
|
|
|
OwnedHqlExpr separator = createExprAttribute(separatorAtom, LINK(empty));
|
|
@@ -8943,7 +8958,8 @@ simpleDataSet
|
|
|
filename.setown(createValue(no_assertconstant, filename->getType(), LINK(filename->queryChild(0))));
|
|
|
options.setown(createComma(options.getClear(), createAttribute(localUploadAtom)));
|
|
|
}
|
|
|
- IHqlExpression * dataset = createNewDataset(filename.getLink(), record.getClear(), mode.getClear(), NULL, NULL, parser->getGpgSignature(), options.getClear());
|
|
|
+ parser->saveDiskAccessInformation($1, options);
|
|
|
+ IHqlExpression * dataset = createNewDataset(filename.getLink(), record.getClear(), mode.getClear(), NULL, NULL, options.getClear());
|
|
|
parser->checkValidRecordMode(dataset, $4, $9);
|
|
|
parser->checkValidLookupFlag(dataset, filename, $3);
|
|
|
$$.setExpr(dataset, $1);
|
|
@@ -8957,8 +8973,10 @@ simpleDataSet
|
|
|
IHqlExpression * origin = $3.getExpr();
|
|
|
OwnedHqlExpr filename = $5.getExpr();
|
|
|
IHqlExpression * mode = $7.getExpr();
|
|
|
- IHqlExpression * attrs = createComma(createAttribute(_origin_Atom, origin), $8.getExpr());
|
|
|
- IHqlExpression * dataset = createNewDataset(filename.getLink(), LINK(origin->queryRecord()), mode, NULL, NULL, parser->getGpgSignature(), attrs);
|
|
|
+ OwnedHqlExpr attrs = createComma(createAttribute(_origin_Atom, origin), $8.getExpr());
|
|
|
+ parser->saveDiskAccessInformation($1, attrs);
|
|
|
+
|
|
|
+ IHqlExpression * dataset = createNewDataset(filename.getLink(), LINK(origin->queryRecord()), mode, NULL, NULL, attrs.getClear());
|
|
|
|
|
|
parser->checkValidRecordMode(dataset, $3, $7);
|
|
|
parser->checkValidLookupFlag(dataset, filename, $3);
|
|
@@ -9059,7 +9077,7 @@ simpleDataSet
|
|
|
attrs.setown(createComma(attrs.getClear(), createAttribute(_disallowed_Atom)));
|
|
|
parser->normalizeExpression($3, type_string, false);
|
|
|
parser->checkValidPipeRecord($5, $5.queryExpr(), attrs, NULL);
|
|
|
- $$.setExpr(createNewDataset(createBlankString(), $5.getExpr(), createValue(no_pipe, makeNullType(), $3.getExpr()), NULL, NULL, NULL, LINK(attrs)));
|
|
|
+ $$.setExpr(createNewDataset(createBlankString(), $5.getExpr(), createValue(no_pipe, makeNullType(), $3.getExpr()), NULL, NULL, LINK(attrs)));
|
|
|
$$.setPosition($1);
|
|
|
}
|
|
|
| PIPE '(' startTopFilter ',' expression optPipeOptions endTopFilter ')'
|