Yesterday I downloaded ZeosLib and mentioned in the subject problem began. Since yesterday I am having message
Strange is that before I had one of previous versions of ZeosLib and haven't this problem. Of course it goes with exceeding record (row) length, which can't be higher than 64 kilobytes but problem which doesn't existed, suddenly began - with new download. I did quick investigation and found that it raises in constructorRow buffer width exceeded. Try using fewer or longer columns in SQL query.
" becouse conditionconstructor TZRowAccessor.Create(ColumnsInfo: TObjectList; ConSettings: PZConSettings);
returns the "True". Going further my table structure is as below:if FColumnsSize > SizeOf(TZByteArray)-1 then
raise EZSQLException.Create(SRowBufferWidthExceeded);
"
(
id serial NOT NULL,
name character varying(1024),
description character varying(16384),
visiting_tries integer,
...
"
So, I quickly found that method
counts character varying field length in this way... function TZRowAccessor.GetColumnSize(ColumnInfo: TZColumnInfo): Integer; ...
stUnicodeString:
Result := 2 * ColumnInfo.Precision + 2;
and ColumnInfo.Precision equals to twice field length defined in table. Finally column size equals 4 * length of character varying length in table what it my case giving exception when reading field >description< (exceeding maximum row size)...
It's probably bug.. what if character varying field will have defined length higher than 16384... haven't tried but it looks like no way to read?
I use Delphi XE3 Professional and work on PostgreSQL v9 database.
Besides described problem... 64k row size is a big disadvantage becouse maximum row size in PostgreSQL is 1.6 TB (as wrote here http://www.postgresql.org/about/ )
I wrote for the first time on this forum, used ZeosLib from time to time since few years... and want write that you do great job guys, even if it still needs some work