Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Временные таблицы и сессии / 10 сообщений из 10, страница 1 из 1
23.02.2008, 15:23
    #35151751
Zashibis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы и сессии
Возникла проблемка:
приложение создает временную таблицу с фиксированным именем.
В другой паралельной сессии идет попытка создать такую же временную таблицу с тем же именем, и разумеется все падает.
Задача - сделать так, чтобы каждая сессия создавала для себя, изолированную от других подключений, временную таблицу.
В худшем случае можно давать таблицам уникальные имена (реализовать в данной конкретной задаче не просто), но есть ли решение покрасивше? Пытаюсь сейчас разобраться с временными схемами (pg_temp_nnn), в документации пока не нашел как с ними правильно работать (создавать), может кто подскажет?
Спасибо.
...
Рейтинг: 0 / 0
23.02.2008, 15:46
    #35151767
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы и сессии
С какой ошибкой падает? Я считал, что временные таблицы видны внутри сессий и не могут пересекаться.
...
Рейтинг: 0 / 0
23.02.2008, 16:08
    #35151774
Zashibis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы и сессии
С ошибкой, что таблица уже существует и нельзя ее создать :)
Это ошибка приложения, а не СУБД, тут ничего не попишешь.
Таблицы получаются нифига не изолированными, пометка CREATE LOCAL TEMP TABLE не спасает, поскольку все временные таблицы в PostgreSQL глобальные.
Остается только либо для каждой сессии выдавать отдельное (временное) пространство имен, с которым не могу пока разобраться, либо таблицы создавать с уникальными именами.
...
Рейтинг: 0 / 0
23.02.2008, 16:25
    #35151786
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы и сессии
ZashibisТаблицы получаются нифига не изолированными, пометка CREATE LOCAL TEMP TABLE не спасает, поскольку все временные таблицы в PostgreSQL глобальные.
вы уверены, или я что-то не так понял тут
Вы можете привести текст постгресовой ошибки?
...
Рейтинг: 0 / 0
23.02.2008, 16:38
    #35151795
Zashibis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы и сессии
По указанной вами ссылке речь идет о создании временной таблицы внутри ХП, в моем же случае таблицы создаются обычным SQL-запросом, и получают глобальные имена.
Можете сами попробвать, открыть две сессии psql, в первой сессии выполнить
Код: plaintext
1.
CREATE TEMP TABLE temp(i int);
А во второй сессии сделать из нее выборку, и увидите, что таблица хоть и временная, но глобальная.
По поводу текста ошибки: программа пытается создать таблицу, перед этим делает проверку, существует ли такая таблица. Если существует - удаляет ее. В этот момент паралельный поток натыкается на то, что его таблицу кто-то грохнул, и ругается.
...
Рейтинг: 0 / 0
23.02.2008, 17:38
    #35151831
Zashibis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы и сессии
Извиняюсь, проблема обнаружена: просто помимо временной таблицы, существовала еще и постоянная, с таким же именем, что и вызывало все глюки.
А временные таблицы сессий все-таки изолированы.
...
Рейтинг: 0 / 0
23.02.2008, 17:42
    #35151833
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы и сессии
ZashibisИзвиняюсь, проблема обнаружена: просто помимо временной таблицы, существовала еще и постоянная, с таким же именем, что и вызывало все глюки.
А временные таблицы сессий все-таки изолированы.А я предупреждал
...
Рейтинг: 0 / 0
23.02.2008, 17:47
    #35151836
Zashibis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы и сессии
Тогда вопрос такой - как изолировать ХП.
Временных ХП в PostgreSQL не существует, я так понял.
(проект переносится из MS SQL Server)
...
Рейтинг: 0 / 0
23.02.2008, 17:52
    #35151839
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы и сессии
ZashibisТогда вопрос такой - как изолировать ХП.
Временных ХП в PostgreSQL не существует, я так понял.
(проект переносится из MS SQL Server)Что значит "изолировать ХП"? Давай подробнее проблему опиши.
...
Рейтинг: 0 / 0
23.02.2008, 18:43
    #35151874
Zashibis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблицы и сессии
Собственно в приложении для различных нужд создаются временные ХП (в MS SQL Server они реально существуют). Эти хранимки создаются (разная начинка для разных задач но всегда с одни именем), выполняются, и тут же удаляются.
Не спрашивайте меня зачем так сделано, логика авторов 1С 7.7 мне неподвластна :)
Когда мы это дело переводим на PostgreSQL, то выясняется, что в паралельных потоках эти хранимки мешают друг другу, поскольку создаются как обычные, а не временные.
Сейчас делаю так, чтобы к их именам подставлялась некая случайная строка (id коннекта), другого пути тут не вижу.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Временные таблицы и сессии / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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