• Konstantin Osipov's avatar
    Committing on behalf or Dmitry Lenev: · 08472b0f
    Konstantin Osipov authored
    Fix for bug #46947 "Embedded SELECT without FOR UPDATE is
    causing a lock", with after-review fixes.
    
    SELECT statements with subqueries referencing InnoDB tables
    were acquiring shared locks on rows in these tables when they
    were executed in REPEATABLE-READ mode and with statement or
    mixed mode binary logging turned on.
    
    This was a regression which were introduced when fixing
    bug 39843.
    
    The problem was that for tables belonging to subqueries
    parser set TL_READ_DEFAULT as a lock type. In cases when
    statement/mixed binary logging at open_tables() time this
    type of lock was converted to TL_READ_NO_INSERT lock at
    open_tables() time and caused InnoDB engine to acquire
    shared locks on reads from these tables. Although in some
    cases such behavior was correct (e.g. for subqueries in
    DELETE) in case of SELECT it has caused unnecessary locking.
    
    This patch tries to solve this problem by rethinking our
    approach to how we handle locking for SELECT and subqueries.
    Now we always set ...
    08472b0f
sp_head.cc 107 KB