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

James Taylor commented on PHOENIX-3186:
---------------------------------------

I'm having a hard time reproducing this. It may only occur for the 
SYSTEM.CATALOG which isn't as important as it's under our control. Here's some 
tests that all pass:
{code}
    @Test
    public void testUnqualifiedPropSetOnHTableDesc() throws Exception {
        Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
        Connection conn = DriverManager.getConnection(getUrl(), props);
        String tableName = BaseTest.generateRandomString();
        conn.createStatement().execute("create table " + tableName + "(k 
varchar primary key) MY_PROP='1'");
        try (HBaseAdmin admin = 
conn.unwrap(PhoenixConnection.class).getQueryServices().getAdmin()) {
            HTableDescriptor tableDesc = 
admin.getTableDescriptor(TableName.valueOf(tableName));
            assertEquals("1", tableDesc.getValue("MY_PROP"));
            HColumnDescriptor[] columnFamilies = tableDesc.getColumnFamilies();
            assertEquals("0", columnFamilies[0].getNameAsString());
            assertNull(columnFamilies[0].getValue("MY_PROP"));
        }
    }
    
    @Test
    public void testUnqualifiedPropSetOnHTableDescForAlter() throws Exception {
        Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
        Connection conn = DriverManager.getConnection(getUrl(), props);
        String tableName = BaseTest.generateRandomString();
        String createTableStmt = "create table " + tableName + "(k varchar 
primary key)";
        conn.createStatement().execute(createTableStmt);
        conn.createStatement().execute("alter table " + tableName + " set 
MY_PROP='1'");
        try (HBaseAdmin admin = 
conn.unwrap(PhoenixConnection.class).getQueryServices().getAdmin()) {
            HTableDescriptor tableDesc = 
admin.getTableDescriptor(TableName.valueOf(tableName));
            assertEquals("1", tableDesc.getValue("MY_PROP"));
            HColumnDescriptor[] columnFamilies = tableDesc.getColumnFamilies();
            assertEquals("0", columnFamilies[0].getNameAsString());
            assertNull(columnFamilies[0].getValue("MY_PROP"));
        }
    }

    @Test
    public void testUnqualifiedPropSetOnHTableDescForAlterAndCreate() throws 
Exception {
        Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
        Connection conn = DriverManager.getConnection(getUrl(), props);
        String tableName = BaseTest.generateRandomString();
        String createTableStmt = "create table " + tableName + "(k varchar 
primary key)";
        conn.createStatement().execute(createTableStmt);
        conn.createStatement().execute("alter table " + tableName + " set 
MY_PROP='1'");
        try (HBaseAdmin admin = 
conn.unwrap(PhoenixConnection.class).getQueryServices().getAdmin()) {
            HTableDescriptor tableDesc = 
admin.getTableDescriptor(TableName.valueOf(tableName));
            assertEquals("1", tableDesc.getValue("MY_PROP"));
            HColumnDescriptor[] columnFamilies = tableDesc.getColumnFamilies();
            assertEquals("0", columnFamilies[0].getNameAsString());
            assertNull(columnFamilies[0].getValue("MY_PROP"));
        }
        try {
            conn.createStatement().execute(createTableStmt);
        } catch (TableAlreadyExistsException e) {
            
        }
        try (HBaseAdmin admin = 
conn.unwrap(PhoenixConnection.class).getQueryServices().getAdmin()) {
            HTableDescriptor tableDesc = 
admin.getTableDescriptor(TableName.valueOf(tableName));
            assertEquals("1", tableDesc.getValue("MY_PROP"));
            HColumnDescriptor[] columnFamilies = tableDesc.getColumnFamilies();
            assertEquals("0", columnFamilies[0].getNameAsString());
            assertNull(columnFamilies[0].getValue("MY_PROP"));
        }
        try {
            conn.createStatement().execute(createTableStmt + " MY_PROP='0'");
        } catch (TableAlreadyExistsException e) {
            
        }
        try (HBaseAdmin admin = 
conn.unwrap(PhoenixConnection.class).getQueryServices().getAdmin()) {
            HTableDescriptor tableDesc = 
admin.getTableDescriptor(TableName.valueOf(tableName));
            assertEquals("0", tableDesc.getValue("MY_PROP"));
            HColumnDescriptor[] columnFamilies = tableDesc.getColumnFamilies();
            assertEquals("0", columnFamilies[0].getNameAsString());
            assertNull(columnFamilies[0].getValue("MY_PROP"));
        }
    }
{code}

> Properties set in CREATE TABLE should be set on the HTableDescriptor, not the 
> HColumnDescriptor
> -----------------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-3186
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-3186
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: James Taylor
>            Assignee: Samarth Jain
>
> Unless they're qualified with a column family, properties set in CREATE TABLE 
> should be set on the HTableDescriptor, not the HColumnDescriptor. See this[1] 
> comment in PHOENIX-3167.
> [1] 
> https://issues.apache.org/jira/browse/PHOENIX-3167?focusedCommentId=15423596&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15423596



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

Reply via email to