>From Ali Alsuliman <[email protected]>:

Ali Alsuliman has uploaded this change for review. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17932 )


Change subject: [ASTERIXDB-3259][MTD] Include database name in node group name
......................................................................

[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
---
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetRewriter.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DumpIndexRewriter.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexRewriter.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataManagerUtil.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetResourcesRewriter.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/PushFieldAccessRule.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
M 
asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/SqlppQueryRewriter.java
M 
asterixdb/asterix-app/src/test/java/org/apache/asterix/test/metadata/MetadataTxnTest.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java
M 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataUtil.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/StorageComponentsRewriter.java
M 
asterixdb/asterix-lang-sqlpp/src/main/java/org/apache/asterix/lang/sqlpp/rewrites/visitor/VariableCheckAndRewriteVisitor.java
M 
asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/FunctionUtil.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
20 files changed, 167 insertions(+), 75 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/32/17932/1

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 4829d0b..8d5dbaa 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 f0cc75b..998fade 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();
@@ -1623,7 +1626,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();
@@ -1909,7 +1912,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) {
@@ -2122,7 +2126,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()));
                 }
             }

@@ -2315,12 +2320,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);
@@ -2330,11 +2337,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);

@@ -2425,7 +2433,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,
@@ -2619,12 +2627,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()));
                 }
             }

@@ -2727,7 +2737,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 =
@@ -2781,7 +2792,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();
@@ -2936,12 +2948,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);
@@ -3036,7 +3050,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;
@@ -3319,7 +3334,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);
@@ -3381,7 +3397,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 =
@@ -3464,7 +3481,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 =
@@ -3521,7 +3539,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);
@@ -3659,7 +3678,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);
@@ -3751,7 +3771,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);
@@ -3857,7 +3878,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();
@@ -3886,7 +3907,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());
@@ -3906,7 +3928,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,
@@ -3992,7 +4014,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)
@@ -4641,7 +4664,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
@@ -4698,13 +4721,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);
@@ -4927,7 +4951,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);
@@ -5063,7 +5087,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 =
@@ -5586,7 +5610,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/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-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);

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17932
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: Ie0996be797666a731a92b2c2f4dc34809eba742c
Gerrit-Change-Number: 17932
Gerrit-PatchSet: 1
Gerrit-Owner: Ali Alsuliman <[email protected]>
Gerrit-MessageType: newchange

Reply via email to