The problem: base_list::remove didn't modify base_list::last when removing
the last list element.
The fix: If we remove the last element, find the element before it (by walking
from the beginning of the list) and set base_list::last accordingly.
The list gets corrupted in both 4.0 and 4.1. There are no visible problems in
current 4.1 because current 4.1 doesn't call where_cond->fix_fields() after
constant propagation step.
New faster list iterators
Change list code to be simpler and faster
Optimize count(distinct)
New error messages for UNION
Make create_tmp_table more general to be usable by UNION
fixed concurrency bug with a very quickly disconnecting client -
the client could disconnect and delete thd before pthread_create
could write to &thd->real_id
sql/sql_list.h
while tracking down the bug, made new/delete go through my_malloc/my_free
for ilink - did not help, but this is better anyway - cleaner exit with a message in
out of memory codition at least.