Details
-
Task
-
Status: Open
-
Minor
-
Resolution: Unresolved
-
None
-
None
-
None
-
None
-
459
Description
This was from user group mailing list:
I have a table, which has MAX_VERSIONS > 1. Is it possible in Phoenix to get all the versions of a particular cell?
Example (HBase table):
rowkey:cf:col:ts1 -> value1
rowkey:cf:col:ts2 -> value2
rowkey:cf:col:ts3 -> value2
I want to get all values for: rowkey:cf:col?
Its a mapping:
rowkey -> ID
cf:col -> PROFILE
I want execute:
select PROFILE from TABLE where ID= x and get all 3 profiles
James response:
That'd be a good contribution. The simplest way I can see that done would be:
- support a new MAX_VERSIONS connection property where you can specify how many version of a row you want to get back. In the PhoenixConnection constructor, you'd grab this in the same way we do for CURRENT_SCN and store it in a member variable. Then from BasicQueryPlan.newScanner, you'd set scan.setMaxVersions(<n>) just like we're setting scan.setTimeRange().
- add a built-in function like ROW_TIME() that returns the DATE of the first KeyValue in the Tuple (see my blog here for an example on how to add a new built-in function). Slightly fancier would be ROW_TIME(<column reference>) that would return the DATE representing the timestamp of the KeyValue in Tuple representing the <column reference> passed in.