summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2011-12-07 05:08:46 +0100
committerAlexander Sulfrian <alexander@sulfrian.net>2011-12-07 05:09:15 +0100
commit895b47c26ea681c0e09e7c9f468a2934cb6f452b (patch)
tree17f61b3d7aec2f3127f63b8473897bd839def1dc
parent1ef57f73e7a8d8de32587e27a5b3ed35cf64ac99 (diff)
downloadts3db_postgres-895b47c26ea681c0e09e7c9f468a2934cb6f452b.tar.gz
ts3db_postgres-895b47c26ea681c0e09e7c9f468a2934cb6f452b.tar.xz
ts3db_postgres-895b47c26ea681c0e09e7c9f468a2934cb6f452b.zip
fix last inserted id
pg insert should return the serial field as last_inserted_id
-rw-r--r--ts3db.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/ts3db.c b/ts3db.c
index e6e1848..33bc9b0 100644
--- a/ts3db.c
+++ b/ts3db.c
@@ -1,6 +1,7 @@
#include "ts3db.h"
#include <libpq-fe.h>
#include <stdbool.h>
+#include <string.h>
#define MAX_CONNECTIONS 100
@@ -182,15 +183,18 @@ unsigned long long ts3dbplugin_getlastinsertid(unsigned int connection_nr)
{
log("getlastinsertid", LOG_DEVELOP);
const PGresult *result = get_last_result(connection_nr);
- Oid value = PQoidValue(result);
- fprintf(stderr, "%llu\n", value);
- if (value == InvalidOid) {
- log("0", LOG_DEVELOP);
- return 0;
+ if (PQnfields(result) == 1) {
+ if (strcmp(PQfname(result, 0), "last_inserted_id") == 0) {
+ const char *count = PQgetvalue(result, 0, 0);
+ unsigned long long number;
+
+ sscanf(count, "%llu", &number);
+ return number;
+ }
}
- return value;
+ return 0;
}
unsigned int ts3dbplugin_open(unsigned int connection_nr, const char* query,