I'm trying to insert test data to test postgresql partionning, using Postgresql 11.
Here is my table:
CREATE TABLE measurement (
city_id int not null,
logdate date not null,
peaktemp int,
unitsales int
);
Here is my statement to insert test data:
explain insert into measurement(
city_id,
logdate,
peaktemp,
unitsales
)
select
(
select (random() * 10000)::int + (generator*0) as city_id
),
(
select
*
from
(select * from generate_series('2006-01-01'::timestamp,
'2006-12-31'::timestamp,
'1 day')) as rng
order by
random()
limit 1
) as logdate,
(
select (random() * 10000)::int + (generator*0) as peaktemp
),
(
select (random() * 10000)::int + (generator*0) as unitsales
)
from generate_series(1, 1000) as generator
The problem is: when I run this statement, the select subquery which generates the field logdate seems to be cached and the table measurement contains a single value for the field logdate.
So, if I run the following query:
select distinct(logdate)
from measurement
I only get a single value:
2006-02-10
How can I prevent the caching side-effect?
order by random()+generatorto force the subselect to re-evaluated each time.