@@ -110,6 +110,10 @@ pub fn sql_tests() -> Vec<(&'static str, TestFn)> {
110110 "create_table_with_csv_no_header_and_delimiter" ,
111111 create_table_with_csv_no_header_and_delimiter,
112112 ) ,
113+ t(
114+ "create_table_with_csv_no_header_and_quotes" ,
115+ create_table_with_csv_no_header_and_quotes,
116+ ) ,
113117 t( "create_table_with_url" , create_table_with_url) ,
114118 t( "create_table_fail_and_retry" , create_table_fail_and_retry) ,
115119 t( "empty_crash" , empty_crash) ,
@@ -2276,6 +2280,54 @@ async fn create_table_with_csv_no_header_and_delimiter(service: Box<dyn SqlClien
22762280 ) ;
22772281}
22782282
2283+ async fn create_table_with_csv_no_header_and_quotes ( service : Box < dyn SqlClient > ) {
2284+ let file = write_tmp_file ( indoc ! { "
2285+ \" \" \" apple\" ,31
2286+ \" a\" \" pple\" ,32
2287+ \" a\" \" pp\" \" le\" ,12
2288+ apple,2
2289+ banana,3
2290+ \" \" \" orange\" \" orange\" ,4
2291+ " } )
2292+ . unwrap ( ) ;
2293+ let path = file. path ( ) . to_string_lossy ( ) ;
2294+ let _ = service
2295+ . exec_query ( "CREATE SCHEMA IF NOT EXISTS test" )
2296+ . await
2297+ . unwrap ( ) ;
2298+ let _ = service
2299+ . exec_query ( format ! ( "CREATE TABLE test.table (`fruit` text, `number` int) WITH (input_format = 'csv_no_header', delimiter = ',', disable_quoting = false) LOCATION '{}'" , path) . as_str ( ) )
2300+ . await
2301+ . unwrap ( ) ;
2302+ let result = service
2303+ . exec_query ( "SELECT * FROM test.table" )
2304+ . await
2305+ . unwrap ( ) ;
2306+ assert_eq ! (
2307+ to_rows( & result) ,
2308+ vec![
2309+ vec![
2310+ TableValue :: String ( "\" apple" . to_string( ) ) ,
2311+ TableValue :: Int ( 31 )
2312+ ] ,
2313+ vec![
2314+ TableValue :: String ( "\" orange\" orange" . to_string( ) ) ,
2315+ TableValue :: Int ( 4 )
2316+ ] ,
2317+ vec![
2318+ TableValue :: String ( "a\" pp\" le" . to_string( ) ) ,
2319+ TableValue :: Int ( 12 )
2320+ ] ,
2321+ vec![
2322+ TableValue :: String ( "a\" pple" . to_string( ) ) ,
2323+ TableValue :: Int ( 32 )
2324+ ] ,
2325+ vec![ TableValue :: String ( "apple" . to_string( ) ) , TableValue :: Int ( 2 ) ] ,
2326+ vec![ TableValue :: String ( "banana" . to_string( ) ) , TableValue :: Int ( 3 ) ] ,
2327+ ]
2328+ ) ;
2329+ }
2330+
22792331async fn create_table_with_url ( service : Box < dyn SqlClient > ) {
22802332 // TODO serve this data ourselves
22812333 let url = "https://data.wprdc.org/dataset/0b584c84-7e35-4f4d-a5a2-b01697470c0f/resource/e95dd941-8e47-4460-9bd8-1e51c194370b/download/bikepghpublic.csv" ;
0 commit comments