Databend 的系统表位 于 query/storage 目录下。当然,如果因为一些特殊的构建原因无法放在这个位置的话,也可以考虑临时放到
service/databases/system
系统表的定义主要关注两个内容:一个是表的信息,会包含表名、Schema 这些;另一个就是表中数据的生成/获取。刚好可以对应到
SyncSystemTable
AsyncSystemTable
get_table_info
get_full_data
实现
本文将会以
credits
首先,需要参考其他系统表的实现,去定义表对应的结构,只需要保有表信息的字段就可以了。
pub struct CreditsTable {
table_info: TableInfo,
}
接下来是为
CreditsTable
create
pub fn create(table_id: u64) -> Arc<dyn Table>
传入的
table_id
sys_db_meta.next_table_id()
schema
TableSchemaRefExt
TableField