powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / HOW TO cast pg_trigger.tgargs to array of text
2 сообщений из 2, страница 1 из 1
HOW TO cast pg_trigger.tgargs to array of text
    #38975493
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опять хочу странного

как ни странно -- этого странного хотели в разные годы разные люди

http://grokbase.com/t/postgresql/pgsql-sql/022jwh8xm4/function-to-split-pg-trigger-tgargs

или

http://www.slony.info/documentation/2.0/function.decode-tgargs-bytea.html

вопрос: -- не появилось ли за это время чего-то "искаропки", что можно приспособить в том же качестве ?

пока остановился на варианте
Код: sql
1.
,string_to_array(tgargs::text,'\000')


-- чем чревато ?
...
Рейтинг: 0 / 0
HOW TO cast pg_trigger.tgargs to array of text
    #38975694
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwwqопять хочу странного

как ни странно -- этого странного хотели в разные годы разные люди

http://grokbase.com/t/postgresql/pgsql-sql/022jwh8xm4/function-to-split-pg-trigger-tgargs

или

http://www.slony.info/documentation/2.0/function.decode-tgargs-bytea.html

вопрос: -- не появилось ли за это время чего-то "искаропки", что можно приспособить в том же качестве ?

пока остановился на варианте
Код: sql
1.
,string_to_array(tgargs::text,'\000')



IMHO, лучше как-то так (явно использовать escape):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE OR REPLACE FUNCTION arr_remove_last(a anyarray) 
RETURNS anyarray AS $$
SELECT a[array_lower(a, 1):array_upper(a, 1)-1];
$$ LANGUAGE sql IMMUTABLE;

CREATE OR REPLACE FUNCTION conv_tgargs(tgargs bytea) 
RETURNS text[] AS $$
SELECT arr_remove_last(string_to_array(encode(tgargs, 'escape'), '\000'))
$$ LANGUAGE sql IMMUTABLE;



qwwq-- чем чревато ?
Судя по документации по tgargs (argument strings to pass to trigger, each NULL-terminated),
только вот этим (ах да, ещё проверьте кодировку, если у Вас там не латиница):
Код: sql
1.
2.
3.
SET bytea_output TO 'hex';
SELECT conv_tgargs(tgargs), string_to_array(tgargs::text,'\000')
  FROM pg_trigger;



conv_tgargs string_to_array{one,two,three}{"\\x6f6e650074776f00746872656500"}
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / HOW TO cast pg_trigger.tgargs to array of text
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]