$ git clone https://github.com/postgrespro/pg_pathman
$ cd pg_pathman
$ export PATH=/home/digoal/pgsql9.6rc1/bin:$PATH
$ make USE_PGXS=1
$ make install USE_PGXS=1
$ vi $PGDATA/postgresql.conf
shared_preload_libraries='pg_pathman'
$ pg_ctl restart -m fast
$ psql
postgres=# create extension pg_pathman;
CREATE EXTENSION
$ psql
postgres=# drop table test;
postgres=# create table test(id int primary key, info text, crt_time timestamptz);
CREATE TABLE
postgres=#
postgres=# select create_range_partitions('test'::regclass, 'id', 1, 20000000, 100, false); create_range_partitions
------------------------- 100
(1 row)
postgres=# select disable_parent('test'::regclass); disable_parent
----------------
(1 row)
reconnect
postgres=# explain select * from test where id=1; QUERY PLAN
--------------------------------------------------------------------------------- Append (cost=0.15..2.17 rows=1 width=44) -> Index Scan using test_1_pkey on test_1 (cost=0.15..2.17 rows=1 width=44) Index Cond: (id = 1)
(3 rows)
insert into test(id,info,crt_time) values(:id, md5(random()::text), now()) on conflict (id) do update set info=excluded.info,crt_time=excluded.crt_time;
--
公益是一辈子的事,I'm Digoal,Just Do It.
At 2016-09-27 21:04:34, "Tom Lane" <tgl@sss.pgh.pa.us> wrote:
>digoal@126.com writes:
>> postgres=# \d test
>> Table "postgres.test"
>> Column | Type | Modifiers
>> ----------+-----------------------------+-----------
>> id | integer | not null
>> info | text |
>> crt_time | timestamp without time zone |
>> Indexes:
>> "test_pkey" PRIMARY KEY, btree (id)
>> Number of child tables: 100 (Use \d+ to list them.)
>
>> postgres=# insert into test(id,info,crt_time) values(1, md5(random()::text),
>> now()) on conflict (id) do update set
>> info=excluded.info,crt_time=excluded.crt_time;
>> ERROR: XX000: unexpected failure to find arbiter index
>> LOCATION: ExecCheckIndexConstraints, execIndexing.c:594
>
>Can't reproduce that on the basis of the given information.
>
> regards, tom lane