> Вообщем ясно, что дело тёмное. То глубокие деревья, то оказывается что
> не деревья, а список с манией величия и стремлением стать деревом секвойя...

Это двоичное несбалансированное дерево, местами считающее себя
списком. ;)

> Правду говорят местные аксакалы, дело в консерватории! ;)

Честно говоря, задолбали уже <<консерваторией>>. Не стоит считать всех
глупее себя. Если решили делать так, а не иначе, значит это чем-то
обусловлено. Кроме того я написал, что ранее эта проблемма решалась в
UDF.

Страшный костыль и ликает в селективных процедурах, но работает, по
сравнению со списками на строчках или хранением промежуточных данных в
таблице, на порядок быстрее. Проблема утечки памяти отчасти решается в
FBCS 2.1 тригеррами БД.

stack = newStack(CURRENT_TRANSACTION)

on commit or rollback

freeStacks(CURRENT_TRANSACTION)

Но переписывать UDF мне не очень хочется, хочется вернуться обратно к
рекурсии, тем более, что появился WITH RECURSIVE. Такое решение,
возможно, тоже временное, до появления нормального процедурного языка.
Но на данный момент оно полность решит проблему малой кровью и с
приемлемой производительностью.

Reply via email to