aboutsummaryrefslogtreecommitdiff
path: root/src/database/database-postgresql.cpp
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2020-11-04 16:19:54 +0100
committerElias Fleckenstein <eliasfleckenstein@web.de>2020-11-04 16:19:54 +0100
commitad148587dcf5244c2d2011dba339786c765c54c4 (patch)
treebdd914121cd326da2ed26679838878e3edffc841 /src/database/database-postgresql.cpp
parent1145b05ea0bda87dc0827821385810eced08f774 (diff)
downloaddragonfireclient-ad148587dcf5244c2d2011dba339786c765c54c4.tar.xz
Make Lint Happy
Diffstat (limited to 'src/database/database-postgresql.cpp')
-rw-r--r--src/database/database-postgresql.cpp433
1 files changed, 205 insertions, 228 deletions
diff --git a/src/database/database-postgresql.cpp b/src/database/database-postgresql.cpp
index e1bb39928..3d5e1947c 100644
--- a/src/database/database-postgresql.cpp
+++ b/src/database/database-postgresql.cpp
@@ -23,12 +23,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "database-postgresql.h"
#ifdef _WIN32
- // Without this some of the network functions are not found on mingw
- #ifndef _WIN32_WINNT
- #define _WIN32_WINNT 0x0501
- #endif
- #include <windows.h>
- #include <winsock2.h>
+// Without this some of the network functions are not found on mingw
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x0501
+#endif
+#include <windows.h>
+#include <winsock2.h>
#else
#include <netinet/in.h>
#endif
@@ -40,19 +40,21 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "server/player_sao.h"
Database_PostgreSQL::Database_PostgreSQL(const std::string &connect_string) :
- m_connect_string(connect_string)
+ m_connect_string(connect_string)
{
if (m_connect_string.empty()) {
throw SettingNotFoundException(
- "Set pgsql_connection string in world.mt to "
- "use the postgresql backend\n"
- "Notes:\n"
- "pgsql_connection has the following form: \n"
- "\tpgsql_connection = host=127.0.0.1 port=5432 user=mt_user "
- "password=mt_password dbname=minetest_world\n"
- "mt_user should have CREATE TABLE, INSERT, SELECT, UPDATE and "
- "DELETE rights on the database.\n"
- "Don't create mt_user as a SUPERUSER!");
+ "Set pgsql_connection string in world.mt to "
+ "use the postgresql backend\n"
+ "Notes:\n"
+ "pgsql_connection has the following form: \n"
+ "\tpgsql_connection = host=127.0.0.1 port=5432 "
+ "user=mt_user "
+ "password=mt_password dbname=minetest_world\n"
+ "mt_user should have CREATE TABLE, INSERT, SELECT, "
+ "UPDATE and "
+ "DELETE rights on the database.\n"
+ "Don't create mt_user as a SUPERUSER!");
}
}
@@ -66,25 +68,24 @@ void Database_PostgreSQL::connectToDatabase()
m_conn = PQconnectdb(m_connect_string.c_str());
if (PQstatus(m_conn) != CONNECTION_OK) {
- throw DatabaseException(std::string(
- "PostgreSQL database error: ") +
- PQerrorMessage(m_conn));
+ throw DatabaseException(std::string("PostgreSQL database error: ") +
+ PQerrorMessage(m_conn));
}
m_pgversion = PQserverVersion(m_conn);
/*
- * We are using UPSERT feature from PostgreSQL 9.5
- * to have the better performance where possible.
- */
+ * We are using UPSERT feature from PostgreSQL 9.5
+ * to have the better performance where possible.
+ */
if (m_pgversion < 90500) {
warningstream << "Your PostgreSQL server lacks UPSERT "
- << "support. Use version 9.5 or better if possible."
- << std::endl;
+ << "support. Use version 9.5 or better if possible."
+ << std::endl;
}
infostream << "PostgreSQL Database: Version " << m_pgversion
- << " Connection made." << std::endl;
+ << " Connection made." << std::endl;
createDatabase();
initStatements();
@@ -102,9 +103,8 @@ void Database_PostgreSQL::verifyDatabase()
void Database_PostgreSQL::ping()
{
if (PQping(m_connect_string.c_str()) != PQPING_OK) {
- throw DatabaseException(std::string(
- "PostgreSQL database error: ") +
- PQerrorMessage(m_conn));
+ throw DatabaseException(std::string("PostgreSQL database error: ") +
+ PQerrorMessage(m_conn));
}
}
@@ -123,9 +123,8 @@ PGresult *Database_PostgreSQL::checkResults(PGresult *result, bool clear)
break;
case PGRES_FATAL_ERROR:
default:
- throw DatabaseException(
- std::string("PostgreSQL database error: ") +
- PQresultErrorMessage(result));
+ throw DatabaseException(std::string("PostgreSQL database error: ") +
+ PQresultErrorMessage(result));
}
if (clear)
@@ -134,11 +133,11 @@ PGresult *Database_PostgreSQL::checkResults(PGresult *result, bool clear)
return result;
}
-void Database_PostgreSQL::createTableIfNotExists(const std::string &table_name,
- const std::string &definition)
+void Database_PostgreSQL::createTableIfNotExists(
+ const std::string &table_name, const std::string &definition)
{
std::string sql_check_table = "SELECT relname FROM pg_class WHERE relname='" +
- table_name + "';";
+ table_name + "';";
PGresult *result = checkResults(PQexec(m_conn, sql_check_table.c_str()), false);
// If table doesn't exist, create it
@@ -165,61 +164,57 @@ void Database_PostgreSQL::rollback()
checkResults(PQexec(m_conn, "ROLLBACK;"));
}
-MapDatabasePostgreSQL::MapDatabasePostgreSQL(const std::string &connect_string):
- Database_PostgreSQL(connect_string),
- MapDatabase()
+MapDatabasePostgreSQL::MapDatabasePostgreSQL(const std::string &connect_string) :
+ Database_PostgreSQL(connect_string), MapDatabase()
{
connectToDatabase();
}
-
void MapDatabasePostgreSQL::createDatabase()
{
- createTableIfNotExists("blocks",
- "CREATE TABLE blocks ("
- "posX INT NOT NULL,"
- "posY INT NOT NULL,"
- "posZ INT NOT NULL,"
- "data BYTEA,"
- "PRIMARY KEY (posX,posY,posZ)"
- ");"
- );
+ createTableIfNotExists("blocks", "CREATE TABLE blocks ("
+ "posX INT NOT NULL,"
+ "posY INT NOT NULL,"
+ "posZ INT NOT NULL,"
+ "data BYTEA,"
+ "PRIMARY KEY (posX,posY,posZ)"
+ ");");
infostream << "PostgreSQL: Map Database was initialized." << std::endl;
}
void MapDatabasePostgreSQL::initStatements()
{
- prepareStatement("read_block",
- "SELECT data FROM blocks "
- "WHERE posX = $1::int4 AND posY = $2::int4 AND "
- "posZ = $3::int4");
+ prepareStatement("read_block", "SELECT data FROM blocks "
+ "WHERE posX = $1::int4 AND posY = $2::int4 AND "
+ "posZ = $3::int4");
if (getPGVersion() < 90500) {
prepareStatement("write_block_insert",
- "INSERT INTO blocks (posX, posY, posZ, data) SELECT "
+ "INSERT INTO blocks (posX, posY, posZ, data) SELECT "
"$1::int4, $2::int4, $3::int4, $4::bytea "
"WHERE NOT EXISTS (SELECT true FROM blocks "
"WHERE posX = $1::int4 AND posY = $2::int4 AND "
"posZ = $3::int4)");
prepareStatement("write_block_update",
- "UPDATE blocks SET data = $4::bytea "
+ "UPDATE blocks SET data = $4::bytea "
"WHERE posX = $1::int4 AND posY = $2::int4 AND "
"posZ = $3::int4");
} else {
prepareStatement("write_block",
- "INSERT INTO blocks (posX, posY, posZ, data) VALUES "
+ "INSERT INTO blocks (posX, posY, posZ, data) VALUES "
"($1::int4, $2::int4, $3::int4, $4::bytea) "
"ON CONFLICT ON CONSTRAINT blocks_pkey DO "
"UPDATE SET data = $4::bytea");
}
- prepareStatement("delete_block", "DELETE FROM blocks WHERE "
- "posX = $1::int4 AND posY = $2::int4 AND posZ = $3::int4");
+ prepareStatement("delete_block",
+ "DELETE FROM blocks WHERE "
+ "posX = $1::int4 AND posY = $2::int4 AND posZ = $3::int4");
prepareStatement("list_all_loadable_blocks",
- "SELECT posX, posY, posZ FROM blocks");
+ "SELECT posX, posY, posZ FROM blocks");
}
bool MapDatabasePostgreSQL::saveBlock(const v3s16 &pos, const std::string &data)
@@ -227,8 +222,8 @@ bool MapDatabasePostgreSQL::saveBlock(const v3s16 &pos, const std::string &data)
// Verify if we don't overflow the platform integer with the mapblock size
if (data.size() > INT_MAX) {
errorstream << "Database_PostgreSQL::saveBlock: Data truncation! "
- << "data.size() over 0xFFFFFFFF (== " << data.size()
- << ")" << std::endl;
+ << "data.size() over 0xFFFFFFFF (== " << data.size() << ")"
+ << std::endl;
return false;
}
@@ -239,11 +234,9 @@ bool MapDatabasePostgreSQL::saveBlock(const v3s16 &pos, const std::string &data)
y = htonl(pos.Y);
z = htonl(pos.Z);
- const void *args[] = { &x, &y, &z, data.c_str() };
- const int argLen[] = {
- sizeof(x), sizeof(y), sizeof(z), (int)data.size()
- };
- const int argFmt[] = { 1, 1, 1, 1 };
+ const void *args[] = {&x, &y, &z, data.c_str()};
+ const int argLen[] = {sizeof(x), sizeof(y), sizeof(z), (int)data.size()};
+ const int argFmt[] = {1, 1, 1, 1};
if (getPGVersion() < 90500) {
execPrepared("write_block_update", ARRLEN(args), args, argLen, argFmt);
@@ -263,17 +256,18 @@ void MapDatabasePostgreSQL::loadBlock(const v3s16 &pos, std::string *block)
y = htonl(pos.Y);
z = htonl(pos.Z);
- const void *args[] = { &x, &y, &z };
- const int argLen[] = { sizeof(x), sizeof(y), sizeof(z) };
- const int argFmt[] = { 1, 1, 1 };
+ const void *args[] = {&x, &y, &z};
+ const int argLen[] = {sizeof(x), sizeof(y), sizeof(z)};
+ const int argFmt[] = {1, 1, 1};
- PGresult *results = execPrepared("read_block", ARRLEN(args), args,
- argLen, argFmt, false);
+ PGresult *results = execPrepared(
+ "read_block", ARRLEN(args), args, argLen, argFmt, false);
*block = "";
if (PQntuples(results))
- *block = std::string(PQgetvalue(results, 0, 0), PQgetlength(results, 0, 0));
+ *block = std::string(
+ PQgetvalue(results, 0, 0), PQgetlength(results, 0, 0));
PQclear(results);
}
@@ -287,9 +281,9 @@ bool MapDatabasePostgreSQL::deleteBlock(const v3s16 &pos)
y = htonl(pos.Y);
z = htonl(pos.Z);
- const void *args[] = { &x, &y, &z };
- const int argLen[] = { sizeof(x), sizeof(y), sizeof(z) };
- const int argFmt[] = { 1, 1, 1 };
+ const void *args[] = {&x, &y, &z};
+ const int argLen[] = {sizeof(x), sizeof(y), sizeof(z)};
+ const int argFmt[] = {1, 1, 1};
execPrepared("delete_block", ARRLEN(args), args, argLen, argFmt);
@@ -300,8 +294,8 @@ void MapDatabasePostgreSQL::listAllLoadableBlocks(std::vector<v3s16> &dst)
{
verifyDatabase();
- PGresult *results = execPrepared("list_all_loadable_blocks", 0,
- NULL, NULL, NULL, false, false);
+ PGresult *results = execPrepared(
+ "list_all_loadable_blocks", 0, NULL, NULL, NULL, false, false);
int numrows = PQntuples(results);
@@ -314,67 +308,63 @@ void MapDatabasePostgreSQL::listAllLoadableBlocks(std::vector<v3s16> &dst)
/*
* Player Database
*/
-PlayerDatabasePostgreSQL::PlayerDatabasePostgreSQL(const std::string &connect_string):
- Database_PostgreSQL(connect_string),
- PlayerDatabase()
+PlayerDatabasePostgreSQL::PlayerDatabasePostgreSQL(const std::string &connect_string) :
+ Database_PostgreSQL(connect_string), PlayerDatabase()
{
connectToDatabase();
}
-
void PlayerDatabasePostgreSQL::createDatabase()
{
- createTableIfNotExists("player",
- "CREATE TABLE player ("
- "name VARCHAR(60) NOT NULL,"
- "pitch NUMERIC(15, 7) NOT NULL,"
- "yaw NUMERIC(15, 7) NOT NULL,"
- "posX NUMERIC(15, 7) NOT NULL,"
- "posY NUMERIC(15, 7) NOT NULL,"
- "posZ NUMERIC(15, 7) NOT NULL,"
- "hp INT NOT NULL,"
- "breath INT NOT NULL,"
- "creation_date TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT NOW(),"
- "modification_date TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT NOW(),"
- "PRIMARY KEY (name)"
- ");"
- );
-
- createTableIfNotExists("player_inventories",
- "CREATE TABLE player_inventories ("
- "player VARCHAR(60) NOT NULL,"
- "inv_id INT NOT NULL,"
- "inv_width INT NOT NULL,"
- "inv_name TEXT NOT NULL DEFAULT '',"
- "inv_size INT NOT NULL,"
- "PRIMARY KEY(player, inv_id),"
- "CONSTRAINT player_inventories_fkey FOREIGN KEY (player) REFERENCES "
- "player (name) ON DELETE CASCADE"
- ");"
- );
+ createTableIfNotExists("player", "CREATE TABLE player ("
+ "name VARCHAR(60) NOT NULL,"
+ "pitch NUMERIC(15, 7) NOT NULL,"
+ "yaw NUMERIC(15, 7) NOT NULL,"
+ "posX NUMERIC(15, 7) NOT NULL,"
+ "posY NUMERIC(15, 7) NOT NULL,"
+ "posZ NUMERIC(15, 7) NOT NULL,"
+ "hp INT NOT NULL,"
+ "breath INT NOT NULL,"
+ "creation_date TIMESTAMP WITHOUT TIME ZONE NOT "
+ "NULL DEFAULT NOW(),"
+ "modification_date TIMESTAMP WITHOUT TIME ZONE "
+ "NOT NULL DEFAULT NOW(),"
+ "PRIMARY KEY (name)"
+ ");");
+
+ createTableIfNotExists("player_inventories", "CREATE TABLE player_inventories ("
+ "player VARCHAR(60) NOT NULL,"
+ "inv_id INT NOT NULL,"
+ "inv_width INT NOT NULL,"
+ "inv_name TEXT NOT NULL DEFAULT '',"
+ "inv_size INT NOT NULL,"
+ "PRIMARY KEY(player, inv_id),"
+ "CONSTRAINT player_inventories_fkey "
+ "FOREIGN KEY (player) REFERENCES "
+ "player (name) ON DELETE CASCADE"
+ ");");
createTableIfNotExists("player_inventory_items",
- "CREATE TABLE player_inventory_items ("
+ "CREATE TABLE player_inventory_items ("
"player VARCHAR(60) NOT NULL,"
"inv_id INT NOT NULL,"
"slot_id INT NOT NULL,"
"item TEXT NOT NULL DEFAULT '',"
"PRIMARY KEY(player, inv_id, slot_id),"
- "CONSTRAINT player_inventory_items_fkey FOREIGN KEY (player) REFERENCES "
+ "CONSTRAINT player_inventory_items_fkey FOREIGN KEY (player) "
+ "REFERENCES "
"player (name) ON DELETE CASCADE"
- ");"
- );
+ ");");
createTableIfNotExists("player_metadata",
- "CREATE TABLE player_metadata ("
+ "CREATE TABLE player_metadata ("
"player VARCHAR(60) NOT NULL,"
"attr VARCHAR(256) NOT NULL,"
"value TEXT,"
"PRIMARY KEY(player, attr),"
"CONSTRAINT player_metadata_fkey FOREIGN KEY (player) REFERENCES "
"player (name) ON DELETE CASCADE"
- ");"
- );
+ ");");
infostream << "PostgreSQL: Player Database was inited." << std::endl;
}
@@ -383,18 +373,24 @@ void PlayerDatabasePostgreSQL::initStatements()
{
if (getPGVersion() < 90500) {
prepareStatement("create_player",
- "INSERT INTO player(name, pitch, yaw, posX, posY, posZ, hp, breath) VALUES "
+ "INSERT INTO player(name, pitch, yaw, posX, posY, posZ, "
+ "hp, breath) VALUES "
"($1, $2, $3, $4, $5, $6, $7::int, $8::int)");
prepareStatement("update_player",
- "UPDATE SET pitch = $2, yaw = $3, posX = $4, posY = $5, posZ = $6, hp = $7::int, "
- "breath = $8::int, modification_date = NOW() WHERE name = $1");
+ "UPDATE SET pitch = $2, yaw = $3, posX = $4, posY = $5, "
+ "posZ = $6, hp = $7::int, "
+ "breath = $8::int, modification_date = NOW() WHERE name "
+ "= $1");
} else {
prepareStatement("save_player",
- "INSERT INTO player(name, pitch, yaw, posX, posY, posZ, hp, breath) VALUES "
+ "INSERT INTO player(name, pitch, yaw, posX, posY, posZ, "
+ "hp, breath) VALUES "
"($1, $2, $3, $4, $5, $6, $7::int, $8::int)"
- "ON CONFLICT ON CONSTRAINT player_pkey DO UPDATE SET pitch = $2, yaw = $3, "
- "posX = $4, posY = $5, posZ = $6, hp = $7::int, breath = $8::int, "
+ "ON CONFLICT ON CONSTRAINT player_pkey DO UPDATE SET "
+ "pitch = $2, yaw = $3, "
+ "posX = $4, posY = $5, posZ = $6, hp = $7::int, breath = "
+ "$8::int, "
"modification_date = NOW()");
}
@@ -403,46 +399,47 @@ void PlayerDatabasePostgreSQL::initStatements()
prepareStatement("load_player_list", "SELECT name FROM player");
prepareStatement("remove_player_inventories",
- "DELETE FROM player_inventories WHERE player = $1");
+ "DELETE FROM player_inventories WHERE player = $1");
prepareStatement("remove_player_inventory_items",
- "DELETE FROM player_inventory_items WHERE player = $1");
+ "DELETE FROM player_inventory_items WHERE player = $1");
prepareStatement("add_player_inventory",
- "INSERT INTO player_inventories (player, inv_id, inv_width, inv_name, inv_size) VALUES "
+ "INSERT INTO player_inventories (player, inv_id, inv_width, "
+ "inv_name, inv_size) VALUES "
"($1, $2::int, $3::int, $4, $5::int)");
prepareStatement("add_player_inventory_item",
- "INSERT INTO player_inventory_items (player, inv_id, slot_id, item) VALUES "
+ "INSERT INTO player_inventory_items (player, inv_id, slot_id, "
+ "item) VALUES "
"($1, $2::int, $3::int, $4)");
- prepareStatement("load_player_inventories",
- "SELECT inv_id, inv_width, inv_name, inv_size FROM player_inventories "
- "WHERE player = $1 ORDER BY inv_id");
+ prepareStatement("load_player_inventories", "SELECT inv_id, inv_width, inv_name, "
+ "inv_size FROM player_inventories "
+ "WHERE player = $1 ORDER BY inv_id");
prepareStatement("load_player_inventory_items",
- "SELECT slot_id, item FROM player_inventory_items WHERE "
+ "SELECT slot_id, item FROM player_inventory_items WHERE "
"player = $1 AND inv_id = $2::int");
- prepareStatement("load_player",
- "SELECT pitch, yaw, posX, posY, posZ, hp, breath FROM player WHERE name = $1");
+ prepareStatement("load_player", "SELECT pitch, yaw, posX, posY, posZ, hp, breath "
+ "FROM player WHERE name = $1");
prepareStatement("remove_player_metadata",
- "DELETE FROM player_metadata WHERE player = $1");
+ "DELETE FROM player_metadata WHERE player = $1");
- prepareStatement("save_player_metadata",
- "INSERT INTO player_metadata (player, attr, value) VALUES ($1, $2, $3)");
+ prepareStatement("save_player_metadata", "INSERT INTO player_metadata (player, "
+ "attr, value) VALUES ($1, $2, $3)");
prepareStatement("load_player_metadata",
- "SELECT attr, value FROM player_metadata WHERE player = $1");
-
+ "SELECT attr, value FROM player_metadata WHERE player = $1");
}
bool PlayerDatabasePostgreSQL::playerDataExists(const std::string &playername)
{
verifyDatabase();
- const char *values[] = { playername.c_str() };
+ const char *values[] = {playername.c_str()};
PGresult *results = execPrepared("load_player", 1, values, false);
bool res = (PQntuples(results) > 0);
@@ -452,7 +449,7 @@ bool PlayerDatabasePostgreSQL::playerDataExists(const std::string &playername)
void PlayerDatabasePostgreSQL::savePlayer(RemotePlayer *player)
{
- PlayerSAO* sao = player->getPlayerSAO();
+ PlayerSAO *sao = player->getPlayerSAO();
if (!sao)
return;
@@ -466,16 +463,11 @@ void PlayerDatabasePostgreSQL::savePlayer(RemotePlayer *player)
std::string posz = ftos(pos.Z);
std::string hp = itos(sao->getHP());
std::string breath = itos(sao->getBreath());
- const char *values[] = {
- player->getName(),
- pitch.c_str(),
- yaw.c_str(),
- posx.c_str(), posy.c_str(), posz.c_str(),
- hp.c_str(),
- breath.c_str()
- };
+ const char *values[] = {player->getName(), pitch.c_str(), yaw.c_str(),
+ posx.c_str(), posy.c_str(), posz.c_str(), hp.c_str(),
+ breath.c_str()};
- const char* rmvalues[] = { player->getName() };
+ const char *rmvalues[] = {player->getName()};
beginSave();
if (getPGVersion() < 90500) {
@@ -483,28 +475,23 @@ void PlayerDatabasePostgreSQL::savePlayer(RemotePlayer *player)
execPrepared("create_player", 8, values, true, false);
else
execPrepared("update_player", 8, values, true, false);
- }
- else
+ } else
execPrepared("save_player", 8, values, true, false);
// Write player inventories
execPrepared("remove_player_inventories", 1, rmvalues);
execPrepared("remove_player_inventory_items", 1, rmvalues);
- std::vector<const InventoryList*> inventory_lists = sao->getInventory()->getLists();
+ std::vector<const InventoryList *> inventory_lists =
+ sao->getInventory()->getLists();
for (u16 i = 0; i < inventory_lists.size(); i++) {
- const InventoryList* list = inventory_lists[i];
+ const InventoryList *list = inventory_lists[i];
const std::string &name = list->getName();
- std::string width = itos(list->getWidth()),
- inv_id = itos(i), lsize = itos(list->getSize());
-
- const char* inv_values[] = {
- player->getName(),
- inv_id.c_str(),
- width.c_str(),
- name.c_str(),
- lsize.c_str()
- };
+ std::string width = itos(list->getWidth()), inv_id = itos(i),
+ lsize = itos(list->getSize());
+
+ const char *inv_values[] = {player->getName(), inv_id.c_str(),
+ width.c_str(), name.c_str(), lsize.c_str()};
execPrepared("add_player_inventory", 5, inv_values);
for (u32 j = 0; j < list->getSize(); j++) {
@@ -512,12 +499,8 @@ void PlayerDatabasePostgreSQL::savePlayer(RemotePlayer *player)
list->getItem(j).serialize(os);
std::string itemStr = os.str(), slotId = itos(j);
- const char* invitem_values[] = {
- player->getName(),
- inv_id.c_str(),
- slotId.c_str(),
- itemStr.c_str()
- };
+ const char *invitem_values[] = {player->getName(), inv_id.c_str(),
+ slotId.c_str(), itemStr.c_str()};
execPrepared("add_player_inventory_item", 4, invitem_values);
}
}
@@ -525,11 +508,8 @@ void PlayerDatabasePostgreSQL::savePlayer(RemotePlayer *player)
execPrepared("remove_player_metadata", 1, rmvalues);
const StringMap &attrs = sao->getMeta().getStrings();
for (const auto &attr : attrs) {
- const char *meta_values[] = {
- player->getName(),
- attr.first.c_str(),
- attr.second.c_str()
- };
+ const char *meta_values[] = {player->getName(), attr.first.c_str(),
+ attr.second.c_str()};
execPrepared("save_player_metadata", 3, meta_values);
}
endSave();
@@ -542,7 +522,7 @@ bool PlayerDatabasePostgreSQL::loadPlayer(RemotePlayer *player, PlayerSAO *sao)
sanity_check(sao);
verifyDatabase();
- const char *values[] = { player->getName() };
+ const char *values[] = {player->getName()};
PGresult *results = execPrepared("load_player", 1, values, false, false);
// Player not found, return not found
@@ -553,13 +533,10 @@ bool PlayerDatabasePostgreSQL::loadPlayer(RemotePlayer *player, PlayerSAO *sao)
sao->setLookPitch(pg_to_float(results, 0, 0));
sao->setRotation(v3f(0, pg_to_float(results, 0, 1), 0));
- sao->setBasePosition(v3f(
- pg_to_float(results, 0, 2),
- pg_to_float(results, 0, 3),
- pg_to_float(results, 0, 4))
- );
- sao->setHPRaw((u16) pg_to_int(results, 0, 5));
- sao->setBreath((u16) pg_to_int(results, 0, 6), false);
+ sao->setBasePosition(v3f(pg_to_float(results, 0, 2), pg_to_float(results, 0, 3),
+ pg_to_float(results, 0, 4)));
+ sao->setHPRaw((u16)pg_to_int(results, 0, 5));
+ sao->setBreath((u16)pg_to_int(results, 0, 6), false);
PQclear(results);
@@ -569,19 +546,16 @@ bool PlayerDatabasePostgreSQL::loadPlayer(RemotePlayer *player, PlayerSAO *sao)
int resultCount = PQntuples(results);
for (int row = 0; row < resultCount; ++row) {
- InventoryList* invList = player->inventory.
- addList(PQgetvalue(results, row, 2), pg_to_uint(results, row, 3));
+ InventoryList *invList = player->inventory.addList(
+ PQgetvalue(results, row, 2), pg_to_uint(results, row, 3));
invList->setWidth(pg_to_uint(results, row, 1));
u32 invId = pg_to_uint(results, row, 0);
std::string invIdStr = itos(invId);
- const char* values2[] = {
- player->getName(),
- invIdStr.c_str()
- };
- PGresult *results2 = execPrepared("load_player_inventory_items", 2,
- values2, false, false);
+ const char *values2[] = {player->getName(), invIdStr.c_str()};
+ PGresult *results2 = execPrepared(
+ "load_player_inventory_items", 2, values2, false, false);
int resultCount2 = PQntuples(results2);
for (int row2 = 0; row2 < resultCount2; row2++) {
@@ -601,7 +575,8 @@ bool PlayerDatabasePostgreSQL::loadPlayer(RemotePlayer *player, PlayerSAO *sao)
int numrows = PQntuples(results);
for (int row = 0; row < numrows; row++) {
- sao->getMeta().setString(PQgetvalue(results, row, 0), PQgetvalue(results, row, 1));
+ sao->getMeta().setString(
+ PQgetvalue(results, row, 0), PQgetvalue(results, row, 1));
}
sao->getMeta().setModified(false);
@@ -617,7 +592,7 @@ bool PlayerDatabasePostgreSQL::removePlayer(const std::string &name)
verifyDatabase();
- const char *values[] = { name.c_str() };
+ const char *values[] = {name.c_str()};
execPrepared("remove_player", 1, values);
return true;
@@ -644,43 +619,48 @@ AuthDatabasePostgreSQL::AuthDatabasePostgreSQL(const std::string &connect_string
void AuthDatabasePostgreSQL::createDatabase()
{
- createTableIfNotExists("auth",
- "CREATE TABLE auth ("
- "id SERIAL,"
- "name TEXT UNIQUE,"
- "password TEXT,"
- "last_login INT NOT NULL DEFAULT 0,"
- "PRIMARY KEY (id)"
- ");");
+ createTableIfNotExists("auth", "CREATE TABLE auth ("
+ "id SERIAL,"
+ "name TEXT UNIQUE,"
+ "password TEXT,"
+ "last_login INT NOT NULL DEFAULT 0,"
+ "PRIMARY KEY (id)"
+ ");");
- createTableIfNotExists("user_privileges",
- "CREATE TABLE user_privileges ("
- "id INT,"
- "privilege TEXT,"
- "PRIMARY KEY (id, privilege),"
- "CONSTRAINT fk_id FOREIGN KEY (id) REFERENCES auth (id) ON DELETE CASCADE"
- ");");
+ createTableIfNotExists("user_privileges", "CREATE TABLE user_privileges ("
+ "id INT,"
+ "privilege TEXT,"
+ "PRIMARY KEY (id, privilege),"
+ "CONSTRAINT fk_id FOREIGN KEY (id) "
+ "REFERENCES auth (id) ON DELETE CASCADE"
+ ");");
}
void AuthDatabasePostgreSQL::initStatements()
{
- prepareStatement("auth_read", "SELECT id, name, password, last_login FROM auth WHERE name = $1");
- prepareStatement("auth_write", "UPDATE auth SET name = $1, password = $2, last_login = $3 WHERE id = $4");
- prepareStatement("auth_create", "INSERT INTO auth (name, password, last_login) VALUES ($1, $2, $3) RETURNING id");
+ prepareStatement("auth_read", "SELECT id, name, password, last_login FROM auth "
+ "WHERE name = $1");
+ prepareStatement("auth_write", "UPDATE auth SET name = $1, password = $2, "
+ "last_login = $3 WHERE id = $4");
+ prepareStatement("auth_create", "INSERT INTO auth (name, password, last_login) "
+ "VALUES ($1, $2, $3) RETURNING id");
prepareStatement("auth_delete", "DELETE FROM auth WHERE name = $1");
prepareStatement("auth_list_names", "SELECT name FROM auth ORDER BY name DESC");
- prepareStatement("auth_read_privs", "SELECT privilege FROM user_privileges WHERE id = $1");
- prepareStatement("auth_write_privs", "INSERT INTO user_privileges (id, privilege) VALUES ($1, $2)");
- prepareStatement("auth_delete_privs", "DELETE FROM user_privileges WHERE id = $1");
+ prepareStatement("auth_read_privs",
+ "SELECT privilege FROM user_privileges WHERE id = $1");
+ prepareStatement("auth_write_privs",
+ "INSERT INTO user_privileges (id, privilege) VALUES ($1, $2)");
+ prepareStatement(
+ "auth_delete_privs", "DELETE FROM user_privileges WHERE id = $1");
}
bool AuthDatabasePostgreSQL::getAuth(const std::string &name, AuthEntry &res)
{
verifyDatabase();
- const char *values[] = { name.c_str() };
+ const char *values[] = {name.c_str()};
PGresult *result = execPrepared("auth_read", 1, values, false, false);
int numrows = PQntuples(result);
if (numrows == 0) {
@@ -696,7 +676,7 @@ bool AuthDatabasePostgreSQL::getAuth(const std::string &name, AuthEntry &res)
PQclear(result);
std::string playerIdStr = itos(res.id);
- const char *privsValues[] = { playerIdStr.c_str() };
+ const char *privsValues[] = {playerIdStr.c_str()};
PGresult *results = execPrepared("auth_read_privs", 1, privsValues, false);
numrows = PQntuples(results);
@@ -717,10 +697,10 @@ bool AuthDatabasePostgreSQL::saveAuth(const AuthEntry &authEntry)
std::string lastLoginStr = itos(authEntry.last_login);
std::string idStr = itos(authEntry.id);
const char *values[] = {
- authEntry.name.c_str() ,
- authEntry.password.c_str(),
- lastLoginStr.c_str(),
- idStr.c_str(),
+ authEntry.name.c_str(),
+ authEntry.password.c_str(),
+ lastLoginStr.c_str(),
+ idStr.c_str(),
};
execPrepared("auth_write", 4, values);
@@ -735,11 +715,8 @@ bool AuthDatabasePostgreSQL::createAuth(AuthEntry &authEntry)
verifyDatabase();
std::string lastLoginStr = itos(authEntry.last_login);
- const char *values[] = {
- authEntry.name.c_str() ,
- authEntry.password.c_str(),
- lastLoginStr.c_str()
- };
+ const char *values[] = {authEntry.name.c_str(), authEntry.password.c_str(),
+ lastLoginStr.c_str()};
beginSave();
@@ -747,7 +724,8 @@ bool AuthDatabasePostgreSQL::createAuth(AuthEntry &authEntry)
int numrows = PQntuples(result);
if (numrows == 0) {
- errorstream << "Strange behaviour on auth creation, no ID returned." << std::endl;
+ errorstream << "Strange behaviour on auth creation, no ID returned."
+ << std::endl;
PQclear(result);
rollback();
return false;
@@ -766,7 +744,7 @@ bool AuthDatabasePostgreSQL::deleteAuth(const std::string &name)
{
verifyDatabase();
- const char *values[] = { name.c_str() };
+ const char *values[] = {name.c_str()};
execPrepared("auth_delete", 1, values);
// privileges deleted by foreign key on delete cascade
@@ -777,8 +755,8 @@ void AuthDatabasePostgreSQL::listNames(std::vector<std::string> &res)
{
verifyDatabase();
- PGresult *results = execPrepared("auth_list_names", 0,
- NULL, NULL, NULL, false, false);
+ PGresult *results = execPrepared(
+ "auth_list_names", 0, NULL, NULL, NULL, false, false);
int numrows = PQntuples(results);
@@ -796,14 +774,13 @@ void AuthDatabasePostgreSQL::reload()
void AuthDatabasePostgreSQL::writePrivileges(const AuthEntry &authEntry)
{
std::string authIdStr = itos(authEntry.id);
- const char *values[] = { authIdStr.c_str() };
+ const char *values[] = {authIdStr.c_str()};
execPrepared("auth_delete_privs", 1, values);
for (const std::string &privilege : authEntry.privileges) {
- const char *values[] = { authIdStr.c_str(), privilege.c_str() };
+ const char *values[] = {authIdStr.c_str(), privilege.c_str()};
execPrepared("auth_write_privs", 2, values);
}
}
-
#endif // USE_POSTGRESQL