Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HHH-18073 BasicCollectionJavaType::wrap should retain order of Set to keep consistent with deepCopy #8313

Merged
merged 1 commit into from May 21, 2024

Conversation

quaff
Copy link
Contributor

@quaff quaff commented May 6, 2024

@quaff
Copy link
Contributor Author

quaff commented May 6, 2024

@beikov Please review.

@quaff
Copy link
Contributor Author

quaff commented May 6, 2024

There is a failed test org.hibernate.orm.test.limit.Oracle12LimitTest, but I don't think it's caused by this PR.

org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [select distinct p1_0.id,p1_0.name from Person p1_0 left join Person_Travel t1_0 on p1_0.id=t1_0.Person_id left join Travel t1_1 on t1_1.id=t1_0.travels_id where p1_0.name=? order by upper(t1_1.destination) desc offset ? rows fetch first ? rows only] [ORA-01791: not a SELECTed expression

https://docs.oracle.com/error-help/db/ora-01791/] [n/a]
	at app//org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:66)
	at app//org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:58)
	at app//org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108)
	at app//org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94)
	at app//org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:264)
	at app//org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:167)
	at app//org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.advanceNext(JdbcValuesResultSetImpl.java:265)
	at app//org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.processNext(JdbcValuesResultSetImpl.java:145)
	at app//org.hibernate.sql.results.jdbc.internal.AbstractJdbcValues.next(AbstractJdbcValues.java:19)
	at app//org.hibernate.sql.results.internal.RowProcessingStateStandardImpl.next(RowProcessingStateStandardImpl.java:67)
	at app//org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:182)
	at app//org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:33)
	at app//org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:211)
	at app//org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:83)
	at app//org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:76)
	at app//org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:65)
	at app//org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.lambda$new$2(ConcreteSqmSelectQueryPlan.java:138)
	at app//org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:381)
	at app//org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:301)
	at app//org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:526)
	at app//org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:423)
	at app//org.hibernate.query.Query.getResultList(Query.java:120)
	at app//org.hibernate.orm.test.limit.Oracle12LimitTest.lambda$testLimit$0(Oracle12LimitTest.java:53)
	at app//org.hibernate.testing.orm.transaction.TransactionUtil.wrapInTransaction(TransactionUtil.java:49)
	at app//org.hibernate.testing.orm.transaction.TransactionUtil.inTransaction(TransactionUtil.java:24)
	at app//org.hibernate.testing.orm.junit.SessionFactoryExtension$SessionFactoryScopeImpl.inTransaction(SessionFactoryExtension.java:376)
	at app//org.hibernate.testing.orm.junit.SessionFactoryExtension$SessionFactoryScopeImpl.inTransaction(SessionFactoryExtension.java:353)
	at app//org.hibernate.orm.test.limit.Oracle12LimitTest.testLimit(Oracle12LimitTest.java:38)
	at java.base@11.0.22/java.lang.reflect.Method.invoke(Method.java:566)
	at java.base@11.0.22/java.util.ArrayList.forEach(ArrayList.java:1541)
	at java.base@11.0.22/java.util.ArrayList.forEach(ArrayList.java:1541)
Caused by: java.sql.SQLSyntaxErrorException: ORA-01791: not a SELECTed expression

https://docs.oracle.com/error-help/db/ora-01791/
	at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:702)
	at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:608)
	at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1330)
	at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:1102)
	at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:456)
	at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:498)
	at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:272)
	at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:1198)
	at oracle.jdbc.driver.OracleStatement.prepareDefineBufferAndExecute(OracleStatement.java:1390)
	at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1269)
	at oracle.jdbc.driver.OracleStatement.executeSQLSelect(OracleStatement.java:1794)
	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1592)
	at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3754)
	at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3940)
	at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1103)
	at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:246)
	... 26 more
Caused by: Error : 1791, Position : 189, SQL = select distinct p1_0.id,p1_0.name from Person p1_0 left join Person_Travel t1_0 on p1_0.id=t1_0.Person_id left join Travel t1_1 on t1_1.id=t1_0.travels_id where p1_0.name=:1 order by upper(t1_1.destination) desc offset :2 rows fetch first :3 rows only, Original SQL = select distinct p1_0.id,p1_0.name from Person p1_0 left join Person_Travel t1_0 on p1_0.id=t1_0.Person_id left join Travel t1_1 on t1_1.id=t1_0.travels_id where p1_0.name=? order by upper(t1_1.destination) desc offset ? rows fetch first ? rows only, Error Message = ORA-01791: not a SELECTed expression

	at app//oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:710)
	... 41 more

@quaff
Copy link
Contributor Author

quaff commented May 21, 2024

Could someone review this?

@gavinking gavinking requested a review from beikov May 21, 2024 09:34
@beikov beikov merged commit 0d35d9d into hibernate:main May 21, 2024
17 of 21 checks passed
@beikov
Copy link
Contributor

beikov commented May 21, 2024

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants