Size: a a a

pgsql – PostgreSQL

2021 January 19

V

Vadim in pgsql – PostgreSQL
а большие страницы производительность улучшают серьезно? стоит включать
источник

IC

Igor Chizhov in pgsql – PostgreSQL
Подскажите, есть ли возможность запускать функцию с более высокими правами, чем текущий пользователь?
SET LOCAL ROLE, SET SESSION AUTHORIZATION не работают - permission denied.
источник

VF

Vlad Faust in pgsql – PostgreSQL
Привет. Пожалуйста, направьте на путь истинный. Я бы хотел, чтобы из этих двух квери всегда возвращался один или ноль результатов, в зависимости от того, какое условие сработало раньше (приоритет у первого селекта). Заметьте другое направление ордеринга (ASC vs DESC). Спасибо!

    (
     SELECT "file_last_modified_at"
     FROM "hars"
     WHERE "status" IN ('unparsed', 'parsing_in_progress')
     ORDER BY "file_last_modified_at" ASC
     LIMIT 1
   ) UNION (
     SELECT "file_last_modified_at"
     FROM "hars"
     WHERE "status" IN ('parsing_succeeded', 'parsing_failed', 'skipped')
     ORDER BY "file_last_modified_at" DESC
     LIMIT 1
   )
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Vadim
а большие страницы производительность улучшают серьезно? стоит включать
Зависит от нагрузки. Просто если не они, то будут THP, а на них в linux вечно жаловались (но я слышал, что недавно [опять] всё исправили ;) ). К тому же, зачем память просто так терять?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Igor Chizhov
Подскажите, есть ли возможность запускать функцию с более высокими правами, чем текущий пользователь?
SET LOCAL ROLE, SET SESSION AUTHORIZATION не работают - permission denied.
SECURITY DEFINER функции. Сразу см. "Writing SECURITY DEFINER Functions Safely" в https://www.postgresql.org/docs/current/sql-createfunction.html , а то более высокие права могут "вдруг" получить и не только те пользователи, для которых это предназначалось. ;)
источник

IC

Igor Chizhov in pgsql – PostgreSQL
Yaroslav Schekin
SECURITY DEFINER функции. Сразу см. "Writing SECURITY DEFINER Functions Safely" в https://www.postgresql.org/docs/current/sql-createfunction.html , а то более высокие права могут "вдруг" получить и не только те пользователи, для которых это предназначалось. ;)
Спасибо, всё получилось!
источник

am

a m in pgsql – PostgreSQL
Vlad Faust
Привет. Пожалуйста, направьте на путь истинный. Я бы хотел, чтобы из этих двух квери всегда возвращался один или ноль результатов, в зависимости от того, какое условие сработало раньше (приоритет у первого селекта). Заметьте другое направление ордеринга (ASC vs DESC). Спасибо!

    (
     SELECT "file_last_modified_at"
     FROM "hars"
     WHERE "status" IN ('unparsed', 'parsing_in_progress')
     ORDER BY "file_last_modified_at" ASC
     LIMIT 1
   ) UNION (
     SELECT "file_last_modified_at"
     FROM "hars"
     WHERE "status" IN ('parsing_succeeded', 'parsing_failed', 'skipped')
     ORDER BY "file_last_modified_at" DESC
     LIMIT 1
   )
1. Два запроса?
2. Надзапрос с LIMIT 1...
2.1 ...с UNION ALL вместо UNION?
2.2 ...с ORDER BY (status IN ...)?
источник

И

Иван in pgsql – PostgreSQL
Вопрос:
Можно ли отключить логирование с конкретного ip в PG ? Или только сессионно необходимо выставлять уровень логгирования?
источник

VF

Vlad Faust in pgsql – PostgreSQL
a m
1. Два запроса?
2. Надзапрос с LIMIT 1...
2.1 ...с UNION ALL вместо UNION?
2.2 ...с ORDER BY (status IN ...)?
> ...с ORDER BY (status IN ...)?

Понял!
источник

VF

