LCOV - code coverage report
Current view: top level - src/interfaces/ecpg/test/preproc - whenever.pgc (source / functions) Coverage Total Hit
Test: PostgreSQL 20devel Lines: 100.0 % 40 40
Test Date: 2026-07-25 22:15:46 Functions: 100.0 % 4 4
Legend: Lines:     hit not hit
Branches: + taken - not taken # not executed
Branches: 50.0 % 58 29

             Branch data     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