Author: kwright
Date: Mon Jun 9 17:08:41 2014
New Revision: 1601442
URL: http://svn.apache.org/r1601442
Log:
Fix queries
Modified:
manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java
manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/Jobs.java
Modified:
manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java
URL:
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java?rev=1601442&r1=1601441&r2=1601442&view=diff
==============================================================================
---
manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java
(original)
+++
manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java
Mon Jun 9 17:08:41 2014
@@ -560,11 +560,16 @@ public class JobManager implements IJobM
protected void noteTransformationConnectionDeregistration(List<String> list)
throws ManifoldCFException
{
+ // Query for the matching jobs, and then for each job potentially adjust
the state
+ Long[] jobIDs = jobs.findJobsMatchingTransformations(list);
StringBuilder query = new StringBuilder();
ArrayList newList = new ArrayList();
- // Query for the matching jobs, and then for each job potentially adjust
the state
- jobs.buildTransformationMatchingQuery(query,newList,list);
- query.append(" FOR UPDATE");
+
+ query.append("SELECT
").append(jobs.idField).append(",").append(jobs.statusField)
+ .append(" FROM ").append(jobs.getTableName()).append(" WHERE ")
+ .append(database.buildConjunctionClause(newList,new ClauseDescription[]{
+ new MultiClause(jobs.idField,jobIDs)}))
+ .append(" FOR UPDATE");
IResultSet set = database.performQuery(query.toString(),newList,null,null);
int i = 0;
while (i < set.getRowCount())
@@ -611,11 +616,16 @@ public class JobManager implements IJobM
protected void noteTransformationConnectionRegistration(List<String> list)
throws ManifoldCFException
{
+ // Query for the matching jobs, and then for each job potentially adjust
the state
+ Long[] jobIDs = jobs.findJobsMatchingTransformations(list);
StringBuilder query = new StringBuilder();
ArrayList newList = new ArrayList();
- // Query for the matching jobs, and then for each job potentially adjust
the state
- jobs.buildTransformationMatchingQuery(query,newList,list);
- query.append(" FOR UPDATE");
+
+ query.append("SELECT
").append(jobs.idField).append(",").append(jobs.statusField)
+ .append(" FROM ").append(jobs.getTableName()).append(" WHERE ")
+ .append(database.buildConjunctionClause(newList,new ClauseDescription[]{
+ new MultiClause(jobs.idField,jobIDs)}))
+ .append(" FOR UPDATE");
IResultSet set = database.performQuery(query.toString(),newList,null,null);
int i = 0;
while (i < set.getRowCount())
Modified:
manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/Jobs.java
URL:
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/Jobs.java?rev=1601442&r1=1601441&r2=1601442&view=diff
==============================================================================
---
manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/Jobs.java
(original)
+++
manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/Jobs.java
Mon Jun 9 17:08:41 2014
@@ -563,15 +563,25 @@ public class Jobs extends org.apache.man
analyzeTable();
}
- /** Build a query returning jobID and status for all jobs matching a set of
transformation connection names.
+ /** Find a list of jobs matching specified transformation names.
*/
- public void buildTransformationMatchingQuery(StringBuilder query, ArrayList
params,
- List<String> transformationConnectionNames)
+ public Long[] findJobsMatchingTransformations(List<String>
transformationConnectionNames)
+ throws ManifoldCFException
{
- query.append("SELECT ").append(idField).append(",").append(statusField)
+ StringBuilder query = new StringBuilder();
+ ArrayList params = new ArrayList();
+ query.append("SELECT ").append(idField)
.append(" FROM ").append(getTableName()).append(" t1 WHERE EXISTS(");
pipelineManager.buildQueryClause(query,params,"t1."+idField,transformationConnectionNames);
query.append(")");
+ IResultSet set = performQuery(query.toString(),params,null,null);
+ Long[] rval = new Long[set.getRowCount()];
+ for (int i = 0; i < rval.length; i++)
+ {
+ IResultRow row = set.getRow(i);
+ rval[i] = (Long)row.getValue(idField);
+ }
+ return rval;
}
/** Read schedule records for a specified set of jobs. Cannot use caching!