aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/udfs/common/json2/test/cases/SqlQuery.sql
blob: 38750aec512b27a4fdbaa6fae87f5efb7bbc8de6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/* syntax version 1 */

$path = Json2::CompilePath("strict $.x");
$array = CAST("[]" as Json);
$object = CAST("{}" as Json);

-- Valid cases
$nested_object = CAST(@@{"x": {"y": 123}}@@ as Json);
$nested_array = CAST(@@{"x": [123, 456]}@@ as Json);
SELECT
    Json2::SqlQuery($nested_object, $path, AsDict(), false, $array, false, $object),
    Json2::SqlQuery($nested_array, $path, AsDict(), false, $array, false, $object);

-- Null handling
SELECT
    Json2::SqlQuery(NULL, $path, AsDict(), false, $array, false, $object);

-- Errors
$jsonpath_error = CAST(@@{"y": []}@@ as Json);
SELECT
    Json2::SqlQuery($jsonpath_error, $path, AsDict(), false, $array, false, NULL),
    Json2::SqlQuery($jsonpath_error, $path, AsDict(), false, $array, false, $object),
    Json2::SqlQuery($jsonpath_error, $path, AsDict(), false, $object, false, $array);

$mismatch_error = CAST(@@{"x": 123}@@ as Json);
SELECT
    Json2::SqlQuery($mismatch_error, $path, AsDict(), false, $array, false, NULL),
    Json2::SqlQuery($mismatch_error, $path, AsDict(), false, $array, false, $object),
    Json2::SqlQuery($mismatch_error, $path, AsDict(), false, $object, false, $array);

-- Wrap
$nested_value = CAST(@@{"x": 123}@@ as Json);
SELECT
    Json2::SqlQueryWrap($nested_value, $path, AsDict(), false, $object, false, $array),
    Json2::SqlQueryConditionalWrap($nested_value, $path, AsDict(), false, $object, false, $array);

SELECT
    Json2::SqlQuery($nested_object, $path, AsDict(), false, $object, false, $array),
    Json2::SqlQueryWrap($nested_object, $path, AsDict(), false, $object, false, $array),
    Json2::SqlQueryConditionalWrap($nested_object, $path, AsDict(), false, $object, false, $array);

SELECT
    Json2::SqlQuery($nested_array, $path, AsDict(), false, $object, false, $array),
    Json2::SqlQueryWrap($nested_array, $path, AsDict(), false, $object, false, $array),
    Json2::SqlQueryConditionalWrap($nested_array, $path, AsDict(), false, $object, false, $array);

-- Wrap empty result
$path_lax = Json2::CompilePath("lax $.x");
SELECT
    Json2::SqlQuery($object, $path_lax, AsDict(), false, $object, false, $object),
    Json2::SqlQueryWrap($object, $path_lax, AsDict(), false, $object, false, $object),
    Json2::SqlQueryConditionalWrap($object, $path_lax, AsDict(), false, $object, false, $object);