jdbc-protolib/src/main/java/com/streamsets/pipeline/lib/jdbc/multithread/util/OffsetQueryUtil.java
public static Map<String, String> getColumnsToOffsetMapFromOffsetFormat(String lastOffset) {
    Map<String, String> offsetColumnsToOffsetMap = new HashMap<>();
    if (StringUtils.isNotBlank(lastOffset)) {
      Iterator<String> offsetColumnsAndOffsetIterator = OFFSET_COLUMN_SPLITTER.split(lastOffset).iterator();
      while (offsetColumnsAndOffsetIterator.hasNext()) {
        String offsetColumnAndOffset = offsetColumnsAndOffsetIterator.next();
        String[] offsetColumnOffsetSplit = offsetColumnAndOffset.split("=");
        String offsetColumn = offsetColumnOffsetSplit[0];
        String offset = offsetColumnOffsetSplit[1];
        offsetColumnsToOffsetMap.put(offsetColumn, offset);
      }
    }
    return offsetColumnsToOffsetMap;
  }
public static Map<String, String> getColumnsToOffsetMapFromOffsetFormat(String lastOffset) {
    Map<String, String> offsetColumnsToOffsetMap = new HashMap<>();
    if (StringUtils.isNotBlank(lastOffset)) {
      Iterator<String> offsetColumnsAndOffsetIterator = OFFSET_COLUMN_SPLITTER.split(lastOffset).iterator();
      while (offsetColumnsAndOffsetIterator.hasNext()) {
        String offsetColumnAndOffset = offsetColumnsAndOffsetIterator.next();
        String[] offsetColumnOffsetSplit = offsetColumnAndOffset.split("=");
        String offsetColumn = offsetColumnOffsetSplit[0];
        String offset = offsetColumnOffsetSplit[1];
        offsetColumnsToOffsetMap.put(offsetColumn, offset);
      }
    }
    return offsetColumnsToOffsetMap;
  }
Splits the offset in the form of (<column1>=<value1>::<column2>=<value2>::<column3>=<value3>) into a map of columns and values
@param lastOffset the last offset for the current table.
@return Map of columns to values