Commit Graph
347 Commits
Author SHA1 Message Date
Noemi Praml fbb73d465c FIX DB2 migration: reorg table must be called after drop not null 2022-09-02 10:49:25 +02:00
Rob BygraveandGitHub c1320e4184 Merge pull request #2815 from ebean-orm/feature/2814-nestedUseSavepoint
#2814 - Change setNestedUseSavepoint() to use 'ScopeTrans' rather than the underlying Transaction
2022-09-02 08:20:53 +12:00
Rob BygraveandGitHub a7ea2cf3ef Merge pull request #2820 from ebean-orm/feature/2818-fix-concurrentModOfTransactionEvent
#2818 - Fix Concurrent modification of listenerNotify TransactionEvent list
2022-09-02 08:19:03 +12:00
Rob Bygrave bcc21b1c04 #2818 - Fix Concurrent modification of listenerNotify TransactionEvent list
The issue fixed here is that SavepointTransaction was effectively using the
TransactionEvent of the underlying 'parent' transaction. The fix is for
SavepointTransaction to have its own TransactionEvent.
2022-09-01 22:45:17 +12:00
Rob Bygrave 7df168f232 ENH: Add Transaction.rollbackAndContinue()
Typically useful for handling DuplicateKeyException where we expect
DuplicateKeyException to be thrown and catch it with the intention of
continuing processing using the same transaction.

Note that some databases like Oracle do not require this explicit
rollback() and would work without the rollbackAndContinue(). Postgres
in particular requires the rollback() call on the underlying connection
such that we can continue using that transaction/java.sql.Connection.

Note that in the existing test we can see that rollbackAndContinue()
is pretty close to being syntactic sugar. I think adding rollbackAndContinue()
is justified and complements the existing commitAndContinue().
2022-09-01 17:08:11 +12:00
Rob Bygrave c8ffad2831 Fix TestSubQuery for postgres compatible syntax with ANY(?) 2022-09-01 12:25:50 +12:00
Rob Bygrave 29e2b81092 #2813 - Sometimes subquery use wrong alias in SQL
The reason for this is that as part of DefaultOrmQuery.copy() it uses
DefaultExpressionList.copy() and that assumed that expressions were
safe to share which is NOT the case for IN and EXISTS sub-query expressions
so InQueryExpression and ExistsQueryExpression

The effective fix for this is that DefaultExpressionList.copy() changes
to call SpiExpression.copy() and for InQueryExpression and ExistsQueryExpression
to implement that copy() by creating a copy of the sub-query.

A "side-fix" is that in DefaultOrmQuery.createExtraJoinsToSupportManyWhereClause()
it was creating an instance of ManyWhereJoins, then mutating it ... and if we
change that to only doing the assignment at the end (object assignment is atomic)
then racy access reading ManyWhereJoins would always get a fully completed non-mutating
instance of ManyWhereJoins. Noting this because it kind of points to where I think
the race condition is (in createExtraJoinsToSupportManyWhereClause()) but noting that
with the change to DefaultExpressionList.copy() this "side-fix" isn't required per say.
2022-08-31 17:24:55 +12:00
Rob Bygrave 0dda3e0e93 #2814 - Change setNestedUseSavepoint() to use 'ScopeTrans' rather than the underlying Transaction
The reason for this is that ScopedTransaction holds a stack of ScopeTrans and Transaction, but
the actual transaction in this stack is often the same instance / shared when nesting. The issue
is that currently setNestedUseSavepoint() sets this flag on the *_underlying transaction_* and
this instance is the same / shared when 'nesting'.

