@Override
      public void markAsDeleted(long owid, int bucketProperty, long rowId, long[] rowIds, int setBitIndex,
                                BitSet selectedBitSet, LongColumnVector currentWriteIdVector) {
        long currentWriteId = findCurrentWriteId(owid, bucketProperty, rowId, rowIds);
        if (currentWriteId >= 0) {
          selectedBitSet.clear(setBitIndex);
          currentWriteIdVector.vector[setBitIndex] = currentWriteId;
          currentWriteIdVector.isRepeating = false;
        }
      }
Food for thought:
this is a bit problematic - in order to load ColumnizedDeleteEventRegistry we still open
all delete deltas at once - possibly causing OOM same as for {@link SortMergedDeleteEventRegistry}
which uses {@link OrcRawRecordMerger}.  Why not load all delete_delta sequentially.  Each
dd is sorted by {@link RecordIdentifier} so we could create a BTree like structure where the
1st level is an array of originalWriteId where each entry points at an array
of bucketIds where each entry points at an array of rowIds.  We could probably use ArrayList
to manage insertion as the structure is built (LinkedList?).  This should reduce memory
footprint (as far as OrcReader to a single reader) - probably bad for LLAP IO
Or much simpler, make compaction of delete deltas very aggressive so that
we never have move than a few delete files to read.
ql/src/java/org/apache/hadoop/hive/ql/io/orc/VectorizedOrcAcidRowBatchReader.java