Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Oct 20 2015 00:47
    @NikolayS banned @holstenman
sunw41ker
@sunw41ker

@Prototype-X , спасибо! Конфигурация помогла. Создался symlink Makefile.port и файл Makefile.global .
Я занялся сборкой самого расширения, но тут тоже оказались проблемы.

$ make USE_PGXS=1 top_srcdir=..../postgresql-9.5.8
rm -f  && @LN_S@ ...postgresql-9.5.8/src/bin/pg_rewind/datapagemap.h .
/bin/sh: 1: @LN_S@: not found
Makefile:81: ошибка выполнения рецепта для цели «datapagemap.h»

Буду вникать дальше

Maxim
@Prototype-X
Хм, ну сделай ./make в исходниках постгреса
Yury Zhuravlev
@stalkerg
Кто хочет попробовать собрать postgres под windows без консоли вообще то я написал небольшую инструкцию: https://github.com/stalkerg/postgres_cmake/blob/cmake_rel10/README.cmake#L228
да, на счёт pg_stealbackup мне надо его допилить что бы он работал. Я просто даже не думал что он кому то будет нужен...
Nikolay
@NikolayS

Сегодня в 18мск очередной постгресовый онлайн:

#RuPostgres Live 2 — пообщаемся с компанией Avito, можно задавать каверзные вопросы 🙂

подробности тут: https://www.meetup.com/preview/postgresqlrussia/events/244478092

Nikolay
@NikolayS
Ссылка трансляции: https://www.youtube.com/watch?v=eIjCYjazbVY
tsykinpavel
@tsykinpavel
Alexander Nikolaev
@startaper
коллеги, а где пройдет https://www.meetup.com/postgresqlrussia/events/245161703/
?
на страничке мероприятия не нашел location
и еще http://postgres.chat/ пишет что This Domain Name Has Expired
nolka
@nolka
Привет всем :)
Помогите нубу пожалуйста :)
Есть громадная таблица категорий :)
Нужно вывести эту иерархию в красивом человекочитаемом виде в идеале :)
типа, root -> leaf1 -> leaf2 ->leaf3
для каждой из категорий
И я словил жесткий тупняк в этом месте :(
Yury Zhuravlev
@stalkerg
смотря как это всё лежит в бд
а так рекурсия твой друг
Nikolay
@NikolayS

типа, root -> leaf1 -> leaf2 ->leaf3

1) Можно использовать модуль ltree, который специально для деревьев https://www.postgresql.org/docs/current/static/ltree.html

2) Можно просто реляции и recursive CTE, получится breadth-first search; вот простой пример http://jakub.fedyczak.net/post/postgresql-with-recursive-tree-traversing-example/ (или погуглите ещё "breadth-first search postgresql", я помню что не раз статьи были, более глубокие чем эта)

3) Есть ещё целая книжка, как в SQL работать с графами и деревьями, у Joe Celko https://datubaze.files.wordpress.com/2016/03/celkos-trees-and-hierarchies-in-sql_2004.pdf – это старый вариант, было ещё второе издание.

п.2 -- это standard ansi sql. у Celko не знаю, есть ли варианты с CTE.
п1. -- это чисто постгресовое, но довольно эффективное, т.к. с GiST-индексами.

Ага , вижу, что у Celko во втором издании есть глава 2.4. 3 Recursive CTEs.
Andreo1111
@Andreo1111
всем привет
кто нибудь barman настраивал для работы со slave ? (postgres v9.3)
Roman
@DoctorLines
Всем привет!
Есть довольно простой запрос:
select
    *
from
    "gateways_status_history"
where
    "identifier" = '11:11:11:11:11:11'
or 
    "id" = 99
order by
    "updated_at" desc
