LCOV - code coverage report
Current view: top level - src/interfaces/ecpg/test/sql - binary.pgc (source / functions) Coverage Total Hit
Test: Code coverage Lines: 0.0 % 42 0
Test Date: 2026-01-26 10:56:24 Functions: 0.0 % 1 0
Legend: Lines:     hit not hit

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

Generated by: LCOV version 2.3.2-1