LCOV - code coverage report
Current view: top level - src/interfaces/ecpg/test/preproc - whenever.pgc (source / functions) Coverage Total Hit
Test: PostgreSQL 19devel Lines: 100.0 % 40 40
Test Date: 2026-03-03 06:14:53 Functions: 100.0 % 4 4
Legend: Lines:     hit not hit

            Line data    Source code
       1              : #include <stdlib.h>
       2              : 
       3              : exec sql include ../regression;
       4              : 
       5              : exec sql whenever sqlerror sqlprint;
       6              : 
       7            2 : static void print(const char *msg)
       8              : {
       9            2 :         fprintf(stderr, "Error in statement '%s':\n", msg);
      10            2 :         sqlprint();
      11            2 : }
      12              : 
      13            2 : static void print2(void)
      14              : {
      15            2 :         fprintf(stderr, "Found another error\n");
      16            2 :         sqlprint();
      17            2 : }
      18              : 
      19            2 : static void warn(void)
      20              : {
      21            2 :         fprintf(stderr, "Warning: At least one column was truncated\n");
      22            2 : }
      23              : 
      24            2 : int main(void)
      25              : {
      26              :     exec sql int i;
      27              :     exec sql char c[6];
      28              : 
      29            2 :     ECPGdebug(1, stderr);
      30              : 
      31            2 :     exec sql connect to REGRESSDB1;
      32            2 :     exec sql create table test(i int, c char(10));
      33            2 :     exec sql insert into test values(1, 'abcdefghij');
      34            2 : 
      35              :     exec sql whenever sqlwarning do warn();
      36            2 :     exec sql select * into :i, :c from test;
      37            2 :     exec sql rollback;
      38            2 : 
      39            2 :     exec sql select * into :i from nonexistent;
      40            2 :     exec sql rollback;
      41            2 : 
      42              :     exec sql whenever sqlerror do print("select");
      43            2 :     exec sql select * into :i from nonexistent;
      44            2 :     exec sql rollback;
      45            2 : 
      46              :     exec sql whenever sqlerror call print2();
      47            2 :     exec sql select * into :i from nonexistent;
      48            2 :     exec sql rollback;
      49            2 : 
      50              :     exec sql whenever sqlerror continue;
      51            2 :     exec sql select * into :i from nonexistent;
      52            2 :     exec sql rollback;
      53            2 : 
      54              :     exec sql whenever sqlerror goto error;
      55            2 :     exec sql select * into :i from nonexistent;
      56            2 :     printf("Should not be reachable\n");
      57              : 
      58            2 :     error:
      59            2 :     exec sql rollback;
      60            2 : 
      61              :     exec sql whenever sqlerror stop;
      62              :     /* This cannot fail, thus we don't get an exit value not equal 0. */
      63              :     /* However, it still test the precompiler output. */
      64            2 :     exec sql select 1 into :i;
      65            2 :     exec sql rollback;
      66            2 :     exit (0);
      67              : }
        

Generated by: LCOV version 2.0-1