|
As of 1.4 MCS uses a legacy complex machine to process pushed down conditions when run queries in table API mode. MCS populates a map that is globally unique for the client connection with TABLE* - CSEP mappings to use them later in rnd_init().
This is error prone and overcomplicated ways of doing this.
A pair handler::cond_push()/cond_pop() push conditions for a dedicated handler instance. The same instance executes rnd_init() so it is safe to create a stack of ParseTree pointers in handler. MCS must clean them up on handler::reset() thus the mapping clean up must be removed from handler::external_lock().
|