Openbravo Issue Tracking System - Retail Modules
View Issue Details
0033616Retail ModulesWeb POSpublic2016-06-05 15:122016-08-18 11:48
shuehner 
Retail 
normalmajorhave not tried
closedfixed 
5
 
RR16Q2.2RR16Q2.2 
guilleaer
No
0033616: OrderLoader: Inefficient check for m_locator doing 2-3 queries for the same
OrderLoader is querying m_locator (for order.getWarehouse()) essentially up to 3 times

1.) just after 'if (createShipment)' to see if none are present and error out
2.) a few lines later in call to createShipment doing .count() to check if exactly one is present
3.) then just after that said count another .uniqueResult() to retrieve that 'exactly one'

All those can be done with a single sql.
Trace SQL done by OrderLoader.
Replace all 3 calls by single query.

Adding simple .setMaxResults(2) and .list() gives us all the info we need and the limit 2 avoids ever reading >2 rows into memory.

Note: Even while only wanting .count()==1 and reading single row we need to use a limit of 2 to distinguish the count=1 or count>1 case.

As we only care about count being exactly 1 (or not) we do not need to do proper count for any values >1 to the limit 2 does the trick nicely.

No tags attached.
blocks defect 0033139 closed mario_castello OrderLoader: Inefficient check for m_locator doing 2-3 queries for the same 
Issue History
2016-08-03 14:26marvintmTypedefect => backport
2016-08-03 14:26marvintmTarget Version => RR16Q2.2
2016-08-17 21:49hgbotCheckin
2016-08-17 21:49hgbotNote Added: 0089188
2016-08-17 21:49hgbotStatusscheduled => resolved
2016-08-17 21:49hgbotResolutionopen => fixed
2016-08-17 21:49hgbotFixed in SCM revision => http://code.openbravo.com/retail/backports/3.0RR16Q2.2/org.openbravo.retail.posterminal/rev/504b62d53b98648654163bb4b1fb7560c8c2b57e [^]
2016-08-18 11:48guilleaerReview Assigned To => guilleaer
2016-08-18 11:48guilleaerStatusresolved => closed
2016-08-18 11:48guilleaerFixed in Version => RR16Q2.2

Notes
(0089188)
hgbot   
2016-08-17 21:49   
Repository: retail/backports/3.0RR16Q2.2/org.openbravo.retail.posterminal
Changeset: 504b62d53b98648654163bb4b1fb7560c8c2b57e
Author: Mario Castello <mario.castello <at> peoplewalking.com>
Date: Wed Aug 03 14:28:43 2016 -0600
URL: http://code.openbravo.com/retail/backports/3.0RR16Q2.2/org.openbravo.retail.posterminal/rev/504b62d53b98648654163bb4b1fb7560c8c2b57e [^]

Fixed issue 0033616: Replace the sames query for m_locator in orderloader class for only one query

---
M src/org/openbravo/retail/posterminal/OrderLoader.java
---