[ASTERIXDB-2752][MTD] Add metadata for synonyms on upgrade
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- On version upgrade insert synonyms dataset entry
into Metadata.Dataset and corresponding type entry
into Metadata.Datatype
Change-Id: I32b3bafab3c130666f13063d8959f5b6e5fb7261
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/6944
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-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
index 4309c26..d85422d 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
@@ -21,6 +21,7 @@
import java.io.File;
import java.rmi.RemoteException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -170,6 +171,7 @@
}
} else {
insertNewCompactionPoliciesIfNotExist(mdTxnCtx);
+ insertSynonymEntitiesIfNotExist(mdTxnCtx);
}
// #. initialize datasetIdFactory
MetadataManager.INSTANCE.initializeDatasetIdFactory(mdTxnCtx);
@@ -222,6 +224,10 @@
}
}
+ public static void getMetadataIndexes(List<IMetadataIndex> outIndexes) {
+ Collections.addAll(outIndexes, PRIMARY_INDEXES);
+ }
+
private static void getMetadataTypes(ArrayList<IAType> types) {
for (int i = 0; i < PRIMARY_INDEXES.length; i++) {
types.add(PRIMARY_INDEXES[i].getPayloadRecordType());
@@ -293,6 +299,20 @@
}
}
+ private static void insertSynonymEntitiesIfNotExist(MetadataTransactionContext mdTxnCtx)
+ throws AlgebricksException {
+ IAType synonymDatasetRecordType = MetadataPrimaryIndexes.SYNONYM_DATASET.getPayloadRecordType();
+ if (MetadataManager.INSTANCE.getDatatype(mdTxnCtx, MetadataConstants.METADATA_DATAVERSE_NAME,
+ synonymDatasetRecordType.getTypeName()) == null) {
+ MetadataManager.INSTANCE.addDatatype(mdTxnCtx, new Datatype(MetadataConstants.METADATA_DATAVERSE_NAME,
+ synonymDatasetRecordType.getTypeName(), synonymDatasetRecordType, false));
+ }
+ if (MetadataManager.INSTANCE.getDataset(mdTxnCtx, MetadataConstants.METADATA_DATAVERSE_NAME,
+ MetadataConstants.SYNONYM_DATASET_NAME) == null) {
+ insertMetadataDatasets(mdTxnCtx, new IMetadataIndex[] { MetadataPrimaryIndexes.SYNONYM_DATASET });
+ }
+ }
+
private static DatasourceAdapter getAdapter(String adapterFactoryClassName) throws AlgebricksException {
try {
String adapterName =