LCOV - code coverage report
Current view: top level - src/interfaces/ecpg/test/preproc - array_of_struct.pgc (source / functions) Coverage Total Hit
Test: Code coverage Lines: 0.0 % 62 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              : 
       3              : exec sql include ../regression;
       4              : 
       5              : EXEC SQL WHENEVER sqlerror sqlprint;
       6              : EXEC SQL WHENEVER sqlwarning sqlprint;
       7              : EXEC SQL WHENEVER not found sqlprint;
       8              : 
       9              : EXEC SQL TYPE customer IS
      10              :     struct
      11              :     {
      12              :         varchar name[50];
      13              :         int     phone;
      14              :     };
      15              : 
      16              : EXEC SQL TYPE cust_ind IS
      17              :     struct ind
      18              :     {
      19              :         short   name_ind;
      20              :         short   phone_ind;
      21              :     };
      22              : 
      23              : EXEC SQL TYPE company IS
      24              :     struct
      25              :     {
      26              :         customer customers[10];
      27              :     };
      28              : 
      29            0 : int main()
      30              : {
      31              :     EXEC SQL begin declare section;
      32            0 :       customer  custs1[10];
      33            0 :       cust_ind  inds[10];
      34              :       typedef struct
      35              :       {
      36              :         varchar name[50];
      37              :         int     phone;
      38              :       } customer2;
      39            0 :       customer2  custs2[10];
      40              :       struct customer3
      41              :       {
      42              :         varchar name[50];
      43              :         int     phone;
      44            0 :       } custs3[10];
      45              :       struct customer4
      46              :       {
      47              :         varchar name[50];
      48              :         int     phone;
      49            0 :       } custs4;
      50              : 
      51            0 :       company acme;
      52              : 
      53            0 :       int r;
      54            0 :       varchar onlyname[2][50];
      55              :     EXEC SQL end declare section;
      56              : 
      57            0 :     ECPGdebug(1, stderr);
      58              : 
      59            0 :     EXEC SQL connect to REGRESSDB1;
      60            0 : 
      61            0 :     EXEC SQL create table customers (c varchar(50), p int);
      62            0 : 
      63              :     /* First we'll insert some data using C variable references */
      64            0 :     strcpy(custs1[0].name.arr, "John Doe");
      65            0 :     custs1[0].name.len = strlen(custs1[0].name.arr);
      66            0 :     custs1[0].phone = 12345;
      67              : 
      68            0 :     strcpy(acme.customers[1].name.arr, "Jane Doe");
      69            0 :     acme.customers[1].name.len = strlen(acme.customers[1].name.arr);
      70            0 :     acme.customers[1].phone = 67890;
      71              : 
      72            0 :     EXEC SQL insert into customers values (:custs1->name,
      73            0 :                                            :custs1[0].phone);
      74            0 :     EXEC SQL insert into customers values (:acme.customers[1].name,
      75            0 :                                            :acme.customers[1].phone);
      76            0 : 
      77            0 :     /* Clear the array, to be sure reading back into it actually gets data */
      78            0 :     memset(custs1, 0, sizeof(customer) * 10);
      79              : 
      80              :     /* Now read back the data */
      81            0 :     EXEC SQL select * INTO :custs1:inds from customers limit 2;
      82            0 :     printf("custs1:\n");
      83            0 :     for (r = 0; r < 2; r++)
      84            0 :     {
      85            0 :             printf( "name  - %s\n", custs1[r].name.arr );
      86            0 :             printf( "phone - %d\n", custs1[r].phone );
      87            0 :     }
      88              : 
      89            0 :     EXEC SQL select * INTO :custs2:inds from customers limit 2;
      90            0 :     printf("\ncusts2:\n");
      91            0 :     for (r = 0; r < 2; r++)
      92            0 :     {
      93            0 :             printf( "name  - %s\n", custs2[r].name.arr );
      94            0 :             printf( "phone - %d\n", custs2[r].phone );
      95            0 :     }
      96              : 
      97            0 :     EXEC SQL select * INTO :custs3:inds from customers limit 2;
      98            0 :     printf("\ncusts3:\n");
      99            0 :     for (r = 0; r < 2; r++)
     100            0 :     {
     101            0 :             printf( "name  - %s\n", custs3[r].name.arr );
     102            0 :             printf( "phone - %d\n", custs3[r].phone );
     103            0 :     }
     104              : 
     105            0 :     EXEC SQL select * INTO :custs4:inds[0] from customers limit 1;
     106            0 :     printf("\ncusts4:\n");
     107            0 :     printf( "name  - %s\n", custs4.name.arr );
     108            0 :     printf( "phone - %d\n", custs4.phone );
     109            0 : 
     110            0 :     EXEC SQL select c INTO :onlyname from customers limit 2;
     111            0 :     printf("\nname:\n");
     112            0 :     for (r = 0; r < 2; r++)
     113              :     {
     114            0 :             printf( "name  - %s\n", onlyname[r].arr );
     115            0 :     }
     116              : 
     117            0 :     EXEC SQL disconnect all;
     118            0 : 
     119            0 :     return 0;
     120            0 : }
        

Generated by: LCOV version 2.3.2-1