aboutsummaryrefslogtreecommitdiff
path: root/src/psycstore
diff options
context:
space:
mode:
authorDaniel Golle <daniel@makrotopia.org>2016-10-10 22:59:27 +0000
committerDaniel Golle <daniel@makrotopia.org>2016-10-10 22:59:27 +0000
commit4205e6581868260d54c91db8544ae02653a7a284 (patch)
treeaf47348053be822965043275a817dd4fb64a2989 /src/psycstore
parent93085e8a2991fde229400b588a5930e9fcca0d75 (diff)
downloadgnunet-4205e6581868260d54c91db8544ae02653a7a284.tar.gz
gnunet-4205e6581868260d54c91db8544ae02653a7a284.zip
psycstore: sync postgres plugin with mysql, fix indention
Diffstat (limited to 'src/psycstore')
-rw-r--r--src/psycstore/plugin_psycstore_postgres.c249
1 files 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)
277 277
278 /** @todo select_messages: add method_prefix filter */ 278 /** @todo select_messages: add method_prefix filter */
279 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, 279 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh,
280 "select_messages", 280 "select_messages",
281 "SELECT hop_counter, signature, purpose, fragment_id,\n" 281 "SELECT hop_counter, signature, purpose, fragment_id,\n"
282 " fragment_offset, message_id, group_generation,\n" 282 " fragment_offset, message_id, group_generation,\n"
283 " multicast_flags, psycstore_flags, data\n" 283 " multicast_flags, psycstore_flags, data\n"
284 "FROM messages\n" 284 "FROM messages\n"
285 "WHERE channel_id = get_chan_id($1) \n" 285 "WHERE channel_id = get_chan_id($1) \n"
286 " AND $2 <= message_id AND message_id <= $3" 286 " AND $2 <= message_id AND message_id <= $3\n"
287 "LIMIT $4;", 4)) || 287 "LIMIT $4;", 4)) ||
288 288
289 /** @todo select_latest_messages: add method_prefix filter */ 289 /** @todo select_latest_messages: add method_prefix filter */
290 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, 290 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh,
291 "select_latest_fragments", 291 "select_latest_fragments",
292 "SELECT rev.hop_counter AS hop_counter,\n" 292 "SELECT rev.hop_counter AS hop_counter,\n"
293 " rev.signature AS signature,\n" 293 " rev.signature AS signature,\n"
294 " rev.purpose AS purpose,\n" 294 " rev.purpose AS purpose,\n"
295 " rev.fragment_id AS fragment_id,\n" 295 " rev.fragment_id AS fragment_id,\n"
296 " rev.fragment_offset AS fragment_offset,\n" 296 " rev.fragment_offset AS fragment_offset,\n"
297 " rev.message_id AS message_id,\n" 297 " rev.message_id AS message_id,\n"
298 " rev.group_generation AS group_generation,\n" 298 " rev.group_generation AS group_generation,\n"
299 " rev.multicast_flags AS multicast_flags,\n" 299 " rev.multicast_flags AS multicast_flags,\n"
300 " rev.psycstore_flags AS psycstore_flags,\n" 300 " rev.psycstore_flags AS psycstore_flags,\n"
301 " rev.data AS data\n" 301 " rev.data AS data\n"
302 " FROM\n" 302 " FROM\n"
303 " (SELECT hop_counter, signature, purpose, fragment_id,\n" 303 " (SELECT hop_counter, signature, purpose, fragment_id,\n"
304 " fragment_offset, message_id, group_generation,\n" 304 " fragment_offset, message_id, group_generation,\n"
305 " multicast_flags, psycstore_flags, data \n" 305 " multicast_flags, psycstore_flags, data \n"
306 " FROM messages\n" 306 " FROM messages\n"
307 " WHERE channel_id = get_chan_id($1) \n" 307 " WHERE channel_id = get_chan_id($1) \n"
308 " ORDER BY fragment_id DESC\n" 308 " ORDER BY fragment_id DESC\n"
309 " LIMIT $2) AS rev\n" 309 " LIMIT $2) AS rev\n"
310 " ORDER BY rev.fragment_id;", 2)) || 310 " ORDER BY rev.fragment_id;", 2)) ||
311 311
312 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, 312 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh,
313 "select_latest_messages", 313 "select_latest_messages",
314 "SELECT hop_counter, signature, purpose, fragment_id,\n" 314 "SELECT hop_counter, signature, purpose, fragment_id,\n"
315 " fragment_offset, message_id, group_generation,\n" 315 " fragment_offset, message_id, group_generation,\n"
316 " multicast_flags, psycstore_flags, data\n" 316 " multicast_flags, psycstore_flags, data\n"
317 "FROM messages\n" 317 "FROM messages\n"
318 "WHERE channel_id = get_chan_id($1)\n" 318 "WHERE channel_id = get_chan_id($1)\n"
319 " AND message_id IN\n" 319 " AND message_id IN\n"
320 " (SELECT message_id\n" 320 " (SELECT message_id\n"
321 " FROM messages\n" 321 " FROM messages\n"
322 " WHERE channel_id = get_chan_id($2) \n" 322 " WHERE channel_id = get_chan_id($2) \n"
323 " GROUP BY message_id\n" 323 " GROUP BY message_id\n"
324 " ORDER BY message_id\n" 324 " ORDER BY message_id\n"
325 " DESC LIMIT $3)\n" 325 " DESC LIMIT $3)\n"
326 "ORDER BY fragment_id", 3)) || 326 "ORDER BY fragment_id", 3)) ||
327 327
328 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, 328 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh,
329 "select_message_fragment", 329 "select_message_fragment",
330 "SELECT hop_counter, signature, purpose, fragment_id,\n" 330 "SELECT hop_counter, signature, purpose, fragment_id,\n"
331 " fragment_offset, message_id, group_generation,\n" 331 " fragment_offset, message_id, group_generation,\n"
332 " multicast_flags, psycstore_flags, data\n" 332 " multicast_flags, psycstore_flags, data\n"
333 "FROM messages\n" 333 "FROM messages\n"
334 "WHERE channel_id = get_chan_id($1) \n" 334 "WHERE channel_id = get_chan_id($1) \n"
335 " AND message_id = $2 AND fragment_offset = $3", 3)) || 335 " AND message_id = $2 AND fragment_offset = $3", 3)) ||
336 336
337 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, 337 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh,
338 "select_counters_message", 338 "select_counters_message",
339 "SELECT fragment_id, message_id, group_generation\n" 339 "SELECT fragment_id, message_id, group_generation\n"
340 "FROM messages\n" 340 "FROM messages\n"
341 "WHERE channel_id = get_chan_id($1)\n" 341 "WHERE channel_id = get_chan_id($1)\n"
342 "ORDER BY fragment_id DESC LIMIT 1", 1)) || 342 "ORDER BY fragment_id DESC LIMIT 1", 1)) ||
343 343
344 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, 344 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh,
345 "select_counters_state", 345 "select_counters_state",
346 "SELECT max_state_message_id\n" 346 "SELECT max_state_message_id\n"
347 "FROM channels\n" 347 "FROM channels\n"
348 "WHERE pub_key = $1 AND max_state_message_id IS NOT NULL", 1)) || 348 "WHERE pub_key = $1 AND max_state_message_id IS NOT NULL", 1)) ||
349 349
350 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, 350 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh,
351 "update_max_state_message_id", 351 "update_max_state_message_id",
352 "UPDATE channels\n" 352 "UPDATE channels\n"
353 "SET max_state_message_id = $1\n" 353 "SET max_state_message_id = $1\n"
354 "WHERE pub_key = $2", 2)) || 354 "WHERE pub_key = $2", 2)) ||
355 355
356 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, 356 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh,
357 "update_state_hash_message_id", 357 "update_state_hash_message_id",
358 "UPDATE channels\n" 358 "UPDATE channels\n"
359 "SET state_hash_message_id = $1\n" 359 "SET state_hash_message_id = $1\n"
360 "WHERE pub_key = $2", 2)) || 360 "WHERE pub_key = $2", 2)) ||
361 361
362 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, 362 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh,
363 "insert_state_current", 363 "insert_state_current",
364 "INSERT INTO state\n" 364 "INSERT INTO state\n"
365 " (channel_id, name, value_current, value_signed)\n" 365 " (channel_id, name, value_current, value_signed)\n"
366 "SELECT new.channel_id, new.name,\n" 366 "SELECT new.channel_id, new.name,\n"
367 " new.value_current, old.value_signed\n" 367 " new.value_current, old.value_signed\n"
368 "FROM (SELECT get_chan_id($1) AS channel_id,\n" 368 "FROM (SELECT get_chan_id($1) AS channel_id,\n"
369 " $2::TEXT AS name, $3::BYTEA AS value_current) AS new\n" 369 " $2::TEXT AS name, $3::BYTEA AS value_current) AS new\n"
370 "LEFT JOIN (SELECT channel_id, name, value_signed\n" 370 "LEFT JOIN (SELECT channel_id, name, value_signed\n"
371 " FROM state) AS old\n" 371 " FROM state) AS old\n"
372 "ON new.channel_id = old.channel_id AND new.name = old.name\n" 372 "ON new.channel_id = old.channel_id AND new.name = old.name\n"
373 "ON CONFLICT ( channel_id, substring(name from 1 for 5) )\n" 373 "ON CONFLICT ( channel_id, substring(name from 1 for 5) )\n"
374 " DO UPDATE SET value_current = EXCLUDED.value_current,\n" 374 " DO UPDATE SET value_current = EXCLUDED.value_current,\n"
375 " value_signed = EXCLUDED.value_signed", 3)) || 375 " value_signed = EXCLUDED.value_signed", 3)) ||
376 376
377 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, 377 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh,
378 "delete_state_empty", 378 "delete_state_empty",
379 "DELETE FROM state\n" 379 "DELETE FROM state\n"
380 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = $1)\n" 380 "WHERE channel_id = (SELECT id FROM channels WHERE pub_key = $1)\n"
381 " AND (value_current IS NULL OR length(value_current) = 0)\n" 381 " AND (value_current IS NULL OR length(value_current) = 0)\n"
382 " AND (value_signed IS NULL OR length(value_signed) = 0)", 1)) || 382 " AND (value_signed IS NULL OR length(value_signed) = 0)", 1)) ||
383 383
384 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, 384 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh,
385 "update_state_signed", 385 "update_state_signed",
386 "UPDATE state\n" 386 "UPDATE state\n"
387 "SET value_signed = value_current\n" 387 "SET value_signed = value_current\n"
388 "WHERE channel_id = get_chan_id($1) ", 1)) || 388 "WHERE channel_id = get_chan_id($1) ", 1)) ||
389 389
390 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, 390 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh,
391 "delete_state", 391 "delete_state",
392 "DELETE FROM state\n" 392 "DELETE FROM state\n"
393 "WHERE channel_id = get_chan_id($1) ", 1)) || 393 "WHERE channel_id = get_chan_id($1) ", 1)) ||
394 394
395 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, 395 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh,
396 "insert_state_sync", 396 "insert_state_sync",
397 "INSERT INTO state_sync (channel_id, name, value)\n" 397 "INSERT INTO state_sync (channel_id, name, value)\n"
398 "VALUES (get_chan_id($1), $2, $3)", 3)) || 398 "VALUES (get_chan_id($1), $2, $3)", 3)) ||
399 399
400 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, 400 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh,
401 "insert_state_from_sync", 401 "insert_state_from_sync",
402 "INSERT INTO state\n" 402 "INSERT INTO state\n"
403 " (channel_id, name, value_current, value_signed)\n" 403 " (channel_id, name, value_current, value_signed)\n"
404 "SELECT channel_id, name, value, value\n" 404 "SELECT channel_id, name, value, value\n"
405 "FROM state_sync\n" 405 "FROM state_sync\n"
406 "WHERE channel_id = get_chan_id($1)", 1)) || 406 "WHERE channel_id = get_chan_id($1)", 1)) ||
407 407
408 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, 408 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh,
409 "delete_state_sync", 409 "delete_state_sync",
410 "DELETE FROM state_sync\n" 410 "DELETE FROM state_sync\n"
411 "WHERE channel_id = get_chan_id($1)", 1)) || 411 "WHERE channel_id = get_chan_id($1)", 1)) ||
412 412
413 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, 413 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh,
414 "select_state_one", 414 "select_state_one",
415 "SELECT value_current\n" 415 "SELECT value_current\n"
416 "FROM state\n" 416 "FROM state\n"
417 "WHERE channel_id = get_chan_id($1)\n" 417 "WHERE channel_id = get_chan_id($1)\n"
418 " AND name = $2", 2)) || 418 " AND name = $2", 2)) ||
419 419
420 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, 420 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh,
421 "select_state_prefix", 421 "select_state_prefix",
422 "SELECT name, value_current\n" 422 "SELECT name, value_current\n"
423 "FROM state\n" 423 "FROM state\n"
424 "WHERE channel_id = get_chan_id($1)\n" 424 "WHERE channel_id = get_chan_id($1)\n"
425 " AND (name = $2 OR substr(name, 1, $3) = $4 || '_')", 4)) || 425 " AND (name = $2 OR substr(name, 1, $3) = $4 || '_')", 4)) ||
426 426
427 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh, 427 (GNUNET_OK != GNUNET_POSTGRES_prepare (plugin->dbh,
428 "select_state_signed", 428 "select_state_signed",
429 "SELECT name, value_signed\n" 429 "SELECT name, value_signed\n"
430 "FROM state\n" 430 "FROM state\n"
431 "WHERE channel_id = get_chan_id($1)\n" 431 "WHERE channel_id = get_chan_id($1)\n"
432 " AND value_signed IS NOT NULL", 1))) 432 " AND value_signed IS NOT NULL", 1)))
433 { 433 {
434 PQfinish (plugin->dbh); 434 PQfinish (plugin->dbh);
435 plugin->dbh = NULL; 435 plugin->dbh = NULL;
@@ -938,21 +938,16 @@ fragment_row (struct Plugin *plugin,
938 938
939 939
940static int 940static int
941fragment_select (struct Plugin *plugin, const char *stmt, 941fragment_select (struct Plugin *plugin,
942 const char *stmt,
942 struct GNUNET_PQ_QueryParam *params, 943 struct GNUNET_PQ_QueryParam *params,
943 uint64_t *returned_fragments, 944 uint64_t *returned_fragments,
944 GNUNET_PSYCSTORE_FragmentCallback cb, void *cb_cls) 945 GNUNET_PSYCSTORE_FragmentCallback cb,
946 void *cb_cls)
945{ 947{
946 PGresult *res; 948 PGresult *res;
947 int ret = GNUNET_SYSERR; 949 int ret = GNUNET_SYSERR;
948 950
949 // FIXME
950 if (NULL == plugin->dbh || NULL == stmt || NULL == params)
951 {
952 fprintf(stderr, "%p %p %p\n", plugin->dbh, stmt, params);
953 return GNUNET_SYSERR;
954 }
955
956 res = GNUNET_PQ_exec_prepared (plugin->dbh, stmt, params); 951 res = GNUNET_PQ_exec_prepared (plugin->dbh, stmt, params);
957 if (GNUNET_YES == 952 if (GNUNET_YES ==
958 GNUNET_POSTGRES_check_result (plugin->dbh, 953 GNUNET_POSTGRES_check_result (plugin->dbh,