Re: how to prepare a create table statement

Поиск
Список
Период
Сортировка
От Michael Paquier
Тема Re: how to prepare a create table statement
Дата
Msg-id X/L0D8B8euaRuHBK@paquier.xyz
обсуждение исходный текст
Ответ на how to prepare a create table statement  (Alexander Mills <alexander.d.mills@gmail.com>)
Список pgsql-bugs
On Sun, Jan 03, 2021 at 08:46:19PM -0800, Alexander Mills wrote:
> I am trying to create 500 partitions using a loop:
>
> do $$
> declare
> counter integer := 0;
> begin
> while counter <= 500 loop
>     PREPARE create_table(int) AS
>     CREATE TABLE mbk_auth_method_$1 PARTITION OF mbk_auth_method FOR
> VALUES WITH (modulus 500, remainder $1);
>     EXECUTE create_table (counter);
>     counter := counter + 1;
> end loop;
> end$$;
>
> Anyone know how I can accomplish the above? Seems like this is a missing
> feature - to prepare a CREATE TABLE statement..

What if you simply used a FOR loop and EXECUTE with format()?  Say,
roughly, something like that:
FOR i IN 1..num_tables LOOP
  EXECUTE format('
    CREATE TABLE mbk_auth_method_%I PARTITION OF mbk_auth_method FOR
      VALUES WITH (modulus 500, remainder %I)', i, i);
END LOOP;
--
Michael

Вложения

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

Предыдущее
От: Pavel Stehule
Дата:
Сообщение: Re: how to prepare a create table statement
Следующее
От: PG Bug reporting form
Дата:
Сообщение: BUG #16803: create a table only one text/varchar column, storage options toast_tuple_target doesn't work