powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Чудны дела твои...
22 сообщений из 22, страница 1 из 1
Чудны дела твои...
    #33294866
Sleeping Daemon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IDS 9.40 UC3
Есть база svodka.
Есть хранимая процедура "deposit".depo()
И смотрится она нормально.
При dbexport'е эта процедура почему то становится "deposit".depo"deposit".depo()
При этом все остальные процедуры нормально.
С чем это может быть связано?
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33303837
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что выдает такой запрос ?
------------------------------------------
-- Procedure Info
--
-- V.Shulzhenko DBA_Tools
------------------------------------------
select '===== sysprocedures =====' _______________
,p.*
,'-- sysprocauth --' _________
,a.*
,'-- sysprocplan --' _________
,(select unique created from sysprocplan l
where p.procid=l.procid) date_created_plan
,(select sum(datasize) from sysprocplan l
where p.procid=l.procid) plan_size
from sysprocauth a,sysprocedures p
where p.procid=a.procid
and p.procname matches
'depo*'
order by 1
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33303941
Sleeping Daemon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilisА что выдает такой запрос ?
------------------------------------------
-- Procedure Info
--
-- V.Shulzhenko DBA_Tools
------------------------------------------
select '===== sysprocedures =====' _______________
,p.*
,'-- sysprocauth --' _________
,a.*
,'-- sysprocplan --' _________
,(select unique created from sysprocplan l
where p.procid=l.procid) date_created_plan
,(select sum(datasize) from sysprocplan l
where p.procid=l.procid) plan_size
from sysprocauth a,sysprocedures p
where p.procid=a.procid
and p.procname matches
'depo*'
order by 1

procname depo_stat_to_dbf
owner son
procid 242
mode D
retsize 714
symsize 1561
datasize 2933
codesize 268
numargs 0
isproc f
specificname
externalname
paramstyle I
langid 2
paramtypes
variant t
client f
handlesnulls t
iterator f
percallcost 0
commutator
negator
selfunc
internal f
class
stack
parallelizable f
costfunc
selconst 0.00
collation ru_RU.915
_________ -- sysprocauth --
grantor son
grantee public
procid 242
procauth e
_________ -- sysprocplan --

date_created_plan 31/08/2005
plan_size 215
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33303959
Sleeping Daemon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilisА что выдает такой запрос ?
------------------------------------------
-- Procedure Info
--
-- V.Shulzhenko DBA_Tools
------------------------------------------
select '===== sysprocedures =====' _______________
,p.*
,'-- sysprocauth --' _________
,a.*
,'-- sysprocplan --' _________
,(select unique created from sysprocplan l
where p.procid=l.procid) date_created_plan
,(select sum(datasize) from sysprocplan l
where p.procid=l.procid) plan_size
from sysprocauth a,sysprocedures p
where p.procid=a.procid
and p.procname matches
'depo*'
order by 1

Вот это с того сервера.
Это именно то.
А то было с друго, с сервера разработчиков.

_______________ ===== sysprocedures =====
procname depo_stat_to_dbf
owner son
procid 242
mode D
retsize 714
symsize 1561
datasize 2933
codesize 268
numargs 0
isproc f
specificname
externalname
paramstyle I
langid 2
paramtypes
variant t
client f
handlesnulls t
iterator f
percallcost 0
commutator
negator
selfunc
internal f
class
stack
parallelizable f
costfunc
selconst 0.00
collation ru_RU.915
_________ -- sysprocauth --
grantor son
grantee public
procid 242
procauth e
_________ -- sysprocplan --
date_created_plan 10/09/2005
plan_size 217
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33304002
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sleeping Daemon
Есть хранимая процедура "deposit".depo()

Что то я не понял из представленной информации - где все таки процедура depo в этой базе ?
Когда говорится "deposit".depo() то предполагается, что deposit это имя владельца процедуры, а depo - непосредственно имя процедуры.
Похоже, что процедуры или уже нет или ее имя достаточно хитрое.
Попробуй в запросе подставить имя для поиска, как
'*depo*'
и из результаты выбери только нужную процедуру, если она там появится.
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33304237
Sleeping Daemon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilis Sleeping Daemon
Есть хранимая процедура "deposit".depo()

Что то я не понял из представленной информации - где все таки процедура depo в этой базе ?
Когда говорится "deposit".depo() то предполагается, что deposit это имя владельца процедуры, а depo - непосредственно имя процедуры.
Похоже, что процедуры или уже нет или ее имя достаточно хитрое.
Попробуй в запросе подставить имя для поиска, как
'*depo*'
и из результаты выбери только нужную процедуру, если она там появится.
Хм. А нет ничего.
Странно все это.
dbaccess смотрю - есть хранимки.
son.balcode_to_dbf son.listp_to_dbf son.soogu_to_dbf

bubka.bank_to_dbf son.listw_to_dbf son.soogu_to_dbf

son.cur_stat_to_d+ son.md_dbf_to_dbf son.svod_us

deposit.depo son.okonh_to_dbf

