@ -27,6 +27,8 @@ import reactor.core.publisher.Mono;
@@ -27,6 +27,8 @@ import reactor.core.publisher.Mono;
import java.lang.reflect.Method ;
import java.util.Collection ;
import java.util.Collections ;
import java.util.List ;
import java.util.ArrayList ;
import java.util.Date ;
import org.junit.jupiter.api.BeforeEach ;
@ -66,6 +68,7 @@ import org.springframework.r2dbc.core.binding.BindTarget;
@@ -66,6 +68,7 @@ import org.springframework.r2dbc.core.binding.BindTarget;
* @author Mingyuan Wu
* @author Myeonghyeon Lee
* @author Diego Krupitza
* @author Philmon Roberts
* /
@ExtendWith ( MockitoExtension . class )
@MockitoSettings ( strictness = Strictness . LENIENT )
@ -110,8 +113,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -110,8 +113,8 @@ class PartTreeR2dbcQueryUnitTests {
dataAccessStrategy ) ;
PreparedOperation < ? > preparedOperation = createQuery ( queryMethod , r2dbcQuery , "John" ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name = $1" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name = $1" ) ) ;
}
@Test // GH-282
@ -122,8 +125,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -122,8 +125,8 @@ class PartTreeR2dbcQueryUnitTests {
dataAccessStrategy ) ;
PreparedOperation < ? > preparedOperation = createQuery ( queryMethod , r2dbcQuery , new Object [ ] { null } ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name IS NULL" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name IS NULL" ) ) ;
}
@Test // GH-282
@ -147,8 +150,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -147,8 +150,8 @@ class PartTreeR2dbcQueryUnitTests {
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery ,
getAccessor ( queryMethod , new Object [ ] { "Doe" , "John" } ) ) ;
assertThat ( preparedOperation . get ( ) ) . isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE
+ ".last_name = $1 AND (" + TABLE + ".first_name = $2)" ) ;
assertThat ( formatOperation ( preparedOperation ) ) . isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE
+ ".last_name = $1 AND (" + TABLE + ".first_name = $2)" ) ) ;
}
@Test // GH-282
@ -160,8 +163,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -160,8 +163,8 @@ class PartTreeR2dbcQueryUnitTests {
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery ,
getAccessor ( queryMethod , new Object [ ] { "Doe" , "John" } ) ) ;
assertThat ( preparedOperation . get ( ) ) . isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE
+ ".last_name = $1 OR (" + TABLE + ".first_name = $2)" ) ;
assertThat ( formatOperation ( preparedOperation ) ) . isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE
+ ".last_name = $1 OR (" + TABLE + ".first_name = $2)" ) ) ;
}
@Test // GH-282, gh-349
@ -175,8 +178,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -175,8 +178,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { from , to } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".date_of_birth BETWEEN $1 AND $2" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".date_of_birth BETWEEN $1 AND $2" ) ) ;
BindTarget bindTarget = mock ( BindTarget . class ) ;
preparedOperation . bindTo ( bindTarget ) ;
@ -194,8 +197,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -194,8 +197,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { 30 } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age < $1" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age < $1" ) ) ;
}
@Test // GH-282
@ -207,8 +210,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -207,8 +210,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { 30 } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age <= $1" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age <= $1" ) ) ;
}
@Test // GH-282
@ -220,8 +223,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -220,8 +223,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { 30 } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age > $1" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age > $1" ) ) ;
}
@Test // GH-282
@ -233,8 +236,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -233,8 +236,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { 30 } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age >= $1" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age >= $1" ) ) ;
}
@Test // GH-282
@ -246,8 +249,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -246,8 +249,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { new Date ( ) } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".date_of_birth > $1" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".date_of_birth > $1" ) ) ;
}
@Test // GH-282
@ -258,8 +261,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -258,8 +261,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { new Date ( ) } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".date_of_birth < $1" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".date_of_birth < $1" ) ) ;
}
@Test // GH-282
@ -271,8 +274,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -271,8 +274,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ 0 ] ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age IS NULL" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age IS NULL" ) ) ;
}
@Test // GH-282
@ -284,8 +287,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -284,8 +287,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ 0 ] ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age IS NOT NULL" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age IS NOT NULL" ) ) ;
}
@Test // GH-282
@ -297,8 +300,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -297,8 +300,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { "%John%" } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name LIKE $1" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name LIKE $1" ) ) ;
}
@Test // GH-282
@ -310,8 +313,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -310,8 +313,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { "%John%" } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name NOT LIKE $1" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name NOT LIKE $1" ) ) ;
}
@Test // GH-282
@ -323,8 +326,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -323,8 +326,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { "Jo" } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name LIKE $1" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name LIKE $1" ) ) ;
}
@Test // GH-282
@ -350,8 +353,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -350,8 +353,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { "hn" } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name LIKE $1" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name LIKE $1" ) ) ;
}
@Test // GH-282
@ -377,8 +380,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -377,8 +380,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { "oh" } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name LIKE $1" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name LIKE $1" ) ) ;
}
@Test // GH-282
@ -404,8 +407,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -404,8 +407,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { "oh" } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name NOT LIKE $1" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name NOT LIKE $1" ) ) ;
}
@Test // GH-282
@ -431,9 +434,9 @@ class PartTreeR2dbcQueryUnitTests {
@@ -431,9 +434,9 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { "oh" } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo (
"SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age = $1 ORDER BY users.last_name DESC" ) ;
formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age = $1 ORDER BY users.last_name DESC" ) ) ;
}
@Test // GH-282
@ -444,9 +447,9 @@ class PartTreeR2dbcQueryUnitTests {
@@ -444,9 +447,9 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { "oh" } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo (
"SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age = $1 ORDER BY users.last_name ASC" ) ;
formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age = $1 ORDER BY users.last_name ASC" ) ) ;
}
@Test // GH-282
@ -457,8 +460,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -457,8 +460,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { "Doe" } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".last_name != $1" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".last_name != $1" ) ) ;
}
@Test // GH-282
@ -471,8 +474,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -471,8 +474,8 @@ class PartTreeR2dbcQueryUnitTests {
new Object [ ] { Collections . singleton ( 25 ) } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age IN ($1)" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age IN ($1)" ) ) ;
}
@Test // GH-282
@ -484,8 +487,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -484,8 +487,8 @@ class PartTreeR2dbcQueryUnitTests {
new Object [ ] { Collections . singleton ( 25 ) } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age NOT IN ($1)" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".age NOT IN ($1)" ) ) ;
}
@Test // GH-282, gh-698
@ -497,8 +500,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -497,8 +500,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ 0 ] ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".active = $1" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".active = $1" ) ) ;
}
@Test // GH-282, gh-698
@ -510,8 +513,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -510,8 +513,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ 0 ] ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".active = $1" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".active = $1" ) ) ;
}
@Test // GH-282
@ -523,8 +526,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -523,8 +526,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { "John" } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE UPPER(" + TABLE + ".first_name) = UPPER($1)" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE UPPER(" + TABLE + ".first_name) = UPPER($1)" ) ) ;
}
@Test // GH-282
@ -587,8 +590,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -587,8 +590,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { "John" } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name = $1 LIMIT 3" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name = $1 LIMIT 3" ) ) ;
}
@Test // GH-282
@ -600,8 +603,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -600,8 +603,8 @@ class PartTreeR2dbcQueryUnitTests {
RelationalParametersParameterAccessor accessor = getAccessor ( queryMethod , new Object [ ] { "John" } ) ;
PreparedOperation < ? > preparedOperation = createQuery ( r2dbcQuery , accessor ) ;
assertThat ( preparedOperation . get ( ) )
. isEqualTo ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name = $1 LIMIT 1" ) ;
assertThat ( formatOperation ( preparedOperation ) )
. isEqualTo ( formatQuery ( "SELECT " + ALL_FIELDS + " FROM " + TABLE + " WHERE " + TABLE + ".first_name = $1 LIMIT 1" ) ) ;
}
@Test // GH-341
@ -624,8 +627,8 @@ class PartTreeR2dbcQueryUnitTests {
@@ -624,8 +627,8 @@ class PartTreeR2dbcQueryUnitTests {
dataAccessStrategy ) ;
PreparedOperation < ? > preparedOperation = createQuery ( queryMethod , r2dbcQuery , "John" ) ;
assertThat ( preparedOperation . get ( ) ) . isEqualTo ( "SELECT " + DISTINCT + " " + TABLE + ".first_name, " + TABLE
+ ".foo FROM " + TABLE + " WHERE " + TABLE + ".first_name = $1" ) ;
assertThat ( formatOperation ( preparedOperation ) ) . isEqualTo ( formatQuery ( "SELECT " + DISTINCT + " " + TABLE + ".first_name, " + TABLE
+ ".foo FROM " + TABLE + " WHERE " + TABLE + ".first_name = $1" ) ) ;
}
@Test // GH-475
@ -636,9 +639,9 @@ class PartTreeR2dbcQueryUnitTests {
@@ -636,9 +639,9 @@ class PartTreeR2dbcQueryUnitTests {
dataAccessStrategy ) ;
PreparedOperation < ? > preparedOperation = createQuery ( queryMethod , r2dbcQuery ) ;
assertThat ( preparedOperation . get ( ) ) . isEqualTo (
"SELECT users.id, users.first_name, users.last_name, users.date_of_birth, users.age, users.active FROM "
+ TABLE ) ;
assertThat ( formatOperation ( preparedOperation ) ) . isEqualTo (
formatQuery ( "SELECT users.id, users.first_name, users.last_name, users.date_of_birth, users.age, users.active FROM "
+ TABLE ) ) ;
}
@Test // GH-475
@ -649,9 +652,9 @@ class PartTreeR2dbcQueryUnitTests {
@@ -649,9 +652,9 @@ class PartTreeR2dbcQueryUnitTests {
dataAccessStrategy ) ;
PreparedOperation < ? > preparedOperation = createQuery ( queryMethod , r2dbcQuery ) ;
assertThat ( preparedOperation . get ( ) ) . isEqualTo (
"SELECT users.id, users.first_name, users.last_name, users.date_of_birth, users.age, users.active FROM "
+ TABLE ) ;
assertThat ( formatOperation ( preparedOperation ) ) . isEqualTo (
formatQuery ( "SELECT users.id, users.first_name, users.last_name, users.date_of_birth, users.age, users.active FROM "
+ TABLE ) ) ;
}
@Test // GH-363
@ -716,6 +719,59 @@ class PartTreeR2dbcQueryUnitTests {
@@ -716,6 +719,59 @@ class PartTreeR2dbcQueryUnitTests {
return new RelationalParametersParameterAccessor ( queryMethod , values ) ;
}
private static String formatOperation ( PreparedOperation < ? > preparedOperation ) {
return formatQuery ( preparedOperation . get ( ) ) ;
}
private static String formatQuery ( String query ) {
String firstKeyword = "SELECT" ;
String lastKeyword = "FROM" ;
int indexOfFirstKeyWord = query . toUpperCase ( ) . indexOf ( firstKeyword ) ;
int indexOfLastKeyWord = query . toUpperCase ( ) . indexOf ( lastKeyword ) ;
if ( indexOfFirstKeyWord ! = 0 | | indexOfFirstKeyWord > = indexOfLastKeyWord ) {
return query ;
}
String fields = query . substring ( firstKeyword . length ( ) , indexOfLastKeyWord ) ;
String sortedFields = sortFields ( fields ) ;
StringBuilder formattedQuery = new StringBuilder ( ) ;
formattedQuery . append ( firstKeyword ) ;
formattedQuery . append ( " " ) ;
formattedQuery . append ( sortedFields ) ;
formattedQuery . append ( " " ) ;
formattedQuery . append ( query . substring ( indexOfLastKeyWord , query . length ( ) ) ) ;
return formattedQuery . toString ( ) ;
}
private static String sortFields ( String fields ) {
List < String > sortedFieldsList = new ArrayList < > ( ) ;
StringBuilder fieldBuilder = new StringBuilder ( ) ;
StringBuilder sortedFields = new StringBuilder ( ) ;
for ( int i = 0 ; i < fields . length ( ) ; i + + ) {
if ( fields . charAt ( i ) = = ',' ) {
sortedFieldsList . add ( fieldBuilder . toString ( ) . trim ( ) ) ;
fieldBuilder = new StringBuilder ( ) ;
} else {
fieldBuilder . append ( fields . charAt ( i ) ) ;
}
}
sortedFieldsList . add ( fieldBuilder . toString ( ) . trim ( ) ) ;
Collections . sort ( sortedFieldsList ) ;
for ( String sortedField : sortedFieldsList ) {
if ( sortedFieldsList . get ( 0 ) ! = sortedField ) {
sortedFields . append ( ", " ) ;
}
sortedFields . append ( sortedField ) ;
}
return sortedFields . toString ( ) ;
}
@SuppressWarnings ( "ALL" )
interface UserRepository extends Repository < User , Long > {