Line data Source code
1 : /* 2 : This file is part of TALER 3 : Copyright (C) 2025 Taler Systems SA 4 : 5 : TALER is free software; you can redistribute it and/or modify it under the 6 : terms of the GNU General Public License as published by the Free Software 7 : Foundation; either version 3, or (at your option) any later version. 8 : 9 : TALER is distributed in the hope that it will be useful, but WITHOUT ANY 10 : WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 11 : A PARTICULAR PURPOSE. See the GNU General Public License for more details. 12 : 13 : You should have received a copy of the GNU General Public License along with 14 : TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> 15 : */ 16 : /** 17 : * @file backenddb/pg_gc.c 18 : * @brief Implementation of the gc function for Postgres 19 : * @author Christian Grothoff 20 : */ 21 : #include "platform.h" 22 : #include <taler/taler_error_codes.h> 23 : #include <taler/taler_dbevents.h> 24 : #include <taler/taler_pq_lib.h> 25 : #include "pg_gc.h" 26 : #include "pg_helper.h" 27 : 28 : 29 : enum GNUNET_GenericReturnValue 30 0 : TMH_PG_gc (void *cls) 31 : { 32 0 : struct PostgresClosure *pg = cls; 33 0 : struct GNUNET_PQ_QueryParam params[] = { 34 : GNUNET_PQ_query_param_end 35 : }; 36 : struct GNUNET_PQ_Context *conn; 37 : enum GNUNET_GenericReturnValue ret; 38 : 39 : { 40 0 : struct GNUNET_PQ_ExecuteStatement es[] = { 41 0 : GNUNET_PQ_make_try_execute ("SET search_path TO merchant;"), 42 : GNUNET_PQ_EXECUTE_STATEMENT_END 43 : }; 44 0 : struct GNUNET_PQ_PreparedStatement ps[] = { 45 0 : GNUNET_PQ_make_prepare ("run_gc", 46 : "CALL merchant_do_gc ();"), 47 : GNUNET_PQ_PREPARED_STATEMENT_END 48 : }; 49 : 50 0 : conn = GNUNET_PQ_connect_with_cfg (pg->cfg, 51 : "merchantdb-postgres", 52 : NULL, 53 : es, 54 : ps); 55 : } 56 0 : if (NULL == conn) 57 0 : return GNUNET_SYSERR; 58 : 59 0 : if (0 > GNUNET_PQ_eval_prepared_non_select (conn, 60 : "run_gc", 61 : params)) 62 0 : ret = GNUNET_SYSERR; 63 : else 64 0 : ret = GNUNET_OK; 65 0 : GNUNET_PQ_disconnect (conn); 66 0 : return ret; 67 : }