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

            Line data    Source code
       1              : /* dynamic SQL test program
       2              :  */
       3              : 
       4              : #include <stdio.h>
       5              : #include <stdlib.h>
       6              : 
       7              : exec sql include sql3types;
       8              : exec sql include sqlca;
       9              : exec sql include ../regression;
      10              : 
      11              : static void
      12            0 : error (void)
      13              : {
      14            0 :   printf ("\n#%ld:%s\n", sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc);
      15            0 :   exit (1);
      16              : }
      17              : 
      18              : int
      19            0 : main ()
      20              : {
      21              :   exec sql begin declare section;
      22            0 :   int COUNT;
      23            0 :   int INTVAR;
      24            0 :   int INDEX;
      25            0 :   int INDICATOR;
      26            0 :   int TYPE, LENGTH, OCTET_LENGTH, PRECISION, SCALE, RETURNED_OCTET_LENGTH;
      27            0 :   int DATETIME_INTERVAL_CODE;
      28            0 :   char NAME[120], BOOLVAR;
      29            0 :   char STRINGVAR[1024];
      30            0 :   double DOUBLEVAR;
      31            0 :   char *QUERY;
      32              :   exec sql end declare section;
      33            0 :   int done = 0;
      34              : 
      35              :   exec sql var BOOLVAR is bool;
      36              : 
      37            0 :   ECPGdebug (1, stderr);
      38              : 
      39            0 :   QUERY = "select * from dyntest";
      40              : 
      41              :   exec sql whenever sqlerror
      42              :   do
      43              :       error ();
      44              : 
      45            0 :   exec sql allocate descriptor MYDESC;
      46            0 : 
      47            0 :   exec sql connect to REGRESSDB1;
      48            0 : 
      49            0 :   exec sql set datestyle to german;
      50            0 : 
      51            0 :   exec sql create table dyntest (name char (14), d float8, i int,
      52              :                                  bignumber int8, b boolean, comment text,
      53              :                                  day date);
      54            0 :   exec sql insert into dyntest values ('first entry', 14.7, 14, 123045607890, true, 'The world''s most advanced open source database.', '1987-07-14');
      55            0 :   exec sql insert into dyntest values ('second entry', 1407.87, 1407, 987065403210, false, 'The elephant never forgets.', '1999-11-5');
      56            0 : 
      57            0 :   exec sql prepare MYQUERY from :QUERY;
      58            0 :   exec sql declare MYCURS cursor for MYQUERY;
      59              : 
      60            0 :   exec sql open MYCURS;
      61            0 : 
      62            0 :   while (1)
      63              :     {
      64            0 :       exec sql fetch in MYCURS into sql descriptor MYDESC;
      65            0 : 
      66            0 :       if (sqlca.sqlcode)
      67            0 :         break;
      68              : 
      69            0 :       exec sql get descriptor MYDESC:COUNT = count;
      70            0 :       if (!done)
      71              :         {
      72            0 :           printf ("Found %d columns\n", COUNT);
      73            0 :           done = 1;
      74            0 :         }
      75              : 
      76            0 :       for (INDEX = 1; INDEX <= COUNT; ++INDEX)
      77              :         {
      78            0 :         exec sql get descriptor MYDESC value :INDEX
      79              :                 :TYPE = type,
      80            0 :                 :LENGTH = length,
      81              :                 :OCTET_LENGTH = octet_length,
      82              :                 :RETURNED_OCTET_LENGTH = returned_octet_length,
      83              :                 :PRECISION = precision,
      84              :                 :SCALE = scale,
      85              :                 :NAME = name,
      86              :                 :INDICATOR = indicator;
      87            0 :           printf ("%2d\t%s (type: %d length: %d precision: %d scale: %d = " , INDEX, NAME, TYPE, LENGTH, PRECISION, SCALE);
      88            0 :           switch (TYPE)
      89              :             {
      90              :             case SQL3_BOOLEAN:
      91            0 :               printf ("bool");
      92            0 :               break;
      93              :             case SQL3_NUMERIC:
      94            0 :               printf ("numeric(%d,%d)", PRECISION, SCALE);
      95            0 :               break;
      96              :             case SQL3_DECIMAL:
      97            0 :               printf ("decimal(%d,%d)", PRECISION, SCALE);
      98            0 :               break;
      99              :             case SQL3_INTEGER:
     100            0 :               printf ("integer");
     101            0 :               break;
     102              :             case SQL3_SMALLINT:
     103            0 :               printf ("smallint");
     104            0 :               break;
     105              :             case SQL3_FLOAT:
     106            0 :               printf ("float(%d,%d)", PRECISION, SCALE);
     107            0 :               break;
     108              :             case SQL3_REAL:
     109            0 :               printf ("real");
     110            0 :               break;
     111              :             case SQL3_DOUBLE_PRECISION:
     112            0 :               printf ("double precision");
     113            0 :               break;
     114              :             case SQL3_DATE_TIME_TIMESTAMP:
     115            0 :             exec sql get descriptor MYDESC value :INDEX
     116              :                         :DATETIME_INTERVAL_CODE = datetime_interval_code;
     117            0 :               switch (DATETIME_INTERVAL_CODE)
     118              :                 {
     119              :                 case SQL3_DDT_DATE:
     120            0 :                   printf ("date");
     121            0 :                   break;
     122              :                 case SQL3_DDT_TIME:
     123            0 :                   printf ("time");
     124            0 :                   break;
     125              :                 case SQL3_DDT_TIMESTAMP:
     126            0 :                   printf ("timestamp");
     127            0 :                   break;
     128              :                 case SQL3_DDT_TIME_WITH_TIME_ZONE:
     129            0 :                   printf ("time with time zone");
     130            0 :                   break;
     131              :                 case SQL3_DDT_TIMESTAMP_WITH_TIME_ZONE:
     132            0 :                   printf ("timestamp with time zone");
     133            0 :                   break;
     134              :                 }
     135            0 :               break;
     136              :             case SQL3_INTERVAL:
     137            0 :               printf ("interval");
     138            0 :               break;
     139              :             case SQL3_CHARACTER:
     140            0 :               if (LENGTH > 0)
     141            0 :                 printf ("char(%d)", LENGTH);
     142              :               else
     143            0 :                 printf ("text");
     144            0 :               break;
     145              :             case SQL3_CHARACTER_VARYING:
     146            0 :               if (LENGTH > 0)
     147            0 :                 printf ("varchar(%d)", LENGTH);
     148              :               else
     149            0 :                 printf ("varchar()");
     150            0 :               break;
     151              :             default:
     152            0 :               printf ("<SQL3 %d>", TYPE);
     153            0 :               break;
     154              :             }
     155            0 :           printf (")\n\toctet_length: %d returned_octet_length: %d)\n\t= ",
     156            0 :                   OCTET_LENGTH, RETURNED_OCTET_LENGTH);
     157            0 :           if (INDICATOR == -1)
     158            0 :             printf ("NULL\n");
     159              :           else
     160            0 :             switch (TYPE)
     161              :               {
     162              :               case SQL3_BOOLEAN:
     163            0 :               exec sql get descriptor MYDESC value :INDEX :BOOLVAR = data;
     164            0 :                 printf ("%s\n", BOOLVAR ? "true" : "false");
     165            0 :                 break;
     166              :               case SQL3_INTEGER:
     167              :               case SQL3_SMALLINT:
     168            0 :               exec sql get descriptor MYDESC value :INDEX :INTVAR = data;
     169            0 :                 printf ("%d\n", INTVAR);
     170            0 :                 break;
     171              :               case SQL3_DOUBLE_PRECISION:
     172            0 :               exec sql get descriptor MYDESC value :INDEX :DOUBLEVAR = data;
     173            0 :                 printf ("%.*f\n", PRECISION, DOUBLEVAR);
     174            0 :                 break;
     175              :               case SQL3_DATE_TIME_TIMESTAMP:
     176            0 :               exec sql get descriptor MYDESC value :INDEX
     177            0 :                         :DATETIME_INTERVAL_CODE = datetime_interval_code,
     178              :                 :STRINGVAR = data;
     179            0 :                 printf ("%d \"%s\"\n", DATETIME_INTERVAL_CODE, STRINGVAR);
     180            0 :                 break;
     181              :               case SQL3_CHARACTER:
     182              :               case SQL3_CHARACTER_VARYING:
     183            0 :               exec sql get descriptor MYDESC value :INDEX :STRINGVAR = data;
     184            0 :                 printf ("\"%s\"\n", STRINGVAR);
     185            0 :                 break;
     186              :               default:
     187            0 :               exec sql get descriptor MYDESC value :INDEX :STRINGVAR = data;
     188            0 :                 printf ("<\"%s\">\n", STRINGVAR);
     189            0 :                 break;
     190              :               }
     191            0 :         }
     192              :     }
     193              : 
     194            0 :   exec sql close MYCURS;
     195            0 : 
     196            0 :   exec sql deallocate descriptor MYDESC;
     197            0 : 
     198            0 :   return 0;
     199            0 :   }
        

Generated by: LCOV version 2.3.2-1