Github user sudheeshkatkam commented on the issue:

    https://github.com/apache/drill/pull/541
  
    tl;dr +1, please open a ticket.
    
    Moving conversation. Vitalii said:
    > I checked every schema#getTable and found that every method can throw 
exception only if something go wrong (permissionError, dataReadError, 
IOException etc). 
    getTableFromSchema()can not throw any exception, because in this method 
catch (Exception e) is used.
    
    Correct, `catch(Exception e)` is used, but the exception is wrapped in a 
`DrillRuntimeException` and re-thrown.
    
    I think it "happens so" that all plugins are doing the right thing. To 
explain myself, there are two cases that I am concerned about:
    
    1.  `getTableFromSchema` (and underlying `schema#getTable`) throws an 
exception when a table does not exist. For example, if the HBase plugin 
supports dropping tables in the future, an invalid table name will cause the 
query to [fail 
with](https://github.com/apache/drill/blob/master/contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/DrillHBaseTable.java#L42)
 a `TableNotFoundException`, which is exactly the case an exception should not 
thrown, if `IF EXISTS` exists.  _For now,_ since hbase schema is not mutable, 
the [check for schema 
mutability](https://github.com/apache/drill/pull/541/files#diff-50862f72c560b2d1bd9af36e83019d80R66),
 before deleting the table, fails.
    
    2. `getTableFromSchema` (and underlying `schema#getTable`) does not return 
`null` for non-existent tables, and `schema#dropTable` will fail. _For now_, 
only two schema support dropping tables: `WorkspaceSchema` and `KuduTables`, 
and they return `null` for non-existent tables. The check for schema mutability 
fails for other schema.
    
    Overall, it seems there is an unwritten rule (`schema#getTable` should 
return `null` if the table does not exist) that should be documented, and HBase 
plugin should be fixed. AFAIK other plugins follow this rule.
    
    +1 for the changes; I think we should track these above issues in another 
ticket.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to