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

            Line data    Source code
       1              : EXEC SQL INCLUDE ../regression;
       2              : EXEC SQL WHENEVER SQLERROR SQLPRINT;
       3              : 
       4              : int
       5            0 : main(void)
       6              : {
       7              :         EXEC SQL BEGIN DECLARE SECTION;
       8            0 :         char *stmt1 = "INSERT INTO test1 VALUES ($1, $2)";
       9            0 :         char *stmt2 = "SELECT * from test1 where a = $1 and b = $2";
      10            0 :         char *stmt3 = "SELECT * from test1 where :var = a";
      11              : 
      12            0 :         int val1 = 1;
      13            0 :         char val2[4] = "one", val2output[] = "AAA";
      14            0 :         int val1output = 2, val2i = 0;
      15            0 :         int val2null = -1;
      16            0 :         int ind1, ind2;
      17            0 :         char desc1[8] = "outdesc";
      18              :         EXEC SQL END DECLARE SECTION;
      19              : 
      20            0 :         ECPGdebug(1, stderr);
      21              : 
      22            0 :         EXEC SQL ALLOCATE DESCRIPTOR indesc;
      23            0 :         EXEC SQL ALLOCATE DESCRIPTOR :desc1;
      24            0 : 
      25            0 :         EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = :val1;
      26            0 :         EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val2i, DATA = :val2;
      27            0 : 
      28            0 :         EXEC SQL CONNECT TO REGRESSDB1;
      29            0 : 
      30            0 :         EXEC SQL CREATE TABLE test1 (a int, b text);
      31            0 :         EXEC SQL PREPARE foo1 FROM :stmt1;
      32            0 :         EXEC SQL PREPARE "Foo-1" FROM :stmt1;
      33            0 :         EXEC SQL PREPARE foo2 FROM :stmt2;
      34            0 :         EXEC SQL PREPARE foo3 FROM :stmt3;
      35            0 : 
      36            0 :         EXEC SQL EXECUTE foo1 USING SQL DESCRIPTOR indesc;
      37            0 : 
      38            0 :         EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = 2;
      39            0 :         EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val2null, DATA = :val2;
      40            0 : 
      41            0 :         EXEC SQL EXECUTE foo1 USING SQL DESCRIPTOR indesc;
      42            0 : 
      43            0 :         EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = 3;
      44            0 :         EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val1, DATA = 'this is a long test';
      45            0 : 
      46            0 :         EXEC SQL EXECUTE "Foo-1" USING SQL DESCRIPTOR indesc;
      47            0 : 
      48            0 :         EXEC SQL DEALLOCATE "Foo-1";
      49            0 : 
      50            0 :         EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = :val1;
      51            0 :         EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val2i, DATA = :val2;
      52            0 : 
      53            0 :         EXEC SQL EXECUTE foo2 USING SQL DESCRIPTOR indesc INTO SQL DESCRIPTOR :desc1;
      54            0 : 
      55            0 :         EXEC SQL GET DESCRIPTOR :desc1 VALUE 1 :val2output = DATA;
      56            0 :         printf("output = %s\n", val2output);
      57              : 
      58              :         EXEC SQL DECLARE c1 CURSOR FOR foo2;
      59            0 :         EXEC SQL OPEN c1 USING SQL DESCRIPTOR indesc;
      60            0 : 
      61            0 :         EXEC SQL FETCH next FROM c1 INTO :val1output:ind1, :val2output:ind2;
      62            0 :         printf("val1=%d (ind1: %d) val2=%s (ind2: %d)\n",
      63            0 :                 val1output, ind1, val2output, ind2);
      64            0 : 
      65            0 :         EXEC SQL CLOSE c1;
      66            0 : 
      67            0 :         EXEC SQL SET DESCRIPTOR indesc COUNT = 1;
      68            0 :         EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = 2;
      69            0 : 
      70              :         EXEC SQL DECLARE c2 CURSOR FOR foo3;
      71            0 :         EXEC SQL OPEN c2 USING SQL DESCRIPTOR indesc;
      72            0 : 
      73            0 :         EXEC SQL FETCH next FROM c2 INTO :val1output, :val2output :val2i;
      74            0 :         printf("val1=%d val2=%s\n", val1output, val2i ? "null" : val2output);
      75              : 
      76            0 :         EXEC SQL CLOSE c2;
      77            0 : 
      78            0 :         EXEC SQL SELECT * INTO :val1output, :val2output:val2i FROM test1 where a = 3;
      79            0 :         printf("val1=%d val2=%c%c%c%c warn=%c truncate=%d\n", val1output, val2output[0], val2output[1], val2output[2], val2output[3], sqlca.sqlwarn[0], val2i);
      80              : 
      81            0 :         EXEC SQL DROP TABLE test1;
      82            0 :         EXEC SQL DEALLOCATE ALL;
      83            0 :         EXEC SQL DISCONNECT;
      84            0 : 
      85            0 :         EXEC SQL DEALLOCATE DESCRIPTOR indesc;
      86            0 :         EXEC SQL DEALLOCATE DESCRIPTOR :desc1;
      87            0 : 
      88            0 :         return 0;
      89            0 : }
        

Generated by: LCOV version 2.3.2-1