You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2011/03/12 07:34:26 UTC

svn commit: r1080870 - in /hbase/trunk: CHANGES.txt src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java

Author: stack
Date: Sat Mar 12 06:34:26 2011
New Revision: 1080870

URL: http://svn.apache.org/viewvc?rev=1080870&view=rev
Log:
HBASE-3538 Column families allow to have slashes in name

Modified:
    hbase/trunk/CHANGES.txt
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java
    hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java

Modified: hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=1080870&r1=1080869&r2=1080870&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Sat Mar 12 06:34:26 2011
@@ -65,6 +65,7 @@ Release 0.91.0 - Unreleased
    HBASE-3612  HBaseAdmin::isTableAvailable returns true when the table does
                not exit
    HBASE-3626  Update instructions in thrift demo files (Moaz Reyad via Stack)
+   HBASE-3538  Column families allow to have slashes in name (Ian Knome via Stack)
 
   IMPROVEMENTS
    HBASE-3290  Max Compaction Size (Nicolas Spiegelberg via Stack)  

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java?rev=1080870&r1=1080869&r2=1080870&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java Sat Mar 12 06:34:26 2011
@@ -284,7 +284,7 @@ public class HColumnDescriptor implement
         "period: " + Bytes.toString(b));
     }
     for (int i = 0; i < b.length; i++) {
-      if (Character.isISOControl(b[i]) || b[i] == ':') {
+      if (Character.isISOControl(b[i]) || b[i] == ':' || b[i] == '\\' || b[i] == '/') {
         throw new IllegalArgumentException("Illegal character <" + b[i] +
           ">. Family names cannot contain control characters or colons: " +
           Bytes.toString(b));

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java?rev=1080870&r1=1080869&r2=1080870&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java Sat Mar 12 06:34:26 2011
@@ -148,6 +148,16 @@ public class TestAdmin {
     assertEquals(htd.compareTo(confirmedHtd), 0);
   }
 
+  @Test
+  public void testHColumnValidName() {
+       boolean exceptionThrown = false;
+       try {
+       HColumnDescriptor fam1 = new HColumnDescriptor("\\test\\abc");
+       } catch(IllegalArgumentException iae) {
+           exceptionThrown = true;
+           assertTrue(exceptionThrown);
+       }
+   }
   /**
    * Verify schema modification takes.
    * @throws IOException
@@ -622,6 +632,11 @@ public class TestAdmin {
     this.admin.createTable(new HTableDescriptor());
   }
 
+  @Test (expected=IllegalArgumentException.class)
+  public void testInvalidHColumnDescriptor() throws IOException {
+     HColumnDescriptor hcd = new HColumnDescriptor("/cfamily/name");
+  }
+
   @Test
   public void testEnableDisableAddColumnDeleteColumn() throws Exception {
     byte [] tableName = Bytes.toBytes("testMasterAdmin");