-- -- TASK_TRACKER_ASSIGN_TASK -- \set JobId 401010 \set SimpleTaskId 101101 \set RecoverableTaskId 801102 \set SimpleTaskTable lineitem_simple_task \set BadQueryString '\'SELECT COUNT(*) FROM bad_table_name\'' \set GoodQueryString '\'SELECT COUNT(*) FROM lineitem\'' \set SelectAll 'SELECT *' -- We assign two tasks to the task tracker. The first task simply executes. The -- recoverable task on the other hand repeatedly fails, and we sleep until the -- task tracker stops retrying the recoverable task. SELECT task_tracker_assign_task(:JobId, :SimpleTaskId, 'COPY (SELECT * FROM lineitem) TO ' '''base/pgsql_job_cache/job_401010/task_101101'''); task_tracker_assign_task --------------------------------------------------------------------- (1 row) SELECT task_tracker_assign_task(:JobId, :RecoverableTaskId, :BadQueryString); task_tracker_assign_task --------------------------------------------------------------------- (1 row) -- After assigning the two tasks, we wait for them to make progress. Note that -- these tasks get scheduled and run asynchronously, so if the sleep interval is -- not enough, the regression tests may fail on an overloaded box. SELECT pg_sleep(3.0); pg_sleep --------------------------------------------------------------------- (1 row) SELECT task_tracker_task_status(:JobId, :SimpleTaskId); task_tracker_task_status --------------------------------------------------------------------- 6 (1 row) SELECT task_tracker_task_status(:JobId, :RecoverableTaskId); task_tracker_task_status --------------------------------------------------------------------- 5 (1 row) COPY :SimpleTaskTable FROM 'base/pgsql_job_cache/job_401010/task_101101'; SELECT COUNT(*) FROM :SimpleTaskTable; count --------------------------------------------------------------------- 12000 (1 row) SELECT COUNT(*) AS diff_lhs FROM ( :SelectAll FROM :SimpleTaskTable EXCEPT ALL :SelectAll FROM lineitem ) diff; diff_lhs --------------------------------------------------------------------- 0 (1 row) SELECT COUNT(*) As diff_rhs FROM ( :SelectAll FROM lineitem EXCEPT ALL :SelectAll FROM :SimpleTaskTable ) diff; diff_rhs --------------------------------------------------------------------- 0 (1 row) -- We now reassign the recoverable task with a good query string. This updates -- the task's query string, and reschedules the updated task for execution. SELECT task_tracker_assign_task(:JobId, :RecoverableTaskId, :GoodQueryString); task_tracker_assign_task --------------------------------------------------------------------- (1 row) SELECT pg_sleep(2.0); pg_sleep --------------------------------------------------------------------- (1 row) SELECT task_tracker_task_status(:JobId, :RecoverableTaskId); task_tracker_task_status --------------------------------------------------------------------- 6 (1 row)