diff --git a/azkaban-common/src/main/java/azkaban/executor/ExecutionFlowDao.java b/azkaban-common/src/main/java/azkaban/executor/ExecutionFlowDao.java
index fe72bba..7d2e256 100644
--- a/azkaban-common/src/main/java/azkaban/executor/ExecutionFlowDao.java
+++ b/azkaban-common/src/main/java/azkaban/executor/ExecutionFlowDao.java
@@ -142,7 +142,7 @@ public class ExecutionFlowDao {
boolean first = true;
if (projContain != null && !projContain.isEmpty()) {
- query += " ef JOIN projects p ON ef.project_id = p.id WHERE name LIKE ?";
+ query += " JOIN projects p ON ef.project_id = p.id WHERE name LIKE ?";
params.add('%' + projContain + '%');
first = false;
}
@@ -268,7 +268,7 @@ public class ExecutionFlowDao {
ResultSetHandler<List<ExecutableFlow>> {
static String FETCH_BASE_EXECUTABLE_FLOW_QUERY =
- "SELECT exec_id, enc_type, flow_data FROM execution_flows ";
+ "SELECT ef.exec_id, ef.enc_type, ef.flow_data FROM execution_flows ef";
static String FETCH_EXECUTABLE_FLOW =
"SELECT exec_id, enc_type, flow_data FROM execution_flows "
+ "WHERE exec_id=?";
diff --git a/azkaban-common/src/test/java/azkaban/executor/ExecutionFlowDaoTest.java b/azkaban-common/src/test/java/azkaban/executor/ExecutionFlowDaoTest.java
index 58c6bd9..d6e3ca0 100644
--- a/azkaban-common/src/test/java/azkaban/executor/ExecutionFlowDaoTest.java
+++ b/azkaban-common/src/test/java/azkaban/executor/ExecutionFlowDaoTest.java
@@ -20,8 +20,11 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import azkaban.db.DatabaseOperator;
+import azkaban.project.JdbcProjectImpl;
+import azkaban.project.ProjectLoader;
import azkaban.test.Utils;
import azkaban.test.executions.ExecutionsTestUtil;
+import azkaban.user.User;
import azkaban.utils.Pair;
import azkaban.utils.Props;
import azkaban.utils.TestUtils;
@@ -50,6 +53,8 @@ public class ExecutionFlowDaoTest {
private AssignExecutorDao assignExecutor;
private FetchActiveFlowDao fetchActiveFlowDao;
private ExecutionJobDao executionJobDao;
+ private static final Props props = new Props();
+ private ProjectLoader loader;
@BeforeClass
public static void setUp() throws Exception {
@@ -73,6 +78,7 @@ public class ExecutionFlowDaoTest {
this.assignExecutor = new AssignExecutorDao(dbOperator, this.executorDao);
this.fetchActiveFlowDao = new FetchActiveFlowDao(dbOperator);
this.executionJobDao = new ExecutionJobDao(dbOperator);
+ this.loader = new JdbcProjectImpl(props, dbOperator);
}
@After
@@ -80,6 +86,7 @@ public class ExecutionFlowDaoTest {
try {
dbOperator.update("DELETE FROM execution_flows");
dbOperator.update("DELETE FROM executors");
+ dbOperator.update("DELETE FROM projects");
} catch (final SQLException e) {
e.printStackTrace();
}
@@ -89,6 +96,13 @@ public class ExecutionFlowDaoTest {
return TestUtils.createTestExecutableFlow("exectest1", "exec1");
}
+ private void createTestProject() {
+ String projectName = "exectest1";
+ String projectDescription = "This is my new project";
+ User user = new User("testUser1");
+ this.loader.createNewProject(projectName, projectDescription, user);
+ }
+
@Test
public void testUploadAndFetchExecutionFlows() throws Exception {
@@ -138,6 +152,19 @@ public class ExecutionFlowDaoTest {
}
@Test
+ public void testAdvancedFilter() throws Exception {
+ createTestProject();
+ final ExecutableFlow flow = createTestFlow();
+ this.executionFlowDao.uploadExecutableFlow(flow);
+ final List<ExecutableFlow> flowList1 = this.executionFlowDao.fetchFlowHistory("exectest1", "", "",0, -1, -1, 0, 16);
+ assertThat(flowList1.size()).isEqualTo(1);
+
+ final ExecutableFlow fetchFlow =
+ this.executionFlowDao.fetchExecutableFlow(flow.getExecutionId());
+ assertTwoFlowSame(flowList1.get(0), fetchFlow);
+ }
+
+ @Test
public void testFetchRecentlyFinishedFlows() throws Exception {
final ExecutableFlow flow1 = createTestFlow();
this.executionFlowDao.uploadExecutableFlow(flow1);