Github user twdsilva commented on a diff in the pull request: https://github.com/apache/phoenix/pull/303#discussion_r191939222 --- Diff: phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java --- @@ -388,51 +435,65 @@ public void testViewAndTableInDifferentSchemas(boolean isNamespaceMapped) throws } catch (TableNotFoundException ignore) { } ddl = "DROP TABLE " + fullTableName1; - validateCannotDropTableWithChildViewsWithoutCascade(conn, fullTableName1); ddl = "DROP VIEW " + fullViewName2; conn.createStatement().execute(ddl); ddl = "DROP TABLE " + fullTableName1; conn.createStatement().execute(ddl); } - + @Test - public void testDisallowDropOfColumnOnParentTable() throws Exception { + public void testDropOfColumnOnParentTableInvalidatesView() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); + String fullTableName = generateUniqueTableName(); + String viewName = generateUniqueViewName(); + splitSystemCatalog(Lists.newArrayList(fullTableName, viewName)); + String ddl = "CREATE TABLE " + fullTableName + " (k1 INTEGER NOT NULL, k2 INTEGER NOT NULL, v1 DECIMAL, CONSTRAINT pk PRIMARY KEY (k1, k2))" + tableDDLOptions; conn.createStatement().execute(ddl); - String viewName = "V_" + generateUniqueName(); ddl = "CREATE VIEW " + viewName + "(v2 VARCHAR, v3 VARCHAR) AS SELECT * FROM " + fullTableName + " WHERE v1 = 1.0"; conn.createStatement().execute(ddl); - try { - conn.createStatement().execute("ALTER TABLE " + fullTableName + " DROP COLUMN v1"); - fail(); - } catch (SQLException e) { - assertEquals(SQLExceptionCode.CANNOT_MUTATE_TABLE.getErrorCode(), e.getErrorCode()); + conn.createStatement().execute("ALTER TABLE " + fullTableName + " DROP COLUMN v1"); + // TODO see if its possibel to prevent the dropping of a column thats required by a child view (for its view where clause) + // the view should be invalid --- End diff -- Previously we used to prevent a base table column from being dropped if the column was used in a child view index. It's possible to detect this and prevent the column drop even with splittable system.catalog if you think we should maintain the existing behavior.
---