Index: src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java =================================================================== --- src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java (date 1299110957000) +++ src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java (revision ) @@ -148,6 +148,16 @@ 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 @@ 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"); Index: src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java (date 1299110957000) +++ src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java (revision ) @@ -284,7 +284,7 @@ "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));