[fdo-internals] Code Submission Notification: SHP/SDF: fix select / select aggregate defects

Pierre Dalcourt pierre.dalcourt at autodesk.com
Thu Feb 22 12:38:33 EST 2007


Author:           Pierre Dalcourt

Date:             Thursday, February 22, 2007

Title:            SHP/SDF: fix select / select aggregate defects

Reviewed by:      Dan Stoica

 

TRAC Ticket #17 "SHP/SDF: fix various Select/SelectAggregates defects"

 

- Fixed these SHP/SDF defects:

            782748 SDF: SELECT AGGREGATE FUNCTIONS EXECUTED ON INVALID
DATA TYPES FOR THAT FUNCTION RETURNS A 0.0 VALUE.

            782753 SDF: SELECT AGGREGATE FUNCTION MIN AND MAX ON A
DATETIME DOES NOT RETURN A VALID VALUE.

            782759 SDF: SELECT AGGREGATE FUNCTION MAX AND MIN ON A
STRING DOES NOT RETURN A VALID VALUE

            814146 SHP: CERTAIN SELECT AGGREGATE FUNCTIONS CAUSE ERROR
"FETCHING A PROPERTY VALUE DID NOT MATCH THE PROPERTY TYPE":

            855301 SHP: Select using computed field and aggregate
function is not supported but fails to generate an exception:

 

- Added Min/Max(string/datetime) support to SDF and SHP, by adding this
to FdoCommonQueryAggregator

- Added full TestCommon support to SDF and SHP unit tests; increased
usage of TestCommon in many places

- Improved error handling in SDF/SHP unit tests (Several tests werent
catching/reporting errors correctly)

- ShpSelectCommand now validates upfront that you are not using
aggregate functions or invalid arguments to functions (e.g.
Ceil(String))

- SDF: added SchemaTest.* to OpenSource tests (it doesn't rely on
Sdf.lib)

- improved FdoCommonDataReader::GetAggregateFunctions() to handle NULL
select list

 

- added 3 new TestCommon classes and moved some generic SHP/SDF
utilities to them:

 

            TestCommonFileUtil:

                // Compare the contents of 2 files, and return -1 if
they don't match, 0 otherwise

                static FdoInt32 CompareFiles( const char* file1Name,
const char* file2Name );

 

                // Compare the contents of 2 files, and throw a CPPUNIT
exception if they do not match

                static void CompareFilesAndThrow( const char*
masterFileName, const char* outFileName );

 

                // Compare the contents of 2 files, with a start byte
offset and the number of bytes to compare (-1 to compare all bytes)

                static void CompareFiles (const wchar_t* file1Name,
const wchar_t* file2Name, unsigned long startByteOffset = 0L, unsigned
long bytesToCompare = -1L);

 

            TestCommonGeomUtil:

                // Compare two geometries for equivalence:

                static bool GeometriesEquivalent (FdoIGeometry *geom1,
FdoIGeometry *geom2);

                static bool LinearRingsEquivalent (FdoILinearRing* lr1,
FdoILinearRing* lr2);

                static bool PointsEquivalent (FdoIDirectPosition* pos1,
FdoIDirectPosition* pos2);

 

                // Print out info about the given geometry (type,
length, area, etc):

                static void PrintGeometryAnalysis( const wchar_t
*class_name, int index, FdoByteArray * geom_fgf, double length, double
area, bool verbose);

 

            TestCommonSchemaUtil:

                // Delete a class (if bDeleteRowsOnly==false) or delete
the rows of a class (if bDeleteRowsOnly==true):

                static void CleanUpClass(FdoIConnection *connection,
const wchar_t* schema_name, const wchar_t* class_name, bool
bDeleteRowsOnly=false);

 

- moved some more stuff to TestCommonMiscUti:

    TestCommonFail(char*)

 

    // Get time on system clock (in seconds) -- used for computing
elapsed time.

    static double GetTime_S(void);

 

    // check that 2 doubles are roughly equal:

    static bool FuzzyEqual (const double d1, const double d2);

 

================

 

FDO

Fdo\Unmanaged\Src\Message\FDOMessage.mc

 

SDF

Src/Provider/SdfExpressionCapabilities.cpp

Src/UnitTest/ApplySchemaTest.cpp

Src/UnitTest/AssociationSchemaTest.h

Src/UnitTest/ConnectionInfoTest.h

Src/UnitTest/FdoMultiThreadTest.h

Src/UnitTest/Makefile.am

Src/UnitTest/MasterTest.cpp

Src/UnitTest/MasterTest.h

Src/UnitTest/SelectTest.cpp

Src/UnitTest/SelectTest.h

Src/UnitTest/SpatialContextTest.cpp

Src/UnitTest/UnitTest.vcproj

Src/UnitTest/UnitTestUtil.cpp

Src/UnitTest/UnitTestUtil.h

 

SHP

Src/Provider/ShpDeleteCommand.cpp

Src/Provider/ShpExpressionCapabilities.cpp

Src/Provider/ShpSelectCommand.cpp

Src/Provider/stdafx.h

Src/SHP.sln

Src/UnitTest/BigPerformanceTests.cpp

Src/UnitTest/ComparisonTests.cpp

Src/UnitTest/ConnectTests.cpp

Src/UnitTest/DeleteTests.cpp

Src/UnitTest/FidelityTests.cpp

Src/UnitTest/FileAccessTests.cpp

Src/UnitTest/FilterTests.cpp

Src/UnitTest/IndexTests.cpp

Src/UnitTest/InsertTests.cpp

Src/UnitTest/Makefile.am

Src/UnitTest/OverridesTest.cpp

Src/UnitTest/Pch.h

Src/UnitTest/PerformanceTests.cpp

Src/UnitTest/ReadOnlyTests.cpp

Src/UnitTest/SchemaTests.cpp

Src/UnitTest/SelectAggregatesTests.cpp

Src/UnitTest/SelectAggregatesTests.h

Src/UnitTest/SelectTests.cpp

Src/UnitTest/SelectTests.h

Src/UnitTest/ShpTests.cpp

Src/UnitTest/ShpTests.h

Src/UnitTest/SpatialFilterTests.cpp

Src/UnitTest/UnitTest.vcproj

Src/UnitTest/UnitTestUtil.cpp

Src/UnitTest/UnitTestUtil.h

Src/UnitTest/UpdateTests.cpp

 

TestCommon

Common/Inc/FdoCommonDataReader.h

Common/Inc/FdoCommonQueryAggregator.h

Common/Src/FdoCommonDataReader.cpp

Common/Src/FdoCommonFilterExecutor.cpp

Common/Src/FdoCommonQueryAggregator.cpp

TestCommon/Inc/stdafx.h

TestCommon/Inc/TestCommonFileUtil.h

TestCommon/Inc/TestCommonGeomUtil.h

TestCommon/Inc/TestCommonMiscUtil.h

TestCommon/Inc/TestCommonSchemaUtil.h

TestCommon/Makefile.am

TestCommon/Src/TestCommonFileUtil.cpp

TestCommon/Src/TestCommonGeomUtil.cpp

TestCommon/Src/TestCommonMiscUtil.cpp

TestCommon/Src/TestCommonSchemaUtil.cpp

TestCommon/TestCommon.vcproj

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/fdo-internals/attachments/20070222/289120e3/attachment-0001.html


More information about the fdo-internals mailing list