瀏覽代碼

pg driver: implement db__driver_drop_table

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@65333 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 10 年之前
父節點
當前提交
704095e7dc
共有 2 個文件被更改,包括 50 次插入0 次删除
  1. 6 0
      db/drivers/postgres/dbdriver.h
  2. 44 0
      db/drivers/postgres/table.c

+ 6 - 0
db/drivers/postgres/dbdriver.h

@@ -8,6 +8,8 @@ int db__driver_create_table();
 int db__driver_close_cursor();
 int db__driver_close_cursor();
 int db__driver_open_database();
 int db__driver_open_database();
 int db__driver_close_database();
 int db__driver_close_database();
+int db__driver_create_database();
+int db__driver_delete_database();
 int db__driver_describe_table();
 int db__driver_describe_table();
 int db__driver_init();
 int db__driver_init();
 int db__driver_finish();
 int db__driver_finish();
@@ -21,12 +23,15 @@ int db__driver_list_databases();
 int db__driver_list_tables();
 int db__driver_list_tables();
 int db__driver_grant_on_table();
 int db__driver_grant_on_table();
 int db__driver_open_select_cursor();
 int db__driver_open_select_cursor();
+int db__driver_drop_table();
 
 
 #define	init_dbdriver() do{\
 #define	init_dbdriver() do{\
 db_driver_create_table = db__driver_create_table;\
 db_driver_create_table = db__driver_create_table;\
 db_driver_close_cursor = db__driver_close_cursor;\
 db_driver_close_cursor = db__driver_close_cursor;\
 db_driver_open_database = db__driver_open_database;\
 db_driver_open_database = db__driver_open_database;\
 db_driver_close_database = db__driver_close_database;\
 db_driver_close_database = db__driver_close_database;\
+db_driver_create_database = db__driver_create_database;\
+db_driver_delete_database = db__driver_delete_database;\
 db_driver_describe_table = db__driver_describe_table;\
 db_driver_describe_table = db__driver_describe_table;\
 db_driver_init = db__driver_init;\
 db_driver_init = db__driver_init;\
 db_driver_finish = db__driver_finish;\
 db_driver_finish = db__driver_finish;\
@@ -40,6 +45,7 @@ db_driver_list_databases = db__driver_list_databases;\
 db_driver_list_tables = db__driver_list_tables;\
 db_driver_list_tables = db__driver_list_tables;\
 db_driver_grant_on_table = db__driver_grant_on_table;\
 db_driver_grant_on_table = db__driver_grant_on_table;\
 db_driver_open_select_cursor = db__driver_open_select_cursor;\
 db_driver_open_select_cursor = db__driver_open_select_cursor;\
+db_driver_drop_table = db__driver_drop_table;\
 }while(0)
 }while(0)
 
 
 #endif
 #endif

+ 44 - 0
db/drivers/postgres/table.c

@@ -0,0 +1,44 @@
+/*!
+ * \file table.c
+ *
+ * \brief Low level drop table function.
+ *
+ * This program is free software under the GNU General Public License
+ * (>=v2). Read the file COPYING that comes with GRASS for details.
+ *
+ * \author Martin Landa <landa.martin gmail.com>
+ *
+ * \date 2015
+ */
+
+#include <grass/gis.h>
+#include <grass/dbmi.h>
+#include <grass/glocale.h>
+#include "globals.h"
+#include "proto.h"
+
+/*!
+ * \brief Low level driver drop table from database.
+ *
+ * \param name table name to drop
+ * \return DB_FAILED on error; DB_OK on success
+ */
+int db__driver_drop_table(dbString *name)
+{
+    PGresult *res;
+    char cmd[DB_SQL_MAX];
+
+    sprintf(cmd, "DROP TABLE %s", db_get_string(name));
+        
+    res = PQexec(pg_conn, cmd);
+
+    if (!res || PQresultStatus(res) != PGRES_COMMAND_OK) {
+	db_d_append_error("%s\n%s",
+			  _("Unable to execute():"),
+			  PQerrorMessage(pg_conn));
+	db_d_report_error();
+	return DB_FAILED;
+    }
+
+    return DB_OK;
+}