@pgsql

Страница 429 из 1062
Аггей
12.08.2017
05:22:44
Бывали "подвисания" при которых интерфейс не отзывался до перезакрытия страницы (создания новой сессии)

В чате тут есть с 10ок моих бывших колег - если займетесь рефакторингом - думаю они накидают проблем

Mike Chuguniy
12.08.2017
05:30:07
Да уж... "Свежак" свежачный - 14.04.2013

Вероятность того, что не взлетит на свежем пыхпых-е весьма высока.

Google
Yuriy
13.08.2017
04:37:45
о/

Mike Chuguniy
13.08.2017
05:00:04
Всё уже украдено до нас: https://github.com/j2s/phppgadmin Ну и ваще поиск по гитхабу выдаёт ссылок вагон и маленькую тележку.

Konstantin
13.08.2017
20:16:36
выжимка с сайта по грядущему postgresql 10: * Rename write-ahead log directory pg_xlog to pg_wal, and rename transaction status directory pg_clog to pg_xact (Michael Paquier): Users have occasionally thought that these directories contained only inessential log files, and proceeded to remove write-ahead log files or transaction status files manually, causing irrecoverable data loss. These name changes are intended to discourage such errors in future. * Rename SQL functions, tools, and options that reference “xlog” to “wal” (Robert Haas): For example, pg_switch_xlog() becomes pg_switch_wal(), pg_receivexlog becomes pg_receivewal, and —xlogdir becomes —waldir. This is for consistency with the change of the pg_xlog directory name; in general, the “xlog” terminology is no longer used in any user-facing places. — давно пора, а то столько прохладных побасенок в интернетах ходит "удалил pg_xlog, база чота не отвечает" * Increase the size of the default DH parameters used for OpenSSL ephemeral DH ciphers to 2048 bits (Heikki Linnakangas): The size of the compiled-in DH parameters has been increased from 1024 to 2048 bits, making DH key exchange more resistant to brute-force attacks. However, some old SSL implementations, notably some revisions of Java Runtime Environment version 6, will not accept DH parameters longer than 1024 bits, and hence will not be able to connect over SSL. If it's necessary to support such old clients, you can use custom 1024-bit DH parameters instead of the compiled-in defaults. See ssl_dh_params_file. — и это тоже давно пора сделать * Hash indexes must be rebuilt after pg_upgrade-ing from any previous major PostgreSQL version (Mithun Cy, Robert Haas): Major hash index improvements necessitated this requirement. pg_upgrade will create a script to assist with this. — проверял референс create index для dev-версии, теперь индексы по hash будут несколько более юзабельны (по крайней мере, обещают быть таковыми) камрады, ждём 10ку?

Александр
14.08.2017
00:33:25
Здравствуйте, может кто-то помочь решить задачу по PosgreSQL?

Yuriy
14.08.2017
00:54:52
Subb98
14.08.2017
04:41:16
Привет. Есть ли способ отобразить все связи определённого столбца с другими столбцами в БД? Чтобы принять решение об изменении таблицы, нужно узнать, насколько конкретный столбец будет безопасно затрагивать.

Artyem
14.08.2017
07:00:03
Привет. Есть ли способ отобразить все связи определённого столбца с другими столбцами в БД? Чтобы принять решение об изменении таблицы, нужно узнать, насколько конкретный столбец будет безопасно затрагивать.
SELECT tc.constraint_name, tc.table_name, kcu.column_name, ccu.table_name AS foreign_table_name, ccu.column_name AS foreign_column_name FROM information_schema.table_constraints AS tc JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='table' AND ccu.column_name = 'column';но я обычно в datagrip выделяю колонку и "Find usage" и смотрю результаты

Александр
14.08.2017
08:43:45
Кто-то может... зависит от задачи.
Вот описание задачи https://www.evernote.com/l/AA0s8uZKRmVPQYYYud27wV9D6mDJfClDjbI

пробовал такое select ( select concat(actor.first_name, ' ', actor.last_name) from actor join film_actor on film_actor.actor_id = actor.actor_id join film on film_actor.film_id = film.film_id group by film.title, actor.actor_id, actor.first_name, actor.last_name order by actor.actor_id limit 1 ) as first_actor, ( select concat(actor.first_name, ' ', actor.last_name) from actor join film_actor on film_actor.actor_id = actor.actor_id join film on film_actor.film_id = film.film_id group by film.title, actor.actor_id, actor.first_name, actor.last_name order by actor.actor_id limit 1 offset 1 ) as second_actor, film.title from film но выдает только для одного фильма, не знаю как сделать линк

