| #include <stdio.h> |
| |
| EXEC SQL INCLUDE sqlca; |
| exec sql include ../regression; |
| |
| EXEC SQL WHENEVER SQLERROR sqlprint; |
| |
| int |
| main () |
| { |
| EXEC SQL BEGIN DECLARE SECTION; |
| char json[1024]; |
| bool is_json[8]; |
| EXEC SQL END DECLARE SECTION; |
| |
| ECPGdebug (1, stderr); |
| |
| EXEC SQL CONNECT TO REGRESSDB1; |
| EXEC SQL SET AUTOCOMMIT = ON; |
| |
| EXEC SQL SELECT JSON_OBJECT(RETURNING text) INTO :json; |
| printf("Found json=%s\n", json); |
| |
| EXEC SQL SELECT JSON_OBJECT(RETURNING text FORMAT JSON) INTO :json; |
| printf("Found json=%s\n", json); |
| |
| EXEC SQL SELECT JSON_ARRAY(RETURNING jsonb) INTO :json; |
| printf("Found json=%s\n", json); |
| |
| EXEC SQL SELECT JSON_ARRAY(RETURNING jsonb FORMAT JSON) INTO :json; |
| printf("Found json=%s\n", json); |
| |
| EXEC SQL SELECT JSON_OBJECT(1: 1, '1': NULL WITH UNIQUE) INTO :json; |
| // error |
| |
| EXEC SQL SELECT JSON_OBJECT(1: 1, '2': NULL, 1: '2' ABSENT ON NULL WITHOUT UNIQUE KEYS) INTO :json; |
| printf("Found json=%s\n", json); |
| |
| EXEC SQL SELECT JSON_OBJECT(1: 1, '2': NULL ABSENT ON NULL WITHOUT UNIQUE RETURNING jsonb) INTO :json; |
| printf("Found json=%s\n", json); |
| |
| EXEC SQL WITH val (js) AS (VALUES ('{ "a": 1, "b": [{ "a": 1, "b": 0, "a": 2 }] }')) |
| SELECT |
| js IS JSON "IS JSON", |
| js IS NOT JSON "IS NOT JSON", |
| js IS JSON VALUE "IS VALUE", |
| js IS JSON OBJECT "IS OBJECT", |
| js IS JSON ARRAY "IS ARRAY", |
| js IS JSON SCALAR "IS SCALAR", |
| js IS JSON WITHOUT UNIQUE KEYS "WITHOUT UNIQUE", |
| js IS JSON WITH UNIQUE KEYS "WITH UNIQUE" |
| INTO :is_json[0], :is_json[1], :is_json[2], :is_json[3], :is_json[4], |
| :is_json[5], :is_json[6], :is_json[7] |
| FROM val; |
| for (int i = 0; i < sizeof(is_json); i++) |
| printf("Found is_json[%d]: %s\n", i, is_json[i] ? "true" : "false"); |
| |
| EXEC SQL DISCONNECT; |
| |
| return 0; |
| } |