Commit Graph

6211 Commits

Author SHA1 Message Date
Gavin King 852786d984 Ingres and RDMS don't actually support FOR UPDATE
At least not in SELECT statements. They do support it
in DECLARE CURSOR, which is perhaps where the confusion
arose?

Related to HHH-14210
2020-09-14 07:27:07 +01:00
Gavin King 12a31ef438 DB2 support 'skip locked data' on DB2
For HHH-14210
2020-09-14 07:27:07 +01:00
Gavin King ae07a8b791 clean up @SuppressWarnings annotation on Dialect 2020-09-14 07:27:07 +01:00
Nathan Xu b155b12f43 port HHH-3328 2020-09-08 09:00:51 +01:00
Gavin King 4eb3913443 clean code for lock SQL in Dialects
This code was very convoluted and difficult to follow,
and, I believe, buggy on both MariaDB and Oracle. There
were also inconsistencies surrounding database versions.

Also it did not support the 'WAIT n' syntax on MariaDB.
2020-09-08 08:37:57 +01:00
Andrea Boriero 8b938610cf Merge remote-tracking branch 'upstream/master' into wip/6.0_merge 2020-09-08 08:19:13 +01:00
Andrea Boriero 7f6ead80cc HHH-14197 Fix MariaDB failing test 2020-09-07 14:18:42 +01:00
Andrea Boriero 6cc63d9289 HHH-14113 Fix oracle test failure 2020-09-07 09:30:53 +01:00
Andrea Boriero 8fe4b40ef8 Fix joined subclass wrong table for id and version columns 2020-09-07 09:18:15 +01:00
Nathan Xu 37a60ea8bb HHH-14197 Criteria API doubly-nested subquery generates invalid SQL - missing subquery root 2020-09-07 09:22:18 +02:00
Jan-Willem Gmelig Meyling 17d365ecf8 HHH-14198 - Expose CompositeUserTypes through JPA Metamodel
Composite User Types work like regular Composite Types (like Embeddable) in HQL. However, because they cannot be represented in the JPA metamodel, libraries like [GraphQL for JPA](https://github.com/jcrygier/graphql-jpa) or [Blaze-Persistence](https://persistence.blazebit.com/) cannot fully utilize them. In order to make the composite property names available to these libraries, it would be nice to optionally expose these attributes as embedded attributes. This pull request aims to make that change and makes it configurable through a custom setting.

Composite User Types are a common solution for mapping composite interfaces. A common example is for example `Money` from the Java Money API (JSR-354), for which composite user types are implemented in [Jadira](http://jadira.sourceforge.net/usertype-userguide.html).

I know Composite User Types are currently not consiered in Hibernate 6.x. See also [this](https://hibernate.zulipchat.com/#narrow/stream/132094-hibernate-orm-dev/topic/CompositeUserType) Zulip thread. I am not sure if Hibernate 6.x will even have multi column types, which I presume would be a requirement to even introduce Composite User types back at some point. Usually Embeddables are a much easier, suitable mechanism for composite user types. But Embeddables are not always a viable alternative, because Embeddables require the type to be subclassed (as an interface cannot be mapped, and the type may not solely comprise fields that can be mapped to a simple basic type). To deal with this exact problem, `MonetaryAmounts` are still mapped as composite user type. There also have been suggestions to the JPA Spec to consider `AttributeConverters` for Embeddables for pracitcally the same purpose (which I think is going to be a mess of an implementation). See: https://github.com/eclipse-ee4j/jpa-api/issues/105

Anyways, regardless of whether this gets integrated in 5.x, I don't expect it to be integrated in 6.x unless we also reintroduce Composite User Types. I am willing to contribute Composite User Types for 6.x if people see benefit in it and think it can be done in the first place.
2020-09-04 14:53:11 +02:00
Nathan Xu 6365204c48 HHH-13058 fix issue left join root cannot be replaced by correlated parent in subquery 2020-09-03 08:50:19 +02:00
Moritz Becker afd6818e55 HHH-13201 - mark local origin variable as final 2020-09-03 08:42:15 +02:00
Moritz Becker d97db034b4 HHH-13201 - reformat test 2020-09-03 08:42:15 +02:00
Moritz Becker 19af434b21 HHH-13201 - do not set empty text on collection join parent without queryable collection 2020-09-03 08:42:15 +02:00
Nathan Xu 162bc7d9dd HHH-14113 Entity Graph attribute resolution not based on selected entity 2020-09-01 20:20:54 +02:00
Andrea Boriero e8b6bbbef4 HHH-14178 Fix Hana test failures 2020-09-01 14:50:24 +01:00
Andrea Boriero efa7e66c73 HHH-14178 Fix oracle test failures 2020-09-01 11:27:02 +01:00
Andrea Boriero f1ac2f8c09 Merge branch 'wip/6.0' of https://github.com/hibernate/hibernate-orm into wip/6.0 2020-09-01 09:45:08 +01:00
Andrea Boriero b1ba79105d Merge remote-tracking branch 'upstream/master' into wip/6.0 2020-09-01 09:44:22 +01:00
Steve Ebersole ca1692b86f tests for JPQL
tests for JPA operations
2020-08-31 18:53:22 -05:00
Nathan Xu 90be61210c HHH-11877 wrap CompoundPredicate's expression list 2020-08-31 16:17:32 +02:00
Nathan Xu e1ff70519a HHH-14178 Fix the issue collections visiting could be skipped (e.g., versioned entity) in AbstractSaveEventListener 2020-08-31 14:43:09 +02:00
Nathan Xu 41161f9fa9 HHH-13908 fix the issue MySQL's 'time' function issue in Criteria 2020-08-31 09:44:17 +02:00
Andrea Boriero 076a0aa25a fix compilation errors after merging master 2020-08-28 13:11:22 +01:00
Andrea Boriero 638a3e234b Merge remote-tracking branch 'upstream/master' into wip/6.0 2020-08-28 12:42:29 +01:00
Steve Ebersole 3d46fabeb5 HHH-14191 - ANY mapping support
- `@ManyToAny`
- embeddable sub-attribute
2020-08-27 17:37:28 -05:00
Steve Ebersole 97a88ebbcf HHH-14191 - ANY mapping support 2020-08-27 12:32:10 -05:00
Gavin King 5b9ec29ecb HHH-14153 refactoring after HHH-14153
- avoid use package-scoped instance felds
- remove copy/pasted code

Note: I don't hate package-scoped final fields, but I
know other folks tend to. So let's go with template
methods instead.
2020-08-27 09:53:22 +01:00
Gavin King 5daf440a6c HHH-14153 Make buildAppropriateStatementExecutor() protected
Hibernate Reactive might ultimately need to override
this method, though it doesn't right now.

Relates to HHH-14153.
2020-08-27 09:53:18 +01:00
Gavin King 5173071322 HHH-14153 add test
By NathanQingyangXu

See https://github.com/hibernate/hibernate-orm/pull/3508
2020-08-27 09:53:18 +01:00
Gavin King 423697026d HHH-14153 further optimization for single-table HQL update
This extends the optimization for single-table HQL bulk
updates to the case where the where clause touches multiple
tables and we can use a subselect to collect the ids that
we need to update.
2020-08-27 09:53:18 +01:00
Gavin King 264e71a916 HHH-14153 clean up BasicExecutor and friends
introduces InsertExecutor and UpdateExecutor since we're
going to be introducing specific optimizations relating
to single-table updates

relates to HHH-14153
2020-08-27 09:52:40 +01:00
Gavin King d1119d320a HHH-14153 optimize away temp table for single-table HQL update
When a HQL bulk update query only touches a single table,
use BasicExecutor instead of MultiTableUpdateExecutor.

This is an alternate implementation to the one proposed by
@NathanQingyangXu in #3508 and loosely based on that work.
2020-08-27 00:12:07 +02:00
Sanne Grinovero 59d40c3bf5 HHH-14193 MultipleLinesSqlCommandExtractor should tolerate empty input scripts 2020-08-26 22:29:07 +01:00
Steve Ebersole 995f1bd017 HHH-14186 - @ColumnTransformer support 2020-08-26 10:50:09 -05:00
Steve Ebersole b9fcc63d84 HHH-14152 sql-script.g fix for antlr non deterministic warning
- Added "system"-style SqlScriptLogging
- Added rule trace logging through SqlScriptLogging
2020-08-26 08:56:19 -05:00
Andrea Boriero fe4a94d90c HHH-14152 sql-script.g fix for antlr non deterministic warning 2020-08-26 08:56:19 -05:00
Gavin King eb246ba0b0 HHH-14192 H2 compatibility: explicitly specify precision/scale for @Column in test 2020-08-26 14:21:34 +01:00
Sanne Grinovero 28787bc013 HHH-14190 Method StringHelper#moveAndToBeginning could benefit from using the improved helper too 2020-08-26 12:46:12 +01:00
Sanne Grinovero 03a1bb5ac8 HHH-14190 Improve efficiency of StringHelper#isBlank 2020-08-26 12:44:05 +01:00
Gavin King 9c6805fdd3 HHH-14190 Rename isEmptyOrWhitespace() to isBlank()
and use it in more places
2020-08-26 12:44:01 +01:00
Andrea Boriero beabfecb3e HHH-14187 Lazy loading fails if an entity appears twice in the object graph when enhancement as proxy is enabled 2020-08-26 12:24:04 +02:00
Andrea Boriero dbca6a2291 HHH-14187 Add test for issue 2020-08-26 12:24:04 +02:00
Steve Ebersole 57a3b0b456 design doc work 2020-08-25 20:21:09 -05:00
Andrea Boriero f5ba3c22a0 Merge remote-tracking branch 'upstream/master' into wip/6.0 2020-08-25 09:13:28 +01:00
Andrea Boriero 2d9fcf6db5 Merge branch 'wip/6.0' into wip/6.0_merge_51 2020-08-25 08:39:45 +01:00
Andrea Boriero 062a462b0c Merge remote-tracking branch 'upstream/master' into wip/6.0_merge_51 2020-08-25 08:38:06 +01:00
Gavin King 6fe9d347c5 fix an obvious bug in LocalTimeJavaDescriptor 2020-08-25 07:33:58 +01:00
Gavin King 9ded66b90f HHH-14181 Fix bug where HQL update/delete query resulted in same table being updated twice
for HQL bulk update/delete against union-subclass mapping

also clean up iterator usage in that section of code
2020-08-24 21:03:36 +01:00