Home - Waterfall Grid T-Grid Console Builders Recent Builds Buildslaves Changesources - JSON API - About

Change #5067

Category None
Changed by Galen Charlton <gmcohnoyoudont@equinoxinitiative.org>
Changed at Tue 30 Jan 2018 15:43:53
Repository git://git.evergreen-ils.org/Evergreen.git
Project Evergreen
Branch master
Revision 8410fdace48ceb10f0cb9e84294d15a8f5adff9a


LP#1745486: avoid retrieving user by id::numeric during auth init
During open-ils.auth.authenticate.init, if looking up the user by barcode,
the actor.usr row is subsequently fetched by ID. However, the ID was
turned into a float, meaning that the query as sent to the database
was equivalent to

  SELECT * FROM actor.usr WHERE id = 123.0000;

While PostgreSQL will accept this, it ends up doing a sequential
scan of the actor.usr table rather than an index lookup, making the
retrieval up to two orders of magnitude slower than it needs to be
and adding a couple percent unecessary I/O load on large, heavily
used database. This patch fixes that.

To test
[1] Turn on PostgreSQL statment logging and log in as a user
    by barcode. Note that there's a retrieval of actor.usr by
    a float form of the ID.
[2] Apply the patch and repeat step 1. This time, the query
    retrieves the row by the integer form of the ID.

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Bill Erickson <berickxx@gmail.com>

Changed files