Ticket #2685 (closed defect: fixed)

Opened 5 years ago

Last modified 5 years ago

5.2beta4 breaks simple filters on SDE layers

Reported by: bartvde Owned by: assefa
Priority: normal Milestone: 5.2.1 release
Component: WFS Server Version: unspecified
Severity: normal Keywords:
Cc: jmckenna

Description

Hi list, WFS filters with simple attribute filters are broken in beta4. Btw sorry for taking so long to participate in the beta process, but the person who does our building was on holidays. Even for SDE layers Mapserver now sets the filter in mapogcfilter.c: Line 1047: msLoadExpressionString(&lp->filter, pszBuffer); which causes this. The expression which it is trying to set looks like: ([KM] <= 13) which works for shapefiles but not for SDE. <?xml version='1.0' encoding="ISO-8859-1" ?> <ServiceExceptionReport version="1.2.0" xmlns="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org /2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/ogc http://schemas.opengis.net/wfs /1.0.0/OGC-exception.xsd">  <ServiceException code="NoApplicableCode" locator="mapserv"> msWFSGetFeature(): WFS server error. FLTApplyFilterToLayer() failed msSDELayerNextShape(): SDE error. SE_stream_fetch(): Underlying DBMS error. (-51) </ServiceException> </ServiceExceptionReport> Best regards, Bart

Attachments

ms_ticket2685.patch Download (0.6 KB) - added by bartvde 5 years ago.
patch fixing this issue

Change History

Changed 5 years ago by bartvde

patch fixing this issue

Changed 5 years ago by bartvde

  • owner changed from sdlime to mapserverbugs
  • component changed from MapServer C Library to WFS Server

Changed 5 years ago by jmckenna

  • cc jmckenna added

Changed 5 years ago by aalbarello

I'd also check for lp->connectiontype == MS_PLUGIN while we're at it. That's most likely needed for this to work with SDO/SDE/MSSQL when plugin libraries are used.

Andreas

Changed 5 years ago by assefa

  • owner changed from mapserverbugs to assefa
  • status changed from new to assigned

I was exactly thinking that (the case of MS_PLUGIN ) when I saw the comment. We could possibly parse the plugin value (...msplugin_sde_91.dll) to determine the layer type although I am not sure it would always be safe to do it. What do you think?

Changed 5 years ago by aalbarello

Indeed, using the plugin's name doesn't seem the cleanest thing to do. Best thing of course would be to move this logic entirely into each driver, but that's obviously not possible at this stage. Given the fact though that plugins seem to be available for Oracle Spatial, SDE and MSSQL only (correct me if I'm wrong) I'd say let's just generally check for MS_PLUGIN layers and treat them the same as all the database layers.

Andreas

Changed 5 years ago by assefa

  • milestone set to 5.2 release

works for me. In that case I will apply the patch provided + lp->connectiontype == MS_PLUGIN if there are no objections.

Changed 5 years ago by assefa

patch committed. Please close after testing. Thx

Changed 5 years ago by bartvde

  • status changed from assigned to closed
  • resolution set to fixed
Note: See TracTickets for help on using tickets.