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

            Line data    Source code
       1              : #include <stdlib.h>
       2              : #include <string.h>
       3              : #include <stdio.h>
       4              : 
       5              : exec sql include ../regression;
       6              : exec sql whenever sqlerror sqlprint;
       7              : 
       8              : static void
       9            0 : check_result_of_insert(void)
      10              : {
      11              :         exec sql begin declare section;
      12            0 :         int ivar1 = 0, ivar2 = 0;
      13              :         exec sql end declare section;
      14              : 
      15            0 :         exec sql select c1,c2 into :ivar1,:ivar2 from test;
      16            0 :         printf("%d %d\n", ivar1, ivar2);
      17            0 : }
      18              : 
      19            0 : int main(void)
      20              : {
      21              :         exec sql begin declare section;
      22            0 :         int ivar1 = 1, ivar2 = 2;
      23            0 :         char v_include_dq_name[16], v_include_ws_name[16], v_normal_name[16], v_query[64];
      24              :         exec sql end declare section;
      25              : 
      26            0 :         strcpy(v_normal_name, "normal_name");
      27            0 :         strcpy(v_include_dq_name, "include_\"_name");
      28            0 :         strcpy(v_include_ws_name, "include_ _name");
      29            0 :         strcpy(v_query, "insert into test values(?,?)");
      30              : 
      31              :         /*
      32              :          * preparing for test
      33              :          */
      34            0 :         exec sql connect to REGRESSDB1;
      35            0 :         exec sql begin;
      36            0 :         exec sql create table test (c1 int, c2 int);
      37            0 :         exec sql commit work;
      38            0 :         exec sql begin;
      39            0 : 
      40              :         /*
      41              :          * Non dynamic statement
      42              :          */
      43            0 :         exec sql truncate test;
      44            0 :         printf("+++++ Test for prepnormal +++++\n");
      45            0 :         printf("insert into test values(:ivar1,:ivar2)\n");
      46            0 :         exec sql insert into test values(:ivar1,:ivar2);
      47            0 :         check_result_of_insert();
      48              : 
      49            0 :         exec sql truncate test;
      50            0 :         printf("+++++ Test for execute immediate +++++\n");
      51            0 :         printf("execute immediate \"insert into test values(1,2)\"\n");
      52            0 :         exec sql execute immediate "insert into test values(1,2)";
      53            0 :         check_result_of_insert();
      54              : 
      55              :         /*
      56              :          * PREPARE FROM
      57              :          */
      58            0 :         exec sql truncate test;
      59            0 :         printf("+++++ Test for PREPARE ident FROM CString +++++\n");
      60            0 :         printf("prepare ident_name from \"insert into test values(?,?)\"\n");
      61            0 :         exec sql prepare ident_name from "insert into test values(?,?)";
      62            0 :         printf("execute ident_name using :ivar1,:ivar2\n");
      63            0 :         exec sql execute ident_name using :ivar1,:ivar2;
      64            0 :         check_result_of_insert();
      65              : 
      66            0 :         exec sql truncate test;
      67            0 :         printf("+++++ Test for PREPARE char_variable_normal_name FROM char_variable +++++\n");
      68            0 :         printf("prepare :v_normal_name from :v_query\n");
      69            0 :         exec sql prepare :v_normal_name from :v_query;
      70            0 :         printf("execute :v_normal_name using :ivar1,:ivar2\n");
      71            0 :         exec sql execute :v_normal_name using :ivar1,:ivar2;
      72            0 :         check_result_of_insert();
      73              : 
      74            0 :         exec sql truncate test;
      75            0 :         printf("+++++ Test for PREPARE char_variable_inc_dq_name FROM char_variable +++++\n");
      76            0 :         printf("prepare :v_include_dq_name from :v_query\n");
      77            0 :         exec sql prepare :v_include_dq_name from :v_query;
      78            0 :         printf("execute :v_include_dq_name using :ivar1,:ivar2\n");
      79            0 :         exec sql execute :v_include_dq_name using :ivar1,:ivar2;
      80            0 :         check_result_of_insert();
      81              : 
      82            0 :         exec sql truncate test;
      83            0 :         printf("+++++ Test for PREPARE char_variable_inc_ws_name FROM char_variable +++++\n");
      84            0 :         printf("prepare :v_include_ws_name from :v_query\n");
      85            0 :         exec sql prepare :v_include_ws_name from :v_query;
      86            0 :         printf("execute :v_include_ws_name using :ivar1,:ivar2\n");
      87            0 :         exec sql execute :v_include_ws_name using :ivar1,:ivar2;
      88            0 :         check_result_of_insert();
      89              : 
      90            0 :         exec sql truncate test;
      91            0 :         printf("+++++ Test for PREPARE CString_inc_ws_name FROM char_variable +++++\n");
      92            0 :         printf("prepare \"include_ _name\" from :v_query\n");
      93            0 :         exec sql prepare "include_ _name" from :v_query;
      94            0 :         printf("exec sql execute \"include_ _name\" using :ivar1,:ivar2\n");
      95            0 :         exec sql execute "include_ _name" using :ivar1,:ivar2;
      96            0 :         check_result_of_insert();
      97              : 
      98            0 :         exec sql truncate test;
      99            0 :         printf("+++++ Test for PREPARE CString_normal_name FROM char_variable +++++\n");
     100            0 :         printf("prepare \"norma_name\" from :v_query\n");
     101            0 :         exec sql prepare "normal_name" from :v_query;
     102            0 :         printf("exec sql execute \"normal_name\" using :ivar1,:ivar2\n");
     103            0 :         exec sql execute "normal_name" using :ivar1,:ivar2;
     104            0 :         check_result_of_insert();
     105              : 
     106              :         /*
     107              :          * PREPARE AS
     108              :          */
     109            0 :         exec sql deallocate "ident_name";
     110            0 :         exec sql deallocate "normal_name";
     111            0 :         exec sql deallocate "include_ _name";
     112            0 : 
     113            0 :         exec sql truncate test;
     114            0 :         printf("+++++ Test for PREPARE ident(typelist) AS +++++\n");
     115            0 :         printf("prepare ident_name(int,int) as insert into test values($1,$2)\n");
     116            0 :         exec sql prepare ident_name(int,int) as insert into test values($1,$2);
     117            0 :         printf("execute ident_name(:ivar1,:ivar2)\n");
     118            0 :         exec sql execute ident_name(:ivar1,:ivar2);
     119            0 :         check_result_of_insert();
     120            0 :         exec sql deallocate "ident_name";
     121            0 : 
     122            0 :         exec sql truncate test;
     123            0 :         printf("+++++ Test for PREPARE CString_normal_name(typelist) AS +++++\n");
     124            0 :         printf("prepare \"normal_name\"(int,int) as insert into test values($1,$2)\n");
     125            0 :         exec sql prepare "normal_name"(int,int) as insert into test values($1,$2);
     126            0 :         printf("execute \"normal_name\"(:ivar1,:ivar2)\n");
     127            0 :         exec sql execute "normal_name"(:ivar1,:ivar2);
     128            0 :         check_result_of_insert();
     129            0 :         exec sql deallocate "normal_name";
     130            0 : 
     131            0 :         exec sql truncate test;
     132            0 :         printf("+++++ Test for PREPARE CString_include_ws_name(typelist) AS +++++\n");
     133            0 :         printf("prepare \"include_ _name\"(int,int) as insert into test values($1,$2)\n");
     134            0 :         exec sql prepare "include_ _name"(int,int) as insert into test values($1,$2);
     135            0 :         printf("execute \"include_ _name\"(:ivar1,:ivar2)\n");
     136            0 :         exec sql execute "include_ _name"(:ivar1,:ivar2);
     137            0 :         check_result_of_insert();
     138            0 :         exec sql deallocate "include_ _name";
     139            0 : 
     140            0 :         exec sql truncate test;
     141            0 :         printf("+++++ Test for PREPARE char_variable_normal_name(typelist) AS +++++\n");
     142            0 :         printf("prepare :v_normal_name(int,int) as insert into test values($1,$2)\n");
     143            0 :         exec sql prepare :v_normal_name(int,int) as insert into test values($1,$2);
     144            0 :         printf("execute :v_normal_name(:ivar1,:ivar2)\n");
     145            0 :         exec sql execute :v_normal_name(:ivar1,:ivar2);
     146            0 :         check_result_of_insert();
     147            0 :         exec sql deallocate "normal_name";
     148            0 : 
     149            0 :         exec sql truncate test;
     150            0 :         printf("+++++ Test for PREPARE char_variable_include_ws_name(typelist) AS +++++\n");
     151            0 :         printf("prepare :v_include_ws_name(int,int) as insert into test values($1,$2)\n");
     152            0 :         exec sql prepare :v_include_ws_name(int,int) as insert into test values($1,$2);
     153            0 :         printf("execute :v_include_ws_name(:ivar1,:ivar2)\n");
     154            0 :         exec sql execute :v_include_ws_name(:ivar1,:ivar2);
     155            0 :         check_result_of_insert();
     156            0 :         exec sql deallocate "include_ _name";
     157            0 : 
     158            0 :         exec sql truncate test;
     159            0 :         printf("+++++ Test for EXECUTE :v_normal_name(const,const) +++++\n");
     160            0 :         printf("prepare :v_normal_name from :v_query\n");
     161            0 :         exec sql prepare :v_normal_name from :v_query;
     162            0 :         printf("execute :v_normal_name(1,2)\n");
     163            0 :         exec sql execute :v_normal_name(1,2);
     164            0 :         check_result_of_insert();
     165            0 :         exec sql deallocate "normal_name";
     166            0 : 
     167            0 :         exec sql truncate test;
     168            0 :         printf("+++++ Test for EXECUTE :v_normal_name(expr,expr) +++++\n");
     169            0 :         printf("prepare :v_normal_name from :v_query\n");
     170            0 :         exec sql prepare :v_normal_name from :v_query;
     171            0 :         printf("execute :v_normal_name(0+1,1+1)\n");
     172            0 :         exec sql execute :v_normal_name(0+1,1+1);
     173            0 :         check_result_of_insert();
     174            0 :         exec sql deallocate "normal_name";
     175            0 : 
     176            0 :         exec sql truncate test;
     177            0 :         printf("+++++ Test for combination PREPARE FROM and EXECUTE ident(typelist) +++++\n");
     178            0 :         printf("prepare ident_name from :v_query\n");
     179            0 :         exec sql prepare ident_name from :v_query;
     180            0 :         printf("execute ident_name(:ivar1,:ivar2)\n");
     181            0 :         exec sql execute ident_name(:ivar1,:ivar2);
     182            0 :         check_result_of_insert();
     183            0 :         exec sql deallocate "ident_name";
     184            0 : 
     185            0 :         exec sql truncate test;
     186            0 :         printf("+++++ Test for combination PREPARE FROM and EXECUTE CString_include_ws_name(typelist) +++++\n");
     187            0 :         printf("prepare \"include_ _name\" from :v_query\n");
     188            0 :         exec sql prepare "include_ _name" from :v_query;
     189            0 :         printf("execute \"include_ _name\"(:ivar1,:ivar2)\n");
     190            0 :         exec sql execute "include_ _name"(:ivar1,:ivar2);
     191            0 :         check_result_of_insert();
     192            0 :         exec sql deallocate "include_ _name";
     193            0 : 
     194            0 :         exec sql drop table test;
     195            0 :         exec sql commit work;
     196            0 : 
     197            0 :         return 0;
     198            0 : }
        

Generated by: LCOV version 2.3.2-1