Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import java.lang.reflect.Parameter;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
Expand Down Expand Up @@ -494,7 +495,10 @@ public static String getColumnsStringForSelect(
SpannerPersistentEntity<?> spannerPersistentEntity,
SpannerMappingContext mappingContext,
boolean fetchInterleaved) {
final String sql = String.join(", ", spannerPersistentEntity.columns());
// To assure the columns are deterministic, sort them here.
ArrayList<String> sortedColumns = new ArrayList<>(spannerPersistentEntity.columns());
Collections.sort(sortedColumns);
final String sql = String.join(", ", sortedColumns);
return fetchInterleaved
? sql + getChildrenSubquery(spannerPersistentEntity, mappingContext)
: sql;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -539,7 +539,7 @@ void findKeySetTestEager() {
spyTemplate.read(ParentEntity.class, keys);
Statement statement =
Statement.newBuilder(
"SELECT other, id, custom_col, id_2, ARRAY (SELECT AS STRUCT deleted, id3, id, id_2"
"SELECT custom_col, id, id_2, other, ARRAY (SELECT AS STRUCT deleted, id, id3, id_2"
+ " FROM child_test_table WHERE (child_test_table.id = parent_test_table.id AND"
+ " child_test_table.id_2 = parent_test_table.id_2) AND (deleted = false)) AS"
+ " childEntities FROM parent_test_table WHERE (id = @tag0) OR (id_2 = @tag1)")
Expand All @@ -558,7 +558,7 @@ void readAllTestEager() {
spyTemplate.readAll(ParentEntity.class);
Statement statement =
Statement.newBuilder(
"SELECT other, id, custom_col, id_2, ARRAY (SELECT AS STRUCT deleted, id3, id, id_2"
"SELECT custom_col, id, id_2, other, ARRAY (SELECT AS STRUCT deleted, id, id3, id_2"
+ " FROM child_test_table WHERE (child_test_table.id = parent_test_table.id AND"
+ " child_test_table.id_2 = parent_test_table.id_2) AND (deleted = false)) AS"
+ " childEntities FROM parent_test_table")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ void getChildrenRowsQueryTest(boolean useValueExpressionDelegate) {
this.spannerMappingContext);
assertThat(statement.getSql())
.isEqualTo(
"SELECT deleted, id3, id, id_2 FROM child_test_table WHERE ((id = @tag0 AND id_2 ="
"SELECT deleted, id, id3, id_2 FROM child_test_table WHERE ((id = @tag0 AND id_2 ="
+ " @tag1)) AND (deleted = false)");
assertThat(statement.getParameters()).hasSize(2);
assertThat(statement.getParameters().get("tag0").getString()).isEqualTo("key");
Expand All @@ -218,7 +218,7 @@ void getColumnsStringForSelectTest(boolean useValueExpressionDelegate) {

assertThat(columnsStringForSelect)
.isEqualTo(
"other, deleted, id, custom_col, id_2, ARRAY (SELECT AS STRUCT deleted, id3, id, id_2"
"custom_col, deleted, id, id_2, other, ARRAY (SELECT AS STRUCT deleted, id, id3, id_2"
+ " FROM child_test_table WHERE (child_test_table.id = custom_test_table.id AND"
+ " child_test_table.id_2 = custom_test_table.id_2) AND (deleted = false)) AS"
+ " childEntities");
Expand All @@ -245,7 +245,7 @@ void getColumnsStringForSelectMultipleTest(boolean useValueExpressionDelegate) {

assertThat(childrenRowsQuery.getSql())
.isEqualTo(
"SELECT other, deleted, id, custom_col, id_2, ARRAY (SELECT AS STRUCT deleted, id3, id,"
"SELECT custom_col, deleted, id, id_2, other, ARRAY (SELECT AS STRUCT deleted, id, id3,"
+ " id_2 FROM child_test_table WHERE (child_test_table.id = custom_test_table.id"
+ " AND child_test_table.id_2 = custom_test_table.id_2) AND (deleted = false)) AS"
+ " childEntities FROM custom_test_table WHERE ((id = @tag0 AND id_2 = @tag1) OR"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ void compoundNameConventionTest() throws NoSuchMethodException {
Statement statement = invocation.getArgument(1);

String expectedQuery =
"SELECT DISTINCT shares, trader_id, ticker, price, action, id, value FROM trades"
"SELECT DISTINCT action, id, price, shares, ticker, trader_id, value FROM trades"
+ " WHERE ( LOWER(action)=LOWER(@tag0) AND ticker=@tag1 ) OR ("
+ " trader_id=@tag2 AND price<@tag3 ) OR ( price>=@tag4 AND id IS NOT NULL AND"
+ " trader_id=NULL AND trader_id LIKE @tag7 AND price=TRUE AND price=FALSE"
Expand Down Expand Up @@ -230,7 +230,7 @@ void compoundNameConventionCountTest() throws NoSuchMethodException {
Statement statement = invocation.getArgument(1);

String expectedSql =
"SELECT EXISTS(SELECT DISTINCT shares, trader_id, ticker, price, action, id,"
"SELECT EXISTS(SELECT DISTINCT action, id, price, shares, ticker, trader_id,"
+ " value FROM trades WHERE ( LOWER(action)=LOWER(@tag0) AND ticker=@tag1 )"
+ " OR ( trader_id=@tag2 AND price<@tag3 ) OR ( price>=@tag4 AND id IS NOT NULL AND"
+ " trader_id=NULL AND trader_id LIKE @tag7 AND price=TRUE AND price=FALSE"
Expand Down Expand Up @@ -267,7 +267,7 @@ void pageableTest() throws NoSuchMethodException {
Object[] params = new Object[] {8.88, PageRequest.of(1, 10, Sort.by("traderId"))};
Method method = QueryHolder.class.getMethod("repositoryMethod5", Double.class, Pageable.class);
String expectedSql =
"SELECT shares, trader_id, ticker, price, action, id, value "
"SELECT action, id, price, shares, ticker, trader_id, value "
+ "FROM trades WHERE ( price<@tag0 ) "
+ "ORDER BY trader_id ASC LIMIT 10 OFFSET 10";

Expand All @@ -282,7 +282,7 @@ void sortTest() throws NoSuchMethodException {
};
Method method = QueryHolder.class.getMethod("repositoryMethod6", Double.class, Sort.class);
String expectedSql =
"SELECT shares, trader_id, ticker, price, action, id, value "
"SELECT action, id, price, shares, ticker, trader_id, value "
+ "FROM trades WHERE ( price<@tag0 ) "
+ "ORDER BY trader_id DESC , price ASC , action DESC";

Expand Down Expand Up @@ -329,7 +329,7 @@ void pageableNotLastParameterTest() throws NoSuchMethodException {

when(this.queryMethod.getQueryMethod()).thenReturn(method);
String expectedSql =
"SELECT shares, trader_id, ticker, price, action, id, value "
"SELECT action, id, price, shares, ticker, trader_id, value "
+ "FROM trades "
+ "WHERE ( action=@tag0 AND ticker=@tag1 ) "
+ "ORDER BY trader_id ASC LIMIT 10 OFFSET 10";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,8 @@ void noPageableParamQueryTest(boolean useValueExpressionDelegate) throws NoSuchM
+ ":com.google.cloud.spring.data.spanner.repository.query.SqlSpannerQueryTests$Trade:";
// @formatter:off
String entityResolvedSql =
"SELECT *, ARRAY (SELECT AS STRUCT disabled, id, childId, value, ARRAY (SELECT AS STRUCT"
+ " canceled, documentId, id, childId, content FROM documents WHERE (documents.id ="
"SELECT *, ARRAY (SELECT AS STRUCT childId, disabled, id, value, ARRAY (SELECT AS STRUCT"
+ " canceled, childId, content, documentId, id FROM documents WHERE (documents.id ="
+ " children.id AND documents.childId = children.childId) AND (canceled = false)) AS"
+ " documents FROM children WHERE (children.id = trades.id) AND (disabled = false)) AS"
+ " children FROM (SELECT DISTINCT * FROM trades) trades";
Expand Down Expand Up @@ -229,7 +229,7 @@ void pageableParamQueryTest(boolean useValueExpressionDelegate) throws NoSuchMet
+ " WHERE id = @id AND trader_id = @trader_id";
// @formatter:off
String entityResolvedSql =
"SELECT *, ARRAY (SELECT AS STRUCT canceled, documentId, id, childId, content FROM"
"SELECT *, ARRAY (SELECT AS STRUCT canceled, childId, content, documentId, id FROM"
+ " documents WHERE (documents.id = children.id AND documents.childId ="
+ " children.childId) AND (canceled = false)) AS documents FROM (SELECT * FROM children"
+ " WHERE id = @id AND trader_id = @trader_id) children WHERE disabled = false ORDER BY"
Expand Down Expand Up @@ -294,7 +294,7 @@ void sortParamQueryTest(boolean useValueExpressionDelegate) throws NoSuchMethodE
+ " WHERE id = @id AND trader_id = @trader_id";
// @formatter:off
String entityResolvedSql =
"SELECT *, ARRAY (SELECT AS STRUCT canceled, documentId, id, childId, content FROM"
"SELECT *, ARRAY (SELECT AS STRUCT canceled, childId, content, documentId, id FROM"
+ " documents WHERE (documents.id = children.id AND documents.childId ="
+ " children.childId) AND (canceled = false)) AS documents FROM (SELECT * FROM children"
+ " WHERE id = @id AND trader_id = @trader_id) children WHERE disabled = false ORDER BY"
Expand Down Expand Up @@ -358,7 +358,7 @@ void sortAndPageableQueryTest(boolean useValueExpressionDelegate) throws NoSuchM
+ " WHERE id = @id AND trader_id = @trader_id";
// @formatter:off
String entityResolvedSql =
"SELECT *, ARRAY (SELECT AS STRUCT canceled, documentId, id, childId, content FROM"
"SELECT *, ARRAY (SELECT AS STRUCT canceled, childId, content, documentId, id FROM"
+ " documents WHERE (documents.id = children.id AND documents.childId ="
+ " children.childId) AND (canceled = false)) AS documents FROM (SELECT * FROM children"
+ " WHERE id = @id AND trader_id = @trader_id) children WHERE disabled = false ORDER BY"
Expand Down Expand Up @@ -431,8 +431,8 @@ void compoundNameConventionTest(boolean useValueExpressionDelegate) throws NoSuc

// @formatter:off
String entityResolvedSql =
"SELECT *, ARRAY (SELECT AS STRUCT disabled, id, childId, value, ARRAY (SELECT AS STRUCT"
+ " canceled, documentId, id, childId, content FROM documents WHERE (documents.id ="
"SELECT *, ARRAY (SELECT AS STRUCT childId, disabled, id, value, ARRAY (SELECT AS STRUCT"
+ " canceled, childId, content, documentId, id FROM documents WHERE (documents.id ="
+ " children.id AND documents.childId = children.childId) AND (canceled = false)) AS"
+ " documents FROM children WHERE (children.id = trades.id) AND (disabled = false)) AS"
+ " children FROM (SELECT DISTINCT * FROM trades@{index=fakeindex} WHERE"
Expand Down