21
21
import org .apache .hadoop .hbase .filter .*;
22
22
import org .apache .hadoop .hbase .util .Bytes ;
23
23
24
+ import java .lang .reflect .Field ;
24
25
import java .util .List ;
25
26
26
27
@ InterfaceAudience .Private
@@ -46,6 +47,12 @@ public static String toParseableString(Filter filter) {
46
47
return toParseableString ((ColumnPaginationFilter ) filter );
47
48
} else if (filter instanceof ColumnPrefixFilter ) {
48
49
return toParseableString ((ColumnPrefixFilter ) filter );
50
+ } else if (filter instanceof FirstKeyOnlyFilter ) {
51
+ return toParseableString ((FirstKeyOnlyFilter ) filter );
52
+ } else if (filter instanceof KeyOnlyFilter ) {
53
+ return toParseableString ((KeyOnlyFilter ) filter );
54
+ } else if (filter instanceof TimestampsFilter ) {
55
+ return toParseableString ((TimestampsFilter ) filter );
49
56
} else if (filter instanceof SkipFilter ) {
50
57
return toParseableString ((SkipFilter ) filter );
51
58
} else if (filter instanceof WhileMatchFilter ) {
@@ -132,6 +139,43 @@ private static String toParseableString(ColumnPrefixFilter filter) {
132
139
return filter .getClass ().getSimpleName () + "('" + Bytes .toString (filter .getPrefix ()) + "')" ;
133
140
}
134
141
142
+ private static String toParseableString (FirstKeyOnlyFilter filter ) {
143
+ return filter .getClass ().getSimpleName () + "()" ;
144
+ }
145
+
146
+ private static String toParseableString (KeyOnlyFilter filter ) {
147
+ boolean lenAsVal ;
148
+ try {
149
+ Field field = filter .getClass ().getDeclaredField ("lenAsVal" );
150
+ field .setAccessible (true );
151
+ lenAsVal = (boolean )field .get (filter );
152
+ } catch (NoSuchFieldException | IllegalAccessException e ) {
153
+ throw new RuntimeException (e );
154
+ }
155
+ return filter .getClass ().getSimpleName () + "(" + lenAsVal + ")" ;
156
+ }
157
+
158
+ private static String toParseableString (TimestampsFilter filter ) {
159
+ StringBuilder paramBuilder = new StringBuilder ();
160
+ List <Long > timestamps = filter .getTimestamps ();
161
+ boolean canHint ;
162
+ try {
163
+ Field field = filter .getClass ().getDeclaredField ("canHint" );
164
+ field .setAccessible (true );
165
+ canHint = (boolean )field .get (filter );
166
+ } catch (NoSuchFieldException | IllegalAccessException e ) {
167
+ throw new RuntimeException (e );
168
+ }
169
+ for (int i = 0 ; i < timestamps .size (); i ++) {
170
+ Long timestamp = timestamps .get (i );
171
+ paramBuilder .append (timestamp );
172
+ paramBuilder .append ("," );
173
+ }
174
+ String param = paramBuilder .toString ();
175
+ return filter .getClass ().getSimpleName () + "("
176
+ + param + canHint + ")" ;
177
+ }
178
+
135
179
private static String toParseableString (ColumnCountGetFilter filter ) {
136
180
return filter .getClass ().getSimpleName () + '(' + filter .getLimit () + ')' ;
137
181
}
0 commit comments