Page 1 of 1

Stream read error on TIBCQuery

Posted: Tue 15 May 2018 12:59
by upscene
Hi there,

I'm using IBDAC 6.1.4 in Delphi 2009, on a query with:

- Options.DescribeParams = true
- Options.DeferredBlobRead = true
- Options.CacheBlobs = false
- UniDirectional = true

I'm getting "stream read error" when requesting the field value for FieldByName(...).AsWideString on column RDB$RELATION_FIELDS.rdb$default_source

Any known issue with this?

I've set CacheBlobs to False, because when working with blobs of several hundreds MBs, the memory management seemed to not clear blob values when moving to the next row.

With regards,

Martijn Tonies

Re: Stream read error on TIBCQuery

Posted: Tue 15 May 2018 13:11
by ViktorV
Unfortunately, we cannot reproduce the issue on the latest version IBDAC 6.1.7.
Check, please, make sure that you are using the client library supplied with InterBase (Firebird) distribution to which you are trying to connect.
In order for us to be able to give you a detailed answer, we need to have a sample demonstrating the specified behavior. Therefore, please compose a full sample demonstrating the described behavior and send it to us using the contact form https://www.devart.com/company/contactform.html including the scripts for creating database objects. Also specify the exact Firebird version.
Note, if the sample has a large size, please place it on free filehosting and send us the link using the contact form https://www.devart.com/company/contactform.html

Re: Stream read error on TIBCQuery

Posted: Tue 15 May 2018 13:47
by upscene
Additional info:

- Connection.Options.EnableMemos = true
- Connection.Options.UseUnicode = false
- Connection.Charset = ISO8859_1

It happens when reading the value the second time for the column, eg:

Code: Select all

IBCQuery2.Open;
  while not IBCQuery2.Eof
  do begin
       Memo1.Lines.Add(IBCQuery2.FieldByName('rdb$field_name').AsWideString + ' : ' +
                       IBCQuery2.FieldByName('field_default').AsWideString + ' - ' +
                       IBCQuery2.FieldByName('field_default').AsWideString);
       IBCQuery2.Next;
     end;
  IBCQuery2.Close;
If I remove that second read, it runs fine.

Re: Stream read error on TIBCQuery

Posted: Tue 15 May 2018 14:06
by ViktorV
Unfortunately, we can't reproduce the issue in our environment

Re: Stream read error on TIBCQuery

Posted: Tue 15 May 2018 15:01
by upscene
Steps:
  • create a database, dialect 3, with charset ISO8859_1 in Firebird 2.5
  • create a table:

    Code: Select all

    create table test_table
    (
    col1 integer,
    col2 integer default 3,
    col3 varchar(200) default 'test'
    )
  • connection a TIBCConnection with the parameters I gave earlier
  • use a TIBCQuery with the options I gave earlier
  • use this for the SQL-query:

    Code: Select all

    select rf.rdb$field_name, rf.rdb$default_source as field_default
    from rdb$fields f left outer join rdb$field_dimensions fd on f.rdb$field_name = fd.rdb$field_name 
         join rdb$relation_fields rf on f.rdb$field_name = rf.rdb$field_source 
    where rf.rdb$relation_name = 'TEST_TABLE'
    order by rf.rdb$field_position, fd.rdb$dimension
  • use the code I gave earlier > error.
Hope this helps.

Re: Stream read error on TIBCQuery

Posted: Tue 15 May 2018 15:16
by ViktorV
We investigated the problem according to your description.
Unfortunately, we cannot reproduce the issue on the latest version IBDAC 6.1.7.
In order for us to be able to give you a detailed answer, we need to have a sample demonstrating the specified behavior. Therefore, please compose a full sample demonstrating the described behavior and send it to us using the contact form https://www.devart.com/company/contactform.html