Vlad Faust in pgsql – PostgreSQL
a m
1. Два запроса?
2. Надзапрос с LIMIT 1...
2.1 ...с UNION ALL вместо UNION?
2.2 ...с ORDER BY (status IN ...)?
> ...с UNION ALL вместо UNION?

Будут ли гарантии по тому, какая из строк будет первой (i.e. приоритет)?
источник

🌌[

🌌El.Randir/42ᅠ [AD]... in pgsql – PostgreSQL
Vlad Faust
> ...с UNION ALL вместо UNION?

Будут ли гарантии по тому, какая из строк будет первой (i.e. приоритет)?
Первый селект.
источник

am

a m in pgsql – PostgreSQL
Vlad Faust
> ...с UNION ALL вместо UNION?

Будут ли гарантии по тому, какая из строк будет первой (i.e. приоритет)?
Там вроде бы ситуация «никто не обещал, но будет всегда».
UNION более страшный, он DISTINCT делает.
источник

VF

Vlad Faust in pgsql – PostgreSQL
Благодарю, ребят
источник

🌌[

🌌El.Randir/42ᅠ [AD]... in pgsql – PostgreSQL
UNION ALL разве не объединит просто :?
UNION фигачит дистикнт, а олл фигарит всё и сразу
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Иван
Вопрос:
Можно ли отключить логирование с конкретного ip в PG ? Или только сессионно необходимо выставлять уровень логгирования?
Только для пользователя (login), кажется.
источник

И

Иван in pgsql – PostgreSQL
да, это умею. понял вас, спасибо
источник

VF

Vlad Faust in pgsql – PostgreSQL
🌌El.Randir/42ᅠ [AD]
UNION ALL разве не объединит просто :?
UNION фигачит дистикнт, а олл фигарит всё и сразу
Всё и сразу в том же порядке?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Vlad Faust
> ...с UNION ALL вместо UNION?

Будут ли гарантии по тому, какая из строк будет первой (i.e. приоритет)?
Так для этого и ORDER BY во внешнем запросе.
Иначе — не будет, конечно.
Кстати, ещё вариант — написать как-то так:
WITH first_modified AS (
  SELECT file_last_modified_at
    FROM hars
   WHERE status IN ('unparsed', 'parsing_in_progress')
   ORDER BY file_last_modified_at
   LIMIT 1
), last_modified AS (
  SELECT file_last_modified_at
    FROM hars
   WHERE status IN ('unparsed', 'parsing_in_progress')
   ORDER BY file_last_modified_at DESC
   LIMIT 1
)
SELECT file_last_modified_at
 FROM last_modified
WHERE NOT EXISTS (SELECT 1 FROM first_modified)
UNION ALL
SELECT file_last_modified_at
 FROM first_modified
источник

🌌[

🌌El.Randir/42ᅠ [AD]... in pgsql – PostgreSQL
Yaroslav Schekin
Так для этого и ORDER BY во внешнем запросе.
Иначе — не будет, конечно.
Кстати, ещё вариант — написать как-то так:
WITH first_modified AS (
  SELECT file_last_modified_at
    FROM hars
   WHERE status IN ('unparsed', 'parsing_in_progress')
   ORDER BY file_last_modified_at
   LIMIT 1
), last_modified AS (
  SELECT file_last_modified_at
    FROM hars
   WHERE status IN ('unparsed', 'parsing_in_progress')
   ORDER BY file_last_modified_at DESC
   LIMIT 1
)
SELECT file_last_modified_at
 FROM last_modified
WHERE NOT EXISTS (SELECT 1 FROM first_modified)
UNION ALL
SELECT file_last_modified_at
 FROM first_modified
йопта

А если записей дохералион :?
источник

🌌[

🌌El.Randir/42ᅠ [AD]... in pgsql – PostgreSQL
Vlad Faust
Всё и сразу в том же порядке?
Ну первый запрос весь + второй запрос весь.

Можешь проверить, сделать 2 таблички, в первой будут нечётные цифры до 10
Во второй чётные, и проверь свой код )
источник