Patch for NOTICE messages to PQfn() from backend
От | Oliver Elphick |
---|---|
Тема | Patch for NOTICE messages to PQfn() from backend |
Дата | |
Msg-id | 199804281110.MAA23122@linda.lfix.co.uk обсуждение исходный текст |
Список | pgsql-hackers |
If PQfn() receives NOTICEs from the backend, it fails because there is no provision to deal with them. This patch (supplied by Anders Hammarquist <iko@netg.se> to me as Debian maintainer of postgresql) cures the problem: diff -cr postgresql-6.3.2.orig/src/interfaces/libpq/fe-exec.c postgresql-6.3.2/src/interfaces/libpq/fe-exec.c *** postgresql-6.3.2.orig/src/interfaces/libpq/fe-exec.c Mon Mar 16 08:0 0:26 1998 - --- postgresql-6.3.2/src/interfaces/libpq/fe-exec.c Tue Apr 28 06:47:22 199 8 *************** *** 1545,1556 **** } pqFlush(pfout, pfdebug); ! id = pqGetc(pfin, pfdebug); ! if (id != 'V') { if (id == 'E') { pqGets(conn->errorMessage, ERROR_MSG_LENGTH, pfin, pfde bug); } else sprintf(conn->errorMessage, - --- 1545,1570 ---- } pqFlush(pfout, pfdebug); ! while ((id = pqGetc(pfin, pfdebug)) != 'V') { if (id == 'E') { pqGets(conn->errorMessage, ERROR_MSG_LENGTH, pfin, pfde bug); + } + else if (id == 'N') + { + /* print notice and go back to processing return + values */ + if (pqGets(conn->errorMessage, ERROR_MSG_LENGTH, + pfin, pfdebug) == 1) + { + sprintf(conn->errorMessage, + "Notice return detected from backend, but " + "message cannot be read"); + } + else + fprintf(stderr, "%s\n", conn->errorMessage); + continue; } else sprintf(conn->errorMessage, -- Oliver Elphick Oliver.Elphick@lfix.co.uk Isle of Wight http://www.lfix.co.uk/oliver PGP key from public servers; key ID 32B8FAA1 ======================================== Come to me, all you who labour and are heavily laden, and I will give you rest. Take my yoke upon you, and learn from me; for I am meek and lowly in heart, and you shall find rest for your souls. For my yoke is easy and my burden is light. (Matthew 11: 28-30)
В списке pgsql-hackers по дате отправления: