ClickHouse 架構概述之Field介紹
盛年不重來,一日難再晨,及時當勉勵,歲月不待人
盡管如此,有時候也可能需要處理單個值。表示單個值,可以使用 Field。Field 是 UInt64、Int64、Float64、String 和 Array 組成的聯合。IColumn 擁有 operator[] 方法來獲取第 n 個值成為一個 Field,同時也擁有 insert 方法將一個 Field 追加到一個列的末尾。這些方法並不高效,因為它們需要處理表示單一值的臨時 Field 對象,但是有更高效的方法比如 insertFrom 和 insertRangeFrom 等。
Field 中並沒有足夠的關於一個表(table)的特定數據類型的信息。比如,UInt8、UInt16、UInt32 和 UInt64 在 Field 中均表示為 UInt64。
Field對應的代碼目錄位置在dbms\src\Core下的Field.cpp和Field.h
Field的作用在於可以將Null、UInt64、Int64、Float64、UInt128、Int128、String、Array、Tuple、Decimal32、Decimal64、Decimal128和AggregateFunctionState這些類型都用Field模板類來表示,達到更通用和高效的目的。
支持等於、小於、大於、小於等於、大於等於、==和不等於等算法,對應的類如下圖所示:

