Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Временные таблицы - кто - нибудь пользуется? / 7 сообщений из 7, страница 1 из 1
03.10.2005, 21:20
    #33302409
mefmsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы - кто - нибудь пользуется?
Что-то я не догоняю логику работы с сабжем...
Грабли классические и здесь уже вроде описанные, но полного решения так и не нашёл.
В процедуре пишем
1. create temporary table tst ... on commit drop
2. select * from tst ....
Не работает при повторном вызове :( - Relation with OID 12345 отсутствует в базе.

В процедуре пишем
1.execute 'create temporary table tst ...'
2. execute 'select * from tst ....' - Работает :)

Ясно, что на момент компиляции имена транслируются в OID и сохраняются в недрах ядра. А как тогда делать select into my_var any_field from tst?
Или for rec in select * from tst loop?
Если этого вообще нельзя делать, то зачем тогда временные таблицы?
Может кто -то умеет их правильно применять?
...
Рейтинг: 0 / 0
04.10.2005, 10:02
    #33302883
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы - кто - нибудь пользуется?
mefmskЧто-то я не догоняю логику работы с сабжем...
Грабли классические и здесь уже вроде описанные, но полного решения так и не нашёл.
В процедуре пишем
1. create temporary table tst ... on commit drop
2. select * from tst ....
Не работает при повторном вызове :( - Relation with OID 12345 отсутствует в базе.

В процедуре пишем
1.execute 'create temporary table tst ...'
2. execute 'select * from tst ....' - Работает :)

Ясно, что на момент компиляции имена транслируются в OID и сохраняются в недрах ядра. А как тогда делать select into my_var any_field from tst?
Или for rec in select * from tst loop?
Если этого вообще нельзя делать, то зачем тогда временные таблицы?
Может кто -то умеет их правильно применять?
Я, например, решаю задачу ведения лога через времянку.
Т.е. сразу после подсоединения создаю временную таблицу,заношу туда ID пользователя, а потом ею пользуюсь во всех триггерах.
...
Рейтинг: 0 / 0
04.10.2005, 11:41
    #33303209
mef
mef
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы - кто - нибудь пользуется?
Andrey Daeron
Я, например, решаю задачу ведения лога через времянку.
Т.е. сразу после подсоединения создаю временную таблицу,заношу туда ID пользователя, а потом ею пользуюсь во всех триггерах.

Правильно, у меня тоже примерно так и работает, только описанная ошибка возникает, если ф-ю вызвать дважды внутри одного коннекта:

Connect
exec Function_test
exec Function_test
Finish

Если делать
Connect
exec Function_test
Finish
Connect
exec Function_test
Finish
То всё прокатывает, но каждый раз переконнекчиваться как-то неправильно ИМХО...
...
Рейтинг: 0 / 0
04.10.2005, 12:16
    #33303334
mwolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы - кто - нибудь пользуется?
Эта баго-фича обсуждалась уже.
Фишка в том, что в процедуре вместо имён юзаются ОИДы. Когда создаётся временная таблица, ей присваивается ОИД, и он используется в операторах. Когда процедура вызывается второй раз, то юзается старый план, а там естесно старый ОИД, тот которого уже нет.
...
Рейтинг: 0 / 0
04.10.2005, 14:24
    #33303828
mef
mef
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы - кто - нибудь пользуется?
Так это можно обойти как - то?
Например, план насильно обновить? Это же явный баг по - моему
...
Рейтинг: 0 / 0
04.10.2005, 14:39
    #33303894
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы - кто - нибудь пользуется?
...
Рейтинг: 0 / 0
04.10.2005, 14:52
    #33303934
mef
mef
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы - кто - нибудь пользуется?
Спасибо, хоть так может работать будет...
for my_rec in execute "..." loop
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Временные таблицы - кто - нибудь пользуется? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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