LCOV - code coverage report
Current view: top level - src/interfaces/ecpg/test/compat_informix - describe.pgc (source / functions) Coverage Total Hit
Test: Code coverage Lines: 0.0 % 135 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 <stdlib.h>
       2              : #include <string.h>
       3              : 
       4              : exec sql include ../regression;
       5              : exec sql include sqlda.h;
       6              : 
       7              : exec sql whenever sqlerror stop;
       8              : 
       9              : sqlda_t *sqlda1, *sqlda2, *sqlda3;
      10              : 
      11              : int
      12            0 : main (void)
      13              : {
      14              : exec sql begin declare section;
      15            0 :         char    *stmt1 = "SELECT id, t FROM descr_t1";
      16            0 :         char    *stmt2 = "SELECT id, t FROM descr_t1 WHERE id = -1";
      17            0 :         int     i, count1, count2;
      18            0 :         char    field_name1[30] = "not set";
      19            0 :         char    field_name2[30] = "not set";
      20              : exec sql end declare section;
      21              : 
      22            0 :         char msg[128];
      23              : 
      24            0 :         ECPGdebug(1, stderr);
      25              : 
      26            0 :         strcpy(msg, "connect");
      27            0 :         exec sql connect to REGRESSDB1;
      28            0 : 
      29            0 :         strcpy(msg, "set");
      30            0 :         exec sql set datestyle to iso;
      31            0 : 
      32            0 :         strcpy(msg, "create");
      33            0 :         exec sql create table descr_t1(id serial primary key, t text);
      34            0 : 
      35            0 :         strcpy(msg, "insert");
      36            0 :         exec sql insert into descr_t1(id, t) values (default, 'a');
      37            0 :         exec sql insert into descr_t1(id, t) values (default, 'b');
      38            0 :         exec sql insert into descr_t1(id, t) values (default, 'c');
      39            0 :         exec sql insert into descr_t1(id, t) values (default, 'd');
      40            0 : 
      41            0 :         strcpy(msg, "commit");
      42            0 :         exec sql commit;
      43            0 : 
      44              :         /*
      45              :          * Test DESCRIBE with a query producing tuples.
      46              :          * DESCRIPTOR and SQL DESCRIPTOR are NOT the same in
      47              :          * Informix-compat mode.
      48              :          */
      49              : 
      50            0 :         strcpy(msg, "allocate");
      51            0 :         exec sql allocate descriptor desc1;
      52            0 :         exec sql allocate descriptor desc2;
      53            0 : 
      54            0 :         strcpy(msg, "prepare");
      55            0 :         exec sql prepare st_id1 FROM :stmt1;
      56            0 : 
      57            0 :         sqlda1 = sqlda2 = sqlda3 = NULL;
      58              : 
      59            0 :         strcpy(msg, "describe");
      60            0 :         exec sql describe st_id1 into sql descriptor desc1;
      61            0 :         exec sql describe st_id1 using sql descriptor desc2;
      62              : 
      63            0 :         exec sql describe st_id1 into descriptor sqlda1;
      64            0 :         exec sql describe st_id1 using descriptor sqlda2;
      65            0 :         exec sql describe st_id1 into sqlda3;
      66              : 
      67            0 :         if (sqlda1 == NULL)
      68              :         {
      69            0 :                 printf("sqlda1 NULL\n");
      70            0 :                 exit(1);
      71              :         }
      72              : 
      73            0 :         if (sqlda2 == NULL)
      74              :         {
      75            0 :                 printf("sqlda2 NULL\n");
      76            0 :                 exit(1);
      77              :         }
      78              : 
      79            0 :         if (sqlda3 == NULL)
      80              :         {
      81            0 :                 printf("sqlda3 NULL\n");
      82            0 :                 exit(1);
      83              :         }
      84              : 
      85            0 :         strcpy(msg, "get descriptor");
      86            0 :         exec sql get descriptor desc1 :count1 = count;
      87            0 :         exec sql get descriptor desc1 :count2 = count;
      88            0 : 
      89            0 :         if (count1 != count2)
      90              :         {
      91            0 :                 printf("count1 (%d) != count2 (%d)\n", count1, count2);
      92            0 :                 exit(1);
      93              :         }
      94              : 
      95            0 :         if (count1 != sqlda1->sqld)
      96              :         {
      97            0 :                 printf("count1 (%d) != sqlda1->sqld (%d)\n", count1, sqlda1->sqld);
      98            0 :                 exit(1);
      99              :         }
     100              : 
     101            0 :         if (count1 != sqlda2->sqld)
     102              :         {
     103            0 :                 printf("count1 (%d) != sqlda2->sqld (%d)\n", count1, sqlda2->sqld);
     104            0 :                 exit(1);
     105              :         }
     106              : 
     107            0 :         if (count1 != sqlda3->sqld)
     108              :         {
     109            0 :                 printf("count1 (%d) != sqlda3->sqld (%d)\n", count1, sqlda3->sqld);
     110            0 :                 exit(1);
     111              :         }
     112              : 
     113            0 :         for (i = 1; i <= count1; i++)
     114              :         {
     115            0 :                 exec sql get descriptor desc1 value :i :field_name1 = name;
     116            0 :                 exec sql get descriptor desc2 value :i :field_name2 = name;
     117            0 :                 printf("%d\n\tfield_name1 '%s'\n\tfield_name2 '%s'\n\t"
     118              :                         "sqlda1 '%s'\n\tsqlda2 '%s'\n\tsqlda3 '%s'\n",
     119            0 :                         i, field_name1, field_name2,
     120            0 :                         sqlda1->sqlvar[i-1].sqlname,
     121            0 :                         sqlda2->sqlvar[i-1].sqlname,
     122            0 :                         sqlda3->sqlvar[i-1].sqlname);
     123            0 :         }
     124              : 
     125            0 :         strcpy(msg, "deallocate");
     126            0 :         exec sql deallocate descriptor desc1;
     127            0 :         exec sql deallocate descriptor desc2;
     128            0 :         free(sqlda1);
     129            0 :         free(sqlda2);
     130            0 :         free(sqlda3);
     131              : 
     132            0 :         exec sql deallocate prepare st_id1;
     133            0 : 
     134              :         /* Test DESCRIBE with a query not producing tuples */
     135              : 
     136            0 :         strcpy(msg, "allocate");
     137            0 :         exec sql allocate descriptor desc1;
     138            0 :         exec sql allocate descriptor desc2;
     139            0 : 
     140            0 :         strcpy(msg, "prepare");
     141            0 :         exec sql prepare st_id2 FROM :stmt2;
     142            0 : 
     143            0 :         sqlda1 = sqlda2 = sqlda3 = NULL;
     144              : 
     145            0 :         strcpy(msg, "describe");
     146            0 :         exec sql describe st_id2 into sql descriptor desc1;
     147            0 :         exec sql describe st_id2 using sql descriptor desc2;
     148              : 
     149            0 :         exec sql describe st_id2 into descriptor sqlda1;
     150            0 :         exec sql describe st_id2 using descriptor sqlda2;
     151            0 :         exec sql describe st_id2 into sqlda3;
     152              : 
     153            0 :         if (sqlda1 == NULL || sqlda2 == NULL || sqlda3 == NULL)
     154            0 :                 exit(1);
     155              : 
     156            0 :         strcpy(msg, "get descriptor");
     157            0 :         exec sql get descriptor desc1 :count1 = count;
     158            0 :         exec sql get descriptor desc1 :count2 = count;
     159            0 : 
     160            0 :         if (!(  count1 == count2 &&
     161            0 :                 count1 == sqlda1->sqld &&
     162            0 :                 count1 == sqlda2->sqld &&
     163            0 :                 count1 == sqlda3->sqld))
     164            0 :                 exit(1);
     165              : 
     166            0 :         for (i = 1; i <= count1; i++)
     167              :         {
     168            0 :                 exec sql get descriptor desc1 value :i :field_name1 = name;
     169            0 :                 exec sql get descriptor desc2 value :i :field_name2 = name;
     170            0 :                 printf("%d\n\tfield_name1 '%s'\n\tfield_name2 '%s'\n\t"
     171              :                         "sqlda1 '%s'\n\tsqlda2 '%s'\n\tsqlda3 '%s'\n",
     172            0 :                         i, field_name1, field_name2,
     173            0 :                         sqlda1->sqlvar[i-1].sqlname,
     174            0 :                         sqlda2->sqlvar[i-1].sqlname,
     175            0 :                         sqlda3->sqlvar[i-1].sqlname);
     176            0 :         }
     177              : 
     178            0 :         strcpy(msg, "deallocate");
     179            0 :         exec sql deallocate descriptor desc1;
     180            0 :         exec sql deallocate descriptor desc2;
     181            0 :         free(sqlda1);
     182            0 :         free(sqlda2);
     183            0 :         free(sqlda3);
     184              : 
     185            0 :         exec sql deallocate prepare st_id2;
     186            0 : 
     187              :         /* End test */
     188              : 
     189            0 :         strcpy(msg, "drop");
     190            0 :         exec sql drop table descr_t1;
     191            0 : 
     192            0 :         strcpy(msg, "commit");
     193            0 :         exec sql commit;
     194            0 : 
     195            0 :         strcpy(msg, "disconnect");
     196            0 :         exec sql disconnect;
     197            0 : 
     198            0 :         return 0;
     199            0 : }
        

Generated by: LCOV version 2.3.2-1