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.


---

Reply via email to