On Thu, Feb 09, 2006 at 09:33:35AM -0500, Tom Lane wrote:
> Martijn van Oosterhout <kleptog@svana.org> writes:
> > Actually, I'm think this whole automatic creation of a shell-type a bit
> > silly anyway. Why not simply solve the problem directly like so:
>
> > CREATE TYPE complex AS SHELL;
>
> One of the unwritten consequences of the way that it works now is that
> only superusers can "clutter the catalogs" with shell types. Not sure
> how important that is, but I suspect that the system is not all that
> robust against use of shell types where a completed type is expected.
> You'd have to go over a lot of code with a fine-tooth comb before
> putting this ability into the hands of ordinary users, else you'd be
> creating loopholes for DOS attacks (or worse).
Would it be reasonable to set this up so you can only create a shell
type within an explicit transaction and that you are required to define
the type completely before commit. That would minimize the exposure to
incomplete types. I don't know if the structure exists to support this
(dynamic on-commit trigger).
> Having said that, I agree that this seems conceptually cleaner, though
> I'm not sure we could ever get rid of the old way because of backward
> compatibility issues.
True. But this way allows us to remove the restriction on only allow C
functions for type input/output.
Have a nice day,
--
Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/
> Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a
> tool for doing 5% of the work and then sitting around waiting for someone
> else to do the other 95% so you can sue them.