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

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

Generated by: LCOV version 2.3.2-1