On 05/11/2011 07:53 AM, Robert Haas wrote:
> On Tue, May 10, 2011 at 10:29 PM, Joseph Adams
> <joeyadams3.14159@gmail.com> wrote:
>> It seems to me a reasonable way to implement VARIANT would be to have
>> a data type called VARIANT that stores an OID of the inner type at the
>> beginning, followed by the binary data.
> That's likely to be how it gets implemented, but you seem to have
> missed the point of some of the discussion upthread: the big problem
> with that is that someone might type "DROP TYPE foo", and when they
> do, you need an efficient way to figure out whether foo is in use
> inside an instance of the variant type anywhere in the system. The
> devil is in the details...
>
Actually, I thought that was the variant (pun intended) Tom objected to,
and wanted declared variant types instead, precisely so we could know
where we'd need to look if a type was dropped. Using that you might
still use the type oid at the beginning of the field, but there are
other possibilities too (e.g. a single byte indicating which known
variant is in use).
cheers
andrew