|
|
|
Размер ХП
|
|||
|---|---|---|---|
|
#18+
Привет всем. Подскажите пожалуйста, есть ли ограничение на размер исходного текста хранимой процедуры в FireBird 1.5. Если судить по типу поля, где он хранится, то вроде не должно быть: RDB$PROCEDURE_SOURCE - BLOB SUB_TYPE 1 SEGMENT SIZE 80 CHARACTER SET UNICODE_FSS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 08:49:51 |
|
||
|
Размер ХП
|
|||
|---|---|---|---|
|
#18+
ограничений по размеру кода помоему нет, есть ограничение в 32к на размер возвращаемых данных... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 08:52:38 |
|
||
|
Размер ХП
|
|||
|---|---|---|---|
|
#18+
насколько я столкнулся, есть ограничение на размер откомпилированной ХП. ФБ1. разбивал на несколько - и работало ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 09:50:48 |
|
||
|
Размер ХП
|
|||
|---|---|---|---|
|
#18+
Сам не нарывался, но в форуме epsylon.public.interbase такие случаи описывались. Боюсь соврать, но помоему blr процедуры не должен превышать 64к. Сюда разработчики переодически заглядывают. Если я наврал - поправят. Вообщем то это не проблема. Процедуру всегда на две разбить можно. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 09:53:56 |
|
||
|
Размер ХП
|
|||
|---|---|---|---|
|
#18+
Что-то типа размер исходника + размер BLR не больше 64К. Придет Влад, скажет точно ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 10:46:40 |
|
||
|
Размер ХП
|
|||
|---|---|---|---|
|
#18+
2dimitr А где это можно вычитать, если не секрет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 11:41:31 |
|
||
|
Размер ХП
|
|||
|---|---|---|---|
|
#18+
2 Лентяй Процедуру разбить конечно можно, интересно же другое: какие у FB существуют ограничения. Если ограниченине на размер BLR, то в него не должны попадать закоментированные каски кода. Если ограничение на размер исходного кода (до 64кб) то моя процедура в это ограничение никак не попадает: до модификации 61119 байт (компилится нормально), после модификации - 63002 байта (не компилиться). Для проверки я закоментировал добавленный кусок - компилиться не хочет, однако FB ругаестся уже другими словами (): 1) Procedure COMPL$EXTSTATREPTOPRINT00000¤ not found. 2) Name longer than database column size. 3) unsupported DYN verb. 4) Parameter BYDEPCAl+GORIES in procedure COMPL$EXTSTATREPTOPRINT000001 not found. 5) Parameter BYDEPCATEGORI$_ in procedure COMPL$EXTSTATREPTOPRINT000001 not found. и я думаю, что этот перечень не есть конечный. При этом ХП COMPL$EXTSTATREPTOPRINT00000 ¤ и параметры BYDEPCA l+ GORIES, BYDEPCATEGORI $_ в процедуре не существует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 12:09:55 |
|
||
|
Размер ХП
|
|||
|---|---|---|---|
|
#18+
Ну вон тебе один из разработчиков (dimitr) уже ответил. И судя по описанным тобой симптомам его ответ более точный, чем мой. А я не люблю длинные процедуры писать. Потом разбираться в них уж очень лениво :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 13:05:20 |
|
||
|
Размер ХП
|
|||
|---|---|---|---|
|
#18+
Ограничение на длину BLR - 64K. Однако при CREATE PROCEDURE генерится не один кусочек BLR, а несколько - для каждого параметра, с исходным текстом, и собственно BLR процедуры. При ALTER PROCEDURE в начало добавляется ещё и BLR для удаления пар-ров, поэтому тут суммарный размер больше. Если конец BLR процедуры пересекает границу 64К (от начала всей последователности), то мы имеем твой баг. Он исправлен в FB2, возможно будет исправлен и в FB 1.5.2, если такой будет выпущен. Сейчас его можно обойти пересозданием процедуры, т.е. вместо ALTER делать DROP\CREATE. Либо разделяй процедуру на части и\или уменьшай кол-во параметров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 16:12:08 |
|
||
|
Размер ХП
|
|||
|---|---|---|---|
|
#18+
Пересоздание процедуры помогло - большое спасибо за информацию. Дальше вероятно прийдется делить процедуры или заниматься более детальной оптимизацией кода. А как на счет ограничения размера BLR в FB2 - оно так и останется 64к, или увеличится (т.е. на что можно ориентироваться в дальнейшем при написании ХП)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2004, 13:27:51 |
|
||
|
Размер ХП
|
|||
|---|---|---|---|
|
#18+
Andrey DmitrienkoА как на счет ограничения размера BLR в FB2 - оно так и останется 64к, или увеличится (т.е. на что можно ориентироваться в дальнейшем при написании ХП)?А ты скажи - какой у тебя есть максимальный р-р BLR ? Т.е. сделай что-то типа Код: plaintext 1. 2. 3. 4. 5. И ещё скажи - зачем писать гигантские процедуры ? Может настоящая проблема в этом ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2004, 14:30:01 |
|
||
|
Размер ХП
|
|||
|---|---|---|---|
|
#18+
А кто такой F_BLOBSIZE? Вероятно это ф-я, которая возвращает размер blob-поля, но у меня ее нет. Собственно граничный размер мне нужен, чтоб знать, на что я могу расчитывать при написании ХП. Гиганские процедуры писать действительно незачем: проблема вылезла при написании довольно простой, но объемной процедуры. Она занимается тем, что разворачивает параметры отчета, лежащие в таблице в виде код параметра - значение в одну строчку т.к. отчет печатается построчно, а таких параметров в разных отчетах может быть много (на данный момент 30*2 - в каждой строке итогового отчета идет строчка за текущий и предыдущий годы и их изменение). Еще она выполняет подсчет итогов по деревовидной иерархии организаций этих-же параметров -> добавляется еще куча переменных для подсчета промежуточных сумм, а еще их надо инициализировать 0, вот и получилось огоромное кол-во кода типа A = 0, B = 0 или A = A + A1 и т.п. Вот если-бы можно было в ХП работать с массивами, эта огромная процедура сразу уменьшилась бы раза в 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 16:25:39 |
|
||
|
Размер ХП
|
|||
|---|---|---|---|
|
#18+
Andrey DmitrienkoА кто такой F_BLOBSIZE? FreeUDFLib ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 16:48:59 |
|
||
|
Размер ХП
|
|||
|---|---|---|---|
|
#18+
Посмотрел данные по размерам BLR и SOURSE для ХП: исходный размер: SOURSE - 61249, BLR - 33585 Начал добавлять к ней небольшой кусочек - стал грязно ругаться. После пересоздания порцедуры размер SOURSE - 61245, BLR - 34412. До 64к BLR явно не дотягивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2004, 09:04:50 |
|
||
|
Размер ХП
|
|||
|---|---|---|---|
|
#18+
авторисходный размер: SOURSE - 61249, BLR - 33585 ... После пересоздания порцедуры размер SOURSE - 61245О том и речь -не в размере BLR дело. Теперь к 61245 добавь : длину имени процедуры + 4 сумму (длин имён старых параметров + 4) сумму (длин имён новых параметров + 9) ещё 9 Больше чем 64К получилось ? Да, кстати, выходит у тебя более 100 пар-ров ? Не многовато ли ? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2004, 12:00:30 |
|
||
|
Размер ХП
|
|||
|---|---|---|---|
|
#18+
Параметров всего 77 (11 входящих + 66 возвращаемых). Может это конечно и много, но другого способа получить 63 колонки в отчете я пока не придумал. Просто когда я что-либо пишу, очень желательно знать какие средства есть у меня в распоряжении. Если ограничение на размер ХП жесткое и в дальнейшем не будет расширено - ну и ладно. Будет над чем подумать в плане оптимизации кода. Главное, чтоб сервер возвращал корректное сообщение об ошибке и все будет ОК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2004, 09:03:25 |
|
||
|
Размер ХП
|
|||
|---|---|---|---|
|
#18+
Andrey Dmitrienko...другого способа получить 63 колонки в отчете я пока не придумал. Seagate Crystal Reports может делать динамические колонки в отчетах... В этом случае, все колонки идут построчно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2004, 10:04:00 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32636757&tid=1578099]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
310ms |
get topic data: |
20ms |
get forum data: |
3ms |
get page messages: |
92ms |
get tp. blocked users: |
1ms |
| others: | 191ms |
| total: | 649ms |

| 0 / 0 |
