[ 
https://issues.apache.org/jira/browse/HBASE-12329?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14182606#comment-14182606
 ] 

Jingcheng Du commented on HBASE-12329:
--------------------------------------

Hi [~busbey], I'm thinking how to differentiate the operations createTable and 
modifyTable.
In the modifyTable, users fetch the htd from the admin.getTableDescriptor which 
has all the existing hcds, in this case, it's allowed to add a new column to 
replace the old one by using htd.addFamily whereas in createTable it's not 
allowed. They're contrary, we need to know the HBaseAdmin ops(create or modify) 
in the HCD which is not reasonable.
I think this JIRA won't be a problem, users should be aware that if they add 
duplicated columns into the htd, the latter one will replace the former one.
What's your opinion one this? Please advise. Thanks.

> Table create with duplicate column family names quietly succeeds
> ----------------------------------------------------------------
>
>                 Key: HBASE-12329
>                 URL: https://issues.apache.org/jira/browse/HBASE-12329
>             Project: HBase
>          Issue Type: Bug
>          Components: Client, shell
>            Reporter: Sean Busbey
>            Assignee: Jingcheng Du
>            Priority: Minor
>
> From the mailing list
> {quote}
> I was expecting that it is forbidden, **but** this call does not throw any
> exception
> {code}
>         String[] families = {"cf", "cf"};
>         HTableDescriptor desc = new HTableDescriptor(name);
>         for (String cf : families) {
>           HColumnDescriptor coldef = new HColumnDescriptor(cf);
>           desc.addFamily(coldef);
>         }
>         try {
>             admin.createTable(desc);
>         } catch (TableExistsException e) {
>             throw new IOException("table \'" + name + "\' already exists");
>         }
> {code}
> {quote}
> And Ted's follow up replicates in the shell
> {code}
> hbase(main):001:0> create 't2', {NAME => 'f1'}, {NAME => 'f1'}
> The table got created - with 1 column family:
> hbase(main):002:0> describe 't2'
> DESCRIPTION
>                        ENABLED
>  't2', {NAME => 'f1', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW',
> REPLICATION_SCOPE => '0 true
>  ', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL =>
> '2147483647', KEEP_DELETED
>  _CELLS => 'false', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE
> => 'true'}
> 1 row(s) in 0.1000 seconds
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to