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

Reply via email to