@ -251,6 +251,7 @@ class NamedParameterUtilsTests {
@@ -251,6 +251,7 @@ class NamedParameterUtilsTests {
"SELECT /*:doo*/':foo', :xxx FROM DUAL" ,
"SELECT ':foo'/*:doo*/, :xxx FROM DUAL" ,
"SELECT \":foo\"\":doo\", :xxx FROM DUAL" ,
"SELECT `:foo``:doo`, :xxx FROM DUAL"
} )
void parseSqlStatementWithParametersInsideQuotesAndComments ( String sql ) {
ParsedSql parsedSql = NamedParameterUtils . parseSqlStatement ( sql ) ;
@ -289,6 +290,14 @@ class NamedParameterUtilsTests {
@@ -289,6 +290,14 @@ class NamedParameterUtilsTests {
assertThat ( psql . getParameterNames ( ) ) . containsExactly ( "headers[id]" ) ;
}
@Test // gh-31944 / gh-32285
void parseSqlStatementWithBackticks ( ) {
String sql = "select * from `tb&user` where id = :id" ;
ParsedSql parsedSql = NamedParameterUtils . parseSqlStatement ( sql ) ;
assertThat ( parsedSql . getParameterNames ( ) ) . containsExactly ( "id" ) ;
assertThat ( expand ( parsedSql ) ) . isEqualTo ( "select * from `tb&user` where id = $1" ) ;
}
@Test
void shouldAllowParsingMultipleUseOfParameter ( ) {
String sql = "SELECT * FROM person where name = :id or lastname = :id" ;