[ https://issues.apache.org/jira/browse/CALCITE-2985?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16824904#comment-16824904 ]
Hongze Zhang commented on CALCITE-2985: --------------------------------------- I am rebasing the PR. Still I find there is some improvements about null handling need to be done before merging this, see CALCITE-3017. Related case[1] works in the original PR because the function does not actually use JSON value expression as argument, it just handle string values[2]. We have to make it accept JSON value expression only to keep it consistent with other built-in JSON functions after rebasing. So I'll try fix that issue first. [1] [https://github.com/apache/calcite/pull/1150/files#diff-25687b6ff3e28fb79b62ba5050883d45R4505] [2] https://github.com/apache/calcite/pull/1150/files#diff-337d623f26a91c39f18b7791c3fed36eR2874 > Add the JSON_STORAGE_SIZE function > ---------------------------------- > > Key: CALCITE-2985 > URL: https://issues.apache.org/jira/browse/CALCITE-2985 > Project: Calcite > Issue Type: Sub-task > Reporter: Forward Xu > Assignee: Forward Xu > Priority: Major > Labels: pull-request-available > Time Spent: 1h 10m > Remaining Estimate: 0h > > JSON_STORAGE_SIZE(json_val) > This function returns the number of bytes used to store the binary > representation of a JSON document. When the argument is a JSON column, this > is the space used to store the JSON document. json_val must be a valid JSON > document or a string which can be parsed as one. In the case where it is > string, the function returns the amount of storage space in the JSON binary > representation that is created by parsing the string as JSON and converting > it to binary. It returns NULL if the argument is NULL. > An error results when json_val is not NULL, and is not—or cannot be > successfully parsed as—a JSON document. > To illustrate this function's behavior when used with a JSON column as its > argument, we create a table named jtable containing a JSON column jcol, > insert a JSON value into the table, then obtain the storage space used by > this column with JSON_STORAGE_SIZE(), as shown here: > {code:java} > SELECT > JSON_STORAGE_SIZE('[100, "sakila", [1, 3, 5], 425.05]') AS A, > JSON_STORAGE_SIZE('{"a": 1000, "b": "a", "c": "[1, 3, 5, 7]"}') AS B, > JSON_STORAGE_SIZE('{"a": 1000, "b": "wxyz", "c": "[1, 3, 5, 7]"}') AS C, > JSON_STORAGE_SIZE('[100, "json", [[10, 20, 30], 3, 5], 425.05]') AS D; > {code} > | A | B | C | D | > | 29 | 37 | 40 | 36 | -- This message was sent by Atlassian JIRA (v7.6.3#76005)