private static RecordIdentifier[] parseKeyIndex(ByteBuffer val) {
    String[] stripes;
    try {
      CharsetDecoder utf8Decoder = UTF8.newDecoder();
      stripes = utf8Decoder.decode(val).toString().split(";");
    } catch (CharacterCodingException e) {
      throw new IllegalArgumentException("Bad string encoding for " +
          OrcRecordUpdater.ACID_KEY_INDEX_NAME, e);
    } 
    RecordIdentifier[] result = new RecordIdentifier[stripes.length];
    for(int i=0; i < stripes.length; ++i) {
      if (stripes[i].length() != 0) {
        String[] parts = stripes[i].split(",");
        result[i] = new RecordIdentifier();
        result[i].setValues(Long.parseLong(parts[0]),
            Integer.parseInt(parts[1]), Long.parseLong(parts[2]));
      }
    }
    return result;
  }
make sure bucketProperty in the delete event is from the {@link row} rather than whatever
{@link this#bucket} is.  For bucketed tables, the 2 must agree on bucketId encoded in it
not for necessarily the whole value.  For unbucketed tables there is no relationship.
ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcRecordUpdater.java