1/**
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements.  See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership.  The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License.  You may obtain a copy of the License at
9 *
10 *     http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18
19// This file contains protocol buffers that are used for filters
20
21option java_package = "org.apache.hadoop.hbase.protobuf.generated";
22option java_outer_classname = "FilterProtos";
23option java_generic_services = true;
24option java_generate_equals_and_hash = true;
25option optimize_for = SPEED;
26
27import "HBase.proto";
28import "Comparator.proto";
29
30message Filter {
31  required string name = 1;
32  optional bytes serialized_filter = 2;
33}
34
35message ColumnCountGetFilter {
36  required int32 limit = 1;
37}
38
39message ColumnPaginationFilter {
40  required int32 limit = 1;
41  optional int32 offset = 2;
42  optional bytes column_offset = 3;
43}
44
45message ColumnPrefixFilter {
46  required bytes prefix = 1;
47}
48
49message ColumnRangeFilter {
50  optional bytes min_column = 1;
51  optional bool min_column_inclusive = 2;
52  optional bytes max_column = 3;
53  optional bool max_column_inclusive = 4;
54}
55
56message CompareFilter {
57  required CompareType compare_op = 1;
58  optional Comparator comparator = 2;
59}
60
61message DependentColumnFilter {
62  required CompareFilter compare_filter = 1;
63  optional bytes column_family = 2;
64  optional bytes column_qualifier = 3;
65  optional bool drop_dependent_column = 4;
66}
67
68message FamilyFilter {
69  required CompareFilter compare_filter = 1;
70}
71
72message FilterList {
73  required Operator operator = 1;
74  repeated Filter filters = 2;
75
76  enum Operator {
77    MUST_PASS_ALL = 1;
78    MUST_PASS_ONE = 2;
79  }
80}
81
82message FilterWrapper {
83  required Filter filter = 1;
84}
85
86message FirstKeyOnlyFilter {
87}
88
89message FirstKeyValueMatchingQualifiersFilter {
90  repeated bytes qualifiers = 1;
91}
92
93message FuzzyRowFilter {
94  repeated BytesBytesPair fuzzy_keys_data = 1;
95}
96
97message InclusiveStopFilter {
98  optional bytes stop_row_key = 1;
99}
100
101message KeyOnlyFilter {
102  required bool len_as_val = 1;
103}
104
105message MultipleColumnPrefixFilter {
106  repeated bytes sorted_prefixes = 1;
107}
108
109message PageFilter {
110  required int64 page_size = 1;
111}
112
113message PrefixFilter {
114  optional bytes prefix = 1;
115}
116
117message QualifierFilter {
118  required CompareFilter compare_filter = 1;
119}
120
121message RandomRowFilter {
122  required float chance = 1;
123}
124
125message RowFilter {
126  required CompareFilter compare_filter = 1;
127}
128
129message SingleColumnValueExcludeFilter {
130  required SingleColumnValueFilter single_column_value_filter = 1;
131}
132
133message SingleColumnValueFilter {
134  optional bytes column_family = 1;
135  optional bytes column_qualifier = 2;
136  required CompareType compare_op = 3;
137  required Comparator comparator = 4;
138  optional bool filter_if_missing = 5;
139  optional bool latest_version_only = 6;
140}
141
142message SkipFilter {
143  required Filter filter = 1;
144}
145
146message TimestampsFilter {
147  repeated int64 timestamps = 1 [packed=true];
148}
149
150message ValueFilter {
151  required CompareFilter compare_filter = 1;
152}
153
154message WhileMatchFilter {
155  required Filter filter = 1;
156}
157message FilterAllFilter {
158}
159
160message RowRange {
161  optional bytes start_row = 1;
162  optional bool start_row_inclusive = 2;
163  optional bytes stop_row = 3;
164  optional bool stop_row_inclusive =4;
165}
166
167message MultiRowRangeFilter {
168  repeated RowRange row_range_list = 1;
169}