@Override public QueryPlan getQueryPlan() { return plan.getQueryPlan(); }
@Override public QueryPlan getQueryPlan() { return plan.getQueryPlan(); }
@Test public void testDelete() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); conn.createStatement().execute("CREATE TABLE t (k INTEGER NOT NULL PRIMARY KEY, v1 VARCHAR, v2 VARCHAR)"); conn.createStatement().execute("CREATE INDEX idx ON t(v1,v2)"); conn.setAutoCommit(true); PhoenixStatement stmt = conn.createStatement().unwrap(PhoenixStatement.class); SQLParser parser = new SQLParser("DELETE FROM t"); DeleteStatement delete = (DeleteStatement) parser.parseStatement(); DeleteCompiler compiler = new DeleteCompiler(stmt, null); MutationPlan plan = compiler.compile(delete); assertEquals("T", plan.getQueryPlan().getTableRef().getTable().getTableName().getString()); assertTrue(plan.getClass().getName().contains("ServerSelectDeleteMutationPlan")); parser = new SQLParser("DELETE FROM t WHERE v1 = 'foo'"); delete = (DeleteStatement) parser.parseStatement(); plan = compiler.compile(delete); assertEquals("IDX", plan.getQueryPlan().getTableRef().getTable().getTableName().getString()); assertTrue(plan.getClass().getName().contains("ClientSelectDeleteMutationPlan")); }
@Override public QueryPlan getQueryPlan() { return plan.getQueryPlan(); }
@Test public void testHintInSubquery() throws Exception { try (Connection conn = DriverManager.getConnection(getUrl())) { setupTables(conn); PhoenixStatement stmt = conn.createStatement().unwrap(PhoenixStatement.class); String query = "UPSERT /*+ NO_INDEX */ INTO T(k, v1) SELECT /*+ NO_INDEX */ k,v1 FROM T WHERE v1 = '4'"; MutationPlan plan = stmt.compileMutation(query); assertEquals("T", plan.getQueryPlan().getTableRef().getTable().getTableName().getString()); query = "UPSERT INTO T(k, v1) SELECT /*+ NO_INDEX */ k,v1 FROM T WHERE v1 = '4'"; plan = stmt.compileMutation(query); // TODO the following should actually use data table T if we supported hints in subqueries assertEquals("IDX", plan.getQueryPlan().getTableRef().getTable().getTableName().getString()); } }
@Test public void testCompile() throws Exception { try (Connection conn = DriverManager.getConnection(getUrl())) { setupTables(conn); PhoenixConnection pConn = conn.unwrap(PhoenixConnection.class); PTable pDataTable = pConn.getTable(new PTableKey(null, "T")); PostIndexDDLCompiler compiler = new PostIndexDDLCompiler(pConn, new TableRef(pDataTable)); MutationPlan plan = compiler.compile(pConn.getTable(new PTableKey(null, "IDX"))); assertEquals("T", plan.getQueryPlan().getTableRef().getTable().getTableName().getString()); } }