Hi. I noticed some code that seems the same as the nearby function
unpack_sql_state, and I wondered why it is not just calling it?
For example,
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index a3e1c59..d91ed98 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -3313,7 +3313,7 @@ send_message_to_frontend(ErrorData *edata)
const char *sev;
char tbuf[12];
int ssval;
- int i;
+ char *ssbuf;
/* 'N' (Notice) is for nonfatal conditions, 'E' is for errors */
pq_beginmessage(&msgbuf, (edata->elevel < ERROR) ? 'N' : 'E');
@@ -3326,15 +3326,10 @@ send_message_to_frontend(ErrorData *edata)
/* unpack MAKE_SQLSTATE code */
ssval = edata->sqlerrcode;
- for (i = 0; i < 5; i++)
- {
- tbuf[i] = PGUNSIXBIT(ssval);
- ssval >>= 6;
- }
- tbuf[i] = '\0';
+ ssbuf = unpack_sql_state(ssval);
pq_sendbyte(&msgbuf, PG_DIAG_SQLSTATE);
- err_sendstring(&msgbuf, tbuf);
+ err_sendstring(&msgbuf, ssbuf);
/* M field is required per protocol, so always send something */
pq_sendbyte(&msgbuf, PG_DIAG_MESSAGE_PRIMARY);
------
Kind Regards,
Peter Smith.
Fujitsu Australia