Hi Istvan,

Unfortunately you won't be able to turn it off without recompiling the MSSQL 
driver. 
I've added a pull request removing these at 
https://github.com/mapserver/mapserver/pull/5856
This will be merged into master assuming there are no objections. 
I assume you are using ms4w as you mention a 4.0.1 release? You'll need to see 
when a new release of that may be available with the update. 
Thanks for reporting this issue,

Seth

--
web:http://geographika.co.uk
twitter: @geographika


On Sun, Sep 8, 2019, at 12:30 AM, Istvan Keszei wrote:
> 
> We have real large geospatial tables. Not having an option to turn MakeValid 
> off will kill our applications’ performance as indexes are essential. 
> 
> For a simple query, the disk reads are 100x more for a query including the 
> MakeValid. Hence, the cpu resources required are multifold too.
> 
> Yes, please turn it off or make it optional. Can this be done manually 
> somehow? We have waited long months for 4.0.1 to come out (with the opacity 
> fix) and now this issue prevents the upgrade. 
> 
> I see the invalid geometries more of a data maintenance responsibility rather 
> than a query-side-responsibility. I understand for some people this is 
> convenient, so that is why I suggest to make this optional. 
> 
> Any help is appreciated!
> 
> Thank you,
> Istvan
> 
> 
> On 2019. Sep 7., at 23:55, Tamas Szekeres <[email protected]> wrote:
>> I think we can remove MakeValid from the queries entirely. 
>> The problem is that if the table contains invalid geometries, the entire 
>> query will fail.
>> 
>> Best regards,
>> 
>> Tamas
>> 
>> 
>> Seth G <[email protected]> ezt írta (időpont: 2019. szept. 7., Szo, 
>> 21:35):
>>> __
>>> Hi,
>>> 
>>> Good question. This is a fairly new change as part of 
>>> https://github.com/mapserver/mapserver/issues/5781 from April this year. 
>>> In SQL Profiler I seem to get GEOM.STIntersects for WFS requests and 
>>> GEOM.MakeVaid().STIntersects for WMS. 
>>> MakeValid does appear to stop the index being used. Do you have a link 
>>> which says this definitively?
>>> 
>>> Seth
>>> 
>>> --
>>> web:http://geographika.co.uk
>>> twitter: @geographika
>>> 
>>> 
>>> On Sat, Sep 7, 2019, at 12:02 PM, [email protected] wrote:
>>>> Hello,

>>>> 

>>>> I noticed that when MapServer issues the query to MS SQL Server, it 
>>>> appends a .MakeValid() tag to the geometry field, which makes data access 
>>>> highly inefficient as no spatial indexes can be used when the MakeValid() 
>>>> is used. Here is the query that is being produced:

>>>> 

>>>> SELECT

>>>> convert(nvarchar(max), [label]),

>>>> [ogr_geometry],

>>>> convert(varchar(36), [ogr_fid])

>>>> FROM

>>>> section

>>>> WHERE

>>>> ogr_geometry.*MakeValid()*.STIntersects(geometry::STGeomFromText('POLYGON((-10973271.1167343
>>>>  5605636.0681215,-10963019.0003155 5605636.0681215,-10963019.0003155 
>>>> 5614459.76757417,-10973271.1167343 5614459.76757417,-10973271.1167343 
>>>> 5605636.0681215))',3857)) = 1

>>>> 

>>>> Here is the data access string from the map file:

>>>> 

>>>> *DATA "ogr_geometry from section USING UNIQUE ogr_fid USING SRID=3857"*

>>>> 

>>>> Earlier I was using a specific HINT for index usage:

>>>> 

>>>> *DATA "ogr_geometry from section WITH (INDEX(section_ogr_geometry_idx)) 
>>>> USING UNIQUE ogr_fid USING SRID=3857"*

>>>> 

>>>> But since MapServer adds the MakeValid automatically, I am getting the 
>>>> following error:

>>>> 

>>>> Msg 8635, Level 16, State 9, Line 1

>>>> The query processor could not produce a query plan for a query with a 
>>>> spatial index hint. Reason: Could not find required binary spatial method 
>>>> in a condition. Try removing the index hints or removing SET FORCEPLAN.

>>>> 

>>>> How do I configure mapserver to NOT ADD the MakeValid to every single one 
>>>> of its queries ?

>>>> 

>>>> Any response is much appreciated !

>>>> 

>>>> Thanks,

>>>> Istvan

>>>> 

>>>> 

>>>> _______________________________________________
>>>> mapserver-users mailing list
>>>> [email protected]
>>>> https://lists.osgeo.org/mailman/listinfo/mapserver-users
>>> 
>>> _______________________________________________
>>>  mapserver-users mailing list
>>> [email protected]
>>> https://lists.osgeo.org/mailman/listinfo/mapserver-users
>> _______________________________________________
>> mapserver-users mailing list
>> [email protected]
>> https://lists.osgeo.org/mailman/listinfo/mapserver-users
_______________________________________________
mapserver-users mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/mapserver-users

Reply via email to