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)

Reply via email to