@@ -1057,9 +1057,51 @@ public void testRegexpLike2() throws JSQLParserException {
10571057 assertSqlCanBeParsedAndDeparsed (stmt );
10581058 }
10591059
1060- public void testBooleanFunction1 () throws JSQLParserException {
1060+ public void testBooleanFunction1 () throws JSQLParserException {
10611061 String stmt = "SELECT * FROM mytable WHERE test_func(col1)" ;
10621062 assertSqlCanBeParsedAndDeparsed (stmt );
10631063 }
1064+
1065+ public void testNamedParameter () throws JSQLParserException {
1066+ String stmt = "SELECT * FROM mytable WHERE b = :param" ;
1067+ assertSqlCanBeParsedAndDeparsed (stmt );
10641068
1069+ Statement st = CCJSqlParserUtil .parse (stmt );
1070+ Select select = (Select ) st ;
1071+ PlainSelect plainSelect = (PlainSelect ) select .getSelectBody ();
1072+ Expression exp = ((BinaryExpression ) plainSelect .getWhere ()).getRightExpression ();
1073+ assertTrue (exp instanceof JdbcNamedParameter );
1074+ JdbcNamedParameter namedParameter = (JdbcNamedParameter ) exp ;
1075+ assertEquals ("param" , namedParameter .getName ());
1076+
1077+ }
1078+ public void testNamedParameter2 () throws JSQLParserException {
1079+ String stmt = "SELECT * FROM mytable WHERE a = :param OR a = :param2 AND b = :param3" ;
1080+ assertSqlCanBeParsedAndDeparsed (stmt );
1081+
1082+ Statement st = CCJSqlParserUtil .parse (stmt );
1083+ Select select = (Select ) st ;
1084+ PlainSelect plainSelect = (PlainSelect ) select .getSelectBody ();
1085+
1086+ Expression exp_l = ((BinaryExpression ) plainSelect .getWhere ()).getLeftExpression ();
1087+ Expression exp_r = ((BinaryExpression ) plainSelect .getWhere ()).getRightExpression ();
1088+ Expression exp_rl = ((BinaryExpression ) exp_r ).getLeftExpression ();
1089+ Expression exp_rr = ((BinaryExpression ) exp_r ).getRightExpression ();
1090+
1091+ Expression exp_param1 = ((BinaryExpression ) exp_l ).getRightExpression ();
1092+ Expression exp_param2 = ((BinaryExpression ) exp_rl ).getRightExpression ();
1093+ Expression exp_param3 = ((BinaryExpression ) exp_rr ).getRightExpression ();
1094+
1095+ assertTrue (exp_param1 instanceof JdbcNamedParameter );
1096+ assertTrue (exp_param2 instanceof JdbcNamedParameter );
1097+ assertTrue (exp_param3 instanceof JdbcNamedParameter );
1098+
1099+ JdbcNamedParameter namedParameter1 = (JdbcNamedParameter ) exp_param1 ;
1100+ JdbcNamedParameter namedParameter2 = (JdbcNamedParameter ) exp_param2 ;
1101+ JdbcNamedParameter namedParameter3 = (JdbcNamedParameter ) exp_param3 ;
1102+
1103+ assertEquals ("param" , namedParameter1 .getName ());
1104+ assertEquals ("param2" , namedParameter2 .getName ());
1105+ assertEquals ("param3" , namedParameter3 .getName ());
1106+ }
10651107}
0 commit comments