HBase
  1. HBase
  2. HBASE-9283

Struct and StructIterator should properly handle trailing nulls

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 0.95.2
    • Fix Version/s: 0.98.0, 0.96.0
    • Component/s: None
    • Labels:
      None
    • Hadoop Flags:
      Reviewed
    • Tags:
      Phoenix

      Description

      For a composite row key, Phoenix strips off trailing null columns values in the row key. The reason this is important is that then new nullable row key columns can be added to a schema without requiring any data upgrade to existing rows. Otherwise, adding new row key columns to the end of a schema becomes extremely cumbersome, as you'd need to delete all existing rows and add them back with a row key that includes a null value.

      Rather than Phoenix needing to modify the iteration code everywhere (as Nick Dimiduk outlined here: https://issues.apache.org/jira/browse/HBASE-8693?focusedCommentId=13744499&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13744499), it'd be better if StructIterator handled this out-of-the-box. Otherwise, if Phoenix has to specialize this, we'd lose the interop piece which is the justification for switching our type system to this new one in the first place.

        Issue Links

          Activity

          Nick Dimiduk created issue -
          James Taylor made changes -
          Field Original Value New Value
          Tags Phoenix
          James Taylor made changes -
          Description For [~giacomotaylor] to fill in. For a composite row key, Phoenix strips off trailing null columns values in the row key. The reason this is important is that then new nullable row key columns can be added to a schema without requiring any data upgrade to existing rows. Otherwise, adding new row key columns to the end of a schema becomes extremely cumbersome, as you'd need to delete all existing rows and add them back with a row key that includes a null value.

          Rather than Phoenix needing to modify the iteration code everywhere (as [~ndimiduk] outlined here: https://issues.apache.org/jira/browse/HBASE-8693?focusedCommentId=13744499&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13744499), it'd be better if StructIterator handled this out-of-the-box. Otherwise, if Phoenix has to specialize this, we'd lose the interop piece which is the justification for switching our type system to this new one in the first place.
          Nick Dimiduk made changes -
          Affects Version/s 0.95.2 [ 12320040 ]
          Nick Dimiduk made changes -
          Fix Version/s 0.96.0 [ 12324822 ]
          Fix Version/s 0.95.3 [ 12324904 ]
          Nick Dimiduk made changes -
          Assignee Nick Dimiduk [ ndimiduk ]
          stack made changes -
          Fix Version/s 0.98.0 [ 12323143 ]
          Fix Version/s 0.95.3 [ 12324904 ]
          Nick Dimiduk made changes -
          Nick Dimiduk made changes -
          Nick Dimiduk made changes -
          Nick Dimiduk made changes -
          Link This issue depends upon HBASE-9348 [ HBASE-9348 ]
          Nick Dimiduk made changes -
          Status Open [ 1 ] Patch Available [ 10002 ]
          stack made changes -
          Status Patch Available [ 10002 ] Resolved [ 5 ]
          Hadoop Flags Reviewed [ 10343 ]
          Resolution Fixed [ 1 ]

            People

            • Assignee:
              Nick Dimiduk
              Reporter:
              Nick Dimiduk
            • Votes:
              0 Vote for this issue
              Watchers:
              9 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development