NativeClient and large Geometry

Discussion of open issues, suggestions and bugs regarding SDAC (SQL Server Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
Aufhauser
Posts: 56
Joined: Mon 21 Nov 2005 09:44
Location: Herzogenburg, Austria

NativeClient and large Geometry

Post by Aufhauser » Mon 05 Jul 2010 17:49

I have problems using NativeClient and Geometry.
After setting:
TMSConnection.Options.Provider:=prNativeClient
I cannot load geometryblobs lager than 8016 bytes using 'Field.AsString' or 'Field.Value' because all bytes higher than 8016 are set to 0.
If I change the provider to prSQL everything works correct. I think, using NativeClient is the better way to connect to SQLServer, so will you fix the bug?

Challenger
Devart Team
Posts: 925
Joined: Thu 17 Nov 2005 10:53

Post by Challenger » Thu 08 Jul 2010 14:29

We could not reproduce this problem. I have tried to insert MULTIPOINT geometry object with many points. And get the value through the Value property of TField. The VarArrayHighBound returns > 10000. Please try to compose a small sample.

Aufhauser
Posts: 56
Joined: Mon 21 Nov 2005 09:44
Location: Herzogenburg, Austria

Post by Aufhauser » Thu 08 Jul 2010 19:17

Thanks for your answer.
The length from the AnsiString (or the ByteArray) is not the problem it is correct but the string is filled with 0-strings not with correct data. I created a little project to show the problem. To which adress should I send this project?

Stefan

Challenger
Devart Team
Posts: 925
Joined: Thu 17 Nov 2005 10:53

Post by Challenger » Fri 09 Jul 2010 14:25

Please send it to alexh*devartcom.

Dimon
Devart Team
Posts: 2910
Joined: Mon 05 Mar 2007 16:32

Post by Dimon » Mon 19 Jul 2010 16:10

Thank you for information. We have reproduced this problem and fixed it. This fix will be included in the next SDAC build.

Aufhauser
Posts: 56
Joined: Mon 21 Nov 2005 09:44
Location: Herzogenburg, Austria

NativeClient and very large Geometry

Post by Aufhauser » Fri 13 Aug 2010 07:41

I have a new problem using very large geometry (greater than 32767 bytes). You can try following code (Delphi 7, actual version of SDAC)

SetLength(Blob1, 32767);
MyGeomField.AsString:= Blob1;
Blob2:= MyGeomField.AsString;
//
SetLength(Blob1, 32768);
MyGeomField.AsString:= Blob1;
Blob2:= MyGeomField.AsString; // Crash

Is this a new problem or is it also fixed in next build of SDAC?

Dimon
Devart Team
Posts: 2910
Joined: Mon 05 Mar 2007 16:32

Post by Dimon » Fri 13 Aug 2010 12:10

We have fixed this problem. This fix will be included in the next SDAC build.

Aufhauser
Posts: 56
Joined: Mon 21 Nov 2005 09:44
Location: Herzogenburg, Austria

Post by Aufhauser » Fri 13 Aug 2010 18:10

Great,
when can I get this new version?
Stefan

Dimon
Devart Team
Posts: 2910
Joined: Mon 05 Mar 2007 16:32

Post by Dimon » Mon 16 Aug 2010 09:46

The next SDAC build will be released in several days.

Aufhauser
Posts: 56
Joined: Mon 21 Nov 2005 09:44
Location: Herzogenburg, Austria

Post by Aufhauser » Mon 16 Aug 2010 14:36

I just installed the new version 4.80.0.60. The first bug (reading the data) is fixed, the second bug (writing very large data) is still present in this version. Can you please include the fix in the actual build?

Stefan

Dimon
Devart Team
Posts: 2910
Joined: Mon 05 Mar 2007 16:32

Post by Dimon » Tue 17 Aug 2010 12:01

We can send you a custom build with the fix. Please contact us by dmitryg*devart*com email and specify your developer license number.

Aufhauser
Posts: 56
Joined: Mon 21 Nov 2005 09:44
Location: Herzogenburg, Austria

very large geometry

Post by Aufhauser » Thu 16 Sep 2010 09:27

Sorry, once again my problem with very large geometry.
Your last fix moved the limit from 32767 bytes to 65536 bytes but did not solve the problem (Because of compatibility problems with ODAC I could not test the custom build in production eviroment):

I get no exception using:
GeomField.AsAnsiString:= MyLargeGeomString
but after updating the field I get the .NET Framework error: SystemIO.EndOfStreamException.

SDAC truncates the string to a length of 65536 Bytes. You can reproduce the problem using following code:
//
SetLength(Blob1, 85000);
MyGeomField.AsAnsiString:= Blob1;
Blob2:= MyGeomField.AsAnsiString;
If Blob1 Blob2 then
raise exception.Create('Error');

Dimon
Devart Team
Posts: 2910
Joined: Mon 05 Mar 2007 16:32

Post by Dimon » Tue 21 Sep 2010 13:54

Thank you for information. We have reproduced this problem and fixed it. This fix will be included in the next SDAC build.

Aufhauser
Posts: 56
Joined: Mon 21 Nov 2005 09:44
Location: Herzogenburg, Austria

Post by Aufhauser » Thu 21 Oct 2010 12:24

Hello,
when will you release the version with the fix? I am waiting since july for a version, which works with geometry fields.
Stefan

Dimon
Devart Team
Posts: 2910
Joined: Mon 05 Mar 2007 16:32

Post by Dimon » Mon 25 Oct 2010 16:06

We are planning to release the new build of SDAC in the course of the next week.

Post Reply