Skip to content
Snippets Groups Projects
  • Alvaro Fuentes's avatar
    0d220a7b
    [FIX] point_of_sale: fix memory error · 0d220a7b
    Alvaro Fuentes authored
    
    When there are too many (millions) of POS order lines associated to
    opened POS sessions we get too many taxes, most are duplicated. This
    causes a MemorryError.
    
    Example queries from a real DB:
    ```
    > select count(distinct r.account_tax_id) from pos_order_line l join pos_order o on o.id = l.order_id join pos_session s on s.id = o.session_id join account_tax_pos_order_line_rel r on r.pos_order_
     line_id = l.id where s.state != 'closed'
    +-------+
    | count |
    |-------|
    | 24    |
    +-------+
    > select count(r.account_tax_id) from pos_order_line l join pos_order o on o.id = l.order_id join pos_session s on s.id = o.session_id join account_tax_pos_order_line_rel r on r.pos_order_line_id =
      l.id where s.state != 'closed'
    +---------+
    | count   |
    |---------|
    | 2504539 |
    +---------+
    ```
    
    opw-3295467
    
    closes odoo/odoo#124180
    
    X-original-commit: 45d19b265033aa626e110e51d8b1d01408717a3e
    Signed-off-by: default avatarChristophe Simonis (chs) <chs@odoo.com>
    0d220a7b
    History
    [FIX] point_of_sale: fix memory error
    Alvaro Fuentes authored
    
    When there are too many (millions) of POS order lines associated to
    opened POS sessions we get too many taxes, most are duplicated. This
    causes a MemorryError.
    
    Example queries from a real DB:
    ```
    > select count(distinct r.account_tax_id) from pos_order_line l join pos_order o on o.id = l.order_id join pos_session s on s.id = o.session_id join account_tax_pos_order_line_rel r on r.pos_order_
     line_id = l.id where s.state != 'closed'
    +-------+
    | count |
    |-------|
    | 24    |
    +-------+
    > select count(r.account_tax_id) from pos_order_line l join pos_order o on o.id = l.order_id join pos_session s on s.id = o.session_id join account_tax_pos_order_line_rel r on r.pos_order_line_id =
      l.id where s.state != 'closed'
    +---------+
    | count   |
    |---------|
    | 2504539 |
    +---------+
    ```
    
    opw-3295467
    
    closes odoo/odoo#124180
    
    X-original-commit: 45d19b265033aa626e110e51d8b1d01408717a3e
    Signed-off-by: default avatarChristophe Simonis (chs) <chs@odoo.com>