NDB欄位相關mysql7 5 4

2021-12-30 12:17:51 字數 1758 閱讀 4161

通過ndbdictionary::column 提供介面介面

class ndbdictionary::column

;ndbcolumnimpl繼承ndbdictionary::column,基本只提供字段屬性的set/get; 通過ndbcolumnimpl實現底層操作; 同時column不提供對record中欄位資料進行操作的操作介面。1. 在儲存引擎handler介面create中呼叫create_ndb_columnstatic int

create_ndb_column(thd *thd,

ndbcol &col,

field *field,

ha_create_info *create_info,

column_format_type default_format= column_format_type_default);根據field,create_info設定col的各成員變數,如m_type,m_autoincrement…;

note: 此時不設定字段大小 m_attrsize

2. 之後呼叫 addcolumn 把字段加入表中int ndbdictionary::table::addcolumn(const column & c)

(* col) = ndbcolumnimpl::getimpl(c);

if (m_impl.m_columns.push_back(col)) //

if (m_impl.buildcolumnhash()) //hash

col->m_column_no = m_impl.m_columns.size() - 1;

return 0;

}此時設定column的m_column_no屬性,

3. 之後呼叫createtable在data節點建立表ndbdictionary::dictionary::createtable()

ndbdictionaryimpl:::createtable()

ndbdictinte***ce::createtable()

serializetabledesc //計算column size

sendcreatetable //傳送給 data節點

ndbdictinte***ce::gettable() //從data節點獲取表

ndbdictinte***ce::parsetableinfo // 獲取表,字段資訊在serializetabledesc節點序列化表資訊以便網路傳輸。

note:在其中,通過dicttabinfo::attribute結構表示字段資訊,通過column填充attribute,並計算欄位attribute 大小(m_attrsize element size)

// check type and compute attribute size and array size

if (! tmpattr.translateexttype()) {由於在mysql中的一些field在ndb中不一定存在,所以字段順序在mysql表和ndb表中可能不同,通過ndb_table_map來對映mysql中的field與ndb中的column。在構造中通過mysqltable->field[fieldid]->stored_in_db判斷field是否有對應column,建立對映map。

m_map_by_field[fieldid] = colid;

m_map_by_col[colid] = fieldid;

*note:

1. 新增進索引的索引欄位不為表中字段,是不同物件。*

mysql匯出表的字段及相關屬性

需要匯出資料庫中表的字段及屬性,製成 儲存到word中 首先找到要導的庫,在查詢頁面輸入sql select column name 列名,column type 資料型別,data type 字段型別,character maximum length 長度,is nullable 是否為空,col...

mysql 字段 MySQL欄位型別詳解

mysql支援大量的列型別,它可以被分為3類 數字型別 日期和時間型別以及字串 字元 型別。本節首先給出可用型別的乙個概述,並且總結每個列型別的儲存需求,然後提供每個類中的型別性質的更詳細的描述。概述有意簡化,更詳細的說明應該考慮到有關特定列型別的附加資訊,例如你能為其指定值的允許格式。由mysql...

mysql表示字段 MySQL欄位型別

1 字段型別 字段型別分別為 數值型別 字串型別 日期時間型別。1.1 數值型別 數值型別分為整數型別和小數型別。整數型別為tinyint smallint mediumint int bigint。小數型別分為浮點型和定點型,有float double decimal。1.1.1 tinyint ...