diff --git a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalKeyValueDatabase.java b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalKeyValueDatabase.java index 696752a..c336d2f 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalKeyValueDatabase.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalKeyValueDatabase.java @@ -318,6 +318,10 @@ public class LLLocalKeyValueDatabase implements LLKeyValueDatabase { registerGauge(meterRegistry, name, "rocksdb.block-cache-pinned-usage"); } + public Map getAllColumnFamilyHandles() { + return this.handles; + } + private record RocksLevelOptions(CompressionType compressionType, CompressionOptions compressionOptions) {} private RocksLevelOptions getRocksLevelOptions(DatabaseLevel levelOptions) { var compressionType = levelOptions.compression().getType(); @@ -640,6 +644,16 @@ public class LLLocalKeyValueDatabase implements LLKeyValueDatabase { .subscribeOn(dbScheduler); } + public RocksDBColumn getRocksDBColumn(byte[] columnName) { + ColumnFamilyHandle cfh; + try { + cfh = getCfh(columnName); + } catch (RocksDBException e) { + throw new UnsupportedOperationException("Column family doesn't exist: " + Arrays.toString(columnName), e); + } + return getRocksDBColumn(db, cfh); + } + private RocksDBColumn getRocksDBColumn(RocksDB db, ColumnFamilyHandle cfh) { if (db instanceof OptimisticTransactionDB optimisticTransactionDB) { return new OptimisticRocksDBColumn(optimisticTransactionDB, databaseOptions, allocator, cfh, meterRegistry);