[mapguide-commits] r6743 - branches/2.4/MgDev/Server/src/Services/Feature

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Sun Jun 10 21:52:55 PDT 2012


Author: jng
Date: 2012-06-10 21:52:55 -0700 (Sun, 10 Jun 2012)
New Revision: 6743

Modified:
   branches/2.4/MgDev/Server/src/Services/Feature/ServerDataReader.cpp
   branches/2.4/MgDev/Server/src/Services/Feature/ServerDataReader.h
   branches/2.4/MgDev/Server/src/Services/Feature/ServerSqlDataReader.cpp
   branches/2.4/MgDev/Server/src/Services/Feature/ServerSqlDataReader.h
Log:
Backport #1996 to 2.4 branch

Modified: branches/2.4/MgDev/Server/src/Services/Feature/ServerDataReader.cpp
===================================================================
--- branches/2.4/MgDev/Server/src/Services/Feature/ServerDataReader.cpp	2012-06-11 04:44:16 UTC (rev 6742)
+++ branches/2.4/MgDev/Server/src/Services/Feature/ServerDataReader.cpp	2012-06-11 04:52:55 UTC (rev 6743)
@@ -33,6 +33,7 @@
     m_dataReader = FDO_SAFE_ADDREF(dataReader);
     m_providerName = providerName;
     m_removeFromPoolOnDestruction = false;
+    m_readerDepleted = false;
 
     // The reader takes ownership of the FDO connection
     m_connection->OwnReader();
@@ -48,6 +49,7 @@
     m_dataReader = NULL;
     m_providerName = L"";
     m_removeFromPoolOnDestruction = false;
+    m_readerDepleted = false;
 }
 
 MgServerDataReader::~MgServerDataReader()
@@ -72,6 +74,9 @@
 {
     CHECKNULL(m_dataReader, L"MgServerDataReader.ReadNext");
 
+    if (m_readerDepleted)
+        return false;
+
     bool retVal = false;
 
     MG_FEATURE_SERVICE_TRY()
@@ -80,6 +85,9 @@
 
     MG_FEATURE_SERVICE_CATCH_AND_THROW(L"MgServerDataReader.ReadNext")
 
+    if (!retVal)
+        m_readerDepleted = true;
+
     return retVal;
 }
 
@@ -1545,6 +1553,7 @@
         {
             break;
         }
+        name = L"";
     }
 
     return name;
@@ -1690,6 +1699,9 @@
 {
     CHECKNULL((MgBatchPropertyCollection*)m_bpCol, L"MgServerDataReader.AddRows");
 
+    if (m_readerDepleted)
+        return;
+
     INT32 desiredFeatures = 0;
 
     bool found = false;
@@ -1737,6 +1749,9 @@
             found = false;
         }
     }
+
+    if (!found)
+        m_readerDepleted = true;
 }
 
 void MgServerDataReader::AddCurrentRow()

Modified: branches/2.4/MgDev/Server/src/Services/Feature/ServerDataReader.h
===================================================================
--- branches/2.4/MgDev/Server/src/Services/Feature/ServerDataReader.h	2012-06-11 04:44:16 UTC (rev 6742)
+++ branches/2.4/MgDev/Server/src/Services/Feature/ServerDataReader.h	2012-06-11 04:52:55 UTC (rev 6743)
@@ -482,6 +482,7 @@
     Ptr<MgBatchPropertyCollection>       m_bpCol;
     Ptr<MgPropertyDefinitionCollection>  m_propDefCol;
     void AddCurrentRow();
+    FdoBoolean m_readerDepleted;
 
 CLASS_ID:
     static const INT32 m_cls_id = PlatformBase_FeatureService_DataReader;

Modified: branches/2.4/MgDev/Server/src/Services/Feature/ServerSqlDataReader.cpp
===================================================================
--- branches/2.4/MgDev/Server/src/Services/Feature/ServerSqlDataReader.cpp	2012-06-11 04:44:16 UTC (rev 6742)
+++ branches/2.4/MgDev/Server/src/Services/Feature/ServerSqlDataReader.cpp	2012-06-11 04:52:55 UTC (rev 6743)
@@ -31,6 +31,7 @@
     m_connection = SAFE_ADDREF(connection);
     m_sqlReader = FDO_SAFE_ADDREF(sqlReader);
     m_providerName = providerName;
+    m_readerDepleted = false;
 
     // The reader takes ownership of the FDO connection
     m_connection->OwnReader();
@@ -45,6 +46,7 @@
     m_connection = NULL;
     m_sqlReader = NULL;
     m_providerName = L"";
+    m_readerDepleted = false;
 }
 
 MgServerSqlDataReader::~MgServerSqlDataReader()
@@ -69,6 +71,9 @@
 {
     CHECKNULL(m_sqlReader, L"MgServerSqlDataReader.ReadNext");
 
+    if (m_readerDepleted)
+        return false;
+
     bool retVal = false;
 
     MG_FEATURE_SERVICE_TRY()
@@ -77,6 +82,9 @@
 
     MG_FEATURE_SERVICE_CATCH_AND_THROW(L"MgServerSqlDataReader.ReadNext")
 
+    if (!retVal)
+        m_readerDepleted = true;
+
     return retVal;
 }
 
@@ -1493,8 +1501,12 @@
     CHECKNULL((MgServerSqlDataReader*)m_sqlReader, L"MgServerSqlDataReader.AddRows");
     CHECKNULL((MgBatchPropertyCollection*)m_bpCol, L"MgServerSqlDataReader.AddRows");
 
+    if (m_readerDepleted)
+        return;
+
     INT32 desiredFeatures = 0;
-
+    bool readAtEnd = true;
+    
     while (m_sqlReader->ReadNext())
     {
         AddCurrentRow();
@@ -1503,6 +1515,7 @@
             desiredFeatures++;
             if (desiredFeatures == count) // Collected required features therefore do not process more
             {
+                readAtEnd = false;
                 break;
             }
         }
@@ -1511,6 +1524,9 @@
             continue;
         }
     }
+    
+    if (readAtEnd)
+        m_readerDepleted = true;
 }
 
 void MgServerSqlDataReader::AddCurrentRow()

Modified: branches/2.4/MgDev/Server/src/Services/Feature/ServerSqlDataReader.h
===================================================================
--- branches/2.4/MgDev/Server/src/Services/Feature/ServerSqlDataReader.h	2012-06-11 04:44:16 UTC (rev 6742)
+++ branches/2.4/MgDev/Server/src/Services/Feature/ServerSqlDataReader.h	2012-06-11 04:52:55 UTC (rev 6743)
@@ -454,6 +454,7 @@
     Ptr<MgBatchPropertyCollection>       m_bpCol;
     Ptr<MgPropertyDefinitionCollection>  m_propDefCol;
     void AddCurrentRow();
+    FdoBoolean m_readerDepleted;
 
 CLASS_ID:
     static const INT32 m_cls_id = PlatformBase_FeatureService_SqlDataReader;



More information about the mapguide-commits mailing list