А зачем? Тебе жмотно байтиков на препарированный хендл?
Или в этом есть какой-то тайный смысл?
Ты кажется не в курсе, что ФБ 1.5 после 15,000-20,000 аллокированых
хэндлов просто не реагировал на внешние раздражители (точное число
зависит от платформы). ФБ 2.0 скажет, что памяти не осталось.
Это если их не освобождать. Хотя тоже интересный вопрос - я им не
занимался, может птицеводы подскажут: если я навыделял себе хендлов на
запросы, а потом клиент ласты склеил - сервер так и будет их хранить?
(классик не в счет, он по идее тоже отвалится).
Наск. я в курсе - освободятся как только сервер заметит пропажу клиента.
Хэндлы запросов привязаны к хэндлу соединения.
Мне другое не понятно - а чем isc_dsql_free плох?
Ну наверное, диме жалко - каждый раз выделять/освобождать память - она
ведь фрагментируется. А так - память как бы выделена, но может
использоваться повторно, если надо. Или нет?
Ну так это уже внутренние проблемы сервера/движка. Каким образом он этим
управляет - выделяет 20,000 хэндлов в начале или же по мере поступления
запросов - не должно интересировать клиента. Движок может даже решить
игнорировать isc_dsql_free с параметром DSQL_drop преобразовав его в
DSQL_free и использовать хэндл для чего-то другого.
В чем-то Дмитрий прав - если есть isc_dsql_prepare, то должен быть
isc_dsql_unprepare - по аналогии с isc_dsql_allocate/free. Вопрос в том,
что этот метод будет делать и зачем нам хэндл в unprepared состоянии,
что с ним можно делать?
Роман