@@ -904,21 +904,20 @@ static int prepare_database(layerObj *layer, rectObj rect, char **query_string)
904
904
}
905
905
906
906
/* test whether we should omit spatial filtering */
907
+ /* TODO: once this driver supports expression translation then filter->native_string will need to be considered here */
907
908
msMSSQL2008LayerGetExtent (layer , & extent );
908
- if (rect .minx <= extent .minx && rect .miny <= extent .miny &&
909
- rect .maxx >= extent .maxx && rect .maxy >= extent .maxy ) {
909
+ if (rect .minx <= extent .minx && rect .miny <= extent .miny && rect .maxx >= extent .maxx && rect .maxy >= extent .maxy ) {
910
910
/* no spatial filter used */
911
- if (! layer -> filter . native_string ) {
912
- snprintf (query_string_temp , sizeof (query_string_temp ), "SELECT %s from %s" , columns_wanted , data_source );
911
+ if (msLayerGetProcessingKey ( layer , "NATIVE_FILTER" ) == NULL ) {
912
+ snprintf (query_string_temp , sizeof (query_string_temp ), "SELECT %s from %s" , columns_wanted , data_source );
913
913
} else {
914
- snprintf (query_string_temp , sizeof (query_string_temp ), "SELECT %s from %s WHERE (%s)" , columns_wanted , data_source , layer -> filter . native_string );
914
+ snprintf (query_string_temp , sizeof (query_string_temp ), "SELECT %s from %s WHERE (%s)" , columns_wanted , data_source , msLayerGetProcessingKey ( layer , "NATIVE_FILTER" ) );
915
915
}
916
- }
917
- else {
918
- if (!layer -> filter .native_string ) {
919
- snprintf (query_string_temp , sizeof (query_string_temp ), "SELECT %s from %s WHERE %s.STIntersects(%s) = 1 " , columns_wanted , data_source , layerinfo -> geom_column , box3d );
916
+ } else {
917
+ if (msLayerGetProcessingKey (layer , "NATIVE_FILTER" ) == NULL ) {
918
+ snprintf (query_string_temp , sizeof (query_string_temp ), "SELECT %s from %s WHERE %s.STIntersects(%s) = 1 " , columns_wanted , data_source , layerinfo -> geom_column , box3d );
920
919
} else {
921
- snprintf (query_string_temp , sizeof (query_string_temp ), "SELECT %s from %s WHERE (%s) and %s.STIntersects(%s) = 1 " , columns_wanted , data_source , layer -> filter . native_string , layerinfo -> geom_column , box3d );
920
+ snprintf (query_string_temp , sizeof (query_string_temp ), "SELECT %s from %s WHERE (%s) and %s.STIntersects(%s) = 1 " , columns_wanted , data_source , msLayerGetProcessingKey ( layer , "NATIVE_FILTER" ) , layerinfo -> geom_column , box3d );
922
921
}
923
922
}
924
923
@@ -2221,7 +2220,7 @@ MS_DLL_EXPORT int PluginInitializeVirtualTable(layerVTableObj* vtable, layerObj
2221
2220
assert (layer != NULL );
2222
2221
assert (vtable != NULL );
2223
2222
2224
- /* vtable->LayerTranslateFilter, use default */
2223
+ /* vtable->LayerTranslateFilter, use default - need to add this... */
2225
2224
2226
2225
vtable -> LayerInitItemInfo = msMSSQL2008LayerInitItemInfo ;
2227
2226
vtable -> LayerFreeItemInfo = msMSSQL2008LayerFreeItemInfo ;
0 commit comments