The class sp_name has a member LEX_STRING m_qname. This member is needed only for error reporting purposes. it contains redundant information and is always synchronized with the other two members LEX_STRING members
m_db and m_name. In normal cases (when no errors happen) the current code assumes redundant work to keep m_qname valid whenever m_db and m_name are initially set or are later modified.
Instead of maintaining the redundant member m_qname we'll introduce two new classes:
Under terms of this task we'll derive sp_name and sp_head from this new class Database_qualified_name.
Later, under terms of separate tasks, we'll derive more classes from Database_qualified_name. For example, Item_ident is a good candidate for.
2. ErrConvDQName - a new ErrConv family class (in addition to those defined in sql_error.h}
This class will be used whenever we need to send a database qualified object name to an error message.
Perhaps the class name should be Database_qualified_object_name. Because later we'll need a derived class Database_qualfieid_column_name, which will add a new LEX_STRING member to store column names.