[PATCH] psql: Display SQLSTATE macro name in verbose error reports - Mailing list pgsql-hackers

From Aaryan Parik
Subject [PATCH] psql: Display SQLSTATE macro name in verbose error reports
Date
Msg-id CAFAL27jsbbRkjj=zwudUU7vpmNHDgRCQXYEv_qx6D9uc7LLYvQ@mail.gmail.com
Whole thread
Responses Re: Allow a condition string in an injection point
List pgsql-hackers
Hi hackers,

Currently, when psql displays verbose error messages (\set VERBOSITY verbose or \errverbose), it prints the 5-character SQLSTATE code. However, developers often have to manually look up the corresponding C macro name (e.g. ERRCODE_SYNTAX_ERROR) in the source code when writing C extensions or dealing with internal backend code.

Attached is a small patch that improves the verbose error output in psql by appending the symbolic SQLSTATE macro name to the end of the error report.

Changes included in this patch:
1. Created a small Perl script in src/bin/psql to parse src/backend/utils/errcodes.txt and generate a C header (sqlstate_names.h) containing a mapping of SQLSTATE codes to their macro names.
2. Hooked the generation of this header into the psql Makefile and meson.build.
3. Updated psql's error reporting (ExecQueryAndProcessResults and exec_command_errverbose) to perform a lookup and append the macro name if VERBOSITY is verbose.

Example output:
ERROR:  42601: syntax error at or near "FRO"
LINE 1: SELECT * FRO;
                 ^
LOCATION:  scanner_yyerror, scan.l:1220
SQLSTATE name: ERRCODE_SYNTAX_ERROR

I believe this will be a handy quality-of-life improvement for developers. Looking forward to any feedback

Best regards,
Aaryan Parik
Attachment

pgsql-hackers by date:

Previous
From: Evgeny Kuzin
Date:
Subject: Re: [PATCH] libpq: try all addresses for a host before moving to next on target_session_attrs mismatch
Next
From: Julien Rouhaud
Date:
Subject: Re: Improve pg_stat_statements scalability