powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Informix [игнор отключен] [закрыт для гостей] / Temp table exists?
20 сообщений из 20, страница 1 из 1
Temp table exists?
    #36960821
Портос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, а как определить наличие временной таблицы в данной сессии? В других сессиях временная таблица с таким именем может существовать. Поэтому выражение

select count(*) from sysmaster:systabnames s
inner join sysmaster:systabinfo i on i.ti_partnum=s.partnum
where tabname = 'bla-bla-bla'
and sysmaster:BITVAL(i.ti_flags,'0x0020') = 1

не подходит.
Сессию же я могу определить:
SELECT DBINFO('sessionid') FROM systables

Или другими словами:
Как определить, в какой сессии создана временная таблица?
Informix 7.31.
...
Рейтинг: 0 / 0
Temp table exists?
    #36960847
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПортосГоспода, а как определить наличие временной таблицы в данной сессии?
select 1 from вашатаблица where 1=0
...
Рейтинг: 0 / 0
Temp table exists?
    #36961089
Портос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шутите, батенька?
Если таблицы нет, то:
The specified table (bla-bla-bla) is not in the database.

Эксепшенов нам не надо!
...
Рейтинг: 0 / 0
Temp table exists?
    #36961090
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПортосЭксепшенов нам не надо!а зря
...
Рейтинг: 0 / 0
Temp table exists?
    #36961240
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев ДенисПортосЭксепшенов нам не надо!а зря
+1
делов-то - exception внутри ХП перехватить :).
Но: ХП неудобен (на 7.31), когда хочется одну ХП на проверку любой таблицы...

На 7.31 я так и не нашёл в своё время способа. Максимум, что получилось - по имени пользователя, что удовлетворит конечно не всех:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
-----------------------------------------------------------
-- Find all TEMP tables by Username (owner)
--
-- V.Shulzhenko   DBA_Tools
-----------------------------------------------------------
set isolation to dirty read;
select   tn.tabname[ 1 , 18 ]       temp_table
        ,tn.dbsname[ 1 , 18 ]       db_name
--        ,tn.owner[1,8]        owner
        ,s.name[ 1 , 14 ]           dbspace
        ,substr(sum(ti_nptotal), 1 , 6 )     pages
        ,substr(sum(ti_npused), 1 , 6 )      used
--        ,substr(sum(ti_nextns),1,4)    extents
        ,substr(sum(ti_nrows), 1 , 9 )       rows
from systabnames tn,systabinfo ti,sysdbspaces s
where   tn.partnum = ti.ti_partnum 
        and s.dbsnum=partdbsnum(ti_partnum)         
        and (bitval(ti_flags, 32 )= 1  or bitval(ti_flags, 64 )= 1  or bitval(ti_flags, 128 )= 1 )
        and tn.owner matches
--'Owner (username) or *'
--'*'
--group by 1,2,3
--order by 1,2,3
...
Рейтинг: 0 / 0
Temp table exists?
    #36961300
Портос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну ладно, картина ясна.

Похоже, эксепшн - это самое простое решение... :)

Благодарствую, друзья!
...
Рейтинг: 0 / 0
Temp table exists?
    #36961733
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПортосГоспода, а как определить наличие временной таблицы в данной сессии?
...
Как определить, в какой сессии создана временная таблица? Informix 7.31.
Temp таблица

P.S. Даже странно, что такой популярный и старый вопрос отсутствует в FAQ....
...
Рейтинг: 0 / 0
Temp table exists?
    #36962787
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПортосНу ладно, картина ясна.

Похоже, эксепшн - это самое простое решение... :)

Благодарствую, друзья!

Я пытаюсь дропнуть темп таблицу в начале, перехватывая эксепшн. минимум головной боли.
...
Рейтинг: 0 / 0
Temp table exists?
    #36963110
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Главное, не дропнуть постоянную таблицу вместо временной.
А вообще, в 11.70 уже появились SQL-операторы
DROP IF EXISTS
CREATE IF NOT EXITS
...
Рейтинг: 0 / 0
Temp table exists?
    #36963712
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasilisПортосГоспода, а как определить наличие временной таблицы в данной сессии?
...
Как определить, в какой сессии создана временная таблица? Informix 7.31.
Temp таблица

