Get postgresql working
parent
ef63050152
commit
b195c126d2
|
@ -47,7 +47,7 @@ endif(ENABLE_SQLITE3)
|
||||||
|
|
||||||
# Find postgresql
|
# Find postgresql
|
||||||
if(ENABLE_POSTGRESQL)
|
if(ENABLE_POSTGRESQL)
|
||||||
find_library(POSTGRESQL_LIBRARY pq)
|
find_library(POSTGRESQL_LIBRARY NAMES pq libpq)
|
||||||
find_path(POSTGRESQL_INCLUDE_DIR libpq-fe.h PATH_SUFFIXES postgresql)
|
find_path(POSTGRESQL_INCLUDE_DIR libpq-fe.h PATH_SUFFIXES postgresql)
|
||||||
message (STATUS "postgresql library: ${POSTGRESQL_LIBRARY}")
|
message (STATUS "postgresql library: ${POSTGRESQL_LIBRARY}")
|
||||||
message (STATUS "postgresql headers: ${POSTGRESQL_INCLUDE_DIR}")
|
message (STATUS "postgresql headers: ${POSTGRESQL_INCLUDE_DIR}")
|
||||||
|
|
|
@ -64,19 +64,32 @@ if(WIN32)
|
||||||
|
|
||||||
add_library (wingetopt STATIC ../wingetopt/src/getopt.c)
|
add_library (wingetopt STATIC ../wingetopt/src/getopt.c)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(wingetopt_lib "")
|
set(wingetopt_lib "")
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(wingetopt_lib wingetopt)
|
set(wingetopt_lib wingetopt)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(leveldb_lib "")
|
set(leveldb_lib "")
|
||||||
if(USE_LEVELDB)
|
if(USE_LEVELDB)
|
||||||
set(leveldb_lib ${LEVELDB_LIBRARY})
|
set(leveldb_lib ${LEVELDB_LIBRARY})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set(postgresql_lib "")
|
||||||
|
if(USE_POSTGRESQL)
|
||||||
|
set(postgresql_lib ${POSTGRESQL_LIBRARY})
|
||||||
|
if(WIN32)
|
||||||
|
# the libpq database driver requires htonl which is in the Ws2_32 library
|
||||||
|
set(postgresql_lib ${POSTGRESQL_LIBRARY} "Ws2_32.lib")
|
||||||
|
endif(WIN32)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
#link_directories (../wingetopt)
|
#link_directories (../wingetopt)
|
||||||
# Fügen Sie der ausführbaren Datei für dieses Projekt eine Quelle hinzu.
|
# Fügen Sie der ausführbaren Datei für dieses Projekt eine Quelle hinzu.
|
||||||
add_executable (Minetestmapper ${sources})
|
add_executable (Minetestmapper ${sources})
|
||||||
set_target_properties(Minetestmapper PROPERTIES COMPILE_FLAGS -DBUILDER_STATIC_DEFINE)
|
set_target_properties(Minetestmapper PROPERTIES COMPILE_FLAGS -DBUILDER_STATIC_DEFINE)
|
||||||
target_link_libraries(Minetestmapper ${wingetopt_lib} ${LIBGD_LIBRARY} ${ZLIB_LIBRARY} ${SQLITE3_LIBRARY} ${leveldb_lib})
|
target_link_libraries(Minetestmapper ${wingetopt_lib} ${LIBGD_LIBRARY} ${ZLIB_LIBRARY} ${SQLITE3_LIBRARY} ${leveldb_lib} ${postgresql_lib})
|
||||||
# TODO: Fügen Sie bei Bedarf Tests und Installationsziele hinzu.
|
# TODO: Fügen Sie bei Bedarf Tests und Installationsziele hinzu.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -478,7 +478,7 @@ void TileGenerator::openDb(const std::string &input)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (m_backend == "postgresql") {
|
else if (m_backend == "postgresql") {
|
||||||
#if USE_POSTGRESQL
|
#ifdef USE_POSTGRESQL
|
||||||
DBPostgreSQL *db;
|
DBPostgreSQL *db;
|
||||||
m_db = db = new DBPostgreSQL(input);
|
m_db = db = new DBPostgreSQL(input);
|
||||||
#else
|
#else
|
||||||
|
@ -494,7 +494,7 @@ void TileGenerator::openDb(const std::string &input)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (m_backend == "redis") {
|
else if (m_backend == "redis") {
|
||||||
#if USE_REDIS
|
#ifdef USE_REDIS
|
||||||
m_db = new DBRedis(input);
|
m_db = new DBRedis(input);
|
||||||
m_scanEntireWorld = true;
|
m_scanEntireWorld = true;
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
|
|
||||||
#if USE_POSTGRESQL
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include "db-postgresql.h"
|
#include "db-postgresql.h"
|
||||||
|
|
||||||
|
#ifdef USE_POSTGRESQL
|
||||||
|
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <unistd.h> // for usleep
|
#if _WIN32
|
||||||
#include <arpa/inet.h>
|
#include <Winsock2.h> // htonl
|
||||||
|
#else
|
||||||
|
#include <arpa/inet.h> // htonl
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "Settings.h"
|
#include "Settings.h"
|
||||||
#include "types.h"
|
|
||||||
|
|
||||||
#define BLOCKPOSLIST_QUERY_COMPAT "SELECT x, y, z FROM blocks"
|
#define BLOCKPOSLIST_QUERY_COMPAT "SELECT x, y, z FROM blocks"
|
||||||
#define BLOCKPOSLISTBOUNDED_QUERY_COMPAT "SELECT x, y, z FROM blocks WHERE x BETWEEN $1 AND $2 AND y BETWEEN $3 AND $4 AND z BETWEEN $5 AND $6"
|
#define BLOCKPOSLISTBOUNDED_QUERY_COMPAT "SELECT x, y, z FROM blocks WHERE x BETWEEN $1 AND $2 AND y BETWEEN $3 AND $4 AND z BETWEEN $5 AND $6"
|
||||||
|
@ -149,9 +151,9 @@ const DB::BlockPosList &DBPostgreSQL::processBlockPosListQueryResult(PGresult *r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DB::Block DBPostgreSQL::getBlockOnPos(const BlockPos &pos)
|
const DB::Block DBPostgreSQL::getBlockOnPos(const BlockPos &pos)
|
||||||
{
|
{
|
||||||
Block block(pos,reinterpret_cast<const unsigned char *>(""));
|
Block block(pos, {});
|
||||||
|
|
||||||
m_blocksQueriedCount++;
|
m_blocksQueriedCount++;
|
||||||
|
|
||||||
|
@ -165,7 +167,7 @@ DB::Block DBPostgreSQL::getBlockOnPos(const BlockPos &pos)
|
||||||
+ (result ? PQresultErrorMessage(result) : "(result was NULL)"));
|
+ (result ? PQresultErrorMessage(result) : "(result was NULL)"));
|
||||||
|
|
||||||
if (PQntuples(result) != 0) {
|
if (PQntuples(result) != 0) {
|
||||||
block = Block(pos, ustring(reinterpret_cast<unsigned char *>(PQgetvalue(result, 0, 0)), PQgetlength(result, 0, 0)));
|
block = Block(pos, reinterpret_cast<unsigned char *>(PQgetvalue(result, 0, 0)), PQgetlength(result, 0, 0));
|
||||||
m_blocksReadCount++;
|
m_blocksReadCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#if USE_POSTGRESQL
|
#ifdef USE_POSTGRESQL
|
||||||
|
|
||||||
#include "db.h"
|
#include "db.h"
|
||||||
#include <libpq-fe.h>
|
#include <libpq-fe.h>
|
||||||
|
@ -10,18 +10,15 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
#include "types.h"
|
|
||||||
|
|
||||||
class DBPostgreSQL : public DB {
|
class DBPostgreSQL : public DB {
|
||||||
typedef std::unordered_map<int64_t, ustring> BlockCache;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DBPostgreSQL(const std::string &mapdir);
|
DBPostgreSQL(const std::string &mapdir);
|
||||||
virtual int getBlocksQueriedCount(void);
|
virtual int getBlocksQueriedCount(void);
|
||||||
virtual int getBlocksReadCount(void);
|
virtual int getBlocksReadCount(void);
|
||||||
virtual const BlockPosList &getBlockPosList();
|
virtual const BlockPosList &getBlockPosList();
|
||||||
virtual const BlockPosList &getBlockPosList(BlockPos minPos, BlockPos maxPos);
|
virtual const BlockPosList &getBlockPosList(BlockPos minPos, BlockPos maxPos);
|
||||||
virtual Block getBlockOnPos(const BlockPos &pos);
|
virtual const Block getBlockOnPos(const BlockPos &pos);
|
||||||
~DBPostgreSQL();
|
~DBPostgreSQL();
|
||||||
private:
|
private:
|
||||||
int m_blocksQueriedCount;
|
int m_blocksQueriedCount;
|
||||||
|
|
Loading…
Reference in New Issue