Return-Path: Delivered-To: apmail-hadoop-hbase-commits-archive@minotaur.apache.org Received: (qmail 58215 invoked from network); 17 Sep 2009 01:25:27 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 17 Sep 2009 01:25:27 -0000 Received: (qmail 50687 invoked by uid 500); 17 Sep 2009 01:25:27 -0000 Delivered-To: apmail-hadoop-hbase-commits-archive@hadoop.apache.org Received: (qmail 50637 invoked by uid 500); 17 Sep 2009 01:25:27 -0000 Mailing-List: contact hbase-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hbase-dev@hadoop.apache.org Delivered-To: mailing list hbase-commits@hadoop.apache.org Received: (qmail 50628 invoked by uid 99); 17 Sep 2009 01:25:27 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 17 Sep 2009 01:25:27 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 17 Sep 2009 01:25:25 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 6629E2388965; Thu, 17 Sep 2009 01:25:05 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r816024 - in /hadoop/hbase/trunk: CHANGES.txt src/java/org/apache/hadoop/hbase/regionserver/HRegion.java src/test/org/apache/hadoop/hbase/client/TestClient.java Date: Thu, 17 Sep 2009 01:25:05 -0000 To: hbase-commits@hadoop.apache.org From: jgray@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090917012505.6629E2388965@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jgray Date: Thu Sep 17 01:25:04 2009 New Revision: 816024 URL: http://svn.apache.org/viewvc?rev=816024&view=rev Log: HBASE-1847 Delete latest of a null qualifier when non-null qualifiers exist throws a RuntimeException Modified: hadoop/hbase/trunk/CHANGES.txt hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/client/TestClient.java Modified: hadoop/hbase/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=816024&r1=816023&r2=816024&view=diff ============================================================================== --- hadoop/hbase/trunk/CHANGES.txt (original) +++ hadoop/hbase/trunk/CHANGES.txt Thu Sep 17 01:25:04 2009 @@ -30,6 +30,8 @@ HBASE-818 HFile code review and refinement (Schubert Zhang via Stack) HBASE-1830 HbaseObjectWritable methods should allow null HBCs for when Writable is not Configurable (Stack via jgray) + HBASE-1847 Delete latest of a null qualifier when non-null qualifiers + exist throws a RuntimeException IMPROVEMENTS HBASE-1760 Cleanup TODOs in HTable Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java?rev=816024&r1=816023&r2=816024&view=diff ============================================================================== --- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java (original) +++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java Thu Sep 17 01:25:04 2009 @@ -1160,7 +1160,8 @@ NavigableSet qualifiers = new TreeSet(Bytes.BYTES_COMPARATOR); byte [] q = kv.getQualifier(); - if (q != null && q.length > 0) qualifiers.add(kv.getQualifier()); + if(q == null) q = HConstants.EMPTY_BYTE_ARRAY; + qualifiers.add(q); get(store, g, qualifiers, result); if (result.isEmpty()) { // Nothing to delete Modified: hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/client/TestClient.java URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/client/TestClient.java?rev=816024&r1=816023&r2=816024&view=diff ============================================================================== --- hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/client/TestClient.java (original) +++ hadoop/hbase/trunk/src/test/org/apache/hadoop/hbase/client/TestClient.java Thu Sep 17 01:25:04 2009 @@ -1070,7 +1070,7 @@ result.size() == 9); } - + public void testDeletes() throws Exception { byte [] TABLE = Bytes.toBytes("testDeletes"); @@ -1113,6 +1113,9 @@ put.add(FAMILIES[0], QUALIFIER, ts[4], VALUES[4]); put.add(FAMILIES[0], QUALIFIER, ts[2], VALUES[2]); put.add(FAMILIES[0], QUALIFIER, ts[3], VALUES[3]); + put.add(FAMILIES[0], null, ts[4], VALUES[4]); + put.add(FAMILIES[0], null, ts[2], VALUES[2]); + put.add(FAMILIES[0], null, ts[3], VALUES[3]); ht.put(put); delete = new Delete(ROW); @@ -1120,7 +1123,7 @@ ht.delete(delete); get = new Get(ROW); - get.addFamily(FAMILIES[0]); + get.addColumn(FAMILIES[0], QUALIFIER); get.setMaxVersions(Integer.MAX_VALUE); result = ht.get(get); assertNResult(result, ROW, FAMILIES[0], QUALIFIER, @@ -1129,7 +1132,7 @@ 0, 2); scan = new Scan(ROW); - scan.addFamily(FAMILIES[0]); + scan.addColumn(FAMILIES[0], QUALIFIER); scan.setMaxVersions(Integer.MAX_VALUE); result = getSingleScanResult(ht, scan); assertNResult(result, ROW, FAMILIES[0], QUALIFIER, @@ -1137,6 +1140,16 @@ new byte[][] {VALUES[1], VALUES[2], VALUES[3]}, 0, 2); + // Test for HBASE-1847 + delete = new Delete(ROW); + delete.deleteColumn(FAMILIES[0], null); + ht.delete(delete); + + // Cleanup null qualifier + delete = new Delete(ROW); + delete.deleteColumns(FAMILIES[0], null); + ht.delete(delete); + // Expected client behavior might be that you can re-put deleted values // But alas, this is not to be. We can't put them back in either case.