I've checked case of oracle auto-incremented columns in cayenne. To start use auto-incremented columns first need to set setSupportGeneratedKeys(true) in OracleAdapter, second have tables with auto-incremented columns in database. And it started to work.
On Tue, Jun 4, 2019 at 5:45 PM John Huss <[email protected]> wrote: > Yep, Postgres. > > On Tue, Jun 4, 2019 at 9:43 AM Andrus Adamchik <[email protected]> > wrote: > > > Hmm.. In theory auto-pk should be compatible with batching. Is this on > > PostgreSQL? > > > > Andrus > > > > > On Jun 4, 2019, at 5:39 PM, John Huss <[email protected]> wrote: > > > > > > Just to follow up on this, after some experimentation it looks like > using > > > PKs generated by the database can be much slower when doing bulk > inserts, > > > because Cayenne doesn't (can't?) do a batch bind to execute the inserts > > as > > > a batch and instead has to execute them one by one. With a large batch > of > > > row for the same entity this can make a huge difference. So moving to > > > generated PKs might not be the best idea for many use cases. > > > > > > On Wed, May 29, 2019 at 4:45 PM Hugi Thordarson <[email protected]> > > wrote: > > > > > >> /me instantly starts modifying DBs. > > >> > > >> Thanks for pointing this out John! > > >> > > >> - hugi > > >> > > >> > > >>> On 29 May 2019, at 15:23, John Huss <[email protected]> wrote: > > >>> > > >>> Doh! Turns out Cayenne already supports this for Postgres. Who knew! > > :-P > > >>> > > >>> 2621 [main] INFO org.apache.cayenne.log.JdbcEventLogger - INSERT > INTO > > >> test > > >>> (payload) VALUES (?) > > >>> > > >>> 2621 [main] INFO org.apache.cayenne.log.JdbcEventLogger - [bind: > > >>> 1->payload:'test'] > > >>> > > >>> 2632 [main] INFO org.apache.cayenne.log.JdbcEventLogger - Generated > > PK: > > >>> test.id = 1 > > >>> > > >>> On Tue, May 28, 2019 at 12:30 PM Andrus Adamchik < > > [email protected] > > >>> > > >>> wrote: > > >>> > > >>>> Thanks for the pointer. If PG passes generated PK back through the > > JDBC > > >>>> driver and we can read it after an INSERT, we most definitely > should. > > >>>> Creating extraneous objects in DB for the sake of PK generation > feels > > >> old. > > >>>> > > >>>> Andrus > > >>>> > > >>>>> On May 28, 2019, at 6:47 PM, John Huss <[email protected]> > wrote: > > >>>>> > > >>>>> Postgresql also recently improved their support in this area (in > > >> version > > >>>>> 10). It's more like syntactic sugar on top of things you could > > already > > >>>> do, > > >>>>> but I'd be interested to know if it can be used by Cayenne in the > > same > > >>>> way > > >>>>> as the MySQL auto-increment columns. > > >>>>> > > >>>>> The DDL syntax is supposedly an SQL standard: > > >>>>> > > >>>>> CREATE TABLE test_new ( > > >>>>> id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, > > >>>>> payload text > > >>>>> ); > > >>>>> > > >>>>> > > >>>>> On Mon, May 27, 2019 at 1:49 AM Andrus Adamchik < > > >> [email protected]> > > >>>>> wrote: > > >>>>> > > >>>>>> Looks like Oracle started supporting auto-increment columns since > > 12c: > > >>>>>> > > >>>>>> > > >>>>>> > > >>>> > > >> > > > https://www.arungudelli.com/tutorial/oracle/auto-increment-identity-column-in-oracle-table-primary-key/ > > >>>>>> > > >>>>>> We should try using that in the adapter. > > >>>>>> > > >>>>>> Andrus > > >>>> > > >>>> > > >> > > >> > > > > >
