public static Pair<ILSMMergePolicyFactory, Map<String, String>> getMergePolicyFactory(Dataset dataset, MetadataTransactionContext mdTxnCtx) throws AlgebricksException { String policyName = dataset.getCompactionPolicy(); CompactionPolicy compactionPolicy = MetadataManager.INSTANCE.getCompactionPolicy(mdTxnCtx, MetadataConstants.METADATA_DATAVERSE_NAME, policyName); String compactionPolicyFactoryClassName = compactionPolicy.getClassName(); ILSMMergePolicyFactory mergePolicyFactory; Map<String, String> properties = dataset.getCompactionPolicyProperties(); try { mergePolicyFactory = (ILSMMergePolicyFactory) Class.forName(compactionPolicyFactoryClassName).newInstance(); if (mergePolicyFactory.getName().compareTo(CorrelatedPrefixMergePolicyFactory.NAME) == 0) { properties.put(CorrelatedPrefixMergePolicyFactory.KEY_DATASET_ID, Integer.toString(dataset.getDatasetId())); } } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { throw new AlgebricksException(e); } return new Pair<>(mergePolicyFactory, properties); }
protected static void validateCompactionPolicy(String compactionPolicy, Map<String, String> compactionPolicyProperties, MetadataTransactionContext mdTxnCtx, boolean isExternalDataset, SourceLocation sourceLoc) throws CompilationException, Exception { CompactionPolicy compactionPolicyEntity = MetadataManager.INSTANCE.getCompactionPolicy(mdTxnCtx, MetadataConstants.METADATA_DATAVERSE_NAME, compactionPolicy); if (compactionPolicyEntity == null) {