diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/backend/pgxc/pool/pgxcnode.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/backend/pgxc/pool/pgxcnode.c b/src/backend/pgxc/pool/pgxcnode.c index bef6c95b4c..d9c6a56742 100644 --- a/src/backend/pgxc/pool/pgxcnode.c +++ b/src/backend/pgxc/pool/pgxcnode.c @@ -2885,9 +2885,18 @@ pgxc_node_set_query(PGXCNodeHandle *handle, const char *set_query) continue; } msgtype = get_message(handle, &msglen, &msg); + /* - * Ignore any response except ReadyForQuery, it allows to go on. + * Ignore any response except ErrorResponse and ReadyForQuery */ + + if (msgtype == 'E') /* ErrorResponse */ + { + handle->error = pstrdup(msg); + handle->state = DN_CONNECTION_STATE_ERROR_FATAL; + break; + } + if (msgtype == 'Z') /* ReadyForQuery */ { handle->transaction_status = msg[0]; |
