VB6 Oracle Spatial or Locator OO4O code

I have just uploaded a radically revised and improved VB6 code for accessing Oracle Spatial or Locator.

In revising the code I came to appreciated something the Catholic priest who married my wife and I once said to me: “True scholarship requires leisure”. I have had the lesiure to revise the code and am horrified by what was in the previous code. Though well intentioned, I simply did not have the time to address, in a systematic fashion, all aspects of squeezing the maximum performance out of a set of code to access Sdo_Geometry data in VB6. (I will convert the code to VB.NET but not yet!).

From the history notes of the library here are some highlights:

  • Modified code to bring back in some improvements from PL/SQL port.
  • Added Tolerance Property and ObjectTolerances() function to set its values.
  • included support for min_resolution parameter in Sdo_Filter/FindFirst
  • Overhauled asPoint, asMultiPoint, asPolyline and asPolygon routines to improve readibility and speed
  • Upped default lFetchArrayBufferSize to 524288 bytes
  • Added ObjectTolerances routine to extract sdo_tolerance from XXX_SDO_GEOM_METADATA views
  • Some type and object name changes
  • Modified implementation of mobjGF.isNull()
  • Fixed bug with converting circle/circulararc to vertex-connected segments when ArcToChord value is large
  • Fixed handling of 3D data
  • Added ability to output shape data as ADFText/EWKT via FindFirst/MoveNext and mobjGF.AsString
  • Cleaned up object memory handling in some routines
  • Removed setting mutLayerProperties.layerMBR in ObjectExtent()
  • Simplified setting of all SQL properties and moved all checking of rules and combinations in the BuildSQL function.
  • Removed support for group by, order by and having clauses to reduce complexity (can be used via the directly setting a complete SQL statement.
  • Recreated separate CGeometryFactory class from the GF_ inline code. Involved splitting out of SQL SELECT field indexes from actual sdo_geometry data in mutGeomUDTFields
  • Implemented use of ErrorHandler resource strings in error/warnings.
  • Replaced ORADYN_READONLY with ORADYN_NOCACHE to improve read performance and reduce memory use.
  • Improved dynaset processing efficiency by implementing performance tip”Avoiding Multiple Object Reference” in OO4O documentation
  • Simplified handling of optional extent in FindFirst
  • Added Parameter support to FindFirst in order to improve cursor sharing on database server
  • Made actual FindFirst modified query a returnable property to aid client debugging
  • Load error messages on layer startup

Also, added lots more tests to the LibTest.vbp project.