powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ошибка
42 сообщений из 42, показаны все 2 страниц
Ошибка
    #38732472
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый всем день
Программа стала выдавать ошибку входных данных. Проверил процедуру, все параметры в норме. Перекомпилировал процедуру+ от неё зависящие, ошибка перестала сразу появляться,но при обработке выходит снова. Техподдержка просит сделать бэкап/рестор (был уже такой случай,проблема была решена, но рестор базы в 260 гигов.... ну вы поняли). Что можно сделать?
...
Рейтинг: 0 / 0
Ошибка
    #38732494
Поручик ·· Ржевский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarДобрый всем день
Программа стала выдавать ошибку входных данных. Проверил процедуру, все параметры в норме. Перекомпилировал процедуру+ от неё зависящие, ошибка перестала сразу появляться,но при обработке выходит снова. Техподдержка просит сделать бэкап/рестор (был уже такой случай,проблема была решена, но рестор базы в 260 гигов.... ну вы поняли). Что можно сделать?1. научиться жать Ctrl+C вместо Alt+PrtScr
2. выставить претензию разработчикам говно-софта.
3. перестать колупать гвоздиком метаданные на продакшене.
4. убить себя ап стену (опционально).
...
Рейтинг: 0 / 0
Ошибка
    #38732505
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Один высказался,а мысли по существу будут?
...
Рейтинг: 0 / 0
Ошибка
    #38732559
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarПроверил процедуру, все параметры в норме. Перекомпилировал процедуру+ от неё зависящие, ошибка перестала сразу появляться,но при обработке выходит снова.

А перед перекомпилированием самой процедуры и всех зависимых пользователей выгонял или просто в wait транзакции выполнял?
...
Рейтинг: 0 / 0
Ошибка
    #38732560
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,выгонял
...
Рейтинг: 0 / 0
Ошибка
    #38732561
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar... ошибка перестала сразу появляться,но при обработке выходит снова. ...
Это как???

ps/
Кроме как
Повыгонять всех и сделать то что делал " Перекомпилировал процедуру+ от неё зависящие"
мыслей у меня нет
...
Рейтинг: 0 / 0
Ошибка
    #38732571
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7mGallemar... ошибка перестала сразу появляться,но при обработке выходит снова. ...
Это как???

Раньше ошибку получал при запуске,сейчас софтина минут 30 думает с обработкой данных и показывает ошибку
...
Рейтинг: 0 / 0
Ошибка
    #38732577
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

Ну а сами входные данные в норме? Может там при формировании скрипта (или как оно у вас импортирует) происходит облом где-та в середине пакета.
...
Рейтинг: 0 / 0
Ошибка
    #38732579
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,с входными порядок
...
Рейтинг: 0 / 0
Ошибка
    #38732606
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

попробуй firebird.msg подсунуть. Может текст ошибки попродробней будет.

Что с процедурой делалось? Если был добавлен новый параметр, то может стоит ему значение по умолчанию прописать.
...
Рейтинг: 0 / 0
Ошибка
    #38732611
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЧто с процедурой делалось? Если был добавлен новый параметр, то может стоит ему значение по умолчанию прописать.
Ничего не делалось,проверял
...
Рейтинг: 0 / 0
Ошибка
    #38732612
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemarс входными порядок
Чем докажешь?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка
    #38732616
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,ничем,интуиция. Через 38 минут закончится рабочий день и решение проблемы ляжет на плечи саппорта. Вечером только ещё раз перекомпилирую все процедуры.
...
Рейтинг: 0 / 0
Ошибка
    #38732620
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

Я бы все-таки вместо процедуры (если это для нее формируется входной поток) поиспользовал заглушку и выбросил бы данные, что на вход пришли в табличку для анализа. То, что процедуры ломается где-то посередине говорит скорее о проблемах во входных данных - т.е. в какой-то момент вместо EXECUTE ...AAAA(1,2,3) пытается выполнится .... AAAA(1,2,3,4)
...
Рейтинг: 0 / 0
Ошибка
    #38732626
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

