Subject Re: [firebird-support] Firebird enters infinite? loop executing this query.
Author Andrew Guts
Andrew Guts wrote:
> Svein Erling Tysvaer wrote:
>
>> Andrew Guts wrote:
>>
>>
>>> I need to convert some of my database fields into UTF-8. So I wrote and
>>> run operator by operator the script below:
>>> --------------------------------------------------------
>>> alter table cms_wiki
>>> add u_name varchar(100) character set UTF8,
>>> add u_title varchar(100) character set UTF8,
>>> add u_description blob sub_type 1 character set UTF8,
>>> add u_text blob sub_type 1 character set UTF8;
>>>
>>> commit;
>>>
>>> update cms_wiki set
>>> u_name = name, u_title = title, u_text = text, u_description =
>>> description; /* Here it hangs */
>>>
>>>
>> Have you tried splitting the update statement into two, three or four
>> separate update statements? That way, you could find if it was a problem
>> with the blobs specifically and if the problem appeared whether you
>> tried updating one or two blob fields in the same statement.
>>
>> I have no idea whether it is possible to convert character sets for text
>> blobs this way or not, but there's no way updating 52 records should
>> take more than 30 minutes (well, theoretically if each blob is huge and
>> you use an extremely slow internet connection and the BDE, I suppose it
>> could be that slow ;o) and you should at least have been given an error
>> message. I expect that there is no other transaction active that
>> accesses this table when you try to do the update?
>>
>>
>>
So, I've investigated the exact record executing the statement record by
record, field by field. It hangs on 7th record (cms_wiki.ID = 15) when
copying blob from cms_wiki.text into cms_wiki.u_text. I've extracted the
text from the blob. It is 18701 bytes long. Is it too large? It is
written in English and do not contain any char outside 7-bit ASCII (as I
can see). Previous 6 records contain less data in the "text" field but
do contain some Cyrillic characters.
Any ideas?

Regards,

Andrew