172 похожих чатов

Подскажите, пожалуйста есть таблица test со столюбцами id(serial) и ts

(timestamp NOT NULL), PK(id,ts)

Хочу сделать секционирование этой таблицы по столбцу ts, только по неделям.

создавал эту таблицу с помощью PARTITION BY RANGE(ts).

теперь делаю секцию:
CREATE TABLE test_2021_31 PARTITION OF test FOR VALUES FROM (my_to_char(ts) == '2021_31') TO (my_to_char(ts) = '2021_32');

Прилетает

cannot use column reference in partition bound expression, то есть нельзя использовать выражения при создании секций.
Как в таком случае мне грамотнее выполнить секционирование?

my_to_char() от входной даты возвращает год и день недели YYYY_W: ex. 2021_31

12 ответов

21 просмотр

> Хочу сделать секционирование этой таблицы по столбцу ts, только по неделям. Ну так и сделайте. Т.е. сразу задавайте константы в partition bound expressions. Можно использовать pg_partman для автоматизации этого, например.

Setplus-Mac Автор вопроса
Yaroslav Schekin
> Хочу сделать секционирование этой таблицы по сто...

> partition bound expressions под этим подразумевается использование CHECK при создании таблиц-секций?

Setplus Mac
> partition bound expressions под этим подразумев...

Я имел в виду — просто явно выполняйте: CREATE TABLE test_2021_31 PARTITION OF test FOR VALUES FROM ('2021-03-01') TO ('2021-03-07'); -- ну или какие там границы недели

Setplus-Mac Автор вопроса
Yaroslav Schekin
Я имел в виду — просто явно выполняйте: CREATE TAB...

А, ну так это не сработает, потому что надо границы недели вычислять

зачем в пк включать время?

Setplus Mac
А, ну так это не сработает, потому что надо границ...

Хмм... ну так вычисляйте, в чём проблема-то?

Setplus-Mac Автор вопроса
Yaroslav Schekin
Хмм... ну так вычисляйте, в чём проблема-то?

В том, что в явном виде выражения нельзя использовать при создании секций

Setplus-Mac Автор вопроса
D
зачем в пк включать время?

Иначе постгрес ругается, что нет констрейна на это поле

Setplus-Mac Автор вопроса
D
в смысле?! где ругается?

В прямом Был пк на id В таком случае, с пк на id, нельзя пометить таблицу как подлежащую секционированию ( по столбцу ts)

Setplus Mac
В том, что в явном виде выражения нельзя использов...

Ну так посылайте команду CREATE с заранее рассчитанными границами, я это имел в виду.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта