Преглед изворни кода

db.*: add test if table exists where appropriate

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@57274 15284696-431f-4ddb-bdfa-cd5b030d7da7
Markus Metz пре 12 година
родитељ
комит
b7b772ceca
3 измењених фајлова са 23 додато и 1 уклоњено
  1. 6 0
      db/db.columns/main.c
  2. 8 0
      db/db.copy/main.c
  3. 9 1
      db/db.select/main.c

+ 6 - 0
db/db.columns/main.c

@@ -39,6 +39,12 @@ int main(int argc, char **argv)
 
     parse_command_line(argc, argv);
 
+    if (!db_table_exists(parms.driver, parms.database, parms.table)) {
+	G_warning(_("Table <%s> not found in database <%s> using driver <%s>"),
+		   parms.table, parms.database, parms.driver);
+	exit(EXIT_FAILURE);
+    }
+
     driver = db_start_driver(parms.driver);
     if (driver == NULL)
 	G_fatal_error(_("Unable to start driver <%s>"), parms.driver);

+ 8 - 0
db/db.copy/main.c

@@ -95,6 +95,14 @@ int main(int argc, char **argv)
 	if (select->answer)
 	    G_fatal_error(_("Cannot combine 'from_table' and 'select' options"));
 
+	if (!db_table_exists(from_driver->answer, from_database->answer,
+	                     from_table->answer)) {
+	    G_warning(_("Table <%s> not found in database <%s> using driver <%s>"),
+		       from_table->answer, from_database->answer,
+		       from_driver->answer);
+	    exit(EXIT_FAILURE);
+	}
+
 	if (where->answer) {
 	    ret =
 		db_copy_table_where(from_driver->answer,

+ 9 - 1
db/db.select/main.c

@@ -48,6 +48,14 @@ int main(int argc, char **argv)
 
     parse_command_line(argc, argv);
 
+    if (parms.table) {
+	if (!db_table_exists(parms.driver, parms.database, parms.table)) {
+	    G_warning(_("Table <%s> not found in database <%s> using driver <%s>"),
+		       parms.table, parms.database, parms.driver);
+	    exit(EXIT_FAILURE);
+	}
+    }
+
     /* read from file or stdin ? */
     if (parms.input && strcmp(parms.input, "-") != 0) {
 	fd = fopen(parms.input, "r");
@@ -92,7 +100,7 @@ int main(int argc, char **argv)
         }
     }
 
-    if(parms.test_only)
+    if (parms.test_only)
 	G_verbose_message(_("Test %s."), stat ? _("failed") : _("succeeded"));
 
     db_close_database(driver);