This change moves the nestedUseSavepoint flag for ScopedTransaction to be on ScopeTrans
(from the underlying transaction).
2022-08-31 11:39:02 +12:00
Rob Bygrave f07c7411fa No effective change - tidy SqlTreeAlias only 2022-08-30 12:37:27 +12:00
Rob Bygrave 7ce85fe5f2 Refactor method names SpiJsonReader and DocStore types 2022-08-27 20:09:27 +12:00
Rob Bygrave e51ac7de36 Refactor tidy error and log messages 2022-08-27 16:50:54 +12:00
Rob Bygrave b7e62df371 Refactor extract ebean-joda-time module - move joda ScalarTypes
Moves the joda-time ScalarTypes into a new ebean-joda-time module. Include
the ebean-joda-time module in the classpath, and the extra types will be
service loaded (by DefaultTypeManager).
2022-08-26 17:32:31 +12:00
Rob Bygrave 4c13a3a779 Refactor move package - server.type.DataBind to server.bind, server.text.json -> server.json
The DataBind classes don't need to be in with server.type anymore.
The server.text.json package can just reduce package nesting.
2022-08-26 14:51:19 +12:00
Rob Bygrave 1aac01ead0 Extract CsvReader - move DefaultCsvCallback and add module-info 2022-08-25 17:49:11 +12:00
Rob Bygrave 216c43eea6 Extract CsvReader into separate ebean-csv-reader module 2022-08-25 17:25:49 +12:00
Rob Bygrave 456086fb3c Refactor DatabasePlatform - rename getters to accessors
Although this is public API these getters are not expected to be used
by application code so, I feel comfortable making this change.
2022-08-25 10:34:39 +12:00
Rob Bygrave 01155c3466 #2798 - SQL Anywhere: invalid escape character on like expression 2022-08-23 18:16:51 +12:00
Rob Bygrave c0a3f7e05d Refactor rename internal methods - io.ebeaninternal.server.query 2022-08-18 11:11:12 +12:00
Rob Bygrave dc730fd97b #2788 - Support mapping @DbArray List<Float> to Postgres float4[] 2022-08-18 08:23:52 +12:00
Rob Bygrave 51d2f52d19 #2782 - Support MariaDB jdbc driver update - Batched JDBC SQLException translation, SqlRow BLOB reading
- Batched JDBC SQLException translation - Need to dig into nested exception to get cause error state
- SqlRow BLOB reading - BLOB can come as LONGVARBINARY (TestRawSqlBuilder)
- Fix test for history using system time (TestHistoryInsert)
- Fix SqlQueryCancelTest
- Fix TestSqlUpdateExceptions
2022-08-17 17:25:28 +12:00
Rob Bygrave 58713c7083 #2770 - Improve test asserts with SqlQuery usingTransaction() 2022-08-09 12:31:36 +12:00
Rob BygraveandGitHub 2df6f2e5fb Merge pull request #2770 from ebean-orm/feature/sqlquery-useTransaction
Add SqlQuery usingTransaction() for consistency and deprecate ExtendedServer API
2022-08-09 11:59:10 +12:00
Rob Bygrave c7bd6c8bde Support a naming convention function that can be applied to metrics names for reporting
For example, can apply a lower case underscore naming convention to the metrics names. This
can be done such that it doesn't have to be applied every time the metrics are collected and
reported.
2022-08-08 21:34:00 +12:00
Rob BygraveandGitHub 797e1f4bd2 Merge pull request #2767 from ebean-orm/feature/2766-json-ref-bean
#2766 Explicitly specify disableLazyLoad on beans created from JSON by default
2022-08-03 20:36:19 +12:00
Rob BygraveandGitHub a14507e563 Merge pull request #2765 from ebean-orm/feature/2762-forUpdate-pagingList-count
#2762 - forUpdate is NOT included in query copy() method
2022-08-03 20:35:45 +12:00
Rob Bygrave 4050d5e900 Add SqlQuery usingTransaction() for consistency and deprecate ExtendedServer API
- The ExtendedServer API is replaced by use of query usingTransaction()
- Add SqlQuery usingTransaction() for consistency with Query and DtoQuery
2022-08-02 15:35:00 +12:00
Rob Bygrave 01d5aa8199 #2760 - Add ServerMetrics.asJson() ... to support conversion of collected metrics to json 2022-08-01 16:54:49 +12:00
Rob Bygrave 7474430a63 #2768 - ENH: Add eqIfPresent() - a helper expression for fluid style when some EQ are optional 2022-08-01 16:36:09 +12:00
Rob Bygrave ed830aeb0c #2766 - Explicitly specify disableLazyLoad on beans created from JSON (default)
- Beans created from JSON default to disableLazyLoad true
- Explicitly use new JsonReadOptions().setEnableLazyLoading(true) when lazy loading is needed
2022-08-01 15:43:08 +12:00
Rob Bygrave 54cbdae22d #2766 - Failing test for reference bean created from JSON allows lazy loading. 2022-08-01 15:38:11 +12:00
Rob Bygrave bb77d6588a #2762 - forUpdate is NOT included in query copy() method
The copy() method is used by findPagedList(), findIds(), findFutureList() etc.
2022-08-01 11:35:58 +12:00
Rob Bygrave 3a84e4183d Fix platform specific asserts with TestQuerySingleAttribute using limit/offset 2022-08-01 09:45:33 +12:00
Rob Bygrave d12dc9bfed Fix platform specific asserts with TestQuerySingleAttribute using limit/offset 2022-08-01 09:37:34 +12:00
Rob Bygrave 5f689dee1b No effective change - tidy test only, TestQuerySingleAttribute 2022-08-01 09:20:38 +12:00
Rob Bygrave 08d3a3b2f5 Fix platform specific assert in test TestQuerySingleAttribute 2022-08-01 09:16:55 +12:00
Rob Bygrave 4ed5f91963 #2756 - Fix for Bug findSingleAttributeList o2m maxrows
Allow maxRows use in this case
2022-07-29 22:37:06 +12:00
Rob Bygrave f36e4543ee #2755 - Effectively fixed by #2753, format only change 2022-07-29 18:08:31 +12:00
Rob Bygrave 37f92bf967 Merge branch 'bug-singleattributelist-o2m-orderby' of github.com:FOCONIS/ebean into FOCONIS-bug-singleattributelist-o2m-orderby 2022-07-29 18:07:22 +12:00
Rob Bygrave eb14531b66 #2754 - Adjust test query for oneToMany_notNull() 2022-07-29 17:29:56 +12:00
Rob Bygrave 6c1a3647f9 Merge branch 'bug-findsingleattributelist-o2m-notnull' of github.com:FOCONIS/ebean into FOCONIS-bug-findsingleattributelist-o2m-notnull 2022-07-29 17:29:10 +12:00
Rob Bygrave fa9e9be003 #2753 - Fix for, Bug findSingleAttributeList o2m distinct 2022-07-29 17:12:51 +12:00
Rob Bygrave 02ead0bcdb Merge branch 'bug-findsingleattributelist-o2m-distinct' of github.com:FOCONIS/ebean into FOCONIS-bug-findsingleattributelist-o2m-distinct 2022-07-29 16:58:04 +12:00
Roland Praml dbcc779731 Fix: toJson must use setIntercept if target bean is passed 2022-07-28 15:07:05 +02:00
Rob Bygrave 31c20ca9a2 Format and imports on test code only 2022-07-27 22:26:26 +12:00
Rob Bygrave 7a6d91c2f4 Merge branch 'update_ignores_soft_delete' of github.com:Ichtil/ebean into Ichtil-update_ignores_soft_delete 2022-07-27 21:22:16 +12:00
Rob Bygrave bda0786924 #2760 - Add MetaInfoManager.metricsAsJson() ... to support conversion of collected metrics to json 2022-07-27 09:31:58 +12:00
Alexander Wagner 7db2210ba4 Bug findsingleattributelist o2m maxrows 2022-07-20 13:47:17 +02:00
Alexander Wagner 9b80dd97c9 Bug findsingleattributelist o2m orderby 2022-07-20 13:38:38 +02:00
Alexander Wagner 23ca0e716c Bug findsingleattributelist o2m notNull 2022-07-20 09:16:10 +02:00
Alexander Wagner eac03a0721 assert 2022-07-20 09:02:06 +02:00