I afraid so I cannot to fix this inconsistency (if this is inconsistency - the binary values are same) - the parameter of function is raw string with processed escape codes, and I have not any information about original escape sequences. When you enter octet value, and I show it as hex value, then there should be difference. Buy I have not information about your input (octet or hex). I have the original string of SQL identifier inside parser, executor, but I have not original string of function parameter inside function (not without pretty complex and long code).
Ok, agree
I am trying describe it in doc (I am sorry for my less level English) in new patch. Fixed duplicated oid too.
Edited a bit + fix some typos and remove unneeded headers, patch attached
Sorry, I can't find all corner-cases at once, but: SELECT parse_ident(E'"c".X XXXXXXXXXX'); ERROR: identifier contains disallowed characters: "\"c"
Error message wrongly points to the reason of error.
I forgot my original plan - show full original string. Now, complete original parameter is used as part of message everywhere. It is more consistent.
I cannot to reuse escape_json - it escape double quotes, and then the paremeter in message looks strange.
I hope so the messages are ok now. Few more regress tests added.