This is an automated email from the ASF dual-hosted git repository.

dlych pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git


The following commit(s) were added to refs/heads/master by this push:
     new b5ab7d0  [NO ISSUE][COMP] Remove AQL leftover code
b5ab7d0 is described below

commit b5ab7d0f5ccb17832321183d417df099c3360695
Author: Dmitry Lychagin <[email protected]>
AuthorDate: Wed Nov 11 12:57:38 2020 -0800

    [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 <[email protected]>
    Tested-by: Jenkins <[email protected]>
    Reviewed-by: Dmitry Lychagin <[email protected]>
    Reviewed-by: Ali Alsuliman <[email protected]>
---
 .../asterix/app/function/DatasetRewriter.java      | 10 ++--
 .../asterix/lang/common/util/FunctionUtil.java     | 70 ++++++++--------------
 2 files changed, 32 insertions(+), 48 deletions(-)

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 @@ public class DatasetRewriter implements 
IFunctionToDataSourceRewriter, IResultTy
     @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 @@ public class DatasetRewriter implements 
IFunctionToDataSourceRewriter, IResultTy
         }
 
         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 @@ public class DatasetRewriter implements 
IFunctionToDataSourceRewriter, IResultTy
             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.exceptions.AlgebricksException;
 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 @@ public class FunctionUtil {
         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 @@ public class FunctionUtil {
                 && 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);
     }

Reply via email to