Skip to content
Permalink
Browse files

[BUGFIX][Oracle] Mixing SDO_GEOMETRY Point definition

Fixes #18900

In `sdoobj`, the `elem_info` array size is not the right way to defined the way
to read Point coordinate. The right way is to check the
sdoind attributes, like in Mapserver.

The way Mapserver defined check point coordinate: https://github.com/mapserver/mapserver/blob/fd04328a89e75ac963f15867d9d90a50d47513c1/maporaclespatial.c#L1588
  • Loading branch information
rldhont authored and nyalldawson committed May 4, 2018
1 parent a11db8b commit 849278a2d6701ac94f05ce5dcafc11223dc2980d
Showing with 4 additions and 10 deletions.
  1. +4 −10 src/providers/oracle/ocispatial/qsql_ocispatial.cpp
@@ -2544,19 +2544,13 @@ bool QOCISpatialCols::convertToWkb( QVariant &v, int index )
return false;
}

if ( iType == GtPoint && nElems == 0 )
if ( iType == GtPoint &&
sdoind->_atomic == OCI_IND_NOTNULL &&
sdoind->point.x == OCI_IND_NOTNULL &&
sdoind->point.y == OCI_IND_NOTNULL )
{
Q_ASSERT( nOrds == 0 );

if ( sdoind->_atomic != OCI_IND_NOTNULL ||
sdoind->point.x != OCI_IND_NOTNULL ||
sdoind->point.y != OCI_IND_NOTNULL )
{
qDebug() << "null point";
v = QVariant();
return true;
}

double x, y, z = 0.0;
if ( !getValue( &sdoobj->point.x, x ) )
{

0 comments on commit 849278a

Please sign in to comment.
You can’t perform that action at this time.