Задать вопрос
  • Как вставить fk на запись, добавленную в этой же транзакции?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    это происходит в одной транзакции и видимо данные еще не видны

    Предположение ошибочно.
    Перепроверяйте внимательнее, что именно делаете. В частности, действительно ли в той же самой транзакции, говорит ли ошибка именно про это ограничение или может быть про другое.
    Ответ написан
    2 комментария
  • Какую базу данных выбрать для сервера на Node.js?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Доступ к DB Read Only. Т.е. после сдачи сервера в эксплуатацию DB не меняется.

    Поиск нужной записи по одному ID.

    При старте приложения загрузить в память приложения хоть из рядового csv или чего угодно ещё.
    При этих ограничениях задачи внешняя БД избыточна.
    Ответ написан
    5 комментариев
  • Откуда появляется бесконечный цикл?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Давайте вы лучше расскажете почему вы считаете, что здесь рекурсии нет.

    Вы делаете
    INSTEAD OF DELETE ON all_abonents

    и в этом триггере DELETE FROM all_abonents WHERE - почему же это не должно уходить в бесконечную рекурсию?

    Чем налагать спорные ограничения на действия из триггеров, postgresql будет послушно выполнять рекурсивные вызовы до исчерпания стека, а предоставлять условия выхода из рекурсии - задача разработчика.
    Ответ написан
    1 комментарий
  • Как переписать данный код для версий PHP ниже 7.4?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Если ключи сохранять не требуется, то и вовсе
    $res = array_column($page_data, 'tab');
    Ответ написан
    Комментировать
  • AMD EPYC NVMe RAID - решение?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Программный linux raid.
    Что помимо простоты будет ещё и работать быстрее. Без шуток. Хорошим SSD упереться в производительность аппаратного RAID контроллера не так уж сложно.
    Ответ написан
    Комментировать
  • Почему cron запускается не по локальному времени?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Если после запуска крона меняли таймзону - то крону об этом никто не сказал. Перезапустите демона крона.
    Ответ написан
    Комментировать
  • Что произойдет, если крон запускать каждую минуту но скрипт не успеет выполниться?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Запустится следующий
    Ответ написан
    Комментировать
  • Как быстро удалить Foreign Table в postgres?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Не могу удалить foreign table из postgres запросом

    Посмотреть в pg_blocking_pids, кто мешает. Сделать с этими соединениями что-нибудь (pg_terminate_backend, например)

    Если делать элементарный запрос SELECT * FROM fwd_orders LIMIT 500, то все исполняется за 600ms . А если в этот запрос добавить любой ORDER BY, то выполнение запроса идет 10 и более минут (в таблице более 20млн. строк). Почему так происходит? И как можно ускорить работу?

    Посмотреть explain (verbose) на предмет того, что считается локально, а что прокидывается на удалённую базу.
    В частности, уточнить у используемого расширения oracle fdw, реализован ли там push-down для order by. По описанию похоже что нет такого и потому вся таблица вычитывается и сортируется локально.
    Ответ написан
    Комментировать
  • Почему возникает ошибка "Final statement returns bigint instead of integer" в SQL функции?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Не соответствуют типы данных как они объявлены в выходных параметрах функции и тем, что вы пытаетесь делать в return. Должны соответствовать друг другу.

    sum у нас в pg13 существуют такие:
    melkij=> \da pg_catalog.sum
                                                  Список агрегатных функций
       Схема    | Имя | Тип данных результата | Типы данных аргументов |                     Описание                     
    ------------+-----+-----------------------+------------------------+--------------------------------------------------
     pg_catalog | sum | numeric               | bigint                 | sum as numeric across all bigint input values
     pg_catalog | sum | double precision      | double precision       | sum as float8 across all float8 input values
     pg_catalog | sum | bigint                | integer                | sum as bigint across all integer input values
     pg_catalog | sum | interval              | interval               | sum as interval across all interval input values
     pg_catalog | sum | money                 | money                  | sum as money across all money input values
     pg_catalog | sum | numeric               | numeric                | sum as numeric across all numeric input values
     pg_catalog | sum | real                  | real                   | sum as float4 across all float4 input values
     pg_catalog | sum | bigint                | smallint               | sum as bigint across all smallint input values

    Как видно, нет ни одного варианта, который бы возвращал int4

    Final statement returns too many columns действительно надо пояснять? Или прямым английским языком всё и так уже сказано?
    Ответ написан
    3 комментария
  • Как отправить картинку POST в формате multipart/form-data?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Всё равно ведь используете curl для запроса. Попросите curl и сформировать корректное тело запроса.
    https://www.php.net/manual/en/curlfile.construct.php
    Ответ написан
  • Как залогировать дату последнего создания MATERIALIZED VIEW?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Вопрос в заголовке и вопрос в описании - два совершенно разных вопроса.

    Аналогично прочим командам, на вопрос был ли выполнен запрос, отвечает PQresultStatus. Нужно уточнять у вашей библиотеки подключения, как проверить статус команды. Во многих случаях всё просто - если метод вернул управление (а не бросил исключение) - команда выполнена.
    Ответ написан
    Комментировать
  • Нужно ли удалять индексы перед изменением их типа?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    У индекса нет возможности изменения типа. Ни самого типа индекса (btree, hash, gin, gist) ни типов полей.
    Нужно сначала создавать новый индекс, затем удалять старый. Имена индексов при этом должны будут различаться. Сначала удалить, потом построить новый - чревато развлечениями на production, когда на время построения нового индекса уже нет старого индекса и потому ранее быстрые запросы едят 100% cpu и диска, превращая задачу построения нового индекса во что-то около невозможное. На dev машине, конечно, без разницы.

    Просто работаю через Valentina Studio и не совсем понятно что происходит под капотом.

    Сделайте log_statement = all (или ddl) - и увидите в логе базы, что приложение делает. Бывает полезно не только с gui всякими, но и с чрезмерно "умными" orm.
    Ответ написан
    Комментировать
  • Возможна ли проверка условия внутри ON CONFLICT DO UPDATE?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Описание синтаксиса весьма красноречиво намекает о реализации
    DO UPDATE SET ... WHERE condition

    melkij=> create temp table foo (item int primary key, d date, price numeric);
    CREATE TABLE
    melkij=> insert into foo values (1, '2021-07-30', 100) on conflict (item) do update set price = excluded.price, d = excluded.d where excluded.d > foo.d;
    INSERT 0 1
    melkij=> table foo;
     item |     d      | price 
    ------+------------+-------
        1 | 2021-07-30 |   100
    (1 строка)
    
    melkij=> insert into foo values (1, '2021-08-01', 110) on conflict (item) do update set price = excluded.price, d = excluded.d where excluded.d > foo.d;
    INSERT 0 1
    melkij=> table foo;
     item |     d      | price 
    ------+------------+-------
        1 | 2021-08-01 |   110
    (1 строка)
    
    melkij=> insert into foo values (1, '2021-07-20', 80) on conflict (item) do update set price = excluded.price, d = excluded.d where excluded.d > foo.d;
    INSERT 0 0
    melkij=> table foo;
     item |     d      | price 
    ------+------------+-------
        1 | 2021-08-01 |   110
    (1 строка)
    Ответ написан
    Комментировать
  • Как в си узнать какой пользователь вошёл в систему linux?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Если это подходит для postgresql, то, вероятно, подойдёт и для вас: https://github.com/postgres/postgres/blob/REL_13_S...

    (geteuid + getpwuid под linux)
    Ответ написан
    Комментировать
  • Как оптимизировать выполнение тяжелых запросов?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Можно ли сделать так, чтобы запрос выполнялся дольше, но меньше загружал CPU -- может есть какие-то способы понизить приоритетность выполнения?

    Обычный nice. Процессная же модель, никаких проблем понизить приоритет конкретного процесса средствами самой ОС.

    Есть ли встроенные механизмы кэшированая, которым можно сказать, что для запроса Х нужно отдавать данные из кэша при вызове его чаще чем N минут\часов?

    Нет, кеша запросов нет. И не будет.

    ситуация когда с БД нужно собирать некоторую статистику и при этом сделать так, чтобы система не сильно тормозила

    Не смешивать OLAP и OLTP вообще. Если база важная, то у неё будет hot standby. Там статистику и считать.
    Ответ написан
    Комментировать
  • Как увеличить диска LVM больше 4 разделов?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    А зачем добавлять ещё раздел, если вы его в lvm так же хотите добавлять? Просто расширьте раздел
    parted resizepart + pvresize
    Ответ написан
    Комментировать
  • Для чего используется символ "\" в PHP в начале написания при вызове функций?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Ну как же "в документации нет", когда этому целый раздел посвящён? https://www.php.net/manual/en/language.namespaces.php
    Ответ написан
    1 комментарий
  • Указать типы для hardcoded select?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Не надо заниматься обфускацией запросов и пытаться сбить с толку планировщик. Он умный, но он тупой.
    Ответ написан
    Комментировать
  • Как использовать тип данных даты в django в postgresql?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Проблема в том, что у вас в таблице уже существует поле с именем EventDate и оно ни разу не date.
    Обратите внимание, что ваша миграция пытается сделать ALTER COLUMN со сменой типа.
    Ответ написан
    Комментировать
  • Почему выводит 2 одинаковые записи?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Потому что это соответствует вашим данным?

    Если непонятно - смоделируйте элементарный nested loop на пальцах, выполняя чтения из ваших таблиц по одной.
    Ответ написан
    Комментировать