[fdo-commits] r123 - in branches/3.2.x/Providers/ArcSDE: Src/Provider Src/UnitTest TestData

svn_fdo at osgeo.org svn_fdo at osgeo.org
Wed Jan 31 11:54:53 EST 2007


Author: pierredalcourt
Date: 2007-01-31 11:54:53 -0500 (Wed, 31 Jan 2007)
New Revision: 123

Modified:
   branches/3.2.x/Providers/ArcSDE/Src/Provider/ArcSDEDescribeSchemaCommand.cpp
   branches/3.2.x/Providers/ArcSDE/Src/UnitTest/ArcSDETests.h
   branches/3.2.x/Providers/ArcSDE/Src/UnitTest/SelectTests.cpp
   branches/3.2.x/Providers/ArcSDE/Src/UnitTest/SelectTests.h
   branches/3.2.x/Providers/ArcSDE/TestData/SetupTestData.perl
Log:
ArcSDE: fix defect introduced by recent performance enhancements; using unqualified names would fail if no describeschema operation had been previously performed

Modified: branches/3.2.x/Providers/ArcSDE/Src/Provider/ArcSDEDescribeSchemaCommand.cpp
===================================================================
--- branches/3.2.x/Providers/ArcSDE/Src/Provider/ArcSDEDescribeSchemaCommand.cpp	2007-01-29 22:22:21 UTC (rev 122)
+++ branches/3.2.x/Providers/ArcSDE/Src/Provider/ArcSDEDescribeSchemaCommand.cpp	2007-01-31 16:54:53 UTC (rev 123)
@@ -594,7 +594,8 @@
 		// optimization: only load information for a specific class if only that class is requested:
 		if ((preloadedClass==NULL)
 		  && ((mFdoClassIdToLoad==NULL)
-		    || ((0==wcscmp(mFdoClassIdToLoad->GetSchemaName(),fdoSchemaName)) && (0==wcscmp(mFdoClassIdToLoad->GetName(),fdoClassName)))))
+		    || (((mFdoClassIdToLoad->GetSchemaName()==NULL) || (mFdoClassIdToLoad->GetSchemaName()[0]==NULL) || 0==wcscmp(mFdoClassIdToLoad->GetSchemaName(),fdoSchemaName))
+                && (0==wcscmp(mFdoClassIdToLoad->GetName(),fdoClassName)))))
 		{
 			// Store the overrides always:
 			FdoPtr<ArcSDEClassMapping> classMapping = mConnection->GetClassMapping(fdoSchemaName, fdoClassName, false);

Modified: branches/3.2.x/Providers/ArcSDE/Src/UnitTest/ArcSDETests.h
===================================================================
--- branches/3.2.x/Providers/ArcSDE/Src/UnitTest/ArcSDETests.h	2007-01-29 22:22:21 UTC (rev 122)
+++ branches/3.2.x/Providers/ArcSDE/Src/UnitTest/ArcSDETests.h	2007-01-31 16:54:53 UTC (rev 123)
@@ -577,6 +577,10 @@
     DECLARE_CLASS(TestSingleDb, Metadcov, TestClassComplex, L"TESTB");
     DECLARE_CLASS(TestMultiDb, Metadcov, TestClassSimpleMultiDb, L"TESTA");
     DECLARE_CLASS(Sde, Australia, LargeWithGeom, L"LARGEWITHGEOM");
+
+    static FdoStringP ClassSchemaTreesUniqueName() { return FdoStringP::Format(L"%ls%ls", (FdoString*)FdoSchemaPrefixSde(), (FdoString*)UserNameMetadcov()); } \
+    static FdoStringP ClassNameTreesUniqueName()   { return AdjustRdbmsName((FdoString*)FdoStringP::Format(L"TREES_%ls", (FdoString*)DatasetName())); } \
+    static FdoStringP QClassNameTreesUniqueName()  { return FdoStringP::Format(L"%ls:%ls", (FdoString*)ClassSchemaTreesUniqueName(), (FdoString*)ClassNameTreesUniqueName()); }
 };
 
 #endif // CPP_UNIT_ArcSDETests_H

Modified: branches/3.2.x/Providers/ArcSDE/Src/UnitTest/SelectTests.cpp
===================================================================
--- branches/3.2.x/Providers/ArcSDE/Src/UnitTest/SelectTests.cpp	2007-01-29 22:22:21 UTC (rev 122)
+++ branches/3.2.x/Providers/ArcSDE/Src/UnitTest/SelectTests.cpp	2007-01-31 16:54:53 UTC (rev 123)
@@ -1704,3 +1704,29 @@
         fail (ge);
     }
 }
