Vivek Khera wrote:
On Oct 13, 2006, at 6:48 PM, Joby Walker wrote:
OIDs were used to get the id of the last insert. The was abandoned
because of pgsql 8.1, but it was a horrible way to get the last id
anyway. Current versions of SB insert the row and then get the
current value of the sequence associated with that table. This is
much faster and *should* be safe.
Does it actually query the sequence or does it just pull the last insert
id from the connection's return status? if the former, then it is not
multi-thread safe, if the latter then it is faster than your method of
pulling a sequence then doing insert (one trip to DB vs. two).
As was pointed out to me the current value function returns the last
value used for that connection, so from the pgsql side it is multithread
safe -- but I don't know how using a connection pooling system like
SQLRelay impacts things (because we might use a sqlrelay in the future
is one of the reasons I modified our instance of SB).
Pgsql returns the number of rows inserted or if the count is one and the
table has oids it returns the oid of the row -- it doesn't return the PK
of the table. This is why SB previously made the OID query.
http://www.postgresql.org/docs/8.1/interactive/sql-insert.html
jbw
_______________________________________________
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users
Community help: http://wiki.bestpractical.com
Commercial support: [EMAIL PROTECTED]
Discover RT's hidden secrets with RT Essentials from O'Reilly Media.
Buy a copy at http://rtbook.bestpractical.com