On Sep 07, Katsikaros Vangelis wrote:
> Sergei Golubchik wrote:
> >On Aug 24, Vagelis Katsikaros wrote:
> Item::used_tables returns the tablemap of the tables used by the
> join_tab::key_dependent of a table A stores the tables that are
> joined with A using a primary key.
Any key, I believe - it's set in add_key_field():
Save the following cases:
Field op constant
Field LIKE constant where constant doesn't start with a wildcard
Field = field2 where field2 is in a different table
Field op formula
Field IS NULL
Field IS NOT NULL
Field BETWEEN ...
Field IN ...
> What is stored in join_tab::dependent?
You may see that it's set in make_join_statistics(),
tableB->dependent=tableA, when tableA must be before tableB in the join
order, because of outer join or because of straight join.
> In table::map is stored the ID bit of the table (1,2,4,8,...,), that
> is, the place of the table in the bit map?
> From what I've seen the key_map (Bitmap<64> Template) is just
> another bit map with bitwise-related functions built-in.
Yes. In 4.0 it was the same ulong as table_map, but later we wanted to
allow more than 32 keys per table, so I changed key_map to be an
arbitrary-length bitmap. It's 64 bits (ulonglong) by default, but can be
compiled to use larger bitmaps. Eventually we'll change table_map to use
the same template.
__ ___ ___ ____ __
/ |/ /_ __/ __/ __ \/ / Sergei Golubchik <serg@stripped>
/ /|_/ / // /\ \/ /_/ / /__ MySQL AB, Senior Software Developer
/_/ /_/\_, /___/\___\_\___/ Osnabrueck, Germany