Re: [HACKERS] reload-through-the-top-parent switch the partition table - Mailing list pgsql-hackers
From | Rushabh Lathia |
---|---|
Subject | Re: [HACKERS] reload-through-the-top-parent switch the partition table |
Date | |
Msg-id | CAGPqQf04zrqNDGo06upPxz7YpwN3z8VX2BCfRa8wxQEu5hdLKw@mail.gmail.com Whole thread Raw |
In response to | Re: [HACKERS] reload-through-the-top-parent switch the partition table (Rajkumar Raghuwanshi <rajkumar.raghuwanshi@enterprisedb.com>) |
Responses |
Re: [HACKERS] reload-through-the-top-parent switch the partition table
Re: [HACKERS] reload-through-the-top-parent switch the partition table |
List | pgsql-hackers |
Thanks Rajkumar for testing and reporting this.
It seems like with we set the numParents and parents only for thedumpable objects (flagInhTables()). Current patch relies on the numParents
and parents to get the root partition TableInfo, but when --schema is been
specified - it doesn't load those information for the object which is not
dumpable.
Now one options is:
1) restrict the --load-via-partition-root to be used with
the --schema or may be some other options - where we restrict the
objects.
Consider this, partition root is in schema 'a' and the partition table is in
schema 'b', if someone specify the --schema b with --load-via-partition-root,
schema 'b', if someone specify the --schema b with --load-via-partition-root,
I think we should not do "INSERT INTO a.tab" to load the data (because
user specified --schema b). 2) fix flagInhTables() to load the numParents and the parents information
for the partition table (can be checked using ispartition), irrespective of
whether object is dumpable is true or not.
May be something like:
@@ -322,7 +322,11 @@ flagInhTables(TableInfo *tblinfo, int numTables,
/* Don't bother computing anything for non-target tables, either */
if (!tblinfo[i].dobj.dump)
+ {
+ if (tblinfo[i].ispartition)
+ findParentsByOid(&tblinfo[i], inhinfo, numInherits);
continue;
+ }
@@ -322,7 +322,11 @@ flagInhTables(TableInfo *tblinfo, int numTables,
/* Don't bother computing anything for non-target tables, either */
if (!tblinfo[i].dobj.dump)
+ {
+ if (tblinfo[i].ispartition)
+ findParentsByOid(&tblinfo[i], inhinfo, numInherits);
continue;
+ }
I am still looking into this, meanwhile any inputs are welcome.
On Tue, Aug 8, 2017 at 4:10 PM, Rajkumar Raghuwanshi <rajkumar.raghuwanshi@enterprisedb.com> wrote:
[edb@localhost bin]$ ./pg_dump -d postgres --schema=a -f d1.dump -Fp--trying to take pg_dump--create below test dataHi Rushabh,While testing latest v2 patch, I got a crash when using --load-via-partition-root with --schema options. Below are steps to reproduce.
create schema a;
create schema b;
create schema c;
create table t1 (a int,b text) partition by list(a);
create table a.t1_p1 partition of t1 FOR VALUES in (1,2,3,4) partition by list(a);
create table b.t1_p1_p1 partition of a.t1_p1 FOR VALUES in (1,2);
create table c.t1_p1_p2 partition of a.t1_p1 FOR VALUES in (3,4);
create table b.t1_p2 partition of t1 FOR VALUES in (5,6,7,8) partition by list(a);
create table a.t1_p2_p1 partition of b.t1_p2 FOR VALUES in (5,6);
create table t1_p2_p2 partition of b.t1_p2 FOR VALUES in (7,8);
insert into t1 values (8,'t1');
insert into a.t1_p1 values (2,'a.t1_p1');
insert into b.t1_p1_p1 values (1,'b.t1_p1_p1');
insert into c.t1_p1_p2 values (3,'c.t1_p1_p2');
insert into b.t1_p2 values (6,'b.t1_p2');
insert into a.t1_p2_p1 values (5,'a.t1_p2_p1');
insert into t1_p2_p2 values (7,'t1_p2_p1');
insert into t1 values (4 ,'t1');[edb@localhost bin]$ ./pg_dump -d postgres --load-via-partition-root -f d2.dump -Fp
[edb@localhost bin]$ ./pg_dump -d postgres --load-via-partition-root --schema=a -f d3.dump -Fp
pg_dump: pg_dump.c:2063: getRootTableInfo: Assertion `tbinfo->numParents == 1' failed.
Aborted (core dumped)Thanks & Regards,Rajkumar RaghuwanshiQMG, EnterpriseDB CorporationOn Fri, Aug 4, 2017 at 3:01 PM, Rushabh Lathia <rushabh.lathia@gmail.com> wrote:--as pg_dumpall.and also added the documentation for the new switch into pg_dump as wellHere is an update patch, now renamed the switch to --load-via-partition-rootOn Fri, Aug 4, 2017 at 7:13 AM, Amit Langote <Langote_Amit_f8@lab.ntt.co.jp> wrote: On 2017/08/04 1:08, David G. Johnston wrote:
> On Thu, Aug 3, 2017 at 8:53 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
>> Robert Haas <robertmhaas@gmail.com> writes:
>>> So maybe --load-via-partition-root if nobody likes my previous
>>> suggestion of --partition-data-via-root ?
>>
>> WFM.
>>
>
> +1
+1.
Thanks,
AmitThanks,Rushabh Lathia
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
--
Rushabh Lathia
pgsql-hackers by date: