[Git][debian-gis-team/mapserver][experimental] 5 commits: New upstream version 7.2.0~beta2

Bas Couwenberg gitlab at salsa.debian.org
Wed Jun 13 18:12:29 BST 2018


Bas Couwenberg pushed to branch experimental at Debian GIS Project / mapserver


Commits:
36afb4bd by Bas Couwenberg at 2018-06-13T18:12:53+02:00
New upstream version 7.2.0~beta2
- - - - -
ae708623 by Bas Couwenberg at 2018-06-13T18:13:01+02:00
Merge tag 'upstream/7.2.0_beta2' into experimental

Upstream version 7.2.0~beta2

- - - - -
015dcce8 by Bas Couwenberg at 2018-06-13T18:13:14+02:00
New upstream beta release.

- - - - -
bd9b30ae by Bas Couwenberg at 2018-06-13T18:15:39+02:00
Update symbols for other architectures.

- - - - -
5414ca8f by Bas Couwenberg at 2018-06-13T18:15:58+02:00
Set distribution to experimental.

- - - - -


9 changed files:

- CMakeLists.txt
- HISTORY.TXT
- debian/changelog
- debian/libmapserver2.symbols
- mapdraw.c
- mapmssql2008.c
- mapmvt.c
- mappostgis.c
- mapwcs20.c


Changes:

=====================================
CMakeLists.txt
=====================================
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -18,7 +18,7 @@ include(CheckCSourceCompiles)
 set (MapServer_VERSION_MAJOR 7)
 set (MapServer_VERSION_MINOR 2)
 set (MapServer_VERSION_REVISION 0)
-set (MapServer_VERSION_SUFFIX "-beta1")
+set (MapServer_VERSION_SUFFIX "-beta2")
 
 set(TARGET_VERSION_MAJOR ${MapServer_VERSION_MAJOR})
 set(TARGET_VERSION_MINOR ${MapServer_VERSION_MINOR})


=====================================
HISTORY.TXT
=====================================
--- a/HISTORY.TXT
+++ b/HISTORY.TXT
@@ -12,6 +12,11 @@ For a complete change history, please see the Git log comments.  For more
 details about recent point releases, please see the online changelog at:
 http://mapserver.org/development/changelog/
 
+7.2.0-beta2 release (2018-6-13)
+
+- Update beta1 release notes to remove reference to PHP7 support
+- No other major changes, see detailed changelog for bug fixes
+
 7.2.0-beta1 release (2018-5-9)
 --------------------
 
