@pgsql

Страница 342 из 1062
Igor
24.05.2017
06:33:33
Гм, доберусь до компа - попробую

Dmitry
24.05.2017
06:54:59
Позволю не согласиться, если в hba описана конструкция(почти дефолтная): host all all md5, то пользователь, не являющийся владельцем бд сможет просмотреть содержимое чужой бд и подключиться к ней
Вы путаете авторизацию с аутентификацией. Первое - это права на объекты - гранты, они в БД. Второе - это проверка что пользователь, это действительно он. В pg_hba указывается каким образом происходит эта проверка и откуда именно этот пользователь может прийти.

Darafei
24.05.2017
10:37:37
в тему цветных приглашений - кто-нибудь делал цветные значения в заселекченных таблицах?

Dmitry
24.05.2017
11:30:06
Вот же было

Google
Alexandr
24.05.2017
11:32:26
Коллеги, проголосуйте за доклады по PstgreSQL плиз https://devconf.ru/ru/offers/Storage

Darafei
24.05.2017
11:40:36
Вот конфиг )
это рамочки. я хочу маленькие значения красить в красный, а большие - в зелёный. как? :)

судя по всему надо патчить psql - https://www.postgresql.org/message-id/CAKFQuwbAEU-HxLJPQN%3DeEXo-jFdskx8KCWhiOz3vmNEB4CWYCQ%40mail.gmail.com

Andrey
24.05.2017
11:44:35
судя по всему надо патчить psql - https://www.postgresql.org/message-id/CAKFQuwbAEU-HxLJPQN%3DeEXo-jFdskx8KCWhiOz3vmNEB4CWYCQ%40mail.gmail.com
Ну почему же? Можно написать свой пейджер, который будет парсить вывод и подкрашивать как угодно.

Хотя даже в моём конфиге можно добавить ещё одно условие с регуляркой, чтобы подсвечивать большие значения, хоть это и немного костыльно.

Но у такого подхода есть один недостаток, - если все строки результата запроса помещаются в терминал, пейджер не вызывается :(

Darafei
24.05.2017
11:47:08
понимаешь, следующим шагом хочется рисовать в аски геометрии, как на telnet mapscii.me



потому что постгисовые 0103000020110F00000100000005000000D7A370FD007F474185EB5108A3455B419A9999F9077F4741EC51B8DEA4455B41C3F5289C097F47410AD7A350A3455B41000000A0027F4741A4703D7AA1455B41D7A370FD007F474185EB5108A3455B41 в селектах не очень помогают. и даже координаты в AsText тоже не то что бы читаемы :)

Dmitry
24.05.2017
11:49:22
он на базе prompt toolkit, наверняка можно поменять цвет любого элемента

Google
Alex
24.05.2017
11:54:38
Друзья есть аналог @@rowcount в postgresql ? Хочу проверить если дата записалась успешна, в sql server проверял так : insert into ... values ... if @@rowcount > 0 ...

Darafei
24.05.2017
11:54:57
в plpgsql?

Alex
24.05.2017
11:55:05
да

Darafei
24.05.2017
11:55:09
у тебя есть insert returning в любом раскладе

Alex
24.05.2017
11:55:49
спасибо

Darafei
24.05.2017
11:55:57
ну и GET DIAGNOSTICS nraffected = ROW_COUNT;

а почему вы решили, что это подходит под PostgreSQL?

nietzschebrod
24.05.2017
13:03:12
все красноглазые на одно лицо

Евгений
24.05.2017
14:25:58
Ребята, добрый вечер! Есть вопрос! На слейвах в последнее время стало высыпаться следующее: <-= SED FAIL: PostgreSQL required checkpoints occurs to frequently on db-slave2 on db-slave2 =-> По настройкам относительно чекпоинтов, выставлен таймаут на 5 мин и 0.7 из этого времени допускается запись на диск, ну и максимальный размер валов накопленных до 1 gb, я так понимаю слишком агрессивный чекпоинт? Таймаут увеличить до 6 мин и пройдет или нужно в глубь копать, кто сталкивался?

Петр
24.05.2017
14:29:39
ну так попробуйте увеличить checkpoint_timeout и max_wal_size

мониторьте и выставьте более-менее приемлимые значения

Kirill
25.05.2017
04:59:25
Может кто искал или реализовывал уже инструмент профилирования производительности хранимых функций с учетом зависимостей. Поделитесь опытом. Очень интересно. Пока обхожусь pg_stat_user_functions, но он не показывает у какой функции какие дочки.