ele
14.08.2017
09:43:59
Всем привет. Помогите пожалуйсто Как востановить удалённые таблицы с wal логов ? Ситуация такова что sql бекапа нет.

Google
Roman
14.08.2017
09:46:48
привет у меня есть таблица с одним полем, которое является уникальным индексом. как мне добавить в него выборку значений, чтобы ошибки добавления уже существующих записей игнорировалось?

Vadim
14.08.2017
09:54:45
Всем привет. Помогите пожалуйсто Как востановить удалённые таблицы с wal логов ? Ситуация такова что sql бекапа нет.
https://postgrespro.ru/education/courses/DBA1 - тут можно найти как делать Физическое резервирование и его востановление. По крайне мере мне как то это помогло

Andrey
14.08.2017
09:57:32
привет у меня есть таблица с одним полем, которое является уникальным индексом. как мне добавить в него выборку значений, чтобы ошибки добавления уже существующих записей игнорировалось?
Вариантов много. Если среди вставляемых строк нет дубликатов, то можно INSERT ... SELECT ... WHERE NOT EXISTS (SELECT ...). Если есть, то UPSERT, ну и цикл в анонимном блоке или хранимке.

Рома
14.08.2017
10:05:33
Кстати насчет UPSERT'а, это ведь реализуется как INSERT INTO ... ON CONFLICT ... Есть ли возможность или может будет в 10-ке возвращать из такого запроса id ничего не апдейтя? Если нет - вставить и вернуть id, если есть - вернуть id

я делал так: INSERT INTO table(columns) VALUES (values) ON CONFLICT (columns) DO UPDATE SET id = table.id RETURNING id

Александр
14.08.2017
11:19:27
with film_actors_subquery as ( select array_agg(concat(actor.first_name, ' ', actor.last_name)) as actors_names, film_actor.film_id from actor join film_actor on film_actor.actor_id = actor.actor_id group by film_actor.film_id ) select film_actors_subquery.actors_names[1] as first_actor, film_actors_subquery.actors_names[2] as second_actor, film.title from film join film_actors_subquery on film_actors_subquery.film_id = film.film_id;

Перечитал условия задачи, понял что не то делаю. Мне нудно по сути аггрегировать всех актеров в массив по каждому фильму, а потом как-то найти часто пересекающийся вместе. Например

select array_agg(actor_id) as actors, film_id from film_actor group by film_actor.film_id order by film_id выдаст (CSV) "actors","film_id" "{1,2,3}",1 "{4,5,6}",2 "{7,8,9}",3 "{8,10}",4 "{10,11,12,13,14}",5 "{10,12,13,14}",6 "{10,12,13,14}",7

а мне нужно получить такое (чаще всего вместе присутствуют в одном масиве) "{10,12,13,14}",5 "{10,12,13,14}",6 "{10,12,13,14}",7

Yura
14.08.2017
12:50:25
select act1.first_name||' '||act1.last_name as first_actor, act2.first_name||' '||act2.last_name as last_name, film.title from (select fa1.actor_id as aid1, fa2.actor_id as aid2, array_agg(film_id) as film_ids from film_actor as fa1 join film_actor as fa2 using (film_id) where fa1.actor_id < fa2.actor_id group by 1, 2 order by array_length(film_ids, 1) desc limit 1) as most_wanted join actor as act1 on aid1 = act1.actor_id join actor as act2 on aid2 = act2.actor_id join film on film.film_id = ANY(film_ids);

Не запускал, правда.

Alex
14.08.2017
12:52:49
что писалось с трудом, должно пониматься с трудом :)

Yura
14.08.2017
12:53:13
Так лучше?

Рома
14.08.2017
12:57:22
По-моему, получение массива и film_id ведет в тупик Я бы начал так: SELECT ARRAY[actors.actor_id, second_actors.actor_id] as arr, films.film_id FROM actors INNER JOIN actors second_actors USING film_id -- точно не помню синтаксис USING теперь есть результат с [первым актерем, вторым] и фильм группируем по массиву, считаем фильмы, сортируем по фильмам и как-то так задача решена в конце я пришел к тому, о чем написал в начале ?

Yura
14.08.2017
14:05:18
Но ты не исходную задачу решил.

Svyatoslav
14.08.2017
14:20:58
Коллеги, какие тулзы используете для аналитики и визуализации данных из pgsql?

Google
Vadim
14.08.2017
14:25:04
https://www.2ndquadrant.com/en/resources/2uda/

Айтуар
14.08.2017
14:30:47
Всем привет. Можете подсказать как мне снять метрику - кол-во транзакций в секунду?

Можно из лога достать?

Andrey
14.08.2017
14:32:36
Можно из лога достать?
Логируются запросы. Запрос не всегда = транзакция.

