/** * Test explain partitioned table * * @throws Exception the exception */ @Test public void testExplainPartitionedTable() throws Exception { int handleSize = getHandleSize(); createPartitionedTable("test_part_table"); // acquire SessionState.setCurrentSessionState(ss); DriverQueryPlan plan = driver.explain(createExplainContext("SELECT ID FROM test_part_table", queryConf)); assertHandleSize(handleSize); assertTrue(plan instanceof HiveQueryPlan); assertNotNull(plan.getTablesQueried()); assertEquals(plan.getTablesQueried().size(), 1); System.out.println("Tables:" + plan.getTablesQueried()); assertEquals(plan.getTableWeight(dataBase + ".test_part_table"), 500.0); System.out.println("Parts:" + plan.getPartitions()); assertFalse(plan.getPartitions().isEmpty()); assertEquals(plan.getPartitions().size(), 1); assertTrue(((String) plan.getPartitions().get(dataBase + ".test_part_table").iterator().next()).contains("today")); assertTrue(((String) plan.getPartitions().get(dataBase + ".test_part_table").iterator().next()).contains("dt")); }
/** * Test explain output. * * @throws Exception the exception */ @Test public void testExplainOutput() throws Exception { int handleSize = getHandleSize(); createTestTable("explain_test_1"); createTestTable("explain_test_2"); SessionState.setCurrentSessionState(ss); DriverQueryPlan plan = driver.explain(createExplainContext("SELECT explain_test_1.ID, count(1) FROM " + " explain_test_1 join explain_test_2 on explain_test_1.ID = explain_test_2.ID" + " WHERE explain_test_1.ID = 'foo' or explain_test_2.ID = 'bar'" + " GROUP BY explain_test_1.ID", queryConf)); assertHandleSize(handleSize); assertTrue(plan instanceof HiveQueryPlan); assertNotNull(plan.getTablesQueried()); assertEquals(plan.getTablesQueried().size(), 2); assertNotNull(plan.getTableWeights()); assertTrue(plan.getTableWeights().containsKey(dataBase + ".explain_test_1")); assertTrue(plan.getTableWeights().containsKey(dataBase + ".explain_test_2")); assertTrue(plan.getPlan() != null && !plan.getPlan().isEmpty()); driver.closeQuery(plan.getHandle()); }
/** * Test explain output persistent. * * @throws Exception the exception */ @Test public void testExplainOutputPersistent() throws Exception { int handleSize = getHandleSize(); createTestTable("explain_test_1"); queryConf.setBoolean(LensConfConstants.QUERY_PERSISTENT_RESULT_INDRIVER, true); SessionState.setCurrentSessionState(ss); String query2 = "SELECT DISTINCT ID FROM explain_test_1"; PreparedQueryContext pctx = createPreparedQueryContext(query2); pctx.setSelectedDriver(driver); pctx.setLensSessionIdentifier(sessionid); DriverQueryPlan plan2 = driver.explainAndPrepare(pctx); // assertNotNull(plan2.getResultDestination()); assertHandleSize(handleSize); assertNotNull(plan2.getTablesQueried()); assertEquals(plan2.getTablesQueried().size(), 1); assertTrue(plan2.getTableWeights().containsKey(dataBase + ".explain_test_1")); QueryContext ctx = createContext(pctx, queryConf); LensResultSet resultSet = driver.execute(ctx); assertHandleSize(handleSize); HivePersistentResultSet persistentResultSet = (HivePersistentResultSet) resultSet; String path = persistentResultSet.getOutputPath(); assertEquals(ctx.getDriverResultPath(), path); driver.closeQuery(plan2.getHandle()); }