xudong963 commented on code in PR #4503:
URL: https://github.com/apache/arrow-datafusion/pull/4503#discussion_r1038980063


##########
datafusion/core/tests/sqllogictests/src/insert/mod.rs:
##########
@@ -17,46 +17,39 @@
 
 mod util;
 
-use crate::error::{DFSqlLogicTestError, Result};
+use crate::error::Result;
 use crate::insert::util::LogicTestContextProvider;
 use datafusion::datasource::MemTable;
 use datafusion::prelude::SessionContext;
 use datafusion_common::{DFSchema, DataFusionError};
 use datafusion_expr::Expr as DFExpr;
-use datafusion_sql::parser::{DFParser, Statement};
 use datafusion_sql::planner::SqlToRel;
 use sqlparser::ast::{Expr, SetExpr, Statement as SQLStatement};
 use std::collections::HashMap;
 
-pub async fn insert(ctx: &SessionContext, sql: String) -> Result<String> {
+pub async fn insert(ctx: &SessionContext, insert_stmt: &SQLStatement) -> 
Result<String> {
     // First, use sqlparser to get table name and insert values
-    let mut table_name = "".to_string();
-    let mut insert_values: Vec<Vec<Expr>> = vec![];
-    if let Statement::Statement(statement) = &DFParser::parse_sql(&sql)?[0] {
-        if let SQLStatement::Insert {
+    let table_name;
+    let insert_values: Vec<Vec<Expr>>;
+    match insert_stmt {
+        SQLStatement::Insert {
             table_name: name,
             source,
             ..
-        } = &**statement
-        {
+        } => {
             // Todo: check columns match table schema
             table_name = name.to_string();
             match &*source.body {
                 SetExpr::Values(values) => {
                     insert_values = values.0.clone();
                 }
                 _ => {
-                    return Err(DFSqlLogicTestError::NotImplemented(
-                        "Only support insert values".to_string(),
-                    ));
+                    // Directly panic: make it easy to find the location of 
the error.

Review Comment:
   Checked in my local, and it works
   
   ```
   [insert.slt] Running query: "insert into users select * from users;"
   thread 'main' panicked at 'explicit panic', 
datafusion/core/tests/sqllogictests/src/insert/mod.rs:48:21
   stack backtrace:
      0: rust_begin_unwind
                at 
/rustc/96ddd32c4bfb1d78f0cd03eb068b1710a8cebeef/library/std/src/panicking.rs:575:5
      1: core::panicking::panic_fmt
                at 
/rustc/96ddd32c4bfb1d78f0cd03eb068b1710a8cebeef/library/core/src/panicking.rs:65:14
      2: core::panicking::panic
                at 
/rustc/96ddd32c4bfb1d78f0cd03eb068b1710a8cebeef/library/core/src/panicking.rs:114:5
      3: sqllogictests::insert::insert::{{closure}}
                at ./tests/sqllogictests/src/insert/mod.rs:48:21
      4: <core::future::from_generator::GenFuture<T> as 
core::future::future::Future>::poll
                at 
/rustc/96ddd32c4bfb1d78f0cd03eb068b1710a8cebeef/library/core/src/future/mod.rs:91:19
      5: sqllogictests::run_query::{{closure}}
                at ./tests/sqllogictests/src/main.rs:151:53
      6: <core::future::from_generator::GenFuture<T> as 
core::future::future::Future>::poll
                at 
/rustc/96ddd32c4bfb1d78f0cd03eb068b1710a8cebeef/library/core/src/future/mod.rs:91:19
      7: <sqllogictests::DataFusion as 
sqllogictest::runner::AsyncDB>::run::{{closure}}
                at ./tests/sqllogictests/src/main.rs:48:47
   ```



-- 
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