syntax = "proto3"; package greptime.v1; message Column { string column_name = 1; enum SemanticType { TAG = 0; FIELD = 1; TIMESTAMP = 2; } SemanticType semantic_type = 2; message Values { repeated int32 i8_values = 1; repeated int32 i16_values = 2; repeated int32 i32_values = 3; repeated int64 i64_values = 4; repeated uint32 u8_values = 5; repeated uint32 u16_values = 6; repeated uint32 u32_values = 7; repeated uint64 u64_values = 8; repeated float f32_values = 9; repeated double f64_values = 10; repeated bool bool_values = 11; repeated bytes binary_values = 12; repeated string string_values = 13; repeated int32 date_values = 14; repeated int64 datetime_values = 15; repeated int64 ts_second_values = 16; repeated int64 ts_millisecond_values = 17; repeated int64 ts_microsecond_values = 18; repeated int64 ts_nanosecond_values = 19; } // The array of non-null values in this column. // // For example: suppose there is a column "foo" that contains some int32 values (1, 2, 3, 4, 5, null, 7, 8, 9, null); // column: // column_name: foo // semantic_type: Tag // values: 1, 2, 3, 4, 5, 7, 8, 9 // null_masks: 00100000 00000010 Values values = 3; // Mask maps the positions of null values. // If a bit in null_mask is 1, it indicates that the column value at that position is null. bytes null_mask = 4; // Helpful in creating vector from column. ColumnDataType datatype = 5; } message ColumnDef { string name = 1; ColumnDataType datatype = 2; bool is_nullable = 3; bytes default_constraint = 4; } enum ColumnDataType { BOOLEAN = 0; INT8 = 1; INT16 = 2; INT32 = 3; INT64 = 4; UINT8 = 5; UINT16 = 6; UINT32 = 7; UINT64 = 8; FLOAT32 = 9; FLOAT64 = 10; BINARY = 11; STRING = 12; DATE = 13; DATETIME = 14; TIMESTAMP_SECOND = 15; TIMESTAMP_MILLISECOND = 16; TIMESTAMP_MICROSECOND = 17; TIMESTAMP_NANOSECOND = 18; }