[NO ISSUE][COMP] Temporarily prohibit dot in dataverse names
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- Do not allow dot in dataverse names.
- Note: this change should be reverted when merged into
the main branch which already supports multi-part dataverse
names and allows dots in dataverse name parts.
Change-Id: I15689702ff56db0c8e4ebafa877b9154cf7c6959
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/10424
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Dmitry Lychagin <dmitry.lychagin@couchbase.com>
Reviewed-by: Michael Blow <mblow@apache.org>
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 d29a5f5..1befe29 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
@@ -493,7 +493,7 @@
CreateDataverseStatement stmtCreateDataverse = (CreateDataverseStatement) stmt;
SourceLocation sourceLoc = stmtCreateDataverse.getSourceLocation();
String dvName = stmtCreateDataverse.getDataverseName().getValue();
- validateDatabaseObjectName(dvName, sourceLoc);
+ validateDataverseName(dvName, sourceLoc);
MetadataTransactionContext mdTxnCtx = MetadataManager.INSTANCE.beginTransaction();
metadataProvider.setMetadataTxnContext(mdTxnCtx);
lockManager.acquireDataverseReadLock(metadataProvider.getLocks(), dvName);
@@ -3291,6 +3291,14 @@
ExternalDataUtils.validateAdapterSpecificProperties(configuration, srcLoc, warningCollector);
}
+ private static void validateDataverseName(String dataverseName, SourceLocation sourceLoc)
+ throws CompilationException {
+ validateDatabaseObjectName(dataverseName, sourceLoc);
+ if (dataverseName.contains(".")) {
+ throw new CompilationException(ErrorCode.INVALID_DATABASE_OBJECT_NAME, sourceLoc, dataverseName);
+ }
+ }
+
public static void validateDatabaseObjectName(String name, SourceLocation sourceLoc) throws CompilationException {
if (name == null || name.isEmpty()) {
throw new CompilationException(ErrorCode.INVALID_DATABASE_OBJECT_NAME, sourceLoc, "<empty>");