[ https://issues.apache.org/jira/browse/PHOENIX-3167?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15423824#comment-15423824 ]
James Taylor commented on PHOENIX-3167: --------------------------------------- We can potentially change it, but that's the way it's always worked. IMHO it's not a high priority, but we could potentially restore the original HTableDescriptor if the table already exists. But arguably the current behavior is more correct as you're telling the system to configure the table in the given shape (which it'll have on completion). There's also the issue of the existing table not matching the new declaration which we ignore now (there's a separate JIRA already). Should we error instead or adjust the schema? What if there's a SPLIT clause? > CREATE TABLE on an existing table resets the HTableMetadata > ----------------------------------------------------------- > > Key: PHOENIX-3167 > URL: https://issues.apache.org/jira/browse/PHOENIX-3167 > Project: Phoenix > Issue Type: Bug > Reporter: Samarth Jain > Assignee: Samarth Jain > Fix For: 4.8.1 > > Attachments: PHOENIX-3167.patch > > > {code} > @Test > public void testRecreatingExistingTableMaintainsHTableProperties() throws > Exception { > Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); > Connection conn = DriverManager.getConnection(getUrl(), props); > String ddl = "ALTER TABLE SYSTEM.CATALOG SET KEEP_DELETED_CELLS = > false"; > conn.createStatement().execute(ddl); > assertDeleteCellsDisabled(conn); > try { > > conn.createStatement().execute(QueryConstants.CREATE_TABLE_METADATA); > } catch (TableAlreadyExistsException e) { > } > assertDeleteCellsDisabled(conn); > } > > private void assertDeleteCellsDisabled(Connection conn) throws > org.apache.hadoop.hbase.TableNotFoundException, > IOException, SQLException { > try (HBaseAdmin admin = > conn.unwrap(PhoenixConnection.class).getQueryServices().getAdmin()) { > HTableDescriptor tableDesc = > admin.getTableDescriptor(Bytes.toBytes("SYSTEM.CATALOG")); > HColumnDescriptor[] columnFamilies = > tableDesc.getColumnFamilies(); > assertEquals("0", columnFamilies[0].getNameAsString()); > assertEquals(KeepDeletedCells.FALSE, > columnFamilies[0].getKeepDeletedCells()); > } > } > {code} > [~jamestaylor], [~apurtell], [~lhofhansl], [~mujtabachohan] - this is likely > why we saw that the keep deleted cells property always kept flipping to true > even though we set it to false in hbase shell. -- This message was sent by Atlassian JIRA (v6.3.4#6332)