/** * Check to see if an row key just contains a list of null values. * * @param bytes * row key to examine * @return <tt>true</tt> if all the values are zero-length, <tt>false</tt> otherwise */ public static boolean checkRowKeyForAllNulls(byte[] bytes) { int keyCount = CoveredColumnIndexCodec.getPreviousInteger(bytes, bytes.length); int pos = bytes.length - Bytes.SIZEOF_INT; for (int i = 0; i < keyCount; i++) { int next = CoveredColumnIndexCodec.getPreviousInteger(bytes, pos); if (next > 0) { return false; } pos -= Bytes.SIZEOF_INT; } return true; }
public static List<byte[]> getValues(byte[] bytes) { // get the total number of keys in the bytes int keyCount = CoveredColumnIndexCodec.getPreviousInteger(bytes, bytes.length); List<byte[]> keys = new ArrayList<byte[]>(keyCount); int[] lengths = new int[keyCount]; int lengthPos = keyCount - 1; int pos = bytes.length - Bytes.SIZEOF_INT; // figure out the length of each key for (int i = 0; i < keyCount; i++) { lengths[lengthPos--] = CoveredColumnIndexCodec.getPreviousInteger(bytes, pos); pos -= Bytes.SIZEOF_INT; } int current = 0; for (int length : lengths) { byte[] key = Arrays.copyOfRange(bytes, current, current + length); keys.add(key); current += length; } return keys; }