[ASTERIXDB-3259][MTD] Include database name in node group name
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- Fix Index compareTo() to include the database.
- Include the database name in error messages.
Change-Id: Ie0996be797666a731a92b2c2f4dc34809eba742c
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17932
Reviewed-by: Ali Alsuliman <ali.al.solaiman@gmail.com>
Reviewed-by: Murtadha Hubail <mhubail@apache.org>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
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 2760eee..9b28c58 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,6 +35,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.lang.common.util.FunctionUtil;
import org.apache.asterix.metadata.declared.DataSource;
import org.apache.asterix.metadata.declared.DataSourceIndex;
@@ -173,7 +174,7 @@
Dataset dataset = mp.findDataset(database, dataverseName, datasetName);
if (dataset == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, sourceLoc, datasetName,
- dataverseName);
+ MetadataUtil.dataverseName(database, dataverseName, mp.isUsingDatabase()));
}
if (dataset.getDatasetType() == DatasetType.EXTERNAL) {
return false;
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 b543b5f..eb93774 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,6 +28,7 @@
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;
@@ -131,7 +132,8 @@
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());
+ asid.getDatasourceName(),
+ MetadataUtil.dataverseName(asid.getDatabaseName(), asid.getDataverseName(), mp.isUsingDatabase()));
}
if (dataset.getDatasetType() != DatasetType.INTERNAL) {
return false;
@@ -320,7 +322,8 @@
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());
+ asid.getDatasourceName(), MetadataUtil.dataverseName(asid.getDatabaseName(),
+ asid.getDataverseName(), mp.isUsingDatabase()));
}
if (dataset.getDatasetType() != DatasetType.INTERNAL) {
setAsFinal(assignOp, context, finalAnnot);
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 93d3a00..68cb285 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
@@ -40,6 +40,7 @@
import org.apache.asterix.common.exceptions.ErrorCode;
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.base.Expression.Kind;
import org.apache.asterix.lang.common.base.ILangExpression;
@@ -207,7 +208,8 @@
if (dataset == null) {
// This would never happen since we check for this in AqlTranslator
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, sourceLoc, stmt.getDatasetName(),
- stmt.getDataverseName());
+ MetadataUtil.dataverseName(stmt.getDatabaseName(), stmt.getDataverseName(),
+ metadataProvider.isUsingDatabase()));
}
IAType itemType = metadataProvider.findType(dataset.getItemTypeDatabaseName(),
dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
@@ -831,7 +833,7 @@
Dataset dataset = metadataProvider.findDataset(database, dataverseName, datasetName);
if (dataset == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, sourceLoc, datasetName,
- dataverseName);
+ MetadataUtil.dataverseName(database, dataverseName, metadataProvider.isUsingDatabase()));
}
if (dataset.getDatasetType() == DatasetType.EXTERNAL) {
throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
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 e2939f5..5c1bea0 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
@@ -63,7 +63,8 @@
}
Dataset dataset = metadataProvider.findDataset(database, dataverseName, datasetName);
if (dataset == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, loc, datasetName, dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, loc, datasetName,
+ MetadataUtil.dataverseName(database, dataverseName, metadataProvider.isUsingDatabase()));
}
return new DatasetResourcesDatasource(context.getComputationNodeDomain(), dataset.getDatasetId());
}
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 28a38da..617d59b 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,6 +33,7 @@
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;
@@ -173,7 +174,8 @@
}
if (dataset == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, datasetFnCall.getSourceLocation(),
- datasetName, dataverseName);
+ datasetName,
+ MetadataUtil.dataverseName(database, dataverseName, metadataProvider.isUsingDatabase()));
}
return dataset;
}
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 cc85b30..d50315b 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
@@ -68,7 +68,8 @@
MetadataProvider metadataProvider = (MetadataProvider) context.getMetadataProvider();
final Dataset dataset = metadataProvider.findDataset(database, dataverseName, datasetName);
if (dataset == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, loc, datasetName, dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, loc, datasetName,
+ MetadataUtil.dataverseName(database, dataverseName, metadataProvider.isUsingDatabase()));
}
Index index = metadataProvider.getIndex(database, dataverseName, datasetName, indexName);
if (index == null) {
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 1c00178..46f13f1 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
@@ -203,7 +203,8 @@
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);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, loc, dsName,
+ MetadataUtil.dataverseName(dbName, dvName, mp.isUsingDatabase()));
}
return dataset;
}
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 7b02bd2..57e6784 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
@@ -63,7 +63,8 @@
MetadataProvider metadataProvider = (MetadataProvider) context.getMetadataProvider();
Dataset dataset = metadataProvider.findDataset(database, dataverseName, datasetName);
if (dataset == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, loc, datasetName, dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, loc, datasetName,
+ MetadataUtil.dataverseName(database, dataverseName, metadataProvider.isUsingDatabase()));
}
return new StorageComponentsDatasource(context.getComputationNodeDomain(), dataset.getDatasetId());
}
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 8c750b0..742bd42 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
@@ -628,14 +628,15 @@
if (dv == null) {
if (stmtUseDataverse.getIfExists()) {
if (warningCollector.shouldWarn()) {
- warningCollector.warn(
- Warning.of(stmtUseDataverse.getSourceLocation(), ErrorCode.UNKNOWN_DATAVERSE, dvName));
+ warningCollector.warn(Warning.of(stmtUseDataverse.getSourceLocation(),
+ ErrorCode.UNKNOWN_DATAVERSE,
+ MetadataUtil.dataverseName(dbName, dvName, metadataProvider.isUsingDatabase())));
}
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
return activeNamespace;
} else {
throw new MetadataException(ErrorCode.UNKNOWN_DATAVERSE, stmtUseDataverse.getSourceLocation(),
- dvName);
+ MetadataUtil.dataverseName(dbName, dvName, metadataProvider.isUsingDatabase()));
}
}
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
@@ -895,7 +896,8 @@
// Check if the dataverse exists
Dataverse dv = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, databaseName, dataverseName);
if (dv == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc,
+ MetadataUtil.dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
IDatasetDetails datasetDetails;
@@ -1215,9 +1217,9 @@
Collections.shuffle(allNodeList);
selectedNodes.addAll(allNodeList.subList(0, nodegroupCardinality));
}
- //TODO(DB): node groups with database
// Creates the associated node group for the dataset.
- return DatasetUtil.createNodeGroupForNewDataset(dataverseName, datasetName, selectedNodes, metadataProvider);
+ return DatasetUtil.createNodeGroupForNewDataset(databaseName, dataverseName, datasetName, selectedNodes,
+ metadataProvider);
}
public void handleCreateIndexStatement(MetadataProvider metadataProvider, Statement stmt,
@@ -1255,13 +1257,14 @@
// Check if the dataverse exists
Dataverse dv = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, databaseName, dataverseName);
if (dv == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc,
+ MetadataUtil.dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
Dataset ds = metadataProvider.findDataset(databaseName, dataverseName, datasetName);
if (ds == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, sourceLoc, datasetName,
- dataverseName);
+ MetadataUtil.dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
DatasetType datasetType = ds.getDatasetType();
@@ -1628,7 +1631,7 @@
Dataverse dv = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, databaseName, dataverseName);
if (dv == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, stmtCreateFilter.getSourceLocation(),
- dataverseName);
+ MetadataUtil.dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
String filterName = stmtCreateFilter.getFilterName();
@@ -1914,7 +1917,8 @@
try {
Dataverse dv = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, databaseName, dataverseName);
if (dv == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc,
+ MetadataUtil.dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
Datatype dt = MetadataManager.INSTANCE.getDatatype(mdTxnCtx, databaseName, dataverseName, typeName);
if (dt != null) {
@@ -2127,7 +2131,8 @@
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
return false;
} else {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, MetadataUtil
+ .dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
}
@@ -2320,12 +2325,14 @@
if (dv == null) {
if (ifExists) {
if (warningCollector.shouldWarn()) {
- warningCollector.warn(Warning.of(sourceLoc, ErrorCode.UNKNOWN_DATAVERSE, dataverseName));
+ warningCollector.warn(Warning.of(sourceLoc, ErrorCode.UNKNOWN_DATAVERSE, MetadataUtil
+ .dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase())));
}
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx.getValue());
return false;
} else {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, MetadataUtil
+ .dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
}
ds = metadataProvider.findDataset(databaseName, dataverseName, datasetName, true);
@@ -2335,11 +2342,12 @@
return false;
} else {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, sourceLoc, datasetName,
- dataverseName);
+ MetadataUtil.dataverseName(databaseName, dataverseName,
+ metadataProvider.isUsingDatabase()));
}
} else if (ds.getDatasetType() == DatasetType.VIEW) {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, sourceLoc, datasetName,
- dataverseName);
+ MetadataUtil.dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
validateDatasetState(metadataProvider, ds, sourceLoc);
@@ -2430,7 +2438,7 @@
Dataset ds = metadataProvider.findDataset(databaseName, dataverseName, datasetName);
if (ds == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, sourceLoc, datasetName,
- dataverseName);
+ MetadataUtil.dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
if (ds.getDatasetType() == DatasetType.INTERNAL) {
Index index = MetadataManager.INSTANCE.getIndex(mdTxnCtx, databaseName, dataverseName, datasetName,
@@ -2624,12 +2632,14 @@
if (dv == null) {
if (stmtTypeDrop.getIfExists()) {
if (warningCollector.shouldWarn()) {
- warningCollector.warn(Warning.of(sourceLoc, ErrorCode.UNKNOWN_DATAVERSE, dataverseName));
+ warningCollector.warn(Warning.of(sourceLoc, ErrorCode.UNKNOWN_DATAVERSE, MetadataUtil
+ .dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase())));
}
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
return;
} else {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, MetadataUtil
+ .dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
}
@@ -2732,7 +2742,8 @@
try {
Dataverse dv = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, databaseName, dataverseName);
if (dv == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc,
+ MetadataUtil.dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
Namespace ns = new Namespace(dv.getDatabaseName(), dv.getDataverseName());
Dataset existingDataset =
@@ -2786,7 +2797,8 @@
MetadataManager.INSTANCE.getDataverse(mdTxnCtx, refDatabaseName, refDataverseName);
if (refDataverse == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc,
- refDataverseName);
+ MetadataUtil.dataverseName(refDatabaseName, refDataverseName,
+ metadataProvider.isUsingDatabase()));
}
}
String refDatasetName = foreignKeyDecl.getReferencedDatasetName().getValue();
@@ -2941,12 +2953,14 @@
if (stmtViewDrop.getIfExists()) {
if (warningCollector.shouldWarn()) {
warningCollector.warn(Warning.of(stmtViewDrop.getSourceLocation(), ErrorCode.UNKNOWN_DATAVERSE,
- dataverseName));
+ MetadataUtil.dataverseName(databaseName, dataverseName,
+ metadataProvider.isUsingDatabase())));
}
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
return false;
} else {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, MetadataUtil
+ .dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
}
Dataset dataset = metadataProvider.findDataset(databaseName, dataverseName, viewName, true);
@@ -3041,7 +3055,8 @@
try {
Dataverse dv = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, databaseName, dataverseName);
if (dv == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc,
+ MetadataUtil.dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
Namespace ns = new Namespace(dv.getDatabaseName(), dv.getDataverseName());
List<TypeSignature> existingInlineTypes;
@@ -3324,7 +3339,8 @@
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
return false;
} else {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, MetadataUtil
+ .dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
}
Function function = MetadataManager.INSTANCE.getFunction(mdTxnCtx, signature);
@@ -3386,7 +3402,8 @@
try {
Dataverse dv = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, databaseName, dataverseName);
if (dv == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc,
+ MetadataUtil.dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
String adapterName = cas.getAdapterName();
DatasourceAdapter adapter =
@@ -3469,7 +3486,8 @@
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
return false;
} else {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, MetadataUtil
+ .dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
}
DatasourceAdapter adapter =
@@ -3526,7 +3544,8 @@
try {
Dataverse dv = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, databaseName, dataverseName);
if (dv == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE,
+ MetadataUtil.dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
ExternalFunctionLanguage language = cls.getLang();
existingLibrary = MetadataManager.INSTANCE.getLibrary(mdTxnCtx, databaseName, dataverseName, libraryName);
@@ -3664,7 +3683,8 @@
return false;
} else {
throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, stmtDropLibrary.getSourceLocation(),
- dataverseName);
+ MetadataUtil.dataverseName(databaseName, dataverseName,
+ metadataProvider.isUsingDatabase()));
}
}
Library library = MetadataManager.INSTANCE.getLibrary(mdTxnCtx, databaseName, dataverseName, libraryName);
@@ -3756,7 +3776,8 @@
try {
Dataverse dv = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, databaseName, dataverseName);
if (dv == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, css.getSourceLocation(), dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, css.getSourceLocation(),
+ MetadataUtil.dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
Synonym synonym = MetadataManager.INSTANCE.getSynonym(metadataProvider.getMetadataTxnContext(),
databaseName, dataverseName, synonymName);
@@ -3862,7 +3883,7 @@
protected Map<String, String> createExternalDataPropertiesForCopyFromStmt(String databaseName,
DataverseName dataverseName, CopyFromStatement copyFromStatement, Datatype itemType,
- MetadataTransactionContext mdTxnCtx) throws AlgebricksException {
+ MetadataTransactionContext mdTxnCtx, MetadataProvider md) throws AlgebricksException {
ExternalDetailsDecl edd = copyFromStatement.getExternalDetails();
Map<String, String> properties = copyFromStatement.getExternalDetails().getProperties();
String path = copyFromStatement.getPath();
@@ -3891,7 +3912,8 @@
Dataset dataset = metadataProvider.findDataset(databaseName, dataverseName, copyStmt.getDatasetName());
if (dataset == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, stmt.getSourceLocation(),
- datasetName, dataverseName);
+ datasetName,
+ MetadataUtil.dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
Datatype itemType = MetadataManager.INSTANCE.getDatatype(mdTxnCtx, dataset.getItemTypeDatabaseName(),
dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
@@ -3911,7 +3933,7 @@
}
ExternalDetailsDecl externalDetails = copyStmt.getExternalDetails();
Map<String, String> properties = createExternalDataPropertiesForCopyFromStmt(databaseName, dataverseName,
- copyStmt, itemType, mdTxnCtx);
+ copyStmt, itemType, mdTxnCtx, metadataProvider);
ExternalDataUtils.normalize(properties);
ExternalDataUtils.validate(properties);
validateExternalDatasetProperties(externalDetails, properties, copyStmt.getSourceLocation(), mdTxnCtx,
@@ -3997,7 +4019,8 @@
try {
ExternalDetailsDecl edd = copyTo.getExternalDetailsDecl();
edd.setProperties(createAndValidateAdapterConfigurationForCopyToStmt(edd,
- ExternalDataConstants.WRITER_SUPPORTED_ADAPTERS, copyTo.getSourceLocation(), mdTxnCtx));
+ ExternalDataConstants.WRITER_SUPPORTED_ADAPTERS, copyTo.getSourceLocation(), mdTxnCtx,
+ metadataProvider));
Map<VarIdentifier, IAObject> externalVars = createExternalVariables(copyTo, stmtParams);
// Query Rewriting (happens under the same ongoing metadata transaction)
@@ -4646,7 +4669,7 @@
Dataset ds = metadataProvider.findDataset(databaseName, dataverseName, datasetName);
if (ds == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, sourceLoc, datasetName,
- dataverseName);
+ MetadataUtil.dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
if (fc == null) {
throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, "Feed " + feedName
@@ -4703,13 +4726,14 @@
// Check if the dataverse exists
Dataverse dv = MetadataManager.INSTANCE.getDataverse(mdTxnCtx, databaseName, dataverseName);
if (dv == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc,
+ MetadataUtil.dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
// Check if the dataset exists
ds = metadataProvider.findDataset(databaseName, dataverseName, datasetName);
if (ds == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, sourceLoc, datasetName,
- dataverseName);
+ MetadataUtil.dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
if (ds.getDatasetType() == DatasetType.INTERNAL) {
validateDatasetState(metadataProvider, ds, sourceLoc);
@@ -4932,7 +4956,7 @@
Dataset ds = metadataProvider.findDataset(databaseName, dataverseName, datasetName);
if (ds == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, sourceLoc, datasetName,
- dataverseName);
+ MetadataUtil.dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
if (ds.getDatasetType() != DatasetType.INTERNAL) {
throw new CompilationException(ErrorCode.OPERATION_NOT_SUPPORTED, sourceLoc);
@@ -5068,7 +5092,7 @@
Dataset ds = metadataProvider.findDataset(databaseName, dataverseName, datasetName);
if (ds == null) {
throw new CompilationException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, sourceLoc, datasetName,
- dataverseName);
+ MetadataUtil.dataverseName(databaseName, dataverseName, metadataProvider.isUsingDatabase()));
}
// Prepare jobs to compact the datatset and its indexes
List<Index> indexes =
@@ -5591,7 +5615,7 @@
protected Map<String, String> createAndValidateAdapterConfigurationForCopyToStmt(
ExternalDetailsDecl externalDetailsDecl, Set<String> supportedAdapters, SourceLocation sourceLocation,
- MetadataTransactionContext mdTxnCtx) throws AlgebricksException {
+ MetadataTransactionContext mdTxnCtx, MetadataProvider md) throws AlgebricksException {
String adapterName = externalDetailsDecl.getAdapter();
Map<String, String> properties = externalDetailsDecl.getProperties();
WriterValidationUtil.validateWriterConfiguration(adapterName, supportedAdapters, properties, sourceLocation);
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 7b7c5d4..180b6cc 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
@@ -121,9 +121,9 @@
if (!targetNcNames.isEmpty()) {
// Creates a node group for rebalance.
- String nodeGroupName = DatasetUtil.createNodeGroupForNewDataset(sourceDataset.getDataverseName(),
- sourceDataset.getDatasetName(), sourceDataset.getRebalanceCount() + 1, targetNcNames,
- metadataProvider);
+ String nodeGroupName = DatasetUtil.createNodeGroupForNewDataset(sourceDataset.getDatabaseName(),
+ sourceDataset.getDataverseName(), sourceDataset.getDatasetName(),
+ sourceDataset.getRebalanceCount() + 1, targetNcNames, metadataProvider);
// The target dataset for rebalance.
targetDataset = sourceDataset.getTargetDatasetForRebalance(nodeGroupName);
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/cloud_storage/CloudStorageTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/cloud_storage/CloudStorageTest.java
index a23da8c..5f7a037 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/cloud_storage/CloudStorageTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/cloud_storage/CloudStorageTest.java
@@ -64,6 +64,7 @@
public static void setUp() throws Exception {
LocalCloudUtil.startS3CloudEnvironment(true);
TestExecutor testExecutor = new TestExecutor(DELTA_RESULT_PATH);
+ testExecutor.executorId = "cloud";
testExecutor.stripSubstring = "//DB:";
LangExecutionUtil.setUp(CONFIG_FILE_NAME, testExecutor);
System.setProperty(GlobalConfig.CONFIG_FILE_PROPERTY, CONFIG_FILE_NAME);
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
index 9498979..8641bd6 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java
@@ -251,6 +251,7 @@
private static final String PROFILE_QUERY_TYPE = "profile";
private static final String PLANS_QUERY_TYPE = "plans";
private static final String SIGNATURE_QUERY_TYPE = "signature";
+ private static final String DEF_REPLACER = "def";
private static final HashMap<Integer, ITestServer> runningTestServers = new HashMap<>();
private static Map<String, InetSocketAddress> ncEndPoints;
@@ -277,6 +278,7 @@
protected String deltaPath = null;
public String stripSubstring = null;
+ public String executorId = null;
public TestExecutor() {
this(Collections.singletonList(
@@ -1844,13 +1846,8 @@
}
protected static boolean isExpected(Exception e, CompilationUnit cUnit) {
- final List<String> expErrors = cUnit.getExpectedError();
- for (String exp : expErrors) {
- if (e.toString().contains(exp) || containsPattern(e.toString(), exp)) {
- return true;
- }
- }
- return false;
+ return cUnit.getExpectedError().stream().anyMatch(
+ exp -> e.toString().contains(exp.getValue()) || containsPattern(e.toString(), exp.getValue()));
}
private static boolean containsPattern(String exception, String maybePattern) {
@@ -2147,7 +2144,9 @@
int numOfFiles = 0;
List<CompilationUnit> cUnits = testCaseCtx.getTestCase().getCompilationUnit();
for (CompilationUnit cUnit : cUnits) {
- testCaseCtx.expectedErrors = cUnit.getExpectedError();
+ fixupMessages(cUnit);
+ testCaseCtx.expectedErrors = cUnit.getExpectedError().stream().map(CompilationUnit.ExpectedError::getValue)
+ .collect(Collectors.toList());
testCaseCtx.expectedWarnings = new BitSet(cUnit.getExpectedWarn().size());
testCaseCtx.expectedWarnings.set(0, cUnit.getExpectedWarn().size());
LOGGER.info(
@@ -2221,6 +2220,30 @@
}
}
+ private void fixupMessages(CompilationUnit cUnit) {
+ String replacerId = executorId == null ? DEF_REPLACER : executorId;
+
+ List<CompilationUnit.ExpectedWarn> expectedWarns = cUnit.getExpectedWarn();
+ expectedWarns.stream().filter(w -> !w.getReplacers().isEmpty()).forEach(w -> w.setValue(
+ MessageFormat.format(w.getValue(), (Object[]) getReplacements(cUnit, replacerId, w.getReplacers()))));
+
+ List<CompilationUnit.ExpectedError> expectedErrors = cUnit.getExpectedError();
+ expectedErrors.stream().filter(e -> !e.getReplacers().isEmpty()).forEach(e -> e.setValue(
+ MessageFormat.format(e.getValue(), (Object[]) getReplacements(cUnit, replacerId, e.getReplacers()))));
+ }
+
+ private static String[] getReplacements(CompilationUnit cUnit, String replacerId, List<String> replacers) {
+ Optional<String> replacements = replacers.stream().filter(s -> s.startsWith(replacerId)).findFirst();
+ if (replacements.isPresent()) {
+ return replacements.get().substring(replacerId.length() + 1).split(",");
+ }
+ LOGGER.error("Test '{}', could not find message replacements for '{}' in replacements {}", cUnit.getName(),
+ replacerId, replacers);
+ throw new RuntimeException(
+ String.format("Test '%s', could not find message replacements for '%s' in replacements %s",
+ cUnit.getName(), replacerId, replacers));
+ }
+
private String applySubstitution(String statement, List<Parameter> parameters) throws Exception {
// Ensure all macro parameters are available
Parameter startParameter = parameters.stream()
@@ -2747,7 +2770,8 @@
if (fail) {
LOGGER.error("Test {} failed to raise (an) expected warning(s):", cUnit.getName());
}
- List<String> expectedWarn = cUnit.getExpectedWarn();
+ List<String> expectedWarn =
+ cUnit.getExpectedWarn().stream().map(w -> w.getValue()).collect(Collectors.toList());
for (int i = expectedWarnings.nextSetBit(0); i >= 0; i = expectedWarnings.nextSetBit(i + 1)) {
String warning = expectedWarn.get(i);
LOGGER.error(warning);
@@ -2912,13 +2936,14 @@
}
}
- protected void validateWarnings(List<String> actualWarnings, List<String> expectedWarn, BitSet expectedWarnings,
- boolean expectedSourceLoc, File testFile) throws Exception {
+ protected void validateWarnings(List<String> actualWarnings, List<CompilationUnit.ExpectedWarn> expectedWarn,
+ BitSet expectedWarnings, boolean expectedSourceLoc, File testFile) throws Exception {
if (actualWarnings != null) {
for (String actualWarn : actualWarnings) {
OptionalInt first = IntStream.range(0, expectedWarn.size())
- .filter(i -> actualWarn.contains(expectedWarn.get(i)) && expectedWarnings.get(i)).findFirst();
- if (!first.isPresent()) {
+ .filter(i -> actualWarn.contains(expectedWarn.get(i).getValue()) && expectedWarnings.get(i))
+ .findFirst();
+ if (first.isEmpty()) {
String msg = "unexpected warning was encountered or has already been matched (" + actualWarn + ")";
LOGGER.error(msg);
if (!expectedWarnings.isEmpty()) {
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/metadata/MetadataTxnTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/metadata/MetadataTxnTest.java
index 9e0683b..0b66676 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/metadata/MetadataTxnTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/metadata/MetadataTxnTest.java
@@ -133,8 +133,9 @@
metadataProvider.setMetadataTxnContext(rebalanceTxn);
try {
final Set<String> rebalanceToNodes = Stream.of("asterix_nc1").collect(Collectors.toSet());
- DatasetUtil.createNodeGroupForNewDataset(sourceDataset.getDataverseName(), sourceDataset.getDatasetName(),
- sourceDataset.getRebalanceCount() + 1, rebalanceToNodes, metadataProvider);
+ DatasetUtil.createNodeGroupForNewDataset(sourceDataset.getDatabaseName(), sourceDataset.getDataverseName(),
+ sourceDataset.getDatasetName(), sourceDataset.getRebalanceCount() + 1, rebalanceToNodes,
+ metadataProvider);
// rebalance failed --> abort txn
MetadataManager.INSTANCE.abortTransaction(rebalanceTxn);
} finally {
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cloud/cross-dataverse/cross-dv02/cross-dv02.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results_cloud/cross-dataverse/cross-dv02/cross-dv02.1.adm
new file mode 100644
index 0000000..95c9207
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cloud/cross-dataverse/cross-dv02/cross-dv02.1.adm
@@ -0,0 +1,4 @@
+{ "DataverseName": "student", "DatasetName": "gdstd", "DatatypeDataverseName": "student", "DatatypeName": "stdType", "DatasetType": "INTERNAL", "GroupName": "Default.student.gdstd", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "id" ] ], "PrimaryKey": [ [ "id" ] ], "Autogenerated": false }, "Hints": {{ }}, "Timestamp": "Thu Nov 09 23:39:28 PST 2023", "DatasetId": 103, "PendingOp": 0 }
+{ "DataverseName": "teacher", "DatasetName": "prof", "DatatypeDataverseName": "teacher", "DatatypeName": "tchrType", "DatasetType": "INTERNAL", "GroupName": "Default.teacher.prof", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "id" ] ], "PrimaryKey": [ [ "id" ] ], "Autogenerated": false }, "Hints": {{ }}, "Timestamp": "Thu Nov 09 23:39:28 PST 2023", "DatasetId": 104, "PendingOp": 0 }
+{ "DataverseName": "teacher", "DatasetName": "pstdoc", "DatatypeDataverseName": "teacher", "DatatypeName": "tchrType", "DatasetType": "INTERNAL", "GroupName": "Default.teacher.pstdoc", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "id" ] ], "PrimaryKey": [ [ "id" ] ], "Autogenerated": false }, "Hints": {{ }}, "Timestamp": "Thu Nov 09 23:39:28 PST 2023", "DatasetId": 105, "PendingOp": 0 }
+{ "DataverseName": "student", "DatasetName": "ugdstd", "DatatypeDataverseName": "student", "DatatypeName": "stdType", "DatasetType": "INTERNAL", "GroupName": "Default.student.ugdstd", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "id" ] ], "PrimaryKey": [ [ "id" ] ], "Autogenerated": false }, "Hints": {{ }}, "Timestamp": "Thu Nov 09 23:39:27 PST 2023", "DatasetId": 102, "PendingOp": 0 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cloud/cross-dataverse/cross-dv04/cross-dv04.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results_cloud/cross-dataverse/cross-dv04/cross-dv04.1.adm
new file mode 100644
index 0000000..d20b7d6
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cloud/cross-dataverse/cross-dv04/cross-dv04.1.adm
@@ -0,0 +1,4 @@
+{ "DataverseName": "student", "DatasetName": "gdstd", "DatatypeDataverseName": "student", "DatatypeName": "stdType", "DatasetType": "INTERNAL", "GroupName": "Default.student.gdstd", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "id" ] ], "PrimaryKey": [ [ "id" ] ], "Autogenerated": false }, "Hints": {{ }}, "Timestamp": "Thu Nov 09 23:39:32 PST 2023", "DatasetId": 111, "PendingOp": 0 }
+{ "DataverseName": "teacher", "DatasetName": "prof", "DatatypeDataverseName": "teacher", "DatatypeName": "tchrType", "DatasetType": "INTERNAL", "GroupName": "Default.teacher.prof", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "id" ] ], "PrimaryKey": [ [ "id" ] ], "Autogenerated": false }, "Hints": {{ }}, "Timestamp": "Thu Nov 09 23:39:32 PST 2023", "DatasetId": 112, "PendingOp": 0 }
+{ "DataverseName": "teacher", "DatasetName": "pstdoc", "DatatypeDataverseName": "teacher", "DatatypeName": "tchrType", "DatasetType": "INTERNAL", "GroupName": "Default.teacher.pstdoc", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "id" ] ], "PrimaryKey": [ [ "id" ] ], "Autogenerated": false }, "Hints": {{ }}, "Timestamp": "Thu Nov 09 23:39:33 PST 2023", "DatasetId": 113, "PendingOp": 0 }
+{ "DataverseName": "student", "DatasetName": "ugdstd", "DatatypeDataverseName": "student", "DatatypeName": "stdType", "DatasetType": "INTERNAL", "GroupName": "Default.student.ugdstd", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "id" ] ], "PrimaryKey": [ [ "id" ] ], "Autogenerated": false }, "Hints": {{ }}, "Timestamp": "Thu Nov 09 23:39:32 PST 2023", "DatasetId": 110, "PendingOp": 0 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cloud/cross-dataverse/cross-dv19/cross-dv19.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results_cloud/cross-dataverse/cross-dv19/cross-dv19.1.adm
new file mode 100644
index 0000000..6c7097a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cloud/cross-dataverse/cross-dv19/cross-dv19.1.adm
@@ -0,0 +1,7 @@
+{ "DataverseName": "test1", "DatasetName": "TwitterData", "DatatypeDataverseName": "test1", "DatatypeName": "Tweet", "DatasetType": "EXTERNAL", "GroupName": "Default.test1.TwitterData", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "ExternalDetails": { "DatasourceAdapter": "localfs", "Properties": [ { "Name": "path", "Value": "asterix_nc1://data/twitter/extrasmalltweets.txt" }, { "Name": "format", "Value": "adm" } ], "LastRefreshTime": datetime("2023-11-10T07:39:34.975"), "TransactionState": 0 }, "Hints": {{ }}, "Timestamp": "Thu Nov 09 23:39:34 PST 2023", "DatasetId": 120, "PendingOp": 0 }
+{ "DataverseName": "test1", "DatasetName": "t1", "DatatypeDataverseName": "test1", "DatatypeName": "testtype", "DatasetType": "INTERNAL", "GroupName": "Default.test1.t1", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "id" ] ], "PrimaryKey": [ [ "id" ] ], "Autogenerated": false }, "Hints": {{ }}, "Timestamp": "Thu Nov 09 23:39:33 PST 2023", "DatasetId": 114, "PendingOp": 0 }
+{ "DataverseName": "test1", "DatasetName": "t2", "DatatypeDataverseName": "test1", "DatatypeName": "testtype", "DatasetType": "INTERNAL", "GroupName": "Default.test1.t2", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "id" ] ], "PrimaryKey": [ [ "id" ] ], "Autogenerated": false }, "Hints": {{ }}, "Timestamp": "Thu Nov 09 23:39:34 PST 2023", "DatasetId": 117, "PendingOp": 0 }
+{ "DataverseName": "test1", "DatasetName": "t3", "DatatypeDataverseName": "test1", "DatatypeName": "testtype", "DatasetType": "INTERNAL", "GroupName": "Default.test1.t3", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "id" ] ], "PrimaryKey": [ [ "id" ] ], "Autogenerated": false }, "Hints": {{ }}, "Timestamp": "Thu Nov 09 23:39:34 PST 2023", "DatasetId": 118, "PendingOp": 0 }
+{ "DataverseName": "test2", "DatasetName": "t2", "DatatypeDataverseName": "test2", "DatatypeName": "testtype", "DatasetType": "INTERNAL", "GroupName": "Default.test2.t2", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "id" ] ], "PrimaryKey": [ [ "id" ] ], "Autogenerated": false }, "Hints": {{ }}, "Timestamp": "Thu Nov 09 23:39:33 PST 2023", "DatasetId": 115, "PendingOp": 0 }
+{ "DataverseName": "test2", "DatasetName": "t3", "DatatypeDataverseName": "test2", "DatatypeName": "testtype", "DatasetType": "INTERNAL", "GroupName": "Default.test2.t3", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "id" ] ], "PrimaryKey": [ [ "id" ] ], "Autogenerated": false }, "Hints": {{ }}, "Timestamp": "Thu Nov 09 23:39:34 PST 2023", "DatasetId": 116, "PendingOp": 0 }
+{ "DataverseName": "test2", "DatasetName": "t4", "DatatypeDataverseName": "test2", "DatatypeName": "testtype", "DatasetType": "INTERNAL", "GroupName": "Default.test2.t4", "CompactionPolicy": "concurrent", "CompactionPolicyProperties": [ { "Name": "max-component-count", "Value": "30" }, { "Name": "min-merge-component-count", "Value": "3" }, { "Name": "max-merge-component-count", "Value": "10" }, { "Name": "size-ratio", "Value": "1.2" } ], "InternalDetails": { "FileStructure": "BTREE", "PartitioningStrategy": "HASH", "PartitioningKey": [ [ "id" ] ], "PrimaryKey": [ [ "id" ] ], "Autogenerated": false }, "Hints": {{ }}, "Timestamp": "Thu Nov 09 23:39:34 PST 2023", "DatasetId": 119, "PendingOp": 0 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results_cloud/misc/dataset_nodegroup/dataset_nodegroup.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results_cloud/misc/dataset_nodegroup/dataset_nodegroup.1.adm
new file mode 100644
index 0000000..80aba7b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results_cloud/misc/dataset_nodegroup/dataset_nodegroup.1.adm
@@ -0,0 +1 @@
+{ "GroupName": "Default.twitter.TwitterData", "NodeNames": {{ "asterix_nc1", "asterix_nc2" }} }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/sqlpp_queries.xml b/asterixdb/asterix-app/src/test/resources/runtimets/sqlpp_queries.xml
index 22bc3a9..f65f643 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/sqlpp_queries.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/sqlpp_queries.xml
@@ -50,7 +50,7 @@
<test-case FilePath="api" check-warnings="true">
<compilation-unit name="request-dataverse">
<output-dir compare="Text">request-dataverse</output-dir>
- <expected-warn>ASX1063: Cannot find dataverse with name testUnknown</expected-warn>
+ <expected-warn replacers="cloud:Default.testUnknown def:testUnknown">ASX1063: Cannot find dataverse with name {0}</expected-warn>
<source-location>false</source-location>
</compilation-unit>
</test-case>
@@ -4010,7 +4010,7 @@
<test-case FilePath="custord">
<compilation-unit name="join_q_07">
<output-dir compare="Text">join_q_06</output-dir>
- <expected-error>Cannot find dataset c in dataverse test nor an alias with name c</expected-error>
+ <expected-error replacers="cloud:Default.test def:test">Cannot find dataset c in dataverse {0} nor an alias with name c</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="custord">
@@ -4084,7 +4084,7 @@
<test-case FilePath="dapd">
<compilation-unit name="q2-2-negative">
<output-dir compare="Text">q2</output-dir>
- <expected-error>Cannot find dataset e in dataverse test nor an alias with name e</expected-error>
+ <expected-error replacers="cloud:Default.test def:test">Cannot find dataset e in dataverse {0} nor an alias with name e</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="dapd">
@@ -4162,7 +4162,7 @@
<test-case FilePath="ddl">
<compilation-unit name="create-dataset-3">
<output-dir compare="Clean-JSON">create-dataset-3</output-dir>
- <expected-error>ASX1077: Cannot find dataset non_existent in dataverse test nor an alias with name non_existent (in line 23, at column 21)</expected-error>
+ <expected-error replacers="cloud:Default.test def:test">ASX1077: Cannot find dataset non_existent in dataverse {0} nor an alias with name non_existent (in line 23, at column 21)</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="ddl">
@@ -4219,8 +4219,8 @@
<test-case FilePath="ddl/create-index">
<compilation-unit name="create-index-6">
<output-dir compare="Text">none</output-dir>
- <expected-error>ASX1050: Cannot find dataset with name LineItemView1 in dataverse test (in line 55, at column 1)</expected-error>
- <expected-error>ASX1050: Cannot find dataset with name LineItemView2 in dataverse test (in line 60, at column 1)</expected-error>
+ <expected-error replacers="cloud:Default.test def:test">ASX1050: Cannot find dataset with name LineItemView1 in dataverse {0} (in line 55, at column 1)</expected-error>
+ <expected-error replacers="cloud:Default.test def:test">ASX1050: Cannot find dataset with name LineItemView2 in dataverse {0} (in line 60, at column 1)</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="ddl/create-index">
@@ -4259,13 +4259,13 @@
<compilation-unit name="invalid-dataverse">
<output-dir compare="Text">invalid-dataverse</output-dir>
<source-location>false</source-location>
- <expected-warn>Cannot find dataverse with name fakeDataverse (in line 22, at column 1)</expected-warn>
- <expected-error>Cannot find dataverse with name fakeDataverse (in line 27, at column 1)</expected-error>
- <expected-warn>Cannot find dataverse with name fakeDataverse (in line 29, at column 1)</expected-warn>
- <expected-error>Cannot find dataverse with name fakeDataverse (in line 30, at column 1)</expected-error>
- <expected-error>Cannot find datatype with name fakeDataverse.myType</expected-error>
- <expected-error>Cannot find dataverse with name fakeDataverse (in line 30, at column 1)</expected-error>
- <expected-error>Cannot find dataverse with name fakeDataverse (in line 32, at column 1)</expected-error>
+ <expected-warn replacers="cloud:Default.fakeDataverse def:fakeDataverse">Cannot find dataverse with name {0} (in line 22, at column 1)</expected-warn>
+ <expected-error replacers="cloud:Default.fakeDataverse def:fakeDataverse">Cannot find dataverse with name {0} (in line 27, at column 1)</expected-error>
+ <expected-warn replacers="cloud:Default.fakeDataverse def:fakeDataverse">Cannot find dataverse with name {0} (in line 29, at column 1)</expected-warn>
+ <expected-error replacers="cloud:Default.fakeDataverse def:fakeDataverse">Cannot find dataverse with name {0} (in line 30, at column 1)</expected-error>
+ <expected-error replacers="cloud:fakeDataverse def:fakeDataverse">Cannot find datatype with name {0}.myType</expected-error>
+ <expected-error replacers="cloud:Default.fakeDataverse def:fakeDataverse">Cannot find dataverse with name {0} (in line 30, at column 1)</expected-error>
+ <expected-error replacers="cloud:Default.fakeDataverse def:fakeDataverse">Cannot find dataverse with name {0} (in line 32, at column 1)</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="ddl">
@@ -4364,14 +4364,14 @@
<test-case FilePath="ddl" check-warnings="true">
<compilation-unit name="drop_dataset_invalid_dataverse">
<output-dir compare="Text">drop_dataset_invalid_dataverse</output-dir>
- <expected-error>ASX1063: Cannot find dataverse with name fakeDataverse (in line 22, at column 1)</expected-error>
- <expected-error>ASX1063: Cannot find dataverse with name fakeDataverse (in line 22, at column 1)</expected-error>
- <expected-error>ASX1063: Cannot find dataverse with name fakeDataverse (in line 22, at column 1)</expected-error>
- <expected-error>ASX1063: Cannot find dataverse with name fakeDataverse (in line 22, at column 1)</expected-error>
- <expected-error>ASX1050: Cannot find dataset with name fakeDataset1 in dataverse realDataverse (in line 22, at column 1)</expected-error>
- <expected-warn>ASX1063: Cannot find dataverse with name fakeDataverse (in line 22, at column 1)</expected-warn>
- <expected-warn>ASX1063: Cannot find dataverse with name fakeDataverse (in line 22, at column 1)</expected-warn>
- <expected-warn>ASX1063: Cannot find dataverse with name fakeDataverse (in line 22, at column 1)</expected-warn>
+ <expected-error replacers="cloud:Default.fakeDataverse def:fakeDataverse">ASX1063: Cannot find dataverse with name {0} (in line 22, at column 1)</expected-error>
+ <expected-error replacers="cloud:Default.fakeDataverse def:fakeDataverse">ASX1063: Cannot find dataverse with name {0} (in line 22, at column 1)</expected-error>
+ <expected-error replacers="cloud:Default.fakeDataverse def:fakeDataverse">ASX1063: Cannot find dataverse with name {0} (in line 22, at column 1)</expected-error>
+ <expected-error replacers="cloud:Default.fakeDataverse def:fakeDataverse">ASX1063: Cannot find dataverse with name {0} (in line 22, at column 1)</expected-error>
+ <expected-error replacers="cloud:Default.realDataverse def:realDataverse">ASX1050: Cannot find dataset with name fakeDataset1 in dataverse {0} (in line 22, at column 1)</expected-error>
+ <expected-warn replacers="cloud:Default.fakeDataverse def:fakeDataverse">ASX1063: Cannot find dataverse with name {0} (in line 22, at column 1)</expected-warn>
+ <expected-warn replacers="cloud:Default.fakeDataverse def:fakeDataverse">ASX1063: Cannot find dataverse with name {0} (in line 22, at column 1)</expected-warn>
+ <expected-warn replacers="cloud:Default.fakeDataverse def:fakeDataverse">ASX1063: Cannot find dataverse with name {0} (in line 22, at column 1)</expected-warn>
</compilation-unit>
</test-case>
<test-case FilePath="ddl">
@@ -5956,13 +5956,13 @@
<test-case FilePath="group-by">
<compilation-unit name="core-01-error">
<output-dir compare="Text">none</output-dir>
- <expected-error>Cannot find dataset e in dataverse gby nor an alias with name e</expected-error>
+ <expected-error replacers="cloud:Default.gby def:gby">Cannot find dataset e in dataverse {0} nor an alias with name e</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="group-by">
<compilation-unit name="core-02-error">
<output-dir compare="Text">none</output-dir>
- <expected-error>Cannot find dataset f in dataverse gby nor an alias with name f</expected-error>
+ <expected-error replacers="cloud:Default.gby def:gby">Cannot find dataset f in dataverse {0} nor an alias with name f</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="group-by">
@@ -6722,7 +6722,7 @@
<test-case FilePath="join">
<compilation-unit name="cross-join-02-negative">
<output-dir compare="Text">none</output-dir>
- <expected-error>ASX1077: Cannot find dataset x in dataverse Default nor an alias with name x (in line 26, at column 39)</expected-error>
+ <expected-error replacers="cloud:Default.Default def:Default">ASX1077: Cannot find dataset x in dataverse {0} nor an alias with name x (in line 26, at column 39)</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="join">
@@ -7102,8 +7102,8 @@
<compilation-unit name="partition-by-nonexistent-field">
<output-dir compare="Text">partition-by-nonexistent-field</output-dir>
<expected-error>Field 'id' is not found</expected-error>
- <expected-error>Cannot find dataset with name testds in dataverse test</expected-error>
- <expected-error>Cannot find dataset testds in dataverse test nor an alias with name testds</expected-error>
+ <expected-error replacers="cloud:Default.test def:test">Cannot find dataset with name testds in dataverse {0}</expected-error>
+ <expected-error replacers="cloud:Default.test def:test">Cannot find dataset testds in dataverse {0} nor an alias with name testds</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="misc">
@@ -7298,8 +7298,8 @@
<compilation-unit name="dump_index">
<output-dir compare="Text">dump_index</output-dir>
<expected-error>Cannot find index with name noindex</expected-error>
- <expected-error>Cannot find dataset with name nodataset in dataverse test</expected-error>
- <expected-error>Cannot find dataset with name ds in dataverse nodataverse</expected-error>
+ <expected-error replacers="cloud:Default.test def:test">Cannot find dataset with name nodataset in dataverse {0}</expected-error>
+ <expected-error replacers="cloud:Default.nodataverse def:nodataverse">Cannot find dataset with name ds in dataverse {0}</expected-error>
<expected-error>Unsupported type: dump-index cannot process input type null</expected-error>
<expected-error>Unsupported type: dump-index cannot process input type null</expected-error>
<expected-error>Unsupported type: dump-index cannot process input type null</expected-error>
@@ -11626,7 +11626,7 @@
<test-case FilePath="synonym">
<compilation-unit name="synonym-02-negative">
<output-dir compare="Text">none</output-dir>
- <expected-error>ASX1063: Cannot find dataverse with name UNKNOWN_DATAVERSE</expected-error>
+ <expected-error replacers="cloud:Default.UNKNOWN_DATAVERSE def:UNKNOWN_DATAVERSE">ASX1063: Cannot find dataverse with name {0}</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="synonym">
@@ -13122,26 +13122,26 @@
<test-case FilePath="user-defined-functions">
<compilation-unit name="bad-function-ddl-1">
<output-dir compare="Text">bad-function-ddl-1</output-dir>
- <expected-error>Cannot find dataset TweetMessages in dataverse experiments nor an alias with name TweetMessages</expected-error>
- <expected-error>Cannot find dataset TweetMessages2 in dataverse experiments2 nor an alias with name TweetMessages2</expected-error>
+ <expected-error replacers="cloud:Default.experiments def:experiments">Cannot find dataset TweetMessages in dataverse {0} nor an alias with name TweetMessages</expected-error>
+ <expected-error replacers="cloud:Default.experiments2 def:experiments2">Cannot find dataset TweetMessages2 in dataverse {0} nor an alias with name TweetMessages2</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
<compilation-unit name="bad-function-ddl-2">
<output-dir compare="Text">bad-function-ddl-2</output-dir>
- <expected-error>Cannot find dataset TweetMessages in dataverse experiments2 nor an alias with name TweetMessages</expected-error>
+ <expected-error replacers="cloud:Default.experiments2 def:experiments2">Cannot find dataset TweetMessages in dataverse {0} nor an alias with name TweetMessages</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
<compilation-unit name="bad-function-ddl-3">
<output-dir compare="Text">bad-function-ddl-3</output-dir>
- <expected-error>Cannot find dataset TweetMessages in dataverse experiments nor an alias with name TweetMessages</expected-error>
+ <expected-error replacers="cloud:Default.experiments def:experiments">Cannot find dataset TweetMessages in dataverse {0} nor an alias with name TweetMessages</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
<compilation-unit name="bad-function-ddl-4">
<output-dir compare="Text">bad-function-ddl-4</output-dir>
- <expected-error>Cannot find dataset TweetMessages in dataverse experients nor an alias with name TweetMessages</expected-error>
+ <expected-error replacers="cloud:Default.experients def:experients">Cannot find dataset TweetMessages in dataverse {0} nor an alias with name TweetMessages</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
@@ -13160,13 +13160,13 @@
<test-case FilePath="user-defined-functions">
<compilation-unit name="bad-function-ddl-7">
<output-dir compare="Text">bad-function-ddl-7</output-dir>
- <expected-error>Cannot find dataset TweetMessaes in dataverse experiments nor an alias with name TweetMessaes</expected-error>
+ <expected-error replacers="cloud:Default.experiments def:experiments">Cannot find dataset TweetMessaes in dataverse {0} nor an alias with name TweetMessaes</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
<compilation-unit name="bad-function-ddl-8">
<output-dir compare="Text">bad-function-ddl-8</output-dir>
- <expected-error>Cannot find dataset TweetMessaes in dataverse experiments nor an alias with name TweetMessaes</expected-error>
+ <expected-error replacers="cloud:Default.experiments def:experiments">Cannot find dataset TweetMessaes in dataverse {0} nor an alias with name TweetMessaes</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
@@ -13278,7 +13278,7 @@
<test-case FilePath="user-defined-functions">
<compilation-unit name="query-ASTERIXDB-1652">
<output-dir compare="Text">query-ASTERIXDB-1652-2</output-dir>
- <expected-error>ASX1063: Cannot find dataverse with name test</expected-error>
+ <expected-error replacers="cloud:Default.test def:test">ASX1063: Cannot find dataverse with name {0}</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="user-defined-functions">
@@ -13559,7 +13559,7 @@
<test-case FilePath="view">
<compilation-unit name="create-view-2-negative">
<output-dir compare="Text">none</output-dir>
- <expected-error>ASX1063: Cannot find dataverse with name test (in line 24, at column 1)</expected-error>
+ <expected-error replacers="cloud:Default.test def:test">ASX1063: Cannot find dataverse with name {0} (in line 24, at column 1)</expected-error>
<expected-error><![CDATA[ASX1001: Syntax error: In line 25 >>create view test.v1 as select * from range(1,2) r order by;<< Encountered ";" at column 59]]></expected-error>
<expected-error>ASX1081: Cannot find function with signature test.undefined_range(2) (in line 25, at column 38)</expected-error>
<expected-error>ASX1160: A view with this name test.v1 already exists (in line 26, at column 1)</expected-error>
@@ -13639,7 +13639,7 @@
<expected-error><![CDATA[ASX1166: Invalid foreign key definition: foreign key does not match primary key of view test1.employee_v1 (in line 34, at column 1)]]></expected-error>
<expected-error><![CDATA[ASX1166: Invalid foreign key definition: foreign key does not match primary key of view test1.employee_v2 (in line 34, at column 1)]]></expected-error>
<expected-error><![CDATA[ASX1164: Invalid foreign key definition (in line 34, at column 1)]]></expected-error>
- <expected-error><![CDATA[ASX1063: Cannot find dataverse with name test3 (in line 42, at column 1)]]></expected-error>
+ <expected-error replacers="cloud:Default.test3 def:test3"><![CDATA[ASX1063: Cannot find dataverse with name {0} (in line 42, at column 1)]]></expected-error>
<expected-error><![CDATA[ASX1159: Cannot find view with name test1.employee_v3 (in line 42, at column 1)]]></expected-error>
<expected-error><![CDATA[ASX1159: Cannot find view with name test1.employee (in line 43, at column 1)]]></expected-error>
<expected-error><![CDATA[ASX1164: Invalid foreign key definition (in line 43, at column 1)]]></expected-error>
@@ -13679,9 +13679,9 @@
<test-case FilePath="view">
<compilation-unit name="drop-view-2-negative">
<output-dir compare="Text">drop-view-2-negative</output-dir>
- <expected-error>ASX1063: Cannot find dataverse with name test (in line 24, at column 1)</expected-error>
+ <expected-error replacers="cloud:Default.test def:test">ASX1063: Cannot find dataverse with name {0} (in line 24, at column 1)</expected-error>
<expected-error>ASX1159: Cannot find view with name test.v1 (in line 25, at column 1)</expected-error>
- <expected-error>ASX1050: Cannot find dataset with name v1 in dataverse test (in line 27, at column 1)</expected-error>
+ <expected-error replacers="cloud:Default.test def:test">ASX1050: Cannot find dataset with name v1 in dataverse {0} (in line 27, at column 1)</expected-error>
<expected-error>ASX1159: Cannot find view with name test.ds1 (in line 30, at column 1)</expected-error>
<expected-error>ASX1148: Cannot drop dataset test2.ds2 being used by view test1.v1</expected-error>
<expected-error>ASX1148: Cannot drop function test2.f2() being used by view test1.v1</expected-error>
@@ -13700,9 +13700,9 @@
<test-case FilePath="view">
<compilation-unit name="view-2-negative">
<output-dir compare="Text">none</output-dir>
- <expected-error>ASX1050: Cannot find dataset with name v1 in dataverse test1 (in line 24, at column 17)</expected-error>
- <expected-error>ASX1050: Cannot find dataset with name v2 in dataverse test1 (in line 24, at column 17)</expected-error>
- <expected-error>ASX1050: Cannot find dataset with name v3 in dataverse test1 (in line 24, at column 1)</expected-error>
+ <expected-error replacers="cloud:Default.test1 def:test1">ASX1050: Cannot find dataset with name v1 in dataverse {0} (in line 24, at column 17)</expected-error>
+ <expected-error replacers="cloud:Default.test1 def:test1">ASX1050: Cannot find dataset with name v2 in dataverse {0} (in line 24, at column 17)</expected-error>
+ <expected-error replacers="cloud:Default.test1 def:test1">ASX1050: Cannot find dataset with name v3 in dataverse {0} (in line 24, at column 1)</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="view">
@@ -13791,7 +13791,7 @@
<test-case FilePath="load">
<compilation-unit name="issue650_query">
<output-dir compare="Text">none</output-dir>
- <expected-error>Cannot find dataset with name Users in dataverse fuzzyjoin</expected-error>
+ <expected-error replacers="cloud:Default.fuzzyjoin def:fuzzyjoin">Cannot find dataset with name Users in dataverse {0}</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="load">
@@ -15075,7 +15075,7 @@
<test-case FilePath="union">
<compilation-unit name="union_negative">
<output-dir compare="Text">union</output-dir>
- <expected-error>Cannot find dataset t in dataverse TinySocial nor an alias with name t</expected-error>
+ <expected-error replacers="cloud:Default.TinySocial def:TinySocial">Cannot find dataset t in dataverse {0} nor an alias with name t</expected-error>
</compilation-unit>
</test-case>
<test-case FilePath="union">
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataUtil.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataUtil.java
index 539b8c4..7594457 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataUtil.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataUtil.java
@@ -42,6 +42,10 @@
}
}
+ public static String dataverseName(String databaseName, DataverseName dataverseName, boolean useDb) {
+ return useDb ? databaseName + "." + dataverseName : String.valueOf(dataverseName);
+ }
+
public static String getFullyQualifiedDisplayName(DataverseName dataverseName, String objectName) {
return dataverseName + "." + objectName;
}
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 e1ba3ba..a4bca83 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,6 +38,7 @@
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.common.metadata.Namespace;
import org.apache.asterix.lang.common.base.Expression;
import org.apache.asterix.lang.common.base.IParser;
@@ -173,10 +174,12 @@
try {
dv = metadataProvider.findDataverse(database, dataverse);
} catch (AlgebricksException e) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, e, sourceLoc, dataverse);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, e, sourceLoc,
+ MetadataUtil.dataverseName(database, dataverse, metadataProvider.isUsingDatabase()));
}
if (dv == null) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc, dataverse);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, sourceLoc,
+ MetadataUtil.dataverseName(database, dataverse, metadataProvider.isUsingDatabase()));
}
}
}
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 bad48c2..cbbb9de 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
@@ -34,6 +34,7 @@
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.common.metadata.Namespace;
import org.apache.asterix.lang.common.base.AbstractExpression;
import org.apache.asterix.lang.common.base.Expression;
@@ -566,7 +567,8 @@
targetNamespace = new Namespace(dv.getDatabaseName(), dv.getDataverseName());
}
} catch (AlgebricksException e) {
- throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, e, sourceLoc, entityDataverseName);
+ throw new CompilationException(ErrorCode.UNKNOWN_DATAVERSE, e, sourceLoc, MetadataUtil
+ .dataverseName(entityDatabaseName, entityDataverseName, metadataProvider.isUsingDatabase()));
}
}
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 97a4171..346ad4f 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
@@ -106,7 +106,7 @@
dataverseNamePart);
}
//TODO(DB): decide
- String databaseName = MetadataUtil.resolveDatabase(null, dataverseName);
+ String databaseName = MetadataUtil.databaseFor(dataverseName);
String datasetName = fa.getIdent().getValue();
CallExpr datasetExpr =
resolveAsDataset(databaseName, dataverseName, datasetName, parent, leadingVarExpr);
@@ -196,7 +196,7 @@
} else {
Pair<Dataset, Boolean> p = findDataset(databaseName, dataverseName, datasetName, true, sourceLoc);
if (p == null) {
- throw createUnresolvableError(dataverseName, datasetName, sourceLoc);
+ throw createUnresolvableError(databaseName, dataverseName, datasetName, sourceLoc);
}
Dataset resolvedDataset = p.first;
resolvedDatabaseName = resolvedDataset.getDatabaseName();
@@ -261,15 +261,23 @@
}
}
- private CompilationException createUnresolvableError(DataverseName dataverseName, String datasetName,
- SourceLocation sourceLoc) {
+ private CompilationException createUnresolvableError(String databaseName, DataverseName dataverseName,
+ String datasetName, SourceLocation sourceLoc) {
DataverseName defaultDataverseName = metadataProvider.getDefaultNamespace().getDataverseName();
+ String defaultDatabaseName = metadataProvider.getDefaultNamespace().getDatabaseName();
if (dataverseName == null && defaultDataverseName == null) {
return new CompilationException(ErrorCode.NAME_RESOLVE_UNKNOWN_DATASET, sourceLoc, datasetName);
}
+ boolean useDb = metadataProvider.isUsingDatabase();
+ String namespace;
+ if (dataverseName == null) {
+ namespace = MetadataUtil.dataverseName(defaultDatabaseName, defaultDataverseName, useDb);
+ } else {
+ namespace = MetadataUtil.dataverseName(databaseName, dataverseName, useDb);
+ }
//If no available dataset nor in-scope variable to resolve to, we throw an error.
return new CompilationException(ErrorCode.NAME_RESOLVE_UNKNOWN_DATASET_IN_DATAVERSE, sourceLoc, datasetName,
- dataverseName == null ? defaultDataverseName : dataverseName);
+ namespace);
}
private Pair<Dataset, Boolean> findDataset(String databaseName, DataverseName dataverseName, String datasetName,
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
index 7d85568..03d4bb8 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
@@ -935,7 +935,8 @@
forceDropDataverse(txnId, database, dataverseName);
} catch (HyracksDataException e) {
if (e.matches(ErrorCode.UPDATE_OR_DELETE_NON_EXISTENT_KEY)) {
- throw new AsterixException(UNKNOWN_DATAVERSE, e, dataverseName);
+ throw new AsterixException(UNKNOWN_DATAVERSE, e,
+ MetadataUtil.dataverseName(database, dataverseName, mdIndexesProvider.isUsingDatabase()));
} else {
throw new AsterixException(METADATA_ERROR, e, e.getMessage());
}
@@ -970,7 +971,8 @@
boolean force) throws AlgebricksException {
Dataset dataset = getDataset(txnId, database, dataverseName, datasetName);
if (dataset == null) {
- throw new AsterixException(UNKNOWN_DATASET_IN_DATAVERSE, datasetName, dataverseName);
+ throw new AsterixException(UNKNOWN_DATASET_IN_DATAVERSE, datasetName,
+ MetadataUtil.dataverseName(database, dataverseName, mdIndexesProvider.isUsingDatabase()));
}
if (!force) {
String datasetTypeDisplayName = DatasetUtil.getDatasetTypeDisplayName(dataset.getDatasetType());
@@ -3019,7 +3021,8 @@
} catch (HyracksDataException e) {
if (e.matches(ErrorCode.UPDATE_OR_DELETE_NON_EXISTENT_KEY)) {
throw new AsterixException(UNKNOWN_DATASET_IN_DATAVERSE, e, dataset.getDatasetName(),
- dataset.getDataverseName());
+ MetadataUtil.dataverseName(dataset.getDatabaseName(), dataset.getDataverseName(),
+ mdIndexesProvider.isUsingDatabase()));
} else {
throw new AsterixException(METADATA_ERROR, e, e.getMessage());
}
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 9b4c715..8a83517 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
@@ -157,6 +157,7 @@
DataverseName dataverseName, String datasetName) throws AlgebricksException {
Dataset dataset = findDataset(mdTxnCtx, database, dataverseName, datasetName);
if (dataset == null) {
+ //TODO(DB): include database
throw new AsterixException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, datasetName, dataverseName);
}
return dataset;
@@ -229,6 +230,7 @@
MetadataTransactionContext mdTxnCtx, DataSourceId id) throws AlgebricksException {
Dataset dataset = findDataset(mdTxnCtx, id.getDatabaseName(), id.getDataverseName(), id.getDatasourceName());
if (dataset == null) {
+ //TODO(DB): include database
throw new AsterixException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, id.getDatasourceName(),
id.getDataverseName());
}
@@ -241,6 +243,7 @@
datasourceType = DataSource.Type.EXTERNAL_DATASET;
break;
default:
+ //TODO(DB): include database
throw new AsterixException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, id.getDatasourceName(),
id.getDataverseName());
}
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 cfa8054..b310271 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
@@ -346,6 +346,10 @@
return namespaceResolver;
}
+ public boolean isUsingDatabase() {
+ return namespaceResolver.isUsingDatabase();
+ }
+
public StorageProperties getStorageProperties() {
return storageProperties;
}
@@ -816,7 +820,8 @@
String database = dataSource.getId().getDatabaseName();
Dataset dataset = findDataset(database, dataverseName, datasetName);
if (dataset == null) {
- throw new AsterixException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, datasetName, dataverseName);
+ throw new AsterixException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, datasetName,
+ MetadataUtil.dataverseName(database, dataverseName, isUsingDatabase()));
}
int numKeys = primaryKeys.size();
int numFilterFields = DatasetUtil.getFilterField(dataset) == null ? 0 : 1;
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java
index fbd0670..66192e0 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java
@@ -284,8 +284,11 @@
if (result != 0) {
return result;
}
- //TODO(DB): fix to also consider database
- return dataverseName.compareTo(otherIndex.getDataverseName());
+ result = dataverseName.compareTo(otherIndex.getDataverseName());
+ if (result != 0) {
+ return result;
+ }
+ return databaseName.compareTo(otherIndex.getDatabaseName());
}
public byte resourceType() throws CompilationException {
@@ -308,6 +311,7 @@
@Override
public String toString() {
+ //TODO(DB)
return dataverseName + "." + datasetName + "." + indexName;
}
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 4d1c4a6..93802c2 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
@@ -367,7 +367,8 @@
DataverseName dataverseName = dataverse.getDataverseName();
Dataset dataset = metadataProvider.findDataset(dataverse.getDatabaseName(), dataverseName, datasetName);
if (dataset == null) {
- throw new AsterixException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, datasetName, dataverseName);
+ throw new AsterixException(ErrorCode.UNKNOWN_DATASET_IN_DATAVERSE, datasetName, MetadataUtil
+ .dataverseName(dataverse.getDatabaseName(), dataverseName, metadataProvider.isUsingDatabase()));
}
JobSpecification spec = RuntimeUtils.createJobSpecification(metadataProvider.getApplicationContext());
PartitioningProperties partitioningProperties = metadataProvider.getPartitioningProperties(dataset);
@@ -636,6 +637,8 @@
/***
* Creates a node group that is associated with a new dataset.
*
+ * @param databaseName,
+ * the database name of the dataset.
* @param dataverseName,
* the dataverse name of the dataset.
* @param datasetName,
@@ -647,14 +650,16 @@
* @return the name of the created node group.
* @throws Exception
*/
- public static String createNodeGroupForNewDataset(DataverseName dataverseName, String datasetName,
- Set<String> ncNames, MetadataProvider metadataProvider) throws Exception {
- return createNodeGroupForNewDataset(dataverseName, datasetName, 0L, ncNames, metadataProvider);
+ public static String createNodeGroupForNewDataset(String databaseName, DataverseName dataverseName,
+ String datasetName, Set<String> ncNames, MetadataProvider metadataProvider) throws Exception {
+ return createNodeGroupForNewDataset(databaseName, dataverseName, datasetName, 0L, ncNames, metadataProvider);
}
/***
* Creates a node group that is associated with a new dataset.
*
+ * @param databaseName,
+ * the database name of the dataset.
* @param dataverseName,
* the dataverse name of the dataset.
* @param datasetName,
@@ -668,10 +673,12 @@
* @return the name of the created node group.
* @throws Exception
*/
- public static String createNodeGroupForNewDataset(DataverseName dataverseName, String datasetName,
- long rebalanceCount, Set<String> ncNames, MetadataProvider metadataProvider) throws Exception {
+ public static String createNodeGroupForNewDataset(String databaseName, DataverseName dataverseName,
+ String datasetName, long rebalanceCount, Set<String> ncNames, MetadataProvider metadataProvider)
+ throws Exception {
ICcApplicationContext appCtx = metadataProvider.getApplicationContext();
- String nodeGroup = dataverseName.getCanonicalForm() + "." + datasetName
+ boolean useDb = metadataProvider.getNamespaceResolver().isUsingDatabase();
+ String nodeGroup = (useDb ? databaseName + "." : "") + dataverseName.getCanonicalForm() + "." + datasetName
+ (rebalanceCount == 0L ? "" : "_" + rebalanceCount);
MetadataTransactionContext mdTxnCtx = metadataProvider.getMetadataTxnContext();
appCtx.getMetadataLockManager().acquireNodeGroupWriteLock(metadataProvider.getLocks(), nodeGroup);
diff --git a/asterixdb/asterix-test-framework/src/main/resources/Catalog.xsd b/asterixdb/asterix-test-framework/src/main/resources/Catalog.xsd
index 303a4d7..b3d27f4 100644
--- a/asterixdb/asterix-test-framework/src/main/resources/Catalog.xsd
+++ b/asterixdb/asterix-test-framework/src/main/resources/Catalog.xsd
@@ -166,22 +166,36 @@
<!-- Zero or more expected errors for this query -->
- <xs:element name="expected-error" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="expected-error" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Zero or more expected errors for this query.
</xs:documentation>
</xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="replacers" type="test:str-list"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
</xs:element>
<!-- Zero or more expected warnings for this test -->
- <xs:element name="expected-warn" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="expected-warn" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Zero or more expected warnings for this query.
</xs:documentation>
</xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="replacers" type="test:str-list"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
</xs:element>
<!-- Whether the source location is expected in the error message -->
@@ -304,4 +318,8 @@
</xs:restriction>
</xs:simpleType>
+ <xs:simpleType name="str-list">
+ <xs:list itemType="xs:string" />
+ </xs:simpleType>
+
</xs:schema>