public void removeIndex(IndexMultiKey index) { EventTableIndexRepositoryEntry entry = tableIndexesRefCount.remove(index); if (entry != null) { tables.remove(entry.getTable()); if (entry.getOptionalIndexName() != null) { explicitIndexes.remove(entry.getOptionalIndexName()); } } }
public Pair<IndexMultiKey, EventTableAndNamePair> addExplicitIndexOrReuse( boolean unique, List<IndexedPropDesc> hashProps, List<IndexedPropDesc> btreeProps, Iterable<EventBean> prefilledEvents, EventType indexedType, String indexName) { if (hashProps.isEmpty() && btreeProps.isEmpty()) { throw new IllegalArgumentException("Invalid zero element list for hash and btree columns"); } // Get an existing table, if any, matching the exact requirement IndexMultiKey indexPropKeyMatch = EventTableIndexUtil.findExactMatchNameAndType( tableIndexesRefCount.keySet(), unique, hashProps, btreeProps); if (indexPropKeyMatch != null) { EventTableIndexRepositoryEntry refTablePair = tableIndexesRefCount.get(indexPropKeyMatch); return new Pair<IndexMultiKey, EventTableAndNamePair>( indexPropKeyMatch, new EventTableAndNamePair(refTablePair.getTable(), refTablePair.getOptionalIndexName())); } return addIndex(unique, hashProps, btreeProps, prefilledEvents, indexedType, indexName, false); }