Darafei
25.05.2017
05:06:12
подойдёт? https://bitbucket.org/openscg/plprofiler

Kirill
25.05.2017
05:16:49
Вообще репозиторий у ребят интересный, рекомендую заглянуть. Странно, что раньше на них не натыкался. Спасибо за ссылку @Komzpa

Александр
25.05.2017
06:11:38
Ht,znCgjhbv c xtkjdtrjv

Ребят привет

Спорим с человеком

Говорит что база данных реляционная не может состоять из одной таблицы...

Ilya
25.05.2017
06:13:04
Может.

Google
Denis
25.05.2017
06:13:16
Реляционная - от слова "relations ", что в терминологии SQL означает таблицы

Александр
25.05.2017
06:13:32
Объясни пожалуйста популярно, он прочитал вики, и говорит чято это отношение!

Denis
25.05.2017
06:13:36
Таблица есть - реляционная)

Александр
25.05.2017
06:13:38
Именно внутри между таблицами

А я говорю что нет!

Одна таблица - это и есть уже реляционная БД

Denis
25.05.2017
06:14:16
Короче, ты прав, он нет

Александр
25.05.2017
06:14:23
Спасибо коллеги

Darafei
25.05.2017
06:22:33
является ли реляционной пустая таблица без колонок...

Denis
25.05.2017
06:26:44
является ли реляционной пустая таблица без колонок...
Гораздо интереснее обдумать, как ее использовать.

Darafei
25.05.2017
06:27:40
ну, как минимум она возникает как промежуточная штука в where exists(select from table)

интересно, как в неё строку вставить gis=# create table nocolumn (); CREATE TABLE gis=# \d+ nocolumn Table "public.nocolumn" Column | Type | Modifiers | Storage | Stats target | Description --------+------+-----------+---------+--------------+------------- gis=# insert into nocolumn values (); ERROR: syntax error at or near ")" LINE 1: insert into nocolumn values (); ^

Denis
25.05.2017
06:30:33
ну, как минимум она возникает как промежуточная штука в where exists(select from table)
О, а можешь рассказать, как это работает под капотом? Where exists создаёт временную таблицу, когда находит результаты?

Darafei
25.05.2017
06:33:21
взаправдашние временные таблицы на читающих запросах, кажется, ничто не создаёт

но всегда можно представить себе рефакторинг, в результате которого подзапрос из exists() уедет сначала в CTE, а потом во временную таблицу в отдельный запрос :)

Denis
25.05.2017
06:36:31
Меня заинтересовало, что exists с твоих слов создаёт пустую таблицу:)

Darafei
25.05.2017
06:38:44
ну, запись (select from table) без колонок в select при пустой table синтаксически - подзапрос, возвращающий пустую таблицу без колонок

dmitriy
25.05.2017
06:38:49
Darafei
25.05.2017
06:39:40
а так да, оптимизатор всё перепишет до неузнаваемости :)

dmitriy
25.05.2017
06:39:59
Not exists обычно в Nested loop anti join превращается

Google
dmitriy
25.05.2017
06:41:21
Есть нода materialize, которая появляется с cte обычно, она результат в память копирует

Denis
25.05.2017
06:43:53
Я воспринял историю про where exists именно в духе, что exists создаёт таблицу как файл на файловой системе. Это мне показалось крайне нелогичным, вот и спросил. Очевидно, я не понял @Komzpa

Anatoliy
25.05.2017
06:46:27
ну, запись (select from table) без колонок в select при пустой table синтаксически - подзапрос, возвращающий пустую таблицу без колонок
там по-моему даже проще – считаются ряды и до первого попадания на ряд, если совпадений много.

Admin
ERROR: S client not available

Darafei
25.05.2017
06:52:16
gis=# explain (analyse, verbose, buffers) select 1 where exists(select where false); QUERY PLAN -------------------------------------------------------------------------------------------- Result (cost=0.01..0.02 rows=1 width=4) (actual time=0.002..0.002 rows=0 loops=1) Output: 1 One-Time Filter: $0 InitPlan 1 (returns $0) -> Result (cost=0.00..0.01 rows=1 width=0) (actual time=0.000..0.000 rows=0 loops=1) One-Time Filter: false Planning time: 0.047 ms Execution time: 0.010 ms (8 rows)

интересно, что exists() от таблицы с 0 строками всё ещё планирует скан по ней