son.depo_stat_to_+ son.okonh_to_dbf

son.doctype_to_dbf son.opf_to_dbf

son.issuer_to_dbf son.partstat_to_d+

son.issues_to_dbf son.primstat_to_d+

son.kfs_to_dbf son.quota_to_dbf

А скрипт ничего не находит.
А как deposit имя владельца, если такого пользователя в системе нет?
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33304418
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что девелоперы говорят на эту тему ? Должна быть такая процедура depo или нет ? Если ее текст присутствует, то можно попробовать дропнуть и создать процедуру заново.
Прочекать БД на предмет целостности...
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33305579
Sleeping Daemon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilisА что девелоперы говорят на эту тему ? Должна быть такая процедура depo или нет ? Если ее текст присутствует, то можно попробовать дропнуть и создать процедуру заново.
Прочекать БД на предмет целостности...
Девелоперы говоря не знаем. Я им посоветовал переименовать процедуру в depo_чего_то_там. Мля, они говорят мы не знаем как.

Такая процедура вообще есть.
Напомню, при dbexport'е эта процедура становится в таком виде:
"deposit".depo"deposit".depo() вместо "deposit".depo()
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33305931
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ктсати, скрипт с маской '*depo*' нужно выполнить под informix-ом.
Это так и было сделано ?

А переименование процедуры происходит путем удаления старой и создания новой :)
Я даже проверил не является ли depo зарезервированным словом для 9.4 - оказалось нет, слово разрешенное, как и deposit...
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33306178
Sleeping Daemon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilisКтсати, скрипт с маской '*depo*' нужно выполнить под informix-ом.
Это так и было сделано ?

А переименование процедуры происходит путем удаления старой и создания новой :)
Я даже проверил не является ли depo зарезервированным словом для 9.4 - оказалось нет, слово разрешенное, как и deposit...
Из под информикса. Другого доступа у меня в принципе нет.
Сегодня пришла разработчица, которая крэйтила эту процедуру.
Сказал что бы переименовла.
Переименовать не сложно, сложнее найти, где ссылки на неё и там переименовать.
Спасибо за помощь.
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33306226
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sleeping DaemonПереименовать не сложно, сложнее найти, где ссылки на неё и там переименовать.
ServerStudio рулит - можно найти все вхождения в тексты процедур, триггеров, view.

А что все таки дала проверка oncheck-oм ?
Ведь причина то интересна.... Возможно, в имя попал какой то символ с кодом из второй половины таблицы, возможно кто то ручками правил системные таблицы, возможно просто во время создания был какой то сбой...
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33306899
Sleeping Daemon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilis Sleeping DaemonПереименовать не сложно, сложнее найти, где ссылки на неё и там переименовать.
ServerStudio рулит - можно найти все вхождения в тексты процедур, триггеров, view.

А что все таки дала проверка oncheck-oм ?
Ведь причина то интересна.... Возможно, в имя попал какой то символ с кодом из второй половины таблицы, возможно кто то ручками правил системные таблицы, возможно просто во время создания был какой то сбой...
Я не проверял oncheck'ом.
Эта процедера номально работет. И в базе она видимо нормально? сидит.
Может это неадекватное поведение dbexport'а? У меня пока идея поменять имя процедуры на depo_xxxx. Программисты как то не проявляют интузазизм этого делать, придется все процедуры, связанные с этой лопатить.
Хотя это можно сделать в файле снятым дбсхемой сделать.

После "ручного" исправления sql файла(под linix'ом) dbimport поднимет базу нормально. Только меня достали эти "ручные" исправления и кроме того не ясно, какой сюрприз может быть преподнесен в дальнейшем.
База поднимается переодически dbimport'ом, раз в квартал на резервном сервере при проведении тренинга.
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33307418
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделай dbexport на том резервном сервере (надеюсь, там такая же версия и платформа).
Если ошибка останется, то очень смахивает на баг утилиты, коих у нее было и есть множество.
Попробуй на том же сервере переименовать процедуру и проверить результат.
Возможно, что дело не в названии, а в каких нибудь вложенных комментах в теле процедуры или даже закомментированном , но ошибочном операторе.
К сожалению утилиты экспорта-импорта писали "индусы" :)
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33307562
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что возвращает
Код: plaintext
1.
2.
3.
4.
select p.*
from sysprocedures p
where p.procname matches 'depo*'

-----------------------------------------------------------
Решительный шаг вперед -- результат хорошего пинка сзади
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33308043
Sleeping Daemon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Журавлев Дениса что возвращает
select p.*
from sysprocedures p
where p.procname matches 'depo*'

dbaccess дает вот это:
procname depo
owner deposit
procid 241
mode R
retsize 98
symsize 199
datasize 481
codesize 100
numargs 0
isproc f
specificname
externalname
paramstyle I
langid 2
paramtypes
variant t
client f
handlesnulls t
iterator f
percallcost 0
commutator
negator
selfunc
internal f
class
stack
parallelizable f
costfunc
selconst 0.00
collation ru_RU.915
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33308125
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sleeping Daemon
dbaccess дает вот это:
procname depo
owner deposit
procid 241