Ну и добавил бы еще один параметр в процедуру с default значением. Тогда можно будет поймать хотя бы несоответствие типов, если я прав и какой-то момент проце подсовывают еще один левый параметр.
...
Рейтинг: 0 / 0
Ошибка
    #38732637
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

попробуй запустить трейс и в нём выбрать опцию log_errors
...
Рейтинг: 0 / 0
Ошибка
    #38732676
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениспопробуй запустить трейс и в нём выбрать опцию log_errors

Лучше с фильтром на имя процедуры. Так он заодно увидит если приложение её пересоздаёт на
лету.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка
    #38732684
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При подобной ошибке не мешало бы увидеть стек вызова. Там сразу было бы видно кто что вызывает и с какими параметрами.
Но можно и погадать :)
...
Рейтинг: 0 / 0
Ошибка
    #38732977
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovСимонов Дениспопробуй запустить трейс и в нём выбрать опцию log_errors
Лучше с фильтром на имя процедуры . Это я слишком давно в подвале сижу, или трейс 2.5 (да и 3.0) научился фильтровать не только по "штатным" фразам типа 'SELECT|INSERT|UPDATE|DELETE', но еще и по пользовательским именам ?
...
Рейтинг: 0 / 0
Ошибка
    #38732986
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял. Инклуд фильтр фильтрует всё.

P.S. Даже комментарии, наверное, хотя не проверял.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка
    #38733009
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамне проверял.дык это... проверь, что ле... :-)
...
Рейтинг: 0 / 0
Ошибка
    #38733140
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что проверять? По имени объекта не фильтруется?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка
    #38733146
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да.
...
Рейтинг: 0 / 0
Ошибка
    #38733149
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Воспроизводимый пример есть?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка
    #38733154
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Ну, вы, блин, даёте..." (с)

CORE-4370 кто заводил?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка
    #38733155
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create database 't0.fdb'; commit;
recreate table some_data(id int, x int); commit;
insert into some_data values(1, 100); commit;
set term ^; 
create or alter procedure my_very_clever_sp(a_id int) returns(x int) as 
begin 
    for select x from some_data where id = :a_id into :x do suspend; 
end
^ set term ;^ 
commit;
set term ^; 
create or alter procedure my_very_stupid_sp(a_id int) returns(x int) as 
begin 
    for select x from some_data where id = :a_id into :x do suspend; 
end
^ set term ;^ 
commit;

Query-1:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select * from some_data d left join my_very_ clever _sp(d.id) on 1=1;

     ID            X            X
======= ============ ============
      1          100          100

 Query-2: 
select * from some_data d left join my_very_ stupid _sp(d.id) on 1=1;

     ID            X            X
======= ============ ============
      1          100          100

Какой должен быть include_filter в конфиге трейса, чтобы в нём вылезли данные только по query-1 ?
...
Рейтинг: 0 / 0
Ошибка
    #38733157
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov"Ну, вы, блин, даёте..." (с)

CORE-4370 кто заводил?..Когда в трекере мну пишут 'won`t fix', то я иду наилегчайшим путём: забываю про этот тикет. Напрочь.
PS. а иногда и про соседние с ним тоже...
...
Рейтинг: 0 / 0
Ошибка
    #38733159
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> Какой должен быть include_filter в конфиге трейса,
Таблоид> чтобы в нём вылезли данные только по query-1 ?

Вестимо, include_filter = %my_very_clever_sp%

Если нужно - можно весь запрос впиндюрить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка
    #38733164
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамТаблоид> Какой должен быть include_filter в конфиге трейса,
Таблоид> чтобы в нём вылезли данные только по query-1 ?

Вестимо, include_filter = %my_very_clever_sp% Так. Замечательно.

А теперь создаем конфиг трейса вот с такими раскомментаренными параметрами:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
enabled true
 include_filter = %my_very_clever_sp% 
log_procedure_finish true
log_procedure_start true
max_log_size 9999999999
max_sql_length 16384
print_perf true
print_plan true
time_threshold 0

Затем запускаем трейс, запускаем isql и вводим там:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SQL> select * from some_data d left join my_very_clever_sp(d.id) on 1=1;

          ID            X            X
============ ============ ============
           1          100          100

