LCOV - code coverage report
Current view: top level - src/interfaces/ecpg/test/sql - binary.pgc (source / functions) Coverage Total Hit
Test: PostgreSQL 20devel Lines: 100.0 % 38 38
Test Date: 2026-07-25 10:15:40 Functions: 100.0 % 1 1
Legend: Lines:     hit not hit
Branches: + taken - not taken # not executed
Branches: 55.0 % 40 22

             Branch data     Line data    Source code
       1                 :             : #include <stdio.h>
       2                 :             : #include <stdlib.h>
       3                 :             : 
       4                 :             : EXEC SQL include ../regression;
       5                 :             : 
       6                 :             : EXEC SQL BEGIN DECLARE SECTION;
       7                 :             : struct TBempl
       8                 :             : {
       9                 :             :   long idnum;
      10                 :             :   char name[21];
      11                 :             :   short accs;
      12                 :             :   char byte[20];
      13                 :             : };
      14                 :             : EXEC SQL END DECLARE SECTION;
      15                 :             : 
      16                 :             : EXEC SQL WHENEVER SQLERROR STOP;
      17                 :             : 
      18                 :             : int
      19                 :           2 : main (void)
      20                 :             : {
      21                 :             :   EXEC SQL BEGIN DECLARE SECTION;
      22                 :             :   struct TBempl empl;
      23                 :           2 :   char *pointer = NULL;
      24                 :           2 :   char *data = "\\001\\155\\000\\212";
      25                 :             :   EXEC SQL END DECLARE SECTION;
      26                 :             :   int i;
      27                 :             : 
      28                 :           2 :   ECPGdebug (1, stderr);
      29                 :             : 
      30                 :           2 :   empl.idnum = 1;
      31                 :           2 :   EXEC SQL connect to REGRESSDB1;
      32         [ -  + ]:           2 :   EXEC SQL set bytea_output = escape;
      33         [ -  + ]:           2 :   EXEC SQL create table empl
      34                 :             :     (idnum integer, name char (20), accs smallint, byte bytea);
      35         [ -  + ]:           2 :   EXEC SQL insert into empl values (1, 'first user', 320, :data);
      36         [ -  + ]:           2 :   EXEC SQL DECLARE C CURSOR FOR select name, accs, byte from empl where idnum =:empl.idnum;
      37         [ -  + ]:           2 :   EXEC SQL OPEN C;
      38         [ -  + ]:           2 :   EXEC SQL FETCH C INTO:empl.name,:empl.accs,:empl.byte;
      39         [ -  + ]:           2 :   printf ("name=%s, accs=%d byte=%s\n", empl.name, empl.accs, empl.byte);
      40                 :             : 
      41                 :           2 :   EXEC SQL CLOSE C;
      42         [ -  + ]:           2 : 
      43                 :           2 :   memset(empl.name, 0, 21L);
      44                 :           2 :   EXEC SQL DECLARE B BINARY CURSOR FOR select name, accs, byte from empl where idnum =:empl.idnum;
      45         [ -  + ]:           2 :   EXEC SQL OPEN B;
      46         [ -  + ]:           2 :   EXEC SQL FETCH B INTO :empl.name,:empl.accs,:empl.byte;
      47         [ -  + ]:           2 :   EXEC SQL CLOSE B;
      48         [ -  + ]:           2 : 
      49                 :             :   /* do not print a.accs because big/little endian will have different outputs here */
      50                 :           2 :   printf ("name=%s, byte=", empl.name);
      51         [ +  + ]:          10 :   for (i=0; i<4; i++)
      52                 :           8 :     printf("(%o)", (unsigned char)empl.byte[i]);
      53                 :           2 :   printf("\n");
      54                 :             : 
      55                 :           2 :   EXEC SQL DECLARE A BINARY CURSOR FOR select byte from empl where idnum =:empl.idnum;
      56         [ -  + ]:           2 :   EXEC SQL OPEN A;
      57         [ -  + ]:           2 :   EXEC SQL FETCH A INTO :pointer;
      58         [ -  + ]:           2 :   EXEC SQL CLOSE A;
      59         [ -  + ]:           2 : 
      60         [ +  - ]:           2 :   if (pointer) {
      61                 :           2 :     printf ("pointer=");
      62         [ +  + ]:          10 :     for (i=0; i<4; i++)
      63                 :           8 :         printf("(%o)", (unsigned char)pointer[i]);
      64                 :           2 :     printf("\n");
      65                 :           2 :     free(pointer);
      66                 :             :   }
      67                 :             : 
      68                 :           2 :   EXEC SQL disconnect;
      69         [ -  + ]:           2 :   exit (0);
      70                 :             : }
        

Generated by: LCOV version 2.0-1