P.S. Даже странно, что такой популярный и старый вопрос отсутствует в FAQ....

Указанная ссылка на топик заканчивается оптипессимистично: "теперь осталось только выяснить, откуда onstat берет информацию по временным таблицам для конкретного SID-а :)"...
Так что приемлемого ответа на вопрос "как для 7.31 определить наличие временной таблицы в данной сессии" кроме "select/drop-> exception -> АГА!" пока не имеется. И надеюсь, больше и не понадобится :)
...
Рейтинг: 0 / 0
Temp table exists?
    #36965064
GVF112GVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АнатоЛойvasilisпропущено...

Temp таблица

P.S. Даже странно, что такой популярный и старый вопрос отсутствует в FAQ....

Указанная ссылка на топик заканчивается оптипессимистично: "теперь осталось только выяснить, откуда onstat берет информацию по временным таблицам для конкретного SID-а :)"...
Так что приемлемого ответа на вопрос "как для 7.31 определить наличие временной таблицы в данной сессии" кроме "select/drop-> exception -> АГА!" пока не имеется. И надеюсь, больше и не понадобится :)

А что SQLIDEBUG=2:xxx не показывает дамп для сессий onstat ?!

С уважением,
Вадим.
...
Рейтинг: 0 / 0
Temp table exists?
    #36966494
zaiets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как же - показівает:
# sqliprint /tmp/zzzz.dbg_23806
SQLIDBG Version 1
#
...
Рейтинг: 0 / 0
Temp table exists?
    #36966577
GVF112GVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zaietsА как же - показівает:
# sqliprint /tmp/zzzz.dbg_23806
SQLIDBG Version 1
#

Ну и ... ?! ... дамп псевдо-запроса (через view на структуры SHM памяти)
есть или нет ?

С уважением,
Вадим.
...
Рейтинг: 0 / 0
Temp table exists?
    #36966909
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVF112GVFАнатоЛойпропущено...


Указанная ссылка на топик заканчивается оптипессимистично: "теперь осталось только выяснить, откуда onstat берет информацию по временным таблицам для конкретного SID-а :)"...
Так что приемлемого ответа на вопрос "как для 7.31 определить наличие временной таблицы в данной сессии" кроме "select/drop-> exception -> АГА!" пока не имеется. И надеюсь, больше и не понадобится :)

А что SQLIDEBUG=2:xxx не показывает дамп для сессий onstat ?!

С уважением,
Вадим.

onstat лезет непосредственно в shared memory и берет данные оттуда, из внутренних структур. Никаких обращений к псевдотаблицам не происходит.
...
Рейтинг: 0 / 0
Temp table exists?
    #36967175
GVF112GVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВыбегаллоGVF112GVFпропущено...


А что SQLIDEBUG=2:xxx не показывает дамп для сессий onstat ?!

С уважением,
Вадим.

onstat лезет непосредственно в shared memory и берет данные оттуда, из внутренних структур. Никаких обращений к псевдотаблицам не происходит.

Куда лезет onstat - Я знаю ... в свое время, изучал исходники на С.

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

Насколько Я помню, в SMI, используются псевдо-таблицы (часть из них view на структуры памяти SHM). Они также могут использоваться в программах, реализованных на ESQL/C ... :)

Вообще-то, тенденция такова, что все чаще в продуктах IBM (DB2/Informix),
используются табличные функции в том числе и для досупа у структурам разделяемой памяти.

С уважением,
Вадим.
...
Рейтинг: 0 / 0
Temp table exists?
    #36967270
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVF112GVFВыбегаллопропущено...


onstat лезет непосредственно в shared memory и берет данные оттуда, из внутренних структур. Никаких обращений к псевдотаблицам не происходит.

Куда лезет onstat - Я знаю ... в свое время, изучал исходники на С.

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

Насколько Я помню, в SMI, используются псевдо-таблицы (часть из них view на структуры памяти SHM). Они также могут использоваться в программах, реализованных на ESQL/C ... :)

Вообще-то, тенденция такова, что все чаще в продуктах IBM (DB2/Informix),
используются табличные функции в том числе и для досупа у структурам разделяемой памяти.

