Przeglądaj źródła

v.in.ogr: fix producing external formats

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@58244 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 11 lat temu
rodzic
commit
4e6cb38e2d
1 zmienionych plików z 13 dodań i 3 usunięć
  1. 13 3
      vector/v.in.ogr/main.c

+ 13 - 3
vector/v.in.ogr/main.c

@@ -77,7 +77,8 @@ int main(int argc, char *argv[])
     /* Vector */
     struct Map_info Map, Tmp, *Out;
     int cat;
-
+    int delete_table = FALSE; /* for external output format only */
+    
     /* Attributes */
     struct field_info *Fi = NULL;
     dbDriver *driver = NULL;
@@ -1094,7 +1095,6 @@ int main(int argc, char *argv[])
 
 	if (!flag.notab->answer) {
 	    db_commit_transaction(driver);
-	    db_close_database_shutdown_driver(driver);
 	}
 
 	if (nogeom > 0)
@@ -1414,8 +1414,18 @@ int main(int argc, char *argv[])
 	}
     }
 
+    delete_table = Vect_maptype(&Map) != GV_FORMAT_NATIVE;
     Vect_close(&Map);
-
+    if (delete_table) {
+        sprintf(buf, "drop table %s", Fi->table);
+        db_set_string(&sql, buf);
+        if (db_execute_immediate(driver, &sql) != DB_OK) {
+            G_fatal_error(_("Unable to drop table: '%s'"),
+                          db_get_string(&sql));
+        }
+    }
+    db_close_database_shutdown_driver(driver);
+    
     /* -------------------------------------------------------------------- */
     /*      Extend current window based on dataset.                         */
     /* -------------------------------------------------------------------- */