gis=# explain (analyse, verbose, buffers) select 1 from nocolumn where exists(select from nocolumn where false); QUERY PLAN -------------------------------------------------------------------------------------------- Result (cost=0.00..39.10 rows=2910 width=4) (actual time=0.001..0.001 rows=0 loops=1) Output: 1 One-Time Filter: $0 InitPlan 1 (returns $0) -> Result (cost=0.00..0.00 rows=0 width=0) (actual time=0.000..0.000 rows=0 loops=1) One-Time Filter: false -> Seq Scan on public.nocolumn (cost=0.00..39.10 rows=2910 width=4) (never executed) Output: 1 Planning time: 0.042 ms Execution time: 0.016 ms (10 rows)

но если намекнуть ему, что там можно сделать join, то попытки скана уходят: gis=# explain (analyse, verbose, buffers) select 1 from nocolumn a where exists(select from nocolumn b where false and a.ctid=b.ctid); QUERY PLAN ------------------------------------------------------------------------------------ Result (cost=0.00..0.00 rows=0 width=4) (actual time=0.001..0.001 rows=0 loops=1) Output: 1 One-Time Filter: false Planning time: 0.034 ms Execution time: 0.009 ms (5 rows)

получается, постгрес никогда не распишет exists в самоуничтожающийся cross join, если нет связующих полей c чем-то снаружи подзапроса? set enable_seqscan to off; не делает на первом запросе второй план

Denis
25.05.2017
07:04:26
Ну по идее exists проверяет, возвращает ли подзапрос Хотя бы одну строку. Если соединение идёт по несуществующим столбцам, то очевидно хитрый постгрес даже не считает нужным что-то считывать и просто понимает, что там пусто

Darafei
25.05.2017
07:05:22
но про select where false он тоже знает, что там rows=0

столбец-то как раз существующий :)

ctid у всего, что на диске лежит в таблицах, есть

Denis
25.05.2017
07:08:46
ctid у всего, что на диске лежит в таблицах, есть
Но он служебный, хотя и у всех есть. Вообще тут нужны люди, знающие исходники

Можно открыть исходники планировщика и попробовать не сойти с ума)

Ildar
25.05.2017
07:09:55
Одна таблица - это и есть уже реляционная БД
я думаю, что правильнее говорить реляционная СУБД, т.е. такая, что реализует реляционную алгебру. Таблица в бд - это частный случай отношения. Это может быть, например, результат выполнения функции, другого подзапроса и др. Вот запрос, использующий реляционную алгебру без единой таблицы: select * from (values (1,2)) as x(a,b) join (select generate_series(1,5)) as y(c) on x.a = y.c;

Darafei
25.05.2017
08:46:40
INSERT INTO nocolumn SELECT FROM generate_series (1, 100);
INSERT INTO nocolumn SELECT; хватило, спасибо :)

Google
raksita
25.05.2017
08:47:28
INSERT INTO nocolumn SELECT; хватило, спасибо :)
ну да, было интересно потом SELECT сделать)

Darafei
25.05.2017
08:47:59
но в синтаксисе values, получается, пустого тапла не бывает?

raksita
25.05.2017
08:58:05
получается, что так

вырожденный SELECT существует, а VALUES нет

Denis
25.05.2017
09:01:17
А есть ли возможность вывести просто пустую строку? Ведь values просто последовательность строк "(1), (2)" превращает в таблицу. Может проблема не в values, а в том, что нельзя создать пустую строку через "()"?

raksita
25.05.2017
09:05:18
да, скорее всего, так

кортеж без полей можно выразить только через SELECT

Denis
25.05.2017
09:26:10
Я далеко от компьютера, можете проверить values jsonb_populate_record(null::nocolumn, '{}') ?

Айтуар
25.05.2017
09:27:18
А БД не упадёт? ?

Denis
25.05.2017
09:29:13
raksita
25.05.2017
09:32:36
Я далеко от компьютера, можете проверить values jsonb_populate_record(null::nocolumn, '{}') ?
SELECT * FROM (VALUES (jsonb_populate_record (null::notest, '{}'))) AS t; column1 --------- () (1 row)

Denis
25.05.2017
09:33:59
SELECT * FROM (VALUES (jsonb_populate_record (null::notest, '{}'))) AS t; column1 --------- () (1 row)
То есть с таким грязным хаком можно вставить через values в таблицу без колонок)

raksita
25.05.2017
09:34:28
нет, нельзя

Denis
25.05.2017
09:35:03
нет, нельзя
А на что ругается?

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