[MASSMAIL]Timestamp conversion Error in dynamic sql script

Поиск
Список
Период
Сортировка
От sud
Тема [MASSMAIL]Timestamp conversion Error in dynamic sql script
Дата
Msg-id CAD=mzVVHrGgJ08SH8pECjTAH1EKE26ZdL26OjW3mcXhM-AZi2A@mail.gmail.com
обсуждение исходный текст
Ответы Re: Timestamp conversion Error in dynamic sql script  (Laurenz Albe <laurenz.albe@cybertec.at>)
Re: Timestamp conversion Error in dynamic sql script  (Erik Wienhold <ewie@ewie.name>)
Список pgsql-general
Hello ,
I am trying to create a block which will create a few partitions dynamically and also insert ~1million rows into each of those partitions. Not able to figure out why it's giving below error during timezone conversion while defining the partitions even though I used the typecast? 

CREATE TABLE parent_table (
id Numeric,
col1 TEXT,
col2 TEXT,
partition_key TIMESTAMP,
primary key (partition_key, id)
)
PARTITION BY RANGE (partition_key);

**********

DO $$
DECLARE
start_date TIMESTAMP := '2022-01-01';
begin
FOR i IN 0..10 LOOP

EXECUTE format('
    CREATE TABLE parent_table_%s (
        CHECK (partition_key >= DATE ''%s'' AND partition_key < DATE ''%s'' )
    ) INHERITS (parent_table);',
    TO_CHAR(start_date + i, 'YYYY_MM_DD'),
    TO_CHAR(start_date + i, 'YYYY-MM-DD')::timestamp ,
    TO_CHAR(start_date + i + INTERVAL '1 day', 'YYYY-MM-DD')::timestamp  
);
EXECUTE format('
ALTER TABLE parent_table ATTACH PARTITION parent_table_%s
FOR VALUES FROM (''%s'') TO (''%s'');',
TO_CHAR(start_date + i, 'YYYY_MM_DD'),
TO_CHAR(start_date + i, 'YYYY-MM-DD')::timestamp,
TO_CHAR(start_date + i + INTERVAL '1 day', 'YYYY-MM-DD') ::timestamp
);

END LOOP;

  FOR i IN 0..10 LOOP
    EXECUTE format('
        INSERT INTO parent_table_%s (id,col1, col2,  partition_key)
        SELECT
            generate_series(1, 1000000),
            md5(random()::text),
            md5(random()::text),
            TIMESTAMP ''%s'' + INTERVAL ''%s days''
        FROM generate_series(1, 1000000);',
        TO_CHAR(start_date + i, 'YYYY_MM_DD'),
        start_date,
        i
    );
END LOOP;
END $$;

***********
SQL Error [42883]: ERROR: operator does not exist: timestamp without time zone + integer
Hint: No operator matches the given name and argument types. You might need to add explicit type casts.
Where: PL/pgSQL function inline_code_block line 7 at EXECUTE

Error position:

В списке pgsql-general по дате отправления:

Предыдущее
От: sud
Дата:
Сообщение: Re: Not able to purge partition
Следующее
От: Laurenz Albe
Дата:
Сообщение: Re: Timestamp conversion Error in dynamic sql script