Discussion:
Postgresql 10 range partition
Garry Chen
2017-12-18 16:43:38 UTC
Permalink
HI All,
I would like to create a range partition table but my question is when create the partitions can I use for values less then? If LESS THEN is not passable what is my options? Here is what I try to do.

CREATE TABLE measurement (
city_id int not null,
MONTH_SID integer not null,
peaktemp int,
unitsales int
) PARTITION BY RANGE (MONTH_SID);
CREATE TABLE measurement_y2010 PARTITION OF measurement
FOR VALUES LESS THEN (201007)
NOTE: Any month_SID values less than 2010 July
CREATE TABLE measurement_y2011 PARTITION OF measurement
FOR VALUES LESS THEN (201107)
NOTE: Any month_SID values between 2010 July and 2011 June

.
Skip here

.
CREATE TABLE measurement_y2017 PARTITION OF measurement
FOR VALUES LESS THEN (201707)
NOTE: Any month_SID values between 2016 July and 2017 June
CREATE TABLE measurement_y2018 PARTITION OF measurement
FOR VALUES LESS THEN (201807)
NOTE: Any month_SID values between 2017 July and 2018 June

Thank you very much for your input,
Garry
David G. Johnston
2017-12-18 16:54:11 UTC
Permalink
Post by Garry Chen
HI All,
I would like to create a range partition table but my
question is when create the partitions can I use for values less then? If
LESS THEN is not passable what is my options?
​Do you have a specific confusion regarding the docs on this matter?

https://www.postgresql.org/docs/10/static/sql-createtable.html​

Short answer, though, is that each partition exactly describes the data
that belongs to it and does not require any other partition to exist nor
changes with the introduction of new partitions. Your "less than"
construct fails this constraint.

You write:
"""
​ FOR VALUES LESS THEN (201807)

NOTE: Any month_SID values between 2017 July and 2018 June
"""

Your English note and the pseudo-SQL you wrote do not agree - your English
spec is the more useful one and is implemented using RANGE

David J.

Loading...