@@ -1158,8 +1158,8 @@ fn parse_create_table_with_multiple_on_delete_fails() {
1158
1158
1159
1159
#[ test]
1160
1160
fn parse_assert ( ) {
1161
- let sql = "ASSERT (SELECT COUNT(*) FROM table ) > 0" ;
1162
- let ast = one_statement_parses_to ( sql, "ASSERT (SELECT COUNT(*) FROM table ) > 0" ) ;
1161
+ let sql = "ASSERT (SELECT COUNT(*) FROM my_table ) > 0" ;
1162
+ let ast = one_statement_parses_to ( sql, "ASSERT (SELECT COUNT(*) FROM my_table ) > 0" ) ;
1163
1163
match ast {
1164
1164
Statement :: Assert {
1165
1165
condition : _condition,
@@ -1173,18 +1173,18 @@ fn parse_assert() {
1173
1173
1174
1174
#[ test]
1175
1175
fn parse_assert_message ( ) {
1176
- let sql = "ASSERT (SELECT COUNT(*) FROM table ) > 0 AS 'No rows in table '" ;
1176
+ let sql = "ASSERT (SELECT COUNT(*) FROM my_table ) > 0 AS 'No rows in my_table '" ;
1177
1177
let ast = one_statement_parses_to (
1178
1178
sql,
1179
- "ASSERT (SELECT COUNT(*) FROM table ) > 0 AS 'No rows in table '" ,
1179
+ "ASSERT (SELECT COUNT(*) FROM my_table ) > 0 AS 'No rows in my_table '" ,
1180
1180
) ;
1181
1181
match ast {
1182
1182
Statement :: Assert {
1183
1183
condition : _condition,
1184
1184
message : Some ( message) ,
1185
1185
} => {
1186
1186
match message {
1187
- Expr :: Value ( Value :: SingleQuotedString ( s) ) => assert_eq ! ( s, "No rows in table " ) ,
1187
+ Expr :: Value ( Value :: SingleQuotedString ( s) ) => assert_eq ! ( s, "No rows in my_table " ) ,
1188
1188
_ => unreachable ! ( ) ,
1189
1189
} ;
1190
1190
}
@@ -1864,6 +1864,39 @@ fn parse_simple_math_expr_minus() {
1864
1864
verified_only_select ( sql) ;
1865
1865
}
1866
1866
1867
+ #[ test]
1868
+ fn parse_table_function ( ) {
1869
+ let select = verified_only_select ( "SELECT * FROM TABLE(FUN('1')) AS a" ) ;
1870
+
1871
+ match only ( select. from ) . relation {
1872
+ TableFactor :: TableFunction { expr, alias } => {
1873
+ let expected_expr = Expr :: Function ( Function {
1874
+ name : ObjectName ( vec ! [ Ident :: new( "FUN" ) ] ) ,
1875
+ args : vec ! [ FunctionArg :: Unnamed ( Expr :: Value (
1876
+ Value :: SingleQuotedString ( "1" . to_owned( ) ) ,
1877
+ ) ) ] ,
1878
+ over : None ,
1879
+ distinct : false ,
1880
+ } ) ;
1881
+ assert_eq ! ( expr, expected_expr) ;
1882
+ assert_eq ! ( alias, table_alias( "a" ) )
1883
+ }
1884
+ _ => panic ! ( "Expecting TableFactor::TableFunction" ) ,
1885
+ }
1886
+
1887
+ let res = parse_sql_statements ( "SELECT * FROM TABLE '1' AS a" ) ;
1888
+ assert_eq ! (
1889
+ ParserError :: ParserError ( "Expected (, found: \' 1\' " . to_string( ) ) ,
1890
+ res. unwrap_err( )
1891
+ ) ;
1892
+
1893
+ let res = parse_sql_statements ( "SELECT * FROM TABLE (FUN(a) AS a" ) ;
1894
+ assert_eq ! (
1895
+ ParserError :: ParserError ( "Expected ), found: AS" . to_string( ) ) ,
1896
+ res. unwrap_err( )
1897
+ ) ;
1898
+ }
1899
+
1867
1900
#[ test]
1868
1901
fn parse_delimited_identifiers ( ) {
1869
1902
// check that quoted identifiers in any position remain quoted after serialization
0 commit comments