azkaban-aplcache

Details

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);