alamb opened a new issue, #3349:
URL: https://github.com/apache/arrow-datafusion/issues/3349

   **Is your feature request related to a problem or challenge? Please describe 
what you are trying to do.**
   
   I would like to more cleanly separate the DDL (data definition) statements 
supported by DataFusion from the query execution.
   
   Specifically, DataFusion offers basic support for "catalog" like operations 
such as registering external tables (`CREATE EXTERNAL TABLE`) , views (`CREATE 
VIEW`) and others. Some systems (like `datafusion-cli` or the 
`tpch-benchmarks`) use this basic support and others such as 
https://github.com/influxdata/influxdb_iox use DataFusion to query tables and 
views that are defined elsewhere. 
   
   The current support for catalog like operations is implemented as individual 
`LogicalPlan` variants such as `LogicalPlan::CreateExternalTable`
   
   
https://github.com/apache/arrow-datafusion/blob/5621e3bbd050eeb79646240ec0a09426badfa162/datafusion/expr/src/logical_plan/plan.rs#L77-L90
   
   This results in two potential issues:
   1. Adding support for a new statement (such as `DROP TABLE`, as in 
https://github.com/apache/arrow-datafusion/pull/3267) results in a bunch of 
boiler plate that may not be needed
   2. It is non-trivial to understand how to configure DataFusion so that it 
does not support `CREATE VIEW` or `CREATE TABLE` if that is not desired ( 
because, e.g. it would be a security hole - [see this 
test](https://github.com/influxdata/influxdb_iox/blob/main/query_tests/src/sql.rs#L342-L352)):
 
   
   **Describe the solution you'd like**
   I would like to consolidate `LogicalPlan::Create*` and `LogicalPlan::Drop*` 
variants into a single `LogicalPlan::DDL` variant, and make a new 
`DDLStatement` enum like
   
   ```rust
   enum LogicalPlan { 
   ...
     DDL(DDLStatement),
   ...
   }
   
   enum DDLStatement {
     CreateTable(CreateTable),
     DropTable(DroptTable),
     ..
   }
   ```
   
   
   **Describe alternatives you've considered**
   We can not make any changes (as this change would result in some API churn)
   
   **Additional context**
   See 
https://github.com/apache/arrow-datafusion/pull/3267#discussion_r962128665
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to