Mark
Mark

Reputation: 2432

How to find out the length of a varchar parameter in a postgres function

I'm trying to find out the parameter length for a varchar parameter passed into a postgres function.

The SQL I have just now has no values in the character_maximum_length column where I would have expected to find this value

SELECT * 
FROM information_schema.parameters 
WHERE specific_schema='public' 
   AND specific_name  like 'foo' 
ORDER BY ordinal_position

Upvotes: 1

Views: 1245

Answers (1)

araqnid
araqnid

Reputation: 133462

I don't think postgresql keeps this information. If I create function foo(varchar(100)) returns boolean ... and then dump the schema with pg_dump, I find:

CREATE FUNCTION foo(character varying) RETURNS boolean
    LANGUAGE sql
    AS $$select true$$;

The '100' specification is gone. And passing a 150-character string to foo(varchar) is not trapped or anything. By contrast, if I create a domain based on varchar(100) and define the function in terms of that, then passing an overlong string is trapped.

Upvotes: 2

Related Questions