[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