use of org.apache.hadoop.hbase.filter.Filter in project phoenix by apache.
the class SelectStatementRewriterTest method testLHSLiteralCollapseAnd.
@Test
public void testLHSLiteralCollapseAnd() throws SQLException {
String tenantId = "000000000000001";
String query = "select * from atable where '" + tenantId + "'=organization_id and 0=a_integer";
Filter filter = compileStatement(query);
assertEquals(singleKVFilter(constantComparison(CompareOp.EQUAL, A_INTEGER, 0)), filter);
}
use of org.apache.hadoop.hbase.filter.Filter in project phoenix by apache.
the class WhereCompilerTest method testAndTrueFilter.
@Test
public void testAndTrueFilter() throws SQLException {
String tenantId = "000000000000001";
String query = "select * from atable where organization_id='" + tenantId + "' and a_integer=0 and 2<3";
PhoenixConnection pconn = DriverManager.getConnection(getUrl(), PropertiesUtil.deepCopy(TEST_PROPERTIES)).unwrap(PhoenixConnection.class);
PhoenixPreparedStatement pstmt = newPreparedStatement(pconn, query);
QueryPlan plan = pstmt.optimizeQuery();
Scan scan = plan.getContext().getScan();
Filter filter = scan.getFilter();
assertEquals(singleKVFilter(constantComparison(CompareOp.EQUAL, A_INTEGER, 0)), filter);
byte[] startRow = PVarchar.INSTANCE.toBytes(tenantId);
assertArrayEquals(startRow, scan.getStartRow());
byte[] stopRow = startRow;
assertArrayEquals(ByteUtil.nextKey(stopRow), scan.getStopRow());
}
use of org.apache.hadoop.hbase.filter.Filter in project phoenix by apache.
the class WhereCompilerTest method helpTestToNumberFilter.
private void helpTestToNumberFilter(String toNumberClause, BigDecimal expectedDecimal) throws Exception {
String tenantId = "000000000000001";
String query = "select * from atable where organization_id='" + tenantId + "' and x_decimal >= " + toNumberClause;
PhoenixConnection pconn = DriverManager.getConnection(getUrl(), PropertiesUtil.deepCopy(TEST_PROPERTIES)).unwrap(PhoenixConnection.class);
PhoenixPreparedStatement pstmt = newPreparedStatement(pconn, query);
QueryPlan plan = pstmt.optimizeQuery();
Scan scan = plan.getContext().getScan();
Filter filter = scan.getFilter();
assertEquals(singleKVFilter(constantComparison(CompareOp.GREATER_OR_EQUAL, X_DECIMAL, expectedDecimal)), filter);
}
use of org.apache.hadoop.hbase.filter.Filter in project phoenix by apache.
the class WhereOptimizerTest method testLikeOptKeyExpression.
@Test
public void testLikeOptKeyExpression() throws SQLException {
String tenantId = "000000000000001";
String keyPrefix = "002";
String likeArg = keyPrefix + "%003%";
String query = "select * from atable where organization_id = ? and entity_id LIKE '" + likeArg + "'";
List<Object> binds = Arrays.<Object>asList(tenantId);
StatementContext context = compileStatement(query, binds);
Scan scan = context.getScan();
Filter filter = scan.getFilter();
assertNotNull(filter);
assertEquals(rowKeyFilter(like(ENTITY_ID, likeArg, context)), filter);
byte[] startRow = ByteUtil.concat(PVarchar.INSTANCE.toBytes(tenantId), StringUtil.padChar(PVarchar.INSTANCE.toBytes(keyPrefix), 15));
assertArrayEquals(startRow, scan.getStartRow());
byte[] stopRow = ByteUtil.concat(PVarchar.INSTANCE.toBytes(tenantId), StringUtil.padChar(ByteUtil.nextKey(PVarchar.INSTANCE.toBytes(keyPrefix)), 15));
assertArrayEquals(stopRow, scan.getStopRow());
}
use of org.apache.hadoop.hbase.filter.Filter in project phoenix by apache.
the class WhereOptimizerTest method testFullyQualifiedRVCWithNonTenantSpecificView.
@Test
public void testFullyQualifiedRVCWithNonTenantSpecificView() throws Exception {
String baseTableDDL = "CREATE TABLE BASE_TABLE(\n " + " tenant_id VARCHAR(5) NOT NULL,\n" + " userid INTEGER NOT NULL,\n" + " username VARCHAR NOT NULL,\n" + " col VARCHAR\n " + " CONSTRAINT pk PRIMARY KEY (tenant_id, userid, username))";
Connection conn = DriverManager.getConnection(getUrl());
conn.createStatement().execute(baseTableDDL);
conn.close();
String viewDDL = "CREATE VIEW VIEWXYZ AS SELECT * FROM BASE_TABLE";
conn = DriverManager.getConnection(getUrl());
conn.createStatement().execute(viewDDL);
String query = "SELECT * FROM VIEWXYZ WHERE (tenant_id, userid, username) IN ((?, ?, ?), (?, ?, ?))";
List<Object> binds = Arrays.<Object>asList("tenantId", 1, "uname1", "tenantId", 2, "uname2");
StatementContext context = compileStatement(query, binds);
Scan scan = context.getScan();
Filter filter = scan.getFilter();
assertEquals(SkipScanFilter.class, filter.getClass());
}
Aggregations