i was reading file "opt_range.cc", but i'm a bit confused (maybe first impression) where the per column check occurs? where the "Impossible WHERE" condiction occurs? -------------------------------------- i'm thinking about a implementation like this (per column): field = ENUM field WITH enum_values[i], where i start with 0 to ENUM VALUES + 1, example: field ENUM ( 1,2,3,4,5,6 ) NOT NULL max i = 6 field ENUM ( 1,2,3,4,5,6 ) max i = 7 enum_value[0]=1, enum_value[1]=2, enum_value[2]=3, enum_value[3]=4, enum_value[4]=5, enum_value[5]=6 enum_value[6]='' -> this allow insert of 10000 value in this field enum_value[7]=NULL -> if ENUM accept NULL add +1 ------------------------------------- OP could be: =,!=,<>,<,<=,>,>= (field OP constant_value) REWRITE TO ( (field OP constant_value) AND ( enum_value[0] OP constant_value OR enum_value[1] OP constant_value OR ... enum_value[max i - 1] OP constant_value OR enum_value[max i] OP constant_value ) ) ------------------------------------- (OP BETWEEN a AND b) REWRITE TO ( (field BETWEEN constant_value_1 AND constant_value_2) AND ( (enum_value[0] BETWEEN constant_value_1 AND constant_value_2) OR (enum_value[1] BETWEEN constant_value_1 AND constant_value_2) OR ... (enum_value[ max i - 1 ] BETWEEN constant_value_1 AND constant_value_2) OR enum_value[ max i ] OP constant_value ) ) -------------------------------------