LCOV - code coverage report
Current view: top level - src/interfaces/ecpg/test/sql - oldexec.pgc (source / functions) Coverage Total Hit
Test: PostgreSQL 19devel Lines: 100.0 % 55 55
Test Date: 2026-03-04 06:14:56 Functions: 100.0 % 1 1
Legend: Lines:     hit not hit

            Line data    Source code
       1              : #include <stdlib.h>
       2              : #include <string.h>
       3              : #include <stdlib.h>
       4              : #include <stdio.h>
       5              : 
       6              : exec sql include ../regression;
       7              : 
       8              : exec sql whenever sqlerror sqlprint;
       9              : 
      10              : int
      11            2 : main(void)
      12              : {
      13              : exec sql begin declare section;
      14              :     int amount[8];
      15            2 :     int increment=100;
      16              :     char name[8][8];
      17              :     char letter[8][1];
      18              :     char command[128];
      19              : exec sql end declare section;
      20              :     int i,j;
      21              : 
      22            2 :     ECPGdebug(1, stderr);
      23              : 
      24            2 :     exec sql connect to REGRESSDB1 as main;
      25            2 : 
      26            2 :     exec sql create table test (name char(8), amount int, letter char(1));
      27            2 :     exec sql commit;
      28            2 : 
      29            2 :     sprintf(command, "insert into test (name, amount, letter) values ('db: ''r1''', 1, 'f')");
      30            2 :     exec sql execute immediate :command;
      31            2 : 
      32            2 :     sprintf(command, "insert into test (name, amount, letter) values ('db: ''r1''', 2, 't')");
      33            2 :     exec sql execute immediate :command;
      34            2 : 
      35            2 :     sprintf(command, "insert into test (name, amount, letter) select name, amount+10, letter from test");
      36            2 :     exec sql execute immediate :command;
      37            2 : 
      38            2 :     printf("Inserted %ld tuples via execute immediate\n", sqlca.sqlerrd[2]);
      39              : 
      40            2 :     sprintf(command, "insert into test (name, amount, letter) select name, amount+$1, letter from test");
      41            2 :     exec sql prepare I from :command;
      42            2 :     exec sql execute I using :increment;
      43            2 : 
      44            2 :     printf("Inserted %ld tuples via prepared execute\n", sqlca.sqlerrd[2]);
      45              : 
      46            2 :     exec sql commit;
      47            2 : 
      48            2 :     sprintf (command, "select * from test");
      49              : 
      50            2 :     exec sql prepare F from :command;
      51            2 :     exec sql declare CUR cursor for F;
      52              : 
      53            2 :     exec sql open CUR;
      54            2 :     exec sql fetch 8 in CUR into :name, :amount, :letter;
      55            2 : 
      56           18 :     for (i=0, j=sqlca.sqlerrd[2]; i<j; i++)
      57              :     {
      58           16 :         char n[8], l = letter[i][0];
      59           16 :         int a = amount[i];
      60              : 
      61           16 :         strncpy(n, name[i], 8);
      62           16 :         printf("name[%d]=%8.8s\tamount[%d]=%d\tletter[%d]=%c\n", i, n, i, a, i, l);
      63              :     }
      64              : 
      65            2 :     exec sql close CUR;
      66            2 : 
      67            2 :     sprintf (command, "select * from test where ? = amount");
      68              : 
      69            2 :     exec sql prepare F from :command;
      70            2 :     exec sql declare CUR3 cursor for F;
      71              : 
      72            2 :     exec sql open CUR3 using 1;
      73            2 :     exec sql fetch in CUR3 into :name, :amount, :letter;
      74            2 : 
      75            4 :     for (i=0, j=sqlca.sqlerrd[2]; i<j; i++)
      76              :     {
      77            2 :         char n[8], l = letter[i][0];
      78            2 :         int a = amount[i];
      79              : 
      80            2 :         strncpy(n, name[i], 8);
      81            2 :         printf("name[%d]=%8.8s\tamount[%d]=%d\tletter[%d]=%c\n", i, n, i, a, i, l);
      82              :     }
      83              : 
      84            2 :     exec sql close CUR3;
      85            2 :     exec sql drop table test;
      86            2 :     exec sql commit;
      87            2 :     exec sql disconnect;
      88            2 : 
      89            2 :     return 0;
      90              : }
        

Generated by: LCOV version 2.0-1