LCOV - code coverage report
Current view: top level - src/fe_utils - query_utils.c (source / functions) Hit Total Coverage
Test: PostgreSQL 15devel Lines: 29 33 87.9 %
Date: 2021-09-17 15:07:27 Functions: 3 3 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*-------------------------------------------------------------------------
       2             :  *
       3             :  * Facilities for frontend code to query a databases.
       4             :  *
       5             :  * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
       6             :  * Portions Copyright (c) 1994, Regents of the University of California
       7             :  *
       8             :  * src/fe_utils/query_utils.c
       9             :  *
      10             :  *-------------------------------------------------------------------------
      11             :  */
      12             : #include "postgres_fe.h"
      13             : 
      14             : #include "common/logging.h"
      15             : #include "fe_utils/cancel.h"
      16             : #include "fe_utils/query_utils.h"
      17             : 
      18             : /*
      19             :  * Run a query, return the results, exit program on failure.
      20             :  */
      21             : PGresult *
      22         986 : executeQuery(PGconn *conn, const char *query, bool echo)
      23             : {
      24             :     PGresult   *res;
      25             : 
      26         986 :     if (echo)
      27          94 :         printf("%s\n", query);
      28             : 
      29         986 :     res = PQexec(conn, query);
      30        1972 :     if (!res ||
      31         986 :         PQresultStatus(res) != PGRES_TUPLES_OK)
      32             :     {
      33           4 :         pg_log_error("query failed: %s", PQerrorMessage(conn));
      34           4 :         pg_log_info("query was: %s", query);
      35           4 :         PQfinish(conn);
      36           4 :         exit(1);
      37             :     }
      38             : 
      39         982 :     return res;
      40             : }
      41             : 
      42             : 
      43             : /*
      44             :  * As above for a SQL command (which returns nothing).
      45             :  */
      46             : void
      47         174 : executeCommand(PGconn *conn, const char *query, bool echo)
      48             : {
      49             :     PGresult   *res;
      50             : 
      51         174 :     if (echo)
      52          16 :         printf("%s\n", query);
      53             : 
      54         174 :     res = PQexec(conn, query);
      55         348 :     if (!res ||
      56         174 :         PQresultStatus(res) != PGRES_COMMAND_OK)
      57             :     {
      58           0 :         pg_log_error("query failed: %s", PQerrorMessage(conn));
      59           0 :         pg_log_info("query was: %s", query);
      60           0 :         PQfinish(conn);
      61           0 :         exit(1);
      62             :     }
      63             : 
      64         174 :     PQclear(res);
      65         174 : }
      66             : 
      67             : 
      68             : /*
      69             :  * As above for a SQL maintenance command (returns command success).
      70             :  * Command is executed with a cancel handler set, so Ctrl-C can
      71             :  * interrupt it.
      72             :  */
      73             : bool
      74          26 : executeMaintenanceCommand(PGconn *conn, const char *query, bool echo)
      75             : {
      76             :     PGresult   *res;
      77             :     bool        r;
      78             : 
      79          26 :     if (echo)
      80          16 :         printf("%s\n", query);
      81             : 
      82          26 :     SetCancelConn(conn);
      83          26 :     res = PQexec(conn, query);
      84          26 :     ResetCancelConn();
      85             : 
      86          26 :     r = (res && PQresultStatus(res) == PGRES_COMMAND_OK);
      87             : 
      88          26 :     if (res)
      89          26 :         PQclear(res);
      90             : 
      91          26 :     return r;
      92             : }

Generated by: LCOV version 1.13