SQL> select * from some_data d left join my_very_stupid_sp(d.id) on 1=1;

          ID            X            X
============ ============ ============
           1          100          100
И любуемся на трейс:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
Trace session ID 3 started
2014-08-29T21:30:05.2940 (20931:0x7f4392770998) TRACE_INIT
        SESSION_3


2014-08-29T21:30:12.1300 (20931:0x7f4392770998) EXECUTE_PROCEDURE_START
        /var/db/fb25/t0.fdb (ATT_2, SYSDBA:NONE, NONE, <internal>)
                (TRA_19, CONCURRENCY | WAIT | READ_WRITE)

Procedure MY_VERY_CLEVER_SP:
param0 = integer, "1"


2014-08-29T21:30:12.1300 (20931:0x7f4392770998) EXECUTE_PROCEDURE_FINISH
        /var/db/fb25/t0.fdb (ATT_2, SYSDBA:NONE, NONE, <internal>)
                (TRA_19, CONCURRENCY | WAIT | READ_WRITE)

Procedure MY_VERY_CLEVER_SP:
param0 = integer, "1"

      0 ms

2014-08-29T21:30:19.5300 (20931:0x7f4392770998) EXECUTE_PROCEDURE_START
        /var/db/fb25/t0.fdb (ATT_2, SYSDBA:NONE, NONE, <internal>)
                (TRA_19, CONCURRENCY | WAIT | READ_WRITE)

Procedure MY_VERY_ STUPID _SP:
param0 = integer, "1"


2014-08-29T21:30:19.5300 (20931:0x7f4392770998) EXECUTE_PROCEDURE_FINISH
        /var/db/fb25/t0.fdb (ATT_2, SYSDBA:NONE, NONE, <internal>)
                (TRA_19, CONCURRENCY | WAIT | READ_WRITE)

Procedure MY_VERY_ STUPID _SP:
param0 = integer, "1"

      0 ms
...
Рейтинг: 0 / 0
Ошибка
    #38733166
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> И любуемся на трейс:

Попробуй со скобками, я не помню требуются ли они.
Если и со скобками не пашет - баг, в трекер.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка
    #38733169
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамТаблоид> И любуемся на трейс:

Попробуй со скобками, я не помню требуются ли они.
Если и со скобками не пашет - баг, в трекер.Не пашет.
Пробовал вот так: include_filter = (%my_very_clever_sp%)
И вот эдак тоже: include_filter = %(my_very_clever_sp)%

В трекер заносить - не уверен, нужно ли. Ибо Влад мну говорил как-то, что include / exclude фильтра срабатывают только на жестко прописанные в коде "ключевые слова", набор которых есть: %(SELECT|INSERT|UPDATE|DELETE)%.
Но может, я и путаю опять что-то - не знаю. Пусть Влад вправит моцг.
...
Рейтинг: 0 / 0
Ошибка
    #38733172
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> include / exclude фильтра срабатывают только на жестко прописанные
Таблоид> в коде "ключевые слова"

Первый раз слышу. И по коду это никак не видно, написано ровно
обратное, там обычная регулярка по всему тексту запросу с пом. Similar.

Таблоид> набор которых есть: %(SELECT|INSERT|UPDATE|DELETE)%.

Тем более чушь какая-то, ибо ключевые слова/операторы
этим коротким списком не ограничиваются. Но подожди
Влада, если сомневаешься, может, он чего подскажем,
может, это вообще только недавно поломали.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка
    #38733176
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустампо коду это никак не видно, написано ровно обратное, там обычная регулярка по всему тексту запросу с пом. Similar.Ну, если бы сиё раньше работало, а теперь вдруг поломалось, то об этом бы кто-нибудь да возопил бы. Здесь или в трекере, неважно.
Но народ безмолствует. А значит, два варианта:
1) никогда и не работало;
2) никто вообще эти include/exclude-фильтра не юзает, "потому и не знают".
...
Рейтинг: 0 / 0
Ошибка
    #38733184
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> Ну, если бы сиё раньше работало, а теперь вдруг поломалось,
Таблоид> то об этом бы кто-нибудь да возопил бы. Здесь или в трекере, неважно.

Ну вот ты и возопил.

