]> granicus.if.org Git - postgis/commitdiff
escape delimiter of ST_Band(). Ticket #2812
authorBborie Park <bkpark at ucdavis.edu>
Sun, 6 Jul 2014 18:33:41 +0000 (18:33 +0000)
committerBborie Park <bkpark at ucdavis.edu>
Sun, 6 Jul 2014 18:33:41 +0000 (18:33 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@12741 b70326c6-7e19-0410-871a-916f4a2858ee

raster/rt_pg/rtpostgis.sql.in
raster/test/regress/rt_band.sql
raster/test/regress/rt_band_expected

index c47947258c00ff2a473c47aa97aed07400aadfbc..725d0f7c57ff6ac353ecfe83ac12bdc850a1fdc2 100644 (file)
@@ -411,7 +411,7 @@ CREATE OR REPLACE FUNCTION st_band(rast raster, nband int)
 
 CREATE OR REPLACE FUNCTION st_band(rast raster, nbands text, delimiter char DEFAULT ',')
        RETURNS RASTER
-       AS $$ SELECT st_band($1, regexp_split_to_array(regexp_replace($2, '[[:space:]]', '', 'g'), $3)::int[]) $$
+       AS $$ SELECT st_band($1, regexp_split_to_array(regexp_replace($2, '[[:space:]]', '', 'g'), '\' || array_to_string(regexp_split_to_array($3, ''), '\'))::int[]) $$
        LANGUAGE 'sql' IMMUTABLE STRICT;
 
 -----------------------------------------------------------------------
index 748a907ef8b67c86ced501b48f8b007b43c6b5c8..fbe12350241ab30929c4b6b2539ef8a10b3528ef 100644 (file)
@@ -316,3 +316,35 @@ SELECT ST_NumBands(
                )
        , ARRAY[999])
 );
+
+-- Ticket #2812
+SELECT ST_Value(
+       ST_Band(
+               ST_AddBand(
+                       ST_AddBand(
+                               ST_AddBand(
+                                       ST_MakeEmptyRaster(200, 200, 10, 10, 2, 2, 0, 0,0)
+                                       , 1, '64BF', 1234.5678, NULL
+                               )
+                               , '64BF', 987.654321, NULL
+                       )
+                       , '64BF', 9876.54321, NULL
+               ),
+               '1|1', '|'
+       ),
+2, 3, 3);
+SELECT ST_Value(
+       ST_Band(
+               ST_AddBand(
+                       ST_AddBand(
+                               ST_AddBand(
+                                       ST_MakeEmptyRaster(200, 200, 10, 10, 2, 2, 0, 0,0)
+                                       , 1, '64BF', 1234.5678, NULL
+                               )
+                               , '64BF', 987.654321, NULL
+                       )
+                       , '64BF', 9876.54321, NULL
+               ),
+               '1.*.2', '.*.'
+       ),
+2, 3, 3);
index b56a9ca154d8798a013ef999e2bfbe9b668e867a..aedb7c7f845d4b5ee5f5d878946949956db1f5c2 100644 (file)
@@ -25,3 +25,5 @@ NOTICE:  Invalid band index (must use 1-based). Returning original raster
 3
 NOTICE:  Invalid band index (must use 1-based). Returning original raster
 3
+1234.5678
+987.654321