+#ifndef _PROTOCOL_H
+#define _PROTOCOL_H
+
+#define PQMSG_REQ_BIND 'B'
+#define PQMSG_REQ_CLOSE 'C'
+#define PQMSG_REQ_DESCRIBE 'D'
+#define PQMSG_REQ_EXECUTE 'E'
+#define PQMSG_REQ_FUNCTION_CALL 'F'
+#define PQMSG_REQ_FLUSH_DATA 'H'
+#define PQMSG_REQ_BACKEND_KEY_DATA 'K'
+#define PQMSG_REQ_PARSE 'P'
+#define PQMSG_REQ_AUTHENTICATION 'R'
+#define PQMSG_REQ_SYNC_DATA 'S'
+#define PQMSG_REQ_SIMPLE_QUERY 'Q'
+#define PQMSG_REQ_TERMINATE 'X'
+#define PQMSG_REQ_COPY_FAIL 'f'
+#define PQMSG_REQ_COPY_DONE 'c'
+#define PQMSG_REQ_COPY_DATA 'd'
+#define PQMSG_REQ_COPY_PROGRESS 'p'
+#define PQMSG_REQ_PREPARED 'S'
+#define PQMSG_REQ_PORTAL 'P'
+
+
+/*
+Responses
+*/
+#define PQMSG_RESP_PARSE_COMPLETE '1'
+#define PQMSG_RESP_BIND_COMPLETE '2'
+#define PQMSG_RESP_CLOSE_COMPLETE '3'
+#define PQMSG_RESP_NOTIFY 'A'
+#define PQMSG_RESP_COMMAND_COMPLETE 'C'
+#define PQMSG_RESP_DATA_ROW 'D'
+#define PQMSG_RESP_ERROR 'E'
+#define PQMSG_RESP_COPY_IN 'G'
+#define PQMSG_RESP_COPY_OUT 'H'
+#define PQMSG_RESP_EMPTY_QUERY 'I'
+#define PQMSG_RESP_NOTICE 'N'
+#define PQMSG_RESP_PARALLEL_PROGRESS 'P'
+#define PQMSG_RESP_FUNCTION_CALL 'V'
+#define PQMSG_RESP_PARAMETER_STATUS 'S'
+#define PQMSG_RESP_ROW_DESCRIPTION 'T'
+#define PQMSG_RESP_COPY_BOTH 'W'
+#define PQMSG_RESP_READY_FOR_QUERY 'Z'
+#define PQMSG_RESP_NO_DATA 'n'
+#define PQMSG_RESP_PASSWORD 'p'
+#define PQMSG_RESP_PORTAL_SUSPENDED 's'
+#define PQMSG_RESP_PARAMETER_DESCRIPTION 't'
+#define PQMSG_RESP_NEGOTIATE_PROTOCOL 'v'
+#endif
Was ordering-by-value intended here? If yes, then FYI both of those
groups of #defines are very nearly, but not quite, in that order.
------
Kind Regards,
Peter Smith.
Fujitsu Australia