9404
Чат русскоязычного сообщества PostgreSQL, здесь мы обсуждаем технические вопросы, для поиска работы и предложения вакансий есть группа https://t.me/pgsqljobs For English discussion visit https://t.me/pg_sql
Ну, казалось бы, сделайте тогда столбец user_id внутри таблицы folders.
- Если он NULL, то владелец — приложение;
- Если он заполнен, то владелец — юзер (причем не абы какой, а тот, который указан).
Но, тем не менее, "владельцем" может быть ваш "app", а не юзер иногда, верно?
А возможно ли состояние, когда владельца нет, или всегда кто-то есть?
UPDATE sub_locality
SET polygon = public.ST_GeomFromGeoJSON(
jsonb_build_object(
'type', 'Polygon',
'coordinates', coordinates
)::text
)
WHERE coordinates IS NOT NULL;
Caused by: liquibase.exception.DatabaseException: ERROR: The 'coordinates' in GeoJSON are not sufficiently nested [Failed SQL: (0) UPDATE sub_locality
SET polygon = public.ST_GeomFromGeoJSON(
jsonb_build_object(
'type', 'Polygon',
'coordinates', coordinates
)::text
)
WHERE coordinates IS NOT NULL]
И да, 35-38 активных — это скорее мало.
Но! Не отменяет того, что результаты по скорости не бьются.
Например, psql -c 'SELECT * FROM pg_stat_activity\gx' >>activity.log каждые 10 секунд.
Читать полностью…
Локи тоже были строк 20. Каунтерами не смотрел
Читать полностью…
Как там, большая ли проблема опять тэст запустить?
Читать полностью…
Всем привет)
Вопрос такого плана, с двух инстансов постгреса в контейнерах, можно настроить репликацию логическую в один контейнер на другом сервере? Судя по доке вроде можно, решил уточнить
Коллеги, при обновление базы
sudo -iu postgres /usr/pgsql-17/bin/pg_upgrade --old-datadir "/data/postgres" --new-datadir "/data/postgres-17/" --old-bindir "/usr/pgsql-14/bin/" --new-bindir "/usr/pgsql-17/bin/"
pg_restore: creating ACL "pg_catalog.FUNCTION "close_lb"("line", "box")"
pg_restore: while PROCESSING TOC:
pg_restore: from TOC entry 15431; 0 0 ACL FUNCTION "close_lb"("line", "box") postgres
pg_restore: error: could not execute query: ERROR: function pg_catalog.close_lb(line, box) does not exist
Command was: GRANT ALL ON FUNCTION "pg_catalog"."close_lb"("line", "box") TO "cits_user";
всем привет!
подскажите плиз, пытаюсь подружить Postgres Pro Standart (15 ver) с pgBackRest 2.54.2
получаю сообщение по ошибке архивации валов на s3:
ERROR: [046]: unexpected control version = 1347421460 and catalog version = 202209071
HINT: is this version of PostgreSQL supported?
Всем привет, подскажите как установить pg_amqp для postgres-17 Oracle linux-9, пробовал
git clone https://github.com/omniti-labs/pg_amqp.git
cd pg_amqp
PATH=/usr/pgsql-17/bin:$PATH make install
src/pg_amqp.c:99:10: warning: 5 enumeration values not handled in switch: 'XACT_EVENT_PARALLEL_COMMIT', 'XACT_EVENT_PARALLEL_ABORT', 'XACT_EVENT_PRE_COMMIT'... [-Wswitch]
99 | switch(event) {
| ^~~~~
src/pg_amqp.c:140:21: error: parameter 'broker_id' was not declared, defaults to 'int'; ISO C99 and later do not support implicit int [-Wimplicit-int]
140 | local_amqp_get_a_bs(broker_id) {
| ^
src/pg_amqp.c:140:1: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C23 [-Wdeprecated-non-prototype]
140 | local_amqp_get_a_bs(broker_id) {
| ^
src/pg_amqp.c:152:19: error: parameter 'broker_id' was not declared, defaults to 'int'; ISO C99 and later do not support implicit int [-Wimplicit-int]
152 | local_amqp_get_bs(broker_id) {
| ^
src/pg_amqp.c:152:1: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C23 [-Wdeprecated-non-prototype]
152 | local_amqp_get_bs(broker_id) {
| ^
src/pg_amqp.c:239:23: error: parameter 'broker_id' was not declared, defaults to 'int'; ISO C99 and later do not support implicit int [-Wimplicit-int]
239 | local_amqp_disconnect(broker_id) {
| ^
src/pg_amqp.c:239:1: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C23 [-Wdeprecated-non-prototype]
239 | local_amqp_disconnect(broker_id) {
| ^
4 warnings and 3 errors generated.
make: *** [/usr/pgsql-17/lib/pgxs/src/makefiles/../../src/Makefile.global:1085: src/pg_amqp.bc] Error 1
Странно вот это выражение звучит. Будто про INTERVAL забыли.
смотри , папки могут добавлять users , так и само приложение(владелец) чтобы понимать какие папки отнотсятся к самому приложению а какие к users
Читать полностью…
не друг , я же сказал забудь про выше указанное сообщение где app_id было , app таблица это само приложение тобишь папки созданные владельцем приложения , есть только один app
Читать полностью…
Как-то не совсем понятно, но вы можете в таблицу folders добавить два столбца: user_id и app_id, накинуть CHECK чтобы было заполнено только что-то из этого одно (или оба не заполнены). Есть ещё вариант с polymorphic associations — но он дрянной, т.к. там перестают работать FK, лучше не будем его даже обсуждать.
Это если "не охота" делать две доп. таблицы связей, и в случае если максимум один владелец.
Ребят , забудьте про выше указанный вопрос , я там кое каике вещи напутал!
Есть users и app тобишь само приложение , и каждому user и app(он у нас один) может принадлежать много folders , но конечно же folder для app не может принадлежать user и наоборот! Какой вариант выбрать ? Певый вариант нравится тем , что не создается доп таблицы. Пожалуйста , если выберите какой либо вариант объясните мне почему вы выбрали именно этот вариант , чтобы я понимал
Первый вариант!Читать полностью…
CREATE TABLE folders (
id SERIAL PRIMARY KEY,
folder_name VARCHAR(322) NOT NULL,
description VARCHAR (500),
parent_folder_id INT REFERENCES folders(id),
user_id INT REFERENCES users(id),
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
Второй вариант!
CREATE TABLE folders (
id SERIAL PRIMARY KEY,
folder_name VARCHAR(322) NOT NULL,
description VARCHAR (500),
parent_folder_id INT REFERENCES folders(id),
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
CREATE TABLE app_folders (
id SERIAL PRIMARY KEY,
folder_id INT UNIQUE REFERENCES folders(id) NOT NULL,
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
CREATE TABLE user_folders (
id SERIAL PRIMARY KEY,
folder_id INT UNIQUE REFERENCES folders(id) NOT NULL,
user_id INT REFERENCES users(id) NOT NULL,
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
И ещё в latencytop, если процессы постгреса открыть, то там +-70% времени выполенения запроса на ожидание освобождения блокировок тратится.
Читать полностью…
А куда именно смотреть и как правильно "снимать"?
Смотрел активные через count. Цифра была в среднем 35-38 где-то так.
А, то есть это чисто со стороны приложэния.
Тогда всё равно при следующем тэсте нало бы снять несколько раз (пару десятков раз) pg_stat_activity
PS Да и pg_locks заодно. Они мелкие обе, не должно быть большой проблемой.
я б попробовал убрать права на эту ф-цию до апгрейда.
вон тут у народа что-то похожее
https://postgrespro.com/list/thread-id/2634400
Знаете, ставить расширение 6-летней свежести на PostgreSQL 17 наверное, и правда плохая идея (и вообще ставить то, что не поддерживается авторами хотя бы для какой-то версии).
Рекомендация: забыть про это расширение (несмотря на то, что сторонние разработчики предлагали фикс подобной проблемы).
Не бывает смещения часового пояса больше чем часов в сутках, interval тут чрезмерен (16 байт против 8 байт, в т.ч.).
upd.: Хотя, я проворонил отрицательные смещения, в этом смысле interval подойдет лучше, да (иначе придется нормировать по минимальному часовому поясу UTC-12:00, что уже в тип time не влезает в худшем случае; ну, или отдельно хранить знак в виде bool).
Ок, тогда в целом подойдет костыль выше, да.
Правда я рекомендовал бы вам заменить тип столбца offset на, напр., time (подразумевая, что это смещение от GMT/UTC), раз уж нужно знать какой у пользователя часовой пояс. Потом бы просто можно было б делать аля:
SELECT created_on + offset;