当初次获取一个表的元信息时,会调用 Storage_adapter::get() 接口,处理过程是什么样的?
处理过程是:Storage_adapter::get() // 根据访问对象类型,将依赖的 DD tables 加入到 open table list 中 |--Open_dictionary_tables_ctx::register_tables< T>() |--Table_impl::register_tables() |--Open_dictionary_tables_ctx::open_tables() // 调用 Server 层接口打开所有表 |--Raw_table::find_record() // 直接调用 handler 接口根据传入的 key(比如表名)查找记录 |--handler::ha_index_read_idx_map() // index read // 从读取到的 record 中解析出对应属性,调用 field[field_no]->val_xx() 函数 |--Table_impl::restore_attributes() // 通过调用 restore_children() 函数从与该对象关联的其他 DD 表中根据主外键读取完整的元数据定义 |--Table_impl::restore_children() |--返回完整的 DD cache 对象
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。