Re: regclass and format('%I') - Mailing list pgsql-general

From David G. Johnston
Subject Re: regclass and format('%I')
Date
Msg-id CAKFQuwaJ-h=STiSka6M7Rnk46g_1Tm5Z=BQxEA9iFXF5UQHmOg@mail.gmail.com
Whole thread Raw
In response to Re: regclass and format('%I')  (Jason Dusek <jason.dusek@gmail.com>)
Responses Re: regclass and format('%I')  (Jason Dusek <jason.dusek@gmail.com>)
List pgsql-general
On Saturday, March 14, 2015, Jason Dusek <jason.dusek@gmail.com> wrote:
It honestly seems far more reasonable to me that %s and %I should do
the exact same thing with regclass. My reasoning is as follows:

‘%I’ formats a something such that it is a valid identifier,

regclass is already a valid identifier,

therefore, do nothing.

Another line of reasoning:

If you format with ‘%s’ you are saying: I don’t care whether it’s a
valid identifier or literal or whatever, just put the string there,

but when we sub a regclass into a string, we want it to be a valid identifier,

therefore we should write ‘%I’ when subbing it, so as not to confuse
our readers,

therefore ‘%I’ should do nothing.


I agree with the theory but adding type specific logic to format is going to be difficult.  The first thing the system does is convert all of the inputs to text.  Inside format() everything is text and so it has no way to know that the type was regclass and should not be quoted again.

David J.

pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: regclass and format('%I')
Next
From: Seref Arikan
Date:
Subject: is there a relationship between indexes and temporary file creation?