HBASE-13779 Calling table.exists() before table.get() end up with an empty Result (addendum)

This commit is contained in:
Matteo Bertozzi 2015-05-29 17:21:20 -07:00
parent e0cf811b33
commit 749dda6aca
3 changed files with 45 additions and 3 deletions

View File

@ -99,7 +99,11 @@ public class Get extends Query
*/ */
public Get(Get get) { public Get(Get get) {
this(get.getRow()); this(get.getRow());
this.filter = get.getFilter(); // from Query
this.setFilter(get.getFilter());
this.setReplicaId(get.getReplicaId());
this.setConsistency(get.getConsistency());
// from Get
this.cacheBlocks = get.getCacheBlocks(); this.cacheBlocks = get.getCacheBlocks();
this.maxVersions = get.getMaxVersions(); this.maxVersions = get.getMaxVersions();
this.storeLimit = get.getMaxResultsPerColumnFamily(); this.storeLimit = get.getMaxResultsPerColumnFamily();

View File

@ -684,7 +684,7 @@ public class HTable implements HTableInterface {
*/ */
@Override @Override
public Result get(final Get get) throws IOException { public Result get(final Get get) throws IOException {
return get(get, false); return get(get, get.isCheckExistenceOnly());
} }
private Result get(Get get, final boolean checkExistenceOnly) throws IOException { private Result get(Get get, final boolean checkExistenceOnly) throws IOException {

View File

@ -40,6 +40,8 @@ import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.KeyOnlyFilter; import org.apache.hadoop.hbase.filter.KeyOnlyFilter;
import org.apache.hadoop.hbase.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
import org.apache.hadoop.hbase.protobuf.generated.ClientProtos; import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;
import org.apache.hadoop.hbase.security.access.Permission;
import org.apache.hadoop.hbase.security.visibility.Authorizations;
import org.apache.hadoop.hbase.testclassification.ClientTests; import org.apache.hadoop.hbase.testclassification.ClientTests;
import org.apache.hadoop.hbase.testclassification.SmallTests; import org.apache.hadoop.hbase.testclassification.SmallTests;
import org.apache.hadoop.hbase.util.Base64; import org.apache.hadoop.hbase.util.Base64;
@ -159,8 +161,44 @@ public class TestGet {
@Test @Test
public void TestGetRowFromGetCopyConstructor() throws Exception { public void TestGetRowFromGetCopyConstructor() throws Exception {
Get get = new Get(ROW); Get get = new Get(ROW);
get.setFilter(null);
get.setAuthorizations(new Authorizations("foo"));
get.setACL("u", new Permission(Permission.Action.READ));
get.setConsistency(Consistency.TIMELINE);
get.setReplicaId(2);
get.setIsolationLevel(IsolationLevel.READ_UNCOMMITTED);
get.setCheckExistenceOnly(true);
get.setClosestRowBefore(true);
get.setTimeRange(3, 4);
get.setMaxVersions(11);
get.setMaxResultsPerColumnFamily(10);
get.setRowOffsetPerColumnFamily(11);
get.setCacheBlocks(true);
Get copyGet = new Get(get); Get copyGet = new Get(get);
assertEquals(0, Bytes.compareTo(get.getRow(), copyGet.getRow())); assertEquals(0, Bytes.compareTo(get.getRow(), copyGet.getRow()));
// from OperationWithAttributes
assertEquals(get.getId(), copyGet.getId());
// from Query class
assertEquals(get.getFilter(), copyGet.getFilter());
assertTrue(get.getAuthorizations().toString().equals(copyGet.getAuthorizations().toString()));
assertTrue(Bytes.equals(get.getACL(), copyGet.getACL()));
assertEquals(get.getConsistency(), copyGet.getConsistency());
assertEquals(get.getReplicaId(), copyGet.getReplicaId());
assertEquals(get.getIsolationLevel(), copyGet.getIsolationLevel());
// from Get class
assertEquals(get.isCheckExistenceOnly(), copyGet.isCheckExistenceOnly());
assertEquals(get.isClosestRowBefore(), copyGet.isClosestRowBefore());
assertTrue(get.getTimeRange().equals(copyGet.getTimeRange()));
assertEquals(get.isClosestRowBefore(), copyGet.isClosestRowBefore());
assertEquals(get.getMaxVersions(), copyGet.getMaxVersions());
assertEquals(get.getMaxResultsPerColumnFamily(), copyGet.getMaxResultsPerColumnFamily());
assertEquals(get.getRowOffsetPerColumnFamily(), copyGet.getRowOffsetPerColumnFamily());
assertEquals(get.getCacheBlocks(), copyGet.getCacheBlocks());
assertEquals(get.getId(), copyGet.getId());
} }
@Test @Test