Таких записей в таблице нету, по этому ожидается что ничего не найдет
но, он находит запись с совершенно другим identifier и id
Кто может объяснить, как это черт возьми работает ?)))
postgres v9.3
Roman
@DoctorLines
А, это я дурак, колонку попутал
Что за магия такая, пока не спросишь кого-нибудь, проблемы не решаются
Dmitry Bochkarev
@DmitryBochkarev
Привет, а может кто подсказать - если в функции есть raise может она считаться stable? https://www.postgresql.org/docs/10/static/xfunc-volatility.html
Андрианов Сергей
@Batisska
Ребята подскажите как решить задачу. Есть 2 сервера с Postgresql 10 с идентичными базами данных. Требуется с первого сервера ежедневно(ежечасно, в релтайме) копировать несколько таблиц в на второй а со второго на первый другие таблицы копировать. Таблицы между собой связаны. Подскажите какие есть способы реализации данной задачи.
если проще мне с прода надо копировать заказы с заказчиками, а с дублирующего сервака информацию о продуктах каталогах и так далее
Nikolay
@NikolayS
@Batisska Самое простое: убрать FK, использовать логическую репликацию
Андрианов Сергей
@Batisska
Ребят подскажите как отдебажить проблему. У меня имеется 2 докер контейнера один в локальной сети другой во внешней. Установлены с одного хаба с одним и тем же конфигом. Через MS Access идут запросы к базе данных. На локальный сервак они проходят за 6 минут, а на внешний за 21 минут. Как можно найти причину увеличение времени?
AlexeyMozgo
@AlexeyMozgo

Всем привет.

Работал кто-нибудь с Stolon?

Rustem Zhumagulov
@yuppie19
Привет всем! Подскажите пожалуйста ETL тул для заливки в Postgres из 2 - 3 источников. XLS, БД и LDAP сервер как источники
Nhung Phạm Hồng
@nhungphamhong
Hi all, can you speak English?
i want to ask you some questions
So i can't understand you're saying
vedun
@vedun
приветствую
подскажите можно как то извлечь двоичное представление из колонки с типом double precision ?
venkat125
@venkat125
hi there, I'm trying to connect diesel orm with postgres Enterprise DB version 11. But couldn't setup "diesel setup" in cmd which throws error as follows: diesel.exe - Ordinal Not Found
Refer this link for more details: https://stackoverflow.com/questions/53456457/diesel-exe-ordinal-not-found-the-ordinal-4701-could-not-be-located-in-the-dy
Constantine
@unk2k
Hi all. I have a table with 2 varchar columns. I want to create an index using GIN and using JSON of 2 columns.
create index test on test using gin (to_json(array[col1, col2])); but I catch an exception ERROR: functions in index expression must be marked IMMUTABLE. How can create the index correct?
dsx90
@dsx90
Всем привет! Подскажите как улучшить и сделать красивее данный запрос. SQL я только изучаю. Так что прошу камнями сильно не закидывать)
SELECT
       a.stock_name                                        AS stock_name,
       a.delivery_time                                     AS delivery_time,
       a.sum_amount                                        AS all,
       r.sum_amount                                        AS refusal,
       n.sum_amount                                        AS normal,
       r.sum_amount :: real / a.sum_amount :: real * 100   AS percent
