Size: a a a

pgsql – PostgreSQL

2021 June 24

GG

Gennady Goncharov in pgsql – PostgreSQL
Добрый день, а может кто-нибудь подсказать, где почитать про различия в параметре LANGUAGE при создании функции - напишу я там sql или plpgsql? Пытаюсь перевести хранимку с MS SQL на постгрес, а что-то то одна ошибка, то другая, и какие-то неоднозначные...
источник

АХ

Александр Хакимов... in pgsql – PostgreSQL
Парни, подскажите пожалуйста в чем у меня может быть проблема.


https://paste.ofcode.org/ayjaUsNkHPDU7iNAbAgR4m
SQLSTATE[42601]: Syntax error: 7 ОШИБКА:  подзапрос должен вернуть только один столбец\nLINE 1: SELECT (SELECT docs.document_password_owner,\n               ^\nQUERY:  SELECT (SELECT docs.document_password_owner,\n       docs.doctype_id,\n       docs.document_id,\n       docs.document_date,\n       docs.document_number,\n       docs.document_description,\n       docs.document_owner_name,\n       docs.document_owner_user_id,\n       docs.document_owner_structure_id,\n       docs.document_owner_mailbox_id,\n       docs.document_contragent_name,\n       docs.document_total_sum,\n       docs.contragent_tin,\n       docs.owner_tin,\n       docs.document_vat_sum,\n       docs.confidant_tin,\n       docs.document_total_sum_without_vat from  documents\n       docs where docs.document_id = old.document_id limit 1)\nCONTEXT:  функция PL/pgSQL transact_copy_doc(), строка 5, оператор присваивание (SQL: insert into \"transactions\" (\"transaction_owner_mailbox_id\", \"created_at\", \"created_by\", \"transaction_owner_structure_id\", \"transaction_owner_user_id\", \"transaction_owner_status\", \"transaction_operation\", \"departament_id\", \"document_id\") values (070163c4-86a0-4c04-b960-8e236df122b6, 2021-06-24 11:27:32, 9830aced-9f13-4db9-82f4-cd69b6139ca0, 455cc08f-675f-4ee1-abe3-39cce40f2d0a, 9830aced-9f13-4db9-82f4-cd69b6139ca0, new, CreateByOwner, 455cc08f-675f-4ee1-abe3-39cce40f2d0a, 60d425d2d41e06508dff2f9e))
источник

ch

central hardware in pgsql – PostgreSQL
там указывается на каком языке будет написана хранимая функция
источник

PC

Pavel Chernoskutov in pgsql – PostgreSQL
SELECT * FROM (SELECT docs.document_password_owner,\n       docs.doctype_id,\n       docs.document_id,\n       docs.document_date,\n       docs.document_number,\n       docs.document_description,\n       docs.document_owner_name,\n       docs.document_owner_user_id,\n       docs.document_owner_structure_id,\n       docs.document_owner_mailbox_id,\n       docs.document_contragent_name,\n       docs.document_total_sum,\n       docs.contragent_tin,\n       docs.owner_tin,\n       docs.document_vat_sum,\n       docs.confidant_tin,\n       docs.document_total_sum_without_vat from  documents\n       docs where docs.document_id = old.document_id limit 1) t1
, не?
источник

АХ

Александр Хакимов... in pgsql – PostgreSQL
Причем тут запрос, тут беда в триггере , запрос рабочий был до того момента как  я триггер не впихал)
источник

GG

Gennady Goncharov in pgsql – PostgreSQL
Это я понял, спасибо)) Просто например мне нужно внутри этой функции объявить переменные и создать временные таблицы. И я не совсем понимаю, что и как я могу делать, а что нет. Например, в блоке begin-end я вроде бы не могу декларировать переменные и темповые таблицы, а где тогда их объявлять, если я указываю language sql?
источник

ch

central hardware in pgsql – PostgreSQL
если вы указали plpgsql то можете делать что позволяет его синртаксис, если sql То только sql
источник

GG

Gennady Goncharov in pgsql – PostgreSQL
но если я указываю sql и тупо копирую хранимку из MS SQL, то у меня ничего не работает) Получается, этот sql какой-то определенный, не такой как MS...
источник

IA

Ilya Anfimov in pgsql – PostgreSQL
В функцыи transact_copy_doc(), которая в пятой строке выполняет неправильный SQL-запрос.

А что, были в этом какие-то сомнения? Вроде простым русским языком это написано.
источник

ch

central hardware in pgsql – PostgreSQL
это так не работает, нужно их переносить руками, там довольно много моментов которые заработают конечно но поведение будет отличаться из-за чего все сломается
источник

PC

Pavel Chernoskutov in pgsql – PostgreSQL
не соответствие типа и полей в select есть docs.document_id но его нет в типе
источник

GG

Gennady Goncharov in pgsql – PostgreSQL
а есть какой-нить туториал по переносу с перечислением всех таких важных моментов?) Не первый же я столкнулся с этой задачей по переносу...
источник

IA

Ilya Anfimov in pgsql – PostgreSQL
SQL вообще стандаризован очень херово (как в смысле. что то, что написано в стандарте -- херовое, так и в том, что обычно разные SQL сильно отличаются друг от друга и от стандарта).

Кроме того, SQL как язык хранимых процэдур заметно отличается от просто клиент/серверного варианта SQL (при этом как в Postgres, так и в MS).
источник

IA

Ilya Anfimov in pgsql – PostgreSQL
Рабочего -- нет, только хорошо изучить оба языка.

Потом можно идти по чеклистам и бест практиз -- но без изучения обоих диалектов SQL это достаточно безсмысленно.
источник

b

blkmrkt in pgsql – PostgreSQL
Блин, сделал cp -a /.../pg_wal /var/nvme/pg_wal и новый симлинк, а постгрес ругается что WAL has already been delted.

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

РЖ

Роман Жарков... in pgsql – PostgreSQL
Хана нужному wal файлу.
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
Все они по 16 мегабайт и ротируются. Поэтому и размер одинаковый всегда.
источник

СК

Сергей Кравчук... in pgsql – PostgreSQL
при выключенной базе хоть ? )
источник

b

blkmrkt in pgsql – PostgreSQL
Ахх понял, симлинк создал папку внутри pg_wal с таким же именем. Теперь пг добавил сюда папку archive_status
источник

b

blkmrkt in pgsql – PostgreSQL
Угу!
источник