]> granicus.if.org Git - postgis/commitdiff
Make the sql in rtpg_getSR slightly more flexible when handling
authorBborie Park <bkpark at ucdavis.edu>
Fri, 15 Jun 2012 15:16:25 +0000 (15:16 +0000)
committerBborie Park <bkpark at ucdavis.edu>
Fri, 15 Jun 2012 15:16:25 +0000 (15:16 +0000)
auth_name and auth_srid.

git-svn-id: http://svn.osgeo.org/postgis/trunk@9910 b70326c6-7e19-0410-871a-916f4a2858ee

raster/rt_pg/rt_pg.c

index 6bec9722fb1ce77839c797aabdd1b277a7b4a3bc..15b8fa736cb539a61de368cff829da41a9641b4c 100644 (file)
@@ -506,7 +506,23 @@ rtpg_getSR(int srid)
        char *tmp = NULL;
        char *srs = NULL;
 
-       len = sizeof(char) * (strlen("SELECT CASE WHEN upper(auth_name) = 'EPSG' AND length(auth_srid::text) > 0 THEN upper(auth_name) || ':' || auth_srid ELSE '' END, proj4text, srtext FROM spatial_ref_sys WHERE srid =  LIMIT 1") + MAX_INT_CHARLEN + 1);
+/*
+SELECT
+       CASE
+               WHEN (upper(auth_name) = 'EPSG' OR upper(auth_name) = 'EPSGA') AND length(COALESCE(auth_srid::text, '')) > 0
+                       THEN upper(auth_name) || ':' || auth_srid
+               WHEN length(COALESCE(auth_name, '') || COALESCE(auth_srid::text, '')) > 0
+                       THEN COALESCE(auth_name, '') || COALESCE(auth_srid::text, '')
+               ELSE ''
+       END,
+       proj4text,
+       srtext
+FROM spatial_ref_sys
+WHERE srid = X
+LIMIT 1
+*/
+
+       len = sizeof(char) * (strlen("SELECT CASE WHEN (upper(auth_name) = 'EPSG' OR upper(auth_name) = 'EPSGA') AND length(COALESCE(auth_srid::text, '')) > 0 THEN upper(auth_name) || ':' || auth_srid WHEN length(COALESCE(auth_name, '') || COALESCE(auth_srid::text, '')) > 0 THEN COALESCE(auth_name, '') || COALESCE(auth_srid::text, '') ELSE '' END, proj4text, srtext FROM spatial_ref_sys WHERE srid =  LIMIT 1") + MAX_INT_CHARLEN + 1);
        sql = (char *) palloc(len);
        if (NULL == sql) {
                elog(ERROR, "rtpg_getSR: Unable to allocate memory for sql\n");
@@ -521,7 +537,7 @@ rtpg_getSR(int srid)
        }
 
        /* execute query */
-       snprintf(sql, len, "SELECT CASE WHEN upper(auth_name) = 'EPSG' AND length(auth_srid::text) > 0 THEN upper(auth_name) || ':' || auth_srid ELSE '' END, proj4text, srtext FROM spatial_ref_sys WHERE srid = %d LIMIT 1", srid);
+       snprintf(sql, len, "SELECT CASE WHEN (upper(auth_name) = 'EPSG' OR upper(auth_name) = 'EPSGA') AND length(COALESCE(auth_srid::text, '')) > 0 THEN upper(auth_name) || ':' || auth_srid WHEN length(COALESCE(auth_name, '') || COALESCE(auth_srid::text, '')) > 0 THEN COALESCE(auth_name, '') || COALESCE(auth_srid::text, '') ELSE '' END, proj4text, srtext FROM spatial_ref_sys WHERE srid = %d LIMIT 1", srid);
        POSTGIS_RT_DEBUGF(4, "SRS query: %s", sql);
        spi_result = SPI_execute(sql, TRUE, 0);
        SPI_pfree(sql);