Jason Dusek <jason.dusek@xxxxxxxxx> writes: > It honestly seems far more reasonable to me that %s and %I should do > the exact same thing with regclass. You're mistaken. The operation of format() is first to convert the non-format arguments to text strings, using the output functions for their data types, and then to further process those text strings according to the format specifiers: %s -- no additional processing, just insert the string as-is. %I -- apply double-quoting transformation to create a valid SQL identifier. %L -- apply single-quoting transformation to create a valid SQL literal. In the case of regclass, the output string is already double-quoted as necessary, so applying %I to it produces a doubly double-quoted string which is almost certainly not what you want. But it's not format()'s job to be smarter than the user. If it tried to avoid an extra pass of double quoting, it would get some cases wrong, potentially creating security holes. regards, tom lane -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general