From 4205e6581868260d54c91db8544ae02653a7a284 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Mon, 10 Oct 2016 22:59:27 +0000 Subject: [PATCH] psycstore: sync postgres plugin with mysql, fix indention --- src/psycstore/plugin_psycstore_postgres.c | 249 +++++++++++----------- 1 file changed, 122 insertions(+), 127 deletions(-) diff --git a/src/psycstore/plugin_psycstore_postgres.c b/src/psycstore/plugin_psycstore_postgres.c index 1111da895..2bf7e894e 100644 --- a/src/psycstore/plugin_psycstore_postgres.c +++ b/src/psycstore/plugin_psycstore_postgres.c @@ -277,159 +277,159 @@ database_setup (struct Plugin *plugin) /** @todo select_messages: add method_prefix filter */ (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, - "select_messages", - "SELECT hop_counter, signature, purpose, fragment_id,\n" - " fragment_offset, message_id, group_generation,\n" - " multicast_flags, psycstore_flags, data\n" - "FROM messages\n" - "WHERE channel_id = get_chan_id($1) \n" - " AND $2 <= message_id AND message_id <= $3" - "LIMIT $4;", 4)) || + "select_messages", + "SELECT hop_counter, signature, purpose, fragment_id,\n" + " fragment_offset, message_id, group_generation,\n" + " multicast_flags, psycstore_flags, data\n" + "FROM messages\n" + "WHERE channel_id = get_chan_id($1) \n" + " AND $2 <= message_id AND message_id <= $3\n" + "LIMIT $4;", 4)) || /** @todo select_latest_messages: add method_prefix filter */ (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, - "select_latest_fragments", - "SELECT rev.hop_counter AS hop_counter,\n" - " rev.signature AS signature,\n" - " rev.purpose AS purpose,\n" - " rev.fragment_id AS fragment_id,\n" - " rev.fragment_offset AS fragment_offset,\n" - " rev.message_id AS message_id,\n" - " rev.group_generation AS group_generation,\n" - " rev.multicast_flags AS multicast_flags,\n" - " rev.psycstore_flags AS psycstore_flags,\n" - " rev.data AS data\n" - " FROM\n" - " (SELECT hop_counter, signature, purpose, fragment_id,\n" - " fragment_offset, message_id, group_generation,\n" - " multicast_flags, psycstore_flags, data \n" - " FROM messages\n" - " WHERE channel_id = get_chan_id($1) \n" - " ORDER BY fragment_id DESC\n" - " LIMIT $2) AS rev\n" - " ORDER BY rev.fragment_id;", 2)) || + "select_latest_fragments", + "SELECT rev.hop_counter AS hop_counter,\n" + " rev.signature AS signature,\n" + " rev.purpose AS purpose,\n" + " rev.fragment_id AS fragment_id,\n" + " rev.fragment_offset AS fragment_offset,\n" + " rev.message_id AS message_id,\n" + " rev.group_generation AS group_generation,\n" + " rev.multicast_flags AS multicast_flags,\n" + " rev.psycstore_flags AS psycstore_flags,\n" + " rev.data AS data\n" + " FROM\n" + " (SELECT hop_counter, signature, purpose, fragment_id,\n" + " fragment_offset, message_id, group_generation,\n" + " multicast_flags, psycstore_flags, data \n" + " FROM messages\n" + " WHERE channel_id = get_chan_id($1) \n" + " ORDER BY fragment_id DESC\n" + " LIMIT $2) AS rev\n" + " ORDER BY rev.fragment_id;", 2)) || (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, - "select_latest_messages", - "SELECT hop_counter, signature, purpose, fragment_id,\n" - " fragment_offset, message_id, group_generation,\n" - " multicast_flags, psycstore_flags, data\n" - "FROM messages\n" - "WHERE channel_id = get_chan_id($1)\n" - " AND message_id IN\n" - " (SELECT message_id\n" - " FROM messages\n" - " WHERE channel_id = get_chan_id($2) \n" - " GROUP BY message_id\n" - " ORDER BY message_id\n" - " DESC LIMIT $3)\n" - "ORDER BY fragment_id", 3)) || + "select_latest_messages", + "SELECT hop_counter, signature, purpose, fragment_id,\n" + " fragment_offset, message_id, group_generation,\n" + " multicast_flags, psycstore_flags, data\n" + "FROM messages\n" + "WHERE channel_id = get_chan_id($1)\n" + " AND message_id IN\n" + " (SELECT message_id\n" + " FROM messages\n" + " WHERE channel_id = get_chan_id($2) \n" + " GROUP BY message_id\n" + " ORDER BY message_id\n" + " DESC LIMIT $3)\n" + "ORDER BY fragment_id", 3)) || (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, - "select_message_fragment", - "SELECT hop_counter, signature, purpose, fragment_id,\n" - " fragment_offset, message_id, group_generation,\n" - " multicast_flags, psycstore_flags, data\n" - "FROM messages\n" - "WHERE channel_id = get_chan_id($1) \n" - " AND message_id = $2 AND fragment_offset = $3", 3)) || + "select_message_fragment", + "SELECT hop_counter, signature, purpose, fragment_id,\n" + " fragment_offset, message_id, group_generation,\n" + " multicast_flags, psycstore_flags, data\n" + "FROM messages\n" + "WHERE channel_id = get_chan_id($1) \n" + " AND message_id = $2 AND fragment_offset = $3", 3)) || (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, - "select_counters_message", - "SELECT fragment_id, message_id, group_generation\n" - "FROM messages\n" - "WHERE channel_id = get_chan_id($1)\n" - "ORDER BY fragment_id DESC LIMIT 1", 1)) || + "select_counters_message", + "SELECT fragment_id, message_id, group_generation\n" + "FROM messages\n" + "WHERE channel_id = get_chan_id($1)\n" + "ORDER BY fragment_id DESC LIMIT 1", 1)) || (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, - "select_counters_state", - "SELECT max_state_message_id\n" - "FROM channels\n" - "WHERE pub_key = $1 AND max_state_message_id IS NOT NULL", 1)) || + "select_counters_state", + "SELECT max_state_message_id\n" + "FROM channels\n" + "WHERE pub_key = $1 AND max_state_message_id IS NOT NULL", 1)) || (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, - "update_max_state_message_id", - "UPDATE channels\n" - "SET max_state_message_id = $1\n" - "WHERE pub_key = $2", 2)) || + "update_max_state_message_id", + "UPDATE channels\n" + "SET max_state_message_id = $1\n" + "WHERE pub_key = $2", 2)) || (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, - "update_state_hash_message_id", - "UPDATE channels\n" - "SET state_hash_message_id = $1\n" - "WHERE pub_key = $2", 2)) || + "update_state_hash_message_id", + "UPDATE channels\n" + "SET state_hash_message_id = $1\n" + "WHERE pub_key = $2", 2)) || (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, - "insert_state_current", - "INSERT INTO state\n" - " (channel_id, name, value_current, value_signed)\n" - "SELECT new.channel_id, new.name,\n" - " new.value_current, old.value_signed\n" - "FROM (SELECT get_chan_id($1) AS channel_id,\n" - " $2::TEXT AS name, $3::BYTEA AS value_current) AS new\n" - "LEFT JOIN (SELECT channel_id, name, value_signed\n" - " FROM state) AS old\n" - "ON new.channel_id = old.channel_id AND new.name = old.name\n" - "ON CONFLICT ( channel_id, substring(name from 1 for 5) )\n" - " DO UPDATE SET value_current = EXCLUDED.value_current,\n" - " value_signed = EXCLUDED.value_signed", 3)) || + "insert_state_current", + "INSERT INTO state\n" + " (channel_id, name, value_current, value_signed)\n" + "SELECT new.channel_id, new.name,\n" + " new.value_current, old.value_signed\n" + "FROM (SELECT get_chan_id($1) AS channel_id,\n" + " $2::TEXT AS name, $3::BYTEA AS value_current) AS new\n" + "LEFT JOIN (SELECT channel_id, name, value_signed\n" + " FROM state) AS old\n" + "ON new.channel_id = old.channel_id AND new.name = old.name\n" + "ON CONFLICT ( channel_id, substring(name from 1 for 5) )\n" + " DO UPDATE SET value_current = EXCLUDED.value_current,\n" + " value_signed = EXCLUDED.value_signed", 3)) || (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, - "delete_state_empty", - "DELETE FROM state\n" - "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = $1)\n" - " AND (value_current IS NULL OR length(value_current) = 0)\n" - " AND (value_signed IS NULL OR length(value_signed) = 0)", 1)) || + "delete_state_empty", + "DELETE FROM state\n" + "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = $1)\n" + " AND (value_current IS NULL OR length(value_current) = 0)\n" + " AND (value_signed IS NULL OR length(value_signed) = 0)", 1)) || (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, - "update_state_signed", - "UPDATE state\n" - "SET value_signed = value_current\n" - "WHERE channel_id = get_chan_id($1) ", 1)) || + "update_state_signed", + "UPDATE state\n" + "SET value_signed = value_current\n" + "WHERE channel_id = get_chan_id($1) ", 1)) || (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, - "delete_state", - "DELETE FROM state\n" - "WHERE channel_id = get_chan_id($1) ", 1)) || + "delete_state", + "DELETE FROM state\n" + "WHERE channel_id = get_chan_id($1) ", 1)) || (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, - "insert_state_sync", - "INSERT INTO state_sync (channel_id, name, value)\n" - "VALUES (get_chan_id($1), $2, $3)", 3)) || + "insert_state_sync", + "INSERT INTO state_sync (channel_id, name, value)\n" + "VALUES (get_chan_id($1), $2, $3)", 3)) || (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, - "insert_state_from_sync", - "INSERT INTO state\n" - " (channel_id, name, value_current, value_signed)\n" - "SELECT channel_id, name, value, value\n" - "FROM state_sync\n" - "WHERE channel_id = get_chan_id($1)", 1)) || + "insert_state_from_sync", + "INSERT INTO state\n" + " (channel_id, name, value_current, value_signed)\n" + "SELECT channel_id, name, value, value\n" + "FROM state_sync\n" + "WHERE channel_id = get_chan_id($1)", 1)) || (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, - "delete_state_sync", - "DELETE FROM state_sync\n" - "WHERE channel_id = get_chan_id($1)", 1)) || + "delete_state_sync", + "DELETE FROM state_sync\n" + "WHERE channel_id = get_chan_id($1)", 1)) || (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, - "select_state_one", - "SELECT value_current\n" - "FROM state\n" - "WHERE channel_id = get_chan_id($1)\n" - " AND name = $2", 2)) || + "select_state_one", + "SELECT value_current\n" + "FROM state\n" + "WHERE channel_id = get_chan_id($1)\n" + " AND name = $2", 2)) || (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, - "select_state_prefix", - "SELECT name, value_current\n" - "FROM state\n" - "WHERE channel_id = get_chan_id($1)\n" - " AND (name = $2 OR substr(name, 1, $3) = $4 || '_')", 4)) || + "select_state_prefix", + "SELECT name, value_current\n" + "FROM state\n" + "WHERE channel_id = get_chan_id($1)\n" + " AND (name = $2 OR substr(name, 1, $3) = $4 || '_')", 4)) || (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, - "select_state_signed", - "SELECT name, value_signed\n" - "FROM state\n" - "WHERE channel_id = get_chan_id($1)\n" - " AND value_signed IS NOT NULL", 1))) + "select_state_signed", + "SELECT name, value_signed\n" + "FROM state\n" + "WHERE channel_id = get_chan_id($1)\n" + " AND value_signed IS NOT NULL", 1))) { PQfinish (plugin->dbh); plugin->dbh = NULL; @@ -938,21 +938,16 @@ fragment_row (struct Plugin *plugin, static int -fragment_select (struct Plugin *plugin, const char *stmt, +fragment_select (struct Plugin *plugin, + const char *stmt, struct GNUNET_PQ_QueryParam *params, uint64_t *returned_fragments, - GNUNET_PSYCSTORE_FragmentCallback cb, void *cb_cls) + GNUNET_PSYCSTORE_FragmentCallback cb, + void *cb_cls) { PGresult *res; int ret = GNUNET_SYSERR; - // FIXME - if (NULL == plugin->dbh || NULL == stmt || NULL == params) - { - fprintf(stderr, "%p %p %p\n", plugin->dbh, stmt, params); - return GNUNET_SYSERR; - } - res = GNUNET_PQ_exec_prepared (plugin->dbh, stmt, params); if (GNUNET_YES == GNUNET_POSTGRES_check_result (plugin->dbh, -- 2.25.1