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