Print Thread
RecordSize range error
#48830 03/28/14 03:53 PM
Joined: Mar 2014
Posts: 3
J
Juktus Offline OP
Member
OP Offline
Member
J
Joined: Mar 2014
Posts: 3
Hello.

I found some problems with property VCL DataSet.RecordSize. In VCL its type is Word and can be simply exceeded with big selects (using for example varchar2 functions) or when you use new Oracle 12 Database with option varchar2=32k.
I saw that in your components you use variable FRecordSize(Integer) but also override function GetRecordSize which generate error when FRecordSize is bigger than Word size. What are you going to do with this problem, specially when new Oracle 12 database will be in common use.

Best regards
Juktus

Re: RecordSize range error
Juktus #48835 03/31/14 09:56 AM
Joined: Aug 1999
Posts: 22,200
Member
Offline
Member
Joined: Aug 1999
Posts: 22,200
We'll need to add support for 32k varchar2 fields. This is on the to-do list.


Marco Kalter
Allround Automations
Re: RecordSize range error
Marco Kalter #48876 04/08/14 12:03 PM
Joined: Mar 2014
Posts: 3
J
Juktus Offline OP
Member
OP Offline
Member
J
Joined: Mar 2014
Posts: 3
When can i expect this solution?

Best regards
Grzegorz Chromik

Re: RecordSize range error
Juktus #48883 04/09/14 08:45 AM
Joined: Aug 1999
Posts: 22,200
Member
Offline
Member
Joined: Aug 1999
Posts: 22,200
We don't have a date yet.


Marco Kalter
Allround Automations
Re: RecordSize range error
Marco Kalter #52703 12/14/15 09:58 AM
Joined: Mar 2015
Posts: 8
F
Member
Offline
Member
F
Joined: Mar 2015
Posts: 8
It's about time the problem with recordsize gets fixed.
It's strange that TDataset still declares property RecordSize as Word but TDataset does not use the property its own code anyways.
In TOracleDataset the field FRecordSize is declared as integer and in TOracleDatasets code the field is used instead of the property everywhere except in ClearCalcFields.

procedure TOracleDataSet.ClearCalcFields(Buffer: TRecordBuffer);
begin
FillChar(PRecordData(Buffer)^.Bytes[RecordSize], CalcFieldsSize, 1);
end;


This code results in overwrites of the buffer if RecordSize exceeds the size of Word. This is obviously an oversight by allroundaotomations and should be fixed asap without. I have of course fixed it myself, but i really wish I could use your code without my own bugfixes.
In our case this has nothing to do with support for 32k varchar2 fields, but we have some table with many big varchar2 fields.


Moderated by  support 

Link Copied to Clipboard
Powered by UBB.threads™ PHP Forum Software 7.7.4
(Release build 20200307)
Responsive Width:

PHP: 7.1.33 Page Time: 0.073s Queries: 14 (0.016s) Memory: 2.5141 MB (Peak: 3.0398 MB) Data Comp: Off Server Time: 2024-04-20 03:42:13 UTC
Valid HTML 5 and Valid CSS