The TABLE_LIST object is currently overused. The task is to detach the view part from TABLE_LIST. TABLE_LIST is a structure which contains a list of all tables. It's defined in sql/table.h. According to the comments there, a "table" can be a regular base table, a subquery, an information_schema table, a view, a temporary table, or a nested table reference. But often, routines need only a list of regular base tables. For example: a lock function might not need a list that contains views as well as base tables. * Note added by Trudy Pelzer, 2006-12-22 ** The last statement appears now to be obsolete; see WL#3561 "transactional LOCK TABLE". Just guessing: The task is: put views, even materialized views, in a separate list, VIEW_LIST.