[ASTERIXDB-3259][MTD] Include 'database' when resolving dataset access
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- replace calls to MetadataUtil.resolveDatabase with
actual database value for objects having database.
- make "dataset" function take database.
- make "feed-collect" function take database.
- include 'database' in AccessMethodJobGenParams (index-search()).
- modify FunctionRewriter implementations to accept database.
Change-Id: I45018318bdb97c1ca80465f55874e4969b58271c
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17850
Reviewed-by: Ali Alsuliman <ali.al.solaiman@gmail.com>
Reviewed-by: Murtadha Hubail <mhubail@apache.org>
Tested-by: Ali Alsuliman <ali.al.solaiman@gmail.com>
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/BTreeSearchPOperator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/BTreeSearchPOperator.java
index c7ef2e9..821be72 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/BTreeSearchPOperator.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/BTreeSearchPOperator.java
@@ -25,7 +25,6 @@
import org.apache.asterix.common.config.DatasetConfig;
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.metadata.dataset.DatasetFormatInfo;
import org.apache.asterix.metadata.declared.DataSourceId;
import org.apache.asterix.metadata.declared.DataSourceIndex;
@@ -127,9 +126,8 @@
int[] maxFilterFieldIndexes = getKeyIndexes(unnestMap.getMaxFilterVars(), inputSchemas);
MetadataProvider metadataProvider = (MetadataProvider) context.getMetadataProvider();
- String database = MetadataUtil.resolveDatabase(null, jobGenParams.getDataverseName());
- Dataset dataset =
- metadataProvider.findDataset(database, jobGenParams.getDataverseName(), jobGenParams.getDatasetName());
+ Dataset dataset = metadataProvider.findDataset(jobGenParams.getDatabaseName(), jobGenParams.getDataverseName(),
+ jobGenParams.getDatasetName());
IVariableTypeEnvironment typeEnv = context.getTypeEnvironment(op);
ITupleFilterFactory tupleFilterFactory = null;
long outputLimit = -1;
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/InvertedIndexPOperator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/InvertedIndexPOperator.java
index 2cd9257..2d5b57d 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/InvertedIndexPOperator.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/InvertedIndexPOperator.java
@@ -22,7 +22,6 @@
import org.apache.asterix.common.cluster.PartitioningProperties;
import org.apache.asterix.common.config.OptimizationConfUtil;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.metadata.MetadataManager;
import org.apache.asterix.metadata.declared.DataSourceId;
import org.apache.asterix.metadata.declared.MetadataProvider;
@@ -117,9 +116,8 @@
jobGenParams.readFromFuncArgs(unnestFuncExpr.getArguments());
MetadataProvider metadataProvider = (MetadataProvider) context.getMetadataProvider();
- String database = MetadataUtil.resolveDatabase(null, jobGenParams.getDataverseName());
- Dataset dataset =
- metadataProvider.findDataset(database, jobGenParams.getDataverseName(), jobGenParams.getDatasetName());
+ Dataset dataset = metadataProvider.findDataset(jobGenParams.getDatabaseName(), jobGenParams.getDataverseName(),
+ jobGenParams.getDatasetName());
int[] keyIndexes = getKeyIndexes(jobGenParams.getKeyVarList(), inputSchemas);
boolean propagateIndexFilter = unnestMapOp.propagateIndexFilter();
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/RTreeSearchPOperator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/RTreeSearchPOperator.java
index 25fffb4..30574c1 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/RTreeSearchPOperator.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/RTreeSearchPOperator.java
@@ -21,7 +21,6 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.metadata.declared.DataSourceId;
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.Dataset;
@@ -90,8 +89,8 @@
int[] maxFilterFieldIndexes = getKeyIndexes(unnestMap.getMaxFilterVars(), inputSchemas);
MetadataProvider mp = (MetadataProvider) context.getMetadataProvider();
- String database = MetadataUtil.resolveDatabase(null, jobGenParams.getDataverseName());
- Dataset dataset = mp.findDataset(database, jobGenParams.getDataverseName(), jobGenParams.getDatasetName());
+ Dataset dataset = mp.findDataset(jobGenParams.getDatabaseName(), jobGenParams.getDataverseName(),
+ jobGenParams.getDatasetName());
IVariableTypeEnvironment typeEnv = context.getTypeEnvironment(unnestMap);
List<LogicalVariable> outputVars = unnestMap.getVariables();
if (jobGenParams.getRetainInput()) {
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/AnalysisUtil.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/AnalysisUtil.java
index b6f79d9..bb428fa6 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/AnalysisUtil.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/AnalysisUtil.java
@@ -31,7 +31,6 @@
import org.apache.asterix.common.transactions.TxnId;
import org.apache.asterix.common.utils.JobUtils;
import org.apache.asterix.formats.nontagged.SerializerDeserializerProvider;
-import org.apache.asterix.metadata.declared.DataSourceId;
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.declared.ResultSetDataSink;
import org.apache.asterix.metadata.declared.ResultSetSinkId;
@@ -45,6 +44,7 @@
import org.apache.commons.lang3.mutable.MutableObject;
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.compiler.api.ICompiler;
import org.apache.hyracks.algebricks.compiler.api.ICompilerFactory;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
@@ -58,7 +58,6 @@
import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
import org.apache.hyracks.algebricks.core.algebra.expressions.VariableReferenceExpression;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractDataSourceOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.DistributeResultOperator;
import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
@@ -161,17 +160,14 @@
return false;
}
- public static Pair<DataverseName, String> getDatasetInfo(AbstractDataSourceOperator op) {
- DataSourceId srcId = (DataSourceId) op.getDataSource().getId();
- return new Pair<>(srcId.getDataverseName(), srcId.getDatasourceName());
- }
-
- public static Pair<DataverseName, String> getExternalDatasetInfo(UnnestMapOperator op) throws AlgebricksException {
+ public static Triple<DataverseName, String, String> getExternalDatasetInfo(UnnestMapOperator op)
+ throws AlgebricksException {
AbstractFunctionCallExpression unnestExpr = (AbstractFunctionCallExpression) op.getExpressionRef().getValue();
+ String databaseName = AccessMethodUtils.getStringConstant(unnestExpr.getArguments().get(0));
DataverseName dataverseName = DataverseName
- .createFromCanonicalForm(AccessMethodUtils.getStringConstant(unnestExpr.getArguments().get(0)));
- String datasetName = AccessMethodUtils.getStringConstant(unnestExpr.getArguments().get(1));
- return new Pair<>(dataverseName, datasetName);
+ .createFromCanonicalForm(AccessMethodUtils.getStringConstant(unnestExpr.getArguments().get(1)));
+ String datasetName = AccessMethodUtils.getStringConstant(unnestExpr.getArguments().get(2));
+ return new Triple<>(dataverseName, datasetName, databaseName);
}
/**
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java
index 58f85ee..2760eee 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java
@@ -35,7 +35,6 @@
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.metadata.DataverseName;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.lang.common.util.FunctionUtil;
import org.apache.asterix.metadata.declared.DataSource;
import org.apache.asterix.metadata.declared.DataSourceIndex;
@@ -169,7 +168,7 @@
DataSource datasetSource = (DataSource) primaryIndexModificationOp.getDataSource();
MetadataProvider mp = (MetadataProvider) context.getMetadataProvider();
DataverseName dataverseName = datasetSource.getId().getDataverseName();
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
+ String database = datasetSource.getId().getDatabaseName();
String datasetName = datasetSource.getId().getDatasourceName();
Dataset dataset = mp.findDataset(database, dataverseName, datasetName);
if (dataset == null) {
@@ -182,8 +181,8 @@
// Create operators for secondary index insert / delete.
String itemTypeName = dataset.getItemTypeName();
- String itemTypeDatabase = MetadataUtil.resolveDatabase(null, dataset.getItemTypeDataverseName());
- IAType itemType = mp.findType(itemTypeDatabase, dataset.getItemTypeDataverseName(), itemTypeName);
+ IAType itemType =
+ mp.findType(dataset.getItemTypeDatabaseName(), dataset.getItemTypeDataverseName(), itemTypeName);
if (itemType.getTypeTag() != ATypeTag.OBJECT) {
throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, "Only record types can be indexed.");
}
@@ -191,9 +190,8 @@
// meta type
ARecordType metaType = null;
if (dataset.hasMetaPart()) {
- String metaItemTypeDatabase = MetadataUtil.resolveDatabase(null, dataset.getMetaItemTypeDataverseName());
- metaType = (ARecordType) mp.findType(metaItemTypeDatabase, dataset.getMetaItemTypeDataverseName(),
- dataset.getMetaItemTypeName());
+ metaType = (ARecordType) mp.findType(dataset.getMetaItemTypeDatabaseName(),
+ dataset.getMetaItemTypeDataverseName(), dataset.getMetaItemTypeName());
}
recType = (ARecordType) mp.findTypeForDatasetWithoutType(recType, metaType, dataset);
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/PushFieldAccessRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/PushFieldAccessRule.java
index 8b525c3..b543b5f 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/PushFieldAccessRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/PushFieldAccessRule.java
@@ -28,7 +28,6 @@
import org.apache.asterix.common.config.DatasetConfig.DatasetType;
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.metadata.declared.DataSource;
import org.apache.asterix.metadata.declared.DataSourceId;
import org.apache.asterix.metadata.declared.MetadataProvider;
@@ -129,8 +128,7 @@
}
MetadataProvider mp = (MetadataProvider) context.getMetadataProvider();
DataSourceId asid = ((IDataSource<DataSourceId>) scan.getDataSource()).getId();
- String database = MetadataUtil.resolveDatabase(null, asid.getDataverseName());
- Dataset dataset = mp.findDataset(database, asid.getDataverseName(), asid.getDatasourceName());
+ Dataset dataset = mp.findDataset(asid.getDatabaseName(), asid.getDataverseName(), asid.getDatasourceName());
if (dataset == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, scan.getSourceLocation(),
asid.getDatasourceName(), asid.getDataverseName());
@@ -141,8 +139,7 @@
final Integer pos = ConstantExpressionUtil.getIntConstant(accessFun.getArguments().get(1).getValue());
if (pos != null) {
String tName = dataset.getItemTypeName();
- String tDatabase = MetadataUtil.resolveDatabase(null, dataset.getItemTypeDataverseName());
- IAType t = mp.findType(tDatabase, dataset.getItemTypeDataverseName(), tName);
+ IAType t = mp.findType(dataset.getItemTypeDatabaseName(), dataset.getItemTypeDataverseName(), tName);
if (t.getTypeTag() != ATypeTag.OBJECT) {
return false;
}
@@ -320,8 +317,7 @@
}
DataSourceId asid = dataSource.getId();
MetadataProvider mp = (MetadataProvider) context.getMetadataProvider();
- String database = MetadataUtil.resolveDatabase(null, asid.getDataverseName());
- Dataset dataset = mp.findDataset(database, asid.getDataverseName(), asid.getDatasourceName());
+ Dataset dataset = mp.findDataset(asid.getDatabaseName(), asid.getDataverseName(), asid.getDatasourceName());
if (dataset == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, scan.getSourceLocation(),
asid.getDatasourceName(), asid.getDataverseName());
@@ -337,8 +333,8 @@
// data part
String dataTypeName = dataset.getItemTypeName();
- String dataTypeDatabase = MetadataUtil.resolveDatabase(null, dataset.getItemTypeDataverseName());
- IAType dataType = mp.findType(dataTypeDatabase, dataset.getItemTypeDataverseName(), dataTypeName);
+ IAType dataType =
+ mp.findType(dataset.getItemTypeDatabaseName(), dataset.getItemTypeDataverseName(), dataTypeName);
if (dataType.getTypeTag() != ATypeTag.OBJECT) {
return false;
}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/PushValueAccessAndFilterDownRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/PushValueAccessAndFilterDownRule.java
index 4426943..3cc19d3 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/PushValueAccessAndFilterDownRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/PushValueAccessAndFilterDownRule.java
@@ -21,7 +21,6 @@
import java.util.Set;
import org.apache.asterix.common.metadata.DataverseName;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.metadata.declared.DataSource;
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.Dataset;
@@ -145,7 +144,7 @@
throws AlgebricksException {
DataverseName dataverse = dataSource.getId().getDataverseName();
String datasetName = dataSource.getId().getDatasourceName();
- String database = MetadataUtil.resolveDatabase(null, dataverse);
+ String database = dataSource.getId().getDatabaseName();
Dataset dataset = metadataProvider.findDataset(database, dataverse, datasetName);
return dataset != null && (DatasetUtil.isFieldAccessPushdownSupported(dataset)
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixPhysicalOperatorsRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixPhysicalOperatorsRule.java
index 0949c44..e033da4 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixPhysicalOperatorsRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/SetAsterixPhysicalOperatorsRule.java
@@ -30,7 +30,6 @@
import org.apache.asterix.common.config.DatasetConfig.IndexType;
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.metadata.declared.DataSourceId;
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.Dataset;
@@ -260,7 +259,7 @@
AccessMethodJobGenParams jobGenParams = new AccessMethodJobGenParams();
jobGenParams.readFromFuncArgs(f.getArguments());
MetadataProvider mp = (MetadataProvider) context.getMetadataProvider();
- String database = MetadataUtil.resolveDatabase(null, jobGenParams.getDataverseName());
+ String database = jobGenParams.getDatabaseName();
DataSourceId dataSourceId =
new DataSourceId(database, jobGenParams.getDataverseName(), jobGenParams.getDatasetName());
Dataset dataset = mp.findDataset(database, jobGenParams.getDataverseName(), jobGenParams.getDatasetName());
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AbstractIntroduceAccessMethodRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AbstractIntroduceAccessMethodRule.java
index 87f2072..27bae51 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AbstractIntroduceAccessMethodRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AbstractIntroduceAccessMethodRule.java
@@ -35,6 +35,7 @@
import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.dataflow.data.common.ExpressionTypeComputer;
+import org.apache.asterix.metadata.declared.DataSourceId;
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.Dataset;
import org.apache.asterix.metadata.entities.Index;
@@ -46,7 +47,6 @@
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
import org.apache.asterix.om.types.hierachy.ATypeHierarchy;
-import org.apache.asterix.optimizer.base.AnalysisUtil;
import org.apache.asterix.optimizer.rules.am.OptimizableOperatorSubTree.DataSourceType;
import org.apache.asterix.optimizer.rules.util.FullTextUtil;
import org.apache.commons.lang3.mutable.Mutable;
@@ -1106,9 +1106,10 @@
if (dataSourceScanOp.getOperatorTag() != LogicalOperatorTag.DATASOURCESCAN) {
return null;
}
- Pair<DataverseName, String> datasetInfo =
- AnalysisUtil.getDatasetInfo((DataSourceScanOperator) dataSourceScanOp);
- String database = MetadataUtil.resolveDatabase(null, datasetInfo.first);
- return metadataProvider.getIndex(database, datasetInfo.first, datasetInfo.second, datasetInfo.second);
+ DataSourceId srcId = (DataSourceId) ((DataSourceScanOperator) dataSourceScanOp).getDataSource().getId();
+ String database = srcId.getDatabaseName();
+ DataverseName dataverseName = srcId.getDataverseName();
+ String datasourceName = srcId.getDatasourceName();
+ return metadataProvider.getIndex(database, dataverseName, datasourceName, datasourceName);
}
}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodJobGenParams.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodJobGenParams.java
index c4f1487..5bcc1f3 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodJobGenParams.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodJobGenParams.java
@@ -37,9 +37,20 @@
* and from a list of function arguments, typically of an unnest-map.
*/
public class AccessMethodJobGenParams {
- private static final int NUM_PARAMS = 6;
+
+ public static final int INDEX_NAME_POS = 0;
+ public static final int INDEX_TYPE_POS = 1;
+ public static final int DATABASE_NAME_POS = 2;
+ public static final int DATAVERSE_NAME_POS = 3;
+ public static final int DATASET_NAME_POS = 4;
+ public static final int RETAIN_INPUT_POS = 5;
+ public static final int REQ_BROADCAST_POS = 6;
+
+ private static final int NUM_PARAMS = 7;
+
protected String indexName;
protected IndexType indexType;
+ protected String databaseName;
protected DataverseName dataverseName;
protected String datasetName;
protected boolean retainInput;
@@ -50,10 +61,11 @@
// Enable creation of an empty object and fill members using setters
}
- public AccessMethodJobGenParams(String indexName, IndexType indexType, DataverseName dataverseName,
- String datasetName, boolean retainInput, boolean requiresBroadcast) {
+ public AccessMethodJobGenParams(String indexName, IndexType indexType, String databaseName,
+ DataverseName dataverseName, String datasetName, boolean retainInput, boolean requiresBroadcast) {
this.indexName = indexName;
this.indexType = indexType;
+ this.databaseName = databaseName;
this.dataverseName = dataverseName;
this.datasetName = datasetName;
this.retainInput = retainInput;
@@ -64,6 +76,7 @@
public void writeToFuncArgs(List<Mutable<ILogicalExpression>> funcArgs) {
funcArgs.add(new MutableObject<>(AccessMethodUtils.createStringConstant(indexName)));
funcArgs.add(new MutableObject<>(AccessMethodUtils.createInt32Constant(indexType.ordinal())));
+ funcArgs.add(new MutableObject<>(AccessMethodUtils.createStringConstant(databaseName)));
funcArgs.add(new MutableObject<>(AccessMethodUtils.createStringConstant(dataverseName.getCanonicalForm())));
funcArgs.add(new MutableObject<>(AccessMethodUtils.createStringConstant(datasetName)));
funcArgs.add(new MutableObject<>(AccessMethodUtils.createBooleanConstant(retainInput)));
@@ -71,12 +84,14 @@
}
public void readFromFuncArgs(List<Mutable<ILogicalExpression>> funcArgs) throws AlgebricksException {
- indexName = AccessMethodUtils.getStringConstant(funcArgs.get(0));
- indexType = IndexType.values()[AccessMethodUtils.getInt32Constant(funcArgs.get(1))];
- dataverseName = DataverseName.createFromCanonicalForm(AccessMethodUtils.getStringConstant(funcArgs.get(2)));
- datasetName = AccessMethodUtils.getStringConstant(funcArgs.get(3));
- retainInput = AccessMethodUtils.getBooleanConstant(funcArgs.get(4));
- requiresBroadcast = AccessMethodUtils.getBooleanConstant(funcArgs.get(5));
+ indexName = AccessMethodUtils.getStringConstant(funcArgs.get(INDEX_NAME_POS));
+ indexType = IndexType.values()[AccessMethodUtils.getInt32Constant(funcArgs.get(INDEX_TYPE_POS))];
+ databaseName = AccessMethodUtils.getStringConstant(funcArgs.get(DATABASE_NAME_POS));
+ dataverseName = DataverseName
+ .createFromCanonicalForm(AccessMethodUtils.getStringConstant(funcArgs.get(DATAVERSE_NAME_POS)));
+ datasetName = AccessMethodUtils.getStringConstant(funcArgs.get(DATASET_NAME_POS));
+ retainInput = AccessMethodUtils.getBooleanConstant(funcArgs.get(RETAIN_INPUT_POS));
+ requiresBroadcast = AccessMethodUtils.getBooleanConstant(funcArgs.get(REQ_BROADCAST_POS));
isPrimaryIndex = datasetName.equals(indexName);
}
@@ -88,6 +103,10 @@
return indexType;
}
+ public String getDatabaseName() {
+ return databaseName;
+ }
+
public DataverseName getDataverseName() {
return dataverseName;
}
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java
index 67c8423..867d6f1 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AccessMethodUtils.java
@@ -1106,7 +1106,7 @@
if (retainNull) {
if (retainInput) {
LeftOuterUnnestMapOperator secondaryIndexLeftOuterUnnestOp = new LeftOuterUnnestMapOperator(
- secondaryIndexUnnestVars, new MutableObject<ILogicalExpression>(secondaryIndexSearchFunc),
+ secondaryIndexUnnestVars, new MutableObject<>(secondaryIndexSearchFunc),
secondaryIndexOutputTypes, leftOuterMissingValue);
secondaryIndexLeftOuterUnnestOp.setSourceLocation(sourceLoc);
secondaryIndexLeftOuterUnnestOp
@@ -1123,8 +1123,7 @@
} else {
// If this is not a left-outer-join case, then we use UNNEST-MAP operator.
UnnestMapOperator secondaryIndexUnnestOp = new UnnestMapOperator(secondaryIndexUnnestVars,
- new MutableObject<ILogicalExpression>(secondaryIndexSearchFunc), secondaryIndexOutputTypes,
- retainInput);
+ new MutableObject<>(secondaryIndexSearchFunc), secondaryIndexOutputTypes, retainInput);
secondaryIndexUnnestOp.setSourceLocation(sourceLoc);
secondaryIndexUnnestOp.setGenerateCallBackProceedResultVar(generateInstantTrylockResultFromIndexSearch);
secondaryIndexUnnestOp.getInputs().add(new MutableObject<>(inputOp));
@@ -1725,8 +1724,9 @@
SourceLocation sourceLoc, IAlgebricksConstantValue leftOuterMissingValue) throws AlgebricksException {
// The job gen parameters are transferred to the actual job gen via the UnnestMapOperator's function arguments.
List<Mutable<ILogicalExpression>> primaryIndexFuncArgs = new ArrayList<>();
- BTreeJobGenParams jobGenParams = new BTreeJobGenParams(dataset.getDatasetName(), IndexType.BTREE,
- dataset.getDataverseName(), dataset.getDatasetName(), retainInput, requiresBroadcast);
+ BTreeJobGenParams jobGenParams =
+ new BTreeJobGenParams(dataset.getDatasetName(), IndexType.BTREE, dataset.getDatabaseName(),
+ dataset.getDataverseName(), dataset.getDatasetName(), retainInput, requiresBroadcast);
// Set low/high inclusive to true for a point lookup.
jobGenParams.setLowKeyInclusive(true);
jobGenParams.setHighKeyInclusive(true);
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
index ee3fee0..991624e 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java
@@ -629,8 +629,9 @@
assignKeyExprList, keyVarList, context, highKeyConstantAtRuntimeExpressions,
highKeyConstAtRuntimeExprVars);
- BTreeJobGenParams jobGenParams = new BTreeJobGenParams(chosenIndex.getIndexName(), IndexType.BTREE,
- dataset.getDataverseName(), dataset.getDatasetName(), retainInput, requiresBroadcast);
+ BTreeJobGenParams jobGenParams =
+ new BTreeJobGenParams(chosenIndex.getIndexName(), IndexType.BTREE, dataset.getDatabaseName(),
+ dataset.getDataverseName(), dataset.getDatasetName(), retainInput, requiresBroadcast);
jobGenParams
.setLowKeyInclusive(lowKeyInclusive[primaryIndexPostProccessingIsNeeded ? 0 : numSecondaryKeys - 1]);
jobGenParams
@@ -766,13 +767,12 @@
primaryIndexSearchFunc.setSourceLocation(dataSourceOp.getSourceLocation());
primaryIndexSearchFunc.setReturnsUniqueValues(true);
if (!leftOuterUnnestMapRequired) {
- unnestMapOp = new UnnestMapOperator(scanVariables,
- new MutableObject<ILogicalExpression>(primaryIndexSearchFunc), primaryIndexOutputTypes,
- retainInput);
+ unnestMapOp = new UnnestMapOperator(scanVariables, new MutableObject<>(primaryIndexSearchFunc),
+ primaryIndexOutputTypes, retainInput);
} else {
- unnestMapOp = new LeftOuterUnnestMapOperator(scanVariables,
- new MutableObject<ILogicalExpression>(primaryIndexSearchFunc), primaryIndexOutputTypes,
- leftOuterMissingValue);
+ unnestMapOp =
+ new LeftOuterUnnestMapOperator(scanVariables, new MutableObject<>(primaryIndexSearchFunc),
+ primaryIndexOutputTypes, leftOuterMissingValue);
}
} else {
if (!leftOuterUnnestMapRequired) {
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeJobGenParams.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeJobGenParams.java
index 7bcaaac..5b960b7 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeJobGenParams.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeJobGenParams.java
@@ -47,18 +47,18 @@
super();
}
- public BTreeJobGenParams(String indexName, IndexType indexType, DataverseName dataverseName, String datasetName,
- boolean retainInput, boolean requiresBroadcast) {
- super(indexName, indexType, dataverseName, datasetName, retainInput, requiresBroadcast);
+ public BTreeJobGenParams(String indexName, IndexType indexType, String databaseName, DataverseName dataverseName,
+ String datasetName, boolean retainInput, boolean requiresBroadcast) {
+ super(indexName, indexType, databaseName, dataverseName, datasetName, retainInput, requiresBroadcast);
}
public void setLowKeyVarList(List<LogicalVariable> keyVarList, int startIndex, int numKeys) {
- lowKeyVarList = new ArrayList<LogicalVariable>(numKeys);
+ lowKeyVarList = new ArrayList<>(numKeys);
setKeyVarList(keyVarList, lowKeyVarList, startIndex, numKeys);
}
public void setHighKeyVarList(List<LogicalVariable> keyVarList, int startIndex, int numKeys) {
- highKeyVarList = new ArrayList<LogicalVariable>(numKeys);
+ highKeyVarList = new ArrayList<>(numKeys);
setKeyVarList(keyVarList, highKeyVarList, startIndex, numKeys);
}
@@ -76,8 +76,8 @@
this.highKeyInclusive = highKeyInclusive;
}
- public void setIsEqCondition(boolean isEqConsition) {
- this.isEqCondition = isEqConsition;
+ public void setIsEqCondition(boolean isEqCondition) {
+ this.isEqCondition = isEqCondition;
}
public void writeToFuncArgs(List<Mutable<ILogicalExpression>> funcArgs) {
@@ -92,8 +92,8 @@
public void readFromFuncArgs(List<Mutable<ILogicalExpression>> funcArgs) throws AlgebricksException {
super.readFromFuncArgs(funcArgs);
int index = super.getNumParams();
- lowKeyVarList = new ArrayList<LogicalVariable>();
- highKeyVarList = new ArrayList<LogicalVariable>();
+ lowKeyVarList = new ArrayList<>();
+ highKeyVarList = new ArrayList<>();
int nextIndex = readVarList(funcArgs, index, lowKeyVarList);
nextIndex = readVarList(funcArgs, nextIndex, highKeyVarList);
nextIndex = readKeyInclusives(funcArgs, nextIndex);
@@ -114,7 +114,7 @@
private void writeBoolean(boolean val, List<Mutable<ILogicalExpression>> funcArgs) {
ILogicalExpression keyExpr = val ? ConstantExpression.TRUE : ConstantExpression.FALSE;
- funcArgs.add(new MutableObject<ILogicalExpression>(keyExpr));
+ funcArgs.add(new MutableObject<>(keyExpr));
}
public List<LogicalVariable> getLowKeyVarList() {
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceLSMComponentFilterRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceLSMComponentFilterRule.java
index 7d40269..9b7edc3 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceLSMComponentFilterRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceLSMComponentFilterRule.java
@@ -29,7 +29,6 @@
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.metadata.DataverseName;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.metadata.declared.DataSource;
import org.apache.asterix.metadata.declared.DatasetDataSource;
import org.apache.asterix.metadata.declared.MetadataProvider;
@@ -99,10 +98,10 @@
filterSourceIndicator = DatasetUtil.getFilterSourceIndicator(dataset);
filterFieldName = DatasetUtil.getFilterField(dataset);
IAType filterSourceType = filterSourceIndicator == null || filterSourceIndicator == 0
- ? mp.findType(MetadataUtil.resolveDatabase(null, dataset.getItemTypeDataverseName()),
- dataset.getItemTypeDataverseName(), dataset.getItemTypeName())
- : mp.findType(MetadataUtil.resolveDatabase(null, dataset.getMetaItemTypeDataverseName()),
- dataset.getMetaItemTypeDataverseName(), dataset.getMetaItemTypeName());
+ ? mp.findType(dataset.getItemTypeDatabaseName(), dataset.getItemTypeDataverseName(),
+ dataset.getItemTypeName())
+ : mp.findType(dataset.getMetaItemTypeDatabaseName(), dataset.getMetaItemTypeDataverseName(),
+ dataset.getMetaItemTypeName());
if (filterSourceType.getTypeTag() == ATypeTag.OBJECT) {
itemType = (ARecordType) filterSourceType;
@@ -435,20 +434,22 @@
FunctionIdentifier fid = f.getFunctionIdentifier();
DataverseName dataverseName;
String datasetName;
+ String database;
if (BuiltinFunctions.EXTERNAL_LOOKUP.equals(fid)) {
dataverseName = DataverseName
.createFromCanonicalForm(AccessMethodUtils.getStringConstant(f.getArguments().get(0)));
datasetName = AccessMethodUtils.getStringConstant(f.getArguments().get(1));
+ database = AccessMethodUtils.getStringConstant(f.getArguments().get(2));
} else if (fid.equals(BuiltinFunctions.INDEX_SEARCH)) {
AccessMethodJobGenParams jobGenParams = new AccessMethodJobGenParams();
jobGenParams.readFromFuncArgs(f.getArguments());
dataverseName = jobGenParams.dataverseName;
datasetName = jobGenParams.datasetName;
+ database = jobGenParams.databaseName;
} else {
throw new CompilationException(ErrorCode.COMPILATION_ERROR, f.getSourceLocation(),
"Unexpected function for Unnest Map: " + fid);
}
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
return ((MetadataProvider) context.getMetadataProvider()).findDataset(database, dataverseName,
datasetName);
}
@@ -589,13 +590,12 @@
"Could not find the corresponding index for an" + " index search.");
}
- String metaItemDatabase =
- MetadataUtil.resolveDatabase(null, dataset.getMetaItemTypeDataverseName());
- String recordItemDatabase = MetadataUtil.resolveDatabase(null, dataset.getItemTypeDataverseName());
- IAType metaItemType = ((MetadataProvider) context.getMetadataProvider()).findType(metaItemDatabase,
- dataset.getMetaItemTypeDataverseName(), dataset.getMetaItemTypeName());
+ IAType metaItemType = ((MetadataProvider) context.getMetadataProvider()).findType(
+ dataset.getMetaItemTypeDatabaseName(), dataset.getMetaItemTypeDataverseName(),
+ dataset.getMetaItemTypeName());
IAType recordItemType = ((MetadataProvider) context.getMetadataProvider()).findType(
- recordItemDatabase, dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
+ dataset.getItemTypeDatabaseName(), dataset.getItemTypeDataverseName(),
+ dataset.getItemTypeName());
ARecordType recordType = (ARecordType) recordItemType;
ARecordType metaRecType = (ARecordType) metaItemType;
int numSecondaryKeys = KeyFieldTypeUtil.getNumSecondaryKeys(index, recordType, metaRecType);
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroducePrimaryIndexForAggregationRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroducePrimaryIndexForAggregationRule.java
index 72dc688..a079c3f 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroducePrimaryIndexForAggregationRule.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroducePrimaryIndexForAggregationRule.java
@@ -18,6 +18,11 @@
*/
package org.apache.asterix.optimizer.rules.am;
+import static org.apache.asterix.optimizer.rules.am.AccessMethodJobGenParams.DATABASE_NAME_POS;
+import static org.apache.asterix.optimizer.rules.am.AccessMethodJobGenParams.DATASET_NAME_POS;
+import static org.apache.asterix.optimizer.rules.am.AccessMethodJobGenParams.DATAVERSE_NAME_POS;
+import static org.apache.asterix.optimizer.rules.am.AccessMethodJobGenParams.INDEX_NAME_POS;
+
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@@ -25,7 +30,6 @@
import org.apache.asterix.common.config.DatasetConfig;
import org.apache.asterix.common.metadata.DataverseName;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.metadata.declared.DataSource;
import org.apache.asterix.metadata.declared.DatasetDataSource;
import org.apache.asterix.metadata.declared.MetadataProvider;
@@ -165,11 +169,11 @@
if (functionCallExpression.getFunctionIdentifier() != BuiltinFunctions.INDEX_SEARCH) {
return null;
}
- String indexName = ConstantExpressionUtil.getStringArgument(functionCallExpression, 0);
- DataverseName dataverseName = DataverseName
- .createFromCanonicalForm(ConstantExpressionUtil.getStringArgument(functionCallExpression, 2));
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
- String datasetName = ConstantExpressionUtil.getStringArgument(functionCallExpression, 3);
+ String indexName = ConstantExpressionUtil.getStringArgument(functionCallExpression, INDEX_NAME_POS);
+ DataverseName dataverseName = DataverseName.createFromCanonicalForm(
+ ConstantExpressionUtil.getStringArgument(functionCallExpression, DATAVERSE_NAME_POS));
+ String database = ConstantExpressionUtil.getStringArgument(functionCallExpression, DATABASE_NAME_POS);
+ String datasetName = ConstantExpressionUtil.getStringArgument(functionCallExpression, DATASET_NAME_POS);
Index index =
((MetadataProvider) metadataProvider).getIndex(database, dataverseName, datasetName, indexName);
if (!index.isPrimaryIndex()) {
@@ -210,7 +214,7 @@
if (scanOperator.getOperatorTag() == LogicalOperatorTag.DATASOURCESCAN) {
retainInput = AccessMethodUtils.retainInputs(scanOperator.getVariables(), scanOperator, parents);
newBTreeParameters = new BTreeJobGenParams(primaryIndex.getIndexName(), DatasetConfig.IndexType.BTREE,
- dataset.getDataverseName(), dataset.getDatasetName(), retainInput,
+ dataset.getDatabaseName(), dataset.getDataverseName(), dataset.getDatasetName(), retainInput,
scanOperator.getInputs().get(0).getValue()
.getExecutionMode() == AbstractLogicalOperator.ExecutionMode.UNPARTITIONED);
List<LogicalVariable> empty = new ArrayList<>();
@@ -222,7 +226,7 @@
} else {
retainInput = originalBTreeParameters.getRetainInput();
newBTreeParameters = new BTreeJobGenParams(primaryIndex.getIndexName(), DatasetConfig.IndexType.BTREE,
- dataset.getDataverseName(), dataset.getDatasetName(), retainInput,
+ dataset.getDatabaseName(), dataset.getDataverseName(), dataset.getDatasetName(), retainInput,
originalBTreeParameters.getRequiresBroadcast());
newBTreeParameters.setLowKeyInclusive(originalBTreeParameters.isLowKeyInclusive());
newBTreeParameters.setHighKeyInclusive(originalBTreeParameters.isHighKeyInclusive());
@@ -286,9 +290,8 @@
if (originalBTreeParameters.isEqCondition()) {
return null;
}
- String database = MetadataUtil.resolveDatabase(null, originalBTreeParameters.getDataverseName());
- dataset = mp.findDataset(database, originalBTreeParameters.getDataverseName(),
- originalBTreeParameters.getDatasetName());
+ dataset = mp.findDataset(originalBTreeParameters.getDatabaseName(),
+ originalBTreeParameters.getDataverseName(), originalBTreeParameters.getDatasetName());
}
// #2. get all indexes and look for the primary one
List<Index> indexes =
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/InvertedIndexAccessMethod.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/InvertedIndexAccessMethod.java
index 031bc74..0a32716 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/InvertedIndexAccessMethod.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/InvertedIndexAccessMethod.java
@@ -417,9 +417,9 @@
// we made sure indexSubTree has datasource scan
DataSourceScanOperator dataSourceScan = (DataSourceScanOperator) indexSubTree.getDataSourceRef().getValue();
- InvertedIndexJobGenParams jobGenParams =
- new InvertedIndexJobGenParams(chosenIndex.getIndexName(), chosenIndex.getIndexType(),
- dataset.getDataverseName(), dataset.getDatasetName(), retainInput, requiresBroadcast);
+ InvertedIndexJobGenParams jobGenParams = new InvertedIndexJobGenParams(chosenIndex.getIndexName(),
+ chosenIndex.getIndexType(), chosenIndex.getDatabaseName(), dataset.getDataverseName(),
+ dataset.getDatasetName(), retainInput, requiresBroadcast);
// Add function-specific args such as search modifier, and possibly a similarity threshold.
addFunctionSpecificArgs(optFuncExpr, jobGenParams);
// Add the type of search key from the optFuncExpr.
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/InvertedIndexJobGenParams.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/InvertedIndexJobGenParams.java
index 550b130..532ca1c 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/InvertedIndexJobGenParams.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/InvertedIndexJobGenParams.java
@@ -58,9 +58,9 @@
public InvertedIndexJobGenParams() {
}
- public InvertedIndexJobGenParams(String indexName, IndexType indexType, DataverseName dataverseName,
- String datasetName, boolean retainInput, boolean requiresBroadcast) {
- super(indexName, indexType, dataverseName, datasetName, retainInput, requiresBroadcast);
+ public InvertedIndexJobGenParams(String indexName, IndexType indexType, String databaseName,
+ DataverseName dataverseName, String datasetName, boolean retainInput, boolean requiresBroadcast) {
+ super(indexName, indexType, databaseName, dataverseName, datasetName, retainInput, requiresBroadcast);
}
public void setSearchModifierType(SearchModifierType searchModifierType) {
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/OptimizableOperatorSubTree.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/OptimizableOperatorSubTree.java
index 1053961..a6c7a32 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/OptimizableOperatorSubTree.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/OptimizableOperatorSubTree.java
@@ -26,8 +26,8 @@
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.metadata.DataverseName;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.metadata.declared.DataSource;
+import org.apache.asterix.metadata.declared.DataSourceId;
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.Dataset;
import org.apache.asterix.om.functions.BuiltinFunctions;
@@ -38,6 +38,7 @@
import org.apache.commons.lang3.mutable.Mutable;
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.base.ILogicalOperator;
import org.apache.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
@@ -266,6 +267,7 @@
for (int i = 0; i < sourceOpRefs.size(); i++) {
List<LogicalVariable> vars;
+ String database;
DataverseName dataverseName;
String datasetName;
switch (dsTypes.get(i)) {
@@ -278,9 +280,10 @@
return false;
}
}
- Pair<DataverseName, String> datasetInfo = AnalysisUtil.getDatasetInfo(dataSourceScan);
- dataverseName = datasetInfo.first;
- datasetName = datasetInfo.second;
+ DataSourceId srcId = (DataSourceId) dataSourceScan.getDataSource().getId();
+ database = srcId.getDatabaseName();
+ dataverseName = srcId.getDataverseName();
+ datasetName = srcId.getDatasourceName();
vars = dataSourceScan.getScanVariables();
break;
case PRIMARY_INDEX_LOOKUP:
@@ -292,13 +295,16 @@
jobGenParams.readFromFuncArgs(f.getArguments());
datasetName = jobGenParams.getDatasetName();
dataverseName = jobGenParams.getDataverseName();
+ database = jobGenParams.getDatabaseName();
vars = unnestMapOp.getScanVariables();
break;
case EXTERNAL_SCAN:
UnnestMapOperator externalScan = (UnnestMapOperator) sourceOpRefs.get(i).getValue();
- datasetInfo = AnalysisUtil.getExternalDatasetInfo(externalScan);
+ Triple<DataverseName, String, String> datasetInfo =
+ AnalysisUtil.getExternalDatasetInfo(externalScan);
dataverseName = datasetInfo.first;
datasetName = datasetInfo.second;
+ database = datasetInfo.third;
vars = externalScan.getScanVariables();
break;
case COLLECTION_SCAN:
@@ -315,16 +321,14 @@
return false;
}
// Find the dataset corresponding to the datasource in the metadata.
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
Dataset ds = metadataProvider.findDataset(database, dataverseName, datasetName);
if (ds == null) {
throw new CompilationException(ErrorCode.NO_METADATA_FOR_DATASET, root.getSourceLocation(),
datasetName);
}
// Get the record type for that dataset.
- String itemTypeDatabase = MetadataUtil.resolveDatabase(null, ds.getItemTypeDataverseName());
- IAType itemType =
- metadataProvider.findType(itemTypeDatabase, ds.getItemTypeDataverseName(), ds.getItemTypeName());
+ IAType itemType = metadataProvider.findType(ds.getItemTypeDatabaseName(), ds.getItemTypeDataverseName(),
+ ds.getItemTypeName());
if (itemType.getTypeTag() != ATypeTag.OBJECT) {
if (i == 0) {
return false;
@@ -336,8 +340,7 @@
ARecordType rType = (ARecordType) itemType;
// Get the meta record type for that dataset.
- String metaItemTypeDatabase = MetadataUtil.resolveDatabase(null, ds.getMetaItemTypeDataverseName());
- ARecordType metaItemType = (ARecordType) metadataProvider.findType(metaItemTypeDatabase,
+ ARecordType metaItemType = (ARecordType) metadataProvider.findType(ds.getMetaItemTypeDatabaseName(),
ds.getMetaItemTypeDataverseName(), ds.getMetaItemTypeName());
rType = (ARecordType) metadataProvider.findTypeForDatasetWithoutType(rType, metaItemType, ds);
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/RTreeAccessMethod.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/RTreeAccessMethod.java
index 954a445..77d0d37 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/RTreeAccessMethod.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/RTreeAccessMethod.java
@@ -258,8 +258,9 @@
// We made sure that the indexSubTree has a datasource scan.
AbstractDataSourceOperator dataSourceOp =
(AbstractDataSourceOperator) indexSubTree.getDataSourceRef().getValue();
- RTreeJobGenParams jobGenParams = new RTreeJobGenParams(chosenIndex.getIndexName(), IndexType.RTREE,
- dataset.getDataverseName(), dataset.getDatasetName(), retainInput, requiresBroadcast);
+ RTreeJobGenParams jobGenParams =
+ new RTreeJobGenParams(chosenIndex.getIndexName(), IndexType.RTREE, chosenIndex.getDatabaseName(),
+ dataset.getDataverseName(), dataset.getDatasetName(), retainInput, requiresBroadcast);
// A spatial object is serialized in the constant of the func expr we are optimizing.
// The R-Tree expects as input an MBR represented with 1 field per dimension.
// Here we generate vars and funcs for extracting MBR fields from the constant into fields of a tuple
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/RTreeJobGenParams.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/RTreeJobGenParams.java
index 1e5983a..69a55d4 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/RTreeJobGenParams.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/RTreeJobGenParams.java
@@ -39,9 +39,9 @@
public RTreeJobGenParams() {
}
- public RTreeJobGenParams(String indexName, IndexType indexType, DataverseName dataverseName, String datasetName,
- boolean retainInput, boolean requiresBroadcast) {
- super(indexName, indexType, dataverseName, datasetName, retainInput, requiresBroadcast);
+ public RTreeJobGenParams(String indexName, IndexType indexType, String databaseName, DataverseName dataverseName,
+ String datasetName, boolean retainInput, boolean requiresBroadcast) {
+ super(indexName, indexType, databaseName, dataverseName, datasetName, retainInput, requiresBroadcast);
}
public void writeToFuncArgs(List<Mutable<ILogicalExpression>> funcArgs) {
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/array/AbstractOperatorFromSubplanRewrite.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/array/AbstractOperatorFromSubplanRewrite.java
index d1aff94..38d6982 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/array/AbstractOperatorFromSubplanRewrite.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/array/AbstractOperatorFromSubplanRewrite.java
@@ -27,7 +27,7 @@
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.metadata.DataverseName;
-import org.apache.asterix.common.metadata.MetadataUtil;
+import org.apache.asterix.metadata.declared.DataSourceId;
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.om.base.AInt16;
import org.apache.asterix.om.base.AInt32;
@@ -35,7 +35,6 @@
import org.apache.asterix.om.base.AInt8;
import org.apache.asterix.om.constants.AsterixConstantValue;
import org.apache.asterix.om.functions.BuiltinFunctions;
-import org.apache.asterix.optimizer.base.AnalysisUtil;
import org.apache.commons.lang3.mutable.Mutable;
import org.apache.commons.lang3.mutable.MutableObject;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -79,10 +78,10 @@
boolean isApplicableForRewrite = false;
if (workingOp.getOperatorTag() == LogicalOperatorTag.DATASOURCESCAN) {
DataSourceScanOperator dataSourceScanOperator = (DataSourceScanOperator) workingOp;
- Pair<DataverseName, String> datasetInfo = AnalysisUtil.getDatasetInfo(dataSourceScanOperator);
- DataverseName dataverseName = datasetInfo.first;
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
- String datasetName = datasetInfo.second;
+ DataSourceId srcId = (DataSourceId) dataSourceScanOperator.getDataSource().getId();
+ DataverseName dataverseName = srcId.getDataverseName();
+ String database = srcId.getDatabaseName();
+ String datasetName = srcId.getDatasourceName();
if (metadataProvider.getDatasetIndexes(database, dataverseName, datasetName).stream()
.anyMatch(i -> i.getIndexType() == DatasetConfig.IndexType.ARRAY)) {
return true;
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java
index 9d38356..bdfa687 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/JoinEnum.java
@@ -32,7 +32,6 @@
import org.apache.asterix.common.annotations.SecondaryIndexSearchPreferenceAnnotation;
import org.apache.asterix.common.exceptions.AsterixException;
import org.apache.asterix.common.exceptions.ErrorCode;
-import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.metadata.declared.DataSource;
import org.apache.asterix.metadata.declared.DataSourceId;
import org.apache.asterix.metadata.declared.DatasetDataSource;
@@ -937,15 +936,13 @@
// we need to switch the datascource from the dataset source to the corresponding sample datasource.
// Little tricky how this is done!
protected SampleDataSource getSampleDataSource(DataSourceScanOperator scanOp) throws AlgebricksException {
- DataverseName dataverseName = stats.findDataverseName(scanOp);
DataSource ds = (DataSource) scanOp.getDataSource();
DataSourceId dsid = ds.getId();
MetadataProvider mdp = (MetadataProvider) this.optCtx.getMetadataProvider();
- Index index = mdp.findSampleIndex(dataverseName, dsid.getDatasourceName());
+ Index index = mdp.findSampleIndex(dsid.getDatabaseName(), dsid.getDataverseName(), dsid.getDatasourceName());
DatasetDataSource dds = (DatasetDataSource) ds;
- SampleDataSource sds = new SampleDataSource(dds.getDataset(), index.getIndexName(), ds.getItemType(),
- ds.getMetaItemType(), ds.getDomain());
- return sds;
+ return new SampleDataSource(dds.getDataset(), index.getIndexName(), ds.getItemType(), ds.getMetaItemType(),
+ ds.getDomain());
}
private ILogicalOperator findASelectOp(ILogicalOperator op) {
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
index d09783d..0c03376 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
@@ -23,7 +23,6 @@
import java.util.Arrays;
import java.util.List;
-import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.compiler.provider.IRuleSetFactory;
import org.apache.asterix.metadata.declared.DataSource;
import org.apache.asterix.metadata.declared.DataSourceId;
@@ -74,22 +73,12 @@
joinEnum = joinE;
}
- protected DataverseName findDataverseName(DataSourceScanOperator scanOp) {
- if (scanOp == null) {
- // this should rarely happen (IN lists may cause this)
- return null;
- }
- DataSourceId dsid = (DataSourceId) scanOp.getDataSource().getId();
- return dsid.getDataverseName();
- }
-
protected Index findSampleIndex(DataSourceScanOperator scanOp, IOptimizationContext context)
throws AlgebricksException {
- DataverseName dataverseName = findDataverseName(scanOp);
DataSource ds = (DataSource) scanOp.getDataSource();
DataSourceId dsid = ds.getId();
MetadataProvider mdp = (MetadataProvider) context.getMetadataProvider();
- return mdp.findSampleIndex(dataverseName, dsid.getDatasourceName());
+ return mdp.findSampleIndex(dsid.getDatabaseName(), dsid.getDataverseName(), dsid.getDatasourceName());
}
private double findJoinSelectivity(JoinProductivityAnnotation anno, AbstractFunctionCallExpression joinExpr)
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/visitor/PushdownOperatorVisitor.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/visitor/PushdownOperatorVisitor.java
index a6f9005..2a8e999 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/visitor/PushdownOperatorVisitor.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/visitor/PushdownOperatorVisitor.java
@@ -18,6 +18,11 @@
*/
package org.apache.asterix.optimizer.rules.pushdown.visitor;
+import static org.apache.asterix.optimizer.rules.am.AccessMethodJobGenParams.DATABASE_NAME_POS;
+import static org.apache.asterix.optimizer.rules.am.AccessMethodJobGenParams.DATASET_NAME_POS;
+import static org.apache.asterix.optimizer.rules.am.AccessMethodJobGenParams.DATAVERSE_NAME_POS;
+import static org.apache.asterix.optimizer.rules.am.AccessMethodJobGenParams.INDEX_NAME_POS;
+
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
@@ -26,7 +31,6 @@
import org.apache.asterix.common.config.DatasetConfig;
import org.apache.asterix.common.config.DatasetConfig.DatasetFormat;
import org.apache.asterix.common.metadata.DataverseName;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.metadata.declared.DataSource;
import org.apache.asterix.metadata.declared.DataSourceId;
import org.apache.asterix.metadata.declared.DatasetDataSource;
@@ -213,7 +217,7 @@
MetadataProvider mp = (MetadataProvider) context.getMetadataProvider();
DataverseName dataverse = dataSource.getId().getDataverseName();
String datasetName = dataSource.getId().getDatasourceName();
- String database = MetadataUtil.resolveDatabase(null, dataverse);
+ String database = dataSource.getId().getDatabaseName();
return mp.findDataset(database, dataverse, datasetName);
}
@@ -225,14 +229,14 @@
*/
private DataSource getDataSourceFromUnnestMapOperator(UnnestMapOperator unnest) throws AlgebricksException {
AbstractFunctionCallExpression funcExpr = (AbstractFunctionCallExpression) unnest.getExpressionRef().getValue();
- String dataverse = ConstantExpressionUtil.getStringArgument(funcExpr, 2);
- String dataset = ConstantExpressionUtil.getStringArgument(funcExpr, 3);
- if (!ConstantExpressionUtil.getStringArgument(funcExpr, 0).equals(dataset)) {
+ String dataverse = ConstantExpressionUtil.getStringArgument(funcExpr, DATAVERSE_NAME_POS);
+ String dataset = ConstantExpressionUtil.getStringArgument(funcExpr, DATASET_NAME_POS);
+ if (!ConstantExpressionUtil.getStringArgument(funcExpr, INDEX_NAME_POS).equals(dataset)) {
return null;
}
DataverseName dataverseName = DataverseName.createFromCanonicalForm(dataverse);
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
+ String database = ConstantExpressionUtil.getStringArgument(funcExpr, DATABASE_NAME_POS);
DataSourceId dsid = new DataSourceId(database, dataverseName, dataset);
MetadataProvider metadataProvider = (MetadataProvider) context.getMetadataProvider();
return metadataProvider.findDataSource(dsid);
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
index 88be2d8..f0dff9d 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
@@ -205,16 +205,14 @@
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, sourceLoc, stmt.getDatasetName(),
stmt.getDataverseName());
}
- String itemTypeDatabase = MetadataUtil.resolveDatabase(null, dataset.getItemTypeDataverseName());
- String metaItemTypeDatabase = MetadataUtil.resolveDatabase(null, dataset.getMetaItemTypeDataverseName());
- IAType itemType = metadataProvider.findType(itemTypeDatabase, dataset.getItemTypeDataverseName(),
- dataset.getItemTypeName());
- IAType metaItemType = metadataProvider.findType(metaItemTypeDatabase, dataset.getMetaItemTypeDataverseName(),
- dataset.getMetaItemTypeName());
+ IAType itemType = metadataProvider.findType(dataset.getItemTypeDatabaseName(),
+ dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
+ IAType metaItemType = metadataProvider.findType(dataset.getMetaItemTypeDatabaseName(),
+ dataset.getMetaItemTypeDataverseName(), dataset.getMetaItemTypeName());
itemType = metadataProvider.findTypeForDatasetWithoutType(itemType, metaItemType, dataset);
- DatasetDataSource targetDatasource =
- validateDatasetInfo(metadataProvider, stmt.getDataverseName(), stmt.getDatasetName(), sourceLoc);
+ DatasetDataSource targetDatasource = validateDatasetInfo(metadataProvider, database, stmt.getDataverseName(),
+ stmt.getDatasetName(), sourceLoc);
List<List<String>> partitionKeys = targetDatasource.getDataset().getPrimaryKeys();
if (dataset.hasMetaPart()) {
throw new CompilationException(ErrorCode.ILLEGAL_DML_OPERATION, sourceLoc, dataset.getDatasetName(),
@@ -417,8 +415,9 @@
ProjectOperator projectOperator = (ProjectOperator) topOp;
projectOperator.getVariables().set(0, seqVar);
- DatasetDataSource targetDatasource =
- validateDatasetInfo(metadataProvider, stmt.getDataverseName(), stmt.getDatasetName(), sourceLoc);
+ String databaseName = MetadataUtil.resolveDatabase(null, stmt.getDataverseName());
+ DatasetDataSource targetDatasource = validateDatasetInfo(metadataProvider, databaseName,
+ stmt.getDataverseName(), stmt.getDatasetName(), sourceLoc);
List<Integer> keySourceIndicator =
((InternalDatasetDetails) targetDatasource.getDataset().getDatasetDetails())
.getKeySourceIndicator();
@@ -722,9 +721,8 @@
return distResultOperator;
}
- protected DatasetDataSource validateDatasetInfo(MetadataProvider metadataProvider, DataverseName dataverseName,
- String datasetName, SourceLocation sourceLoc) throws AlgebricksException {
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
+ protected DatasetDataSource validateDatasetInfo(MetadataProvider metadataProvider, String database,
+ DataverseName dataverseName, String datasetName, SourceLocation sourceLoc) throws AlgebricksException {
Dataset dataset = metadataProvider.findDataset(database, dataverseName, datasetName);
if (dataset == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, sourceLoc, datasetName,
@@ -735,12 +733,10 @@
"Cannot write output to an external " + dataset());
}
DataSourceId sourceId = new DataSourceId(database, dataverseName, datasetName);
- String itemTypeDatabase = MetadataUtil.resolveDatabase(null, dataset.getItemTypeDataverseName());
- String metaItemTypeDatabase = MetadataUtil.resolveDatabase(null, dataset.getMetaItemTypeDataverseName());
- IAType itemType = metadataProvider.findType(itemTypeDatabase, dataset.getItemTypeDataverseName(),
- dataset.getItemTypeName());
- IAType metaItemType = metadataProvider.findType(metaItemTypeDatabase, dataset.getMetaItemTypeDataverseName(),
- dataset.getMetaItemTypeName());
+ IAType itemType = metadataProvider.findType(dataset.getItemTypeDatabaseName(),
+ dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
+ IAType metaItemType = metadataProvider.findType(dataset.getMetaItemTypeDatabaseName(),
+ dataset.getMetaItemTypeDataverseName(), dataset.getMetaItemTypeName());
itemType = metadataProvider.findTypeForDatasetWithoutType(itemType, metaItemType, dataset);
INodeDomain domain = metadataProvider.findNodeDomain(dataset.getNodeGroupName());
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TypeTranslator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TypeTranslator.java
index 0ae3882..c45013d 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TypeTranslator.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/TypeTranslator.java
@@ -147,9 +147,8 @@
// solve remaining top level references
for (TypeSignature typeSignature : incompleteTopLevelTypeReferences.keySet()) {
IAType t;
- String typeDatabase = MetadataUtil.resolveDatabase(null, typeSignature.getDataverseName());
- Datatype dt = MetadataManager.INSTANCE.getDatatype(mdTxnCtx, typeDatabase, typeSignature.getDataverseName(),
- typeSignature.getName());
+ Datatype dt = MetadataManager.INSTANCE.getDatatype(mdTxnCtx, typeSignature.getDatabaseName(),
+ typeSignature.getDataverseName(), typeSignature.getName());
if (dt == null) {
throw new CompilationException(ErrorCode.UNKNOWN_TYPE, sourceLoc, typeSignature.getName());
} else {
@@ -193,9 +192,8 @@
IAType t;
Datatype dt;
if (MetadataManager.INSTANCE != null) {
- String typeDatabase = MetadataUtil.resolveDatabase(null, typeSignature.getDataverseName());
- dt = MetadataManager.INSTANCE.getDatatype(mdTxnCtx, typeDatabase, typeSignature.getDataverseName(),
- typeSignature.getName());
+ dt = MetadataManager.INSTANCE.getDatatype(mdTxnCtx, typeSignature.getDatabaseName(),
+ typeSignature.getDataverseName(), typeSignature.getName());
if (dt == null) {
throw new CompilationException(ErrorCode.UNKNOWN_TYPE, sourceLoc, typeSignature.getName());
}
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ConnectorApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ConnectorApiServlet.java
index 0208db0..1163716 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ConnectorApiServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ConnectorApiServlet.java
@@ -110,7 +110,7 @@
return;
}
FileSplit[] fileSplits = metadataProvider.splitsForIndex(mdTxnCtx, dataset, datasetName);
- String itemTypeDatabase = MetadataUtil.resolveDatabase(null, dataset.getItemTypeDataverseName());
+ String itemTypeDatabase = dataset.getItemTypeDatabaseName();
ARecordType recordType = (ARecordType) metadataProvider.findType(itemTypeDatabase,
dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
List<List<String>> primaryKeys = dataset.getPrimaryKeys();
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/RebalanceApiServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/RebalanceApiServlet.java
index 318ff9b..bfc8208 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/RebalanceApiServlet.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/RebalanceApiServlet.java
@@ -272,7 +272,7 @@
IMetadataLockManager lockManager = appCtx.getMetadataLockManager();
lockManager.acquireDatasetExclusiveModificationLock(metadataProvider.getLocks(), database,
dataverseName, datasetName);
- RebalanceUtil.rebalance(dataverseName, datasetName, targetNodes, metadataProvider, hcc,
+ RebalanceUtil.rebalance(database, dataverseName, datasetName, targetNodes, metadataProvider, hcc,
NoOpDatasetRebalanceCallback.INSTANCE, force);
} finally {
activeNotificationHandler.resume(metadataProvider);
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetResourcesRewriter.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetResourcesRewriter.java
index aad691f..e2939f5 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetResourcesRewriter.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetResourcesRewriter.java
@@ -18,6 +18,10 @@
*/
package org.apache.asterix.app.function;
+import static org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier.VARARGS;
+
+import java.util.List;
+
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.functions.FunctionConstants;
@@ -25,7 +29,9 @@
import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.Dataset;
+import org.apache.commons.lang3.mutable.Mutable;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
@@ -33,8 +39,9 @@
public class DatasetResourcesRewriter extends FunctionRewriter {
- // Parameters are dataverse name, and dataset name
- public static final FunctionIdentifier DATASET_RESOURCES = FunctionConstants.newAsterix("dataset-resources", 2);
+ // Parameters are dataverse name, dataset name, and database name
+ public static final FunctionIdentifier DATASET_RESOURCES =
+ FunctionConstants.newAsterix("dataset-resources", VARARGS);
public static final DatasetResourcesRewriter INSTANCE = new DatasetResourcesRewriter(DATASET_RESOURCES);
private DatasetResourcesRewriter(FunctionIdentifier functionId) {
@@ -48,11 +55,21 @@
DataverseName dataverseName = getDataverseName(loc, f.getArguments(), 0);
String datasetName = getString(loc, f.getArguments(), 1);
MetadataProvider metadataProvider = (MetadataProvider) context.getMetadataProvider();
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
+ String database;
+ if (f.getArguments().size() > 2) {
+ database = getString(loc, f.getArguments(), 2);
+ } else {
+ database = MetadataUtil.databaseFor(dataverseName);
+ }
Dataset dataset = metadataProvider.findDataset(database, dataverseName, datasetName);
if (dataset == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, loc, datasetName, dataverseName);
}
return new DatasetResourcesDatasource(context.getComputationNodeDomain(), dataset.getDatasetId());
}
+
+ @Override
+ protected boolean invalidArgs(List<Mutable<ILogicalExpression>> args) {
+ return args.size() < 2;
+ }
}
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 bbdde88..28a38da 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
@@ -33,7 +33,6 @@
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.metadata.DatasetFullyQualifiedName;
import org.apache.asterix.common.metadata.DataverseName;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.lang.common.util.FunctionUtil;
import org.apache.asterix.metadata.declared.DataSource;
import org.apache.asterix.metadata.declared.DataSourceId;
@@ -148,9 +147,8 @@
AbstractFunctionCallExpression datasetFnCall = (AbstractFunctionCallExpression) expression;
MetadataProvider metadata = (MetadataProvider) mp;
Dataset dataset = fetchDataset(metadata, datasetFnCall);
- String itemTypeDatabase = MetadataUtil.resolveDatabase(null, dataset.getItemTypeDataverseName());
- IAType type =
- metadata.findType(itemTypeDatabase, dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
+ IAType type = metadata.findType(dataset.getItemTypeDatabaseName(), dataset.getItemTypeDataverseName(),
+ dataset.getItemTypeName());
if (type == null) {
throw new CompilationException(ErrorCode.COMPILATION_ERROR, datasetFnCall.getSourceLocation(),
"No type for " + dataset() + " " + dataset.getDatasetName());
@@ -162,7 +160,7 @@
throws CompilationException {
DatasetFullyQualifiedName datasetReference = FunctionUtil.parseDatasetFunctionArguments(datasetFnCall);
DataverseName dataverseName = datasetReference.getDataverseName();
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
+ String database = datasetReference.getDatabaseName();
String datasetName = datasetReference.getDatasetName();
Dataset dataset;
try {
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DumpIndexRewriter.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DumpIndexRewriter.java
index a08cccf..cc85b30 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DumpIndexRewriter.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DumpIndexRewriter.java
@@ -18,6 +18,10 @@
*/
package org.apache.asterix.app.function;
+import static org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier.VARARGS;
+
+import java.util.List;
+
import org.apache.asterix.common.cluster.PartitioningProperties;
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
@@ -29,8 +33,10 @@
import org.apache.asterix.metadata.entities.Index;
import org.apache.asterix.metadata.utils.ISecondaryIndexOperationsHelper;
import org.apache.asterix.metadata.utils.SecondaryIndexOperationsHelper;
+import org.apache.commons.lang3.mutable.Mutable;
import org.apache.hyracks.algebricks.common.constraints.AlgebricksAbsolutePartitionConstraint;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
@@ -39,7 +45,7 @@
public class DumpIndexRewriter extends FunctionRewriter {
- public static final FunctionIdentifier DUMP_INDEX = FunctionConstants.newAsterix("dump-index", 3);
+ public static final FunctionIdentifier DUMP_INDEX = FunctionConstants.newAsterix("dump-index", VARARGS);
public static final DumpIndexRewriter INSTANCE = new DumpIndexRewriter(DUMP_INDEX);
private DumpIndexRewriter(FunctionIdentifier functionId) {
@@ -51,9 +57,14 @@
throws AlgebricksException {
final SourceLocation loc = f.getSourceLocation();
DataverseName dataverseName = getDataverseName(loc, f.getArguments(), 0);
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
String datasetName = getString(loc, f.getArguments(), 1);
String indexName = getString(loc, f.getArguments(), 2);
+ String database;
+ if (f.getArguments().size() > 3) {
+ database = getString(loc, f.getArguments(), 3);
+ } else {
+ database = MetadataUtil.databaseFor(dataverseName);
+ }
MetadataProvider metadataProvider = (MetadataProvider) context.getMetadataProvider();
final Dataset dataset = metadataProvider.findDataset(database, dataverseName, datasetName);
if (dataset == null) {
@@ -79,4 +90,9 @@
secondaryIndexHelper.getSecondaryRecDesc(), secondaryIndexHelper.getSecondaryComparatorFactories(),
secondaryPartitionConstraint, partitioningProperties.getComputeStorageMap());
}
+
+ @Override
+ protected boolean invalidArgs(List<Mutable<ILogicalExpression>> args) {
+ return args.size() < 3;
+ }
}
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/FeedRewriter.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/FeedRewriter.java
index 66d8190..9b7a485 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/FeedRewriter.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/FeedRewriter.java
@@ -27,7 +27,6 @@
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.metadata.DataverseName;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.external.feed.watch.FeedActivityDetails;
import org.apache.asterix.external.util.ExternalDataUtils;
import org.apache.asterix.external.util.FeedUtils;
@@ -77,15 +76,15 @@
throw new CompilationException(ErrorCode.COMPILATION_ERROR, unnest.getSourceLocation(),
"No positional variables are allowed over feeds.");
}
+ String database = ConstantExpressionUtil.getStringArgument(f, 0);
DataverseName dataverseName =
- DataverseName.createFromCanonicalForm(ConstantExpressionUtil.getStringArgument(f, 0));
- String sourceFeedName = ConstantExpressionUtil.getStringArgument(f, 1);
- String getTargetFeed = ConstantExpressionUtil.getStringArgument(f, 2);
- String subscriptionLocation = ConstantExpressionUtil.getStringArgument(f, 3);
- String targetDataset = ConstantExpressionUtil.getStringArgument(f, 4);
- String outputType = ConstantExpressionUtil.getStringArgument(f, 5);
+ DataverseName.createFromCanonicalForm(ConstantExpressionUtil.getStringArgument(f, 1));
+ String sourceFeedName = ConstantExpressionUtil.getStringArgument(f, 2);
+ String getTargetFeed = ConstantExpressionUtil.getStringArgument(f, 3);
+ String subscriptionLocation = ConstantExpressionUtil.getStringArgument(f, 4);
+ String targetDataset = ConstantExpressionUtil.getStringArgument(f, 5);
+ String outputType = ConstantExpressionUtil.getStringArgument(f, 6);
MetadataProvider metadataProvider = (MetadataProvider) context.getMetadataProvider();
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
DataSourceId asid = new DataSourceId(database, dataverseName, getTargetFeed);
String policyName = (String) metadataProvider.getConfig().get(FeedActivityDetails.FEED_POLICY_NAME);
FeedPolicyEntity policy = metadataProvider.findFeedPolicy(database, dataverseName, policyName);
@@ -124,7 +123,7 @@
String subscriptionLocation, MetadataProvider metadataProvider, FeedPolicyEntity feedPolicy,
String outputType, String locations, LogicalVariable recordVar, IOptimizationContext context,
List<LogicalVariable> pkVars) throws AlgebricksException {
- String database = MetadataUtil.resolveDatabase(null, id.getDataverseName());
+ String database = id.getDatabaseName();
Dataset dataset = metadataProvider.findDataset(database, id.getDataverseName(), targetDataset);
ARecordType feedOutputType =
(ARecordType) metadataProvider.findType(database, id.getDataverseName(), outputType);
@@ -187,13 +186,13 @@
+ BuiltinFunctions.FEED_COLLECT.getArity() + ", not " + f.getArguments().size());
}
DataverseName dataverseName =
- DataverseName.createFromCanonicalForm(ConstantExpressionUtil.getStringArgument(f, 0));
- String outputTypeName = ConstantExpressionUtil.getStringArgument(f, 5);
+ DataverseName.createFromCanonicalForm(ConstantExpressionUtil.getStringArgument(f, 1));
+ String outputTypeName = ConstantExpressionUtil.getStringArgument(f, 6);
if (outputTypeName == null) {
return BuiltinType.ANY;
}
MetadataProvider metadata = (MetadataProvider) mp;
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
+ String database = ConstantExpressionUtil.getStringArgument(f, 0);
IAType outputType = metadata.findType(database, dataverseName, outputTypeName);
if (outputType == null) {
throw new AlgebricksException("Unknown type " + outputTypeName);
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/FunctionRewriter.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/FunctionRewriter.java
index 0b2975f..45776a4 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/FunctionRewriter.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/FunctionRewriter.java
@@ -61,7 +61,7 @@
throws AlgebricksException {
AbstractFunctionCallExpression f = UnnestToDataScanRule.getFunctionCall(opRef);
List<Mutable<ILogicalExpression>> args = f.getArguments();
- if (args.size() != functionId.getArity()) {
+ if (invalidArgs(args)) {
throw new CompilationException(ErrorCode.COMPILATION_ERROR, f.getSourceLocation(),
"Function " + functionId.getNamespace() + "." + functionId.getName() + " expects "
+ functionId.getArity() + " arguments");
@@ -84,6 +84,10 @@
return true;
}
+ protected boolean invalidArgs(List<Mutable<ILogicalExpression>> args) {
+ return args.size() != functionId.getArity();
+ }
+
protected void createDataScanOp(Mutable<ILogicalOperator> opRef, UnnestOperator unnest,
IOptimizationContext context, AbstractFunctionCallExpression f) throws AlgebricksException {
FunctionDataSource datasource = toDatasource(context, f);
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexRewriter.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexRewriter.java
index 4999a6b..1c00178 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexRewriter.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexRewriter.java
@@ -18,6 +18,8 @@
*/
package org.apache.asterix.app.function;
+import static org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier.VARARGS;
+
import java.util.ArrayList;
import java.util.List;
@@ -68,7 +70,7 @@
public class QueryIndexRewriter extends FunctionRewriter implements IResultTypeComputer {
- public static final FunctionIdentifier QUERY_INDEX = FunctionConstants.newAsterix("query-index", 3);
+ public static final FunctionIdentifier QUERY_INDEX = FunctionConstants.newAsterix("query-index", VARARGS);
public static final QueryIndexRewriter INSTANCE = new QueryIndexRewriter(QUERY_INDEX);
private QueryIndexRewriter(FunctionIdentifier functionId) {
@@ -88,10 +90,15 @@
DataverseName dvName = getDataverseName(loc, f.getArguments(), 0);
String dsName = getString(loc, f.getArguments(), 1);
String idName = getString(loc, f.getArguments(), 2);
+ String dbName;
+ if (f.getArguments().size() > 3) {
+ dbName = getString(loc, f.getArguments(), 3);
+ } else {
+ dbName = MetadataUtil.databaseFor(dvName);
+ }
MetadataProvider mp = (MetadataProvider) ctx.getMetadataProvider();
- final Dataset dataset = validateDataset(mp, dvName, dsName, loc);
- String database = dataset.getDatabaseName();
- Index index = validateIndex(f, mp, loc, database, dvName, dsName, idName);
+ final Dataset dataset = validateDataset(mp, dbName, dvName, dsName, loc);
+ Index index = validateIndex(f, mp, loc, dbName, dvName, dsName, idName);
return createQueryIndexDatasource(mp, dataset, index, loc, f);
}
@@ -118,6 +125,11 @@
opRef.setValue(assignOp);
}
+ @Override
+ protected boolean invalidArgs(List<Mutable<ILogicalExpression>> args) {
+ return args.size() < 3;
+ }
+
private FunctionDataSource createQueryIndexDatasource(MetadataProvider mp, Dataset ds, Index idx,
SourceLocation loc, AbstractFunctionCallExpression f) throws AlgebricksException {
ISecondaryIndexOperationsHelper secIdxHelper =
@@ -137,9 +149,14 @@
DataverseName dataverseName = getDataverseName(loc, f.getArguments(), 0);
String datasetName = getString(loc, f.getArguments(), 1);
String indexName = getString(loc, f.getArguments(), 2);
- Dataset dataset = validateDataset(metadataProvider, dataverseName, datasetName, loc);
- String database = dataset.getDatabaseName();
- Index index = validateIndex(f, metadataProvider, loc, database, dataverseName, datasetName, indexName);
+ String databaseName;
+ if (f.getArguments().size() > 3) {
+ databaseName = getString(loc, f.getArguments(), 3);
+ } else {
+ databaseName = MetadataUtil.databaseFor(dataverseName);
+ }
+ Dataset dataset = validateDataset(metadataProvider, databaseName, dataverseName, datasetName, loc);
+ Index index = validateIndex(f, metadataProvider, loc, databaseName, dataverseName, datasetName, indexName);
ARecordType dsType = (ARecordType) metadataProvider.findType(dataset);
ARecordType metaType = DatasetUtil.getMetaType(metadataProvider, dataset);
dsType = (ARecordType) metadataProvider.findTypeForDatasetWithoutType(dsType, metaType, dataset);
@@ -182,10 +199,9 @@
}
}
- private static Dataset validateDataset(MetadataProvider mp, DataverseName dvName, String dsName, SourceLocation loc)
- throws AlgebricksException {
- String database = MetadataUtil.resolveDatabase(null, dvName);
- Dataset dataset = mp.findDataset(database, dvName, dsName);
+ private static Dataset validateDataset(MetadataProvider mp, String dbName, DataverseName dvName, String dsName,
+ SourceLocation loc) throws AlgebricksException {
+ Dataset dataset = mp.findDataset(dbName, dvName, dsName);
if (dataset == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, loc, dsName, dvName);
}
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/StorageComponentsRewriter.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/StorageComponentsRewriter.java
index aa9478d..7b02bd2 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/StorageComponentsRewriter.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/StorageComponentsRewriter.java
@@ -18,6 +18,10 @@
*/
package org.apache.asterix.app.function;
+import static org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier.VARARGS;
+
+import java.util.List;
+
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.functions.FunctionConstants;
@@ -25,7 +29,9 @@
import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.Dataset;
+import org.apache.commons.lang3.mutable.Mutable;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
import org.apache.hyracks.algebricks.core.algebra.base.IOptimizationContext;
import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
@@ -34,7 +40,8 @@
public class StorageComponentsRewriter extends FunctionRewriter {
// Parameters are dataverse name, and dataset name
- public static final FunctionIdentifier STORAGE_COMPONENTS = FunctionConstants.newAsterix("storage-components", 2);
+ public static final FunctionIdentifier STORAGE_COMPONENTS =
+ FunctionConstants.newAsterix("storage-components", VARARGS);
public static final StorageComponentsRewriter INSTANCE = new StorageComponentsRewriter(STORAGE_COMPONENTS);
private StorageComponentsRewriter(FunctionIdentifier functionId) {
@@ -46,8 +53,13 @@
throws AlgebricksException {
SourceLocation loc = f.getSourceLocation();
DataverseName dataverseName = getDataverseName(loc, f.getArguments(), 0);
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
String datasetName = getString(loc, f.getArguments(), 1);
+ String database;
+ if (f.getArguments().size() > 2) {
+ database = getString(loc, f.getArguments(), 2);
+ } else {
+ database = MetadataUtil.databaseFor(dataverseName);
+ }
MetadataProvider metadataProvider = (MetadataProvider) context.getMetadataProvider();
Dataset dataset = metadataProvider.findDataset(database, dataverseName, datasetName);
if (dataset == null) {
@@ -55,4 +67,9 @@
}
return new StorageComponentsDatasource(context.getComputationNodeDomain(), dataset.getDatasetId());
}
+
+ @Override
+ protected boolean invalidArgs(List<Mutable<ILogicalExpression>> args) {
+ return args.size() < 2;
+ }
}
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
index b02435f..c47eb58 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
@@ -3173,8 +3173,7 @@
Datatype newInlineType =
newInlineTypes.isEmpty() ? null : newInlineTypes.remove(existingInlineType);
if (newInlineType == null) {
- String existingInlineTypeDatabase =
- MetadataUtil.resolveDatabase(null, existingInlineType.getDataverseName());
+ String existingInlineTypeDatabase = existingInlineType.getDatabaseName();
MetadataManager.INSTANCE.dropDatatype(mdTxnCtx, existingInlineTypeDatabase,
existingInlineType.getDataverseName(), existingInlineType.getName());
} else {
@@ -3306,9 +3305,8 @@
MetadataManager.INSTANCE.dropFunction(mdTxnCtx, signature);
for (TypeSignature inlineType : inlineTypes) {
- String inlineTypeDatabase = MetadataUtil.resolveDatabase(null, inlineType.getDataverseName());
- MetadataManager.INSTANCE.dropDatatype(mdTxnCtx, inlineTypeDatabase, inlineType.getDataverseName(),
- inlineType.getName());
+ MetadataManager.INSTANCE.dropDatatype(mdTxnCtx, inlineType.getDatabaseName(),
+ inlineType.getDataverseName(), inlineType.getName());
}
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
return true;
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/FeedOperations.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/FeedOperations.java
index 130c3a2..6e1ecdc 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/FeedOperations.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/FeedOperations.java
@@ -184,7 +184,7 @@
VariableExpr fromTermLeftExpr = new VariableExpr(fromVarId);
// TODO: remove target feedid from args list (xikui)
// TODO: Get rid of this INTAKE
- List<Expression> exprList = addArgs(feedConnection.getDataverseName(),
+ List<Expression> exprList = addArgs(feedConnection.getDatabaseName(), feedConnection.getDataverseName(),
feedConnection.getFeedId().getEntityName(), feedConnection.getFeedId().getEntityName(),
FeedRuntimeType.INTAKE.toString(), feedConnection.getDatasetName(), feedConnection.getOutputType());
CallExpr datasrouceCallFunction = new CallExpr(new FunctionSignature(BuiltinFunctions.FEED_COLLECT), exprList);
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
index acbc9e3..7b7c5d4 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
@@ -39,7 +39,6 @@
import org.apache.asterix.common.api.IMetadataLockManager;
import org.apache.asterix.common.dataflow.ICcApplicationContext;
import org.apache.asterix.common.metadata.DataverseName;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.common.transactions.TxnId;
import org.apache.asterix.common.utils.JobUtils;
import org.apache.asterix.dataflow.data.nontagged.MissingWriterFactory;
@@ -94,10 +93,9 @@
* @return <code>false</code> if the rebalance was safely skipped
* @throws Exception
*/
- public static boolean rebalance(DataverseName dataverseName, String datasetName, Set<String> targetNcNames,
- MetadataProvider metadataProvider, IHyracksClientConnection hcc,
+ public static boolean rebalance(String database, DataverseName dataverseName, String datasetName,
+ Set<String> targetNcNames, MetadataProvider metadataProvider, IHyracksClientConnection hcc,
IDatasetRebalanceCallback datasetRebalanceCallback, boolean forceRebalance) throws Exception {
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
Dataset sourceDataset;
Dataset targetDataset;
boolean success = true;
@@ -355,8 +353,7 @@
private static ITupleProjectorFactory createTupleProjectorFactory(Dataset source, MetadataProvider metadataProvider)
throws AlgebricksException {
- String itemTypeDatabase = MetadataUtil.resolveDatabase(null, source.getItemTypeDataverseName());
- ARecordType itemType = (ARecordType) metadataProvider.findType(itemTypeDatabase,
+ ARecordType itemType = (ARecordType) metadataProvider.findType(source.getItemTypeDatabaseName(),
source.getItemTypeDataverseName(), source.getItemTypeName());
ARecordType metaType = DatasetUtil.getMetaType(metadataProvider, source);
itemType = (ARecordType) metadataProvider.findTypeForDatasetWithoutType(itemType, metaType, source);
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/api/http/servlet/ConnectorApiServletTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/api/http/servlet/ConnectorApiServletTest.java
index 79171be..9d4f921 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/api/http/servlet/ConnectorApiServletTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/api/http/servlet/ConnectorApiServletTest.java
@@ -34,7 +34,6 @@
import org.apache.asterix.common.dataflow.ICcApplicationContext;
import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.common.metadata.MetadataConstants;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.metadata.MetadataManager;
import org.apache.asterix.metadata.MetadataTransactionContext;
import org.apache.asterix.metadata.declared.MetadataProvider;
@@ -121,8 +120,8 @@
String primaryKey = actualResponse.get("keys").asText();
Assert.assertEquals("DataverseName,DatasetName", primaryKey);
ARecordType recordType = (ARecordType) JSONDeserializerForTypes.convertFromJSON(actualResponse.get("type"));
- Assert.assertEquals(getMetadataRecordType(MetadataConstants.METADATA_DATAVERSE_NAME,
- MetadataConstants.DATASET_DATASET_NAME), recordType);
+ Assert.assertEquals(getMetadataRecordType(MetadataConstants.SYSTEM_DATABASE,
+ MetadataConstants.METADATA_DATAVERSE_NAME, MetadataConstants.DATASET_DATASET_NAME), recordType);
// Checks the correctness of results.
ArrayNode splits = (ArrayNode) actualResponse.get("splits");
@@ -179,16 +178,16 @@
Assert.assertEquals(actualResponse.toString(), expectedResponse.toString());
}
- private ARecordType getMetadataRecordType(DataverseName dataverseName, String datasetName) throws Exception {
+ private ARecordType getMetadataRecordType(String database, DataverseName dataverseName, String datasetName)
+ throws Exception {
MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
// Retrieves file splits of the dataset.
MetadataProvider metadataProvider = MetadataProvider
.create((ICcApplicationContext) ExecutionTestUtil.integrationUtil.cc.getApplicationContext(), null);
try {
metadataProvider.setMetadataTxnContext(mdTxnCtx);
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
Dataset dataset = metadataProvider.findDataset(database, dataverseName, datasetName);
- String itemTypeDatabase = MetadataUtil.resolveDatabase(null, dataset.getItemTypeDataverseName());
+ String itemTypeDatabase = dataset.getItemTypeDatabaseName();
ARecordType recordType = (ARecordType) metadataProvider.findType(itemTypeDatabase,
dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
// Metadata transaction commits.
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/common/TestDataUtil.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/common/TestDataUtil.java
index ea34f48..b58ad47 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/common/TestDataUtil.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/common/TestDataUtil.java
@@ -200,8 +200,9 @@
IMetadataLockManager lockManager = ccAppCtx.getMetadataLockManager();
lockManager.acquireDatasetExclusiveModificationLock(metadataProvider.getLocks(), database,
dataverseName, datasetName);
- RebalanceUtil.rebalance(dataverseName, datasetName, new LinkedHashSet<>(Arrays.asList(targetNodes)),
- metadataProvider, ccAppCtx.getHcc(), NoOpDatasetRebalanceCallback.INSTANCE, false);
+ RebalanceUtil.rebalance(database, dataverseName, datasetName,
+ new LinkedHashSet<>(Arrays.asList(targetNodes)), metadataProvider, ccAppCtx.getHcc(),
+ NoOpDatasetRebalanceCallback.INSTANCE, false);
} finally {
activeNotificationHandler.resume(metadataProvider);
}
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/active/ActiveStatsTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/active/ActiveStatsTest.java
index e17a7fe..3baf5d0 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/active/ActiveStatsTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/active/ActiveStatsTest.java
@@ -76,7 +76,7 @@
public void refreshStatsTest() throws Exception {
// Entities to be used
DataverseName mockDataverse = DataverseName.createSinglePartName("MockDataverse");
- String mockDatabase = MetadataUtil.resolveDatabase(null, mockDataverse);
+ String mockDatabase = MetadataUtil.databaseFor(mockDataverse);
EntityId entityId = new EntityId("MockExtension", mockDatabase, mockDataverse, "MockEntity");
ActiveRuntimeId activeRuntimeId =
new ActiveRuntimeId(entityId, FeedIntakeOperatorNodePushable.class.getSimpleName(), 0);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/multipart-dataverse/multipart-dataverse.002.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/multipart-dataverse/multipart-dataverse.002.plan
index c60ece3..0c93688 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/multipart-dataverse/multipart-dataverse.002.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/multipart-dataverse/multipart-dataverse.002.plan
@@ -8,7 +8,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$15, $$d] <- index-search("ColumnDataset", 0, "test/test", "ColumnDataset", false, false, 1, $$19, 1, $$19, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ unnest-map [$$15, $$d] <- index-search("ColumnDataset", 0, "Default", "test/test", "ColumnDataset", false, false, 1, $$19, 1, $$19, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -20,7 +20,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$18, $$19] <- index-search("ageIdx", 0, "test/test", "ColumnDataset", false, false, 1, $$17, 0, true, true, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ unnest-map [$$18, $$19] <- index-search("ageIdx", 0, "Default", "test/test", "ColumnDataset", false, false, 1, $$17, 0, true, true, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/feeds_01/feeds_01.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/feeds_01/feeds_01.1.adm
index b0a09aa..f932438a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/feeds_01/feeds_01.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/feeds_01/feeds_01.1.adm
@@ -1 +1 @@
-{ "DataverseName": "feeds", "FeedName": "TweetFeed", "AdapterConfiguration": {{ { "Name": "dataset-dataverse", "Value": "feeds" }, { "Name": "path", "Value": "asterix_nc1://data/twitter/obamatweets.adm" }, { "Name": "feed", "Value": "TweetFeed" }, { "Name": "log-ingestion-events", "Value": "true" }, { "Name": "adapter-name", "Value": "localfs" }, { "Name": "is-feed", "Value": "true" }, { "Name": "parser", "Value": "adm" }, { "Name": "reader", "Value": "localfs" }, { "Name": "format", "Value": "adm" }, { "Name": "tuple-interval", "Value": "10" }, { "Name": "type-name", "Value": "TweetType" } }}, "Timestamp": "Mon May 08 20:53:16 PDT 2023" }
\ No newline at end of file
+{ "DataverseName": "feeds", "FeedName": "TweetFeed", "AdapterConfiguration": {{ { "Name": "dataset-dataverse", "Value": "feeds" }, { "Name": "path", "Value": "asterix_nc1://data/twitter/obamatweets.adm" }, { "Name": "feed", "Value": "TweetFeed" }, { "Name": "log-ingestion-events", "Value": "true" }, { "Name": "dataset-database", "Value": "Default" }, { "Name": "adapter-name", "Value": "localfs" }, { "Name": "is-feed", "Value": "true" }, { "Name": "parser", "Value": "adm" }, { "Name": "reader", "Value": "localfs" }, { "Name": "format", "Value": "adm" }, { "Name": "tuple-interval", "Value": "10" }, { "Name": "type-name", "Value": "TweetType" } }}, "Timestamp": "Mon May 08 20:53:16 PDT 2023" }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan
index c915d68..b1042e0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan
@@ -24,7 +24,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$59, $$n] <- index-search("Nation", 0, "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ unnest-map [$$59, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan
index c915d68..b1042e0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan
@@ -24,7 +24,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$59, $$n] <- index-search("Nation", 0, "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ unnest-map [$$59, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan
index f4cf2d4..0d91c33 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan
@@ -32,7 +32,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "Default", "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -44,7 +44,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
index b1db9f8..8726b8d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
@@ -34,7 +34,7 @@
-- STREAM_SELECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -46,7 +46,7 @@
-- SPLIT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
@@ -76,7 +76,7 @@
-- SPLIT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan
index 591375e..0465493 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan
@@ -32,7 +32,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "Default", "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -44,7 +44,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
index 3d31e11..2f3540a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
@@ -34,7 +34,7 @@
-- STREAM_SELECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -46,7 +46,7 @@
-- SPLIT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
@@ -76,7 +76,7 @@
-- SPLIT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.plan
index 47503b1..a6e5efe 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.3.plan
@@ -12,7 +12,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$18, $$19, $$c] <- index-search("LineItem", 0, "test", "LineItem", false, false, 2, $$24, $$25, 2, $$24, $$25, true, true, true) condition (and(lt($$c.getField(2), 150), lt($$c.getField(5), 10000))) limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ unnest-map [$$18, $$19, $$c] <- index-search("LineItem", 0, "Default", "test", "LineItem", false, false, 2, $$24, $$25, 2, $$24, $$25, true, true, true) condition (and(lt($$c.getField(2), 150), lt($$c.getField(5), 10000))) limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -24,7 +24,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$23, $$24, $$25] <- index-search("idx_LineItem_suppkey", 0, "test", "LineItem", false, false, 0, 1, $$22, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ unnest-map [$$23, $$24, $$25] <- index-search("idx_LineItem_suppkey", 0, "Default", "test", "LineItem", false, false, 0, 1, $$22, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan
index 9f25055..3420b11 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup-select/push-limit-to-primary-lookup-select.5.plan
@@ -18,7 +18,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$22, $$23, $$c] <- index-search("LineItem", 0, "test", "LineItem", false, false, 2, $$27, $$28, 2, $$27, $$28, true, true, true) condition (lt($$c.getField(2), 150)) limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ unnest-map [$$22, $$23, $$c] <- index-search("LineItem", 0, "Default", "test", "LineItem", false, false, 2, $$27, $$28, 2, $$27, $$28, true, true, true) condition (lt($$c.getField(2), 150)) limit 5 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -30,7 +30,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$26, $$27, $$28] <- index-search("idx_LineItem_suppkey", 0, "test", "LineItem", false, false, 0, 1, $$25, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ unnest-map [$$26, $$27, $$28] <- index-search("idx_LineItem_suppkey", 0, "Default", "test", "LineItem", false, false, 0, 1, $$25, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.plan
index 48f0a7f..33c18ad 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.3.plan
@@ -12,7 +12,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$15, $$16, $$c] <- index-search("LineItem", 0, "test", "LineItem", false, false, 2, $$20, $$21, 2, $$20, $$21, true, true, true) condition (lt($$c.getField(2), 150)) limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ unnest-map [$$15, $$16, $$c] <- index-search("LineItem", 0, "Default", "test", "LineItem", false, false, 2, $$20, $$21, 2, $$20, $$21, true, true, true) condition (lt($$c.getField(2), 150)) limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -24,7 +24,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$19, $$20, $$21] <- index-search("idx_LineItem_suppkey", 0, "test", "LineItem", false, false, 0, 1, $$18, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ unnest-map [$$19, $$20, $$21] <- index-search("idx_LineItem_suppkey", 0, "Default", "test", "LineItem", false, false, 0, 1, $$18, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.plan
index b7957e4..e8074d8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/limit/push-limit-to-primary-lookup/push-limit-to-primary-lookup.5.plan
@@ -12,7 +12,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$17, $$18, $$c] <- index-search("LineItem", 0, "test", "LineItem", false, false, 2, $$22, $$23, 2, $$22, $$23, true, true, true) condition (lt($$c.getField(2), 150)) limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ unnest-map [$$17, $$18, $$c] <- index-search("LineItem", 0, "Default", "test", "LineItem", false, false, 2, $$22, $$23, 2, $$22, $$23, true, true, true) condition (lt($$c.getField(2), 150)) limit 10 [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -24,7 +24,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$21, $$22, $$23] <- index-search("idx_LineItem_suppkey", 0, "test", "LineItem", false, false, 0, 1, $$20, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ unnest-map [$$21, $$22, $$23] <- index-search("idx_LineItem_suppkey", 0, "Default", "test", "LineItem", false, false, 0, 1, $$20, true, false, false) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/rebalance/single_dataset_with_index/single_dataset_with_index.13.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/rebalance/single_dataset_with_index/single_dataset_with_index.13.plan
index 35995c9..64beabf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/rebalance/single_dataset_with_index/single_dataset_with_index.13.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/rebalance/single_dataset_with_index/single_dataset_with_index.13.plan
@@ -14,7 +14,7 @@
-- STREAM_SELECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$17, $$18, $$l] <- index-search("LineItem", 0, "tpch", "LineItem", false, false, 2, $$25, $$26, 2, $$25, $$26, true, true, true)
+ unnest-map [$$17, $$18, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", false, false, 2, $$25, $$26, 2, $$25, $$26, true, true, true)
-- BTREE_SEARCH |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -26,7 +26,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$24, $$25, $$26] <- index-search("lineitem_shipdateIx", 0, "tpch", "LineItem", false, false, 1, $$22, 1, $$23, true, true, true)
+ unnest-map [$$24, $$25, $$26] <- index-search("lineitem_shipdateIx", 0, "Default", "tpch", "LineItem", false, false, 1, $$22, 1, $$23, true, true, true)
-- BTREE_SEARCH |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/rebalance/single_dataset_with_index/single_dataset_with_index.8.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results/rebalance/single_dataset_with_index/single_dataset_with_index.8.plan
index 35995c9..64beabf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results/rebalance/single_dataset_with_index/single_dataset_with_index.8.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/rebalance/single_dataset_with_index/single_dataset_with_index.8.plan
@@ -14,7 +14,7 @@
-- STREAM_SELECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$17, $$18, $$l] <- index-search("LineItem", 0, "tpch", "LineItem", false, false, 2, $$25, $$26, 2, $$25, $$26, true, true, true)
+ unnest-map [$$17, $$18, $$l] <- index-search("LineItem", 0, "Default", "tpch", "LineItem", false, false, 2, $$25, $$26, 2, $$25, $$26, true, true, true)
-- BTREE_SEARCH |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -26,7 +26,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$24, $$25, $$26] <- index-search("lineitem_shipdateIx", 0, "tpch", "LineItem", false, false, 1, $$22, 1, $$23, true, true, true)
+ unnest-map [$$24, $$25, $$26] <- index-search("lineitem_shipdateIx", 0, "Default", "tpch", "LineItem", false, false, 1, $$22, 1, $$23, true, true, true)
-- BTREE_SEARCH |PARTITIONED|
exchange
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan
index 71a6d82..077f538 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.14.plan
@@ -42,7 +42,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 25.0, op-cost: 25.0, total-cost: 140.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$59, $$n] <- index-search("Nation", 0, "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 25.0, op-cost: 65.0, total-cost: 115.0]
+ unnest-map [$$59, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 25.0, op-cost: 65.0, total-cost: 115.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan
index 133262b..4b8f35e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/join/hash-join-with-redundant-variable/hash-join-with-redundant-variable.16.plan
@@ -42,7 +42,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 25.0, op-cost: 75.0, total-cost: 180.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- unnest-map [$$59, $$n] <- index-search("Nation", 0, "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 25.0, op-cost: 65.0, total-cost: 105.0]
+ unnest-map [$$59, $$n] <- index-search("Nation", 0, "Default", "tpch", "Nation", true, true, 1, $$56, 1, $$56, true, true, true) [cardinality: 25.0, op-cost: 65.0, total-cost: 105.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan
index 4db64df..aa6f6d7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.007.plan
@@ -32,7 +32,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 3.0, op-cost: 3.0, total-cost: 3.0]
+ left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "Default", "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 3.0, op-cost: 3.0, total-cost: 3.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -44,7 +44,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- BROADCAST_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
index 9f0651e..277e685 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
@@ -34,7 +34,7 @@
-- STREAM_SELECT |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -46,7 +46,7 @@
-- SPLIT |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- BROADCAST_EXCHANGE |PARTITIONED|
@@ -76,7 +76,7 @@
-- SPLIT |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- BROADCAST_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan
index 51dccd4..8344a60 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.009.plan
@@ -32,7 +32,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 3.0, op-cost: 3.0, total-cost: 3.0]
+ left-outer-unnest-map [$$54, $$t2] <- index-search("ds_inner_untyped", 0, "Default", "test", "ds_inner_untyped", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 3.0, op-cost: 3.0, total-cost: 3.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -44,7 +44,7 @@
-- STREAM_PROJECT |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_untyped", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- BROADCAST_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
index 7ccdab5..a4f18ba 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cbo/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
@@ -34,7 +34,7 @@
-- STREAM_SELECT |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -46,7 +46,7 @@
-- SPLIT |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- BROADCAST_EXCHANGE |PARTITIONED|
@@ -76,7 +76,7 @@
-- SPLIT |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 2.1, op-cost: 0.0, total-cost: 2.1]
-- BROADCAST_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cloud/feeds/feeds_01/feeds_01.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results_cloud/feeds/feeds_01/feeds_01.1.adm
index 3bb0d78..751025d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_cloud/feeds/feeds_01/feeds_01.1.adm
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cloud/feeds/feeds_01/feeds_01.1.adm
@@ -1 +1 @@
-{ "DatabaseName": "Default", "DataverseName": "feeds", "FeedName": "TweetFeed", "AdapterConfiguration": {{ { "Name": "dataset-dataverse", "Value": "feeds" }, { "Name": "path", "Value": "asterix_nc1://data/twitter/obamatweets.adm" }, { "Name": "feed", "Value": "TweetFeed" }, { "Name": "log-ingestion-events", "Value": "true" }, { "Name": "adapter-name", "Value": "localfs" }, { "Name": "is-feed", "Value": "true" }, { "Name": "parser", "Value": "adm" }, { "Name": "reader", "Value": "localfs" }, { "Name": "format", "Value": "adm" }, { "Name": "tuple-interval", "Value": "10" }, { "Name": "type-name", "Value": "TweetType" } }}, "Timestamp": "Sat Sep 30 23:48:22 PDT 2023" }
\ No newline at end of file
+{ "DatabaseName": "Default", "DataverseName": "feeds", "FeedName": "TweetFeed", "AdapterConfiguration": {{ { "Name": "dataset-dataverse", "Value": "feeds" }, { "Name": "path", "Value": "asterix_nc1://data/twitter/obamatweets.adm" }, { "Name": "feed", "Value": "TweetFeed" }, { "Name": "log-ingestion-events", "Value": "true" }, { "Name": "dataset-database", "Value": "Default" }, { "Name": "adapter-name", "Value": "localfs" }, { "Name": "is-feed", "Value": "true" }, { "Name": "parser", "Value": "adm" }, { "Name": "reader", "Value": "localfs" }, { "Name": "format", "Value": "adm" }, { "Name": "tuple-interval", "Value": "10" }, { "Name": "type-name", "Value": "TweetType" } }}, "Timestamp": "Fri Oct 06 12:58:13 PDT 2023" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
index 1fa96f4..07a32cf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
@@ -38,7 +38,7 @@
-- STREAM_SELECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -50,7 +50,7 @@
-- SPLIT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
@@ -84,7 +84,7 @@
-- SPLIT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
index 4939297..2845b04 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_full_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
@@ -38,7 +38,7 @@
-- STREAM_SELECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -50,7 +50,7 @@
-- SPLIT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
@@ -84,7 +84,7 @@
-- SPLIT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
index 1fa96f4..07a32cf 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.008.plan
@@ -38,7 +38,7 @@
-- STREAM_SELECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -50,7 +50,7 @@
-- SPLIT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
@@ -84,7 +84,7 @@
-- SPLIT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan b/asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
index 4939297..2845b04 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_less_parallelism/leftouterjoin/index-only-leftouterjoin/index-only-leftouterjoin.010.plan
@@ -38,7 +38,7 @@
-- STREAM_SELECT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$70, $$71] <- index-search("ds_inner_typed", 0, "Default", "test", "ds_inner_typed", true, false, 1, $$61, 1, $$61, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
@@ -50,7 +50,7 @@
-- SPLIT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
@@ -84,7 +84,7 @@
-- SPLIT |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- ONE_TO_ONE_EXCHANGE |PARTITIONED|
- left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
+ left-outer-unnest-map [$$60, $$61, $$62] <- index-search("idx_c_int32", 0, "Default", "test", "ds_inner_typed", true, true, 1, $$55, 1, $$55, true, true, true) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BTREE_SEARCH |PARTITIONED|
exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0]
-- BROADCAST_EXCHANGE |PARTITIONED|
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/adapter/factory/GenericAdapterFactory.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/adapter/factory/GenericAdapterFactory.java
index 759d86e..ecc7833 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/adapter/factory/GenericAdapterFactory.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/adapter/factory/GenericAdapterFactory.java
@@ -28,7 +28,6 @@
import org.apache.asterix.common.external.IExternalFilterEvaluatorFactory;
import org.apache.asterix.common.library.ILibraryManager;
import org.apache.asterix.common.metadata.DataverseName;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.external.api.IDataFlowController;
import org.apache.asterix.external.api.IDataParserFactory;
import org.apache.asterix.external.api.IExternalDataSourceFactory;
@@ -159,7 +158,7 @@
this.logIngestionEvents = ExternalDataUtils.isLogIngestionEvents(configuration);
if (logIngestionEvents) {
DataverseName dataverseName = ExternalDataUtils.getDatasetDataverse(configuration);
- String databaseName = MetadataUtil.databaseFor(dataverseName);
+ String databaseName = ExternalDataUtils.getDatasetDatabase(configuration);
String namespacePath = appCtx.getNamespacePathResolver().resolve(databaseName, dataverseName);
//TODO(partitioning) make this code reuse DataPartitioningProvider
feedLogFileSplits = FeedUtils.splitsForAdapter(namespacePath, ExternalDataUtils.getFeedName(configuration),
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
index 0bd274b..7428a4b 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
@@ -40,6 +40,8 @@
*/
// used to specify the stream factory for an adapter that has a stream data source
public static final String KEY_STREAM = "stream";
+ //TODO(DB): check adapter configuration
+ public static final String KEY_DATABASE_DATAVERSE = "dataset-database";
// used to specify the dataverse of the adapter
public static final String KEY_DATASET_DATAVERSE = "dataset-dataverse";
// used to specify the socket addresses when reading data from sockets
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
index d282ab4..e740e68 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
@@ -209,6 +209,10 @@
}
}
+ public static String getDatasetDatabase(Map<String, String> configuration) throws AsterixException {
+ return configuration.get(ExternalDataConstants.KEY_DATABASE_DATAVERSE);
+ }
+
public static DataverseName getDatasetDataverse(Map<String, String> configuration) throws AsterixException {
return DataverseName.createFromCanonicalForm(configuration.get(ExternalDataConstants.KEY_DATASET_DATAVERSE));
}
@@ -342,11 +346,13 @@
}
}
- public static void prepareFeed(Map<String, String> configuration, DataverseName dataverseName, String feedName) {
+ public static void prepareFeed(Map<String, String> configuration, String databaseName, DataverseName dataverseName,
+ String feedName) {
if (!configuration.containsKey(ExternalDataConstants.KEY_IS_FEED)) {
configuration.put(ExternalDataConstants.KEY_IS_FEED, ExternalDataConstants.TRUE);
}
configuration.computeIfAbsent(ExternalDataConstants.KEY_LOG_INGESTION_EVENTS, k -> ExternalDataConstants.TRUE);
+ configuration.put(ExternalDataConstants.KEY_DATABASE_DATAVERSE, databaseName);
configuration.put(ExternalDataConstants.KEY_DATASET_DATAVERSE, dataverseName.getCanonicalForm());
configuration.put(ExternalDataConstants.KEY_FEED_NAME, feedName);
}
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 13c3d26..b5757af 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
@@ -38,16 +38,20 @@
import org.apache.asterix.common.metadata.DatasetFullyQualifiedName;
import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.common.metadata.DependencyFullyQualifiedName;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.lang.common.base.Expression;
import org.apache.asterix.lang.common.base.IParser;
import org.apache.asterix.lang.common.base.IParserFactory;
import org.apache.asterix.lang.common.base.IQueryRewriter;
import org.apache.asterix.lang.common.expression.AbstractCallExpression;
+import org.apache.asterix.lang.common.expression.CallExpr;
+import org.apache.asterix.lang.common.expression.LiteralExpr;
import org.apache.asterix.lang.common.expression.OrderedListTypeDefinition;
import org.apache.asterix.lang.common.expression.TypeExpression;
import org.apache.asterix.lang.common.expression.TypeReferenceExpression;
import org.apache.asterix.lang.common.expression.UnorderedListTypeDefinition;
+import org.apache.asterix.lang.common.literal.FalseLiteral;
+import org.apache.asterix.lang.common.literal.StringLiteral;
+import org.apache.asterix.lang.common.literal.TrueLiteral;
import org.apache.asterix.lang.common.statement.FunctionDecl;
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.Dataverse;
@@ -252,8 +256,8 @@
List<Expression> argList = datasetFn.getExprList();
DatasetFullyQualifiedName datasetOrViewName = parseDatasetFunctionArguments(argList, 0,
datasetFn.getSourceLocation(), ExpressionUtils::getStringLiteral);
- boolean isView = argList.size() > 2 && Boolean.TRUE.equals(ExpressionUtils.getBooleanLiteral(argList.get(2)));
- DatasetFullyQualifiedName synonymName = argList.size() > 3 ? parseDatasetFunctionArguments(argList, 3,
+ boolean isView = argList.size() > 3 && Boolean.TRUE.equals(ExpressionUtils.getBooleanLiteral(argList.get(3)));
+ DatasetFullyQualifiedName synonymName = argList.size() > 4 ? parseDatasetFunctionArguments(argList, 4,
datasetFn.getSourceLocation(), ExpressionUtils::getStringLiteral) : null;
return new Triple<>(datasetOrViewName, isView, synonymName);
}
@@ -267,7 +271,11 @@
private static <T> DatasetFullyQualifiedName parseDatasetFunctionArguments(List<T> datasetFnArgs, int startPos,
SourceLocation sourceLoc, java.util.function.Function<T, String> stringAccessor)
throws CompilationException {
- String dataverseNameArg = stringAccessor.apply(datasetFnArgs.get(startPos));
+ String databaseName = stringAccessor.apply(datasetFnArgs.get(startPos));
+ if (databaseName == null) {
+ throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, "Invalid argument to dataset()");
+ }
+ String dataverseNameArg = stringAccessor.apply(datasetFnArgs.get(startPos + 1));
if (dataverseNameArg == null) {
throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, "Invalid argument to dataset()");
}
@@ -277,11 +285,10 @@
} catch (AsterixException e) {
throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, e, "Invalid argument to dataset()");
}
- String datasetName = stringAccessor.apply(datasetFnArgs.get(startPos + 1));
+ String datasetName = stringAccessor.apply(datasetFnArgs.get(startPos + 2));
if (datasetName == null) {
throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, "Invalid argument to dataset()");
}
- String databaseName = MetadataUtil.resolveDatabase(null, dataverseName);
return new DatasetFullyQualifiedName(databaseName, dataverseName, datasetName);
}
@@ -391,4 +398,33 @@
return numberOfMatches == args1.size();
}
+
+ public static CallExpr makeDatasetCallExpr(String database, DataverseName dataverse, String dataset) {
+ List<Expression> arguments = new ArrayList<>();
+ addDataset(arguments, database, dataverse, dataset);
+ return new CallExpr(new FunctionSignature(BuiltinFunctions.DATASET), arguments);
+ }
+
+ public static CallExpr makeDatasetCallExpr(String database, DataverseName dataverse, String dataset, boolean view) {
+ List<Expression> argList = new ArrayList<>(4);
+ addDataset(argList, database, dataverse, dataset);
+ argList.add(new LiteralExpr(view ? TrueLiteral.INSTANCE : FalseLiteral.INSTANCE));
+ return new CallExpr(new FunctionSignature(BuiltinFunctions.DATASET), argList);
+ }
+
+ public static CallExpr makeSynonymDatasetCallExpr(String resolvedDatabaseName, DataverseName resolvedDataverseName,
+ String resolvedDatasetName, boolean isView, String databaseName, DataverseName dataverseName,
+ String datasetName) {
+ List<Expression> argList = new ArrayList<>(7);
+ addDataset(argList, resolvedDatabaseName, resolvedDataverseName, resolvedDatasetName);
+ argList.add(new LiteralExpr(isView ? TrueLiteral.INSTANCE : FalseLiteral.INSTANCE));
+ addDataset(argList, databaseName, dataverseName, datasetName);
+ return new CallExpr(new FunctionSignature(BuiltinFunctions.DATASET), argList);
+ }
+
+ private static void addDataset(List<Expression> argList, String db, DataverseName dv, String ds) {
+ argList.add(new LiteralExpr(new StringLiteral(db)));
+ argList.add(new LiteralExpr(new StringLiteral(dv.getCanonicalForm())));
+ argList.add(new LiteralExpr(new StringLiteral(ds)));
+ }
}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/SqlppQueryRewriter.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/SqlppQueryRewriter.java
index 9425f72..34757a9 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/SqlppQueryRewriter.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/SqlppQueryRewriter.java
@@ -33,7 +33,6 @@
import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.common.metadata.DatasetFullyQualifiedName;
import org.apache.asterix.common.metadata.DataverseName;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.lang.common.base.AbstractExpression;
import org.apache.asterix.lang.common.base.Expression;
import org.apache.asterix.lang.common.base.IParserFactory;
@@ -489,9 +488,8 @@
if (viewDecl == null) {
Dataset dataset;
try {
- String database = MetadataUtil.resolveDatabase(null, viewName.getDataverseName());
- dataset = metadataProvider.findDataset(database, viewName.getDataverseName(), viewName.getDatasetName(),
- true);
+ dataset = metadataProvider.findDataset(viewName.getDatabaseName(), viewName.getDataverseName(),
+ viewName.getDatasetName(), true);
} catch (AlgebricksException e) {
throw new CompilationException(ErrorCode.UNKNOWN_VIEW, e, sourceLoc, viewName);
}
@@ -502,7 +500,7 @@
viewDecl = ViewUtil.parseStoredView(viewName, viewDetails, parserFactory, context.getWarningCollector(),
sourceLoc);
DataverseName itemTypeDataverseName = dataset.getItemTypeDataverseName();
- String itemTypeDatabase = MetadataUtil.resolveDatabase(null, itemTypeDataverseName);
+ String itemTypeDatabase = dataset.getItemTypeDatabaseName();
String itemTypeName = dataset.getItemTypeName();
boolean isAnyType =
MetadataBuiltinEntities.ANY_OBJECT_DATATYPE.getDataverseName().equals(itemTypeDataverseName)
@@ -529,16 +527,17 @@
private Expression rewriteFunctionBody(FunctionDecl fnDecl) throws CompilationException {
FunctionSignature fs = fnDecl.getSignature();
- return rewriteFunctionOrViewBody(fs.getDataverseName(), fs, fnDecl.getFuncBody(), fnDecl.getParamList(),
- !fnDecl.isStored(), fnDecl.getSourceLocation());
+ return rewriteFunctionOrViewBody(fs.getDatabaseName(), fs.getDataverseName(), fs, fnDecl.getFuncBody(),
+ fnDecl.getParamList(), !fnDecl.isStored(), fnDecl.getSourceLocation());
}
private Expression rewriteViewBody(ViewDecl viewDecl, IAType viewItemType, Boolean defaultNull,
Triple<String, String, String> temporalDataFormat) throws CompilationException {
DatasetFullyQualifiedName viewName = viewDecl.getViewName();
SourceLocation sourceLoc = viewDecl.getSourceLocation();
- Expression rewrittenBodyExpr = rewriteFunctionOrViewBody(viewName.getDataverseName(), viewName,
- viewDecl.getViewBody(), Collections.emptyList(), false, sourceLoc);
+ Expression rewrittenBodyExpr =
+ rewriteFunctionOrViewBody(viewName.getDatabaseName(), viewName.getDataverseName(), viewName,
+ viewDecl.getViewBody(), Collections.emptyList(), false, sourceLoc);
if (viewItemType != null) {
if (!Boolean.TRUE.equals(defaultNull)) {
throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, sourceLoc,
@@ -550,19 +549,17 @@
return rewrittenBodyExpr;
}
- private Expression rewriteFunctionOrViewBody(DataverseName entityDataverseName, Object entityDisplayName,
- Expression bodyExpr, List<VarIdentifier> externalVars, boolean allowNonStoredUdfCalls,
- SourceLocation sourceLoc) throws CompilationException {
+ private Expression rewriteFunctionOrViewBody(String entityDatabaseName, DataverseName entityDataverseName,
+ Object entityDisplayName, Expression bodyExpr, List<VarIdentifier> externalVars,
+ boolean allowNonStoredUdfCalls, SourceLocation sourceLoc) throws CompilationException {
Dataverse defaultDataverse = metadataProvider.getDefaultDataverse();
Dataverse targetDataverse;
- String database;
- if (entityDataverseName == null || entityDataverseName.equals(defaultDataverse.getDataverseName())) {
+ if (entityDataverseName == null || (entityDatabaseName.equals(defaultDataverse.getDatabaseName())
+ && entityDataverseName.equals(defaultDataverse.getDataverseName()))) {
targetDataverse = defaultDataverse;
- database = MetadataUtil.resolveDatabase(null, targetDataverse.getDataverseName());
} else {
try {
- database = MetadataUtil.resolveDatabase(null, entityDataverseName);
- targetDataverse = metadataProvider.findDataverse(database, entityDataverseName);
+ targetDataverse = metadataProvider.findDataverse(entityDatabaseName, entityDataverseName);
} catch (AlgebricksException e) {
throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, e, sourceLoc, entityDataverseName);
}
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/VariableCheckAndRewriteVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/VariableCheckAndRewriteVisitor.java
index 2cfabc1..9c53a2b 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/VariableCheckAndRewriteVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/VariableCheckAndRewriteVisitor.java
@@ -39,15 +39,12 @@
import org.apache.asterix.lang.common.context.Scope;
import org.apache.asterix.lang.common.expression.CallExpr;
import org.apache.asterix.lang.common.expression.FieldAccessor;
-import org.apache.asterix.lang.common.expression.LiteralExpr;
import org.apache.asterix.lang.common.expression.VariableExpr;
-import org.apache.asterix.lang.common.literal.FalseLiteral;
-import org.apache.asterix.lang.common.literal.StringLiteral;
-import org.apache.asterix.lang.common.literal.TrueLiteral;
import org.apache.asterix.lang.common.rewrites.LangRewritingContext;
import org.apache.asterix.lang.common.statement.ViewDecl;
import org.apache.asterix.lang.common.struct.Identifier;
import org.apache.asterix.lang.common.struct.VarIdentifier;
+import org.apache.asterix.lang.common.util.FunctionUtil;
import org.apache.asterix.lang.sqlpp.expression.WindowExpression;
import org.apache.asterix.lang.sqlpp.util.FunctionMapUtil;
import org.apache.asterix.lang.sqlpp.util.SqlppVariableUtil;
@@ -58,7 +55,7 @@
import org.apache.asterix.om.functions.BuiltinFunctions;
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.common.utils.Quadruple;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.api.exceptions.SourceLocation;
@@ -82,8 +79,9 @@
return varExpr;
}
DataverseName dataverseName = metadataProvider.getDefaultDataverseName();
+ String databaseName = metadataProvider.getDefaultDatabase();
String datasetName = SqlppVariableUtil.toUserDefinedVariableName(varExpr.getVar().getValue()).getValue();
- CallExpr datasetExpr = resolveAsDataset(dataverseName, datasetName, parent, varExpr);
+ CallExpr datasetExpr = resolveAsDataset(databaseName, dataverseName, datasetName, parent, varExpr);
return datasetExpr != null ? datasetExpr : resolveAsFieldAccessOverContextVar(varExpr);
}
@@ -105,8 +103,11 @@
throw new CompilationException(ErrorCode.INVALID_DATABASE_OBJECT_NAME, fa.getSourceLocation(),
dataverseNamePart);
}
+ //TODO(DB): decide
+ String databaseName = MetadataUtil.resolveDatabase(null, dataverseName);
String datasetName = fa.getIdent().getValue();
- CallExpr datasetExpr = resolveAsDataset(dataverseName, datasetName, parent, leadingVarExpr);
+ CallExpr datasetExpr =
+ resolveAsDataset(databaseName, dataverseName, datasetName, parent, leadingVarExpr);
if (datasetExpr != null) {
return datasetExpr;
} else {
@@ -130,8 +131,11 @@
throw new CompilationException(ErrorCode.INVALID_DATABASE_OBJECT_NAME, fa.getSourceLocation(),
dataverseNameParts.toString());
}
+ //TODO(DB): decide
+ String databaseName = MetadataUtil.resolveDatabase(null, dataverseName);
String datasetName = fa.getIdent().getValue();
- CallExpr datasetExpr = resolveAsDataset(dataverseName, datasetName, parent, topVarExpr);
+ CallExpr datasetExpr =
+ resolveAsDataset(databaseName, dataverseName, datasetName, parent, topVarExpr);
if (datasetExpr != null) {
return datasetExpr;
}
@@ -169,41 +173,43 @@
// try resolving the undefined identifier reference as a dataset access.
// for a From/Join/UNNEST/Quantifiers binding expression
- private CallExpr resolveAsDataset(DataverseName dataverseName, String datasetName, ILangExpression parent,
- VariableExpr varExpr) throws CompilationException {
+ private CallExpr resolveAsDataset(String databaseName, DataverseName dataverseName, String datasetName,
+ ILangExpression parent, VariableExpr varExpr) throws CompilationException {
if (!parent.accept(CheckDatasetOnlyResolutionVisitor.INSTANCE, varExpr)) {
return null;
}
SourceLocation sourceLoc = varExpr.getSourceLocation();
+ String resolvedDatabaseName;
DataverseName resolvedDataverseName;
String resolvedDatasetName;
boolean viaSynonym, isView;
- ViewDecl viewDecl = findDeclaredView(dataverseName, datasetName);
+ ViewDecl viewDecl = findDeclaredView(databaseName, dataverseName, datasetName);
if (viewDecl != null) {
+ resolvedDatabaseName = viewDecl.getViewName().getDatabaseName();
resolvedDataverseName = viewDecl.getViewName().getDataverseName();
resolvedDatasetName = viewDecl.getViewName().getDatasetName();
viaSynonym = false;
isView = true;
} else {
- Pair<Dataset, Boolean> p = findDataset(dataverseName, datasetName, true, sourceLoc);
+ Pair<Dataset, Boolean> p = findDataset(databaseName, dataverseName, datasetName, true, sourceLoc);
if (p == null) {
throw createUnresolvableError(dataverseName, datasetName, sourceLoc);
}
Dataset resolvedDataset = p.first;
+ resolvedDatabaseName = resolvedDataset.getDatabaseName();
resolvedDataverseName = resolvedDataset.getDataverseName();
resolvedDatasetName = resolvedDataset.getDatasetName();
viaSynonym = p.second;
isView = resolvedDataset.getDatasetType() == DatasetConfig.DatasetType.VIEW;
}
- List<Expression> argList = new ArrayList<>(3 + (viaSynonym ? 2 : 0));
- argList.add(new LiteralExpr(new StringLiteral(resolvedDataverseName.getCanonicalForm())));
- argList.add(new LiteralExpr(new StringLiteral(resolvedDatasetName)));
- argList.add(new LiteralExpr(isView ? TrueLiteral.INSTANCE : FalseLiteral.INSTANCE));
+ CallExpr callExpr;
if (viaSynonym) {
- argList.add(new LiteralExpr(new StringLiteral(dataverseName.getCanonicalForm())));
- argList.add(new LiteralExpr(new StringLiteral(datasetName)));
+ callExpr = FunctionUtil.makeSynonymDatasetCallExpr(resolvedDatabaseName, resolvedDataverseName,
+ resolvedDatasetName, isView, databaseName, dataverseName, datasetName);
+ } else {
+ callExpr = FunctionUtil.makeDatasetCallExpr(resolvedDatabaseName, resolvedDataverseName,
+ resolvedDatasetName, isView);
}
- CallExpr callExpr = new CallExpr(new FunctionSignature(BuiltinFunctions.DATASET), argList);
callExpr.addHints(varExpr.getHints());
callExpr.setSourceLocation(sourceLoc);
return callExpr;
@@ -219,7 +225,7 @@
return generateFieldAccess(contextVar, varExpr.getVar(), varExpr.getSourceLocation());
}
- // Rewrites for an field access by name
+ // Rewrites for a field access by name
static FieldAccessor generateFieldAccess(Expression sourceExpr, VarIdentifier fieldVar, SourceLocation sourceLoc) {
VarIdentifier fieldName = SqlppVariableUtil.toUserDefinedVariableName(fieldVar.getValue());
FieldAccessor fa = new FieldAccessor(sourceExpr, fieldName);
@@ -263,28 +269,26 @@
dataverseName == null ? defaultDataverseName : dataverseName);
}
- private Pair<Dataset, Boolean> findDataset(DataverseName dataverseName, String datasetName, boolean includingViews,
- SourceLocation sourceLoc) throws CompilationException {
+ private Pair<Dataset, Boolean> findDataset(String databaseName, DataverseName dataverseName, String datasetName,
+ boolean includingViews, SourceLocation sourceLoc) throws CompilationException {
try {
Boolean viaSynonym = false;
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
- Triple<DataverseName, String, Boolean> dsName = metadataProvider.resolveDatasetNameUsingSynonyms(database,
- dataverseName, datasetName, includingViews);
+ Quadruple<DataverseName, String, Boolean, String> dsName = metadataProvider
+ .resolveDatasetNameUsingSynonyms(databaseName, dataverseName, datasetName, includingViews);
if (dsName != null) {
- dataverseName = dsName.first;
- database = MetadataUtil.resolveDatabase(null, dataverseName);
- datasetName = dsName.second;
- viaSynonym = dsName.third;
+ dataverseName = dsName.getFirst();
+ databaseName = dsName.getFourth();
+ datasetName = dsName.getSecond();
+ viaSynonym = dsName.getThird();
}
- Dataset dataset = metadataProvider.findDataset(database, dataverseName, datasetName, includingViews);
+ Dataset dataset = metadataProvider.findDataset(databaseName, dataverseName, datasetName, includingViews);
return dataset == null ? null : new Pair<>(dataset, viaSynonym);
} catch (AlgebricksException e) {
throw new CompilationException(ErrorCode.COMPILATION_ERROR, e, sourceLoc, e.getMessage());
}
}
- private ViewDecl findDeclaredView(DataverseName dataverseName, String viewName) {
- String databaseName = MetadataUtil.resolveDatabase(null, dataverseName);
+ private ViewDecl findDeclaredView(String databaseName, DataverseName dataverseName, String viewName) {
Map<DatasetFullyQualifiedName, ViewDecl> declaredViews = context.getDeclaredViews();
return declaredViews.isEmpty() ? null
: declaredViews.get(new DatasetFullyQualifiedName(databaseName, dataverseName, viewName));
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/SqlppDeleteRewriteVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/SqlppDeleteRewriteVisitor.java
index 7e7b654..67596a9 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/SqlppDeleteRewriteVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/SqlppDeleteRewriteVisitor.java
@@ -18,20 +18,17 @@
*/
package org.apache.asterix.lang.sqlpp.visitor;
-import java.util.ArrayList;
import java.util.Collections;
-import java.util.List;
-import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.common.metadata.DataverseName;
+import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.lang.common.base.Expression;
import org.apache.asterix.lang.common.clause.WhereClause;
import org.apache.asterix.lang.common.expression.CallExpr;
-import org.apache.asterix.lang.common.expression.LiteralExpr;
import org.apache.asterix.lang.common.expression.VariableExpr;
-import org.apache.asterix.lang.common.literal.StringLiteral;
import org.apache.asterix.lang.common.statement.DeleteStatement;
import org.apache.asterix.lang.common.statement.Query;
+import org.apache.asterix.lang.common.util.FunctionUtil;
import org.apache.asterix.lang.sqlpp.clause.FromClause;
import org.apache.asterix.lang.sqlpp.clause.FromTerm;
import org.apache.asterix.lang.sqlpp.clause.SelectBlock;
@@ -42,7 +39,6 @@
import org.apache.asterix.lang.sqlpp.struct.SetOperationInput;
import org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppAstVisitor;
import org.apache.asterix.metadata.declared.MetadataProvider;
-import org.apache.asterix.om.functions.BuiltinFunctions;
/**
* This class rewrites delete statement to contain a query that specifying
@@ -57,15 +53,14 @@
@Override
public Void visit(DeleteStatement deleteStmt, MetadataProvider metadataProvider) {
- List<Expression> arguments = new ArrayList<>();
DataverseName dataverseName = deleteStmt.getDataverseName();
+ String databaseName = MetadataUtil.resolveDatabase(null, deleteStmt.getDataverseName());
if (dataverseName == null) {
dataverseName = metadataProvider.getDefaultDataverseName();
+ databaseName = metadataProvider.getDefaultDatabase();
}
String datasetName = deleteStmt.getDatasetName();
- arguments.add(new LiteralExpr(new StringLiteral(dataverseName.getCanonicalForm())));
- arguments.add(new LiteralExpr(new StringLiteral(datasetName)));
- CallExpr callExpression = new CallExpr(new FunctionSignature(BuiltinFunctions.DATASET), arguments);
+ CallExpr callExpression = FunctionUtil.makeDatasetCallExpr(databaseName, dataverseName, datasetName);
callExpression.setSourceLocation(deleteStmt.getSourceLocation());
// From clause.
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/SqlppSynonymRewriteVisitor.java b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/SqlppSynonymRewriteVisitor.java
index 76b5cf3..f50a63b 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/SqlppSynonymRewriteVisitor.java
+++ b/asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/visitor/SqlppSynonymRewriteVisitor.java
@@ -29,7 +29,7 @@
import org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppAstVisitor;
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.common.utils.Triple;
+import org.apache.hyracks.algebricks.common.utils.Quadruple;
import org.apache.hyracks.api.exceptions.SourceLocation;
/**
@@ -45,11 +45,11 @@
@Override
public Void visit(LoadStatement loadStmt, MetadataProvider metadataProvider) throws CompilationException {
String database = MetadataUtil.resolveDatabase(null, loadStmt.getDataverseName());
- Triple<DataverseName, String, Boolean> dsName = resolveDatasetNameUsingSynonyms(metadataProvider, database,
- loadStmt.getDataverseName(), loadStmt.getDatasetName(), false, loadStmt.getSourceLocation());
+ Quadruple<DataverseName, String, Boolean, String> dsName = resolveDatasetNameUsingSynonyms(metadataProvider,
+ database, loadStmt.getDataverseName(), loadStmt.getDatasetName(), false, loadStmt.getSourceLocation());
if (dsName != null) {
- loadStmt.setDataverseName(dsName.first);
- loadStmt.setDatasetName(dsName.second);
+ loadStmt.setDataverseName(dsName.getFirst());
+ loadStmt.setDatasetName(dsName.getSecond());
}
return null;
}
@@ -57,11 +57,12 @@
@Override
public Void visit(InsertStatement insertStmt, MetadataProvider metadataProvider) throws CompilationException {
String database = MetadataUtil.resolveDatabase(null, insertStmt.getDataverseName());
- Triple<DataverseName, String, Boolean> dsName = resolveDatasetNameUsingSynonyms(metadataProvider, database,
- insertStmt.getDataverseName(), insertStmt.getDatasetName(), false, insertStmt.getSourceLocation());
+ Quadruple<DataverseName, String, Boolean, String> dsName =
+ resolveDatasetNameUsingSynonyms(metadataProvider, database, insertStmt.getDataverseName(),
+ insertStmt.getDatasetName(), false, insertStmt.getSourceLocation());
if (dsName != null) {
- insertStmt.setDataverseName(dsName.first);
- insertStmt.setDatasetName(dsName.second);
+ insertStmt.setDataverseName(dsName.getFirst());
+ insertStmt.setDatasetName(dsName.getSecond());
}
return null;
}
@@ -69,20 +70,21 @@
@Override
public Void visit(DeleteStatement deleteStmt, MetadataProvider metadataProvider) throws CompilationException {
String database = MetadataUtil.resolveDatabase(null, deleteStmt.getDataverseName());
- Triple<DataverseName, String, Boolean> dsName = resolveDatasetNameUsingSynonyms(metadataProvider, database,
- deleteStmt.getDataverseName(), deleteStmt.getDatasetName(), false, deleteStmt.getSourceLocation());
+ Quadruple<DataverseName, String, Boolean, String> dsName =
+ resolveDatasetNameUsingSynonyms(metadataProvider, database, deleteStmt.getDataverseName(),
+ deleteStmt.getDatasetName(), false, deleteStmt.getSourceLocation());
if (dsName != null) {
- deleteStmt.setDataverseName(dsName.first);
- deleteStmt.setDatasetName(dsName.second);
+ deleteStmt.setDataverseName(dsName.getFirst());
+ deleteStmt.setDatasetName(dsName.getSecond());
}
return null;
}
- private Triple<DataverseName, String, Boolean> resolveDatasetNameUsingSynonyms(MetadataProvider metadataProvider,
- String database, DataverseName dataverseName, String datasetName, boolean includingViews,
- SourceLocation sourceLoc) throws CompilationException {
+ private Quadruple<DataverseName, String, Boolean, String> resolveDatasetNameUsingSynonyms(
+ MetadataProvider metadataProvider, String databaseName, DataverseName dataverseName, String datasetName,
+ boolean includingViews, SourceLocation sourceLoc) throws CompilationException {
try {
- return metadataProvider.resolveDatasetNameUsingSynonyms(database, dataverseName, datasetName,
+ return metadataProvider.resolveDatasetNameUsingSynonyms(databaseName, dataverseName, datasetName,
includingViews);
} catch (AlgebricksException e) {
throw new CompilationException(ErrorCode.COMPILATION_ERROR, e, sourceLoc, e.getMessage());
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourcePartitioningProvider.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourcePartitioningProvider.java
index 54aa1c9..238cf69 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourcePartitioningProvider.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourcePartitioningProvider.java
@@ -23,7 +23,6 @@
import java.util.Set;
import org.apache.asterix.common.cluster.PartitioningProperties;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.metadata.entities.Dataset;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.common.utils.ListSet;
@@ -65,9 +64,8 @@
break;
case DataSource.Type.FEED:
String dsName = ((FeedDataSource) ds).getTargetDataset();
- String database = MetadataUtil.resolveDatabase(null, ds.getId().getDataverseName());
- Dataset feedDs = ((MetadataProvider) ctx.getMetadataProvider()).findDataset(database,
- ds.getId().getDataverseName(), dsName);
+ Dataset feedDs = ((MetadataProvider) ctx.getMetadataProvider())
+ .findDataset(ds.getId().getDatabaseName(), ds.getId().getDataverseName(), dsName);
PartitioningProperties partitioningProperties =
((MetadataProvider) ctx.getMetadataProvider()).getPartitioningProperties(feedDs);
pp = getFeedDatasetPartitioningProperty(ds, domain, scanVariables,
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DatasetDataSource.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DatasetDataSource.java
index ac91c1f..9d567fc 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DatasetDataSource.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DatasetDataSource.java
@@ -30,7 +30,6 @@
import org.apache.asterix.common.config.DatasetConfig.DatasetType;
import org.apache.asterix.common.external.IExternalFilterEvaluatorFactory;
import org.apache.asterix.common.metadata.DataverseName;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.external.api.ITypedAdapterFactory;
import org.apache.asterix.external.util.ExternalDataUtils;
import org.apache.asterix.metadata.IDatasetDetails;
@@ -126,7 +125,7 @@
IVariableTypeEnvironment typeEnv, JobGenContext context, JobSpecification jobSpec, Object implConfig,
IProjectionFiltrationInfo projectionFiltrationInfo) throws AlgebricksException {
String itemTypeName = dataset.getItemTypeName();
- String itemTypeDatabase = MetadataUtil.resolveDatabase(null, dataset.getItemTypeDataverseName());
+ String itemTypeDatabase = dataset.getItemTypeDatabaseName();
IAType itemType = MetadataManager.INSTANCE.getDatatype(metadataProvider.getMetadataTxnContext(),
itemTypeDatabase, dataset.getItemTypeDataverseName(), itemTypeName).getDatatype();
switch (dataset.getDatasetType()) {
@@ -150,7 +149,7 @@
case INTERNAL:
DataSourceId id = getId();
DataverseName dataverseName = id.getDataverseName();
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
+ String database = id.getDatabaseName();
String datasetName = id.getDatasourceName();
Index primaryIndex = MetadataManager.INSTANCE.getIndex(metadataProvider.getMetadataTxnContext(),
database, dataverseName, datasetName, datasetName);
@@ -158,8 +157,7 @@
ARecordType datasetType = (ARecordType) itemType;
ARecordType metaItemType = null;
if (dataset.hasMetaPart()) {
- String metaItemTypeDatabase =
- MetadataUtil.resolveDatabase(null, dataset.getMetaItemTypeDataverseName());
+ String metaItemTypeDatabase = dataset.getMetaItemTypeDatabaseName();
metaItemType = (ARecordType) MetadataManager.INSTANCE
.getDatatype(metadataProvider.getMetadataTxnContext(), metaItemTypeDatabase,
dataset.getMetaItemTypeDataverseName(), dataset.getMetaItemTypeName())
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FunctionDataSource.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FunctionDataSource.java
index 683bf0f..a4f1d7b 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FunctionDataSource.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FunctionDataSource.java
@@ -26,7 +26,6 @@
import org.apache.asterix.common.cluster.IClusterStateManager;
import org.apache.asterix.common.functions.FunctionSignature;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.external.adapter.factory.GenericAdapterFactory;
import org.apache.asterix.external.api.IDataParserFactory;
import org.apache.asterix.external.parser.factory.ADMDataParserFactory;
@@ -136,7 +135,6 @@
}
protected static DataSourceId createDataSourceId(FunctionIdentifier fid, String... parameters) {
- return new DataSourceId(MetadataUtil.resolveDatabase(null, FunctionSignature.getDataverseName(fid)),
- FunctionSignature.getDataverseName(fid), fid.getName(), parameters);
+ return new DataSourceId(fid.getDatabase(), FunctionSignature.getDataverseName(fid), fid.getName(), parameters);
}
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataManagerUtil.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataManagerUtil.java
index 3625a86..9b4c715 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataManagerUtil.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataManagerUtil.java
@@ -30,7 +30,6 @@
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.common.metadata.MetadataConstants;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.metadata.MetadataManager;
import org.apache.asterix.metadata.MetadataTransactionContext;
import org.apache.asterix.metadata.entities.Dataset;
@@ -228,8 +227,7 @@
public static DataSource lookupSourceInMetadata(IClusterStateManager clusterStateManager,
MetadataTransactionContext mdTxnCtx, DataSourceId id) throws AlgebricksException {
- Dataset dataset = findDataset(mdTxnCtx, MetadataUtil.resolveDatabase(null, id.getDataverseName()),
- id.getDataverseName(), id.getDatasourceName());
+ Dataset dataset = findDataset(mdTxnCtx, id.getDatabaseName(), id.getDataverseName(), id.getDatasourceName());
if (dataset == null) {
throw new AsterixException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, id.getDatasourceName(),
id.getDataverseName());
@@ -247,11 +245,10 @@
id.getDataverseName());
}
- IAType itemType = findType(mdTxnCtx, MetadataUtil.resolveDatabase(null, dataset.getItemTypeDataverseName()),
- dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
- IAType metaItemType =
- findType(mdTxnCtx, MetadataUtil.resolveDatabase(null, dataset.getMetaItemTypeDataverseName()),
- dataset.getMetaItemTypeDataverseName(), dataset.getMetaItemTypeName());
+ IAType itemType = findType(mdTxnCtx, dataset.getItemTypeDatabaseName(), dataset.getItemTypeDataverseName(),
+ dataset.getItemTypeName());
+ IAType metaItemType = findType(mdTxnCtx, dataset.getMetaItemTypeDatabaseName(),
+ dataset.getMetaItemTypeDataverseName(), dataset.getMetaItemTypeName());
itemType = findTypeForDatasetWithoutType(itemType, metaItemType, dataset);
INodeDomain domain = findNodeDomain(clusterStateManager, mdTxnCtx, dataset.getNodeGroupName());
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
index da4abbe..8dcfeaf 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
@@ -110,6 +110,7 @@
import org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.common.utils.Quadruple;
import org.apache.hyracks.algebricks.common.utils.Triple;
import org.apache.hyracks.algebricks.core.algebra.base.Counter;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
@@ -401,13 +402,13 @@
}
public IAType findType(Dataset dataset) throws AlgebricksException {
- String typeDatabase = MetadataUtil.resolveDatabase(null, dataset.getItemTypeDataverseName());
- return findType(typeDatabase, dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
+ return findType(dataset.getItemTypeDatabaseName(), dataset.getItemTypeDataverseName(),
+ dataset.getItemTypeName());
}
public IAType findMetaType(Dataset dataset) throws AlgebricksException {
- String metaTypeDatabase = MetadataUtil.resolveDatabase(null, dataset.getMetaItemTypeDataverseName());
- return findType(metaTypeDatabase, dataset.getMetaItemTypeDataverseName(), dataset.getMetaItemTypeName());
+ return findType(dataset.getMetaItemTypeDatabaseName(), dataset.getMetaItemTypeDataverseName(),
+ dataset.getMetaItemTypeName());
}
public Feed findFeed(String database, DataverseName dataverseName, String feedName) throws AlgebricksException {
@@ -456,9 +457,9 @@
return MetadataManagerUtil.getDatasetIndexes(mdTxnCtx, database, dataverseName, datasetName);
}
- public Index findSampleIndex(DataverseName dataverseName, String datasetName) throws AlgebricksException {
+ public Index findSampleIndex(String database, DataverseName dataverseName, String datasetName)
+ throws AlgebricksException {
Pair<String, String> sampleIndexNames = IndexUtil.getSampleIndexNames(datasetName);
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
Index sampleIndex = getIndex(database, dataverseName, datasetName, sampleIndexNames.first);
if (sampleIndex != null && sampleIndex.getPendingOp() == MetadataUtil.PENDING_NO_OP) {
return sampleIndex;
@@ -467,9 +468,9 @@
return sampleIndex != null && sampleIndex.getPendingOp() == MetadataUtil.PENDING_NO_OP ? sampleIndex : null;
}
- public Triple<DataverseName, String, Boolean> resolveDatasetNameUsingSynonyms(String database,
+ public Quadruple<DataverseName, String, Boolean, String> resolveDatasetNameUsingSynonyms(String databaseName,
DataverseName dataverseName, String datasetName, boolean includingViews) throws AlgebricksException {
- String dbName = database;
+ String dbName = databaseName;
DataverseName dvName = dataverseName;
if (dbName == null && dvName == null) {
if (defaultDataverse == null) {
@@ -486,12 +487,11 @@
if (synonym == null) {
return null;
}
- //TODO(DB): object database
- dbName = MetadataUtil.databaseFor(synonym.getObjectDataverseName());
+ dbName = synonym.getObjectDatabaseName();
dvName = synonym.getObjectDataverseName();
datasetName = synonym.getObjectName();
}
- return new Triple<>(dvName, datasetName, synonym != null);
+ return new Quadruple<>(dvName, datasetName, synonym != null, dbName);
}
public Synonym findSynonym(String database, DataverseName dataverseName, String synonymName)
@@ -697,9 +697,8 @@
byte[] successValueForIndexOnlyPlan = null;
byte[] failValueForIndexOnlyPlan = null;
if (isIndexOnlyPlan) {
- String itemTypeDatabase = MetadataUtil.resolveDatabase(null, dataset.getItemTypeDataverseName());
- ARecordType recType = (ARecordType) findType(itemTypeDatabase, dataset.getItemTypeDataverseName(),
- dataset.getItemTypeName());
+ ARecordType recType = (ARecordType) findType(dataset.getItemTypeDatabaseName(),
+ dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
List<List<String>> secondaryKeyFields = secondaryIndexDetails.getKeyFieldNames();
List<IAType> secondaryKeyTypes = secondaryIndexDetails.getKeyFieldTypes();
Pair<IAType, Boolean> keyTypePair = Index.getNonNullableOpenFieldType(secondaryIndex,
@@ -801,7 +800,7 @@
JobSpecification spec) throws AlgebricksException {
DataverseName dataverseName = dataSource.getId().getDataverseName();
String datasetName = dataSource.getId().getDatasourceName();
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
+ String database = dataSource.getId().getDatabaseName();
Dataset dataset = findDataset(database, dataverseName, datasetName);
if (dataset == null) {
throw new AsterixException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, datasetName, dataverseName);
@@ -892,7 +891,7 @@
String indexName = dataSourceIndex.getId();
DataverseName dataverseName = dataSourceIndex.getDataSource().getId().getDataverseName();
String datasetName = dataSourceIndex.getDataSource().getId().getDatasourceName();
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
+ String database = dataSourceIndex.getDataSource().getId().getDatabaseName();
IOperatorSchema inputSchema;
if (inputSchemas.length > 0) {
@@ -944,6 +943,7 @@
Map<String, String> configuration, ARecordType itemType, IWarningCollector warningCollector,
IExternalFilterEvaluatorFactory filterEvaluatorFactory) throws AlgebricksException {
try {
+ configuration.put(ExternalDataConstants.KEY_DATABASE_DATAVERSE, dataset.getDatabaseName());
configuration.put(ExternalDataConstants.KEY_DATASET_DATAVERSE,
dataset.getDataverseName().getCanonicalForm());
return AdapterFactoryProvider.getAdapterFactory(getApplicationContext().getServiceContext(), adapterName,
@@ -1042,8 +1042,7 @@
List<LogicalVariable> additionalNonFilteringFields) throws AlgebricksException {
String datasetName = dataSource.getId().getDatasourceName();
- String database = MetadataUtil.resolveDatabase(null, dataSource.getId().getDataverseName());
- Dataset dataset = MetadataManagerUtil.findExistingDataset(mdTxnCtx, database,
+ Dataset dataset = MetadataManagerUtil.findExistingDataset(mdTxnCtx, dataSource.getId().getDatabaseName(),
dataSource.getId().getDataverseName(), datasetName);
int numKeys = keys.size();
int numFilterFields = DatasetUtil.getFilterField(dataset) == null ? 0 : 1;
@@ -1160,7 +1159,7 @@
throws AlgebricksException {
String indexName = dataSourceIndex.getId();
DataverseName dataverseName = dataSourceIndex.getDataSource().getId().getDataverseName();
- String database = MetadataUtil.resolveDatabase(null, dataverseName);
+ String database = dataSourceIndex.getDataSource().getId().getDatabaseName();
String datasetName = dataSourceIndex.getDataSource().getId().getDatasourceName();
Dataset dataset = MetadataManagerUtil.findExistingDataset(mdTxnCtx, database, dataverseName, datasetName);
@@ -1396,10 +1395,8 @@
throws AlgebricksException {
Dataset dataset = MetadataManagerUtil.findExistingDataset(mdTxnCtx, database, dataverseName, datasetName);
String itemTypeName = dataset.getItemTypeName();
- String itemTypeDatabase = MetadataUtil.resolveDatabase(null, dataset.getItemTypeDataverseName());
- IAType itemType = MetadataManager.INSTANCE
- .getDatatype(mdTxnCtx, itemTypeDatabase, dataset.getItemTypeDataverseName(), itemTypeName)
- .getDatatype();
+ IAType itemType = MetadataManager.INSTANCE.getDatatype(mdTxnCtx, dataset.getItemTypeDatabaseName(),
+ dataset.getItemTypeDataverseName(), itemTypeName).getDatatype();
validateRecordType(itemType);
ARecordType recType = (ARecordType) itemType;
Index secondaryIndex = MetadataManager.INSTANCE.getIndex(mdTxnCtx, dataset.getDatabaseName(),
@@ -1706,10 +1703,8 @@
String itemTypeName = dataset.getItemTypeName();
IAType itemType;
try {
- String itemTypeDatabase = MetadataUtil.resolveDatabase(null, dataset.getItemTypeDataverseName());
- itemType = MetadataManager.INSTANCE
- .getDatatype(mdTxnCtx, itemTypeDatabase, dataset.getItemTypeDataverseName(), itemTypeName)
- .getDatatype();
+ itemType = MetadataManager.INSTANCE.getDatatype(mdTxnCtx, dataset.getItemTypeDatabaseName(),
+ dataset.getItemTypeDataverseName(), itemTypeName).getDatatype();
if (itemType.getTypeTag() != ATypeTag.OBJECT) {
throw new AlgebricksException("Only record types can be tokenized.");
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/feeds/FeedMetadataUtil.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/feeds/FeedMetadataUtil.java
index 57b3f6b..ca50fcd 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/feeds/FeedMetadataUtil.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/feeds/FeedMetadataUtil.java
@@ -35,7 +35,6 @@
import org.apache.asterix.common.functions.ExternalFunctionLanguage;
import org.apache.asterix.common.metadata.DataverseName;
import org.apache.asterix.common.metadata.MetadataConstants;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.external.adapter.factory.ExternalAdapterFactory;
import org.apache.asterix.external.api.ITypedAdapterFactory;
import org.apache.asterix.external.feed.api.IFeed;
@@ -116,7 +115,8 @@
Map<String, String> configuration = feed.getConfiguration();
ARecordType adapterOutputType = getOutputType(feed, configuration.get(ExternalDataConstants.KEY_TYPE_NAME));
ARecordType metaType = getOutputType(feed, configuration.get(ExternalDataConstants.KEY_META_TYPE_NAME));
- ExternalDataUtils.prepareFeed(configuration, feed.getDataverseName(), feed.getFeedName());
+ ExternalDataUtils.prepareFeed(configuration, feed.getDatabaseName(), feed.getDataverseName(),
+ feed.getFeedName());
// Get adapter from metadata dataset <Metadata dataverse>
String adapterName = configuration.get(ExternalDataConstants.KEY_ADAPTER_NAME);
if (adapterName == null) {
@@ -126,9 +126,8 @@
MetadataConstants.SYSTEM_DATABASE, MetadataConstants.METADATA_DATAVERSE_NAME, adapterName);
// Get adapter from metadata dataset <The feed dataverse>
if (adapterEntity == null) {
- String feedDatabase = MetadataUtil.resolveDatabase(null, feed.getDataverseName());
- adapterEntity = MetadataManager.INSTANCE.getAdapter(mdTxnCtx, feedDatabase, feed.getDataverseName(),
- adapterName);
+ adapterEntity = MetadataManager.INSTANCE.getAdapter(mdTxnCtx, feed.getDatabaseName(),
+ feed.getDataverseName(), adapterName);
}
AdapterType adapterType;
ITypedAdapterFactory adapterFactory;
@@ -211,15 +210,15 @@
configuration.putAll(policyAccessor.getFeedPolicy());
adapterOutputType = getOutputType(feed, configuration.get(ExternalDataConstants.KEY_TYPE_NAME));
metaType = getOutputType(feed, configuration.get(ExternalDataConstants.KEY_META_TYPE_NAME));
- ExternalDataUtils.prepareFeed(configuration, feed.getDataverseName(), feed.getFeedName());
+ ExternalDataUtils.prepareFeed(configuration, feed.getDatabaseName(), feed.getDataverseName(),
+ feed.getFeedName());
// Get adapter from metadata dataset <Metadata dataverse>
adapterEntity = MetadataManager.INSTANCE.getAdapter(mdTxnCtx, MetadataConstants.SYSTEM_DATABASE,
MetadataConstants.METADATA_DATAVERSE_NAME, adapterName);
// Get adapter from metadata dataset <The feed dataverse>
if (adapterEntity == null) {
- String feedDatabase = MetadataUtil.resolveDatabase(null, feed.getDataverseName());
- adapterEntity = MetadataManager.INSTANCE.getAdapter(mdTxnCtx, feedDatabase, feed.getDataverseName(),
- adapterName);
+ adapterEntity = MetadataManager.INSTANCE.getAdapter(mdTxnCtx, feed.getDatabaseName(),
+ feed.getDataverseName(), adapterName);
}
if (adapterEntity != null) {
adapterType = adapterEntity.getType();
@@ -312,8 +311,8 @@
MetadataTransactionContext ctx = null;
try {
ctx = MetadataManager.INSTANCE.beginTransaction();
- String feedDatabase = MetadataUtil.resolveDatabase(null, feed.getDataverseName());
- Datatype t = MetadataManager.INSTANCE.getDatatype(ctx, feedDatabase, feed.getDataverseName(), fqOutputType);
+ Datatype t = MetadataManager.INSTANCE.getDatatype(ctx, feed.getDatabaseName(), feed.getDataverseName(),
+ fqOutputType);
if (t == null || t.getDatatype().getTypeTag() != ATypeTag.OBJECT) {
throw new MetadataException(ErrorCode.FEED_METADATA_UTIL_UNEXPECTED_FEED_DATATYPE, fqOutputType);
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/functions/ExternalFunctionCompilerUtil.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/functions/ExternalFunctionCompilerUtil.java
index 484c2f7..5f42089 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/functions/ExternalFunctionCompilerUtil.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/functions/ExternalFunctionCompilerUtil.java
@@ -26,7 +26,6 @@
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.functions.ExternalFunctionLanguage;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.metadata.entities.Function;
import org.apache.asterix.om.functions.IExternalFunctionInfo;
@@ -138,8 +137,8 @@
}
IAType type = BuiltinTypeMap.getBuiltinType(typeName);
if (type == null) {
- String database = MetadataUtil.resolveDatabase(null, typeSignature.getDataverseName());
- type = metadataProvider.findType(database, typeSignature.getDataverseName(), typeName);
+ type = metadataProvider.findType(typeSignature.getDatabaseName(), typeSignature.getDataverseName(),
+ typeName);
}
return type;
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java
index 96c437d..73797d8 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java
@@ -296,9 +296,8 @@
public static ARecordType getMetaType(MetadataProvider metadataProvider, Dataset dataset)
throws AlgebricksException {
if (dataset.hasMetaPart()) {
- String database = MetadataUtil.resolveDatabase(null, dataset.getMetaItemTypeDataverseName());
- return (ARecordType) metadataProvider.findType(database, dataset.getMetaItemTypeDataverseName(),
- dataset.getMetaItemTypeName());
+ return (ARecordType) metadataProvider.findType(dataset.getMetaItemTypeDatabaseName(),
+ dataset.getMetaItemTypeDataverseName(), dataset.getMetaItemTypeName());
}
return null;
}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SampleOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SampleOperationsHelper.java
index 6098ba2..3dd84ec 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SampleOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SampleOperationsHelper.java
@@ -28,7 +28,6 @@
import org.apache.asterix.common.cluster.PartitioningProperties;
import org.apache.asterix.common.config.OptimizationConfUtil;
import org.apache.asterix.common.context.IStorageComponentProvider;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.common.utils.StorageConstants;
import org.apache.asterix.formats.base.IDataFormat;
import org.apache.asterix.metadata.declared.MetadataProvider;
@@ -131,9 +130,8 @@
@Override
public void init() throws AlgebricksException {
- String database = MetadataUtil.resolveDatabase(null, dataset.getItemTypeDataverseName());
- itemType = (ARecordType) metadataProvider.findType(database, dataset.getItemTypeDataverseName(),
- dataset.getItemTypeName());
+ itemType = (ARecordType) metadataProvider.findType(dataset.getItemTypeDatabaseName(),
+ dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
metaType = DatasetUtil.getMetaType(metadataProvider, dataset);
itemType = (ARecordType) metadataProvider.findTypeForDatasetWithoutType(itemType, metaType, dataset);
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java
index 5b1bdd2..c873a44 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java
@@ -30,7 +30,6 @@
import org.apache.asterix.common.config.OptimizationConfUtil;
import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
-import org.apache.asterix.common.metadata.MetadataUtil;
import org.apache.asterix.common.utils.StoragePathUtil;
import org.apache.asterix.formats.base.IDataFormat;
import org.apache.asterix.formats.nontagged.BinaryBooleanInspector;
@@ -135,9 +134,8 @@
this.dataset = dataset;
this.index = index;
this.metadataProvider = metadataProvider;
- String database = MetadataUtil.resolveDatabase(null, dataset.getItemTypeDataverseName());
- ARecordType recordType = (ARecordType) metadataProvider.findType(database, dataset.getItemTypeDataverseName(),
- dataset.getItemTypeName());
+ ARecordType recordType = (ARecordType) metadataProvider.findType(dataset.getItemTypeDatabaseName(),
+ dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
this.metaType = DatasetUtil.getMetaType(metadataProvider, dataset);
this.itemType = (ARecordType) metadataProvider.findTypeForDatasetWithoutType(recordType, metaType, dataset);
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
index f958f6d..6c621e0 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
@@ -396,8 +396,8 @@
public static final FunctionIdentifier STRING_PARSE_JSON = FunctionConstants.newAsterix("parse-json", 1);
public static final FunctionIdentifier DATASET =
- FunctionConstants.newAsterix("dataset", FunctionIdentifier.VARARGS); // 1 or 2
- public static final FunctionIdentifier FEED_COLLECT = FunctionConstants.newAsterix("feed-collect", 6);
+ FunctionConstants.newAsterix("dataset", FunctionIdentifier.VARARGS); // 1, 2 or 3
+ public static final FunctionIdentifier FEED_COLLECT = FunctionConstants.newAsterix("feed-collect", 7);
public static final FunctionIdentifier FEED_INTERCEPT = FunctionConstants.newAsterix("feed-intercept", 1);
public static final FunctionIdentifier INDEX_SEARCH =