LCOV - code coverage report
Current view: top level - src/interfaces/ecpg/test/sql - sqljson.pgc (source / functions) Coverage Total Hit
Test: PostgreSQL 20devel Lines: 100.0 % 65 65
Test Date: 2026-07-25 10:15:40 Functions: 100.0 % 1 1
Legend: Lines:     hit not hit
Branches: + taken - not taken # not executed
Branches: 53.0 % 66 35

             Branch data     Line data    Source code
       1                 :             : #include <stdio.h>
       2                 :             : 
       3                 :             : EXEC SQL INCLUDE sqlca;
       4                 :             : exec sql include ../regression;
       5                 :             : 
       6                 :             : EXEC SQL WHENEVER SQLERROR sqlprint;
       7                 :             : 
       8                 :             : int
       9                 :           2 : main(void)
      10                 :             : {
      11                 :             : EXEC SQL BEGIN DECLARE SECTION;
      12                 :             :   char json[1024];
      13                 :             :   bool is_json[8];
      14                 :             : EXEC SQL END DECLARE SECTION;
      15                 :             : 
      16                 :           2 :   ECPGdebug (1, stderr);
      17                 :             : 
      18                 :           2 :   EXEC SQL CONNECT TO REGRESSDB1;
      19         [ -  + ]:           2 :   EXEC SQL SET AUTOCOMMIT = ON;
      20         [ -  + ]:           2 : 
      21                 :           2 :   EXEC SQL SELECT JSON_OBJECT(RETURNING text) INTO :json;
      22         [ -  + ]:           2 :   printf("Found json=%s\n", json);
      23                 :             : 
      24                 :           2 :   EXEC SQL SELECT JSON_OBJECT(RETURNING text FORMAT JSON) INTO :json;
      25         [ -  + ]:           2 :   printf("Found json=%s\n", json);
      26                 :             : 
      27                 :           2 :   EXEC SQL SELECT JSON_ARRAY(RETURNING jsonb) INTO :json;
      28         [ -  + ]:           2 :   printf("Found json=%s\n", json);
      29                 :             : 
      30                 :           2 :   EXEC SQL SELECT JSON_ARRAY(RETURNING jsonb FORMAT JSON) INTO :json;
      31         [ -  + ]:           2 :   printf("Found json=%s\n", json);
      32                 :             : 
      33                 :           2 :   EXEC SQL SELECT JSON_OBJECT(1: 1, '1': NULL WITH UNIQUE) INTO :json;
      34         [ +  - ]:           2 :   // error
      35                 :             : 
      36                 :           2 :   EXEC SQL SELECT JSON_OBJECT(1: 1, '2': NULL, 1: '2' ABSENT ON NULL WITHOUT UNIQUE KEYS) INTO :json;
      37         [ -  + ]:           2 :   printf("Found json=%s\n", json);
      38                 :             : 
      39                 :           2 :   EXEC SQL SELECT JSON_OBJECT(1: 1, '2': NULL ABSENT ON NULL WITHOUT UNIQUE RETURNING jsonb) INTO :json;
      40         [ -  + ]:           2 :   printf("Found json=%s\n", json);
      41                 :             : 
      42                 :           2 :   EXEC SQL SELECT JSON(NULL) INTO :json;
      43         [ +  - ]:           2 :   printf("Found json=%s\n", json);
      44                 :             : 
      45                 :           2 :   EXEC SQL SELECT JSON('{ "a" : 1 } ' FORMAT JSON) INTO :json;
      46         [ -  + ]:           2 :   printf("Found json=%s\n", json);
      47                 :             : 
      48                 :           2 :   EXEC SQL SELECT JSON('{ "a" : 1 } ' FORMAT JSON ENCODING UTF8) INTO :json;
      49         [ +  - ]:           2 :   // error
      50                 :             : 
      51                 :           2 :   EXEC SQL SELECT JSON('   1   '::jsonb) INTO :json;
      52         [ -  + ]:           2 :   printf("Found json=%s\n", json);
      53                 :             : 
      54                 :           2 :   EXEC SQL SELECT JSON('   1   '::json WITH UNIQUE KEYS) INTO json;
      55         [ +  - ]:           2 :   // error
      56                 :             : 
      57                 :           2 :   EXEC SQL SELECT JSON('{"a": 1, "a": 2}') INTO :json;
      58         [ -  + ]:           2 :   printf("Found json=%s\n", json);
      59                 :             : 
      60                 :           2 :   EXEC SQL SELECT JSON('{"a": 1, "a": 2}' WITH UNIQUE KEYS) INTO :json;
      61         [ +  - ]:           2 :   // error
      62                 :             : 
      63                 :           2 :   EXEC SQL SELECT JSON_SCALAR(NULL) INTO :json;
      64         [ +  - ]:           2 :   printf("Found json=%s\n", json);
      65                 :             : 
      66                 :           2 :   EXEC SQL SELECT JSON_SCALAR(NULL::int) INTO :json;
      67         [ +  - ]:           2 :   printf("Found json=%s\n", json);
      68                 :             : 
      69                 :           2 :   EXEC SQL SELECT JSON_SCALAR(123.45) INTO :json;
      70         [ -  + ]:           2 :   printf("Found json=%s\n", json);
      71                 :             : 
      72                 :           2 :   EXEC SQL SELECT JSON_SCALAR(true) INTO :json;
      73         [ -  + ]:           2 :   printf("Found json=%s\n", json);
      74                 :             : 
      75                 :           2 :   EXEC SQL SELECT JSON_SCALAR(' 123.45') INTO :json;
      76         [ -  + ]:           2 :   printf("Found json=%s\n", json);
      77                 :             : 
      78                 :           2 :   EXEC SQL SELECT JSON_SCALAR('2020-06-07 01:02:03'::timestamp) INTO :json;
      79         [ -  + ]:           2 :   printf("Found json=%s\n", json);
      80                 :             : 
      81                 :           2 :   EXEC SQL SELECT JSON_SCALAR('{}'::jsonb) INTO :json;
      82         [ -  + ]:           2 :   printf("Found json=%s\n", json);
      83                 :             : 
      84                 :           2 :   EXEC SQL SELECT JSON_SERIALIZE(NULL) INTO :json;
      85         [ +  - ]:           2 :   printf("Found json=%s\n", json);
      86                 :             : 
      87                 :           2 :   EXEC SQL SELECT JSON_SERIALIZE(JSON('{ "a" : 1 } ')) INTO :json;
      88         [ -  + ]:           2 :   printf("Found json=%s\n", json);
      89                 :             : 
      90                 :           2 :   EXEC SQL SELECT JSON_SERIALIZE('{ "a" : 1 } ') INTO :json;
      91         [ -  + ]:           2 :   printf("Found json=%s\n", json);
      92                 :             : 
      93                 :           2 :   EXEC SQL SELECT JSON_SERIALIZE('1' FORMAT JSON) INTO :json;
      94         [ -  + ]:           2 :   printf("Found json=%s\n", json);
      95                 :             : 
      96                 :           2 :   EXEC SQL SELECT JSON_SERIALIZE('{ "a" : 1 } ' RETURNING varchar) INTO :json;
      97         [ -  + ]:           2 :   printf("Found json=%s\n", json);
      98                 :             : 
      99                 :           2 :   EXEC SQL SELECT JSON_SERIALIZE('{ "a" : 1 } ' RETURNING jsonb);
     100         [ +  - ]:           2 :   // error
     101                 :             : 
     102                 :           2 :   EXEC SQL WITH val (js) AS (VALUES ('{ "a": 1, "b": [{ "a": 1, "b": 0, "a": 2 }] }'))
     103                 :             :       SELECT
     104                 :             :       js IS JSON "IS JSON",
     105                 :             :       js IS NOT JSON "IS NOT JSON",
     106                 :             :       js IS JSON VALUE "IS VALUE",
     107                 :             :       js IS JSON OBJECT "IS OBJECT",
     108                 :             :       js IS JSON ARRAY "IS ARRAY",
     109                 :             :       js IS JSON SCALAR "IS SCALAR",
     110                 :             :       js IS JSON WITHOUT UNIQUE KEYS "WITHOUT UNIQUE",
     111                 :             :       js IS JSON WITH UNIQUE KEYS "WITH UNIQUE"
     112                 :             :           INTO :is_json[0], :is_json[1], :is_json[2], :is_json[3], :is_json[4],
     113                 :             :           :is_json[5], :is_json[6], :is_json[7]
     114                 :             :           FROM val;
     115   [ -  +  +  + ]:          18 :       for (size_t i = 0; i < sizeof(is_json); i++)
     116         [ +  + ]:          16 :           printf("Found is_json[%zu]: %s\n", i, is_json[i] ? "true" : "false");
     117                 :             : 
     118                 :           2 :   EXEC SQL DISCONNECT;
     119         [ -  + ]:           2 : 
     120                 :           2 :   return 0;
     121                 :             : }
        

Generated by: LCOV version 2.0-1