Кто виноватЪ и что делатЬ?
ЗабитЬ до поры до времени.
Нееее, ща занесу в трекер со статусом "АХТУНГ!" :-)
---
Я щас в очередной раз тупил над алгоритмом RowsAffected....
П##т, я каждый раз понимаю что все у всех написано через жопу.
isc_info_sql_records возвращает блок с внутренними кластерами
[Код из isql.epp] ---------
const UCHAR count_is = *p++;
const SSHORT l = gds__vax_integer(p, 2);
p += 2;
const SLONG count = gds__vax_integer(p, l); //<----- ВОТ ЭТО ВОТ
p += l;
if (count_is == count_type)
return count;
--------
Спрашивается, какого куя оно пытается интерпретировать данные кластера без
учета типа кластера.
Я молчу, что оно вообще нифига не контролирует границы буфера (это был в
предыдущем приступе бешенства)
И кстати, в свете последних ахтунгов с типом запроса, не надо выпендриваться
с count_is. Надо просто в тупую подсчитвать число затронутых рядов.
--- [IBP source]
//в FB2 "INSERT ... RETURNING" имеет категорию
isc_info_sql_stmt_exec_procedure
// так что пока прийдется подсчитывать все изменения
//в FB2.1 "UPDATE OR INSERT <без RETURNING>" имеет тип INSERT, но может
// вернуть число модифицированных записей. Так что теперь мы просто
// безоговорочно в тупую суммируем все затронутые ряды.
---
Коваленко Дмитрий.