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]
