diff options
author | Hiroshi Inoue <inoue@tpf.co.jp> | 2002-06-12 02:27:44 +0000 |
---|---|---|
committer | Hiroshi Inoue <inoue@tpf.co.jp> | 2002-06-12 02:27:44 +0000 |
commit | 0484700cdaa55f35cd64953ae76fb42f76d17e90 (patch) | |
tree | 441d566afa861f9bbb7d9fe1fad524c15bfbae77 /src/interfaces/odbc/qresult.c | |
parent | 237fb9bbc678c008c9391708dd391b29ab3dcd3a (diff) |
1) Fix a bug *double error message*.
2) Fix a bug *passowrd prompt in case of md5 authentication*.
3) Improve the DSN setup dialog.
Diffstat (limited to 'src/interfaces/odbc/qresult.c')
-rw-r--r-- | src/interfaces/odbc/qresult.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/interfaces/odbc/qresult.c b/src/interfaces/odbc/qresult.c index b10408207ff..bb5f5ba246f 100644 --- a/src/interfaces/odbc/qresult.c +++ b/src/interfaces/odbc/qresult.c @@ -456,6 +456,7 @@ QR_next_tuple(QResultClass *self) char fetch[128]; QueryInfo qi; ConnInfo *ci = NULL; + BOOL msg_truncated; UDWORD abort_opt; if (fetch_count < num_backend_rows) @@ -665,9 +666,12 @@ QR_next_tuple(QResultClass *self) } case 'E': /* Error */ - SOCK_get_string(sock, msgbuffer, ERROR_MSG_LENGTH); - QR_set_message(self, msgbuffer); - self->status = PGRES_FATAL_ERROR; + msg_truncated = SOCK_get_string(sock, msgbuffer, + ERROR_MSG_LENGTH); + + /* Remove a newline */ + if (msgbuffer[0] != '\0' && msgbuffer[strlen(msgbuffer) - 1] == '\n') + msgbuffer[strlen(msgbuffer) - 1] = '\0'; abort_opt = 0; if (!strncmp(msgbuffer, "FATAL", 5)) @@ -679,14 +683,19 @@ QR_next_tuple(QResultClass *self) mylog("ERROR from backend in next_tuple: '%s'\n", msgbuffer); qlog("ERROR from backend in next_tuple: '%s'\n", msgbuffer); + while (msg_truncated) + msg_truncated = SOCK_get_string(sock, cmdbuffer, ERROR_MSG_LENGTH); return FALSE; case 'N': /* Notice */ - SOCK_get_string(sock, msgbuffer, ERROR_MSG_LENGTH); - QR_set_message(self, msgbuffer); - self->status = PGRES_NONFATAL_ERROR; + msg_truncated = SOCK_get_string(sock, cmdbuffer, ERROR_MSG_LENGTH); + QR_set_notice(self, cmdbuffer); + if (QR_command_successful(self)) + QR_set_status(self, PGRES_NONFATAL_ERROR); qlog("NOTICE from backend in next_tuple: '%s'\n", msgbuffer); + while (msg_truncated) + msg_truncated = SOCK_get_string(sock, cmdbuffer, ERROR_MSG_LENGTH); continue; default: /* this should only happen if the backend |