С пятницей.
Вспоминил про одну старую фичу. Которую я, по злобе душевной, заныкал в
ожиданиях исправления Адрианой багов с ICU-чарсетами.
База на IB4.0
Клиент FB2.5
Запрос
---
select up1.rdb$user,
up1.rdb$grantor,
up1.rdb$relation_name,
up1.rdb$field_name,
up1.rdb$privilege,
up1.rdb$grant_option,
up1.rdb$user_type,
0
from rdb$user_privileges up1
where ((up1.rdb$field_name is not null) and (up1.rdb$field_name''))
union all
select up2.rdb$user,
up2.rdb$grantor,
up2.rdb$relation_name,
rf2.rdb$field_name,
up2.rdb$privilege,
up2.rdb$grant_option,
up2.rdb$user_type,
1
from rdb$user_privileges up2
join rdb$relation_fields rf2
on (up2.rdb$relation_name=rf2.rdb$relation_name and
((up2.rdb$field_name is null) or up2.rdb$field_name=''))
---
Выполняем его в IBE и делаем выборку всех записей (Fetch ALL)
Получаем срабатывание assert-а
// We must receive isc_req_sync as we did fetch after EOF
fb_assert(statement-haveException() == isc_req_sync);
msvcr80d.dll!_NMSG_WRITE(int rterrnum=10) Line 198 C
msvcr80d.dll!abort() Line 59 + 0x7 bytes C
gds32.dll!fb_abort() Line 35 + 0x8 bytes C++
gds32.dll!clear_stmt_que(rem_port * port=0x028a6f10, int *
user_status=0x0039bd3c, Rsr * statement=0x028a119c) Line 4853 C++
gds32.dll!batch_dsql_fetch(rem_port * port=0x028a6f10, rmtque *
que_inst=0x028a0ad0, int * user_status=0x0039c160, unsigned short id=5)
Line 5006 + 0x11 bytes C++
gds32.dll!receive_queued_packet(rem_port * port=0x028a6f10, int *
user_status=0x0039c160, unsigned short id=5) Line 6231 + 0x1b bytes C++
gds32.dll!REM_fetch(int * user_status=0x0039c160, Rsr * *
stmt_handle=0x028a100c, unsigned short blr_length=0, unsigned char *
blr=0x028a0d60, unsigned short msg_type=0, unsigned short msg_length=158,
unsigned char * msg=0x028a0cac) Line 1842 + 0x15 bytes C++
gds32.dll!isc_dsql_fetch_m(int * user_status=0x0039c160, void * *
stmt_handle=0x04f2d8a8, unsigned short blr_length=45, char * blr=0x028a0d60,
unsigned short msg_type=0, unsigned short msg_length=158, char *
msg=0x028a0cac) Line 3139 + 0x53 bytes C++
gds32.dll!isc_dsql_fetch(int * user_status=0x0039c160, void * *
stmt_handle=0x04f2d8a8, unsigned short dialect=1, const XSQLDA *
sqlda=0x04fda9a0) Line 3021 + 0x3a bytes C++
_IBProvider_x3_d.dll!ib_v5::t_ib_statement_v5::fetch(db_obj::t_db_row *
const row=0x0454df28) Line 647 + 0x4f bytes C++
здесь gds32.dll - это переименованный fbclient.dll
В трекер писать?
Коваленко Дмитрий.