| 1553 | } |
| 1554 | |
| 1555 | static void |
| 1556 | GetTaskFeedback(PGresult *result, CronTask *task) |
| 1557 | { |
| 1558 | |
| 1559 | TimestampTz end_time; |
| 1560 | ExecStatusType executionStatus; |
| 1561 | |
| 1562 | end_time = GetCurrentTimestamp(); |
| 1563 | executionStatus = PQresultStatus(result); |
| 1564 | |
| 1565 | switch (executionStatus) |
| 1566 | { |
| 1567 | case PGRES_COMMAND_OK: |
| 1568 | { |
| 1569 | char *cmdStatus = PQcmdStatus(result); |
| 1570 | char *cmdTuples = PQcmdTuples(result); |
| 1571 | |
| 1572 | if (task_log_run) |
| 1573 | UpdateJobRunDetail(task->runId, NULL, GetCronStatus(CRON_STATUS_SUCCEEDED), cmdStatus, NULL, &end_time); |
| 1574 | |
| 1575 | if (task_log_statement) |
| 1576 | { |
| 1577 | ereport(LOG, (errmsg("cron job " INT64_FORMAT " COMMAND completed: %s %s", |
| 1578 | task->jobId, cmdStatus, cmdTuples))); |
| 1579 | } |
| 1580 | |
| 1581 | break; |
| 1582 | } |
| 1583 | |
| 1584 | case PGRES_BAD_RESPONSE: |
| 1585 | case PGRES_FATAL_ERROR: |
| 1586 | { |
| 1587 | task->errorMessage = strdup(PQresultErrorMessage(result)); |
| 1588 | task->freeErrorMessage = true; |
| 1589 | task->pollingStatus = 0; |
| 1590 | task->state = CRON_TASK_ERROR; |
| 1591 | |
| 1592 | if (task_log_run) |
| 1593 | UpdateJobRunDetail(task->runId, NULL, GetCronStatus(CRON_STATUS_FAILED), task->errorMessage, NULL, &end_time); |
| 1594 | |
| 1595 | PQclear(result); |
| 1596 | |
| 1597 | return; |
| 1598 | } |
| 1599 | |
| 1600 | case PGRES_COPY_IN: |
| 1601 | case PGRES_COPY_OUT: |
| 1602 | case PGRES_COPY_BOTH: |
| 1603 | { |
| 1604 | /* cannot handle COPY input/output */ |
| 1605 | task->errorMessage = "COPY not supported"; |
| 1606 | task->pollingStatus = 0; |
| 1607 | task->state = CRON_TASK_ERROR; |
| 1608 | |
| 1609 | if (task_log_run) |
| 1610 | UpdateJobRunDetail(task->runId, NULL, GetCronStatus(CRON_STATUS_FAILED), task->errorMessage, NULL, &end_time); |
| 1611 | |
| 1612 | PQclear(result); |
no test coverage detected