Repository: phoenix Updated Branches: refs/heads/4.2 3e99349b7 -> bbdd9e06d
PHOENIX-1442: Alter Index double normalize Index Table Name Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/bbdd9e06 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/bbdd9e06 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/bbdd9e06 Branch: refs/heads/4.2 Commit: bbdd9e06d3eaaf2a29af4846141b83a8e8bf8470 Parents: 3e99349 Author: Jeffrey Zhong <jeffr...@apache.org> Authored: Wed Nov 12 11:47:40 2014 -0800 Committer: Jeffrey Zhong <jeffr...@apache.org> Committed: Wed Nov 12 11:47:40 2014 -0800 ---------------------------------------------------------------------- .../phoenix/end2end/index/IndexMetadataIT.java | 33 ++++++++++++++++++++ phoenix-core/src/main/antlr3/PhoenixSQL.g | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/bbdd9e06/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexMetadataIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexMetadataIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexMetadataIT.java index 2547844..fb4b827 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexMetadataIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/IndexMetadataIT.java @@ -342,6 +342,39 @@ public class IndexMetadataIT extends BaseHBaseManagedTimeIT { conn.close(); } } + + @Test + public void testAlterIndexWithLowerCaseName() throws Exception { + Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); + Connection conn = DriverManager.getConnection(getUrl(), props); + conn.setAutoCommit(false); + String indexName = "\"lowerCaseIndex\""; + try { + ensureTableCreated(getUrl(), INDEX_DATA_TABLE); + String ddl = "CREATE INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + INDEX_DATA_TABLE + + " (char_col1 ASC, int_col2 ASC, long_col2 DESC)" + + " INCLUDE (int_col1)"; + PreparedStatement stmt = conn.prepareStatement(ddl); + stmt.execute(); + + ddl = "ALTER INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + INDEX_DATA_TABLE + " UNUSABLE"; + conn.createStatement().execute(ddl); + // Verify the metadata for index is correct. + ResultSet rs = conn.getMetaData().getTables(null, StringUtil.escapeLike(INDEX_DATA_SCHEMA), "lowerCaseIndex", new String[] {PTableType.INDEX.toString()}); + assertTrue(rs.next()); + assertEquals("lowerCaseIndex", rs.getString(3)); + + ddl = "DROP INDEX " + indexName + " ON " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + INDEX_DATA_TABLE; + stmt = conn.prepareStatement(ddl); + stmt.execute(); + + // Assert the rows for index table is completely removed. + rs = conn.getMetaData().getIndexInfo(null, INDEX_DATA_SCHEMA, INDEX_DATA_TABLE, false, false); + assertFalse(rs.next()); + } finally { + conn.close(); + } + } @Test public void testIndexDefinitionWithRepeatedColumns() throws Exception { http://git-wip-us.apache.org/repos/asf/phoenix/blob/bbdd9e06/phoenix-core/src/main/antlr3/PhoenixSQL.g ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/antlr3/PhoenixSQL.g b/phoenix-core/src/main/antlr3/PhoenixSQL.g index e2636fb..01db4b6 100644 --- a/phoenix-core/src/main/antlr3/PhoenixSQL.g +++ b/phoenix-core/src/main/antlr3/PhoenixSQL.g @@ -488,7 +488,7 @@ drop_index_node returns [DropIndexStatement ret] // Parse a alter index statement alter_index_node returns [AlterIndexStatement ret] : ALTER INDEX (IF ex=EXISTS)? i=index_name ON t=from_table_name s=(USABLE | UNUSABLE | REBUILD | DISABLE) - {ret = factory.alterIndex(factory.namedTable(null,factory.table(t.getSchemaName(),i.getName())), t.getTableName(), ex!=null, PIndexState.valueOf(SchemaUtil.normalizeIdentifier(s.getText()))); } + {ret = factory.alterIndex(factory.namedTable(null, TableName.create(t.getSchemaName(), i.getName())), t.getTableName(), ex!=null, PIndexState.valueOf(SchemaUtil.normalizeIdentifier(s.getText()))); } ; // Parse an alter table statement.