172 похожих чатов

В функции выставляю SET search_path TO 'admin', pg_temp;; Но после выполнения



EXECUTE format(......)

current_schema = public

(в коде EXECUTE нигде не меняется search_path)

Почему может изменяется current_schema?

14 ответов

4 просмотра

Почему вы думаете, что она меняется?

Ilya Anfimov
Почему вы думаете, что она меняется?

Потому что использую current_scheme в следующей коианде и она уже не admin а public

Вадим Бударин Бударин
Потому что использую current_scheme в следующей ко...

А почему вы думаете, что она до того была не public? (И вообще, в каждом месте, где меняется схема или вы думаете, что меняется схема -- вставьте RAISE NOTICE на search_path и current_schemas('t') )

Ilya Anfimov
А почему вы думаете, что она до того была не publi...

Так и сделал - куча операторов до execute не меняют схему а вот после execute схема меняется Поэтому и решил спросить что может менять схему

Вадим Бударин Бударин
Так и сделал - куча операторов до execute не меняю...

Так и покажыте результат. (На самом деле, если всё так то реалистичных варианта два -- у вас реально внутри там меняется схема или у вас pg_bounce не в session mode, который меняет подключения как хочет).

Valery
Format это ваша функция с выставленным search_path...

Нет - search_path выставляется в начале функции в которой дальше в теле происходить вызов execute format и вот после него происходит смена схемы

Вадим Бударин Бударин
Нет - search_path выставляется в начале функции в ...

Ну, приведите всю функцыю -- подумаем, чо там как.

Ilya Anfimov
Ну, приведите всю функцыю -- подумаем, чо там как.

CREATE OR REPLACE FUNCTION admin.func ( func_name text; ) $body$ DECLARE BEGIN SET search_path TO 'admin', pg_temp; SELECT ....; PERFORM admin.func1(...); UPDATE .... VALUES (current_schema, ....); RAISE NOTICE '%', current_schema; // 'admin' EXECUTE format('SELECT "admin".%s()', func_name); RAISE NOTICE '%', current_schema; // 'public' UPDATE .... VALUES (current_schema, ....); END; $body$ LANGUAGE 'plpgsql' реальные имена и фамилии заменены на вымышленные но все в точности как приведено выше

Ilya Anfimov
Ну, теперь приведите текст func_name.

Точнее, конкретно admin.$func_name

Ilya Anfimov
Ну, теперь приведите текст func_name.

Простая строка ''check_balance' - к примеру

Похожие вопросы

Обсуждают сегодня

Сообщение* в закодированном виде. То есть, просто сделать sendMessage?text=Привет бла-бла! не получится, надо в HEX переводить, и добавлять процент, типа такого: sendMessage?t...
КТ315
21
А случайно нет ли в паскале штатной возможности передать указатель и количество туда где array of в качестве аргумента?
zamtmn
25
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
58
всем трям! Кто-нибудь работал со связкой werf + harbor + trivy ? Во время сборки образа выходит ошибка "PROJECTPOLICYVIOLATION: current image with "Pending" status of vulnerab...
Авессалом
11
Всем привет. Испытываю проблемы в работе БД, а именно огромного роста логов, такого характера: 024-05-16 18:39:07 +05 sentry sentry [unknown] 1050169 7-1 app-sentry01.corp.ru>...
Alexey
2
Если подытожить: По мнению Розыча и Хемуля и др. - предпочтительно по возможности объявлять в секции имплементации потому-что: 1) Выше скорость компиляции 2) Не замусоривается...
notme
7
Ну раз я пока тут, задам пару глупых вопросов. Зачем писать на ассемблере если компилятор довольно умный, а ассемблер много времени занимает? В каких прикладных задачах сейчас...
Максим Рябцев
20
Хм. А телеграм апи работают через HTTP?
The Bird of Hermes
14
Почему Telegram пишет, что объект media не найден, хотя на самом деле я его передаю? Делаю на urllib, без зависимостей, так надо. Вызываю метод sendMediaGroup с таким JSON: ...
Alexey S
1
при переезде на werf v2 (2.0.4) столкнулся с тем что оно теперь пытается пропатчить namespace в который деплоит релиз хотя в шаблонах kind: namespace отсутствует. ┌ Update Na...
Sergey Sokolov
1
Карта сайта