@@ -2149,6 +2149,64 @@ fn test_create_stage() {
21492149 ) ;
21502150}
21512151
2152+ #[ test]
2153+ fn test_create_file_format ( ) {
2154+ let sql = "CREATE FILE FORMAT analytics.formats.parquet TYPE=PARQUET" ;
2155+ match snowflake ( ) . verified_stmt ( sql) {
2156+ Statement :: CreateFileFormat {
2157+ or_replace,
2158+ temporary,
2159+ if_not_exists,
2160+ name,
2161+ options,
2162+ comment,
2163+ } => {
2164+ assert ! ( !or_replace) ;
2165+ assert ! ( !temporary) ;
2166+ assert ! ( !if_not_exists) ;
2167+ assert_eq ! ( name. to_string( ) , "analytics.formats.parquet" ) ;
2168+ assert_eq ! ( options. options. len( ) , 1 ) ;
2169+ assert ! ( comment. is_none( ) ) ;
2170+ }
2171+ _ => unreachable ! ( ) ,
2172+ }
2173+ assert_eq ! ( snowflake( ) . verified_stmt( sql) . to_string( ) , sql) ;
2174+
2175+ let sql = "CREATE FILE FORMAT IF NOT EXISTS existing_format TYPE=JSON" ;
2176+ match snowflake ( ) . verified_stmt ( sql) {
2177+ Statement :: CreateFileFormat { if_not_exists, .. } => assert ! ( if_not_exists) ,
2178+ _ => unreachable ! ( ) ,
2179+ }
2180+
2181+ let sql = concat ! (
2182+ "CREATE OR REPLACE TEMPORARY FILE FORMAT csv_format " ,
2183+ "TYPE=CSV FIELD_DELIMITER='|' NULL_IF=('NULL', 'null') " ,
2184+ "COMMENT='pipe-delimited input'"
2185+ ) ;
2186+ match snowflake ( ) . verified_stmt ( sql) {
2187+ Statement :: CreateFileFormat {
2188+ or_replace,
2189+ temporary,
2190+ if_not_exists,
2191+ name,
2192+ options,
2193+ comment,
2194+ } => {
2195+ assert ! ( or_replace) ;
2196+ assert ! ( temporary) ;
2197+ assert ! ( !if_not_exists) ;
2198+ assert_eq ! ( name. to_string( ) , "csv_format" ) ;
2199+ assert_eq ! ( options. options. len( ) , 3 ) ;
2200+ assert_eq ! ( comment. as_deref( ) , Some ( "pipe-delimited input" ) ) ;
2201+ }
2202+ _ => unreachable ! ( ) ,
2203+ }
2204+ assert_eq ! ( snowflake( ) . verified_stmt( sql) . to_string( ) , sql) ;
2205+
2206+ let sql = "CREATE VOLATILE FILE FORMAT json_format TYPE=JSON" ;
2207+ snowflake ( ) . one_statement_parses_to ( sql, "CREATE TEMPORARY FILE FORMAT json_format TYPE=JSON" ) ;
2208+ }
2209+
21522210#[ test]
21532211fn test_create_stage_with_stage_params ( ) {
21542212 let sql = concat ! (
0 commit comments