Начало » Использование СУБД » Firebird, HQbird, InterBase » clumplet too long (FB4)
clumplet too long (FB4) [сообщение #2581] |
Sun, 18 June 2023 07:33 |
CyberMax
Сообщений: 8 Зарегистрирован: June 2023
|
Junior Member |
|
|
FB 4.0.3.2940.
Есть ХП, при выполнении которой получаю вот такое сообщение:
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
Invalid clumplet buffer structure: buffer end before end of clumplet - clumplet too long (44319).
Попытки сделать воспроизводимый пример через системные таблицы приводят к тому, что сообщение пропадает и ХП выдает данные как надо.
Но есть две вещи, которые влияют на сообщение:
1. :AMORT_CALC = (SELECT SUM(LC.AMOUNT) FROM BAT$AMORT_CREDIT$LINE LC WHERE LC.ID_BT_ABONENT = :ID_BT);
Эта строка работает в цикле, а :AMORT_CALC - выходной параметр. Если прописать :AMORT_CALC = 5, то сообщения про clumplet too long нет.
2. В Конце ХП вызывается исключение:
EXCEPTION EXC$CHECK_DATA;
Если его закомментировать, то сообщения про clumplet too long тоже нет.
Вопрос к разработчикам - есть ли возможность внести изменения в FB 4, чтобы это сообщение про clumplet too long было более подробным?
Например, добавить размер буфера, а не только clumplet? Или добавить стек вызовов, или какую-то еще информацию с подробностями?
Или подсказать, что может влиять на появление этого сообщения?
|
|
|
Re: clumplet too long (FB4) [сообщение #2717 является ответом на сообщение #2581] |
Mon, 10 July 2023 08:24 |
CyberMax
Сообщений: 8 Зарегистрирован: June 2023
|
Junior Member |
|
|
Нашел, как воспроизводится как минимум один случай.
1. Создаем две таблицы:
CREATE TABLE TABLE_DETAIL (
ID INTEGER NOT NULL
);
CREATE TABLE TABLE_MASTER (
ID INTEGER NOT NULL
);
2. Заполняем данными:
INSERT INTO TABLE_DETAIL (ID)
VALUES (3);
INSERT INTO TABLE_DETAIL (ID)
VALUES (3);
INSERT INTO TABLE_MASTER (ID)
VALUES (1);
INSERT INTO TABLE_MASTER (ID)
VALUES (2);
INSERT INTO TABLE_MASTER (ID)
VALUES (3);
3. Теперь выполняем запрос:
SELECT
(SELECT 1 FROM TABLE_DETAIL D WHERE D.ID = M.ID)
FROM
TABLE_MASTER M
ORDER BY
M.ID
На FB 4.0.2.2770 получаю:
Цитата:Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
Invalid clumplet buffer structure: buffer end before end of clumplet - clumplet too long (42527).
На FB 4.0.3.2940 получаю:
Цитата:Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
Invalid clumplet buffer structure: buffer end before end of clumplet - no length component (1).
Теперь, если удалить хотя бы одну строку (DELETE FROM TABLE_MASTER WHERE ID = 1), получаем корректное сообщение:
Цитата:multiple rows in singleton select.
multiple rows in singleton select.
|
|
|
Переход к форуму:
Текущее время: Fri Nov 22 00:52:52 GMT+3 2024
Общее время, затраченное на создание страницы: 0.00997 секунд
|