Interbase incorrect fieldsize for system tables
Posted: Mon 03 Jun 2013 08:43
IBDac version 4.6.12 with InterBase 2007.
When querying a InterBase database created with charset UTF8 the automaticly and/or persitent fields are generated with the incorrect field size for system tables.
The problem is in the IBCClasses unit in the function TGDSConnection.GetCharLength:
Because the major version for Interbase 2007 is 8 the lenght 3 is returned and therefor the fieldsize of the result fields are divided by 3.
If I change the if statement to:
the fieldsize of the result fields are correct.
Could you please verify if my corrections are correct ?
When querying a InterBase database created with charset UTF8 the automaticly and/or persitent fields are generated with the incorrect field size for system tables.
The problem is in the IBCClasses unit in the function TGDSConnection.GetCharLength:
Code: Select all
case CharsetID and $ff of
5, 6, 8, 44, 56, 57, 64:
Result := 2;
3:
if (Pos('RDB$', RelName) = 1) and ((GetMajorServerVersion >= 9) or GetMajorServerVersion < 2)) then
Result := 1
else
Result := 3;
4, 59:
Result := 4;
else
Result := 1;
end;
If I change the if statement to:
Code: Select all
if (Pos('RDB$', RelName) = 1) and ((GetMajorServerVersion >= 8) or GetMajorServerVersion < 2)) then
Could you please verify if my corrections are correct ?