HBASE-13945 - Prefix_Tree seekBefore() does not work correctly (Ram)

This commit is contained in:
ramkrishna 2015-06-24 09:11:05 +05:30
parent 76d6700d23
commit d7356667be
4 changed files with 16 additions and 8 deletions

View File

@ -106,11 +106,15 @@ public class KeyValueUtil {
return kvCell;
}
/**
* The position will be set to the beginning of the new ByteBuffer
* @param cell
* @return the Bytebuffer containing the key part of the cell
*/
public static ByteBuffer copyKeyToNewByteBuffer(final Cell cell) {
byte[] bytes = new byte[keyLength(cell)];
appendKeyTo(cell, bytes, 0);
ByteBuffer buffer = ByteBuffer.wrap(bytes);
buffer.position(buffer.limit());//make it look as if each field were appended
return buffer;
}
@ -152,11 +156,15 @@ public class KeyValueUtil {
return pos;
}
/**
* The position will be set to the beginning of the new ByteBuffer
* @param cell
* @return the ByteBuffer containing the cell
*/
public static ByteBuffer copyToNewByteBuffer(final Cell cell) {
byte[] bytes = new byte[length(cell)];
appendToByteArray(cell, bytes, 0);
ByteBuffer buffer = ByteBuffer.wrap(bytes);
buffer.position(buffer.limit());//make it look as if each field were appended
return buffer;
}

View File

@ -644,6 +644,7 @@ abstract class BufferedDataBlockEncoder implements DataBlockEncoder {
public ByteBuffer getKeyDeepCopy() {
ByteBuffer keyBuffer = ByteBuffer.allocate(current.keyLength);
keyBuffer.put(current.keyBuffer, 0, current.keyLength);
keyBuffer.rewind();
return keyBuffer;
}
@ -678,6 +679,7 @@ abstract class BufferedDataBlockEncoder implements DataBlockEncoder {
kvBuffer.put(current.tagsBuffer, 0, current.tagsLength);
}
}
kvBuffer.rewind();
return kvBuffer;
}

View File

@ -153,8 +153,9 @@ public interface DataBlockEncoder {
* @return value at current position
*/
ByteBuffer getValueShallowCopy();
/** @return key value at current position with position set to limit */
//TODO : to be removed - currently used in testcases only
/** @return a key value buffer with the position set at the beginning of the buffer */
ByteBuffer getKeyValueBuffer();
/**

View File

@ -65,10 +65,7 @@ public class TestSeekTo {
public static Collection<Object[]> parameters() {
List<Object[]> paramList = new ArrayList<Object[]>();
for (DataBlockEncoding encoding : DataBlockEncoding.values()) {
// Remove after HBASE-13939
if (encoding != DataBlockEncoding.PREFIX_TREE) {
paramList.add(new Object[] { encoding });
}
paramList.add(new Object[] { encoding });
}
return paramList;
}