Problems accessing table with SDO_GEOMETRY type

Discussion of open issues, suggestions and bugs regarding ODAC (Oracle Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
eelias
Posts: 5
Joined: Mon 21 Jul 2014 13:39

Problems accessing table with SDO_GEOMETRY type

Post by eelias » Tue 26 Jan 2016 14:05

hi there,

We are using UniDac 6.2.9 for RAD Studio 10 with Oracle 11g

I am trying to open a table (TUniTable) that contains SDO_GEOMETRY field, using direct mode.

After some records loading it raises and exception:

"First chance exception at $767CD8A8. Exception class EOutOfMemory with message 'Out of memory'. "

I see also that SDO_GEOMETRY is expanded to its properties, is there a way to control this behavior? It brings back an array of 99 expanded fields (one field created for each dimension) however I have data up to 155 dimensions.

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Re: Problems accessing table with SDO_GEOMETRY type

Post by AlexP » Wed 27 Jan 2016 10:13

Hello,

We have already fixed the problem, this fix will be added to the next ODAC version.

uffek
Posts: 37
Joined: Fri 14 Nov 2014 21:49
Location: Roskilde, DK

Re: Problems accessing table with SDO_GEOMETRY type

Post by uffek » Wed 27 Jan 2016 10:22

When can we expect next release? It prevents any further development.
Perhaps a hot-fix for a few dcu files on D10 is enough to get us going?

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Re: Problems accessing table with SDO_GEOMETRY type

Post by AlexP » Wed 27 Jan 2016 10:54

We plan to release the new ODAC version next week.

eelias
Posts: 5
Joined: Mon 21 Jul 2014 13:39

Re: Problems accessing table with SDO_GEOMETRY type

Post by eelias » Thu 28 Jan 2016 22:35

I am able to make it work with the current version setting the TUniTable.SmartFetch.Enabled := true;

At least for testing and development purpose it is working.

When I access the Oracle Table using TUniTable it expands the GEOM object from the tablet in a set of properties. That is working fine.

However 2 of these properties are vararrays, one is the SDO_ORDINATES vararray, from where I get the points coordinates.

The problem is that it is returning as a fixed set of 100 SDO_ORDINATES, so I am limited to 50 points (x and y)

I have some geometries with up to 160 or more points, requering that SDO_ORDINATES reaches 320 entries.

How can I control this behavior on UniDac?

I want to be able to get all the dimensions available from the Oracle Table.

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Re: Problems accessing table with SDO_GEOMETRY type

Post by AlexP » Mon 01 Feb 2016 09:27

Yes, currently, the number of items is limited by 100. We will change this behavior in the next version. For now, if you have UniDAC with source code, I can send you the needed changes.

uffek
Posts: 37
Joined: Fri 14 Nov 2014 21:49
Location: Roskilde, DK

Re: Problems accessing table with SDO_GEOMETRY type

Post by uffek » Mon 01 Feb 2016 09:30

We have the version without source code, but since next version should be released this week, we'll wait.

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Re: Problems accessing table with SDO_GEOMETRY type

Post by AlexP » Mon 01 Feb 2016 10:13

The new version will be available today already. All the fixes and tests have passed, therefore this behavior change will be included in one of the next versions.

uffek
Posts: 37
Joined: Fri 14 Nov 2014 21:49
Location: Roskilde, DK

Re: Problems accessing table with SDO_GEOMETRY type

Post by uffek » Mon 01 Feb 2016 11:34

Can you tell us how that change is going to be? There can be 1000's of coordinates.
When reading the same kind of data from MSSQL and PostGIS, it works quite easily with bytearrays and strings. Perhaps you can do it the same way in Oracle? MSSQL being the easist to work with.

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Re: Problems accessing table with SDO_GEOMETRY type

Post by AlexP » Mon 08 Feb 2016 09:39

We will change this behavior in the next version. We will add possibility to set these arrays size. Unfortunately, we can't create these arrays with required size, since Oracle doesn't return the actual length, and creation of maximum available arrays will lead to memory loss.

uffek
Posts: 37
Joined: Fri 14 Nov 2014 21:49
Location: Roskilde, DK

Re: Problems accessing table with SDO_GEOMETRY type

Post by uffek » Wed 10 Feb 2016 08:14

Can you tell us why you don't do it the same way as MSSQL? That is returned as a bytearray. Returning the coordinates as 1000's of floatfields seems like a very strange choice.

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Re: Problems accessing table with SDO_GEOMETRY type

Post by AlexP » Thu 11 Feb 2016 09:04

We will also consider the possibility to change these fields type

uffek
Posts: 37
Joined: Fri 14 Nov 2014 21:49
Location: Roskilde, DK

Re: Problems accessing table with SDO_GEOMETRY type

Post by uffek » Fri 22 Apr 2016 18:05

I have to re-raise this matter:

When will there be a new version where this is fixed?
There is a maximum and fixed number of coordinates being returned, even for bigger objects with >50 nodes (or 100 x/y value).

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Re: Problems accessing table with SDO_GEOMETRY type

Post by AlexP » Wed 27 Apr 2016 09:03

No, this behavior is not changed yet. Currently, array max length is 100 elements. We are working at this.

uffek
Posts: 37
Joined: Fri 14 Nov 2014 21:49
Location: Roskilde, DK

Re: Problems accessing table with SDO_GEOMETRY type

Post by uffek » Thu 16 Jun 2016 12:33

Is there a status on this issue? Something new for next release?

Post Reply