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

Provide multiple versions support in external HBase tables



    • Task
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • None
    • None
    • None
    • None
    • 459


      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.


        1. PHOENIX-590_3_0.patch
          28 kB
          James R. Taylor



            Unassigned Unassigned
            vrodionov Vladimir Rodionov
            7 Vote for this issue
            17 Start watching this issue