That seems to have fixed it! I was going down a path of grabbing the column's type from pg_attribute and trying to work from there, but was still having some of the same issues.
Thanks everyone else that replied as well!
-- Keith Fiske Database Administrator OmniTI Computer Consulting, Inc. http://www.keithf4.com
On Mon, Jan 6, 2014 at 10:42 AM, David Johnston <polobo@yahoo.com> wrote:
Adrian Klaver-3 wrote
>> >> >> In the real function I'm writing, the columns to be used in the string >> being created are pulled from a configuration table, so their types >> could be anything. So casting the quote_literal() calls is not really an >> option here. >> >> Any help would be appreciated. > > Cast before the quote_literal? > > Example: > > EXECUTE 'SELECT min('||v_col||'::text) as min, max('||v_col||'::text) as > max FROM test_temp' INTO v_record;
Right idea if the loss of original type in the min/max query is acceptable (which it should be). But the cast wants to be of the min/max RESULT not the min/max INPUT.
SELECT min(' || v_col || ')::text AS min_text, max(' || v_col || ')::text AS max_text FROM ...
Min/Max logic wants to be done by the rules for the original type, not according to string collation rules.