Uploaded image for project: 'Phoenix'
  1. Phoenix
  2. PHOENIX-590

Provide multiple versions support in external HBase tables


    • Type: Task
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Labels:
    • old issue number:


      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.




            • Assignee:
              vrodionov Vladimir Rodionov
            • Votes:
              7 Vote for this issue
              15 Start watching this issue


              • Created: