Your fix sounds about right, good debugging.

When making a pull request the difficult part is writing a test case (pull
requests without a test case get ignored). Have a look at the database test
cases, often they create tables to test against during setup (so you should
be able to setup your two sequences there).

Jody

--
Jody Garnett

On 2 March 2015 at 06:01, Lorenzo Pini <[email protected]>
wrote:

> Hi all,
> I think I found a problem in the way the jdbc-postgis module handles
> sequences.
> I'm refering to the PostGISDialect.java file
>
> My use case is the following:
> - 2 tables with "serial" columns as ID (so 2 sequences)
>  - INSERT on the first table triggers and INSERT on the second one
> - I use FeatureStore.addFeatures() to insert a record in the first table
>
> The issue is that the returned FeatureId does not match with the first
> table ID value, but the second one.
>
> I tracked down the reason of this behaviour to the 
> PostGISDialect.getLastAutoGeneratedValue()
> method: it uses "SELECT lastval()" to get the last generated value of a
> column.
>
> In PostGIS the lastval() function returns the last generated value across
> all the sequences, and in in the case of multiple sequences triggered from
> a single INSERT, it is not guaranteed to be the correct one.
>
> I thing I solved the problem using the already available 
> getSequenceForColumn()
> method to retrieve the specific sequence name for the column and "SELECT
> currval('"+sequenceName+"')" to get the correct value.
>
> Do you have any comment on this?
>
> Please let me know if I can make a pull request with the fix.
>
> Thank you
>
> Regards
> Lorenzo Pini
> Software Engineer
>
> ==
> GeoServer Professional Services from the experts! Visit
> http://goo.gl/NWWaa2 for more information.
> ==
>
> GeoSolutions S.A.S.
> Via Poggio alle Viti 1187
> 55054  Massarosa (LU)
> Italy
> phone: +39 0584 962313
> fax:     +39 0584 1660272
>
> http://www.geo-solutions.it
> http://twitter.com/geosolutions_it
>
> *AVVERTENZE AI SENSI DEL D.Lgs. 196/2003*
>
> Le informazioni contenute in questo messaggio di posta elettronica e/o
> nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il
> loro utilizzo è consentito esclusivamente al destinatario del messaggio,
> per le finalità indicate nel messaggio stesso. Qualora riceviate questo
> messaggio senza esserne il destinatario, Vi preghiamo cortesemente di
> darcene notizia via e-mail e di procedere alla distruzione del messaggio
> stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso,
> divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od
> utilizzarlo per finalità diverse, costituisce comportamento contrario ai
> principi dettati dal D.Lgs. 196/2003.
>
> The information in this message and/or attachments, is intended solely for
> the attention and use of the named addressee(s) and may be confidential or
> proprietary in nature or covered by the provisions of privacy act
> (Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection
> Code).Any use not in accord with its purpose, any disclosure, reproduction,
> copying, distribution, or either dissemination, either whole or partial, is
> strictly forbidden except previous formal approval of the named
> addressee(s). If you are not the intended recipient, please contact
> immediately the sender by telephone, fax or e-mail and delete the
> information in this message that has been received in error. The sender
> does not give any warranty or accept liability as the content, accuracy or
> completeness of sent messages and accepts no responsibility  for changes
> made after they were sent or for other risks which arise as a result of
> e-mail transmission, viruses, etc.
>
>
> ------------------------------------------------------------------------------
> Dive into the World of Parallel Programming The Go Parallel Website,
> sponsored
> by Intel and developed in partnership with Slashdot Media, is your hub for
> all
> things parallel software development, from weekly thought leadership blogs
> to
> news, videos, case studies, tutorials and more. Take a look and join the
> conversation now. http://goparallel.sourceforge.net/
> _______________________________________________
> GeoTools-Devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/geotools-devel
>
>
------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
GeoTools-Devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to