[prev in list] [next in list] [prev in thread] [next in thread]
List: mapguide-commits
Subject: [mapguide-commits] r6799 - branches/2.4/MgDev/Server/src/Services/Feature
From: svn_mapguide () osgeo ! org
Date: 2012-06-21 15:00:23
Message-ID: 20120621150023.AB327390606 () trac ! osgeo ! org
[Download RAW message or body]
Author: jng
Date: 2012-06-21 08:00:23 -0700 (Thu, 21 Jun 2012)
New Revision: 6799
Modified:
branches/2.4/MgDev/Server/src/Services/Feature/ServerSelectFeatures.cpp
Log:
The SQL Server implementation of the FDO Join APIs does not properly handle the \
select aggregate cases as I hoped. This submission disables the FDO join optimization \
for select aggregates for all providers except SQLite
Modified: branches/2.4/MgDev/Server/src/Services/Feature/ServerSelectFeatures.cpp
===================================================================
--- branches/2.4/MgDev/Server/src/Services/Feature/ServerSelectFeatures.cpp 2012-06-21 \
14:59:13 UTC (rev 6798)
+++ branches/2.4/MgDev/Server/src/Services/Feature/ServerSelectFeatures.cpp 2012-06-21 \
15:00:23 UTC (rev 6799) @@ -99,6 +99,22 @@
bool bFeatureCalculation = FindFeatureCalculation(resource, className);
//Test for the FDO join optimization, because performance is **substantially** \
better
bool bSupportsFdoJoin = SupportsFdoJoin(resource, className, isSelectAggregate);
+
+ // HACK: Sorry, we have to do this for now. Only SQLite provider satisifes the \
original + // FDO join optimization in both regular select and select aggregate \
modes + //
+ // SQL Server has problems in aggregate mode. So we'll say the FDO join \
optimization is + // not supported when this is in aggregate mode. This means the \
join is handled by the + // GWS query engine. SQL Server on SQL Server join will \
use the best algorithm (sort merge) + // as both sides are sortable so we won't \
suffer too much of a performance penalty. + if (isSelectAggregate)
+ {
+ MdfModel::FeatureSource* featureSource = m_featureSourceCacheItem->Get();
+ const MdfModel::MdfString& providerName = featureSource->GetProvider();
+ if (providerName.find(L"OSGeo.SQLite") == MdfString::npos) //NOXLATE
+ bSupportsFdoJoin = false;
+ }
+
#ifdef DEBUG_FDO_JOIN
STRING fsIdStr = resource->ToString();
ACE_DEBUG((LM_INFO, ACE_TEXT("\n(%t) Testing Feature Source (%W, %W) for FDO \
join optimization"), fsIdStr.c_str(), className.c_str())); @@ -1769,7 +1785,7 @@
if (NULL == (FdoClassDefinition*)classDef)
{
//TODO: Refine message if available
- throw new MgClassNotFoundException(L"MgServerSelectFeatures.SelectFdoJoin", \
__LINE__, __WFILE__, NULL, L"", NULL); + throw new \
MgClassNotFoundException(L"MgServerSelectFeatures.IsFunctionOnPrimaryProperty", \
__LINE__, __WFILE__, NULL, L"", NULL); }
FdoPtr<FdoPropertyDefinitionCollection> properties = classDef->GetProperties();
@@ -1843,7 +1859,7 @@
if (NULL == (FdoClassDefinition*)classDef)
{
//TODO: Refine message if available
- throw new \
MgClassNotFoundException(L"MgServerSelectFeatures.SelectFdoJoin", __LINE__, \
__WFILE__, NULL, L"", NULL); + throw new \
MgClassNotFoundException(L"MgServerSelectFeatures.FilterContainsSecondaryProperties", \
__LINE__, __WFILE__, NULL, L"", NULL); }
FdoPtr<FdoPropertyDefinitionCollection> propDefs = \
classDef->GetProperties(); @@ -2162,7 +2178,7 @@
if (NULL == (FdoClassDefinition*)classDef)
{
//TODO: Refine message if available
- throw new MgClassNotFoundException(L"MgServerSelectFeatures.SelectFdoJoin", \
__LINE__, __WFILE__, NULL, L"", NULL); + throw new \
MgClassNotFoundException(L"MgServerSelectFeatures.ApplyClassProperties", __LINE__, \
__WFILE__, NULL, L"", NULL); }
FdoPtr<FdoIdentifierCollection> propNames = m_command->GetPropertyNames();
_______________________________________________
mapguide-commits mailing list
mapguide-commits@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapguide-commits
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic