I see,

The reason for this is that you aliased your nested select
(jobTaskCount) to "BlaBlaBla", but didn't actually select it in the
outer query. In other words "BlaBlaBla" doesn't actually exist. You'd
have to either

- Select jobTaskCount in the outer query, in order to formally declare
"BlaBlaBla"
- Keep jobTaskCount an anonymous nested select

I'll have to review a couple of query rendering steps though. jOOQ
shouldn't create a mismatch between bind variables and bound values.
Instead, the (bad) SQL should be rendered to MySQL and MySQL should
tell you about the illegal syntax. I'll check up on this:

https://sourceforge.net/apps/trac/jooq/ticket/493

Thanks for reporting this.

2011/5/7 FractalizeR <[email protected]>:
> The problem arises when I add name to a field. Log is:
>
> Server application started.
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> DEBUG org.jooq.impl.AbstractQuery - Executing query          : select
> distribucalc.job.id, distribucalc.job.jobtype_id from distribucalc.job where
> (distribucalc.job.status = 'EXECUTING' and BlaBlaBla = 0) limit 0, 1 for
> update
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> SelectQueryImpl [ select distribucalc.job.id, distribucalc.job.jobtype_id
> from distribucalc.job where (distribucalc.job.status = 'EXECUTING' and
> BlaBlaBla = 0) limit 0, 1 for update ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> SelectFieldList [ distribucalc.job.id, distribucalc.job.jobtype_id ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.job.id ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.job.jobtype_id ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : TableList [
> distribucalc.job ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : Job [
> distribucalc.job ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : Distribucalc
> [ distribucalc ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.job.id ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.job.jobtype_id ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.job.user_id ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.job.status ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.job.position ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.job.data_in ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.job.data_out ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.job.comment ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.job.active ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : JoinList [
> ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> ConditionProviderImpl [ (distribucalc.job.status = 'EXECUTING' and BlaBlaBla
> = 0) ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> CombinedCondition [ (distribucalc.job.status = 'EXECUTING' and BlaBlaBla =
> 0) ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> CompareCondition [ distribucalc.job.status = 'EXECUTING' ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.job.status ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : Constant [
> 'EXECUTING' ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> CompareCondition [ BlaBlaBla = 0 ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : FieldAlias [
> BlaBlaBla ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> AliasProviderImpl [ BlaBlaBla ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> SelectQueryAsField [ (select count(distribucalc.task.id) from
> distribucalc.task where (distribucalc.task.job_id = distribucalc.job.id and
> not(distribucalc.task.status in ('EXECUTING', 'QUEUED')))) ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> SelectQueryImpl [ select count(distribucalc.task.id) from distribucalc.task
> where (distribucalc.task.job_id = distribucalc.job.id and
> not(distribucalc.task.status in ('EXECUTING', 'QUEUED'))) ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> SelectFieldList [ count(distribucalc.task.id) ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : Count [
> count(distribucalc.task.id) ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.task.id ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : TableList [
> distribucalc.task ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : Task [
> distribucalc.task ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : Distribucalc
> [ distribucalc ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.task.id ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.task.job_id ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.task.status ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.task.user_id ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.task.last_updated ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.task.data_in ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.task.data_out ]
> 01:51:24 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.task.has_data_out ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.task.active ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : JoinList [
> ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> ConditionProviderImpl [ (distribucalc.task.job_id = distribucalc.job.id and
> not(distribucalc.task.status in ('EXECUTING', 'QUEUED'))) ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> CombinedCondition [ (distribucalc.task.job_id = distribucalc.job.id and
> not(distribucalc.task.status in ('EXECUTING', 'QUEUED'))) ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> CompareCondition [ distribucalc.task.job_id = distribucalc.job.id ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.task.job_id ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.job.id ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : NotCondition
> [ not(distribucalc.task.status in ('EXECUTING', 'QUEUED')) ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : InCondition
> [ distribucalc.task.status in ('EXECUTING', 'QUEUED') ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> TableFieldImpl [ distribucalc.task.status ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : Constant [
> 'EXECUTING' ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : Constant [
> 'QUEUED' ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : FieldList [
> ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> ConditionProviderImpl [ 1 = 1 ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> SortFieldList [  ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : Constant [ 0
> ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : FieldList [
> ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> ConditionProviderImpl [ 1 = 1 ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                :
> SortFieldList [  ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.AttachableImpl - Attaching                : Limit [
> limit 0, 1 ]
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.StopWatch - Parts attached           : Total: 679.489ms
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.StopWatch - SQL rendered             : Total: 680.529ms,
> +1.039ms
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.StopWatch - Statement prepared       : Total: 681.179ms,
> +0.65ms
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.JooqUtil - Binding variable 1       : EXECUTING (class
> ru.fractalizer.distribucalc.server.db.structure.enums.JobStatus)
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.JooqUtil - Binding variable 2       : EXECUTING (class
> ru.fractalizer.distribucalc.server.db.structure.enums.TaskStatus)
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> TRACE org.jooq.impl.JooqUtil - Binding variable 3       : QUEUED (class
> ru.fractalizer.distribucalc.server.db.structure.enums.TaskStatus)
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> DEBUG org.jooq.impl.StopWatch - Statement executed       : Total: 683.308ms,
> +2.128ms
> 01:51:25 [ru.fractalizer.distribucalc.server.runtime.TaskRequeuerThread]
> ERROR r.f.d.s.runtime.JobSummarizerThread - Cannot select EXECUTING jobs,
> that have no active tasks
> ru.fractalizer.distribucalc.server.core.OperationFailedException: Cannot
> select EXECUTING jobs, that have no active tasks
>     at
> ru.fractalizer.distribucalc.server.db.managers.JobManager.lockAndGetNextExecutingThatFinished(JobManager.java:112)
> ~[classes/:na]
>     at
> ru.fractalizer.distribucalc.server.runtime.JobSummarizerThread.run(JobSummarizerThread.java:44)
> ~[classes/:na]
>     at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> [na:1.6.0_25]
>     at
> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
> [na:1.6.0_25]
>     at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
> [na:1.6.0_25]
>     at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
> [na:1.6.0_25]
>     at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)
> [na:1.6.0_25]
>     at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)
> [na:1.6.0_25]
>     at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> [na:1.6.0_25]
>     at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> [na:1.6.0_25]
>     at java.lang.Thread.run(Thread.java:662) [na:1.6.0_25]
> Caused by: java.sql.SQLException: Parameter index out of range (3 > number
> of parameters, which is 2).
>     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
> ~[mysql-connector-java-5.1.16.jar:na]
>     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
> ~[mysql-connector-java-5.1.16.jar:na]
>     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
> ~[mysql-connector-java-5.1.16.jar:na]
>     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
> ~[mysql-connector-java-5.1.16.jar:na]
>     at
> com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3717)
> ~[mysql-connector-java-5.1.16.jar:na]
>     at
> com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3701)
> ~[mysql-connector-java-5.1.16.jar:na]
>     at
> com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:4541)
> ~[mysql-connector-java-5.1.16.jar:na]
>     at
> com.jolbox.bonecp.PreparedStatementHandle.setString(PreparedStatementHandle.java:1029)
> ~[bonecp-0.7.1-rc5.jar:0.7.1-rc5]
>     at org.jooq.impl.JooqUtil.bind(JooqUtil.java:273) ~[jooq-1.5.8.jar:na]
>     at org.jooq.impl.JooqUtil.bind(JooqUtil.java:289) ~[jooq-1.5.8.jar:na]
>     at org.jooq.impl.Constant.bind(Constant.java:96) ~[jooq-1.5.8.jar:na]
>     at org.jooq.impl.InCondition.bind(InCondition.java:83)
> ~[jooq-1.5.8.jar:na]
>     at org.jooq.impl.NotCondition.bind(NotCondition.java:76)
> ~[jooq-1.5.8.jar:na]
>     at org.jooq.impl.CombinedCondition.bind(CombinedCondition.java:108)
> ~[jooq-1.5.8.jar:na]
>     at
> org.jooq.impl.ConditionProviderImpl.bind(ConditionProviderImpl.java:169)
> ~[jooq-1.5.8.jar:na]
>     at
> org.jooq.impl.AbstractResultProviderSelectQuery.bind(AbstractResultProviderSelectQuery.java:130)
> ~[jooq-1.5.8.jar:na]
>     at org.jooq.impl.SelectQueryAsField.bind(SelectQueryAsField.java:76)
> ~[jooq-1.5.8.jar:na]
>     at org.jooq.impl.AliasProviderImpl.bind(AliasProviderImpl.java:116)
> ~[jooq-1.5.8.jar:na]
>     at org.jooq.impl.FieldAlias.bind(FieldAlias.java:79)
> ~[jooq-1.5.8.jar:na]
>     at org.jooq.impl.CompareCondition.bind(CompareCondition.java:76)
> ~[jooq-1.5.8.jar:na]
>     at org.jooq.impl.CombinedCondition.bind(CombinedCondition.java:108)
> ~[jooq-1.5.8.jar:na]
>     at
> org.jooq.impl.ConditionProviderImpl.bind(ConditionProviderImpl.java:169)
> ~[jooq-1.5.8.jar:na]
>     at
> org.jooq.impl.AbstractResultProviderSelectQuery.bind(AbstractResultProviderSelectQuery.java:130)
> ~[jooq-1.5.8.jar:na]
>     at org.jooq.impl.AbstractQueryPart.bind(AbstractQueryPart.java:164)
> ~[jooq-1.5.8.jar:na]
>     at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:87)
> ~[jooq-1.5.8.jar:na]
>     at
> org.jooq.impl.AbstractResultProviderQuery.fetch(AbstractResultProviderQuery.java:87)
> ~[jooq-1.5.8.jar:na]
>     at
> org.jooq.impl.AbstractResultProviderQuery.fetchOne(AbstractResultProviderQuery.java:158)
> ~[jooq-1.5.8.jar:na]
>     at
> org.jooq.impl.AbstractDelegatingResultProviderQuery.fetchOne(AbstractDelegatingResultProviderQuery.java:145)
> ~[jooq-1.5.8.jar:na]
>     at
> ru.fractalizer.distribucalc.server.db.managers.JobManager.lockAndGetNextExecutingThatFinished(JobManager.java:108)
> ~[classes/:na]
>     ... 10 common frames omitted
>
> Process finished with exit code 1
>
>

Reply via email to