[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r21903 - gnunet/src/namestore
From: |
gnunet |
Subject: |
[GNUnet-SVN] r21903 - gnunet/src/namestore |
Date: |
Tue, 12 Jun 2012 12:21:55 +0200 |
Author: grothoff
Date: 2012-06-12 12:21:55 +0200 (Tue, 12 Jun 2012)
New Revision: 21903
Modified:
gnunet/src/namestore/plugin_namestore_postgres.c
Log:
completed postgres plugin for namestore service
Modified: gnunet/src/namestore/plugin_namestore_postgres.c
===================================================================
--- gnunet/src/namestore/plugin_namestore_postgres.c 2012-06-12 10:04:51 UTC
(rev 21902)
+++ gnunet/src/namestore/plugin_namestore_postgres.c 2012-06-12 10:21:55 UTC
(rev 21903)
@@ -80,17 +80,17 @@
{
/* create indices */
if ( (GNUNET_OK !=
- GNUNET_POSTGRES_exec (dbh, "CREATE INDEX IF NOT EXISTS ir_zone_name_rv
ON ns091records (zone_hash,record_name_hash,rvalue)")) ||
+ GNUNET_POSTGRES_exec (dbh, "CREATE INDEX ir_zone_name_rv ON
ns091records (zone_hash,record_name_hash,rvalue)")) ||
(GNUNET_OK !=
- GNUNET_POSTGRES_exec (dbh, "CREATE INDEX IF NOT EXISTS
ir_zone_delegation ON ns091records (zone_hash,zone_delegation)")) ||
+ GNUNET_POSTGRES_exec (dbh, "CREATE INDEX ir_zone_delegation ON
ns091records (zone_hash,zone_delegation)")) ||
(GNUNET_OK !=
- GNUNET_POSTGRES_exec (dbh, "CREATE INDEX IF NOT EXISTS ir_zone_rv ON
ns091records (zone_hash,rvalue)")) ||
+ GNUNET_POSTGRES_exec (dbh, "CREATE INDEX ir_zone_rv ON ns091records
(zone_hash,rvalue)")) ||
(GNUNET_OK !=
- GNUNET_POSTGRES_exec (dbh, "CREATE INDEX IF NOT EXISTS ir_zone ON
ns091records (zone_hash)")) ||
+ GNUNET_POSTGRES_exec (dbh, "CREATE INDEX ir_zone ON ns091records
(zone_hash)")) ||
(GNUNET_OK !=
- GNUNET_POSTGRES_exec (dbh, "CREATE INDEX IF NOT EXISTS ir_name_rv ON
ns091records (record_name_hash,rvalue)")) ||
+ GNUNET_POSTGRES_exec (dbh, "CREATE INDEX ir_name_rv ON ns091records
(record_name_hash,rvalue)")) ||
(GNUNET_OK !=
- GNUNET_POSTGRES_exec (dbh, "CREATE INDEX IF NOT EXISTS ir_rv ON
ns091records (rvalue)")) )
+ GNUNET_POSTGRES_exec (dbh, "CREATE INDEX ir_rv ON ns091records
(rvalue)")) )
LOG (GNUNET_ERROR_TYPE_ERROR,
_("Failed to create indices\n"));
}
@@ -116,16 +116,16 @@
res =
PQexec (plugin->dbh,
"CREATE TABLE ns091records ("
- " zone_key BLOB NOT NULL DEFAULT '',"
- " zone_delegation BLOB NOT NULL DEFAULT '',"
- " zone_hash BLOB NOT NULL DEFAULT '',"
- " record_count INT NOT NULL DEFAULT 0,"
- " record_data BLOB NOT NULL DEFAULT '',"
- " block_expiration_time INT8 NOT NULL DEFAULT 0,"
- " signature BLOB NOT NULL DEFAULT '',"
+ " zone_key BYTEA NOT NULL DEFAULT '',"
+ " zone_delegation BYTEA NOT NULL DEFAULT '',"
+ " zone_hash BYTEA NOT NULL DEFAULT '',"
+ " record_count INTEGER NOT NULL DEFAULT 0,"
+ " record_data BYTEA NOT NULL DEFAULT '',"
+ " block_expiration_time BIGINT NOT NULL DEFAULT 0,"
+ " signature BYTEA NOT NULL DEFAULT '',"
" record_name TEXT NOT NULL DEFAULT '',"
- " record_name_hash BLOB NOT NULL DEFAULT '',"
- " rvalue INT8 NOT NULL DEFAULT ''"
+ " record_name_hash BYTEA NOT NULL DEFAULT '',"
+ " rvalue BIGINT NOT NULL DEFAULT 0"
")" "WITH OIDS");
if ((NULL == res) || ((PQresultStatus (res) != PGRES_COMMAND_OK) && (0 !=
strcmp ("42P07", /* duplicate table */
PQresultErrorField
@@ -225,7 +225,7 @@
PQexecPrepared (plugin->dbh, "remove_records", 2, paramValues,
paramLengths,
paramFormats, 1);
if (GNUNET_OK !=
- GNUNET_POSTGRES_check_result (plugin->dbh, ret, PGRES_COMMAND_OK,
"PQexecPrepared", "put"))
+ GNUNET_POSTGRES_check_result (plugin->dbh, ret, PGRES_COMMAND_OK,
"PQexecPrepared", "remove_records"))
return GNUNET_SYSERR;
PQclear (ret);
return GNUNET_OK;
@@ -308,7 +308,7 @@
};
int paramLengths[] = {
sizeof (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded),
- name_len + 1,
+ name_len,
sizeof (uint32_t),
data_size,
sizeof (uint64_t),
@@ -327,10 +327,10 @@
return GNUNET_SYSERR;
}
ret =
- PQexecPrepared (plugin->dbh, "put", 10, paramValues, paramLengths,
+ PQexecPrepared (plugin->dbh, "put_records", 10, paramValues,
paramLengths,
paramFormats, 1);
if (GNUNET_OK !=
- GNUNET_POSTGRES_check_result (plugin->dbh, ret, PGRES_COMMAND_OK,
"PQexecPrepared", "put"))
+ GNUNET_POSTGRES_check_result (plugin->dbh, ret, PGRES_COMMAND_OK,
"PQexecPrepared", "put_records"))
return GNUNET_SYSERR;
PQclear (ret);
}
@@ -363,6 +363,7 @@
const char *data;
const char *name;
unsigned int cnt;
+ size_t name_len;
if (GNUNET_OK !=
GNUNET_POSTGRES_check_result (plugin->dbh, res, PGRES_TUPLES_OK,
"PQexecPrepared",
@@ -383,10 +384,10 @@
}
GNUNET_assert (1 == cnt);
if ((6 != PQnfields (res)) ||
- (sizeof (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded) != PQfsize
(res, 0)) ||
+ (sizeof (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded) != PQgetlength
(res, 0, 0)) ||
(sizeof (uint32_t) != PQfsize (res, 2)) ||
(sizeof (uint64_t) != PQfsize (res, 4)) ||
- (sizeof (struct GNUNET_CRYPTO_RsaSignature) != PQfsize (res, 5)))
+ (sizeof (struct GNUNET_CRYPTO_RsaSignature) != PQgetlength (res, 0, 5)))
{
GNUNET_break (0);
PQclear (res);
@@ -394,12 +395,7 @@
}
zone_key = (const struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *)
PQgetvalue (res, 0, 0);
name = PQgetvalue (res, 0, 1);
- if ('\0' != name[PQgetlength (res, 0, 1)-1])
- {
- GNUNET_break (0);
- PQclear (res);
- return GNUNET_SYSERR;
- }
+ name_len = PQgetlength (res, 0, 1);
record_count = ntohl (*(uint32_t *) PQgetvalue (res, 0, 2));
data_size = PQgetlength (res, 0, 3);
data = PQgetvalue (res, 0, 3);
@@ -416,7 +412,10 @@
}
{
struct GNUNET_NAMESTORE_RecordData rd[record_count];
+ char buf[name_len + 1];
+ memcpy (buf, name, name_len);
+ buf[name_len] = '\0';
if (GNUNET_OK !=
GNUNET_NAMESTORE_records_deserialize (data_size, data,
record_count, rd))
@@ -425,7 +424,7 @@
PQclear (res);
return GNUNET_SYSERR;
}
- iter (iter_cls, zone_key, expiration, name,
+ iter (iter_cls, zone_key, expiration, buf,
record_count, rd, sig);
}
PQclear (res);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r21903 - gnunet/src/namestore,
gnunet <=