@@ -2005,5 +2005,60 @@ public void testOracleHintExpression() throws JSQLParserException {
20052005 PlainSelect plainSelect = (PlainSelect ) ((Select ) parsed ).getSelectBody ();
20062006 assertExpressionCanBeDeparsedAs (plainSelect .getOracleHint (), "--+ HINT\n " );
20072007 }
2008-
2008+
2009+ public void testTableFunctionWithNoParams () throws Exception {
2010+ final String statement = "SELECT f2 FROM SOME_FUNCTION()" ;
2011+ Select select = (Select ) parserManager .parse (new StringReader (statement ));
2012+ PlainSelect plainSelect = (PlainSelect ) select .getSelectBody ();
2013+
2014+ assertTrue (plainSelect .getFromItem () instanceof TableFunction );
2015+ TableFunction fromItem = (TableFunction ) plainSelect .getFromItem ();
2016+ assertEquals ("SOME_FUNCTION" , fromItem .getName ());
2017+ assertNull (fromItem .getParameters ());
2018+ assertNull (fromItem .getAlias ());
2019+ assertStatementCanBeDeparsedAs (select , statement );
2020+ }
2021+
2022+ public void testTableFunctionWithParams () throws Exception {
2023+ final String statement = "SELECT f2 FROM SOME_FUNCTION(1, 'val')" ;
2024+ Select select = (Select ) parserManager .parse (new StringReader (statement ));
2025+ PlainSelect plainSelect = (PlainSelect ) select .getSelectBody ();
2026+
2027+ assertTrue (plainSelect .getFromItem () instanceof TableFunction );
2028+ TableFunction fromItem = (TableFunction ) plainSelect .getFromItem ();
2029+ assertEquals ("SOME_FUNCTION" , fromItem .getName ());
2030+
2031+ // verify params
2032+ assertNotNull (fromItem .getParameters ());
2033+ List <Expression > expressions = fromItem .getParameters ().getExpressions ();
2034+ assertEquals (2 , expressions .size ());
2035+
2036+ Expression firstParam = expressions .get (0 );
2037+ assertNotNull (firstParam );
2038+ assertTrue (firstParam instanceof LongValue );
2039+ assertEquals (1l , ((LongValue ) firstParam ).getValue ());
2040+
2041+ Expression secondParam = expressions .get (1 );
2042+ assertNotNull (secondParam );
2043+ assertTrue (secondParam instanceof StringValue );
2044+ assertEquals ("val" , ((StringValue ) secondParam ).getValue ());
2045+
2046+ assertNull (fromItem .getAlias ());
2047+ assertStatementCanBeDeparsedAs (select , statement );
2048+ }
2049+
2050+ public void testTableFunctionWithAlias () throws Exception {
2051+ final String statement = "SELECT f2 FROM SOME_FUNCTION() AS z" ;
2052+ Select select = (Select ) parserManager .parse (new StringReader (statement ));
2053+ PlainSelect plainSelect = (PlainSelect ) select .getSelectBody ();
2054+
2055+ assertTrue (plainSelect .getFromItem () instanceof TableFunction );
2056+ TableFunction fromItem = (TableFunction ) plainSelect .getFromItem ();
2057+
2058+ assertEquals ("SOME_FUNCTION" , fromItem .getName ());
2059+ assertNull (fromItem .getParameters ());
2060+ assertNotNull (fromItem .getAlias ());
2061+ assertEquals ("z" , fromItem .getAlias ().getName ());
2062+ assertStatementCanBeDeparsedAs (select , statement );
2063+ }
20092064}
0 commit comments