Size: a a a

pgsql – PostgreSQL

2021 March 01

*

**ابو عزام** in pgsql – PostgreSQL
Hi, how can I upgrade from 12 to 13 please?
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
**ابو عزام**
Hi, how can I upgrade from 12 to 13 please?
pg_upgrade , of course
источник

M

Maxim in pgsql – PostgreSQL
Люди добрые, а как можно получить только один вложенный массив?
Например, {1-electrical-components} или  {1-electrical-components,2-motor-control-and-protection,3-magnetic-contactors}, но не {{}}.


SELECT p.product_id,
      ARRAY_AGG(cv.slugs) FILTER (WHERE cv.slugs IS NOT NULL) AS category_slugs
 FROM products AS p
      LEFT JOIN shop_settings AS ss
             ON ss.product_id = p.product_id
            AND ss.deleted = FALSE
      LEFT JOIN brands AS b
             ON b.brand_id = p.brand_id
      LEFT JOIN categories_view AS cv
             ON cv.category_id = p.category_id
GROUP BY p.product_id;


             product_id                                             |                                                                          category_slugs                                                                          
--------------------------------------------- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------
cc415d6c-02b4-4f1c-b0eb-f50bd436d516    | {{1-electrical-components,2-motor-control-and-protection}}
58bd6c91-8ff5-4b4e-a822-b5bed849986b  | {{1-electrical-components}}
0f69a750-c902-430a-ac11-11f9964d353e    | {{1-electrical-components,2-motor-control-and-protection,3-magnetic-contactors},{1-electrical-components,2-motor-control-and-protection,3-magnetic-contactors}}
nnn                                                                       |
1                                                                           |
источник

M

Maxim in pgsql – PostgreSQL
И еще хочется COALESE(xxx, '{}') впихнуть для продуктов без категорий...
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Maxim
Люди добрые, а как можно получить только один вложенный массив?
Например, {1-electrical-components} или  {1-electrical-components,2-motor-control-and-protection,3-magnetic-contactors}, но не {{}}.


SELECT p.product_id,
      ARRAY_AGG(cv.slugs) FILTER (WHERE cv.slugs IS NOT NULL) AS category_slugs
 FROM products AS p
      LEFT JOIN shop_settings AS ss
             ON ss.product_id = p.product_id
            AND ss.deleted = FALSE
      LEFT JOIN brands AS b
             ON b.brand_id = p.brand_id
      LEFT JOIN categories_view AS cv
             ON cv.category_id = p.category_id
GROUP BY p.product_id;


             product_id                                             |                                                                          category_slugs                                                                          
--------------------------------------------- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------
cc415d6c-02b4-4f1c-b0eb-f50bd436d516    | {{1-electrical-components,2-motor-control-and-protection}}
58bd6c91-8ff5-4b4e-a822-b5bed849986b  | {{1-electrical-components}}
0f69a750-c902-430a-ac11-11f9964d353e    | {{1-electrical-components,2-motor-control-and-protection,3-magnetic-contactors},{1-electrical-components,2-motor-control-and-protection,3-magnetic-contactors}}
nnn                                                                       |
1                                                                           |
а что у вас в cv.slugs лежит, уже массив?
источник

M

Maxim in pgsql – PostgreSQL
Victor Yegorov
а что у вас в cv.slugs лежит, уже массив?
Да, {1-electrical-components,2-motor-control-and-protection,3-magnetic-contactors}
источник

M

Maxim in pgsql – PostgreSQL
Можно, конечно, в приложении написать [][0], но не хочется.
источник

M

Maxim in pgsql – PostgreSQL
CREATE RECURSIVE VIEW categories_view(category_id, names, slugs, ancestry) AS
         SELECT category_id,
                names,
                ARRAY[slug],
                ARRAY[category_id]
           FROM categories
          WHERE parent_id IS NULL
          UNION ALL
         SELECT c.category_id,
                c.names,
                ARRAY_APPEND(cv.slugs, c.slug),
                ARRAY_APPEND(cv.ancestry, c.category_id)
           FROM categories_view AS cv
           JOIN categories AS c
             ON c.parent_id = cv.category_id
источник

DS

Dosik S. in pgsql – PostgreSQL
Всем привет.
Кто-то здесь работал с библиотекой  psycopg2?
источник

RL

Roman Lukianov in pgsql – PostgreSQL
Dosik S.
Всем привет.
Кто-то здесь работал с библиотекой  psycopg2?
Я работал.
источник

D

Dmitriy in pgsql – PostgreSQL
Dosik S.
Всем привет.
Кто-то здесь работал с библиотекой  psycopg2?
А вопрос-то в чём?
источник

V

V in pgsql – PostgreSQL
приветствую! уважаемые эксперты, подскажите, пожалуйста, как избавиться от seq scan on pa:
explain SELECT DISTINCT on (t.uuid)
   t.uuid as task_uuid,
   ct. "name" city,
   c.plate_number,
   c.id car_id,
   pa.created_at start_time,
   (now() - pa.created_at) active_time,
   --r.long_service_alert_interval allowed_time,
   u.phone user_phone,
   r.caption AS ROLE,
   CONCAT_WS(' '::text, u.first_name, u.patronymic_name, u.last_name) AS user_name
