• MySQL Build Team's avatar
    Backport into build-200911241145-5.1.40sp1 · 49383941
    MySQL Build Team authored
    > ------------------------------------------------------------
    > revno: 3181
    > revision-id: alexey.kopytov@sun.com-20091016201951-fsht0wm8xn8vkzsx
    > parent: joerg@mysql.com-20091016164025-kb4sbrggq5o7zufc
    > committer: Alexey Kopytov <Alexey.Kopytov@Sun.com>
    > branch nick: mysql-5.1-bugteam
    > timestamp: Sat 2009-10-17 00:19:51 +0400
    > message:
    >   Bug #47123: Endless 100% CPU loop with STRAIGHT_JOIN 
    >    
    >   The problem was in incorrect handling of predicates involving 
    >   NULL as a constant value by the range optimizer. 
    >    
    >   For example, when creating a SEL_ARG node from a condition of 
    >   the form "field < const" (which would normally result in the 
    >   "NULL < field < const" SEL_ARG),  the special case when "const" 
    >   is NULL was not taken into account, so "NULL < field < NULL" 
    >   was produced for the "field < NULL" condition. 
    >    
    >   As a result, SEL_ARG structures of this form could not be 
    >   further optimized which in turn could lead to incorrectly 
    >   constructed SEL_ARG trees. In particular, code assuming SEL_ARG 
    >   structures to always form a sequence of ordered disjoint 
    >   intervals could enter an infinite loop under some 
    >   circumstances. 
    >    
    >   Fixed by changing get_mm_leaf() so that for any sargable 
    >   predicate except "<=>" involving NULL as a constant, "empty" 
    >   SEL_ARG is returned, since such a predicate is always false. 
    49383941
partition_pruning.result 115 KB