#include #include "globals.h" #include "proto.h" int db__driver_create_index(dbIndex * index) { int i, ncols; PGresult *res; dbString sql; G_debug(3, "db__create_index()"); db_init_string(&sql); init_error(); ncols = db_get_index_number_of_columns(index); db_set_string(&sql, "create"); if (db_test_index_type_unique(index)) db_append_string(&sql, " unique"); db_append_string(&sql, " index "); db_append_string(&sql, db_get_index_name(index)); db_append_string(&sql, " on "); db_append_string(&sql, db_get_index_table_name(index)); db_append_string(&sql, " ( "); for (i = 0; i < ncols; i++) { if (i > 0) db_append_string(&sql, ", "); db_append_string(&sql, db_get_index_column_name(index, i)); } db_append_string(&sql, " )"); G_debug(3, " SQL: %s", db_get_string(&sql)); res = PQexec(pg_conn, db_get_string(&sql)); if (!res || PQresultStatus(res) != PGRES_COMMAND_OK) { append_error("Cannot create index:\n"); append_error(db_get_string(&sql)); append_error("\n"); append_error(PQerrorMessage(pg_conn)); report_error(); PQclear(res); db_free_string(&sql); return DB_FAILED; } PQclear(res); db_free_string(&sql); return DB_OK; }