> 2) никто вообще эти include/exclude-фильтра не юзает, "потому и не знают".

Тоже возможно. Вернее, количество исп. трейс итак не шибко велико,
а среди них фильтры юзающих - ещё сильно меньше должно быть.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка
    #38733199
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

Такая феерическая чушь меня даже в отпуске достала...

1. regexp фильтры действуют только на текст твоего запроса , а никак не на имена объектов (процедур, таблиц и т.п.).
2. Ни одного log_statement_XXX у тебя не разрешено.
Далее объяснять ?
...
Рейтинг: 0 / 0
Ошибка
    #38733204
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad> 2. Ни одного log_statement_XXX у тебя не разрешено.

А ларчик просто открывался.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка
    #38733250
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad1. regexp фильтры действуют только на текст твоего запроса , а никак не на имена объектов (процедур, таблиц и т.п.).
2. Ни одного log_statement_XXX у тебя не разрешено.
Далее объяснять ?Да чего ж тут объяснять, всё и так понятно.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
set term ^; 
create or alter procedure app_root as 
  declare n int; 
begin 
  select count(*) from my_very_clever_sp(1) into n; 
end
^set term ;^ 
commit;

Далее запускаю трейс с конфигом:
Код: plaintext
1.
2.
include_filter = %my_very_clever_sp%
time_threshold = 0
log_statement_finish true

Ну, и стартую "самую главную процедуру на свете":
Код: plaintext
execute procedure app_root;

Трейс молчит. Потому что вызов my_very_clever_sp прошёл не как statement, а внутри psql-блока app_root.

А ежели вот такой конфиг:
Код: plaintext
1.
2.
3.
include_filter = %my_very_clever_sp%
time_threshold = 0
log_procedure_finish true
log_statement_finish true

- то трейс будет выдавать вызовы и этой, и всех прочих ХП.

Так что да, "ларчик просто открывается": вызовы отследить можно, только если они идут через execute statement, либо вообще с клиента дёргаются.

Если я опять тут феерчушь несу, то покажи конфиг, при котором можно решить эту задачу: регистрировать вызовы только одной ХП, с именем 'my_very_clever_sp', каким бы способом она не вызывалась: напрямую из isql-подсказки, через ES, или же из PSQL-кода.
...
Рейтинг: 0 / 0
Ошибка
    #38733263
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидТак что да, "ларчик просто открывается": вызовы отследить можно, только если они идут через execute statement, либо вообще с клиента дёргаются.
о чем Влад и написал русским по белому

Таблоидможно решить эту задачу: регистрировать вызовы только одной ХП, с именем 'my_very_clever_sp', каким бы способом она не вызывалась: напрямую из isql-подсказки, через ES, или же из PSQL-кода.
через фильтры ее решить нельзя
...
Рейтинг: 0 / 0
Ошибка
    #38733283
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrчерез фильтры ее решить нельзя
Тогда вопрос: какая часть посланного с клиента запроса (EB в данном случае) считается за
"statement" и подвергается фильтрации, а какая - нет? Почему в упомянутом CORE фильтр
работал со строкой внутри ЕВ как ни в чём не бывало, а в примере постом выше - уже не хочет?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка
    #38733299
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

в примере постом выше процедура, а не EB
...
Рейтинг: 0 / 0
Ошибка
    #38733315
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrв примере постом выше процедура, а не EB
Тьфу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ошибка
    #38755117
dimik78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gallemar,
пару раз сталкивался именно с такой ошибкой.
Возникает ввиду использования некоторыми уникумами кода вида:

MyQuery.SQL.Text = Format('execute procedure my_proc(%f), [MyVar]')

где MyVar значение типа float.

Естественно о региональных настройках форматов при этом думают в последнюю очередь.
В случае если в языковых настройках Windows разделителем целой и дробной части стоит запятая,
то в результате при значении параметра, например MyVar = 1.35 на выходе имеем SQL вида:

execute procedure my_proc(1,35)

что естественно не проглатывается сервером.

Решение зависит от возможностей. Если есть доступ к исходникам, то исправить код.
Иначе только менять разделитель целой и дробной части в настройках винды на точку.
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ошибка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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