Re: Ad-hoc table type?

From: Mark Mielke <mark(at)mark(dot)mielke(dot)cc>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql(at)mohawksoft(dot)com, pgsql-hackers(at)postgresql(dot)org
Subject: Re: Ad-hoc table type?
Date: 2008-09-29 01:06:14
Message-ID: 48E02A06.6000605@mark.mielke.cc
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Not that I'm agreeing with the direction but just as a thinking experiment:

Tom Lane wrote:
> pgsql(at)mohawksoft(dot)com writes:
>
>> Being able to insert arbitrary named values, and extracting them
>> similarly, IMHO works "better" and more naturally than some external
>> aggregate system built on a column. I know it is a little "outside the
>> box" thinking, what do you think?
>>
>
> I'm failing to see the point. Allowing columns to spring into existence
> without any forethought seems to me to be all minuses and no pluses
> worth mentioning.
>
> * What if the column name is just a typo?
>

If it's a field in a data structure from a language such as Java, it's
not a typo.

> * What datatype should it have? ("Always varchar" is just lame.)
>

SQLite uses "always varchar" and it doesn't seem to be a problem. For
simpler numbers like "0", the text form can be more compact, and the
database may be portable across different hardware architectures.

> * Should it have an index? If so, should it be unique?
>

It might be cool for indexes to automatically appear as they become
beneficial (and removed as they become problematic). Unique is a
constraint which should be considered separate from whether it should be
an index or not. I don't know if it would be useful or not.

> * If you keep doing this, you'll soon find yourself reading out
> unbelievably wide tables (lots of columns), which won't be especially
> easy or efficient to process on either the backend or the client side.
> Plus you might run into the max-columns-per-tuple limit.
>

Introduce variable field-order for tuples? Only provide values if
non-null? :-)

> If you've expended enough thought to be sure that the column is not just
> a typo, ISTM that you can afford to enter an ALTER TABLE ADD COLUMN
> command to tell the database the results of your genius.
>
> I do see the point that switching from "member of an hstore column" to
> "real database column" is pretty painful, but I don't see that "allow
> columns to spring into existence" solves that in any meaningful way.
> Is there some other way we could address such conversions?
>
> BTW, I think it is (or should be) possible to create an index on
> hstore->'mycol', so at least one of the reasons why you should *need*
> to switch to a "real" database column seems bogus.
>

I find the Oracle nested table and data structure support enticing
although I do not have experience with it. It seems like it might be a
more mature implementation of hstore? If hstore had everything that was
required in terms of performance or flexibility, we wouldn't need fixed
columns at all?

But yes - I tend to agree that the object persistent layer can be hidden
away behind something like the Java object persistence model,
automatically doing alter table or providing a configured mapping from a
description file. This isn't a problem that needs to be solved at the
database layer.

Cheers,
mark

--
Mark Mielke <mark(at)mielke(dot)cc>

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2008-09-29 01:16:01 Re: [PATCHES] Infrastructure changes for recovery
Previous Message Simon Riggs 2008-09-29 00:54:19 Re: [PATCHES] Infrastructure changes for recovery