С уважением,
Вадим.

onstat-у сто лет в обед. Никаких SMI на момент его написания (1990-1994, I guess) не было. Так что не стоит задерживать дыхание, ожидая SQLIDEBUG trace от его вызова.
...
Рейтинг: 0 / 0
Temp table exists?
    #36967613
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVF112GVFКуда лезет onstat - Я знаю ... в свое время, изучал исходники на С.
А вы случайно не знаете, где можно увидеть, на какой таблице произошел затык по удалению?
Задача следующая: в БД есть основные таблицы и куча специализированных (для разных типов изделий и разных пользователей). Основные таблицы давно устоялись, а специализированные появляются вместе с изделиями новых типов. Периодически при удалении записей из основных таблиц возникает сбой из-за того, что у какой-нибудь новой специализированной таблицы (которая косвенно связана с основной ключом с каскадным удалением) не установлено разрешение на удаление данных для текущего пользователя. Можно ли как-нибудь увидеть имя таблицы, на которой произошел затык?
...
Рейтинг: 0 / 0
Temp table exists?
    #36968137
GVF112GVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bk0010GVF112GVFКуда лезет onstat - Я знаю ... в свое время, изучал исходники на С.
А вы случайно не знаете, где можно увидеть, на какой таблице произошел затык по удалению?
Задача следующая: в БД есть основные таблицы и куча специализированных (для разных типов изделий и разных пользователей). Основные таблицы давно устоялись, а специализированные появляются вместе с изделиями новых типов. Периодически при удалении записей из основных таблиц возникает сбой из-за того, что у какой-нибудь новой специализированной таблицы (которая косвенно связана с основной ключом с каскадным удалением) не установлено разрешение на удаление данных для текущего пользователя. Можно ли как-нибудь увидеть имя таблицы, на которой произошел затык?

Вообще-то вопрос достаточно не простой.
Все зависит от того, на каком уровне Вы хотите анализировать,
интересующий Вас инцидент - на уровне приложения, пользовательской сессии,
инстанции INFORMIX и т.д.

Например,
для этих целей, Вы можете использовать - AUDIT (фильтровать не удавшиеся события- DLRW (DELETE ROW), ACTB (Access Table), and so on).

Другой возможный вариант - анализ кодов SQL error, ISAM error для пользовательских
сессий (используя SMI - интерфейс, утилиту ONSTAT и т.д.).

Если есть деньги,
Вы можете использовать решение - IBM Guargium (Audit & Report)
http://www.guardium.com/index.php/pr/923

С уважением,
Вадим.
...
Рейтинг: 0 / 0
Temp table exists?
    #36968141
GVF112GVF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВыбегаллоGVF112GVFпропущено...


Куда лезет onstat - Я знаю ... в свое время, изучал исходники на С.

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

Насколько Я помню, в SMI, используются псевдо-таблицы (часть из них view на структуры памяти SHM). Они также могут использоваться в программах, реализованных на ESQL/C ... :)

Вообще-то, тенденция такова, что все чаще в продуктах IBM (DB2/Informix),
используются табличные функции в том числе и для досупа у структурам разделяемой памяти.

С уважением,
Вадим.

onstat-у сто лет в обед. Никаких SMI на момент его написания (1990-1994, I guess) не было. Так что не стоит задерживать дыхание, ожидая SQLIDEBUG trace от его вызова.

Возможно, что Вы правы, но жизнь не стоит на месте.
Многие функции утилит (oncheck, onparams, onspaces...) уже реализованы как SQL-функции.

Так что все может быть ... ;)
Например, отключение Вашей инстанции посредством удаленного вызова SQL-функции ...
... шутка ... :)

С уважением,
Вадим.
...
Рейтинг: 0 / 0
Temp table exists?
    #36969092
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVF112GVF, у топик-стартера Informix 7.31 (ещё и непонятно насколько пропатченый).
Портос, если Вас не затруднит, попробуйте предложение с SQLIDEBUG от GVF112GVF. Может прямого ответа на вопрос Вы и не получите (в чём уверен Выбегалло), но опыт использования SQLIDEBUG тоже чего-то стоит :).
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Temp table exists?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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