FROM
   performed_actions pa
   JOIN tasks t ON t.uuid = pa.task_uuid
   JOIN cars c ON t.car_id = c.id
   JOIN cities ct ON ct.external_id = c.region_id
   JOIN roles r ON r.uuid = t.role_uuid -- AND r.long_service_alert_interval IS NOT NULL
   JOIN users u ON u.uuid = t.user_uuid
WHERE
   t.finished_at IS NULL
   AND(now() - pa.created_at) >= interval '20 minutes' --r.long_service_alert_interval
ORDER BY
   t.uuid,
   active_time DESC;


Unique  (cost=698438.31..699336.05 rows=179549 width=517)
 ->  Sort  (cost=698438.31..698887.18 rows=179549 width=517)
       Sort Key: t.uuid, ((now() - pa.created_at)) DESC
       ->  Hash Join  (cost=296229.54..682769.05 rows=179549 width=517)
             Hash Cond: (t.user_uuid = u.uuid)
             ->  Hash Join  (cost=295933.68..680654.89 rows=179549 width=473)
                   Hash Cond: (t.role_uuid = r.uuid)
                   ->  Hash Join  (cost=295931.96..680119.43 rows=179549 width=215)
                         Hash Cond: (t.car_id = c.id)
                         ->  Hash Join  (cost=220800.77..602514.80 rows=180787 width=60)
                               Hash Cond: (pa.task_uuid = t.uuid)
                               ->  Seq Scan on performed_actions pa  (cost=0.00..376286.51 rows=2067629 width=24)
                                     Filter: ((now() - created_at) >= '00:20:00'::interval)
                               ->  Hash  (cost=215722.12..215722.12 rows=406292 width=52)
                                     ->  Bitmap Heap Scan on tasks t  (cost=12957.20..215722.12 rows=406292 width=52)
                                           Recheck Cond: (finished_at IS NULL)
                                           ->  Bitmap Index Scan on ix__tasks__finished_at  (cost=0.00..12855.62 rows=406292 width=0)
                                                 Index Cond: (finished_at IS NULL)
                         ->  Hash  (cost=74920.86..74920.86 rows=16827 width=159)
                               ->  Hash Join  (cost=1.68..74920.86 rows=16827 width=159)
                                     Hash Cond: (c.region_id = ct.external_id)
                                     ->  Index Scan using cars_pkey on cars c  (cost=0.41..74687.78 rows=16943 width=17)
                                     ->  Hash  (cost=1.12..1.12 rows=12 width=150)
                                           ->  Seq Scan on cities ct  (cost=0.00..1.12 rows=12 width=150)
                   ->  Hash  (cost=1.32..1.32 rows=32 width=290)
                         ->  Seq Scan on roles r  (cost=0.00..1.32 rows=32 width=290)
             ->  Hash  (cost=228.16..228.16 rows=5416 width=71)
                   ->  Seq Scan on users u  (cost=0.00..228.16 rows=5416 width=71)
источник

DS

Dosik S. in pgsql – PostgreSQL
Из-за чего может возникнуть следующая ошибка?
could not resize shared memory segment "/PostgreSQL.1284959199" to 2147483648 bytes: No space left on device
CONTEXT:  parallel worker

В гугле говорят, что подобная ошибка встречается при работе с докером. Но я не создаю никакой докер и параллельно ничего не делаю
источник

V

V in pgsql – PostgreSQL
Dosik S.
Из-за чего может возникнуть следующая ошибка?
could not resize shared memory segment "/PostgreSQL.1284959199" to 2147483648 bytes: No space left on device
CONTEXT:  parallel worker

В гугле говорят, что подобная ошибка встречается при работе с докером. Но я не создаю никакой докер и параллельно ничего не делаю
кончилось место на диске
источник

DS

Dosik S. in pgsql – PostgreSQL
в оперативке?
источник

V

V in pgsql – PostgreSQL
ну ramdisk по сути тот же диск
источник

DS

Dosik S. in pgsql – PostgreSQL
не может быть
источник

V

V in pgsql – PostgreSQL
df -h|grep shm
источник

I

Ivan in pgsql – PostgreSQL
Всем привет. Поделитесь опытом, пожалуйста, если у кого-то он имеется. Мне нужно обновить мажорную версию постгрес на 46 серверах. В сторону каких инструментов или сервисов мне посмотреть, что бы облегчить себе жизнь. Важный момент: даунтайм приемлим, но не более пары-тройки часов.
Сейчас подготавливаем всё на ansible, но понимаем что всё превращается в башизм и мы не контроллируем процесс и видим результат только после выполнения всего плея, который может длиться до 5 часов.
источник

V

V in pgsql – PostgreSQL
Ivan
Всем привет. Поделитесь опытом, пожалуйста, если у кого-то он имеется. Мне нужно обновить мажорную версию постгрес на 46 серверах. В сторону каких инструментов или сервисов мне посмотреть, что бы облегчить себе жизнь. Важный момент: даунтайм приемлим, но не более пары-тройки часов.
Сейчас подготавливаем всё на ansible, но понимаем что всё превращается в башизм и мы не контроллируем процесс и видим результат только после выполнения всего плея, который может длиться до 5 часов.
terraform
источник