On Wed, May 15, 2024 at 8:46 AM Robert Haas <robertmh...@gmail.com> wrote:

> On Thu, Apr 4, 2024 at 12:41 AM Erik Wienhold <e...@ewie.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.

Reply via email to