diff options
author | Sree Harsha Totakura <sreeharsha@totakura.in> | 2015-03-05 17:05:51 +0100 |
---|---|---|
committer | Sree Harsha Totakura <sreeharsha@totakura.in> | 2015-03-05 17:05:51 +0100 |
commit | a3e7b3af82fc3b805b6e01114dbaa2fd0d299a25 (patch) | |
tree | 7220d90f9d9791c92fec343bb5ad71389b3c6a68 | |
parent | f92af896f8a2f07aba3a90434b2ee3aa51b45149 (diff) | |
download | exchange-a3e7b3af82fc3b805b6e01114dbaa2fd0d299a25.tar.gz exchange-a3e7b3af82fc3b805b6e01114dbaa2fd0d299a25.zip |
db: Use macro while creating prepared statements
-rw-r--r-- | src/mint/mint_db.c | 639 |
1 files changed, 234 insertions, 405 deletions
diff --git a/src/mint/mint_db.c b/src/mint/mint_db.c index b84af0f22..a58959f94 100644 --- a/src/mint/mint_db.c +++ b/src/mint/mint_db.c | |||
@@ -272,417 +272,246 @@ TALER_MINT_DB_prepare (PGconn *db_conn) | |||
272 | { | 272 | { |
273 | PGresult *result; | 273 | PGresult *result; |
274 | 274 | ||
275 | result = PQprepare (db_conn, "get_reserve", | 275 | #define PREPARE(name, sql, ...) \ |
276 | "SELECT " | 276 | do { \ |
277 | "current_balance_value" | 277 | result = PQprepare (db_conn, name, sql, __VA_ARGS__); \ |
278 | ",current_balance_fraction" | 278 | if (PGRES_COMMAND_OK != PQresultStatus (result)) \ |
279 | ",balance_currency " | 279 | { \ |
280 | ",expiration_date " | 280 | break_db_err (result); \ |
281 | "FROM reserves " | 281 | PQclear (result); result = NULL; \ |
282 | "WHERE reserve_pub=$1 " | 282 | return GNUNET_SYSERR; \ |
283 | "LIMIT 1; ", | 283 | } \ |
284 | 1, NULL); | 284 | PQclear (result); result = NULL; \ |
285 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | 285 | } while (0); |
286 | { | 286 | |
287 | break_db_err (result); | 287 | PREPARE ("get_reserve", |
288 | PQclear (result); | 288 | "SELECT " |
289 | return GNUNET_SYSERR; | 289 | "current_balance_value" |
290 | } | 290 | ",current_balance_fraction" |
291 | PQclear (result); | 291 | ",balance_currency " |
292 | 292 | ",expiration_date " | |
293 | result = PQprepare (db_conn, "update_reserve", | 293 | "FROM reserves " |
294 | "UPDATE reserves " | 294 | "WHERE reserve_pub=$1 " |
295 | "SET" | 295 | "LIMIT 1; ", |
296 | " current_balance_value=$2 " | 296 | 1, NULL); |
297 | ",current_balance_fraction=$3 " | 297 | PREPARE ("update_reserve", |
298 | ",expiration_date=$4 " | 298 | "UPDATE reserves " |
299 | "WHERE reserve_pub=$1 ", | 299 | "SET" |
300 | 4, NULL); | 300 | " current_balance_value=$2 " |
301 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | 301 | ",current_balance_fraction=$3 " |
302 | { | 302 | ",expiration_date=$4 " |
303 | break_db_err (result); | 303 | "WHERE reserve_pub=$1 ", |
304 | PQclear (result); | 304 | 4, NULL); |
305 | return GNUNET_SYSERR; | 305 | PREPARE ("insert_collectable_blindcoins", |
306 | } | 306 | "INSERT INTO collectable_blindcoins ( " |
307 | PQclear (result); | 307 | " blind_ev, blind_ev_sig " |
308 | result = PQprepare (db_conn, "insert_collectable_blindcoins", | 308 | ",denom_pub, reserve_pub, reserve_sig) " |
309 | "INSERT INTO collectable_blindcoins ( " | 309 | "VALUES ($1, $2, $3, $4, $5)", |
310 | " blind_ev, blind_ev_sig " | 310 | 6, NULL); |
311 | ",denom_pub, reserve_pub, reserve_sig) " | 311 | PREPARE ("get_collectable_blindcoins", |
312 | "VALUES ($1, $2, $3, $4, $5)", | 312 | "SELECT " |
313 | 6, NULL); | 313 | "blind_ev_sig, denom_pub, reserve_sig, reserve_pub " |
314 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | 314 | "FROM collectable_blindcoins " |
315 | { | 315 | "WHERE blind_ev = $1", |
316 | break_db_err (result); | 316 | 1, NULL); |
317 | PQclear (result); | ||
318 | return GNUNET_SYSERR; | ||
319 | } | ||
320 | PQclear (result); | ||
321 | |||
322 | result = PQprepare (db_conn, "get_collectable_blindcoins", | ||
323 | "SELECT " | ||
324 | "blind_ev_sig, denom_pub, reserve_sig, reserve_pub " | ||
325 | "FROM collectable_blindcoins " | ||
326 | "WHERE blind_ev = $1", | ||
327 | 1, NULL); | ||
328 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | ||
329 | { | ||
330 | break_db_err (result); | ||
331 | PQclear (result); | ||
332 | return GNUNET_SYSERR; | ||
333 | } | ||
334 | PQclear (result); | ||
335 | 317 | ||
336 | /* FIXME: does it make sense to store these computed values in the DB? */ | 318 | /* FIXME: does it make sense to store these computed values in the DB? */ |
337 | #if 0 | 319 | #if 0 |
338 | result = PQprepare (db_conn, "get_refresh_session", | 320 | PREPARE ("get_refresh_session", |
339 | "SELECT " | 321 | "SELECT " |
340 | " (SELECT count(*) FROM refresh_melt WHERE session_pub = $1)::INT2 as num_oldcoins " | 322 | " (SELECT count(*) FROM refresh_melt WHERE session_pub = $1)::INT2 as num_oldcoins " |
341 | ",(SELECT count(*) FROM refresh_blind_session_keys " | 323 | ",(SELECT count(*) FROM refresh_blind_session_keys " |
342 | " WHERE session_pub = $1 and cnc_index = 0)::INT2 as num_newcoins " | 324 | " WHERE session_pub = $1 and cnc_index = 0)::INT2 as num_newcoins " |
343 | ",(SELECT count(*) FROM refresh_blind_session_keys " | 325 | ",(SELECT count(*) FROM refresh_blind_session_keys " |
344 | " WHERE session_pub = $1 and newcoin_index = 0)::INT2 as kappa " | 326 | " WHERE session_pub = $1 and newcoin_index = 0)::INT2 as kappa " |
345 | ",noreveal_index" | 327 | ",noreveal_index" |
346 | ",session_commit_sig " | 328 | ",session_commit_sig " |
347 | ",reveal_ok " | 329 | ",reveal_ok " |
348 | "FROM refresh_sessions " | 330 | "FROM refresh_sessions " |
349 | "WHERE session_pub = $1", | 331 | "WHERE session_pub = $1", |
350 | 1, NULL); | 332 | 1, NULL); |
351 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | ||
352 | { | ||
353 | break_db_err (result); | ||
354 | PQclear (result); | ||
355 | return GNUNET_SYSERR; | ||
356 | } | ||
357 | PQclear (result); | ||
358 | #endif | 333 | #endif |
359 | 334 | ||
360 | result = PQprepare (db_conn, "get_known_coin", | 335 | PREPARE ("get_known_coin", |
361 | "SELECT " | 336 | "SELECT " |
362 | " coin_pub, denom_pub, denom_sig " | 337 | " coin_pub, denom_pub, denom_sig " |
363 | ",expended_value, expended_fraction, expended_currency " | 338 | ",expended_value, expended_fraction, expended_currency " |
364 | ",refresh_session_pub " | 339 | ",refresh_session_pub " |
365 | "FROM known_coins " | 340 | "FROM known_coins " |
366 | "WHERE coin_pub = $1", | 341 | "WHERE coin_pub = $1", |
367 | 1, NULL); | 342 | 1, NULL); |
368 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | 343 | PREPARE ("update_known_coin", |
369 | { | 344 | "UPDATE known_coins " |
370 | break_db_err (result); | 345 | "SET " |
371 | PQclear (result); | 346 | " denom_pub = $2 " |
372 | return GNUNET_SYSERR; | 347 | ",denom_sig = $3 " |
373 | } | 348 | ",expended_value = $4 " |
374 | PQclear (result); | 349 | ",expended_fraction = $5 " |
375 | 350 | ",expended_currency = $6 " | |
376 | result = PQprepare (db_conn, "update_known_coin", | 351 | ",refresh_session_pub = $7 " |
377 | "UPDATE known_coins " | 352 | "WHERE " |
378 | "SET " | 353 | " coin_pub = $1 ", |
379 | " denom_pub = $2 " | 354 | 7, NULL); |
380 | ",denom_sig = $3 " | 355 | PREPARE ("insert_known_coin", |
381 | ",expended_value = $4 " | 356 | "INSERT INTO known_coins (" |
382 | ",expended_fraction = $5 " | 357 | " coin_pub" |
383 | ",expended_currency = $6 " | 358 | ",denom_pub" |
384 | ",refresh_session_pub = $7 " | 359 | ",denom_sig" |
385 | "WHERE " | 360 | ",expended_value" |
386 | " coin_pub = $1 ", | 361 | ",expended_fraction" |
387 | 7, NULL); | 362 | ",expended_currency" |
388 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | 363 | ",refresh_session_pub" |
389 | { | 364 | ")" |
390 | break_db_err (result); | 365 | "VALUES ($1,$2,$3,$4,$5,$6,$7)", |
391 | PQclear (result); | 366 | 7, NULL); |
392 | return GNUNET_SYSERR; | 367 | PREPARE ("get_refresh_commit_link", |
393 | } | 368 | "SELECT " |
394 | PQclear (result); | 369 | " transfer_pub " |
395 | 370 | ",link_secret_enc " | |
396 | result = PQprepare (db_conn, "insert_known_coin", | 371 | "FROM refresh_commit_link " |
397 | "INSERT INTO known_coins (" | 372 | "WHERE session_pub = $1 AND cnc_index = $2 AND oldcoin_index = $3", |
398 | " coin_pub" | 373 | 3, NULL); |
399 | ",denom_pub" | 374 | PREPARE ("get_refresh_commit_coin", |
400 | ",denom_sig" | 375 | "SELECT " |
401 | ",expended_value" | 376 | " link_vector_enc " |
402 | ",expended_fraction" | 377 | ",coin_ev " |
403 | ",expended_currency" | 378 | "FROM refresh_commit_coin " |
404 | ",refresh_session_pub" | 379 | "WHERE session_pub = $1 AND cnc_index = $2 AND newcoin_index = $3", |
405 | ")" | 380 | 3, NULL); |
406 | "VALUES ($1,$2,$3,$4,$5,$6,$7)", | 381 | PREPARE ("insert_refresh_order", |
407 | 7, NULL); | 382 | "INSERT INTO refresh_order ( " |
408 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | 383 | " newcoin_index " |
409 | { | 384 | ",session_pub " |
410 | break_db_err (result); | 385 | ",denom_pub " |
411 | PQclear (result); | 386 | ") " |
412 | return GNUNET_SYSERR; | 387 | "VALUES ($1, $2, $3) ", |
413 | } | 388 | 3, NULL); |
414 | PQclear (result); | 389 | PREPARE ("insert_refresh_melt", |
415 | 390 | "INSERT INTO refresh_melt ( " | |
416 | result = PQprepare (db_conn, "get_refresh_commit_link", | 391 | " session_pub " |
417 | "SELECT " | 392 | ",oldcoin_index " |
418 | " transfer_pub " | 393 | ",coin_pub " |
419 | ",link_secret_enc " | 394 | ",denom_pub " |
420 | "FROM refresh_commit_link " | 395 | ") " |
421 | "WHERE session_pub = $1 AND cnc_index = $2 AND oldcoin_index = $3", | 396 | "VALUES ($1, $2, $3, $4) ", |
422 | 3, NULL); | 397 | 3, NULL); |
423 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | 398 | PREPARE ("get_refresh_order", |
424 | { | 399 | "SELECT denom_pub " |
425 | break_db_err (result); | 400 | "FROM refresh_order " |
426 | PQclear (result); | 401 | "WHERE session_pub = $1 AND newcoin_index = $2", |
427 | return GNUNET_SYSERR; | 402 | 2, NULL); |
428 | } | 403 | PREPARE ("get_refresh_collectable", |
429 | PQclear (result); | 404 | "SELECT ev_sig " |
430 | 405 | "FROM refresh_collectable " | |
431 | result = PQprepare (db_conn, "get_refresh_commit_coin", | 406 | "WHERE session_pub = $1 AND newcoin_index = $2", |
432 | "SELECT " | 407 | 2, NULL); |
433 | " link_vector_enc " | 408 | PREPARE ("get_refresh_melt", |
434 | ",coin_ev " | 409 | "SELECT coin_pub " |
435 | "FROM refresh_commit_coin " | 410 | "FROM refresh_melt " |
436 | "WHERE session_pub = $1 AND cnc_index = $2 AND newcoin_index = $3", | 411 | "WHERE session_pub = $1 AND oldcoin_index = $2", |
437 | 3, NULL); | 412 | 2, NULL); |
438 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | 413 | PREPARE ("insert_refresh_session", |
439 | { | 414 | "INSERT INTO refresh_sessions ( " |
440 | break_db_err (result); | 415 | " session_pub " |
441 | PQclear (result); | 416 | ",noreveal_index " |
442 | return GNUNET_SYSERR; | 417 | ") " |
443 | } | 418 | "VALUES ($1, $2) ", |
444 | PQclear (result); | 419 | 2, NULL); |
445 | 420 | PREPARE ("insert_refresh_commit_link", | |
446 | result = PQprepare (db_conn, "insert_refresh_order", | 421 | "INSERT INTO refresh_commit_link ( " |
447 | "INSERT INTO refresh_order ( " | 422 | " session_pub " |
448 | " newcoin_index " | 423 | ",transfer_pub " |
449 | ",session_pub " | 424 | ",cnc_index " |
450 | ",denom_pub " | 425 | ",oldcoin_index " |
451 | ") " | 426 | ",link_secret_enc " |
452 | "VALUES ($1, $2, $3) ", | 427 | ") " |
453 | 3, NULL); | 428 | "VALUES ($1, $2, $3, $4, $5) ", |
454 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | 429 | 5, NULL); |
455 | { | 430 | PREPARE ("insert_refresh_commit_coin", |
456 | break_db_err (result); | 431 | "INSERT INTO refresh_commit_coin ( " |
457 | PQclear (result); | 432 | " session_pub " |
458 | return GNUNET_SYSERR; | 433 | ",coin_ev " |
459 | } | 434 | ",cnc_index " |
460 | PQclear (result); | 435 | ",newcoin_index " |
461 | 436 | ",link_vector_enc " | |
462 | result = PQprepare (db_conn, "insert_refresh_melt", | 437 | ") " |
463 | "INSERT INTO refresh_melt ( " | 438 | "VALUES ($1, $2, $3, $4, $5) ", |
464 | " session_pub " | 439 | 5, NULL); |
465 | ",oldcoin_index " | 440 | PREPARE ("insert_refresh_collectable", |
466 | ",coin_pub " | 441 | "INSERT INTO refresh_collectable ( " |
467 | ",denom_pub " | 442 | " session_pub " |
468 | ") " | 443 | ",newcoin_index " |
469 | "VALUES ($1, $2, $3, $4) ", | 444 | ",ev_sig " |
470 | 3, NULL); | 445 | ") " |
471 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | 446 | "VALUES ($1, $2, $3) ", |
472 | { | 447 | 3, NULL); |
473 | break_db_err (result); | 448 | PREPARE ("set_reveal_ok", |
474 | PQclear (result); | 449 | "UPDATE refresh_sessions " |
475 | return GNUNET_SYSERR; | 450 | "SET reveal_ok = TRUE " |
476 | } | 451 | "WHERE session_pub = $1 ", |
477 | PQclear (result); | 452 | 1, NULL); |
478 | 453 | PREPARE ("get_link", | |
479 | result = PQprepare (db_conn, "get_refresh_order", | 454 | "SELECT link_vector_enc, ro.denom_pub, ev_sig " |
480 | "SELECT denom_pub " | 455 | "FROM refresh_melt rm " |
481 | "FROM refresh_order " | 456 | " JOIN refresh_order ro USING (session_pub) " |
482 | "WHERE session_pub = $1 AND newcoin_index = $2", | 457 | " JOIN refresh_commit_coin rcc USING (session_pub) " |
483 | 2, NULL); | 458 | " JOIN refresh_sessions rs USING (session_pub) " |
484 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | 459 | " JOIN refresh_collectable rc USING (session_pub) " |
485 | { | 460 | "WHERE rm.coin_pub = $1 " |
486 | break_db_err (result); | 461 | "AND ro.newcoin_index = rcc.newcoin_index " |
487 | PQclear (result); | 462 | "AND ro.newcoin_index = rc.newcoin_index " |
488 | return GNUNET_SYSERR; | 463 | "AND rcc.cnc_index = rs.noreveal_index % ( " |
489 | } | 464 | " SELECT count(*) FROM refresh_commit_coin rcc2 " |
490 | PQclear (result); | 465 | " WHERE rcc2.newcoin_index = 0 AND rcc2.session_pub = rs.session_pub " |
491 | 466 | " ) ", | |
492 | result = PQprepare (db_conn, "get_refresh_collectable", | 467 | 1, NULL); |
493 | "SELECT ev_sig " | 468 | PREPARE ("get_transfer", |
494 | "FROM refresh_collectable " | 469 | "SELECT transfer_pub, link_secret_enc " |
495 | "WHERE session_pub = $1 AND newcoin_index = $2", | 470 | "FROM refresh_melt rm " |
496 | 2, NULL); | 471 | " JOIN refresh_commit_link rcl USING (session_pub) " |
497 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | 472 | " JOIN refresh_sessions rs USING (session_pub) " |
498 | { | 473 | "WHERE rm.coin_pub = $1 " |
499 | break_db_err (result); | 474 | "AND rm.oldcoin_index = rcl.oldcoin_index " |
500 | PQclear (result); | 475 | "AND rcl.cnc_index = rs.noreveal_index % ( " |
501 | return GNUNET_SYSERR; | 476 | " SELECT count(*) FROM refresh_commit_coin rcc2 " |
502 | } | 477 | " WHERE newcoin_index = 0 AND rcc2.session_pub = rm.session_pub " |
503 | PQclear (result); | 478 | " ) ", |
504 | 479 | 1, NULL); | |
505 | result = PQprepare (db_conn, "get_refresh_melt", | 480 | PREPARE ("insert_deposit", |
506 | "SELECT coin_pub " | 481 | "INSERT INTO deposits (" |
507 | "FROM refresh_melt " | 482 | "coin_pub," |
508 | "WHERE session_pub = $1 AND oldcoin_index = $2", | 483 | "denom_pub," |
509 | 2, NULL); | 484 | "transaction_id," |
510 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | 485 | "amount_value," |
511 | { | 486 | "amount_fraction," |
512 | break_db_err (result); | 487 | "amount_currency," |
513 | PQclear (result); | 488 | "merchant_pub," |
514 | return GNUNET_SYSERR; | 489 | "h_contract," |
515 | } | 490 | "h_wire," |
516 | PQclear (result); | 491 | "coin_sig," |
517 | 492 | "wire" | |
518 | result = PQprepare (db_conn, "insert_refresh_session", | 493 | ") VALUES (" |
519 | "INSERT INTO refresh_sessions ( " | 494 | "$1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11" |
520 | " session_pub " | 495 | ")", |
521 | ",noreveal_index " | 496 | 11, NULL); |
522 | ") " | 497 | PREPARE ("get_deposit", |
523 | "VALUES ($1, $2) ", | 498 | "SELECT " |
524 | 2, NULL); | 499 | "coin_pub," |
525 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | 500 | "denom_pub," |
526 | { | 501 | "transaction_id," |
527 | break_db_err (result); | 502 | "amount_value," |
528 | PQclear (result); | 503 | "amount_fraction," |
529 | return GNUNET_SYSERR; | 504 | "amount_currency," |
530 | } | 505 | "merchant_pub," |
531 | PQclear (result); | 506 | "h_contract," |
532 | 507 | "h_wire," | |
533 | result = PQprepare (db_conn, "insert_refresh_commit_link", | 508 | "coin_sig" |
534 | "INSERT INTO refresh_commit_link ( " | 509 | " FROM deposits WHERE (" |
535 | " session_pub " | 510 | "coin_pub = $1" |
536 | ",transfer_pub " | 511 | ")", |
537 | ",cnc_index " | 512 | 1, NULL); |
538 | ",oldcoin_index " | ||
539 | ",link_secret_enc " | ||
540 | ") " | ||
541 | "VALUES ($1, $2, $3, $4, $5) ", | ||
542 | 5, NULL); | ||
543 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | ||
544 | { | ||
545 | break_db_err (result); | ||
546 | PQclear (result); | ||
547 | return GNUNET_SYSERR; | ||
548 | } | ||
549 | PQclear (result); | ||
550 | |||
551 | result = PQprepare (db_conn, "insert_refresh_commit_coin", | ||
552 | "INSERT INTO refresh_commit_coin ( " | ||
553 | " session_pub " | ||
554 | ",coin_ev " | ||
555 | ",cnc_index " | ||
556 | ",newcoin_index " | ||
557 | ",link_vector_enc " | ||
558 | ") " | ||
559 | "VALUES ($1, $2, $3, $4, $5) ", | ||
560 | 5, NULL); | ||
561 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | ||
562 | { | ||
563 | break_db_err (result); | ||
564 | PQclear (result); | ||
565 | return GNUNET_SYSERR; | ||
566 | } | ||
567 | PQclear (result); | ||
568 | |||
569 | result = PQprepare (db_conn, "insert_refresh_collectable", | ||
570 | "INSERT INTO refresh_collectable ( " | ||
571 | " session_pub " | ||
572 | ",newcoin_index " | ||
573 | ",ev_sig " | ||
574 | ") " | ||
575 | "VALUES ($1, $2, $3) ", | ||
576 | 3, NULL); | ||
577 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | ||
578 | { | ||
579 | break_db_err (result); | ||
580 | PQclear (result); | ||
581 | return GNUNET_SYSERR; | ||
582 | } | ||
583 | PQclear (result); | ||
584 | |||
585 | result = PQprepare (db_conn, "set_reveal_ok", | ||
586 | "UPDATE refresh_sessions " | ||
587 | "SET reveal_ok = TRUE " | ||
588 | "WHERE session_pub = $1 ", | ||
589 | 1, NULL); | ||
590 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | ||
591 | { | ||
592 | break_db_err (result); | ||
593 | PQclear (result); | ||
594 | return GNUNET_SYSERR; | ||
595 | } | ||
596 | PQclear (result); | ||
597 | |||
598 | result = PQprepare (db_conn, "get_link", | ||
599 | "SELECT link_vector_enc, ro.denom_pub, ev_sig " | ||
600 | "FROM refresh_melt rm " | ||
601 | " JOIN refresh_order ro USING (session_pub) " | ||
602 | " JOIN refresh_commit_coin rcc USING (session_pub) " | ||
603 | " JOIN refresh_sessions rs USING (session_pub) " | ||
604 | " JOIN refresh_collectable rc USING (session_pub) " | ||
605 | "WHERE rm.coin_pub = $1 " | ||
606 | "AND ro.newcoin_index = rcc.newcoin_index " | ||
607 | "AND ro.newcoin_index = rc.newcoin_index " | ||
608 | "AND rcc.cnc_index = rs.noreveal_index % ( " | ||
609 | " SELECT count(*) FROM refresh_commit_coin rcc2 " | ||
610 | " WHERE rcc2.newcoin_index = 0 AND rcc2.session_pub = rs.session_pub " | ||
611 | " ) ", | ||
612 | 1, NULL); | ||
613 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | ||
614 | { | ||
615 | break_db_err (result); | ||
616 | PQclear (result); | ||
617 | return GNUNET_SYSERR; | ||
618 | } | ||
619 | PQclear (result); | ||
620 | |||
621 | result = PQprepare (db_conn, "get_transfer", | ||
622 | "SELECT transfer_pub, link_secret_enc " | ||
623 | "FROM refresh_melt rm " | ||
624 | " JOIN refresh_commit_link rcl USING (session_pub) " | ||
625 | " JOIN refresh_sessions rs USING (session_pub) " | ||
626 | "WHERE rm.coin_pub = $1 " | ||
627 | "AND rm.oldcoin_index = rcl.oldcoin_index " | ||
628 | "AND rcl.cnc_index = rs.noreveal_index % ( " | ||
629 | " SELECT count(*) FROM refresh_commit_coin rcc2 " | ||
630 | " WHERE newcoin_index = 0 AND rcc2.session_pub = rm.session_pub " | ||
631 | " ) ", | ||
632 | 1, NULL); | ||
633 | if (PGRES_COMMAND_OK != PQresultStatus(result)) | ||
634 | { | ||
635 | break_db_err (result); | ||
636 | PQclear (result); | ||
637 | return GNUNET_SYSERR; | ||
638 | } | ||
639 | PQclear (result); | ||
640 | |||
641 | result = PQprepare (db_conn, "insert_deposit", | ||
642 | "INSERT INTO deposits (" | ||
643 | "coin_pub," | ||
644 | "denom_pub," | ||
645 | "transaction_id," | ||
646 | "amount_value," | ||
647 | "amount_fraction," | ||
648 | "amount_currency," | ||
649 | "merchant_pub," | ||
650 | "h_contract," | ||
651 | "h_wire," | ||
652 | "coin_sig," | ||
653 | "wire" | ||
654 | ") VALUES (" | ||
655 | "$1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11" | ||
656 | ")", | ||
657 | 11, NULL); | ||
658 | EXITIF (PGRES_COMMAND_OK != PQresultStatus(result)); | ||
659 | PQclear (result); | ||
660 | |||
661 | result = PQprepare (db_conn, "get_deposit", | ||
662 | "SELECT " | ||
663 | "coin_pub," | ||
664 | "denom_pub," | ||
665 | "transaction_id," | ||
666 | "amount_value," | ||
667 | "amount_fraction," | ||
668 | "amount_currency," | ||
669 | "merchant_pub," | ||
670 | "h_contract," | ||
671 | "h_wire," | ||
672 | "coin_sig" | ||
673 | " FROM deposits WHERE (" | ||
674 | "coin_pub = $1" | ||
675 | ")", | ||
676 | 1, NULL); | ||
677 | EXITIF (PGRES_COMMAND_OK != PQresultStatus(result)); | ||
678 | PQclear (result); | ||
679 | |||
680 | return GNUNET_OK; | 513 | return GNUNET_OK; |
681 | 514 | #undef PREPARE | |
682 | EXITIF_exit: | ||
683 | break_db_err (result); | ||
684 | PQclear (result); | ||
685 | return GNUNET_SYSERR; | ||
686 | } | 515 | } |
687 | 516 | ||
688 | 517 | ||