Viraj Jasani created PHOENIX-7650:
-------------------------------------
Summary: Default value support in BSON_VALUE() for all supported
types
Key: PHOENIX-7650
URL: https://issues.apache.org/jira/browse/PHOENIX-7650
Project: Phoenix
Issue Type: New Feature
Reporter: Viraj Jasani
BSON_VALUE() helps retrieve the value of any document field key with all the
corresponding data types. For instance, if the value of the given document
field is of type BsonString and BSON_VALUE() specifies VARCHAR as data type for
parsing the value at the client side, BsonString value will be encoded to
VARCHAR data type and returned back as the function output with PVarchar type.
The purpose of this Jira is to introduce default value support for all of the
supported scalar data types. This can help avoid multiple calls to BSON_VALUE()
function. For instance, let's consider all the rows of the table has
BsonDocument which might contain TTL field. The query that needs to retrieve
the value of TTL can be something similar to
{code:java}
WHERE BSON_VALUE(COL, 'ttlField', 'BIGINT') IS NOT NULL AND BSON_VALUE(COL,
'ttlField', 'BIGINT') < TO_NUMBER(CURRENT_TIME()){code}
For each row, we need to make two function calls to make sure the document
contains ttlField and it's value is less than current timestamp in ms.
With support of default value, this can be simplified to only single function
call:
{code:java}
WHERE BSON_VALUE(COL, 'ttlField', 'BIGINT', '9223372036854775807') <
TO_NUMBER(CURRENT_TIME()){code}
If the field does not exist, return largest value supported by Long.
Similarly, this is also helpful while creating index where if the indexed field
does not exist in the document, the use case prefers creating index on some
default constant value.
Also, consider displaying the value of e-commerce product discount offer in
some % value. If a particular item does not have discount specified, consider
using default discount value.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)