powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / хочу странного: hstore(record except keys[])
6 сообщений из 6, страница 1 из 1
хочу странного: hstore(record except keys[])
    #38948845
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если заглянет кто-то из hstore--писателей
-- хочу [в весьма отдалённом будущем] что-то типа:
Код: sql
1.
hstore(record except keys[])



т.е. пропустить уже на этапе заворачивания
Код: sql
1.
delete (hstore(NEW.*) ,fields[])



-- а то неприятная дилемма --
то ли вычитывать из системников состав полей, и собирать весь hstore самому, руками на коленке, со всеми вычетами [так и сделаю, кажется],
то ли через упомянутый delete чистить результат полного заворачивания. (в исключаемых полях предполагаются БЛОБ-ы -- зачем мне их сначала класть в hstore, чтобы потом подропать из него же ? )

или же хочу операцию/функцию обратную
Код: sql
1.
2.
3.
populate_record(record,hstore)
--- скажем: ---
populate_hstore(record,hstore)

(заполнить предопределенный поля hstore тем, что найдётся в record-е, оставив бесхозные поля необработанными.


PS если кто видит третий путь -- намекните.
...
Рейтинг: 0 / 0
хочу странного: hstore(record except keys[])
    #38949019
Oleg Bartunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

а что мешает использовать delete ?

=# select delete('a=>b, c=>1'::hstore, ARRAY['c','a']);
delete
--------

(1 row)
...
Рейтинг: 0 / 0
хочу странного: hstore(record except keys[])
    #38949041
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

если это after insert/update триггер, то можно прямо прописать null в нужные поля в NEW.
...
Рейтинг: 0 / 0
хочу странного: hstore(record except keys[])
    #38949053
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg Bartunovqwwq,

а что мешает использовать delete ?

=# select delete('a=>b, c=>1'::hstore, ARRAY['c','a']);
delete
--------

(1 row)

я и написал, что есть вариант с делет. только он состоит в том , чтобы сначала, значицца положить мегабайтный блов в шсторе, а потом его оттуа дропнуть.

вот этого всего хотелось бы избежать.

таки вы , олег, не практикуете, с очевидностью.
...
Рейтинг: 0 / 0
хочу странного: hstore(record except keys[])
    #38949055
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexiusqwwq,

если это after insert/update триггер, то можно прямо прописать null в нужные поля в NEW.
красивая мысль.
только в new оно остаться должно
-- следовательно -- использовать буферный record.
-- следовательно размножить блоб минимум дважды -- при кладке в этот буферный рекорд, с последующем обнулением. (или кладку уже писать с разбором всего набора полей (это универсальный триггер, т.ч. тип надо будет извлекать на лету), другого способа положить сразу null в выделенное поле я не вижу -- т.е. тот же вид, но уже в профиль.
...
Рейтинг: 0 / 0
хочу странного: hstore(record except keys[])
    #39084462
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg Bartunov,

размышляя о вечном [ковыряя в носу], обнаружил отсутствие в hstore--расширении агрегата вида "hstore_agg()"

думаете, он не нужен ?

в моем конкретном случае оно бы меня вряд ли спасло [-- надо заполнить хештаблицу имён prepared стейтментов на агрегирующем проходе, агрегируя sql создания и вызова самих prepared string_agg-ами в том же проходе], но факт


попутно не обнаружил в справке ограничения на длину ключа. его нет ?
и чем чреваты длинные ключи ? (например -- ключ , созданный из имён по маске ~ "схема.таблица.поле1[,поле2[,...полеN]..] при 100 полях даёт оценку длины ключа в ~6400 символов ).
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / хочу странного: hstore(record except keys[])
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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