+
+
+void SelectTests::simple_unique ()
+{
+    if (CreateSchemaOnly()) return;
+
+    try
+    {
+        // Close/re-open the connection, to flush schema cache to make sure we are exercising the code in
+        // DescribeSchema that optimally fetches only the requested class even if its name is not qualified:
+        mConnection->Close ();
+        mConnection->Open ();
+
+        FdoPtr<FdoISelect> select = (FdoISelect*)mConnection->CreateCommand (FdoCommandType_Select);
+        select->SetFeatureClassName (ArcSDETestConfig::ClassNameTreesUniqueName());
+        FdoPtr<FdoIFeatureReader> reader = select->Execute ();
+        FdoPtr<FdoFeatureClass> classDef = (FdoFeatureClass*)reader->GetClassDefinition();
+        while (reader->ReadNext ())
+            ProcessFeature (reader, classDef);
+        reader->Close();
+    }
+    catch (FdoException *e)
+    {
+        fail(e);
+    }
+}

Modified: branches/3.2.x/Providers/ArcSDE/Src/UnitTest/SelectTests.h
===================================================================
--- branches/3.2.x/Providers/ArcSDE/Src/UnitTest/SelectTests.h	2007-01-29 22:22:21 UTC (rev 122)
+++ branches/3.2.x/Providers/ArcSDE/Src/UnitTest/SelectTests.h	2007-01-31 16:54:53 UTC (rev 123)
@@ -46,6 +46,7 @@
     CPPUNIT_TEST (spatial_query_outside_coordsys_extents);
     CPPUNIT_TEST (multiple_databases);
     CPPUNIT_TEST (spatial_filter_buffer_outside_extents);
+    CPPUNIT_TEST (simple_unique);
     CPPUNIT_TEST_SUITE_END ();
 
     static FdoPtr<FdoIConnection> mConnection;
@@ -81,6 +82,7 @@
     void multiple_databases();
     void spatial_filter_buffer_outside_extents();
     void select_large_table_with_geom();
+    void simple_unique();
 
     // helper methods:
     void create_large_table_with_geom();

Modified: branches/3.2.x/Providers/ArcSDE/TestData/SetupTestData.perl
===================================================================
--- branches/3.2.x/Providers/ArcSDE/TestData/SetupTestData.perl	2007-01-29 22:22:21 UTC (rev 122)
+++ branches/3.2.x/Providers/ArcSDE/TestData/SetupTestData.perl	2007-01-31 16:54:53 UTC (rev 123)
@@ -325,7 +325,7 @@
 
   # On both Oracle and SQL Server:
 
-  print "\n" . $ACTION . " tables TREES, SOILS and PARCELS for " . $RDBMS . " ... \n";
+  print "\n" . $ACTION . " tables TREES, TREES_" . $DATASETNAME . ", SOILS and PARCELS for " . $RDBMS . " ... \n";
 
   if ($INSTALLACTION ne "U") {
     system "shp2sde -o create -l TREES,SHAPE -f " . $SHP_ROOT . "\\Metadcov\\Trees.shp -e p -a all -C OBJECTID,USER,0 -u " . $username_metadcov . " -p test " . $DB_INST;
@@ -334,10 +334,15 @@
     system "echo y | sdetable -o alter_reg -t SOILS -V MULTI -c FID -C SDE -u " . $username_australia . " -p test " . $DB_INST;
     system "shp2sde -o create -l PARCELS,SHAPE -f " . $SHP_ROOT . "\\Australia\\PARCELS.shp -e a -a all -C FID,USER,0 -u " . $username_australia . " -p test " . $DB_INST;
     system "echo y | sdetable -o alter_reg -t PARCELS -c FID -C SDE -u " . $username_australia . " -p test " . $DB_INST;
+
+    # create a table with a unique name, to test code that deals with unqualified FDO class names:
+    system "shp2sde -o create -l TREES_" . $DATASETNAME . ",SHAPE -f " . $SHP_ROOT . "\\Metadcov\\Trees.shp -e p -a all -C OBJECTID,USER,0 -u " . $username_metadcov . " -p test " . $DB_INST;
+    system "echo y | sdetable -o alter_reg -t TREES_" . $DATASETNAME . " -V MULTI -c OBJECTID -C SDE -u " . $username_metadcov . " -p test " . $DB_INST;
   } else {
     system "echo y | sdetable -o delete -t TREES -u " . $username_metadcov . " -p test " . $DB_INST;
     system "echo y | sdetable -o delete -t SOILS -u " . $username_australia . " -p test " . $DB_INST;
     system "echo y | sdetable -o delete -t PARCELS -u " . $username_australia . " -p test " . $DB_INST;
+    system "echo y | sdetable -o delete -t TREES_" . $DATASETNAME . " -u " . $username_metadcov . " -p test " . $DB_INST;
   }
 
   # On both Oracle and SQL Server:



More information about the fdo-commits mailing list