for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Лисоводы   всех   стран,  объединяйтесь !!!  

Список Форумов  :: Не фоксом единым
  

изменить PodtgreSql скрипт
S-type
Автор

Сообщений: 2671
Дата: 08.07.20 22:52:57
Есть набор скриптов. Если вставить их в DBeaver - выполняются. Если сделать миграции из Core проекта - тоже. Но, надо сделать миграции под NetFramework под мигратор DbUp. Простенькие скрипты, вроде create table или insert проблем не вызывают, всё работает. Но, есть хранимки. А в них есть $body$ или $function$. А, как выяснилось, в DbUp есть переменные, которые выглядят как $что_то$ dbup.readthedocs.io Первое что сделал - заменил всё на кавычки. Было:

Цитата:
CREATE OR REPLACE FUNCTION public.translatejson(JSONB, TEXT)
RETURNS TEXT
AS
$BODY$
SELECT ($1->$2)::TEXT
$BODY$
LANGUAGE sql STABLE;

стало:

Цитата:
CREATE OR REPLACE FUNCTION public.translatejson(JSONB, TEXT)
RETURNS TEXT
AS '
SELECT ($1->$2)::TEXT
'
LANGUAGE sql STABLE;

Часть скриптов заработала. В скриптах, в которых встречались кавычки пришлось кавычки удвоить. Но, некоторые хранимки большие. Выскочило сообщение


Message: 42601: unterminated quoted string at or near

Типа, строка ему длинная. На stackoverflow.com говорят, надо типа так:

Цитата:
CREATE OR REPLACE FUNCTION test(text)
RETURNS void AS ' DECLARE tmp text; \
BEGIN
tmp := ''test''; \
END;' LANGUAGE plpgsql;

Добавил обратные слеши - он их воспринимает как часть текста...

Мысли кончились. В какую сторону копать? Как заставить скрипт работать?



Исправлено: S-type, 08.07.20 23:30
Ratings: 0 negative/0 positive

Re: изменить PodtgreSql скрипт
S-type
Автор

Сообщений: 2671
Дата: 08.07.20 23:55:37
На сколько понимаю, проблема "совпадения" переменных описана в github.com Но, готового решения не приведено.
Сообщение от 17-го года. И, готового решения, на сколько понимаю - нет.



Исправлено: S-type, 09.07.20 00:24
Ratings: 0 negative/0 positive

Re: изменить PodtgreSql скрипт
pasha_usue

Сообщений: 3448
Откуда: Е-бург
Дата: 09.07.20 07:38:48
Unterminated quoted string это значит, что кавычки непарные. Обсчитались где-то.
Ratings: 0 negative/0 positive

Re: изменить PodtgreSql скрипт
S-type
Автор

Сообщений: 2671
Дата: 09.07.20 11:03:52
Добавил

  
   .WithVariable("function", "$function$")

Т.е. менять переменную function на function. Заработало почти всё, кроме одного самого большого скрипта. С ним всё равно проблема.
Ratings: 0 negative/0 positive

Re: изменить PodtgreSql скрипт
S-type
Автор

Сообщений: 2671
Дата: 09.07.20 11:05:41
pasha_usue
Unterminated quoted string это значит, что кавычки непарные. Обсчитались где-то.

Нет. С кавычками там норма. DBraver отрабатывает скрипт нормально. Проблема в очень длинной строке. Он строку обрезает, и кричит "не кавычки". Конечно, её нет - он же её обрезал. Вот как сделать text - не понятно.
Ratings: 0 negative/0 positive

Re: изменить PodtgreSql скрипт
pasha_usue

Сообщений: 3448
Откуда: Е-бург
Дата: 09.07.20 11:12:42
Возможно поможет.
SELECT E'ab \' c \r\n def'
Ratings: 0 negative/0 positive

Re: изменить PodtgreSql скрипт
S-type
Автор

Сообщений: 2671
Дата: 09.07.20 13:24:14
Разобрался с последним скриптом. Он падал из за того, что ; была в отдельной строке. Почему то DbUp на этом месте обрывал текст скрипта. Как только это убрал (передвинул ; к последнему оператору) - всё заработало.



Исправлено: S-type, 09.07.20 13:55
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 18 WbrErr  (Гостей: 17)

28.11.2020 19:01:25 exec: 0.04
Mem: 1.192 Mb

© 2000-2020 Fox Club 
Яндекс.Метрика