Re: Proposal: variant of regclass - Mailing list pgsql-hackers

From Marti Raudsepp
Subject Re: Proposal: variant of regclass
Date
Msg-id CABRT9RDwj3NPYkECNdL_F-a3z_aOzE6O6oA-aqr_E9O6gpeqcg@mail.gmail.com
Whole thread Raw
In response to Re: Proposal: variant of regclass  (Yugo Nagata <nagata@sraoss.co.jp>)
List pgsql-hackers
On Wed, Jan 22, 2014 at 1:44 PM, Yugo Nagata <nagata@sraoss.co.jp> wrote:
> On Wed, 22 Jan 2014 20:04:12 +0900 (JST)
> Tatsuo Ishii <ishii@postgresql.org> wrote:
> parseTypeString() is called by some other functions and I avoided
> influences of modifying the definition on them, since this should
> raise errors in most cases. This is same reason for other *MissingOk
> functions in parse_type.c.
>
> Is it better to write definitions of these function and all there callers?

Yes, for parseTypeString certainly. There have been many refactorings
like that in the past and all of them use this pattern.

typenameTypeIdAndMod is less clear since the code paths differ so
much, maybe keep 2 versions (merging back to 1 function is OK too, but
in any case you don't need 3).

typenameTypeIdAndModMissingOk(...)
{   Type tup = LookupTypeName(pstate, typeName, typmod_p);   if (tup == NULL || !((Form_pg_type)
GETSTRUCT(tup))->typisdefined)      *typeid_p = InvalidOid;   else       *typeid_p = HeapTupleGetOid(tup);
 
   if (tup)       ReleaseSysCache(tup);
}
typenameTypeIdAndMod(...)
{   Type tup = typenameType(pstate, typeName, typmod_p);   *typeid_p = HeapTupleGetOid(tup);   ReleaseSysCache(tup);
}

----

Also, there's no need for "else" here:   if (raiseError)       ereport(ERROR, ...);   else       return InvalidOid;

Regards,
Marti



pgsql-hackers by date:

Previous
From: Peter Geoghegan
Date:
Subject: Re: Add min and max execute statement time in pg_stat_statement
Next
From: Claudio Freire
Date:
Subject: Re: [Lsf-pc] Linux kernel impact on PostgreSQL performance