Przeglądaj źródła

v.reclass: accommodate SQLite

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@64280 15284696-431f-4ddb-bdfa-cd5b030d7da7
Markus Metz 10 lat temu
rodzic
commit
4933afb75a
1 zmienionych plików z 17 dodań i 6 usunięć
  1. 17 6
      vector/v.reclass/main.c

+ 17 - 6
vector/v.reclass/main.c

@@ -171,11 +171,21 @@ int main(int argc, char *argv[])
 	    Vect_map_add_dblink(&Out, field, NULL, NewFi->table, GV_KEY_COLUMN,
 				NewFi->database, NewFi->driver);
 
-	    Driver2 = db_start_driver_open_database(NewFi->driver,
-						    Vect_subst_var(NewFi->
-								   database,
-								   &Out));
-            db_set_error_handler_driver(Driver2);
+
+	    /* Open output driver and database */
+	    if (strcmp(Fi->driver, NewFi->driver) == 0
+		&& strcmp(Fi->database,
+		          Vect_subst_var(NewFi->database, &Out)) == 0) {
+		G_debug(3, "Use the same driver");
+		Driver2 = Driver;
+	    }
+	    else {
+		Driver2 = db_start_driver_open_database(NewFi->driver,
+							Vect_subst_var(NewFi->
+								       database,
+								       &Out));
+		db_set_error_handler_driver(Driver2);
+	    }
 
 	    /* get string column length */
 	    db_set_string(&stmt, Fi->table);
@@ -317,7 +327,8 @@ int main(int argc, char *argv[])
 		G_fatal_error(_("Unable to grant privileges on table <%s>"),
 			      NewFi->table);
 	    }
-	    db_close_database_shutdown_driver(Driver2);
+	    if (Driver2 != Driver)
+		db_close_database_shutdown_driver(Driver2);
 
 	    qsort((void *)cvarr.value, nrows, sizeof(dbCatVal), cmpcat);
 	}