Github user arina-ielchiieva commented on a diff in the pull request:

    https://github.com/apache/drill/pull/1033#discussion_r152583668
  
    --- Diff: 
exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestViewSupport.java ---
    @@ -311,6 +311,75 @@ public void createViewWhenViewAlreadyExists() throws 
Exception {
         }
       }
     
    +  @Test // DRILL-5952
    +  public void createViewIfNotExistsWhenTableAlreadyExists() throws 
Exception {
    +    final String tableName = generateViewName();
    +
    +    try {
    +      final String tableDef = "SELECT region_id, sales_city FROM 
cp.`region.json` ORDER BY `region_id` LIMIT 2";
    +
    +      test("CREATE TABLE %s.%s as %s", DFS_TMP_SCHEMA, tableName, 
tableDef);
    +
    +      // Try to create the view with same name in same schema with if not 
exists clause.
    +      final String createViewSql = String.format("CREATE VIEW IF NOT 
EXISTS %s.`%s` AS %s", DFS_TMP_SCHEMA, tableName, tableDef);
    +
    +      testBuilder()
    +        .sqlQuery(createViewSql)
    +        .unOrdered()
    +        .baselineColumns("ok", "summary")
    +        .baselineValues(false,
    +          String.format("A non-view table with given name [%s] already 
exists in schema [%s]", tableName, DFS_TMP_SCHEMA))
    +        .go();
    +
    +    } finally {
    +      FileUtils.deleteQuietly(new File(dirTestWatcher.getDfsTestTmpDir(), 
tableName));
    +    }
    +  }
    +
    +  @Test // DRILL-5952
    +  public void createViewIfNotExistsWhenViewAlreadyExists() throws 
Exception {
    +    final String viewName = generateViewName();
    +
    +    try {
    +      final String viewDef1 = "SELECT region_id, sales_city FROM 
cp.`region.json` ORDER BY `region_id` LIMIT 2";
    +
    +      // Create the view
    +      createViewHelper(DFS_TMP_SCHEMA, viewName, DFS_TMP_SCHEMA, null, 
viewDef1);
    +
    +      // Try to create the view with same name in same schema with if not 
exists clause.
    +      final String viewDef2 = "SELECT sales_state_province FROM 
cp.`region.json` ORDER BY `region_id`";
    +      final String createViewSql = String.format("CREATE VIEW IF NOT 
EXISTS %s.`%s` AS %s", DFS_TMP_SCHEMA, viewName, viewDef2);
    +
    +      testBuilder()
    +        .sqlQuery(createViewSql)
    +        .unOrdered()
    +        .baselineColumns("ok", "summary")
    +        .baselineValues(false,
    +          String.format("A view with given name [%s] already exists in 
schema [%s]", viewName, DFS_TMP_SCHEMA))
    +        .go();
    +
    +      // Make sure the view created returns the data expected.
    +      queryViewHelper(String.format("SELECT * FROM %s.`%s` LIMIT 1", 
DFS_TMP_SCHEMA, viewName),
    +        new String[]{"region_id", "sales_city"},
    +        ImmutableList.of(new Object[]{0L, "None"})
    +      );
    +    } finally {
    +      dropViewHelper(DFS_TMP_SCHEMA, viewName, DFS_TMP_SCHEMA);
    +    }
    +  }
    +
    +  @Test // DRILL-5952
    +  public void createViewWithBothOrReplaceAndIfNotExists() throws Exception 
{
    +    final String viewName = generateViewName();
    +
    +    final String viewDef = "SELECT region_id, sales_city FROM 
cp.`region.json`";
    +
    +    // Try to create the view with both <or replace> and <if not exists> 
clause.
    +    final String createViewSql = String.format("CREATE OR REPLACE VIEW IF 
NOT EXISTS %s.`%s` AS %s", DFS_TMP_SCHEMA, viewName, viewDef);
    +
    +    errorMsgTestHelper(createViewSql, "Create view statement cannot have 
both <OR REPLACE> and <IF NOT EXISTS> clause");
    +  }
    +
    --- End diff --
    
    Please add unit test to check if view is created with `if not exists` 
clause.


---

Reply via email to