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

             Branch data     Line data    Source code
       1                 :             : #include <stdio.h>
       2                 :             : #include <stdlib.h>
       3                 :             : #include <string.h>
       4                 :             : 
       5                 :             : /* test automatic prepare for all statements */
       6                 :             : EXEC SQL INCLUDE ../regression;
       7                 :             : 
       8                 :           4 : static void test(void) {
       9                 :             :   EXEC SQL BEGIN DECLARE SECTION;
      10                 :           4 :     int item[4], ind[4], i = 1;
      11                 :             :     int item1, ind1;
      12                 :           4 :     char sqlstr[64] = "SELECT item2 FROM T ORDER BY item2 NULLS LAST";
      13                 :             :   EXEC SQL END DECLARE SECTION;
      14                 :             : 
      15                 :           4 :   ECPGdebug(1, stderr);
      16                 :           4 :   EXEC SQL CONNECT TO REGRESSDB1;
      17                 :             : 
      18                 :             :   EXEC SQL WHENEVER SQLWARNING SQLPRINT;
      19                 :             :   EXEC SQL WHENEVER SQLERROR SQLPRINT;
      20                 :             : 
      21                 :           4 :   EXEC SQL CREATE TABLE T ( Item1 int, Item2 int );
      22   [ -  +  -  + ]:           4 : 
      23                 :           4 :   EXEC SQL INSERT INTO T VALUES ( 1, null );
      24   [ -  +  -  + ]:           4 :   EXEC SQL INSERT INTO T VALUES ( 1, :i );
      25   [ -  +  -  + ]:           4 :   i++;
      26                 :           4 :   EXEC SQL INSERT INTO T VALUES ( 1, :i );
      27   [ -  +  -  + ]:           4 :   EXEC SQL PREPARE I AS INSERT INTO T VALUES ( 1, 2 );
      28   [ -  +  -  + ]:           4 :   EXEC SQL EXECUTE I;
      29   [ -  +  -  + ]:           4 : 
      30                 :           4 :   EXEC SQL SELECT Item2 INTO :item:ind FROM T ORDER BY Item2 NULLS LAST;
      31   [ -  +  -  + ]:           4 : 
      32         [ +  + ]:          20 :   for (i=0; i<4; i++)
      33         [ +  + ]:          16 :     printf("item[%d] = %d\n", i, ind[i] ? -1 : item[i]);
      34                 :             : 
      35                 :             :   EXEC SQL DECLARE C CURSOR FOR SELECT Item1 FROM T;
      36                 :             : 
      37                 :           4 :   EXEC SQL OPEN C;
      38   [ -  +  -  + ]:           4 : 
      39                 :           4 :   EXEC SQL FETCH 1 IN C INTO :i;
      40   [ -  +  -  + ]:           4 :   printf("i = %d\n", i);
      41                 :             : 
      42                 :           4 :   EXEC SQL CLOSE C;
      43   [ -  +  -  + ]:           4 : 
      44                 :           4 :   EXEC SQL PREPARE stmt1 FROM :sqlstr;
      45   [ -  +  -  + ]:           4 : 
      46                 :             :   EXEC SQL DECLARE cur1 CURSOR FOR stmt1;
      47                 :             : 
      48                 :           4 :   EXEC SQL OPEN cur1;
      49   [ -  +  -  + ]:           4 : 
      50                 :             :   EXEC SQL WHENEVER NOT FOUND DO BREAK;
      51                 :             : 
      52                 :           4 :   i = 0;
      53         [ +  - ]:          20 :   while (i < 100)
      54                 :             :   {
      55                 :          20 :     EXEC SQL FETCH cur1 INTO :item1:ind1;
      56   [ +  +  -  +  :          20 :     printf("item[%d] = %d\n", i, ind1 ? -1 : item1);
             -  +  +  + ]
      57                 :          16 :     i++;
      58                 :             :   }
      59                 :             : 
      60                 :           4 :   EXEC SQL CLOSE cur1;
      61   [ -  +  -  + ]:           4 : 
      62                 :           4 :   EXEC SQL DROP TABLE T;
      63   [ -  +  -  + ]:           4 : 
      64                 :           4 :   EXEC SQL DISCONNECT ALL;
      65   [ -  +  -  + ]:           4 : }
      66                 :             : 
      67                 :           2 : int main(void) {
      68                 :           2 :   test();
      69                 :           2 :   test();     /* retry */
      70                 :             : 
      71                 :           2 :   return 0;
      72                 :             : }
        

Generated by: LCOV version 2.0-1