From: | "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> |
---|---|
To: | Robert Haas <robertmhaas(at)gmail(dot)com> |
Cc: | Erik Wienhold <ewie(at)ewie(dot)name>, Hannu Krosing <hannuk(at)google(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: CREATE TABLE creates a composite type corresponding to the table row, which is and is not there |
Date: | 2024-05-16 15:47:05 |
Message-ID: | CAKFQuwZQ2+YAerqxo4zJ0mreowBqe9T0k0KPvAaqwgvFNGOR5A@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Wed, May 15, 2024 at 8:46 AM Robert Haas <robertmhaas(at)gmail(dot)com> wrote:
> On Thu, Apr 4, 2024 at 12:41 AM Erik Wienhold <ewie(at)ewie(dot)name> wrote:
> > Thanks, fixed in v4. Looks like American English prefers that comma and
> > it's also more common in our docs.
>
> Reviewing this patch:
>
> - Creates a <firstterm>typed table</firstterm>, which takes its
> - structure from the specified composite type (name optionally
> - schema-qualified). A typed table is tied to its type; for
> - example the table will be dropped if the type is dropped
> - (with <literal>DROP TYPE ... CASCADE</literal>).
> + Creates a <firstterm>typed table</firstterm>, which takes its
> structure
> + from an existing (name optionally schema-qualified) stand-alone
> composite
> + type (i.e., created using <xref linkend="sql-createtype"/>) though
> it
> + still produces a new composite type as well. The table will have
> + a dependency on the referenced type such that cascaded alter and
> drop
> + actions on the type will propagate to the table.
>
> It would be better if this diff didn't reflow the unchanged portions
> of the paragraph.
>
> I agree that it's a good idea to mention that the table must have been
> created using CREATE TYPE .. AS here, but I disagree with the rest of
> the rewording in this hunk. I think we could just add "creating using
> CREATE TYPE" to the end of the first sentence, with an xref, and leave
> the rest as it is.
> I don't see a reason to mention that the typed
> table also spawns a rowtype; that's just standard CREATE TABLE
> behavior and not really relevant here.
I figured it wouldn't be immediately obvious that the system would create a
second type with identical structure. Of course, in order for SELECT tbl
FROM tbl; to work it must indeed do so. I'm not married to pointing out
this dynamic explicitly though.
> And I don't understand what the
> rest of the rewording does for us.
>
It calls out the explicit behavior that the table's columns can change due
to actions on the underlying type. Mentioning this unique behavior seems
worth a sentence.
> <para>
> - When a typed table is created, then the data types of the
> - columns are determined by the underlying composite type and are
> - not specified by the <literal>CREATE TABLE</literal> command.
> + A typed table always has the same column names and data types as the
> + type it is derived from, and you cannot specify additional columns.
> But the <literal>CREATE TABLE</literal> command can add defaults
> - and constraints to the table and can specify storage parameters.
> + and constraints to the table, as well as specify storage parameters.
> </para>
>
> I don't see how this is better.
>
I'll agree this is more of a stylistic change, but mainly because the talk
about data types reasonably implies the other items the patch explicitly
mentions - names and additional columns.
> - errmsg("type %s is not a composite type",
> + errmsg("type %s is not a stand-alone composite type",
>
> I agree with Peter's complaint that people aren't going to understand
> what a stand-alone composite type means when they see the revised
> error message; to really help people, we're going to need to do better
> than this, I think.
>
>
We have a glossary.
That said, leave the wording as-is and add a conditional hint: The
composite type must not also be a table.
David J.
From | Date | Subject | |
---|---|---|---|
Next Message | Andrew Dunstan | 2024-05-16 15:50:20 | Re: First draft of PG 17 release notes |
Previous Message | Robert Haas | 2024-05-16 15:28:47 | Re: Add new protocol message to change GUCs for usage with future protocol-only GUCs |