aboutsummaryrefslogtreecommitdiff
path: root/src/datastore/plugin_datastore_mysql.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-04-15 20:12:21 +0000
committerChristian Grothoff <christian@grothoff.org>2011-04-15 20:12:21 +0000
commitae6871c097e55b61d10a66428b1c9a732a0fe803 (patch)
treeb95dd510cc8d44bf2cdd59344353de9554e36938 /src/datastore/plugin_datastore_mysql.c
parentadfeb308f7af770dd7ff16b3e5ce79943ddb6818 (diff)
downloadgnunet-ae6871c097e55b61d10a66428b1c9a732a0fe803.tar.gz
gnunet-ae6871c097e55b61d10a66428b1c9a732a0fe803.zip
fixes
Diffstat (limited to 'src/datastore/plugin_datastore_mysql.c')
-rw-r--r--src/datastore/plugin_datastore_mysql.c75
1 files changed, 18 insertions, 57 deletions
diff --git a/src/datastore/plugin_datastore_mysql.c b/src/datastore/plugin_datastore_mysql.c
index 863c55ad8..005026c92 100644
--- a/src/datastore/plugin_datastore_mysql.c
+++ b/src/datastore/plugin_datastore_mysql.c
@@ -262,28 +262,28 @@ struct Plugin
262#define DELETE_ENTRY_BY_UID "DELETE FROM gn090 WHERE uid=?" 262#define DELETE_ENTRY_BY_UID "DELETE FROM gn090 WHERE uid=?"
263 struct GNUNET_MysqlStatementHandle *delete_entry_by_uid; 263 struct GNUNET_MysqlStatementHandle *delete_entry_by_uid;
264 264
265#define COUNT_ENTRY_BY_HASH "SELECT count(*) FROM gn090 FORCE INDEX (idx_hash) WHERE hash=?" 265#define COUNT_ENTRY_BY_HASH "SELECT count(*) FROM gn090 WHERE hash=?"
266 struct GNUNET_MysqlStatementHandle *count_entry_by_hash; 266 struct GNUNET_MysqlStatementHandle *count_entry_by_hash;
267 267
268#define SELECT_ENTRY_BY_HASH "SELECT type,prio,anonLevel,expire,hash,value,uid FROM gn090 FORCE INDEX (idx_hash_uid) WHERE hash=? ORDER BY uid LIMIT 1 OFFSET ?" 268#define SELECT_ENTRY_BY_HASH "SELECT type,prio,anonLevel,expire,hash,value,uid FROM gn090 WHERE hash=? ORDER BY uid LIMIT 1 OFFSET ?"
269 struct GNUNET_MysqlStatementHandle *select_entry_by_hash; 269 struct GNUNET_MysqlStatementHandle *select_entry_by_hash;
270 270
271#define COUNT_ENTRY_BY_HASH_AND_VHASH "SELECT count(*) FROM gn090 FORCE INDEX (idx_hash_vhash) WHERE hash=? AND vhash=?" 271#define COUNT_ENTRY_BY_HASH_AND_VHASH "SELECT count(*) FROM gn090 WHERE hash=? AND vhash=?"
272 struct GNUNET_MysqlStatementHandle *count_entry_by_hash_and_vhash; 272 struct GNUNET_MysqlStatementHandle *count_entry_by_hash_and_vhash;
273 273
274#define SELECT_ENTRY_BY_HASH_AND_VHASH "SELECT type,prio,anonLevel,expire,hash,value,uid FROM gn090 FORCE INDEX (idx_hash_vhash) WHERE hash=? AND vhash=? ORDER BY uid LIMIT 1 OFFSET ?" 274#define SELECT_ENTRY_BY_HASH_AND_VHASH "SELECT type,prio,anonLevel,expire,hash,value,uid FROM gn090 WHERE hash=? AND vhash=? ORDER BY uid LIMIT 1 OFFSET ?"
275 struct GNUNET_MysqlStatementHandle *select_entry_by_hash_and_vhash; 275 struct GNUNET_MysqlStatementHandle *select_entry_by_hash_and_vhash;
276 276
277#define COUNT_ENTRY_BY_HASH_AND_TYPE "SELECT count(*) FROM gn090 FORCE INDEX (idx_hash_type_uid) WHERE hash=? AND type=?" 277#define COUNT_ENTRY_BY_HASH_AND_TYPE "SELECT count(*) FROM gn090 WHERE hash=? AND type=?"
278 struct GNUNET_MysqlStatementHandle *count_entry_by_hash_and_type; 278 struct GNUNET_MysqlStatementHandle *count_entry_by_hash_and_type;
279 279
280#define SELECT_ENTRY_BY_HASH_AND_TYPE "SELECT type,prio,anonLevel,expire,hash,value,uid FROM gn090 FORCE INDEX (idx_hash_type_uid) WHERE hash=? AND type=? ORDER BY uid LIMIT 1 OFFSET ?" 280#define SELECT_ENTRY_BY_HASH_AND_TYPE "SELECT type,prio,anonLevel,expire,hash,value,uid FROM gn090 WHERE hash=? AND type=? ORDER BY uid LIMIT 1 OFFSET ?"
281 struct GNUNET_MysqlStatementHandle *select_entry_by_hash_and_type; 281 struct GNUNET_MysqlStatementHandle *select_entry_by_hash_and_type;
282 282
283#define COUNT_ENTRY_BY_HASH_VHASH_AND_TYPE "SELECT count(*) FROM gn090 FORCE INDEX (idx_hash_vhash) WHERE hash=? AND vhash=? AND type=?" 283#define COUNT_ENTRY_BY_HASH_VHASH_AND_TYPE "SELECT count(*) FROM gn090 WHERE hash=? AND vhash=? AND type=?"
284 struct GNUNET_MysqlStatementHandle *count_entry_by_hash_vhash_and_type; 284 struct GNUNET_MysqlStatementHandle *count_entry_by_hash_vhash_and_type;
285 285
286#define SELECT_ENTRY_BY_HASH_VHASH_AND_TYPE "SELECT type,prio,anonLevel,expire,hash,value,uid FROM gn090 FORCE INDEX (idx_hash_vhash) WHERE hash=? AND vhash=? AND type=? ORDER BY uid ASC LIMIT 1 OFFSET ?" 286#define SELECT_ENTRY_BY_HASH_VHASH_AND_TYPE "SELECT type,prio,anonLevel,expire,hash,value,uid FROM gn090 WHERE hash=? AND vhash=? AND type=? ORDER BY uid ASC LIMIT 1 OFFSET ?"
287 struct GNUNET_MysqlStatementHandle *select_entry_by_hash_vhash_and_type; 287 struct GNUNET_MysqlStatementHandle *select_entry_by_hash_vhash_and_type;
288 288
289#define UPDATE_ENTRY "UPDATE gn090 SET prio=prio+?,expire=IF(expire>=?,expire,?) WHERE uid=?" 289#define UPDATE_ENTRY "UPDATE gn090 SET prio=prio+?,expire=IF(expire>=?,expire,?) WHERE uid=?"
@@ -295,16 +295,16 @@ struct Plugin
295#define SELECT_SIZE "SELECT SUM(BIT_LENGTH(value) DIV 8) FROM gn090" 295#define SELECT_SIZE "SELECT SUM(BIT_LENGTH(value) DIV 8) FROM gn090"
296 struct GNUNET_MysqlStatementHandle *get_size; 296 struct GNUNET_MysqlStatementHandle *get_size;
297 297
298#define SELECT_IT_NON_ANONYMOUS "SELECT type,prio,anonLevel,expire,hash,value,uid FROM gn090 FORCE INDEX(idx_anonLevel_uid) WHERE anonLevel=0 ORDER BY uid DESC LIMIT 1 OFFSET ?" 298#define SELECT_IT_NON_ANONYMOUS "SELECT type,prio,anonLevel,expire,hash,value,uid FROM gn090 WHERE anonLevel=0 ORDER BY uid DESC LIMIT 1 OFFSET ?"
299 struct GNUNET_MysqlStatementHandle *zero_iter; 299 struct GNUNET_MysqlStatementHandle *zero_iter;
300 300
301#define SELECT_IT_EXPIRATION "(SELECT type,prio,anonLevel,expire,hash,value,uid FROM gn090 FORCE INDEX(idx_expire_prio) WHERE expire < ? ORDER BY prio ASC LIMIT 1) "\ 301#define SELECT_IT_EXPIRATION "(SELECT type,prio,anonLevel,expire,hash,value,uid FROM gn090 WHERE expire < ? ORDER BY prio ASC LIMIT 1) "\
302 "UNION "\ 302 "UNION "\
303 "(SELECT type,prio,anonLevel,expire,hash,value,uid FROM gn090 FORCE INDEX(idx_prio) ORDER BY prio ASC LIMIT 1) "\ 303 "(SELECT type,prio,anonLevel,expire,hash,value,uid FROM gn090 ORDER BY prio ASC LIMIT 1) "\
304 "ORDER BY expire ASC LIMIT 1" 304 "ORDER BY expire ASC LIMIT 1"
305 struct GNUNET_MysqlStatementHandle *select_expiration; 305 struct GNUNET_MysqlStatementHandle *select_expiration;
306 306
307#define SELECT_IT_REPLICATION "SELECT type,prio,anonLevel,expire,hash,value,uid FROM gn090 FORCE INDEX(idx_repl) ORDER BY repl DESC,RAND() LIMIT 1" 307#define SELECT_IT_REPLICATION "SELECT type,prio,anonLevel,expire,hash,value,uid FROM gn090 ORDER BY repl DESC,RAND() LIMIT 1"
308 struct GNUNET_MysqlStatementHandle *select_replication; 308 struct GNUNET_MysqlStatementHandle *select_replication;
309 309
310}; 310};
@@ -866,7 +866,6 @@ return_ok (void *cls,
866 unsigned int num_values, 866 unsigned int num_values,
867 MYSQL_BIND *values) 867 MYSQL_BIND *values)
868{ 868{
869 fprintf (stderr, "Here: %u\n", num_values);
870 return GNUNET_OK; 869 return GNUNET_OK;
871} 870}
872 871
@@ -948,16 +947,6 @@ mysql_plugin_put (void *cls,
948 hashSize2 = sizeof (GNUNET_HashCode); 947 hashSize2 = sizeof (GNUNET_HashCode);
949 lsize = size; 948 lsize = size;
950 GNUNET_CRYPTO_hash (data, size, &vhash); 949 GNUNET_CRYPTO_hash (data, size, &vhash);
951 {
952 fprintf (stderr,
953 "inserting content with key `%s'\n",
954 GNUNET_h2s (key));
955 fprintf (stderr,
956 "inserting %u-byte content with vhash `%s'\n",
957 (unsigned int) size,
958 GNUNET_h2s (&vhash));
959 }
960
961 if (GNUNET_OK != 950 if (GNUNET_OK !=
962 prepared_statement_run (plugin, 951 prepared_statement_run (plugin,
963 plugin->insert_entry, 952 plugin->insert_entry,
@@ -1128,19 +1117,6 @@ mysql_next_request_cont (void *next_cls,
1128 exp); 1117 exp);
1129#endif 1118#endif
1130 expiration.abs_value = exp; 1119 expiration.abs_value = exp;
1131
1132 {
1133 GNUNET_HashCode vh;
1134
1135 GNUNET_CRYPTO_hash (value, size, &vh);
1136 fprintf (stderr,
1137 "found content under with key `%s'\n",
1138 GNUNET_h2s (&key));
1139 fprintf (stderr,
1140 "found %u-byte content with vhash `%s'\n",
1141 (unsigned int) size,
1142 GNUNET_h2s (&vh));
1143}
1144 ret = nrc->dviter (nrc->dviter_cls, 1120 ret = nrc->dviter (nrc->dviter_cls,
1145 (nrc->one_shot == GNUNET_YES) ? NULL : nrc, 1121 (nrc->one_shot == GNUNET_YES) ? NULL : nrc,
1146 &key, 1122 &key,
@@ -1279,12 +1255,6 @@ get_statement_prepare (void *cls,
1279 { 1255 {
1280 if (gc->have_vhash) 1256 if (gc->have_vhash)
1281 { 1257 {
1282 fprintf (stderr,
1283 "Select by key `%s'\n",
1284 GNUNET_h2s (&gc->key));
1285 fprintf (stderr,
1286 "Select by vhash `%s'\n",
1287 GNUNET_h2s (&gc->vhash));
1288 ret = 1258 ret =
1289 prepared_statement_run_select (plugin, 1259 prepared_statement_run_select (plugin,
1290 plugin->select_entry_by_hash_and_vhash, 1260 plugin->select_entry_by_hash_and_vhash,
@@ -1385,12 +1355,6 @@ mysql_plugin_get (void *cls,
1385 { 1355 {
1386 if (vhash != NULL) 1356 if (vhash != NULL)
1387 { 1357 {
1388 fprintf (stderr,
1389 "Count by key `%s'\n",
1390 GNUNET_h2s (key));
1391 fprintf (stderr,
1392 "Count by vhash `%s'\n",
1393 GNUNET_h2s (vhash));
1394 ret = 1358 ret =
1395 prepared_statement_run_select (plugin, 1359 prepared_statement_run_select (plugin,
1396 plugin->count_entry_by_hash_and_vhash, 1360 plugin->count_entry_by_hash_and_vhash,
@@ -1412,12 +1376,6 @@ mysql_plugin_get (void *cls,
1412 -1); 1376 -1);
1413 } 1377 }
1414 } 1378 }
1415 fprintf (stderr,
1416 "Got %u results (ret: %d / `%s')\n",
1417 (unsigned int) total,
1418 ret,
1419 mysql_error (plugin->dbf));
1420
1421 if ((ret != GNUNET_OK) || (0 >= total)) 1379 if ((ret != GNUNET_OK) || (0 >= total))
1422 { 1380 {
1423 iter (iter_cls, 1381 iter (iter_cls,
@@ -1592,6 +1550,7 @@ repl_iter (void *cls,
1592 struct Plugin *plugin = rc->plugin; 1550 struct Plugin *plugin = rc->plugin;
1593 unsigned long long oid; 1551 unsigned long long oid;
1594 int ret; 1552 int ret;
1553 int iret;
1595 1554
1596 ret = rc->iter (rc->iter_cls, 1555 ret = rc->iter (rc->iter_cls,
1597 next_cls, key, 1556 next_cls, key,
@@ -1601,12 +1560,12 @@ repl_iter (void *cls,
1601 if (NULL != key) 1560 if (NULL != key)
1602 { 1561 {
1603 oid = (unsigned long long) uid; 1562 oid = (unsigned long long) uid;
1604 ret = prepared_statement_run (plugin, 1563 iret = prepared_statement_run (plugin,
1605 plugin->dec_repl, 1564 plugin->dec_repl,
1606 NULL, 1565 NULL,
1607 MYSQL_TYPE_LONGLONG, &oid, GNUNET_YES, 1566 MYSQL_TYPE_LONGLONG, &oid, GNUNET_YES,
1608 -1); 1567 -1);
1609 if (ret == GNUNET_SYSERR) 1568 if (iret == GNUNET_SYSERR)
1610 { 1569 {
1611 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, 1570 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
1612 "Failed to reduce replication counter\n"); 1571 "Failed to reduce replication counter\n");
@@ -1761,7 +1720,8 @@ libgnunet_plugin_datastore_mysql_init (void *cls)
1761 " vhash BINARY(64) NOT NULL DEFAULT ''," 1720 " vhash BINARY(64) NOT NULL DEFAULT '',"
1762 " value BLOB NOT NULL DEFAULT ''," 1721 " value BLOB NOT NULL DEFAULT '',"
1763 " uid BIGINT NOT NULL AUTO_INCREMENT," 1722 " uid BIGINT NOT NULL AUTO_INCREMENT,"
1764 " PRIMARY KEY (uid)," 1723 " PRIMARY KEY (uid)"
1724#if 0
1765 " INDEX idx_hash (hash(64))," 1725 " INDEX idx_hash (hash(64)),"
1766 " INDEX idx_hash_uid (hash(64),uid)," 1726 " INDEX idx_hash_uid (hash(64),uid),"
1767 " INDEX idx_hash_vhash (hash(64),vhash(64))," 1727 " INDEX idx_hash_vhash (hash(64),vhash(64)),"
@@ -1770,6 +1730,7 @@ libgnunet_plugin_datastore_mysql_init (void *cls)
1770 " INDEX idx_repl (repl)," 1730 " INDEX idx_repl (repl),"
1771 " INDEX idx_expire_prio (expire,prio)," 1731 " INDEX idx_expire_prio (expire,prio),"
1772 " INDEX idx_anonLevel_uid (anonLevel,uid)" 1732 " INDEX idx_anonLevel_uid (anonLevel,uid)"
1733#endif
1773 ") ENGINE=InnoDB") || 1734 ") ENGINE=InnoDB") ||
1774 MRUNS ("SET AUTOCOMMIT = 1") || 1735 MRUNS ("SET AUTOCOMMIT = 1") ||
1775 PINIT (plugin->insert_entry, INSERT_ENTRY) || 1736 PINIT (plugin->insert_entry, INSERT_ENTRY) ||