1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.hadoop.hbase.hbql.statement;
22
23 import org.apache.expreval.client.InternalErrorException;
24 import org.apache.expreval.client.NullColumnValueException;
25 import org.apache.expreval.client.ResultMissingColumnException;
26 import org.apache.expreval.expr.ArgumentListTypeSignature;
27 import org.apache.expreval.expr.MultipleExpressionContext;
28 import org.apache.expreval.expr.node.BooleanValue;
29 import org.apache.expreval.expr.node.GenericValue;
30 import org.apache.hadoop.hbase.hbql.client.HBqlException;
31 import org.apache.hadoop.hbase.hbql.impl.HConnectionImpl;
32 import org.apache.hadoop.hbase.hbql.mapping.MappingContext;
33
34 public class StatementPredicate extends MultipleExpressionContext {
35
36 private static final ArgumentListTypeSignature typesig = new ArgumentListTypeSignature(BooleanValue.class);
37
38 public StatementPredicate(final GenericValue... exprs) {
39 super(typesig, exprs);
40 }
41
42 public boolean useResultData() {
43 return false;
44 }
45
46 private void validate() throws HBqlException {
47 this.setMappingContext(new MappingContext());
48 this.validateTypes(this.allowColumns(), false);
49 }
50
51 public boolean evaluate(final HConnectionImpl conn) throws HBqlException {
52
53 this.validate();
54
55 try {
56 return (Boolean)this.evaluate(conn, 0, this.allowColumns(), false, conn);
57 }
58 catch (ResultMissingColumnException e) {
59 throw new InternalErrorException("Missing column: " + e.getMessage());
60 }
61 catch (NullColumnValueException e) {
62 throw new InternalErrorException("Null value: " + e.getMessage());
63 }
64 }
65
66 public String asString() {
67 return "[ " + this.getGenericValue(0).asString() + " ]";
68 }
69
70 public boolean allowColumns() {
71 return false;
72 }
73 }