а что возвращает:
Код: plaintext
1.
2.
3.
Select data
From sysprocbody
where  datakey = "T" and  procid =  241  and seqno = 0 
Т.е. покажи начало процедуры, что там в create proc..... написано
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33309009
Sleeping Daemon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Журавлев Денис Sleeping Daemon
dbaccess дает вот это:
procname depo
owner deposit
procid 241


а что возвращает:
Код: plaintext
1.
2.
3.
Select data
From sysprocbody
where  datakey = "T" and  procid =  241  and seqno = 0 
Т.е. покажи начало процедуры, что там в create proc..... написано
Ничего не возвращет, ничего не находит.
Но dbaccess(database->info->routine) показывает вот что:

create procedure "deposit".depo()
returning decimal(18,2);

define rest decimal(18,2);
define Sclient_id int;

Foreach
select client_id, amount into Sclient_id, rest from svod_issues order by client_id

return rest
with resume;
end foreach;

end procedure
;
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33309157
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sleeping Daemon Журавлев Дениса что возвращает
select p.*
from sysprocedures p
where p.procname matches 'depo*'

dbaccess дает вот это:
procname depo
owner deposit
procid 241
mode R
...
collation ru_RU.915
Интересно, оказывается мой SQL запрос не показывал эту процедуру, потому что ее нет в sysprocauth, что не совсем нормально.
И, наверное, именно поэтому и "едет крыша" у dbexport.
Поэтому стандартная перезагрузка процедуры (пересоздание) должна помочь.
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33310584
Sleeping Daemon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilis Sleeping Daemon Журавлев Дениса что возвращает
select p.*
from sysprocedures p
where p.procname matches 'depo*'

dbaccess дает вот это:
procname depo
owner deposit
procid 241
mode R
...
collation ru_RU.915
Интересно, оказывается мой SQL запрос не показывал эту процедуру, потому что ее нет в sysprocauth, что не совсем нормально.
И, наверное, именно поэтому и "едет крыша" у dbexport.
Поэтому стандартная перезагрузка процедуры (пересоздание) должна помочь.
А dbexport -> правка этой процедуры -> dbimport должны помочь?
Если должны - то не помогли. Переносил я с одного сервера на другой все базы недавно. Так при dbexport'е уже с нового сервера эта бодяга осталась.
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33311058
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sleeping Daemon
procname depo
owner deposit
procid 241
mode R

Только сейчас обратил внимание на mode, который явно не стандартен.
Т.е. при создании процедуры deposit уже выл указан как владелец процедуры, но создавал ее кто то другой.
--------------- IBM Informix Guide to SQL: Reference
In the mode column, the R mode is a special case of the O mode. A routine is
in restricted (R)mode if it was created with a specified owner that is different
from the routine creator. If routine statements involving a remote database
are executed, the database server uses the permissions of the user that
executes the routine instead of the permissions of the routine owner. In all
other scenarios, R-mode routines behave the same as O-mode routines.
------------
Скорее всего, это произошло по ошибке и, возможно, решением будет при новой загрузке убрать владельца (deposit), чтобы владельцем стал тот, кто загружает, или указать того же son как и в других процедурах (в одной я, по крайней мере, видел).
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33311141
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasilis
Интересно, оказывается мой SQL запрос не показывал эту процедуру, потому что ее нет в sysprocauth, что не совсем нормально.

Почему это не нормально? Это для вью ненормально (когда его нет в tabauth). Или я путаю?

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

А как при dbimport от dba будет? Тоже и будет, один пользователь создаст процедуры с другим owner.

Проблема мне кажется именно в криворукости индусов и в том что имя является подстрокой владельца, попробовать повторить тоже самое, посмотреть на вывод dbschma, dbexport и писать репорт в теххсаппотр.

Я немного программирую в том числе я программировал и это место (в ESQLed..), с трудом могу себе представить как можно так ошибиться. Регэкспами что-ли там в кавычки заворачивают? Зачем? Текст же готовый уже лежит, или именно из-за mode R они там извращаются.
...
Рейтинг: 0 / 0
Чудны дела твои...
    #33311419
Sleeping Daemon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Журавлев Денис vasilis
Интересно, оказывается мой SQL запрос не показывал эту процедуру, потому что ее нет в sysprocauth, что не совсем нормально.

Почему это не нормально? Это для вью ненормально (когда его нет в tabauth). Или я путаю?

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

А как при dbimport от dba будет? Тоже и будет, один пользователь создаст процедуры с другим owner.

Проблема мне кажется именно в криворукости индусов и в том что имя является подстрокой владельца, попробовать повторить тоже самое, посмотреть на вывод
/* skip */

В другой таблице много таких процедур "deposit".depo_дальше_чего_то_там.
Но только именно эта процедура так себя ведет.
Я программерам предложил переименовть эту процедуру.
Когда сделают - проверю. А пока - видимо только теоретизировать можно.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Чудны дела твои...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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