@@ -29,8 +34,6 @@ http://mapserver.org/development/changelog/
 
 - Support C-style multi-line content types (#5362)
 
-- PHP 7 MapScript Support Through SWIG (RFC117)
-
 - Python 3.x support (#5561)
 
 - Support Vendor-Specific OGC FILTER parameter in WMS requests (RFC118)


=====================================
debian/changelog
=====================================
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+mapserver (7.2.0~beta2-1~exp1) experimental; urgency=medium
+
+  * New upstream beta release.
+  * Update symbols for other architectures.
+
+ -- Bas Couwenberg <sebastic at debian.org>  Wed, 13 Jun 2018 18:15:40 +0200
+
 mapserver (7.2.0~beta1-1~exp1) experimental; urgency=medium
 
   * New upstream beta release.


=====================================
debian/libmapserver2.symbols
=====================================
--- a/debian/libmapserver2.symbols
+++ b/debian/libmapserver2.symbols
@@ -1,4 +1,4 @@
-# SymbolsHelper-Confirmed: 7.2.0~beta1 amd64
+# SymbolsHelper-Confirmed: 7.2.0~beta1 amd64 arm64 armel armhf i386 m68k mips mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sh4 sparc64
 libmapserver.so.2 #PACKAGE# #MINVER#
  BuildExpressionTree at Base 6.2.1
  CleanVSIDir at Base 6.2.1
@@ -195,6 +195,7 @@ libmapserver.so.2 #PACKAGE# #MINVER#
  _ZN10ClipperLib17E2InsertsBeforeE1ERNS_5TEdgeES1_ at Base 6.2.1
  _ZN10ClipperLib17FindAppendLinkEndEPNS_6OutRecE at Base 6.2.1
  _ZN10ClipperLib17GetOverlapSegmentENS_8IntPointES0_S0_S0_RS0_S1_ at Base 6.2.1
+ (arch=armel armhf i386 m68k mips mipsel powerpc)_ZN10ClipperLib17PolyOffsetBuilder8DoSquareEd at Base 7.2.0~beta1
  _ZN10ClipperLib17PolyOffsetBuilderC1ERKSt6vectorIS1_INS_8IntPointESaIS2_EESaIS4_EERS6_dNS_8JoinTypeEd at Base 6.2.1
  _ZN10ClipperLib17PolyOffsetBuilderC2ERKSt6vectorIS1_INS_8IntPointESaIS2_EESaIS4_EERS6_dNS_8JoinTypeEd at Base 6.2.1
  _ZN10ClipperLib18GetNextNonDupOutPtEPNS_5OutPtERS1_ at Base 6.2.1
@@ -208,8 +209,7 @@ libmapserver.so.2 #PACKAGE# #MINVER#
  _ZN10ClipperLib4TopXERNS_5TEdgeEx at Base 6.2.1
  _ZN10ClipperLib5GetDxENS_8IntPointES0_ at Base 6.2.1
  _ZN10ClipperLib5SetDxERNS_5TEdgeE at Base 6.2.1
- (arch=i386 m68k mips mipsel powerpc)_ZN10ClipperLib6Int128C1Ex at Base 7.0.6
- (arch=i386 m68k mips mipsel powerpc)_ZN10ClipperLib6Int128C2Ex at Base 7.0.6
+ (arch=armel armhf i386 m68k mips mipsel powerpc)_ZN10ClipperLib6Int1286NegateERS0_ at Base 7.2.0~beta1
  _ZN10ClipperLib7Clipper10ClearJoinsEv at Base 6.2.1
  _ZN10ClipperLib7Clipper11AddHorzJoinEPNS_5TEdgeEi at Base 6.2.1
  _ZN10ClipperLib7Clipper11BuildResultERSt6vectorIS1_INS_8IntPointESaIS2_EESaIS4_EE at Base 6.2.1
@@ -223,8 +223,8 @@ libmapserver.so.2 #PACKAGE# #MINVER#
  _ZN10ClipperLib7Clipper13BuildResultExERSt6vectorINS_9ExPolygonESaIS2_EE at Base 6.2.1
  _ZN10ClipperLib7Clipper13DeleteFromAELEPNS_5TEdgeE at Base 6.2.1
  _ZN10ClipperLib7Clipper13DeleteFromSELEPNS_5TEdgeE at Base 6.2.1
- (arch=armel armhf hppa hurd-i386 i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe sparc x32)_ZN10ClipperLib7Clipper13DisposeOutRecEjb at Base 7.0.6
- (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el s390 s390x sparc64)_ZN10ClipperLib7Clipper13DisposeOutRecEmb at Base 7.0.1
+ (arch=armel armhf hppa hurd-i386 i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe sh4 sparc x32)_ZN10ClipperLib7Clipper13DisposeOutRecEjb at Base 7.2.0~beta1
+ (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390 s390x sparc64)_ZN10ClipperLib7Clipper13DisposeOutRecEmb at Base 7.2.0~beta1
  _ZN10ClipperLib7Clipper14ClearHorzJoinsEv at Base 6.2.1
  _ZN10ClipperLib7Clipper14FixHoleLinkageEPNS_6OutRecE at Base 6.2.1
  _ZN10ClipperLib7Clipper14InsertScanbeamEx at Base 6.2.1
@@ -318,8 +318,8 @@ libmapserver.so.2 #PACKAGE# #MINVER#
  _ZN11KmlRendererD0Ev at Base 6.4.0
  _ZN11KmlRendererD1Ev at Base 6.4.0
  _ZN11KmlRendererD2Ev at Base 6.4.0
- (arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64el !s390x !sparc64)_ZN12AGG2RendererD1Ev at Base 7.0.1
- (arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64el !s390x !sparc64)_ZN12AGG2RendererD2Ev at Base 7.0.1
+ (arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN12AGG2RendererD1Ev at Base 7.0.1
+ (arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN12AGG2RendererD2Ev at Base 7.0.1
  _ZN12line_adaptor6vertexEPdS0_ at Base 6.2.1
  _ZN12line_adaptorD0Ev at Base 6.2.1
  _ZN12line_adaptorD1Ev at Base 6.2.1
@@ -336,8 +336,8 @@ libmapserver.so.2 #PACKAGE# #MINVER#
  _ZN19polygon_adaptor_utfD0Ev at Base 7.0.0
  _ZN19polygon_adaptor_utfD1Ev at Base 7.0.0
  _ZN19polygon_adaptor_utfD2Ev at Base 7.0.0
- (optional=templinst|arch=alpha amd64 arm64 hppa ia64 kfreebsd-amd64 mips64el ppc64 ppc64el s390 s390x sparc sparc64 x32)_ZN9mapserver10conv_curveINS_20path_storage_integerIiLj6EEENS_6curve3ENS_6curve4EE6vertexEPdS6_ at Base 6.4.0
- (optional=templinst|arch=alpha amd64 arm64 hppa ia64 kfreebsd-amd64 mips64el ppc64 ppc64el s390 s390x sparc sparc64 x32)_ZN9mapserver10conv_curveINS_20path_storage_integerIsLj6EEENS_6curve3ENS_6curve4EE6vertexEPdS6_ at Base 6.4.0
+ (optional=templinst|arch=alpha amd64 arm64 hppa ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390 s390x sh4 sparc sparc64 x32)_ZN9mapserver10conv_curveINS_20path_storage_integerIiLj6EEENS_6curve3ENS_6curve4EE6vertexEPdS6_ at Base 6.4.0
+ (optional=templinst|arch=alpha amd64 arm64 hppa ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390 s390x sh4 sparc sparc64 x32)_ZN9mapserver10conv_curveINS_20path_storage_integerIsLj6EEENS_6curve3ENS_6curve4EE6vertexEPdS6_ at Base 6.4.0
  (optional=templinst|arch=sparc)_ZN9mapserver10conv_curveINS_31serialized_integer_path_adaptorIsLj6EEENS_6curve3ENS_6curve4EED1Ev at Base 6.4.1
  (optional=templinst|arch=sparc)_ZN9mapserver10conv_curveINS_31serialized_integer_path_adaptorIsLj6EEENS_6curve3ENS_6curve4EED2Ev at Base 6.4.1
  (optional=templinst)_ZN9mapserver10conv_curveINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_6curve3ENS_6curve4EE6vertexEPdS8_ at Base 7.0.0
@@ -372,10 +372,10 @@ libmapserver.so.2 #PACKAGE# #MINVER#
  (optional=templinst)_ZN9mapserver11math_strokeINS_11pod_bvectorINS_10point_baseIdEELj6EEEE8calc_arcERS4_dddddd at Base 6.2.1
  (optional=templinst)_ZN9mapserver11math_strokeINS_11pod_bvectorINS_10point_baseIdEELj6EEEE8calc_capERS4_RKNS_11vertex_distES9_d at Base 6.2.1
  (optional=templinst)_ZN9mapserver11math_strokeINS_11pod_bvectorINS_10point_baseIdEELj6EEEE9calc_joinERS4_RKNS_11vertex_distES9_S9_dd at Base 6.2.1
- (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el s390x sparc64 x32)_ZN9mapserver11pod_bvectorIN10ClipperLib8IntPointELj8EE14allocate_blockEj at Base 6.4.0
+ (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sh4 sparc64 x32)_ZN9mapserver11pod_bvectorIN10ClipperLib8IntPointELj8EE14allocate_blockEj at Base 6.4.0
  (optional=templinst)_ZN9mapserver11pod_bvectorIN10ClipperLib8IntPointELj8EED1Ev at Base 6.2.1
  (optional=templinst)_ZN9mapserver11pod_bvectorIN10ClipperLib8IntPointELj8EED2Ev at Base 6.2.1
- (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el s390x sparc64 x32)_ZN9mapserver11pod_bvectorINS_10point_baseIdEELj6EE14allocate_blockEj at Base 7.0.0
+ (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sh4 sparc64 x32)_ZN9mapserver11pod_bvectorINS_10point_baseIdEELj6EE14allocate_blockEj at Base 7.0.0
  (optional=templinst)_ZN9mapserver11pod_bvectorINS_10point_baseIdEELj6EED1Ev at Base 6.2.1
  (optional=templinst)_ZN9mapserver11pod_bvectorINS_10point_baseIdEELj6EED2Ev at Base 6.2.1
  (optional=templinst)_ZN9mapserver11pod_bvectorINS_11vertex_distELj6EED1Ev at Base 6.2.1
@@ -402,13 +402,13 @@ libmapserver.so.2 #PACKAGE# #MINVER#
  (optional=templinst)_ZN9mapserver11pod_bvectorIhLj12EED1Ev at Base 7.0.2
  (optional=templinst)_ZN9mapserver11pod_bvectorIhLj12EED2Ev at Base 7.0.2
  (optional=templinst)_ZN9mapserver11qsort_cellsINS_7cell_aaEEEvPPT_j at Base 6.2.1
- (optional=templinst|arch=!amd64 !arm64 !hppa !mips64el !ppc64el !s390x !sparc64)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEE11end_contourERSt6vectorISC_IN10ClipperLib8IntPointESaISE_EESaISG_EE at Base 7.0.2
+ (optional=templinst|arch=!amd64 !arm64 !hppa !mips64el !ppc64 !ppc64el !riscv64 !s390x !sh4 !sparc64)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEE11end_contourERSt6vectorISC_IN10ClipperLib8IntPointESaISE_EESaISG_EE at Base 7.0.2
  (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEE11next_vertexEPdSC_ at Base 6.4.0
  (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEE6rewindEj at Base 6.2.1
  (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEE6vertexEPdSC_ at Base 6.4.1
  (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEED1Ev at Base 6.2.1
  (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEED2Ev at Base 6.2.1
- (optional=templinst|arch=!amd64 !arm64 !hppa !mips64el !ppc64el !s390x !sparc64)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEEE11end_contourERSt6vectorISA_IN10ClipperLib8IntPointESaISC_EESaISE_EE at Base 7.0.2
+ (optional=templinst|arch=!amd64 !arm64 !hppa !mips64el !ppc64 !ppc64el !riscv64 !s390x !sh4 !sparc64)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEEE11end_contourERSt6vectorISA_IN10ClipperLib8IntPointESaISC_EESaISE_EE at Base 7.0.2
  (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEEE11next_vertexEPdSA_ at Base 6.4.0
  (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEEE6rewindEj at Base 6.2.1
  (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEEE6vertexEPdSA_ at Base 6.4.1
@@ -477,8 +477,8 @@ libmapserver.so.2 #PACKAGE# #MINVER#
  (optional=templinst)_ZN9mapserver18comp_op_rgba_minusINS_5rgba8ENS_10order_bgraEE9blend_pixEPhjjjjj at Base 7.0.0
  _ZN9mapserver18comp_op_table_rgbaINS_5rgba8ENS_10order_bgraEE14g_comp_op_funcE at Base 7.0.1
  (optional=templinst)_ZN9mapserver18conv_adaptor_vcgenI12line_adaptorNS_10vcgen_dashENS_12null_markersEE6vertexEPdS5_ at Base 6.2.1
- (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el s390x sparc64 x32)_ZN9mapserver18conv_adaptor_vcgenI12line_adaptorNS_12vcgen_strokeENS_12null_markersEE6vertexEPdS5_ at Base 6.4.0
- (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el s390x sparc64 x32)_ZN9mapserver18conv_adaptor_vcgenI16line_adaptor_utfNS_12vcgen_strokeENS_12null_markersEE6vertexEPdS5_ at Base 7.0.0
+ (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sh4 sparc64 x32)_ZN9mapserver18conv_adaptor_vcgenI12line_adaptorNS_12vcgen_strokeENS_12null_markersEE6vertexEPdS5_ at Base 6.4.0
+ (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sh4 sparc64 x32)_ZN9mapserver18conv_adaptor_vcgenI16line_adaptor_utfNS_12vcgen_strokeENS_12null_markersEE6vertexEPdS5_ at Base 7.0.0
  (optional=templinst)_ZN9mapserver18conv_adaptor_vcgenINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEENS_12vcgen_strokeES6_E6vertexEPdSA_ at Base 6.2.1
  (optional=templinst)_ZN9mapserver18conv_adaptor_vcgenINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_10vcgen_dashENS_12null_markersEE6vertexEPdS8_ at Base 6.2.1
  (optional=templinst)_ZN9mapserver18conv_adaptor_vcgenINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12vcgen_strokeENS_12null_markersEE6vertexEPdS8_ at Base 6.2.1
@@ -547,7 +547,7 @@ libmapserver.so.2 #PACKAGE# #MINVER#
  _ZN9mapserver25font_engine_freetype_baseD1Ev at Base 6.2.1
  _ZN9mapserver25font_engine_freetype_baseD2Ev at Base 6.2.1
  (optional=templinst)_ZN9mapserver25render_scanline_bin_solidINS_12scanline_binENS_13renderer_baseI10pixfmt_utfI8utfpix32NS_13row_ptr_cacheIjEELj1ELj0EEEES4_EEvRKT_RT0_RKT1_ at Base 7.0.0
- (optional=templinst)_ZN9mapserver28pattern_filter_bilinear_rgbaINS_5rgba8EE14pixel_high_resEPKPKS1_PS1_ii at Base 7.0.2
+ (optional=templinst|arch=!sparc64)_ZN9mapserver28pattern_filter_bilinear_rgbaINS_5rgba8EE14pixel_high_resEPKPKS1_PS1_ii at Base 7.0.2
  _ZN9mapserver3arc19approximation_scaleEd at Base 6.2.1
  _ZN9mapserver3arc4initEddddddb at Base 6.2.1
  _ZN9mapserver3arc6rewindEj at Base 6.2.1
@@ -568,7 +568,6 @@ libmapserver.so.2 #PACKAGE# #MINVER#
  (optional=templinst|arch=sparc)_ZN9mapserver9path_baseINS_20vertex_block_storageIdLj8ELj256EEEE11concat_pathINS_14conv_transformINS_10conv_curveINS_31serialized_integer_path_adaptorIsLj6EEENS_6curve3ENS_6curve4EEENS_12trans_affineEEEEEvRT_j at Base 6.4.1
  (optional=templinst)_ZN9mapserver9path_baseINS_20vertex_block_storageIdLj8ELj256EEEE6curve3Edddd at Base 7.0.0
  (optional=templinst)_ZN9mapserver9path_baseINS_20vertex_block_storageIdLj8ELj256EEEE6curve4Edddddd at Base 7.0.0
- (optional=templinst|arch=!amd64)_ZN9mapserver9path_baseINS_20vertex_block_storageIdLj8ELj256EEEE6vertexEPdS4_ at Base 7.0.2
  _ZN9mapserver9verdana12E at Base 6.2.1
  _ZN9mapserver9verdana13E at Base 6.2.1
  _ZN9mapserver9verdana14E at Base 6.2.1
@@ -577,7 +576,7 @@ libmapserver.so.2 #PACKAGE# #MINVER#
  _ZN9mapserver9verdana18E at Base 6.2.1
  _ZNK10ClipperLib16clipperException4whatEv at Base 6.2.1
  (arch=sparc)_ZNK10ClipperLib6Int128dvERKS0_ at Base 6.4.1
- (arch=!amd64 !arm64 !hppa !mips64el !ppc64el !s390x !sparc64)_ZNK10ClipperLib6Int128mlERKS0_ at Base 7.0.2
+ (arch=!amd64 !arm64 !hppa !mips64el !ppc64 !ppc64el !riscv64 !s390x !sh4 !sparc64)_ZNK10ClipperLib6Int128mlERKS0_ at Base 7.0.2
  _ZNK10ClipperLib7Clipper14IsContributingERKNS_5TEdgeE at Base 6.2.1
  _ZNK10ClipperLib7Clipper17IsEvenOddFillTypeERKNS_5TEdgeE at Base 6.2.1
  _ZNK10ClipperLib7Clipper20IsEvenOddAltFillTypeERKNS_5TEdgeE at Base 6.2.1
@@ -589,41 +588,38 @@ libmapserver.so.2 #PACKAGE# #MINVER#
  _ZNK9mapserver12trans_affine8is_equalERKS0_d at Base 6.2.1
  _ZNK9mapserver12trans_affine8is_validEd at Base 6.2.1
  _ZNK9mapserver12trans_affine8rotationEv at Base 6.2.1
- (arch=armel armhf hurd-i386 i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe)_ZNK9mapserver12trans_affine9transformEPdS1_ at Base 7.0.6
  (optional=templinst)_ZNK9mapserver18rasterizer_sl_clipINS_12ras_conv_intEE11line_clip_yINS_19rasterizer_cells_aaINS_7cell_aaEEEEEvRT_iiiijj at Base 6.2.1
  _ZNK9mapserver25font_engine_freetype_base14write_glyph_toEPh at Base 6.2.1
  _ZNK9mapserver25font_engine_freetype_base8ascenderEv at Base 6.2.1
  _ZNK9mapserver25font_engine_freetype_base9descenderEv at Base 6.2.1
  _ZNK9mapserver25font_engine_freetype_base9find_faceEPKc at Base 6.2.1
  _ZNK9mapserver25font_engine_freetype_base9num_facesEv at Base 6.2.1
- (optional=templinst|arch=!amd64 !arm64 !hppa !mips64el !ppc64el !s390x !sparc64)_ZNSt6vectorIN10ClipperLib11DoublePointESaIS1_EE17_M_default_appendEj at Base 7.0.2
- (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64el !s390x !sparc64)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE17_M_default_appendEj at Base 7.0.2
- (optional=templinst|arch=amd64 arm64 mips64el ppc64el s390x sparc64)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE17_M_default_appendEm at Base 7.0.2
+ (optional=templinst|arch=!amd64 !arm64 !hppa !mips64el !ppc64 !ppc64el !riscv64 !s390x !sh4 !sparc64)_ZNSt6vectorIN10ClipperLib11DoublePointESaIS1_EE17_M_default_appendEj at Base 7.0.2
+ (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE17_M_default_appendEj at Base 7.0.2
+ (optional=templinst|arch=amd64 arm64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE17_M_default_appendEm at Base 7.0.2
  (optional=templinst)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_ at Base 7.0.7
  (optional=templinst|subst)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE7reserveE{size_t}@Base 6.4.0
  (optional=templinst)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EEaSERKS3_ at Base 6.2.1
- (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64el !s390x !sparc64)_ZNSt6vectorIN10ClipperLib9ExPolygonESaIS1_EE17_M_default_appendEj at Base 7.0.2
- (optional=templinst|arch=amd64 arm64 mips64el ppc64el s390x sparc64)_ZNSt6vectorIN10ClipperLib9ExPolygonESaIS1_EE17_M_default_appendEm at Base 7.0.2
+ (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt6vectorIN10ClipperLib9ExPolygonESaIS1_EE17_M_default_appendEj at Base 7.0.2
+ (optional=templinst|arch=amd64 arm64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNSt6vectorIN10ClipperLib9ExPolygonESaIS1_EE17_M_default_appendEm at Base 7.0.2
  (optional=templinst)_ZNSt6vectorIN10ClipperLib9ExPolygonESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_ at Base 7.0.7
  (optional=templinst)_ZNSt6vectorIP10msExprNodeSaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_ at Base 7.0.7
  (optional=templinst)_ZNSt6vectorIP10msExprNodeSaIS1_EE9push_backERKS1_ at Base 7.0.5
  (optional=templinst)_ZNSt6vectorIP10msExprNodeSaIS1_EEaSERKS3_ at Base 7.0.5
- (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64el !s390x !sparc64)_ZNSt6vectorIPN10ClipperLib11HorzJoinRecESaIS2_EE17_M_default_appendEj at Base 7.0.2
  (optional=templinst)_ZNSt6vectorIPN10ClipperLib5TEdgeESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_ at Base 7.0.7
  (optional=templinst)_ZNSt6vectorIPN10ClipperLib6OutRecESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_ at Base 7.0.7
- (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64el !s390x !sparc64)_ZNSt6vectorIPN10ClipperLib7JoinRecESaIS2_EE17_M_default_appendEj at Base 7.0.2
  (optional=templinst)_ZNSt6vectorIPN10ClipperLib7JoinRecESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_ at Base 7.0.7
- (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64el !s390x !sparc64)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EE17_M_default_appendEj at Base 7.0.2
- (optional=templinst|arch=amd64 arm64 mips64el ppc64el s390x sparc64)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EE17_M_default_appendEm at Base 7.0.2
+ (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EE17_M_default_appendEj at Base 7.0.2
+ (optional=templinst|arch=amd64 arm64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EE17_M_default_appendEm at Base 7.0.2
  (optional=templinst)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_ at Base 7.0.7
  (optional=templinst)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EED1Ev at Base 6.2.1
  (optional=templinst)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EED2Ev at Base 6.2.1
  (optional=templinst)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EEaSERKS5_ at Base 6.2.1
- (optional=templinst|arch=!alpha !amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEEiS4_NS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_T0_SG_T1_T2_ at Base 6.4.1
- (optional=templinst|arch=alpha amd64 arm64 kfreebsd-amd64 mips64el ppc64 ppc64el s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEElS4_NS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_T0_SG_T1_T2_ at Base 6.4.1
+ (optional=templinst|arch=!alpha !amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEEiS4_NS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_T0_SG_T1_T2_ at Base 6.4.1
+ (optional=templinst|arch=alpha amd64 arm64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEElS4_NS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_T0_SG_T1_T2_ at Base 6.4.1
  (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_SF_T0_ at Base 6.4.1
- (optional=templinst|arch=!alpha !amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEEiNS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_SF_T0_T1_ at Base 6.4.1
- (optional=templinst|arch=alpha amd64 arm64 kfreebsd-amd64 mips64el ppc64 ppc64el s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEElNS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_SF_T0_T1_ at Base 6.4.1
+ (optional=templinst|arch=!alpha !amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEEiNS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_SF_T0_T1_ at Base 6.4.1
+ (optional=templinst|arch=alpha amd64 arm64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEElNS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_SF_T0_T1_ at Base 6.4.1
  (optional=templinst|arch=sparc)_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEEPFbS4_S4_EEvT_SC_T0_ at Base 6.4.1
  (optional=templinst)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_ at Base 7.0.5
  _ZTI11KmlRenderer at Base 6.4.0


=====================================
mapdraw.c
=====================================
--- a/mapdraw.c
+++ b/mapdraw.c
@@ -1683,14 +1683,29 @@ int pointLayerDrawShape(mapObj *map, imageObj *image, layerObj *layer, shapeObj 
 {
   int l, c = shape->classindex, j, i, s;
   pointObj *point;
+  int ret = MS_FAILURE;
 
 #ifdef USE_PROJ
   if (layer->project && layer->transform == MS_TRUE)
     msProjectShape(&layer->projection, &map->projection, shape);
 #endif
 
-  for (l = 0; l < layer->class[c]->numlabels; l++)
-    if (layer->class[c]->labels[l]->angle != 0) layer->class[c]->labels[l]->angle -= map->gt.rotation_angle; /* TODO: is this right???? */
+  // Only take into account map rotation if the label and style angles are
+  // non-zero.
+  if( map->gt.rotation_angle )
+  {
+    for (l = 0; l < layer->class[c]->numlabels; l++)
+    {
+        if( layer->class[c]->labels[l]->angle != 0 )
+            layer->class[c]->labels[l]->angle -= map->gt.rotation_angle;
+    }
+
+    for (s = 0; s < layer->class[c]->numstyles; s++)
+    {
+        if( layer->class[c]->styles[s]->angle != 0 )
+            layer->class[c]->styles[s]->angle -= map->gt.rotation_angle;
+    }
+  }
 
   for (j = 0; j < shape->numlines; j++) {
     for (i = 0; i < shape->line[j].numpoints; i++) {
@@ -1707,26 +1722,44 @@ int pointLayerDrawShape(mapObj *map, imageObj *image, layerObj *layer, shapeObj 
               layer->class[c]->styles[s]->minscaledenom,
               layer->class[c]->styles[s]->maxscaledenom))
             if(UNLIKELY(MS_FAILURE == msDrawMarkerSymbol(map, image, point, layer->class[c]->styles[s], layer->scalefactor))) {
-              return MS_FAILURE;
+              goto end;
             }
         }
       }
       if(MS_DRAW_LABELS(drawmode)) {
         if (layer->labelcache) {
-          if (msAddLabelGroup(map, image, layer, c, shape, point, -1) != MS_SUCCESS) return (MS_FAILURE);
+          if (msAddLabelGroup(map, image, layer, c, shape, point, -1) != MS_SUCCESS) goto end;
         } else {
           for (l = 0; l < layer->class[c]->numlabels; l++)
             if(msGetLabelStatus(map,layer,shape,layer->class[c]->labels[l]) == MS_ON) {
               char *annotext = msShapeGetLabelAnnotation(layer,shape,layer->class[c]->labels[l]);
               if(UNLIKELY(MS_FAILURE == msDrawLabel(map, image, *point, annotext, layer->class[c]->labels[l], layer->scalefactor))) {
-                return MS_FAILURE;
+                goto end;
               }
             }
         }
       }
     }
   }
-  return MS_SUCCESS;
+  ret = MS_SUCCESS;
+
+end:
+  if( map->gt.rotation_angle )
+  {
+    for (l = 0; l < layer->class[c]->numlabels; l++)
+    {
+        if( layer->class[c]->labels[l]->angle != 0 )
+            layer->class[c]->labels[l]->angle += map->gt.rotation_angle;
+    }
+
+    for (s = 0; s < layer->class[c]->numstyles; s++)
+    {
+        if( layer->class[c]->styles[s]->angle != 0 )
+            layer->class[c]->styles[s]->angle += map->gt.rotation_angle;
+    }
+  }
+
+  return ret;
 }
 
 int lineLayerDrawShape(mapObj *map, imageObj *image, layerObj *layer, shapeObj *shape,


=====================================
mapmssql2008.c
=====================================
--- a/mapmssql2008.c
+++ b/mapmssql2008.c
@@ -193,15 +193,15 @@ typedef struct msODBCconn_t {
 } msODBCconn;
 
 typedef struct ms_MSSQL2008_layer_info_t {
-  char        *sql;           /* sql query to send to DB */
-  long        row_num;        /* what row is the NEXT to be read (for random access) */
-  char    *geom_column; /* name of the actual geometry column parsed from the LAYER's DATA field */
-  char    *geom_column_type;  /* the type of the geometry column */
-  char    *geom_table;  /* the table name or sub-select decalred in the LAYER's DATA field */
-  char        *urid_name;     /* name of user-specified unique identifier or OID */
-  char        *user_srid;     /* zero length = calculate, non-zero means using this value! */
-  char    *index_name;  /* hopefully this isn't necessary - but if the optimizer ain't cuttin' it... */
-  char    *sort_spec;  /* the sort by specification which should be applied to the generated select statement */
+  char *sql;           /* sql query to send to DB */
+  long row_num;        /* what row is the NEXT to be read (for random access) */
+  char *geom_column; /* name of the actual geometry column parsed from the LAYER's DATA field */
+  char *geom_column_type;  /* the type of the geometry column */
+  char *geom_table;  /* the table name or sub-select decalred in the LAYER's DATA field */
+  char *urid_name;     /* name of user-specified unique identifier or OID */
+  char *user_srid;     /* zero length = calculate, non-zero means using this value! */
+  char *index_name;  /* hopefully this isn't necessary - but if the optimizer ain't cuttin' it... */
+  char *sort_spec;  /* the sort by specification which should be applied to the generated select statement */
   SQLSMALLINT *itemtypes; /* storing the sql field types for further reference */
 
   msODBCconn * conn;          /* Connection to db */
@@ -908,7 +908,8 @@ int msMSSQL2008LayerGetExtent(layerObj *layer, rectObj *extent)
 int msMSSQL2008LayerGetNumFeatures(layerObj *layer)
 {
     msMSSQL2008LayerInfo *layerinfo;
-    char query_string_temp[10000];       /* Should be big enough */
+    char *query = 0;
+    char result_data[256];
     SQLLEN retLen;
     SQLRETURN rc;
 
@@ -924,21 +925,28 @@ int msMSSQL2008LayerGetNumFeatures(layerObj *layer)
     }
 
     /* set up statement */
+    query = msStringConcatenate(query, "SELECT count(*) FROM ");
+    query = msStringConcatenate(query, layerinfo->geom_table);
+
+    /* adding attribute filter */
     if (layer->filter.native_string) {
-        snprintf(query_string_temp, sizeof(query_string_temp), "SELECT count(*) from %s WHERE (%s)", layerinfo->geom_table, layer->filter.native_string);
-    }
-    else if (msLayerGetProcessingKey(layer, "NATIVE_FILTER") == NULL) {
-        snprintf(query_string_temp, sizeof(query_string_temp), "SELECT count(*) from %s", layerinfo->geom_table);
+        query = msStringConcatenate(query, " WHERE (");
+        query = msStringConcatenate(query, layer->filter.native_string);
+        query = msStringConcatenate(query, ")");
     }
-    else {
-        snprintf(query_string_temp, sizeof(query_string_temp), "SELECT count(*) from %s WHERE (%s)", layerinfo->geom_table, msLayerGetProcessingKey(layer, "NATIVE_FILTER"));
+    else if (msLayerGetProcessingKey(layer, "NATIVE_FILTER") != NULL) {
+        query = msStringConcatenate(query, " WHERE (");
+        query = msStringConcatenate(query, msLayerGetProcessingKey(layer, "NATIVE_FILTER"));
+        query = msStringConcatenate(query, ")");
     }
 
-    if (!executeSQL(layerinfo->conn, query_string_temp)) {
-
+    if (!executeSQL(layerinfo->conn, query)) {
+        msFree(query);
         return -1;
     }
 
+    msFree(query);
+
     rc = SQLFetch(layerinfo->conn->hstmt);
 
     if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
@@ -949,37 +957,37 @@ int msMSSQL2008LayerGetNumFeatures(layerObj *layer)
         return -1;
     }
 
-    rc = SQLGetData(layerinfo->conn->hstmt, 1, SQL_C_CHAR, query_string_temp, sizeof(query_string_temp), &retLen);
+    rc = SQLGetData(layerinfo->conn->hstmt, 1, SQL_C_CHAR, result_data, sizeof(result_data), &retLen);
 
     if (rc == SQL_ERROR) {
         msSetError(MS_QUERYERR, "Failed to get feature count", "msMSSQL2008LayerGetNumFeatures()");
         return -1;
     }
 
-    query_string_temp[retLen] = 0;
+    result_data[retLen] = 0;
 
-    return atoi(query_string_temp);
+    return atoi(result_data);
 }
 
 /* Prepare and execute the SQL statement for this layer */
 static int prepare_database(layerObj *layer, rectObj rect, char **query_string)
 {
   msMSSQL2008LayerInfo *layerinfo;
-  char        *columns_wanted = 0;
-  char        *data_source = 0;
-  char        *f_table_name = 0;
-  char    *geom_table = 0;
+  char *query = 0;
+  char *data_source = 0;
+  char *f_table_name = 0;
+  char *geom_table = 0;
   /*
     "Geometry::STGeomFromText('POLYGON(())',)" + terminator = 40 chars
     Plus 10 formatted doubles (15 digits of precision, a decimal point, a space/comma delimiter each = 17 chars each)
     Plus SRID + comma - if SRID is a long...we'll be safe with 10 chars
   */
   char        box3d[40 + 10 * 22 + 11];
-  char        query_string_temp[10000];       /* Should be big enough */
   int         t;
 
   char        *pos_from, *pos_ftab, *pos_space, *pos_paren;
   rectObj     extent;
+  int hasFilter = MS_FALSE;
 
   layerinfo =  getMSSQL2008LayerInfo(layer);
 
@@ -1025,143 +1033,161 @@ static int prepare_database(layerObj *layer, rectObj rect, char **query_string)
     }
   }
 
-  if(layer->numitems == 0) {
-    char buffer[1000];
+  if (rect.minx == rect.maxx || rect.miny == rect.maxy) {
+      /* create point shape for rectangles with zero area */
+      sprintf(box3d, "%s::STGeomFromText('POINT(%.15g %.15g)',%s)", /* %s.STSrid)", */
+          layerinfo->geom_column_type, rect.minx, rect.miny, layerinfo->user_srid);
+  }
+  else {
+      sprintf(box3d, "%s::STGeomFromText('POLYGON((%.15g %.15g,%.15g %.15g,%.15g %.15g,%.15g %.15g,%.15g %.15g))',%s)", /* %s.STSrid)", */
+          layerinfo->geom_column_type,
+          rect.minx, rect.miny,
+          rect.maxx, rect.miny,
+          rect.maxx, rect.maxy,
+          rect.minx, rect.maxy,
+          rect.minx, rect.miny,
+          layerinfo->user_srid
+      );
+  }
 
-    if (layerinfo->geometry_format == MSSQLGEOMETRY_NATIVE)
-      snprintf(buffer, sizeof(buffer), "[%s],convert(varchar(36), [%s])", layerinfo->geom_column, layerinfo->urid_name);
-    else
-      snprintf(buffer, sizeof(buffer), "[%s].STAsBinary(),convert(varchar(36), [%s])", layerinfo->geom_column, layerinfo->urid_name);
+  /* substitute token '!BOX!' in geom_table with the box3d - do an unlimited # of subs */
+  /* to not undo the work here, we need to make sure that data_source is malloc'd here */
 
-    columns_wanted = msStrdup(buffer);
-  } else {
-    char buffer[10000] = "";
+  if (!strstr(geom_table, "!BOX!")) {
+      data_source = (char *)msSmallMalloc(strlen(geom_table) + 1);
+      strcpy(data_source, geom_table);
+  }
+  else {
+      char* result = NULL;
 
-    for(t = 0; t < layer->numitems; t++) {
-      if (layerinfo->itemtypes && (layerinfo->itemtypes[t] == SQL_BINARY || layerinfo->itemtypes[t] == SQL_VARBINARY)) {
-#ifdef USE_ICONV
-      snprintf(buffer + strlen(buffer), sizeof(buffer) - strlen(buffer), "convert(nvarchar(max), convert(varbinary(max),[%s]),2),", layer->items[t]);
-#else
-      snprintf(buffer + strlen(buffer), sizeof(buffer) - strlen(buffer), "convert(varchar(max), convert(varbinary(max),[%s]),2),", layer->items[t]);
-#endif
-      } else {
-#ifdef USE_ICONV
-      snprintf(buffer + strlen(buffer), sizeof(buffer) - strlen(buffer), "convert(nvarchar(max), [%s]),", layer->items[t]);
-#else
-      snprintf(buffer + strlen(buffer), sizeof(buffer) - strlen(buffer), "convert(varchar(max), [%s]),", layer->items[t]);
-#endif
-      }
-    }
+      while (strstr(geom_table, "!BOX!")) {
+          /* need to do a substition */
+          char    *start, *end;
+          char    *oldresult = result;
+          start = strstr(geom_table, "!BOX!");
+          end = start + 5;
 
-    if (layerinfo->geometry_format == MSSQLGEOMETRY_NATIVE)
-      snprintf(buffer + strlen(buffer), sizeof(buffer) - strlen(buffer), "[%s],convert(varchar(36), [%s])", layerinfo->geom_column, layerinfo->urid_name);
-    else
-      snprintf(buffer + strlen(buffer), sizeof(buffer) - strlen(buffer), "[%s].STAsBinary(),convert(varchar(36), [%s])", layerinfo->geom_column, layerinfo->urid_name);
+          result = (char *)msSmallMalloc((start - geom_table) + strlen(box3d) + strlen(end) + 1);
 
-    columns_wanted = msStrdup(buffer);
-  }
+          strlcpy(result, geom_table, start - geom_table + 1);
+          strcpy(result + (start - geom_table), box3d);
+          strcat(result, end);
 
-  if (rect.minx == rect.maxx || rect.miny == rect.maxy) {
-    /* create point shape for rectangles with zero area */
-    sprintf(box3d, "%s::STGeomFromText('POINT(%.15g %.15g)',%s)", /* %s.STSrid)", */
-            layerinfo->geom_column_type, rect.minx, rect.miny, layerinfo->user_srid);
-  } else {
-    sprintf(box3d, "%s::STGeomFromText('POLYGON((%.15g %.15g,%.15g %.15g,%.15g %.15g,%.15g %.15g,%.15g %.15g))',%s)", /* %s.STSrid)", */
-            layerinfo->geom_column_type,
-            rect.minx, rect.miny,
-            rect.maxx, rect.miny,
-            rect.maxx, rect.maxy,
-            rect.minx, rect.maxy,
-            rect.minx, rect.miny,
-            layerinfo->user_srid
-           );
+          geom_table = result;
+          msFree(oldresult);
+      }
+
+      /* if we're here, this will be a malloc'd string, so no need to copy it */
+      data_source = (char *)geom_table;
   }
 
-  /* substitute token '!BOX!' in geom_table with the box3d - do an unlimited # of subs */
-  /* to not undo the work here, we need to make sure that data_source is malloc'd here */
+  /* start creating the query */
 
-  if(!strstr(geom_table, "!BOX!")) {
-    data_source = (char *) msSmallMalloc(strlen(geom_table) + 1);
-    strcpy(data_source, geom_table);
-  } else {
-    char* result = NULL;
+  query = msStringConcatenate(query, "SELECT ");
 
-    while (strstr(geom_table,"!BOX!")) {
-      /* need to do a substition */
-      char    *start, *end;
-      char    *oldresult = result;
-      start = strstr(geom_table,"!BOX!");
-      end = start+5;
+  /* adding items to the select list */
+  for (t = 0; t < layer->numitems; t++) {
+#ifdef USE_ICONV
+      /* no conversion applied at the database */
+      query = msStringConcatenate(query, "[");
+      query = msStringConcatenate(query, layer->items[t]);
+      query = msStringConcatenate(query, "],");
+#else
+      query = msStringConcatenate(query, "convert(varchar(max), [");
+      query = msStringConcatenate(query, layer->items[t]);
+      query = msStringConcatenate(query, "]),");
+#endif
+  }
 
-      result = (char *)msSmallMalloc((start - geom_table) + strlen(box3d) + strlen(end) +1);
+  /* adding geometry column */
+  query = msStringConcatenate(query, "[");
+  query = msStringConcatenate(query, layerinfo->geom_column);
+  if (layerinfo->geometry_format == MSSQLGEOMETRY_NATIVE)
+      query = msStringConcatenate(query, "],");
+  else
+      query = msStringConcatenate(query, "].STAsBinary(),");
 
-      strlcpy(result, geom_table, start - geom_table + 1);
-      strcpy(result + (start - geom_table), box3d);
-      strcat(result, end);
+  /* adding id column */
+  query = msStringConcatenate(query, "convert(varchar(36), [");
+  query = msStringConcatenate(query, layerinfo->urid_name);
+  query = msStringConcatenate(query, "]) FROM ");
 
-      geom_table= result;
-      msFree(oldresult);
-    }
+  /* adding the source */
+  query = msStringConcatenate(query, data_source);
+  msFree(data_source);
+  msFree(f_table_name);
 
-    /* if we're here, this will be a malloc'd string, so no need to copy it */
-    data_source = (char *)geom_table;
+  /* use the index hint if provided */
+  if (layerinfo->index_name) {
+      query = msStringConcatenate(query, " WITH (INDEX(");
+      query = msStringConcatenate(query, layerinfo->index_name);
+      query = msStringConcatenate(query, "))");
   }
 
-  /* use the index hint if provided */
-  if ( layerinfo->index_name ) {
-    /* given the template - figure out how much to malloc and malloc it */
-    char *with_template = "%s WITH (INDEX(%s))";
-    int need_len = strlen(data_source) + strlen(with_template) + strlen(layerinfo->index_name);
-    char *tmp = (char*) msSmallMalloc( need_len + 1 );
-    sprintf( tmp, with_template, data_source, layerinfo->index_name );
-    msFree(data_source);
-    data_source = tmp;
-  }
-
-  /* test whether we should omit spatial filtering */
-  /* TODO: once this driver supports expression translation then filter->native_string will need to be considered here */
-  msMSSQL2008LayerGetExtent(layer, &extent);
-  if (rect.minx <= extent.minx && rect.miny <= extent.miny && rect.maxx >= extent.maxx && rect.maxy >= extent.maxy) {
-      /* no spatial filter used */
-      if ( layer->filter.native_string ) { 
-        snprintf(query_string_temp, sizeof(query_string_temp), "SELECT %s from %s WHERE (%s)", columns_wanted, data_source, layer->filter.native_string );
-      }
-      else if(msLayerGetProcessingKey(layer, "NATIVE_FILTER") == NULL) {
-        snprintf(query_string_temp, sizeof(query_string_temp), "SELECT %s from %s", columns_wanted, data_source );
-      } else {
-        snprintf(query_string_temp, sizeof(query_string_temp), "SELECT %s from %s WHERE (%s)", columns_wanted, data_source, msLayerGetProcessingKey(layer, "NATIVE_FILTER"));
-      }
-  } else {
-      if ( layer->filter.native_string ) { 
-        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 );
-      }
-      else if(msLayerGetProcessingKey(layer, "NATIVE_FILTER") == NULL) {
-        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 );
-      } else {
-        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 );
-      }
+  /* adding attribute filter */
+  if (layer->filter.native_string) {
+      query = msStringConcatenate(query, " WHERE (");
+      query = msStringConcatenate(query, layer->filter.native_string);
+      query = msStringConcatenate(query, ")");
+      hasFilter = MS_TRUE;
   }
+  else if (msLayerGetProcessingKey(layer, "NATIVE_FILTER") != NULL) {
+      query = msStringConcatenate(query, " WHERE (");
+      query = msStringConcatenate(query, msLayerGetProcessingKey(layer, "NATIVE_FILTER"));
+      query = msStringConcatenate(query, ")");
+      hasFilter = MS_TRUE;
+  }
+
+  /* adding spatial filter */
+  msMSSQL2008LayerGetExtent(layer, &extent);
+  if (rect.minx > extent.minx || rect.miny > extent.miny ||
+      rect.maxx < extent.maxx || rect.maxy < extent.maxy) {
+      if (hasFilter == MS_FALSE)
+          query = msStringConcatenate(query, " WHERE ");
+      else
+          query = msStringConcatenate(query, " AND ");
 
-  if (layerinfo->sort_spec) {
-      strcat(query_string_temp, layerinfo->sort_spec);
+      query = msStringConcatenate(query, layerinfo->geom_column);
+      query = msStringConcatenate(query, ".STIntersects(");
+      query = msStringConcatenate(query, box3d);
+      query = msStringConcatenate(query, ") = 1 ");
   }
 
-  msFree(data_source);
-  msFree(f_table_name);
-  msFree(columns_wanted);
+  if (layerinfo->sort_spec)
+      query = msStringConcatenate(query, layerinfo->sort_spec);
 
-  if(layer->debug) {
-    msDebug("query_string_temp:%s\n", query_string_temp);
+  if (layer->debug) {
+      msDebug("query:%s\n", query);
   }
 
-  if (executeSQL(layerinfo->conn, query_string_temp)) {
-    *query_string = msStrdup(query_string_temp);
+  if (executeSQL(layerinfo->conn, query)) {
+      char pass_field_def = 0;
+      int t;
+      const char *value;
+      *query_string = query;
+      /* collect result information */
+      if ((value = msOWSLookupMetadata(&(layer->metadata), "G", "types")) != NULL
+          && strcasecmp(value, "auto") == 0)
+          pass_field_def = 1;
 
-    return MS_SUCCESS;
-  } else {
-    msSetError(MS_QUERYERR, "Error executing MSSQL2008 SQL statement: %s\n-%s\n", "msMSSQL2008LayerGetShape()", query_string_temp, layerinfo->conn->errorMessage);
+      msFree(layerinfo->itemtypes);
+      layerinfo->itemtypes = msSmallMalloc(sizeof(SQLSMALLINT) * (layer->numitems + 1));
+      for (t = 0; t < layer->numitems; t++) {
+          char colBuff[256];
+          SQLSMALLINT itemType;
 
-    return MS_FAILURE;
+          columnName(layerinfo->conn, t + 1, colBuff, sizeof(colBuff), layer, pass_field_def, &itemType);
+          layerinfo->itemtypes[t] = itemType;
+      }
+
+      return MS_SUCCESS;
+  }
+  else {
+      msSetError(MS_QUERYERR, "Error executing MSSQL2008 SQL statement: %s\n-%s\n", "msMSSQL2008LayerGetShape()", query, layerinfo->conn->errorMessage);
+
+      msFree(query);
+
+      return MS_FAILURE;
   }
 }
 


=====================================
mapmvt.c
=====================================
--- a/mapmvt.c
+++ b/mapmvt.c
@@ -315,10 +315,11 @@ int msMVTWriteTile( mapObj *map, int sendheaders ) {
   int iLayer,retcode=MS_SUCCESS;
   unsigned len;
   void *buf;
+  const char *mvt_extent = msGetOutputFormatOption(map->outputformat, "EXTENT", "4096");
   const char *mvt_buffer = msGetOutputFormatOption(map->outputformat, "EDGE_BUFFER", "10");
   int buffer = MS_ABS(atoi(mvt_buffer));
   VectorTile__Tile mvt_tile = VECTOR_TILE__TILE__INIT;
-  mvt_tile.layers = msSmallCalloc(map->numlayers,sizeof(VectorTile__Tile__Layer*));
+  mvt_tile.layers = msSmallCalloc(map->numlayers, sizeof(VectorTile__Tile__Layer*));
 
   /* expand the map->extent so it goes from pixel center (MapServer) to pixel edge (OWS) */
   map->extent.minx -= map->cellsize * 0.5;
@@ -378,8 +379,8 @@ int msMVTWriteTile( mapObj *map, int sendheaders ) {
     vector_tile__tile__layer__init(mvt_layer);
     mvt_layer->version = 2;
     mvt_layer->name = layer->name;
-    mvt_buffer = msGetOutputFormatOption(map->outputformat, "EXTENT", "4096");
-    mvt_layer->extent = MS_ABS(atoi(mvt_buffer));
+
+    mvt_layer->extent = MS_ABS(atoi(mvt_extent));
     mvt_layer->has_extent = 1;
 
     /* -------------------------------------------------------------------- */


=====================================
mappostgis.c
=====================================
--- a/mappostgis.c
+++ b/mappostgis.c
@@ -2003,7 +2003,7 @@ char *msPostGISBuildSQLWhere(layerObj *layer, rectObj *rect, long *uid, rectObj 
     char *strBox = 0;
     char *strSRID = 0;
     size_t strBoxLength = 0;
-    static const char *strRectTemplate = "%s && %s";
+    static const char *strRectTemplate = "\"%s\" && %s";
 
     /* We see to set the SRID on the box, but to what SRID? */
     strSRID = msPostGISBuildSQLSRID(layer);


=====================================
mapwcs20.c
=====================================
--- a/mapwcs20.c
+++ b/mapwcs20.c
@@ -1878,7 +1878,9 @@ static void msWCSPrepareNamespaces20(xmlDocPtr pDoc, xmlNodePtr psRootNode, mapO
   xsi_schemaLocation = msStringConcatenate(xsi_schemaLocation, " ");
 
   if (addInspire) {
-    xsi_schemaLocation = msStringConcatenate(xsi_schemaLocation, MS_INSPIRE_DLS_NAMESPACE_URI " " MS_INSPIRE_DLS_SCHEMA_LOCATION);
+    xsi_schemaLocation = msStringConcatenate(xsi_schemaLocation, MS_INSPIRE_DLS_NAMESPACE_URI " ");
+    xsi_schemaLocation = msStringConcatenate(xsi_schemaLocation, msOWSGetInspireSchemasLocation(map));
+    xsi_schemaLocation = msStringConcatenate(xsi_schemaLocation, MS_INSPIRE_DLS_SCHEMA_LOCATION);
   }
 
   xmlNewNsProp(psRootNode, psXsiNs, BAD_CAST "schemaLocation", BAD_CAST xsi_schemaLocation);



View it on GitLab: https://salsa.debian.org/debian-gis-team/mapserver/compare/111a7441f9289a22f0c09c336829158e25cdf319...5414ca8fd31dcbec358c8a5c8f1c363b9b91ace6

-- 
View it on GitLab: https://salsa.debian.org/debian-gis-team/mapserver/compare/111a7441f9289a22f0c09c336829158e25cdf319...5414ca8fd31dcbec358c8a5c8f1c363b9b91ace6
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20180613/71ca8ce3/attachment-0001.html>


More information about the Pkg-grass-devel mailing list