[DebianGIS-dev] Bug#434897: v.db.update with 6.2.2 patch

Markus Neteler neteler at itc.it
Wed Aug 8 20:40:42 UTC 2007


Hi Didrik,

oh - the --q in my patch should have been -q.

Attached the revised patch. Due to failing of v.info
the rest also fails (say, the new trick fails to
work around the indicated problem).

Let me know,
Markus

-- 
Markus Neteler  <neteler itc it>  http://mpa.itc.it/markus/
FBK-irst -  Centro per la Ricerca Scientifica e Tecnologica
MPBA - Predictive Models for Biol. & Environ. Data Analysis
Via Sommarive, 18        -       38050 Povo (Trento), Italy
New GRASS book: http://www.grassbook.org/

------------------
ITC -> dall'1 marzo 2007 Fondazione Bruno Kessler
ITC -> since 1 March 2007 Fondazione Bruno Kessler
------------------
-------------- next part --------------
Index: scripts/v.db.update/v.db.update
===================================================================
RCS file: /grassrepository/grass6/scripts/v.db.update/v.db.update,v
retrieving revision 1.6.4.5
diff -u -r1.6.4.5 v.db.update
--- scripts/v.db.update/v.db.update	15 May 2007 10:57:18 -0000	1.6.4.5
+++ scripts/v.db.update/v.db.update	8 Aug 2007 20:39:11 -0000
@@ -78,8 +78,12 @@
 LC_NUMERIC=C
 export LC_NUMERIC
 
-# does map exist?
-eval `g.findfile element=vector file=$GIS_OPT_MAP`
+### setup enviro vars ###
+eval `g.gisenv`
+: ${GISBASE?} ${GISDBASE?} ${LOCATION_NAME?} ${MAPSET?}
+
+# does map exist in CURRENT mapset?
+eval `g.findfile element=vector file=$GIS_OPT_MAP mapset=$MAPSET`
 if [ ! "$file" ] ; then
    echo "Vector map '$GIS_OPT_MAP' not found in mapset search path"
    exit 1
@@ -94,11 +98,20 @@
 database=`v.db.connect $GIS_OPT_MAP -g | grep -w $GIS_OPT_LAYER | awk '{print $4}'`
 driver=`v.db.connect $GIS_OPT_MAP -g | grep -w $GIS_OPT_LAYER | awk '{print $5}'`
 
+# checking column types
+coltype=`v.info -c map=$GIS_OPT_MAP -q | grep -w $GIS_OPT_COLUMN | cut -d'|' -f1`
+# we insert a value
+if [ "$coltype" = "INTEGER" -o "$coltype" = "DOUBLE PRECISION" ] ; then
+    value=$GIS_OPT_VALUE
+else
+    value=\'$GIS_OPT_VALUE\'
+fi
+
 if [ -n "$GIS_OPT_WHERE" ]
   then
-	echo "UPDATE $table SET $GIS_OPT_COLUMN='$GIS_OPT_VALUE' WHERE $GIS_OPT_WHERE" | db.execute database=$database driver=$driver
-  else
-	echo "UPDATE $table SET $GIS_OPT_COLUMN='$GIS_OPT_VALUE'" | db.execute database=$database driver=$driver
+       echo "UPDATE $table SET $GIS_OPT_COLUMN=$value WHERE $GIS_OPT_WHERE" | db.execute database=$database driver=$driver
+else
+       echo "UPDATE $table SET $GIS_OPT_COLUMN=$value" | db.execute database=$database driver=$driver
 fi
 
 exit 0


More information about the Pkg-grass-devel mailing list