hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sean Busbey (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-12329) Table create with duplicate column family names quietly succeeds
Date Fri, 31 Oct 2014 17:17:33 GMT

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

Sean Busbey commented on HBASE-12329:
-------------------------------------

{quote}
bq. Should we add a third method "setFamily" that behaves like the old add?

If it's added, does it imply such an operation (add or update in one method) is allowed, and
users should be aware of "last one wins" at that time? If so why do we re-implement addFamily
and add modifyFamily? The existing addFamily is enough. Is it?
{quote}

It's API semantics. "addXXX" means to put something new in, "modifyXXX" means to update something
already present. "setXXX" is used in other places to mean "add or update", knowledge of "last
write wins" is already baked into the naming.

> 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
>         Attachments: HBASE-12329-V2.diff, HBASE-12329-V3.diff, HBASE-12329.diff
>
>
> 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)

Mime
View raw message