[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r7872 - in GNUnet/src: applications/dstore_mysql libs/mysql
From: |
gnunet |
Subject: |
[GNUnet-SVN] r7872 - in GNUnet/src: applications/dstore_mysql libs/mysql |
Date: |
Sun, 9 Nov 2008 16:57:21 -0700 (MST) |
Author: grothoff
Date: 2008-11-09 16:57:21 -0700 (Sun, 09 Nov 2008)
New Revision: 7872
Modified:
GNUnet/src/applications/dstore_mysql/dstore_mysql.c
GNUnet/src/libs/mysql/lmysql.c
Log:
recreate tables on disconnect
Modified: GNUnet/src/applications/dstore_mysql/dstore_mysql.c
===================================================================
--- GNUnet/src/applications/dstore_mysql/dstore_mysql.c 2008-11-09 21:35:01 UTC
(rev 7871)
+++ GNUnet/src/applications/dstore_mysql/dstore_mysql.c 2008-11-09 23:57:21 UTC
(rev 7872)
@@ -98,17 +98,10 @@
"WHERE hash=? AND vhash=? AND type=? AND size=?"
static struct GNUNET_MysqlStatementHandle *update_value;
-
static int
-iopen ()
+itable()
{
- if (db != NULL)
- return GNUNET_OK;
- db = GNUNET_MYSQL_database_open (coreAPI->ectx, coreAPI->cfg);
- if (db == NULL)
- return GNUNET_SYSERR;
#define MRUNS(a) (GNUNET_OK != GNUNET_MYSQL_run_statement (db, a) )
-#define PINIT(a,b) (NULL == (a = GNUNET_MYSQL_prepared_statement_create(db,
b)))
if (MRUNS ("CREATE TEMPORARY TABLE gn080dstore ("
" size INT(11) UNSIGNED NOT NULL DEFAULT 0,"
" type INT(11) UNSIGNED NOT NULL DEFAULT 0,"
@@ -120,8 +113,22 @@
" INDEX hashidx (hash(64),type,expire),"
" INDEX allidx (hash(64),vhash(64),type,size),"
" INDEX expireidx (puttime)" ") ENGINE=InnoDB") ||
- MRUNS ("SET AUTOCOMMIT = 1") ||
- PINIT (select_value, SELECT_VALUE_STMT) ||
+ MRUNS ("SET AUTOCOMMIT = 1") )
+ return GNUNET_SYSERR;
+ return GNUNET_OK;
+#undef MRUNS
+}
+
+static int
+iopen ()
+{
+ if (db != NULL)
+ return GNUNET_OK;
+ db = GNUNET_MYSQL_database_open (coreAPI->ectx, coreAPI->cfg);
+ if (db == NULL)
+ return GNUNET_SYSERR;
+#define PINIT(a,b) (NULL == (a = GNUNET_MYSQL_prepared_statement_create(db,
b)))
+ if (PINIT (select_value, SELECT_VALUE_STMT) ||
PINIT (count_value, COUNT_VALUE_STMT) ||
PINIT (select_old_value, SELECT_OLD_VALUE_STMT) ||
PINIT (delete_value, DELETE_VALUE_STMT) ||
@@ -133,8 +140,7 @@
return GNUNET_SYSERR;
}
#undef PINIT
-#undef MRUNS
- return GNUNET_OK;
+ return itable();
}
static int
@@ -159,6 +165,7 @@
unsigned long k_length;
unsigned long h_length;
unsigned long v_length;
+ int ret;
if (payload * 10 <= quota * 9)
return GNUNET_OK; /* we seem to be about 10% off */
@@ -192,36 +199,37 @@
rbind[4].length = &v_length;
rbind[4].buffer = GNUNET_malloc (GNUNET_MAX_BUFFER_SIZE);
if ((GNUNET_OK !=
- GNUNET_MYSQL_prepared_statement_run_select (select_old_value,
- 5,
- rbind,
- return_ok,
- NULL,
- -1)) ||
+ (ret = GNUNET_MYSQL_prepared_statement_run_select (select_old_value,
+ 5,
+ rbind,
+ return_ok,
+ NULL,
+ -1))) ||
(GNUNET_OK !=
- GNUNET_MYSQL_prepared_statement_run (delete_value,
- NULL,
- MYSQL_TYPE_BLOB,
- &v_key,
- sizeof (GNUNET_HashCode),
- &k_length,
- MYSQL_TYPE_BLOB,
- &vhash,
- sizeof (GNUNET_HashCode),
- &h_length,
- MYSQL_TYPE_LONG,
- &v_type,
- GNUNET_YES,
- MYSQL_TYPE_LONG,
- &v_size,
- GNUNET_YES,
- MYSQL_TYPE_BLOB,
- rbind[4].buffer,
- (unsigned long)
- GNUNET_MAX_BUFFER_SIZE, &v_length,
- -1)))
+ (ret = GNUNET_MYSQL_prepared_statement_run (delete_value,
+ NULL,
+ MYSQL_TYPE_BLOB,
+ &v_key,
+ sizeof (GNUNET_HashCode),
+ &k_length,
+ MYSQL_TYPE_BLOB,
+ &vhash,
+ sizeof (GNUNET_HashCode),
+ &h_length,
+ MYSQL_TYPE_LONG,
+ &v_type,
+ GNUNET_YES,
+ MYSQL_TYPE_LONG,
+ &v_size,
+ GNUNET_YES,
+ MYSQL_TYPE_BLOB,
+ rbind[4].buffer,
+ (unsigned long)
+ GNUNET_MAX_BUFFER_SIZE,
&v_length,
+ -1))))
{
GNUNET_free (rbind[4].buffer);
+ if (ret == GNUNET_SYSERR) itable();
return GNUNET_SYSERR;
}
GNUNET_free (rbind[4].buffer);
@@ -250,6 +258,7 @@
unsigned long h_length;
unsigned long v_length;
GNUNET_HashCode vhash;
+ int ret;
if (size > MAX_CONTENT_SIZE)
return GNUNET_SYSERR;
@@ -289,33 +298,36 @@
k_length = sizeof (GNUNET_HashCode);
v_length = size;
if (GNUNET_OK !=
- GNUNET_MYSQL_prepared_statement_run (insert_value,
- NULL,
- MYSQL_TYPE_LONG,
- &size,
- GNUNET_YES,
- MYSQL_TYPE_LONG,
- &type,
- GNUNET_YES,
- MYSQL_TYPE_LONGLONG,
- &now,
- GNUNET_YES,
- MYSQL_TYPE_LONGLONG,
- &discard_time,
- GNUNET_YES,
- MYSQL_TYPE_BLOB,
- key,
- sizeof (GNUNET_HashCode),
- &k_length,
- MYSQL_TYPE_BLOB,
- &vhash,
- sizeof (GNUNET_HashCode),
- &h_length,
- MYSQL_TYPE_BLOB,
- data,
- (unsigned long) size,
- &v_length, -1))
- return GNUNET_SYSERR;
+ (ret = GNUNET_MYSQL_prepared_statement_run (insert_value,
+ NULL,
+ MYSQL_TYPE_LONG,
+ &size,
+ GNUNET_YES,
+ MYSQL_TYPE_LONG,
+ &type,
+ GNUNET_YES,
+ MYSQL_TYPE_LONGLONG,
+ &now,
+ GNUNET_YES,
+ MYSQL_TYPE_LONGLONG,
+ &discard_time,
+ GNUNET_YES,
+ MYSQL_TYPE_BLOB,
+ key,
+ sizeof (GNUNET_HashCode),
+ &k_length,
+ MYSQL_TYPE_BLOB,
+ &vhash,
+ sizeof (GNUNET_HashCode),
+ &h_length,
+ MYSQL_TYPE_BLOB,
+ data,
+ (unsigned long) size,
+ &v_length, -1)))
+ {
+ if (ret == GNUNET_SYSERR) itable();
+ return GNUNET_SYSERR;
+ }
if (bloom != NULL)
GNUNET_bloomfilter_add (bloom, key);
GNUNET_mutex_lock (lock);
@@ -349,6 +361,7 @@
unsigned int cnt;
unsigned long long total;
unsigned int off;
+ int ret;
if ((bloom != NULL) && (GNUNET_NO == GNUNET_bloomfilter_test (bloom, key)))
return 0;
@@ -361,23 +374,26 @@
rbind[0].buffer = &total;
rbind[0].is_unsigned = GNUNET_YES;
if ((GNUNET_OK !=
- GNUNET_MYSQL_prepared_statement_run_select (count_value,
- 1,
- rbind,
- return_ok,
- NULL,
- MYSQL_TYPE_BLOB,
- key,
- sizeof (GNUNET_HashCode),
- &h_length,
- MYSQL_TYPE_LONG,
- &type,
- GNUNET_YES,
- MYSQL_TYPE_LONGLONG,
- &now,
- GNUNET_YES,
- -1)) || (-1 == total))
- return GNUNET_SYSERR;
+ (ret = GNUNET_MYSQL_prepared_statement_run_select (count_value,
+ 1,
+ rbind,
+ return_ok,
+ NULL,
+ MYSQL_TYPE_BLOB,
+ key,
+ sizeof
(GNUNET_HashCode),
+ &h_length,
+ MYSQL_TYPE_LONG,
+ &type,
+ GNUNET_YES,
+ MYSQL_TYPE_LONGLONG,
+ &now,
+ GNUNET_YES,
+ -1))) || (-1 ==
total))
+ {
+ if (ret == GNUNET_SYSERR) itable();
+ return GNUNET_SYSERR;
+ }
if ((handler == NULL) || (total == 0))
return (int) total;
@@ -395,26 +411,27 @@
{
off = (off + 1) % total;
if ((GNUNET_OK !=
- GNUNET_MYSQL_prepared_statement_run_select (select_value,
- 2,
- rbind,
- return_ok,
- NULL,
- MYSQL_TYPE_BLOB,
- key,
- sizeof
- (GNUNET_HashCode),
- &h_length,
- MYSQL_TYPE_LONG, &type,
- GNUNET_YES,
- MYSQL_TYPE_LONGLONG,
- &now, GNUNET_YES,
- MYSQL_TYPE_LONG, &off,
- GNUNET_YES, -1))
+ (ret = GNUNET_MYSQL_prepared_statement_run_select (select_value,
+ 2,
+ rbind,
+ return_ok,
+ NULL,
+ MYSQL_TYPE_BLOB,
+ key,
+ sizeof
+ (GNUNET_HashCode),
+ &h_length,
+ MYSQL_TYPE_LONG,
&type,
+ GNUNET_YES,
+
MYSQL_TYPE_LONGLONG,
+ &now, GNUNET_YES,
+ MYSQL_TYPE_LONG,
&off,
+ GNUNET_YES, -1)))
|| (v_length != v_size))
{
GNUNET_GE_BREAK (NULL, v_length == v_size);
GNUNET_free (rbind[1].buffer);
+ if (ret == GNUNET_SYSERR) itable();
return GNUNET_SYSERR;
}
cnt++;
Modified: GNUnet/src/libs/mysql/lmysql.c
===================================================================
--- GNUnet/src/libs/mysql/lmysql.c 2008-11-09 21:35:01 UTC (rev 7871)
+++ GNUnet/src/libs/mysql/lmysql.c 2008-11-09 23:57:21 UTC (rev 7872)
@@ -489,11 +489,9 @@
}
if (mysql_stmt_prepare (ret->statement, ret->query, strlen (ret->query)))
{
- GNUNET_GE_LOG (ret->db->ectx,
- GNUNET_GE_ERROR | GNUNET_GE_BULK | GNUNET_GE_USER,
- _("`%s' failed at %s:%d with error: %s"),
- "mysql_stmt_prepare",
- __FILE__, __LINE__, mysql_stmt_error (ret->statement));
+ LOG_MYSQL (GNUNET_GE_ERROR | GNUNET_GE_BULK | GNUNET_GE_USER,
+ "mysql_stmt_prepare",
+ ret->db);
mysql_stmt_close (ret->statement);
ret->statement = NULL;
iclose ();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r7872 - in GNUnet/src: applications/dstore_mysql libs/mysql,
gnunet <=