Skip to content

Commit

Permalink
sql: make jsonb_array_to_string_array return NULL elements
Browse files Browse the repository at this point in the history
This commit makes the builtin `jsonb_array_to_string_array` return
NULL elements, which were previously being removed.
It also adds more testing for different types of elements on the array.

Followup from #112865 (review)

Epic: none

Release note (sql change): The builtin `jsonb_array_to_string_array`
returns NULL objects.
  • Loading branch information
maryliag committed Oct 24, 2023
1 parent 054251f commit 665649f
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 5 deletions.
2 changes: 1 addition & 1 deletion docs/generated/sql/functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@
</span></td><td>Immutable</td></tr>
<tr><td><a name="cardinality"></a><code>cardinality(input: anyelement[]) &rarr; <a href="int.html">int</a></code></td><td><span class="funcdesc"><p>Calculates the number of elements contained in <code>input</code></p>
</span></td><td>Immutable</td></tr>
<tr><td><a name="jsonb_array_to_string_array"></a><code>jsonb_array_to_string_array(input: jsonb) &rarr; <a href="string.html">string</a>[]</code></td><td><span class="funcdesc"><p>Convert a JSONB array into a string array, removing ‘null’ elements.</p>
<tr><td><a name="jsonb_array_to_string_array"></a><code>jsonb_array_to_string_array(input: jsonb) &rarr; <a href="string.html">string</a>[]</code></td><td><span class="funcdesc"><p>Convert a JSONB array into a string array.</p>
</span></td><td>Immutable</td></tr>
<tr><td><a name="string_to_array"></a><code>string_to_array(str: <a href="string.html">string</a>, delimiter: <a href="string.html">string</a>) &rarr; <a href="string.html">string</a>[]</code></td><td><span class="funcdesc"><p>Split a string into components on a delimiter.</p>
</span></td><td>Immutable</td></tr>
Expand Down
6 changes: 3 additions & 3 deletions pkg/sql/logictest/testdata/logic_test/array
Original file line number Diff line number Diff line change
Expand Up @@ -1228,12 +1228,12 @@ SELECT jsonb_array_to_string_array('[true, false, false, true]':::JSONB)
query T
SELECT jsonb_array_to_string_array('[null]':::JSONB)
----
{}
{NULL}

query T
SELECT jsonb_array_to_string_array('["foo", null]':::JSONB)
SELECT jsonb_array_to_string_array('[1, "abc", true, ["a", "b"], {"b": "foo"}, null]':::JSONB)
----
{foo}
{1,abc,true,"[\"a\", \"b\"]","{\"b\": \"foo\"}",NULL}

# Regression test for #23429.

Expand Down
7 changes: 6 additions & 1 deletion pkg/sql/sem/builtins/builtins.go
Original file line number Diff line number Diff line change
Expand Up @@ -3571,11 +3571,16 @@ value if you rely on the HLC for accuracy.`,
if err != nil {
return nil, err
}
} else {
err = strArray.Append(tree.DNull)
if err != nil {
return nil, err
}
}
}
return strArray, nil
},
Info: "Convert a JSONB array into a string array, removing 'null' elements.",
Info: "Convert a JSONB array into a string array.",
Volatility: volatility.Immutable,
CalledOnNullInput: true,
}),
Expand Down

0 comments on commit 665649f

Please sign in to comment.