Thank you! This is exactly was I was looking for.

The range thing is good enough for me.

Pablo

On Wed, Apr 17, 2019 at 3:19 PM Adrian Klaver <adrian.kla...@aklaver.com>
wrote:

> On 4/17/19 2:21 PM, pabloa98 wrote:
> > I have a schema with a generated table with information coming from
> > batch processes.
> >
> > I would like to store in that table manually generated information.
> > Since those rows are inserted by hand, they will be lost when the table
> > will be reimported.
> >
> > So I was thinking of creating a partitioned table with a column "origin"
> > to select if the data is batch inserted or inserted by hand. Current
> > generated by batch sub-table will live in its schema.
> >
> > I want the other sub-table containing manually inserted information
> > living in another schema.
> >
> > Is this possible? Do I have to do something else (create some trigger,
> > or something)?
> >
> > Something like:
> >
> > CREATE TABLE*automatic.*measurement (
> >      city_id         int not null,
> >      logdate         date not null,
> >      peaktemp        int,
> >      unitsales       int
> >      origin          int
> > ) PARTITION BY RANGE (origin);
> >
> >
> > CREATE TABLE*automatic.*measurement_automatic PARTITION
> OF*automatic.*measurement
> >      FOR VALUES FROM (1) TO (1)
> >      PARTITION BY RANGE (origin);
> >
> > CREATE TABLE*manual.*measurement_manual PARTITION
> OF*automatic.*measurement
> >      FOR VALUES FROM (2) TO (2)
> >      PARTITION BY RANGE (origin);
> >
> >
>
> It would seem so(with a caveat):
>
> CREATE TABLE automatic.measurement (
>      city_id         int not null,
>
>
>
>      logdate         date not null,
>
>
>
>      peaktemp        int,
>      unitsales       int,
>      origin          int
> ) PARTITION BY RANGE (origin);
> CREATE TABLE
>
> CREATE TABLE automatic.measurement_automatic PARTITION OF
> automatic.measurement
> test-#     FOR VALUES FROM (1) TO (1)
> test-#     PARTITION BY RANGE (origin);
> ERROR:  empty range bound specified for partition "measurement_automatic"
> DETAIL:  Specified lower bound (1) is greater than or equal to upper
> bound (1).
>
> OOPS, so lets cheat:
>
> <NOTE> Removed PARTITION BY RANGE (origin) as it is redundant and causes
> problems later.
>
> CREATE TABLE automatic.measurement_automatic PARTITION OF
> automatic.measurement
>      FOR VALUES FROM (1) TO (2)
> CREATE TABLE
>
> CREATE TABLE manual.measurement_manual PARTITION OF automatic.measurement
>      FOR VALUES FROM (3) TO (4)
> CREATE TABLE
>
> The above assumes that manual origin will be in (1,2) and automatic in
> (3,4)
>
> insert into automatic.measurement values(1, '04/16/19', 25, 100, 1);
> INSERT 0 1
>
> insert into automatic.measurement values(1, '04/16/19', 25, 100, 3);
> INSERT 0 1
>
>   select * from automatic.measurement_automatic ;
>   city_id |  logdate   | peaktemp | unitsales | origin
> ---------+------------+----------+-----------+--------
>         1 | 2019-04-16 |       25 |       100 |      1
> (1 row)
>
> select * from manual.measurement_manual;
>   city_id |  logdate   | peaktemp | unitsales | origin
> ---------+------------+----------+-----------+--------
>         1 | 2019-04-16 |       25 |       100 |      3
> (1 row)
>
> --
> Adrian Klaver
> adrian.kla...@aklaver.com
>

Reply via email to