Thread: casts for user defined types

casts for user defined types

From
Mary Anderson
Date:
Hi all,
    I am using inheritance of types in the following way on a ROLAP
schema to allow for extra dimensions to be used:

CREATE TABLE data (data_id  int4 SERIAL,
                    data_value double,
                    ... some dimensions);
CREATE TABLE extra_dimensions (xdimension varchar[],
                                xvalue varchar[])
              INHERITS FROM data;

Suppose I do
         INSERT INTO data (data_value) VALUES 1.1;

This gives me a row in the data table, but not in the extra_dimensions
table.  What do I do if I want to define an extra dimension for this row
at a later date?  It seems I should be able to do a CAST of some kind.

Thanks.

Mary Anderson

Re: casts for user defined types

From
Tom Lane
Date:
Mary Anderson <maryfran@demog.berkeley.edu> writes:
>     I am using inheritance of types in the following way on a ROLAP
> schema to allow for extra dimensions to be used:

> CREATE TABLE data (data_id  int4 SERIAL,
>                     data_value double,
>                     ... some dimensions);
> CREATE TABLE extra_dimensions (xdimension varchar[],
>                                 xvalue varchar[])
>               INHERITS FROM data;

> Suppose I do
>          INSERT INTO data (data_value) VALUES 1.1;

> This gives me a row in the data table, but not in the extra_dimensions
> table.  What do I do if I want to define an extra dimension for this row
> at a later date?  It seems I should be able to do a CAST of some kind.

You would have to delete the row from the parent table and insert the
same data (plus the added stuff) into the child table.

I think you should reconsider this schema.  extra_dimensions is not
really buying you anything: just put those columns in the main table
and allow them to default to NULL when not needed.

            regards, tom lane