diff options
Diffstat (limited to 'src/datacache/plugin_datacache_mysql.c')
-rw-r--r-- | src/datacache/plugin_datacache_mysql.c | 247 |
1 files changed, 93 insertions, 154 deletions
diff --git a/src/datacache/plugin_datacache_mysql.c b/src/datacache/plugin_datacache_mysql.c index f4530ccef..62787eea6 100644 --- a/src/datacache/plugin_datacache_mysql.c +++ b/src/datacache/plugin_datacache_mysql.c | |||
@@ -222,8 +222,8 @@ get_my_cnf_path (const struct GNUNET_CONFIGURATION_Handle *cfg) | |||
222 | #endif | 222 | #endif |
223 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 223 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
224 | _("Trying to use file `%s' for MySQL configuration.\n"), cnffile); | 224 | _("Trying to use file `%s' for MySQL configuration.\n"), cnffile); |
225 | if ((0 != STAT (cnffile, &st)) || | 225 | if ((0 != STAT (cnffile, &st)) || (0 != ACCESS (cnffile, R_OK)) || |
226 | (0 != ACCESS (cnffile, R_OK)) || (!S_ISREG (st.st_mode))) | 226 | (!S_ISREG (st.st_mode))) |
227 | { | 227 | { |
228 | if (configured == GNUNET_YES) | 228 | if (configured == GNUNET_YES) |
229 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 229 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
@@ -303,9 +303,9 @@ iopen (struct Plugin *ret) | |||
303 | mysql_options (ret->dbf, MYSQL_OPT_READ_TIMEOUT, (const void *) &timeout); | 303 | mysql_options (ret->dbf, MYSQL_OPT_READ_TIMEOUT, (const void *) &timeout); |
304 | mysql_options (ret->dbf, MYSQL_OPT_WRITE_TIMEOUT, (const void *) &timeout); | 304 | mysql_options (ret->dbf, MYSQL_OPT_WRITE_TIMEOUT, (const void *) &timeout); |
305 | mysql_dbname = NULL; | 305 | mysql_dbname = NULL; |
306 | if (GNUNET_YES == GNUNET_CONFIGURATION_have_value (ret->env->cfg, | 306 | if (GNUNET_YES == |
307 | "datacache-mysql", | 307 | GNUNET_CONFIGURATION_have_value (ret->env->cfg, "datacache-mysql", |
308 | "DATABASE")) | 308 | "DATABASE")) |
309 | GNUNET_assert (GNUNET_OK == | 309 | GNUNET_assert (GNUNET_OK == |
310 | GNUNET_CONFIGURATION_get_value_string (ret->env->cfg, | 310 | GNUNET_CONFIGURATION_get_value_string (ret->env->cfg, |
311 | "datacache-mysql", | 311 | "datacache-mysql", |
@@ -314,8 +314,9 @@ iopen (struct Plugin *ret) | |||
314 | else | 314 | else |
315 | mysql_dbname = GNUNET_strdup ("gnunet"); | 315 | mysql_dbname = GNUNET_strdup ("gnunet"); |
316 | mysql_user = NULL; | 316 | mysql_user = NULL; |
317 | if (GNUNET_YES == GNUNET_CONFIGURATION_have_value (ret->env->cfg, | 317 | if (GNUNET_YES == |
318 | "datacache-mysql", "USER")) | 318 | GNUNET_CONFIGURATION_have_value (ret->env->cfg, "datacache-mysql", |
319 | "USER")) | ||
319 | { | 320 | { |
320 | GNUNET_assert (GNUNET_OK == | 321 | GNUNET_assert (GNUNET_OK == |
321 | GNUNET_CONFIGURATION_get_value_string (ret->env->cfg, | 322 | GNUNET_CONFIGURATION_get_value_string (ret->env->cfg, |
@@ -323,9 +324,9 @@ iopen (struct Plugin *ret) | |||
323 | "USER", &mysql_user)); | 324 | "USER", &mysql_user)); |
324 | } | 325 | } |
325 | mysql_password = NULL; | 326 | mysql_password = NULL; |
326 | if (GNUNET_YES == GNUNET_CONFIGURATION_have_value (ret->env->cfg, | 327 | if (GNUNET_YES == |
327 | "datacache-mysql", | 328 | GNUNET_CONFIGURATION_have_value (ret->env->cfg, "datacache-mysql", |
328 | "PASSWORD")) | 329 | "PASSWORD")) |
329 | { | 330 | { |
330 | GNUNET_assert (GNUNET_OK == | 331 | GNUNET_assert (GNUNET_OK == |
331 | GNUNET_CONFIGURATION_get_value_string (ret->env->cfg, | 332 | GNUNET_CONFIGURATION_get_value_string (ret->env->cfg, |
@@ -334,8 +335,9 @@ iopen (struct Plugin *ret) | |||
334 | &mysql_password)); | 335 | &mysql_password)); |
335 | } | 336 | } |
336 | mysql_server = NULL; | 337 | mysql_server = NULL; |
337 | if (GNUNET_YES == GNUNET_CONFIGURATION_have_value (ret->env->cfg, | 338 | if (GNUNET_YES == |
338 | "datacache-mysql", "HOST")) | 339 | GNUNET_CONFIGURATION_have_value (ret->env->cfg, "datacache-mysql", |
340 | "HOST")) | ||
339 | { | 341 | { |
340 | GNUNET_assert (GNUNET_OK == | 342 | GNUNET_assert (GNUNET_OK == |
341 | GNUNET_CONFIGURATION_get_value_string (ret->env->cfg, | 343 | GNUNET_CONFIGURATION_get_value_string (ret->env->cfg, |
@@ -344,8 +346,9 @@ iopen (struct Plugin *ret) | |||
344 | &mysql_server)); | 346 | &mysql_server)); |
345 | } | 347 | } |
346 | mysql_port = 0; | 348 | mysql_port = 0; |
347 | if (GNUNET_YES == GNUNET_CONFIGURATION_have_value (ret->env->cfg, | 349 | if (GNUNET_YES == |
348 | "datacache-mysql", "PORT")) | 350 | GNUNET_CONFIGURATION_have_value (ret->env->cfg, "datacache-mysql", |
351 | "PORT")) | ||
349 | { | 352 | { |
350 | GNUNET_assert (GNUNET_OK == | 353 | GNUNET_assert (GNUNET_OK == |
351 | GNUNET_CONFIGURATION_get_value_number (ret->env->cfg, | 354 | GNUNET_CONFIGURATION_get_value_number (ret->env->cfg, |
@@ -450,8 +453,8 @@ prepare_statement (struct Plugin *plugin, | |||
450 | * @return GNUNET_SYSERR on error, GNUNET_OK on success | 453 | * @return GNUNET_SYSERR on error, GNUNET_OK on success |
451 | */ | 454 | */ |
452 | static int | 455 | static int |
453 | init_params (struct Plugin *plugin, | 456 | init_params (struct Plugin *plugin, struct GNUNET_MysqlStatementHandle *s, |
454 | struct GNUNET_MysqlStatementHandle *s, va_list ap) | 457 | va_list ap) |
455 | { | 458 | { |
456 | MYSQL_BIND qbind[MAX_PARAM]; | 459 | MYSQL_BIND qbind[MAX_PARAM]; |
457 | unsigned int pc; | 460 | unsigned int pc; |
@@ -512,8 +515,8 @@ init_params (struct Plugin *plugin, | |||
512 | { | 515 | { |
513 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 516 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
514 | _("`%s' failed at %s:%d with error: %s\n"), | 517 | _("`%s' failed at %s:%d with error: %s\n"), |
515 | "mysql_stmt_bind_param", | 518 | "mysql_stmt_bind_param", __FILE__, __LINE__, |
516 | __FILE__, __LINE__, mysql_stmt_error (s->statement)); | 519 | mysql_stmt_error (s->statement)); |
517 | iclose (plugin); | 520 | iclose (plugin); |
518 | return GNUNET_SYSERR; | 521 | return GNUNET_SYSERR; |
519 | } | 522 | } |
@@ -521,8 +524,8 @@ init_params (struct Plugin *plugin, | |||
521 | { | 524 | { |
522 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 525 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
523 | _("`%s' failed at %s:%d with error: %s\n"), | 526 | _("`%s' failed at %s:%d with error: %s\n"), |
524 | "mysql_stmt_execute", | 527 | "mysql_stmt_execute", __FILE__, __LINE__, |
525 | __FILE__, __LINE__, mysql_stmt_error (s->statement)); | 528 | mysql_stmt_error (s->statement)); |
526 | iclose (plugin); | 529 | iclose (plugin); |
527 | return GNUNET_SYSERR; | 530 | return GNUNET_SYSERR; |
528 | } | 531 | } |
@@ -538,8 +541,7 @@ init_params (struct Plugin *plugin, | |||
538 | * @param values values returned by MySQL | 541 | * @param values values returned by MySQL |
539 | * @return GNUNET_OK to continue iterating, GNUNET_SYSERR to abort | 542 | * @return GNUNET_OK to continue iterating, GNUNET_SYSERR to abort |
540 | */ | 543 | */ |
541 | typedef int (*GNUNET_MysqlDataProcessor) (void *cls, | 544 | typedef int (*GNUNET_MysqlDataProcessor) (void *cls, unsigned int num_values, |
542 | unsigned int num_values, | ||
543 | MYSQL_BIND * values); | 545 | MYSQL_BIND * values); |
544 | 546 | ||
545 | 547 | ||
@@ -561,12 +563,10 @@ typedef int (*GNUNET_MysqlDataProcessor) (void *cls, | |||
561 | */ | 563 | */ |
562 | static int | 564 | static int |
563 | prepared_statement_run_select (struct Plugin *plugin, | 565 | prepared_statement_run_select (struct Plugin *plugin, |
564 | struct GNUNET_MysqlStatementHandle | 566 | struct GNUNET_MysqlStatementHandle *s, |
565 | *s, | 567 | unsigned int result_size, MYSQL_BIND * results, |
566 | unsigned int result_size, | 568 | GNUNET_MysqlDataProcessor processor, |
567 | MYSQL_BIND * results, | 569 | void *processor_cls, ...) |
568 | GNUNET_MysqlDataProcessor | ||
569 | processor, void *processor_cls, ...) | ||
570 | { | 570 | { |
571 | va_list ap; | 571 | va_list ap; |
572 | int ret; | 572 | int ret; |
@@ -596,8 +596,8 @@ prepared_statement_run_select (struct Plugin *plugin, | |||
596 | { | 596 | { |
597 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 597 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
598 | _("`%s' failed at %s:%d with error: %s\n"), | 598 | _("`%s' failed at %s:%d with error: %s\n"), |
599 | "mysql_stmt_bind_result", | 599 | "mysql_stmt_bind_result", __FILE__, __LINE__, |
600 | __FILE__, __LINE__, mysql_stmt_error (s->statement)); | 600 | mysql_stmt_error (s->statement)); |
601 | iclose (plugin); | 601 | iclose (plugin); |
602 | return GNUNET_SYSERR; | 602 | return GNUNET_SYSERR; |
603 | } | 603 | } |
@@ -612,8 +612,8 @@ prepared_statement_run_select (struct Plugin *plugin, | |||
612 | { | 612 | { |
613 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 613 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
614 | _("`%s' failed at %s:%d with error: %s\n"), | 614 | _("`%s' failed at %s:%d with error: %s\n"), |
615 | "mysql_stmt_fetch", | 615 | "mysql_stmt_fetch", __FILE__, __LINE__, |
616 | __FILE__, __LINE__, mysql_stmt_error (s->statement)); | 616 | mysql_stmt_error (s->statement)); |
617 | iclose (plugin); | 617 | iclose (plugin); |
618 | return GNUNET_SYSERR; | 618 | return GNUNET_SYSERR; |
619 | } | 619 | } |
@@ -676,17 +676,17 @@ static int | |||
676 | itable (struct Plugin *plugin) | 676 | itable (struct Plugin *plugin) |
677 | { | 677 | { |
678 | #define MRUNS(a) (GNUNET_OK != run_statement (plugin, a) ) | 678 | #define MRUNS(a) (GNUNET_OK != run_statement (plugin, a) ) |
679 | if (MRUNS ("CREATE TEMPORARY TABLE gn080dstore (" | 679 | if (MRUNS |
680 | " type INT(11) UNSIGNED NOT NULL DEFAULT 0," | 680 | ("CREATE TEMPORARY TABLE gn080dstore (" |
681 | " puttime BIGINT UNSIGNED NOT NULL DEFAULT 0," | 681 | " type INT(11) UNSIGNED NOT NULL DEFAULT 0," |
682 | " expire BIGINT UNSIGNED NOT NULL DEFAULT 0," | 682 | " puttime BIGINT UNSIGNED NOT NULL DEFAULT 0," |
683 | " hash BINARY(64) NOT NULL DEFAULT ''," | 683 | " expire BIGINT UNSIGNED NOT NULL DEFAULT 0," |
684 | " vhash BINARY(64) NOT NULL DEFAULT ''," | 684 | " hash BINARY(64) NOT NULL DEFAULT ''," |
685 | " value BLOB NOT NULL DEFAULT ''," | 685 | " vhash BINARY(64) NOT NULL DEFAULT ''," |
686 | " INDEX hashidx (hash(64),type,expire)," | 686 | " value BLOB NOT NULL DEFAULT ''," |
687 | " INDEX allidx (hash(64),vhash(64),type)," | 687 | " INDEX hashidx (hash(64),type,expire)," |
688 | " INDEX expireidx (puttime)" ") ENGINE=InnoDB") || | 688 | " INDEX allidx (hash(64),vhash(64),type)," " INDEX expireidx (puttime)" |
689 | MRUNS ("SET AUTOCOMMIT = 1")) | 689 | ") ENGINE=InnoDB") || MRUNS ("SET AUTOCOMMIT = 1")) |
690 | return GNUNET_SYSERR; | 690 | return GNUNET_SYSERR; |
691 | #undef MRUNS | 691 | #undef MRUNS |
692 | #define PINIT(a,b) (NULL == (a = prepared_statement_create(plugin, b))) | 692 | #define PINIT(a,b) (NULL == (a = prepared_statement_create(plugin, b))) |
@@ -714,11 +714,8 @@ itable (struct Plugin *plugin) | |||
714 | * @return 0 on error, number of bytes used otherwise | 714 | * @return 0 on error, number of bytes used otherwise |
715 | */ | 715 | */ |
716 | static size_t | 716 | static size_t |
717 | mysql_plugin_put (void *cls, | 717 | mysql_plugin_put (void *cls, const GNUNET_HashCode * key, size_t size, |
718 | const GNUNET_HashCode * key, | 718 | const char *data, enum GNUNET_BLOCK_Type type, |
719 | size_t size, | ||
720 | const char *data, | ||
721 | enum GNUNET_BLOCK_Type type, | ||
722 | struct GNUNET_TIME_Absolute discard_time) | 719 | struct GNUNET_TIME_Absolute discard_time) |
723 | { | 720 | { |
724 | struct Plugin *plugin = cls; | 721 | struct Plugin *plugin = cls; |
@@ -745,23 +742,12 @@ mysql_plugin_put (void *cls, | |||
745 | v_now = (unsigned long long) now.abs_value; | 742 | v_now = (unsigned long long) now.abs_value; |
746 | v_discard_time = (unsigned long long) discard_time.abs_value; | 743 | v_discard_time = (unsigned long long) discard_time.abs_value; |
747 | if (GNUNET_OK == | 744 | if (GNUNET_OK == |
748 | prepared_statement_run (plugin, | 745 | prepared_statement_run (plugin, plugin->update_value, NULL, |
749 | plugin->update_value, | 746 | MYSQL_TYPE_LONGLONG, &v_now, GNUNET_YES, |
750 | NULL, | 747 | MYSQL_TYPE_LONGLONG, &v_discard_time, GNUNET_YES, |
751 | MYSQL_TYPE_LONGLONG, | 748 | MYSQL_TYPE_BLOB, key, sizeof (GNUNET_HashCode), |
752 | &v_now, | 749 | &k_length, MYSQL_TYPE_BLOB, &vhash, |
753 | GNUNET_YES, | 750 | sizeof (GNUNET_HashCode), &h_length, |
754 | MYSQL_TYPE_LONGLONG, | ||
755 | &v_discard_time, | ||
756 | GNUNET_YES, | ||
757 | MYSQL_TYPE_BLOB, | ||
758 | key, | ||
759 | sizeof (GNUNET_HashCode), | ||
760 | &k_length, | ||
761 | MYSQL_TYPE_BLOB, | ||
762 | &vhash, | ||
763 | sizeof (GNUNET_HashCode), | ||
764 | &h_length, | ||
765 | MYSQL_TYPE_LONG, &v_type, GNUNET_YES, -1)) | 751 | MYSQL_TYPE_LONG, &v_type, GNUNET_YES, -1)) |
766 | return GNUNET_OK; | 752 | return GNUNET_OK; |
767 | 753 | ||
@@ -770,29 +756,16 @@ mysql_plugin_put (void *cls, | |||
770 | k_length = sizeof (GNUNET_HashCode); | 756 | k_length = sizeof (GNUNET_HashCode); |
771 | v_length = size; | 757 | v_length = size; |
772 | if (GNUNET_OK != | 758 | if (GNUNET_OK != |
773 | (ret = prepared_statement_run (plugin, | 759 | (ret = |
774 | plugin->insert_value, | 760 | prepared_statement_run (plugin, plugin->insert_value, NULL, |
775 | NULL, | 761 | MYSQL_TYPE_LONG, &type, GNUNET_YES, |
776 | MYSQL_TYPE_LONG, | 762 | MYSQL_TYPE_LONGLONG, &v_now, GNUNET_YES, |
777 | &type, | 763 | MYSQL_TYPE_LONGLONG, &v_discard_time, GNUNET_YES, |
778 | GNUNET_YES, | 764 | MYSQL_TYPE_BLOB, key, sizeof (GNUNET_HashCode), |
779 | MYSQL_TYPE_LONGLONG, | 765 | &k_length, MYSQL_TYPE_BLOB, &vhash, |
780 | &v_now, | 766 | sizeof (GNUNET_HashCode), &h_length, |
781 | GNUNET_YES, | 767 | MYSQL_TYPE_BLOB, data, (unsigned long) size, |
782 | MYSQL_TYPE_LONGLONG, | 768 | &v_length, -1))) |
783 | &v_discard_time, | ||
784 | GNUNET_YES, | ||
785 | MYSQL_TYPE_BLOB, | ||
786 | key, | ||
787 | sizeof (GNUNET_HashCode), | ||
788 | &k_length, | ||
789 | MYSQL_TYPE_BLOB, | ||
790 | &vhash, | ||
791 | sizeof (GNUNET_HashCode), | ||
792 | &h_length, | ||
793 | MYSQL_TYPE_BLOB, | ||
794 | data, | ||
795 | (unsigned long) size, &v_length, -1))) | ||
796 | { | 769 | { |
797 | if (ret == GNUNET_SYSERR) | 770 | if (ret == GNUNET_SYSERR) |
798 | itable (plugin); | 771 | itable (plugin); |
@@ -821,10 +794,9 @@ return_ok (void *cls, unsigned int num_values, MYSQL_BIND * values) | |||
821 | * @return the number of results found | 794 | * @return the number of results found |
822 | */ | 795 | */ |
823 | static unsigned int | 796 | static unsigned int |
824 | mysql_plugin_get (void *cls, | 797 | mysql_plugin_get (void *cls, const GNUNET_HashCode * key, |
825 | const GNUNET_HashCode * key, | 798 | enum GNUNET_BLOCK_Type type, GNUNET_DATACACHE_Iterator iter, |
826 | enum GNUNET_BLOCK_Type type, | 799 | void *iter_cls) |
827 | GNUNET_DATACACHE_Iterator iter, void *iter_cls) | ||
828 | { | 800 | { |
829 | struct Plugin *plugin = cls; | 801 | struct Plugin *plugin = cls; |
830 | MYSQL_BIND rbind[3]; | 802 | MYSQL_BIND rbind[3]; |
@@ -852,22 +824,13 @@ mysql_plugin_get (void *cls, | |||
852 | v_type = type; | 824 | v_type = type; |
853 | v_now = (unsigned long long) now.abs_value; | 825 | v_now = (unsigned long long) now.abs_value; |
854 | if ((GNUNET_OK != | 826 | if ((GNUNET_OK != |
855 | (ret = prepared_statement_run_select (plugin, | 827 | (ret = |
856 | plugin->count_value, | 828 | prepared_statement_run_select (plugin, plugin->count_value, 1, rbind, |
857 | 1, | 829 | return_ok, NULL, MYSQL_TYPE_BLOB, key, |
858 | rbind, | 830 | sizeof (GNUNET_HashCode), &h_length, |
859 | return_ok, | 831 | MYSQL_TYPE_LONG, &v_type, GNUNET_YES, |
860 | NULL, | 832 | MYSQL_TYPE_LONGLONG, &v_now, GNUNET_YES, |
861 | MYSQL_TYPE_BLOB, | 833 | -1))) || (-1 == total)) |
862 | key, | ||
863 | sizeof | ||
864 | (GNUNET_HashCode), | ||
865 | &h_length, | ||
866 | MYSQL_TYPE_LONG, | ||
867 | &v_type, GNUNET_YES, | ||
868 | MYSQL_TYPE_LONGLONG, | ||
869 | &v_now, GNUNET_YES, | ||
870 | -1))) || (-1 == total)) | ||
871 | { | 834 | { |
872 | if (ret == GNUNET_SYSERR) | 835 | if (ret == GNUNET_SYSERR) |
873 | itable (plugin); | 836 | itable (plugin); |
@@ -890,25 +853,13 @@ mysql_plugin_get (void *cls, | |||
890 | rbind[1].buffer = &v_expire; | 853 | rbind[1].buffer = &v_expire; |
891 | off = (off + 1) % total; | 854 | off = (off + 1) % total; |
892 | if (GNUNET_OK != | 855 | if (GNUNET_OK != |
893 | (ret = prepared_statement_run_select (plugin, | 856 | (ret = |
894 | plugin->select_value, | 857 | prepared_statement_run_select (plugin, plugin->select_value, 2, rbind, |
895 | 2, | 858 | return_ok, NULL, MYSQL_TYPE_BLOB, key, |
896 | rbind, | 859 | sizeof (GNUNET_HashCode), &h_length, |
897 | return_ok, | 860 | MYSQL_TYPE_LONG, &v_type, GNUNET_YES, |
898 | NULL, | 861 | MYSQL_TYPE_LONGLONG, &v_now, GNUNET_YES, |
899 | MYSQL_TYPE_BLOB, | 862 | MYSQL_TYPE_LONG, &off, GNUNET_YES, -1))) |
900 | key, | ||
901 | sizeof | ||
902 | (GNUNET_HashCode), | ||
903 | &h_length, | ||
904 | MYSQL_TYPE_LONG, | ||
905 | &v_type, | ||
906 | GNUNET_YES, | ||
907 | MYSQL_TYPE_LONGLONG, | ||
908 | &v_now, | ||
909 | GNUNET_YES, | ||
910 | MYSQL_TYPE_LONG, | ||
911 | &off, GNUNET_YES, -1))) | ||
912 | { | 863 | { |
913 | if (ret == GNUNET_SYSERR) | 864 | if (ret == GNUNET_SYSERR) |
914 | itable (plugin); | 865 | itable (plugin); |
@@ -965,32 +916,20 @@ mysql_plugin_del (void *cls) | |||
965 | rbind[3].length = &v_length; | 916 | rbind[3].length = &v_length; |
966 | rbind[3].buffer = buffer; | 917 | rbind[3].buffer = buffer; |
967 | if ((GNUNET_OK != | 918 | if ((GNUNET_OK != |
968 | (ret = prepared_statement_run_select (plugin, | 919 | (ret = |
969 | plugin->select_old_value, | 920 | prepared_statement_run_select (plugin, plugin->select_old_value, 4, |
970 | 4, | 921 | rbind, return_ok, NULL, -1))) || |
971 | rbind, | ||
972 | return_ok, | ||
973 | NULL, | ||
974 | -1))) || | ||
975 | (GNUNET_OK != | 922 | (GNUNET_OK != |
976 | (ret = prepared_statement_run (plugin, | 923 | (ret = |
977 | plugin->delete_value, | 924 | prepared_statement_run (plugin, plugin->delete_value, NULL, |
978 | NULL, | 925 | MYSQL_TYPE_BLOB, &v_key, |
979 | MYSQL_TYPE_BLOB, | 926 | sizeof (GNUNET_HashCode), &k_length, |
980 | &v_key, | 927 | MYSQL_TYPE_BLOB, &vhash, |
981 | sizeof (GNUNET_HashCode), | 928 | sizeof (GNUNET_HashCode), &h_length, |
982 | &k_length, | 929 | MYSQL_TYPE_LONG, &v_type, GNUNET_YES, |
983 | MYSQL_TYPE_BLOB, | 930 | MYSQL_TYPE_BLOB, buffer, |
984 | &vhash, | 931 | (unsigned long) sizeof (buffer), &v_length, |
985 | sizeof (GNUNET_HashCode), | 932 | -1)))) |
986 | &h_length, | ||
987 | MYSQL_TYPE_LONG, | ||
988 | &v_type, | ||
989 | GNUNET_YES, | ||
990 | MYSQL_TYPE_BLOB, | ||
991 | buffer, | ||
992 | (unsigned long) | ||
993 | sizeof (buffer), &v_length, -1)))) | ||
994 | { | 933 | { |
995 | if (ret == GNUNET_SYSERR) | 934 | if (ret == GNUNET_SYSERR) |
996 | itable (plugin); | 935 | itable (plugin); |
@@ -1036,8 +975,8 @@ libgnunet_plugin_datacache_mysql_init (void *cls) | |||
1036 | api->get = &mysql_plugin_get; | 975 | api->get = &mysql_plugin_get; |
1037 | api->put = &mysql_plugin_put; | 976 | api->put = &mysql_plugin_put; |
1038 | api->del = &mysql_plugin_del; | 977 | api->del = &mysql_plugin_del; |
1039 | GNUNET_log_from (GNUNET_ERROR_TYPE_INFO, | 978 | GNUNET_log_from (GNUNET_ERROR_TYPE_INFO, "mysql", |
1040 | "mysql", _("MySQL datacache running\n")); | 979 | _("MySQL datacache running\n")); |
1041 | return api; | 980 | return api; |
1042 | } | 981 | } |
1043 | 982 | ||