1syntax = "proto2"; 2package otsprotocol; 3 4enum VariantType { 5 VT_INTEGER = 0; 6 VT_DOUBLE = 1; 7 //VT_BOOLEAN = 2; 8 VT_STRING = 3; 9 VT_NULL = 6; 10 VT_BLOB = 7; 11} 12 13message ValueTransferRule { 14 required string regex = 1; 15 optional VariantType cast_type = 2; 16} 17 18enum FilterType { 19 FT_SINGLE_COLUMN_VALUE = 1; 20 FT_COMPOSITE_COLUMN_VALUE = 2; 21 FT_COLUMN_PAGINATION = 3; 22} 23 24enum ComparatorType { 25 CT_EQUAL = 1; 26 CT_NOT_EQUAL = 2; 27 CT_GREATER_THAN = 3; 28 CT_GREATER_EQUAL = 4; 29 CT_LESS_THAN = 5; 30 CT_LESS_EQUAL = 6; 31} 32 33message SingleColumnValueFilter { 34 required ComparatorType comparator = 1; 35 required string column_name = 2; 36 required bytes column_value = 3; // Serialized SQLVariant 37 required bool filter_if_missing = 4; 38 required bool latest_version_only = 5; 39 optional ValueTransferRule value_trans_rule = 6; 40} 41 42enum LogicalOperator { 43 LO_NOT = 1; 44 LO_AND = 2; 45 LO_OR = 3; 46} 47 48message CompositeColumnValueFilter { 49 required LogicalOperator combinator = 1; 50 repeated Filter sub_filters = 2; 51} 52 53message ColumnPaginationFilter { 54 required int32 offset = 1; 55 required int32 limit = 2; 56} 57 58message Filter { 59 required FilterType type = 1; 60 required bytes filter = 2; // Serialized string of filter of the type 61} 62