FROM (
     SELECT
            accepted.name as stock_name,
            sum(accepted.amount) as sum_amount,
            accepted.delivery_time
     FROM (
          SELECT
                 order_product_status_history.order_product_id as product,
                 stock.name                                    as name,
                 order_product.amount                          AS "amount",
                 order_product_status_history.date_added       AS date,
                 delivery_time                                 as delivery_time
          FROM "order_product"
                 LEFT JOIN "order" ON "order_product"."order_id" = "order"."id"
                 LEFT JOIN "customer" ON "order"."customer_id" = "customer"."id"
                 LEFT JOIN "customer_group" ON "customer"."customer_group_id" = "customer_group"."id"
                 LEFT JOIN "stock_product" ON "order_product"."stock_product_id" = "stock_product"."id"
                 LEFT JOIN "stock" ON "stock_product"."stock_id" = "stock"."id"
                 LEFT JOIN "organization" ON "order"."pvz_id" = "organization"."id"
                 LEFT JOIN order_product_status_history on order_product.id = order_product_status_history.order_product_id
          WHERE (NOT ("order"."status" IN (8, 10)))
            AND "order".date_added > '2018-07-01'::date
            AND order_product_status_history.status = 14372--STATUS_ACCEPTED
          ) AS accepted
            inner join (
                       SELECT
                              order_product_status_history.order_product_id as product,
                              stock.name                                    as name,
                              order_product.amount                          AS "amount",
                              order_product_status_history.date_added       AS date,
                              delivery_time                                 as delivery_time
                       FROM "order_product"
                              LEFT JOIN "order" ON "order_product"."order_id" = "order"."id"
                              LEFT JOIN "customer" ON "order"."customer_id" = "customer"."id"
                              LEFT JOIN "customer_group" ON "customer"."customer_group_id" = "customer_group"."id"
                              LEFT JOIN "stock_product" ON "order_product"."stock_product_id" = "stock_product"."id"
                              LEFT JOIN "stock" ON "stock_product"."stock_id" = "stock"."id"
                              LEFT JOIN "organization" ON "order"."pvz_id" = "organization"."id"
                              LEFT JOIN order_product_status_history on order_product.id = order_product_status_history.order_product_id
                       WHERE (NOT ("order"."status" IN (8, 10)))
                         AND "order".date_added > '2018-07-01'::date
                         AND order_product_status_history.status = 4947--STATUS_IN_STOCK
                       ) AS r ON accepted.product = r.product
     group by stock_name, accepted.delivery_time
     ) as a
       left join (
                 SELECT
                        accepted.name         AS stock_name,
                        SUM(accepted.amount)  AS sum_amount
                 FROM (
                      SELECT
                             order_product_status_history.order_product_id as product,
                             stock.name                                    as name,
order_product.amount                          AS "amount",
                             order_product_status_history.date_added       AS date,
                             delivery_time                                 as delivery_time
                      FROM "order_product"
                             LEFT JOIN "order" ON "order_product"."order_id" = "order"."id"
                             LEFT JOIN "customer" ON "order"."customer_id" = "customer"."id"
                             LEFT JOIN "customer_group" ON "customer"."customer_group_id" = "customer_group"."id"
                             LEFT JOIN "stock_product" ON "order_product"."stock_product_id" = "stock_product"."id"
                             LEFT JOIN "stock" ON "stock_product"."stock_id" = "stock"."id"
                             LEFT JOIN "organization" ON "order"."pvz_id" = "organization"."id"
                             LEFT JOIN order_product_status_history on order_product.id = order_product_status_history.order_product_id
                      WHERE (NOT ("order"."status" IN (8, 10)))
                        AND "order".date_added > '2018-07-01'::date
                        AND order_product_status_history.status = 14372--STATUS_ACCEPTED
                      ) AS accepted
                        inner join (
                                   SELECT
                                          order_product_status_history.order_product_id as product,
                                          stock.name                                    as name,
                                          order_product.amount                          AS "amount",
                                          order_product_status_history.date_added       AS date,
                                          CASE
                                            WHEN EXTRACT (dow FROM order_product_status_history.date_added) IN (6) THEN order_product_status_history.date_added + interval '2 day'
                                            WHEN EXTRACT (dow FROM order_product_status_history.date_added) IN (0) THEN order_product_status_history.date_added + interval '1 day'
                                            ELSE order_product_status_history.date_added
                                              END as dw,
                                          delivery_time                                 as delivery_time
                                   FROM "order_product"
                                          LEFT JOIN "order" ON "order_product"."order_id" = "order"."id"
                                          LEFT JOIN "customer" ON "order"."customer_id" = "customer"."id"
                                          LEFT JOIN "customer_group" ON "customer"."customer_group_id" = "customer_group"."id"
                                          LEFT JOIN "stock_product" ON "order_product"."stock_product_id" = "stock_product"."id"
                                          LEFT JOIN "stock" ON "stock_product"."stock_id" = "stock"."id"
                                          LEFT JOIN "organization" ON "order"."pvz_id" = "organization"."id"
                                          LEFT JOIN order_product_status_history on order_product.id = order_product_status_history.order_product_id
                                   WHERE (NOT ("order"."status" IN (8, 10)))
                                     AND "order".date_added > '2018-07-01'::date
                                     AND order_product_status_history.status = 4947--STATUS_IN_STOCK
                                   ) AS r ON accepted.product = r.product
                 WHERE EXTRACT(EPOCH FROM (r.dw - accepted.date)) / 60 / 60 <= accepted.delivery_time + 6
                 group by stock_name
                 ) as n on a.stock_name = n.stock_name
       inner join (
                  SELECT
                         accepted.name         AS stock_name,
                         SUM(accepted.amount)  AS sum_amount
                  from (
                       SELECT
order_product_status_history.date_added       AS date,
                              delivery_time                                 as delivery_time
                       FROM "order_product"
                              LEFT JOIN "order" ON "order_product"."order_id" = "order"."id"
                              LEFT JOIN "customer" ON "order"."customer_id" = "customer"."id"
                              LEFT JOIN "customer_group" ON "customer"."customer_group_id" = "customer_group"."id"
                              LEFT JOIN "stock_product" ON "order_product"."stock_product_id" = "stock_product"."id"
                              LEFT JOIN "stock" ON "stock_product"."stock_id" = "stock"."id"
                              LEFT JOIN "organization" ON "order"."pvz_id" = "organization"."id"
                              LEFT JOIN order_product_status_history on order_product.id = order_product_status_history.order_product_id
                       WHERE (NOT ("order"."status" IN (8, 10)))
                         AND "order".date_added > '2018-07-01'::date
                         AND order_product_status_history.status = 14372--STATUS_ACCEPTED
                       ) AS accepted
                         inner join (
                                    SELECT
                                           order_product_status_history.order_product_id as product,
                                           stock.name                                    as name,
                                           order_product.amount                          AS "amount",
                                           order_product_status_history.date_added       AS date,
                                           CASE
                                             WHEN EXTRACT (dow FROM order_product_status_history.date_added) IN (6) THEN order_product_status_history.date_added + interval '2 day'
                                             WHEN EXTRACT (dow FROM order_product_status_history.date_added) IN (0) THEN order_product_status_history.date_added + interval '1 day'
                                             ELSE order_product_status_history.date_added
                                               END as dw,
                                           delivery_time                                 as delivery_time
                                    FROM "order_product"
                                           LEFT JOIN "order" ON "order_product"."order_id" = "order"."id"
                                           LEFT JOIN "customer" ON "order"."customer_id" = "customer"."id"
                                           LEFT JOIN "customer_group" ON "customer"."customer_group_id" = "customer_group"."id"
                                           LEFT JOIN "stock_product" ON "order_product"."stock_product_id" = "stock_product"."id"
                                           LEFT JOIN "stock" ON "stock_product"."stock_id" = "stock"."id"
                                           LEFT JOIN "organization" ON "order"."pvz_id" = "organization"."id"
                                           LEFT JOIN order_product_status_history on order_product.id = order_product_status_history.order_product_id
                                    WHERE (NOT ("order"."status" IN (8, 10)))
                                      AND "order".date_added > '2018-07-01'::date
                                      AND order_product_status_history.status = 4947--STATUS_IN_STOCK
                                    ) AS r ON accepted.product = r.product
                  where extract(epoch from (r.dw - accepted.date)) / 60 / 60 > accepted.delivery_time + 6
                  group by stock_name
                  ) as r on a.stock_name = r.stock_name
dimtabu
@taburetkin

вопрос

  CREATE TYPE someType AS
  (
    sometext character varying(128),
    somenum smallint,
  );

  CREATE TABLE "sometable "
  (
      id uuid NOT NULL default uuid_generate_v4() PRIMARY KEY,
      someField someType
  )

можно ли делать параметризированый инсерт вот так?

insert into sometable (someCompositeField) values ($1)

и если да то что должно быть в виде параметра ? массив, Josn или строка row('text', 123)

не могу отыскать пример
dimtabu
@taburetkin
отыскал