"Karabas Barabas" ... > Hi Horsun Vlad ! > > HV> Посмотри сколько вызовов API делается при простом > HV> IBSQL.ExecQuery - там есть что скомбинировать вместе. > > Я возможно глупость сейчас думаю, но нельзя ли в клиентской либе, > так сказать, предсказывать (или подделывать) ответы сервера на эти > многочисленные запросы ?
Дабы не порождать слухов и спекуляций, колюсь : 1. создание хендла запроса отложено до использования этого запроса. Т.е. isc_dsql_allocate_statement больше не лезет в сеть 2. закрытие запроса отложено до следующего пакета. Т.е. isc_dsql_free_statement больше не дезет в сеть 3. Аналогично закрытие блоба 4. все вызовы isc_XXX_info теперь передают ответ минимально необходимой длины, а не полной длины клиентского буфера. Особенно хорошо это видно при работе со службами - например IBE выделяет под ответ буфер в 32К и запрашивает результаты (например статистику или лог бекапа\рестора) построчно. Теперь будет возвращаться 1..80 байт (примерно), а не 32К для каждой строки 5. isc_dsql_prepare теперь сразу запрашивает информацию о вх., вых. пар-рах и о типе стайтмента (раньше запрашивал только о вых.). Т.е. теперь isc_dsql_describe, isc_dsql_describe_bind и запрос isc_info_sql_stmt_type как правило не лезут в сеть. В сеть они полезут, если суммарный объём инф-ции о пар-рах не влазит в 32К. Т.к. все эти ф-ции используют механизм isc_dsql_info, то см. предыдущий пункт :) Для работы первых 3-х пунктов необходимы новые клиент и сервер, для работы 4-го и 5-го достаточно только нового сервера. Достаточно ? :) -- Хорсун Влад --~--~---------~--~----~------------~-------~--~----~ -~----------~----~----~----~------~----~------~--~---