Если все транзакции явные, можно считать COMMIT и ROLLBACK.

Айтуар
14.08.2017
14:34:56
Игорь
14.08.2017
14:36:44
Всем привет. Можете подсказать как мне снять метрику - кол-во транзакций в секунду?
select datname,xact_commit from pg_stat_database; select datname,xact_rollback from pg_stat_database;

Айтуар
14.08.2017
14:40:23
select datname,xact_commit from pg_stat_database; select datname,xact_rollback from pg_stat_database;
О здорово! А это за какой период статистика?

Andrey
14.08.2017
14:40:38
По счетчику xid еще можно.

Игорь
14.08.2017
14:40:47
С момента сброса вроде

если нужно кол-во в сек, то просто rate в своем мониторинге

Айтуар
14.08.2017
14:43:35
Спасибо. Понял.

Александр
14.08.2017
18:00:01
Вот описание задачи https://www.evernote.com/l/AA0s8uZKRmVPQYYYud27wV9D6mDJfClDjbI
Большое спасибо @funny_falcon за помощь, решение вот такое, кому интересно: select act1.first_name||' '||act1.last_name as first_actor, act2.first_name||' '||act2.last_name as second_actor, film.title from ( select fa1.actor_id as aid1, fa2.actor_id as aid2, array_agg(fa1.film_id) as film_ids from film_actor as fa1 join film_actor as fa2 using (film_id) where fa1.actor_id < fa2.actor_id group by 1, 2 order by array_length(array_agg(film_id), 1) desc limit 1 ) as most_wanted join actor as act1 on aid1 = act1.actor_id join actor as act2 on aid2 = act2.actor_id join film on film.film_id = any(film_ids);

Рома
14.08.2017
18:22:06
Интересно! а что такое group by 1, 2?

Darafei
14.08.2017
18:30:28
по первой и второй колонке

Yury
15.08.2017
07:25:47
блин, поему нельзя написать: SELECT posts.* FROM posts ... GROUP BY posts.* ...

* должна же работать как и в SELECT части

Admin
ERROR: S client not available

Yura
15.08.2017
07:26:37
А group by posts (без звездочки) не заработает?

Yury
15.08.2017
07:27:04
неа

Google
Yury
15.08.2017
07:27:07
он не понимает

Timur
15.08.2017
07:27:18
Дык по колонке же

Чо вы несёте

Yury
15.08.2017
07:27:23
т.е. он думает что posts.id нету в group by

Timur
15.08.2017
07:28:28
Чо вы несёте
А, извините, перепутал чат (чёртовы ники катаканой), но энивей, группировать можно по какому-либо столбу, а не по таблице целиком же

Yury
15.08.2017
07:29:03
ну так я хочу групировать по всем столбцам таблицы :)

логично же было бы если * тут так же как и в select отработало

Yura
15.08.2017
07:29:52
Как извращение, можно и в select без звездочки. Но придется в подзапрос вложить: select (post).*, ... from (select posts as post, ... from posts ... group by post)

Yury
15.08.2017
07:30:30
надо глянуть BISON, что там, разрешено

Yura
15.08.2017
07:32:45
Другой вопрос: а не проще группировку по post_id сделать в подзапросе, а потом сджойнить с posts?

Yury
15.08.2017
07:34:09
не, мне нужна группировка по всей этой таблице

Mike Chuguniy
15.08.2017
07:34:11
Когда я вижу "SELECT * ...", мне становится грустно, печально тоскливо. Ибо сталкивался в своей практике с ситуациями, когда из-за такой конструкции сурово так осложнялось обновление приложений.

Mike Chuguniy
15.08.2017
07:35:47
тут с указанием таблицы
Можно подумать, на эту таблицу никогда не понадобится ALTER, сопряжённый с добавлением/удалением столбцов.

Yury
15.08.2017
07:36:55
group_by_list: group_by_item { $$ = list_make1($1); } | group_by_list ',' group_by_item { $$ = lappend($1,$3); } ; грустно как

ясно, * дерёгает данные на этапе исполнения почти, а проверка на group by в select чуть ли не на уровне парсера

но самое интересное - posts.* это валидное условие для group by

кажется если отключить проверку то не умрёт

Google
Kirill
15.08.2017
07:51:10
Distinct умеет работает со *. Но вообще, кажется делается что-то очень нехорошее. Еще группировка не со всеми типами умеет работать, например по json полю выдаст ошибку.

Erushenko
15.08.2017
15:20:12
что-то не пойму как так, то??? http://joxi.ru/L214k8vH60QKNm

если должно буть +03:00

Страница 429 из 1062