Size: a a a

pgsql – PostgreSQL

2021 January 28

AK

Andy Korg in pgsql – PostgreSQL
Я Акула Туруруру
что-то не вижу здесь этой инфы
Это лишь подсказка откуда начинать копать, объяснение зачем collation и т.п.
источник

ЯТ

Я Акула Туруруру... in pgsql – PostgreSQL
Andy Korg
Это лишь подсказка откуда начинать копать, объяснение зачем collation и т.п.
так я знаю, зачем мне collation, вопрос-то про другое
источник

AK

Andy Korg in pgsql – PostgreSQL
Я Акула Туруруру
так я знаю, зачем мне collation, вопрос-то про другое
хмм, тогда мы друг друга не поняли, сори
источник

P

Protey in pgsql – PostgreSQL
Всем доброго дня! Выкладываю новый shell скрипт (pg_database_information.sh), показывающий единой лентой актуальный статус работы группы серверов PostgreSQL. Скрипт позволяет быстро выяснить чем заняты сервера и увидеть точные данные для логической репликации и внешних таблиц. Отображается время на сервере и лаг времени, имя хоста и IP адрес, версия PostgreSQL и статус (Master/Replica), контрольные суммы данных. Также отображается статистика по базам данных, ожиданиям и блокировкам, статусах архивации и репликации. Для логической репликации выводится информация о публикациях и подписках в целевых базах данных. Выводится информация о внешних (foreign) серверах, сопоставленных с ними пользователями и таблицами. Отображаются заблокированные сессии и дерево с их блокировками, а также список долго выполняемых запросов. При возникновении активностей в PostgreSQL выводится прогресс операций: vacuum, vacuum full или cluster, index creation, analyze, pg_basebackup.
https://github.com/Azmodey/pg_dba_scripts
источник

P

Protey in pgsql – PostgreSQL
Вот как выглядят результаты работы pg_database_information.sh
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Я Акула Туруруру
Если сменить collation у столбца запросом:

ALTER TABLE test_tbl
   ALTER login SET DATA TYPE varchar(255) COLLATE "C"


Что это повлечёт за собой? Обновление каждой строки в БД или просто изменение метаданных таблицы? Нужно ли будет перестраивать индекс по этому столбцу полностью?
Изменение метаданных и перестроение индексов по этому полю, по идее.
источник

⌬C

⌬ Richard Cooper in pgsql – PostgreSQL
ребята, помогите составить запрос умоляю)))))

табличка transactions:
user_id uuid
transaction_date date
payment_interval interval
вот это поле говорит на сколько времени транзакция опалчена

нужно выгрузить список пользователей, у которых между датами from_date и to_date закончилась оплата транзакции (transaction_date + payment_interval) и других транзакций от того же пользователя до to_date не было (transaction_date > to_date)

как правильно составить запрос? я накидал пока вот только такое, но это точно не законченый запрос

SELECT *
from transactions
WHERE
(transactions.date + (transactions.payment_interval)::interval
) < to_date
AND
(transactions.date + (transactions.payment_interval)::interval
) > from_date
AND -- вот тут что-то нужно дописать, но не понимаю как это сделать
источник

h

horpto in pgsql – PostgreSQL
Ну для начала даже в заготовке нема from_date
источник

⌬C

⌬ Richard Cooper in pgsql – PostgreSQL
horpto
Ну для начала даже в заготовке нема from_date
поправил, сори

но все равно это не решает проблему)) я не знаю как из полученного результата вырезать те, у которых user_id совпадает с теми транзакциями, где date < to_date and date+payment_interval > to_date
источник

Д

Дмитрий in pgsql – PostgreSQL
Попробуй для начала наверное с подзапросом.
источник

⌬C

⌬ Richard Cooper in pgsql – PostgreSQL
Дмитрий
Попробуй для начала наверное с подзапросом.
то есть что-нибудь типа select ... where user_id not in (select ...) ?
источник

Д

Дмитрий in pgsql – PostgreSQL
Ну да.
источник

Д

Дмитрий in pgsql – PostgreSQL
А там уже и оптимизируешь.
источник

⌬C

⌬ Richard Cooper in pgsql – PostgreSQL
Дмитрий
Ну да.
можно попробовать, звучит здраво

просто может есть какой-нибудь способ как с distinct уникальные взять, может просто это типовая задача, а я об этом не знаю
источник

⌬C

⌬ Richard Cooper in pgsql – PostgreSQL
ну она выглядит если честно супер типовой, как мне кажется
источник

Д

Дмитрий in pgsql – PostgreSQL
⌬ Richard Cooper
ну она выглядит если честно супер типовой, как мне кажется
А как это определить?))
источник

⌬C

⌬ Richard Cooper in pgsql – PostgreSQL
Дмитрий
А как это определить?))
по наитию)))

ну типа найти что-то не повторяющееся наверное часто встречается
источник

Д

Дмитрий in pgsql – PostgreSQL
⌬ Richard Cooper
по наитию)))

ну типа найти что-то не повторяющееся наверное часто встречается
Ну тогда посмотри паттерны про дубликаты например, может поможет.
Типа:
SELECT id ...
FROM t
GROUP BY id
HAVING count(id) > 1
или типа:
ROW_NUMBER() OVER(PARTITION BY column1, column2 ORDER BY id asc) AS Row ну и т.д.
источник

t

trane254 in pgsql – PostgreSQL
Привет, подскажите каким образом можно сделать nullable foreign key?
У меня есть таблица Elements с полем StateId, которая должна ссылаться на таблицу States с отношением один-к-одному. Но эти данные не всегда могут быть, так как их вычисляет другой сервис, спустя какое-то время после того, как таблица Elements заполнится.
На тестовый INSERT падает с ошибкой `ERROR: ОШИБКА:  значение NULL в столбце "StateID" отношения "Elements" нарушает ограничение NOT NULL
DETAIL:  Ошибочная строка содержит (0, 0, wall, 1234, null, null).
SQL state: 23502`
Ничего толкового не нагуглить не удалось
источник

Д

Дмитрий in pgsql – PostgreSQL
trane254
Привет, подскажите каким образом можно сделать nullable foreign key?
У меня есть таблица Elements с полем StateId, которая должна ссылаться на таблицу States с отношением один-к-одному. Но эти данные не всегда могут быть, так как их вычисляет другой сервис, спустя какое-то время после того, как таблица Elements заполнится.
На тестовый INSERT падает с ошибкой `ERROR: ОШИБКА:  значение NULL в столбце "StateID" отношения "Elements" нарушает ограничение NOT NULL
DETAIL:  Ошибочная строка содержит (0, 0, wall, 1234, null, null).
SQL state: 23502`
Ничего толкового не нагуглить не удалось
источник