LCOV - differential code coverage report
Current view: top level - src/interfaces/ecpg/test/sql - sqlpgq.pgc (source / functions) Coverage Total Hit UNC GNC
Current: bed3ffbf9d952be6c7d739d068cdce44c046dfb7 vs 574581b50ac9c63dd9e4abebb731a3b67e5b50f6 Lines: 100.0 % 50 50 50
Current Date: 2026-05-05 10:23:31 +0900 Functions: 100.0 % 1 1 1
Baseline: lcov-20260505-025707-baseline Branches: 51.8 % 56 29 27 29
Baseline Date: 2026-05-05 10:27:06 +0900 Line coverage date bins:
Legend: Lines:     hit not hit
Branches: + taken - not taken # not executed
(30,360] days: 100.0 % 50 50 50
Function coverage date bins:
(30,360] days: 100.0 % 1 1 1
Branch coverage date bins:
(30,360] days: 51.8 % 56 29 27 29

 Age         Owner                    Branch data    TLA  Line data    Source code
                                  1                 :                : #include <stdlib.h>
                                  2                 :                : #include <string.h>
                                  3                 :                : #include <stdio.h>
                                  4                 :                : 
                                  5                 :                : exec sql include ../regression;
                                  6                 :                : 
                                  7                 :                : exec sql whenever sqlerror sqlprint;
                                  8                 :                : 
                                  9                 :                : int
   50 peter@eisentraut.org       10                 :GNC           1 : main(void)
                                 11                 :                : {
                                 12                 :                : exec sql begin declare section;
                                 13                 :                :     char command[512];
                                 14                 :                :     char search_address[10];
                                 15                 :                :     char cname[100];
                                 16                 :                :     int reg;
                                 17                 :                : exec sql end declare section;
                                 18                 :                : 
                                 19                 :              1 :     ECPGdebug(1, stderr);
                                 20                 :                : 
                                 21                 :              1 :     exec sql connect to REGRESSDB1 as main;
                                 22         [ -  + ]:              1 : 
                                 23                 :                :     /* Create schema and tables for property graph testing */
                                 24                 :              1 :     exec sql create schema graph_ecpg_tests;
                                 25         [ -  + ]:              1 :     exec sql set search_path = graph_ecpg_tests;
                                 26         [ -  + ]:              1 : 
                                 27                 :              1 :     exec sql create table customers (
                                 28                 :                :         customer_id integer primary key,
                                 29                 :                :         name varchar,
                                 30                 :                :         address varchar
                                 31                 :                :     );
                                 32         [ -  + ]:              1 : 
                                 33                 :              1 :     exec sql create table orders (
                                 34                 :                :         order_id integer primary key,
                                 35                 :                :         register integer
                                 36                 :                :     );
                                 37         [ -  + ]:              1 : 
                                 38                 :              1 :     exec sql create table customer_orders (
                                 39                 :                :         customer_orders_id integer primary key,
                                 40                 :                :         customer_id integer references customers (customer_id),
                                 41                 :                :         order_id integer references orders (order_id)
                                 42                 :                :     );
                                 43         [ -  + ]:              1 : 
                                 44                 :                :     /* Insert test data */
                                 45                 :              1 :     exec sql insert into customers values (1, 'customer1', 'US'), (2, 'customer2', 'CA'), (3, 'customer3', 'GL');
                                 46         [ -  + ]:              1 :     exec sql insert into orders values (1, 100), (2, 200), (3, 500);
                                 47         [ -  + ]:              1 :     exec sql insert into customer_orders (customer_orders_id, customer_id, order_id) values (1, 1, 1), (2, 2, 2), (3, 3, 3);
                                 48         [ -  + ]:              1 : 
                                 49                 :                :     /* Create property graph */
                                 50                 :              1 :     exec sql create property graph shopgraph
                                 51                 :                :         vertex tables (
                                 52                 :                :             customers,
                                 53                 :                :             orders
                                 54                 :                :         )
                                 55                 :                :         edge tables (
                                 56                 :                :             customer_orders key (customer_orders_id)
                                 57                 :                :                 source key (customer_id) references customers (customer_id)
                                 58                 :                :                 destination key (order_id) references orders (order_id)
                                 59                 :                :         );
                                 60         [ -  + ]:              1 : 
                                 61                 :              1 :     exec sql commit;
                                 62         [ -  + ]:              1 : 
                                 63                 :                :     /* direct sql - US customers */
                                 64                 :              1 :     exec sql select * into :cname, :reg from graph_table (shopgraph match (c is customers where c.address = 'US')-[is customer_orders]->(o is orders) columns (c.name, o.register));
                                 65         [ -  + ]:              1 :     printf("found %ld results (%s, %d)\n", sqlca.sqlerrd[2], cname, reg);
                                 66                 :                : 
                                 67                 :                :     /* direct sql with C variable - GL customers */
                                 68                 :              1 :     strcpy(search_address, "GL");
                                 69                 :              1 :     exec sql select * into :cname, :reg from graph_table (shopgraph match (c is customers where c.address = :search_address)-[is customer_orders]->(o is orders) columns (c.name, o.register));
                                 70         [ -  + ]:              1 :     printf("found %ld results (%s, %d)\n", sqlca.sqlerrd[2], cname, reg);
                                 71                 :                : 
                                 72                 :                :     /* prepared statement - CA customers */
                                 73                 :              1 :     sprintf(command, "select * from graph_table (shopgraph match (c is customers where c.address = $1)-[is customer_orders]->(o is orders) columns (c.name, o.register))");
                                 74                 :              1 :     exec sql prepare graph_stmt from :command;
                                 75         [ -  + ]:              1 :     strcpy(search_address, "CA");
                                 76                 :              1 :     exec sql execute graph_stmt into :cname, :reg using :search_address;
                                 77         [ -  + ]:              1 :     printf("found %ld results (%s, %d)\n", sqlca.sqlerrd[2], cname, reg);
                                 78                 :              1 :     exec sql deallocate graph_stmt;
                                 79         [ -  + ]:              1 : 
                                 80                 :                :     /* cursor test - all customers with orders */
                                 81                 :                :     exec sql declare graph_cursor cursor for select * from graph_table (shopgraph match (c is customers)-[is customer_orders]->(o is orders) columns (c.name, o.register)) order by name;
                                 82                 :              1 :     exec sql open graph_cursor;
                                 83         [ -  + ]:              1 :     exec sql whenever not found do break;
                                 84                 :                :     while (1) {
                                 85                 :              4 :         exec sql fetch graph_cursor into :cname, :reg;
                                 86   [ +  +  -  + ]:              4 :         printf("cursor result: %s, %d\n", cname, reg);
                                 87                 :                :     }
                                 88                 :                :     exec sql whenever not found continue;
                                 89                 :              1 :     exec sql close graph_cursor;
                                 90         [ -  + ]:              1 : 
                                 91                 :                :     /* label disjunction syntax test */
                                 92                 :              1 :     exec sql select * into :cname from graph_table (shopgraph match (c is customers | customers where c.address = 'US') columns (c.name));
                                 93         [ -  + ]:              1 :     printf("found %ld results (%s)\n", sqlca.sqlerrd[2], cname);
                                 94                 :                : 
                                 95                 :                :     /* Clean up */
                                 96                 :              1 :     exec sql drop property graph shopgraph;
                                 97         [ -  + ]:              1 :     exec sql drop table customer_orders;
                                 98         [ -  + ]:              1 :     exec sql drop table orders;
                                 99         [ -  + ]:              1 :     exec sql drop table customers;
                                100         [ -  + ]:              1 :     exec sql drop schema graph_ecpg_tests;
                                101         [ -  + ]:              1 :     exec sql commit;
                                102         [ -  + ]:              1 :     exec sql disconnect;
                                103         [ -  + ]:              1 : 
                                104                 :              1 :     return 0;
                                105                 :                : }
        

Generated by: LCOV version 2.5.0-beta