Кто виноватЪ и что делатЬ?

ЗабитЬ до поры до времени.

Нееее, ща занесу в трекер со статусом "АХТУНГ!" :-)

---
Я щас в очередной раз тупил над алгоритмом 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, но может
 // вернуть число модифицированных записей. Так что теперь мы просто
 // безоговорочно в тупую суммируем все затронутые ряды.
---

Коваленко Дмитрий.

Reply via email to