[NO ISSUE][COMP] Remove AQL leftover code
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- Remove special handling for AQL when reading
dataset() arguments
Change-Id: I7ec6435c9b5622ba75d7e27d326486b9511bbca0
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/8845
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Dmitry Lychagin <dmitry.lychagin@couchbase.com>
Reviewed-by: Ali Alsuliman <ali.al.solaiman@gmail.com>
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetRewriter.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetRewriter.java
index 3b65f96..c459547 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetRewriter.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetRewriter.java
@@ -59,6 +59,10 @@
@Override
public boolean rewrite(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
AbstractFunctionCallExpression f = UnnestToDataScanRule.getFunctionCall(opRef);
+ if (f == null) {
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, opRef.getValue().getSourceLocation(),
+ "");
+ }
UnnestOperator unnest = (UnnestOperator) opRef.getValue();
if (unnest.getPositionalVariable() != null) {
// TODO remove this after enabling the support of positional variables in data scan
@@ -67,8 +71,7 @@
}
MetadataProvider metadataProvider = (MetadataProvider) context.getMetadataProvider();
- Pair<DataverseName, String> datasetReference = FunctionUtil.parseDatasetFunctionArguments(f.getArguments(),
- metadataProvider.getDefaultDataverseName(), unnest.getSourceLocation());
+ Pair<DataverseName, String> datasetReference = FunctionUtil.parseDatasetFunctionArguments(f);
DataverseName dataverseName = datasetReference.first;
String datasetName = datasetReference.second;
Dataset dataset = metadataProvider.findDataset(dataverseName, datasetName);
@@ -122,8 +125,7 @@
throws AlgebricksException {
AbstractFunctionCallExpression f = (AbstractFunctionCallExpression) expression;
MetadataProvider metadata = (MetadataProvider) mp;
- Pair<DataverseName, String> datasetInfo = FunctionUtil.parseDatasetFunctionArguments(f.getArguments(),
- metadata.getDefaultDataverseName(), f.getSourceLocation());
+ Pair<DataverseName, String> datasetInfo = FunctionUtil.parseDatasetFunctionArguments(f);
DataverseName dataverseName = datasetInfo.first;
String datasetName = datasetInfo.second;
Dataset dataset = metadata.findDataset(dataverseName, datasetName);
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/FunctionUtil.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/FunctionUtil.java
index 81ff92d..67d07f0 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/FunctionUtil.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/FunctionUtil.java
@@ -56,6 +56,7 @@
import org.apache.hyracks.algebricks.common.utils.Pair;
import org.apache.hyracks.algebricks.common.utils.Triple;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.api.exceptions.SourceLocation;
@@ -267,9 +268,7 @@
for (CallExpr functionCall : functionCalls) {
FunctionSignature signature = functionCall.getFunctionSignature();
if (isBuiltinDatasetFunction(signature)) {
- Pair<DataverseName, String> datasetReference = parseDatasetFunctionArguments(functionCall.getExprList(),
- metadataProvider.getDefaultDataverseName(), functionCall.getSourceLocation(),
- ExpressionUtils::getStringLiteral);
+ Pair<DataverseName, String> datasetReference = parseDatasetFunctionArguments(functionCall);
datasourceDependencies.add(new Triple<>(datasetReference.first, datasetReference.second, null));
} else if (BuiltinFunctions.getBuiltinFunctionInfo(signature.createFunctionIdentifier()) == null) {
functionDependencies.add(new Triple<>(signature.getDataverseName(), signature.getName(),
@@ -303,51 +302,34 @@
&& Objects.equals(FN_DATASET_NAME, fs.getName());
}
- public static Pair<DataverseName, String> parseDatasetFunctionArguments(
- List<Mutable<ILogicalExpression>> datasetFnArgs, DataverseName defaultDataverseName,
- SourceLocation sourceLoc) throws CompilationException {
- return parseDatasetFunctionArguments(datasetFnArgs, defaultDataverseName, sourceLoc,
+ public static Pair<DataverseName, String> parseDatasetFunctionArguments(CallExpr datasetFn)
+ throws CompilationException {
+ return parseDatasetFunctionArguments(datasetFn.getExprList(), datasetFn.getSourceLocation(),
+ ExpressionUtils::getStringLiteral);
+ }
+
+ public static Pair<DataverseName, String> parseDatasetFunctionArguments(AbstractFunctionCallExpression datasetFn)
+ throws CompilationException {
+ return parseDatasetFunctionArguments(datasetFn.getArguments(), datasetFn.getSourceLocation(),
FunctionUtil::getStringConstant);
}
- public static <T> Pair<DataverseName, String> parseDatasetFunctionArguments(List<T> datasetFnArgs,
- DataverseName defaultDataverseName, SourceLocation sourceLoc,
- java.util.function.Function<T, String> argExtractFunction) throws CompilationException {
- DataverseName dataverseName;
- String datasetName;
- switch (datasetFnArgs.size()) {
- case 1: // AQL BACK-COMPAT case
- String datasetArgBackCompat = argExtractFunction.apply(datasetFnArgs.get(0));
- if (datasetArgBackCompat == null) {
- throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
- "Invalid argument to dataset()");
- }
- int pos = datasetArgBackCompat.indexOf('.');
- if (pos > 0 && pos < datasetArgBackCompat.length() - 1) {
- dataverseName = DataverseName.createSinglePartName(datasetArgBackCompat.substring(0, pos)); // AQL BACK-COMPAT
- datasetName = datasetArgBackCompat.substring(pos + 1);
- } else {
- dataverseName = defaultDataverseName;
- datasetName = datasetArgBackCompat;
- }
- break;
- case 2:
- String dataverseNameArg = argExtractFunction.apply(datasetFnArgs.get(0));
- if (dataverseNameArg == null) {
- throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
- "Invalid argument to dataset()");
- }
- dataverseName = DataverseName.createFromCanonicalForm(dataverseNameArg);
+ private static <T> Pair<DataverseName, String> parseDatasetFunctionArguments(List<T> datasetFnArgs,
+ SourceLocation sourceLoc, java.util.function.Function<T, String> argExtractFunction)
+ throws CompilationException {
+ if (datasetFnArgs.size() != 2) {
+ throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
+ "Invalid number of arguments to dataset()");
+ }
+ String dataverseNameArg = argExtractFunction.apply(datasetFnArgs.get(0));
+ if (dataverseNameArg == null) {
+ throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, "Invalid argument to dataset()");
+ }
+ DataverseName dataverseName = DataverseName.createFromCanonicalForm(dataverseNameArg);
- datasetName = argExtractFunction.apply(datasetFnArgs.get(1));
- if (datasetName == null) {
- throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
- "Invalid argument to dataset()");
- }
- break;
- default:
- throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
- "Invalid number of arguments to dataset()");
+ String datasetName = argExtractFunction.apply(datasetFnArgs.get(1));
+ if (datasetName == null) {
+ throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, "Invalid argument to dataset()");
}
return new Pair<>(dataverseName, datasetName);
}