Rajeshbabu Chintaguntla created PHOENIX-5550:
------------------------------------------------

             Summary: Scan after local index creation on table having data 
giving wrong results when long view index id disabled
                 Key: PHOENIX-5550
                 URL: https://issues.apache.org/jira/browse/PHOENIX-5550
             Project: Phoenix
          Issue Type: Bug
            Reporter: Rajeshbabu Chintaguntla
            Assignee: Rajeshbabu Chintaguntla
             Fix For: 4.15.0, 5.1.0


After PHOENIX-3547 and PHOENIX-5104 querying after local index creation on the 
table having data is failing because of the view index id type mismatches.

The client is sending the SMALLINT as view index id data type.

{noformat}
    private PDataType getViewIndexDataType() throws SQLException {
        boolean supportsLongViewIndexId = 
connection.getQueryServices().getProps().getBoolean(
                                QueryServices.LONG_VIEW_INDEX_ENABLED_ATTRIB,
                                
QueryServicesOptions.DEFAULT_LONG_VIEW_INDEX_ENABLED);
        return supportsLongViewIndexId ? MetaDataUtil.getViewIndexIdDataType() 
: MetaDataUtil.getLegacyViewIndexIdDataType();
    }
{noformat}


But in the  create index api in endpoint impl is considering LONG as view index 
id data type.
{noformat}
                        PDataType dataType = 
MetaDataUtil.getViewIndexIdDataType();
                        Object val = dataType.toObject(seqValue, 
PLong.INSTANCE);
                        byte[] bytes = new byte[dataType.getByteSize() + 1];
                        dataType.toBytes(val, bytes, 0);
                        Cell indexIdCell =
                                
PhoenixKeyValueUtil.newKeyValue(cell.getRowArray(),
                                    cell.getRowOffset(), cell.getRowLength(),
                                    cell.getFamilyArray(), 
cell.getFamilyOffset(),
                                    cell.getFamilyLength(), 
VIEW_INDEX_ID_BYTES, 0,
                                    VIEW_INDEX_ID_BYTES.length, 
cell.getTimestamp(), bytes, 0,
                                    bytes.length, cell.getType());
{noformat}
{noformat}
                if (indexId != null) {
                    builder.setViewIndexId(indexId);
                    builder.setViewIndexIdType(PLong.INSTANCE.getSqlType());
                }
{noformat}
 
Most of the local index tests failing If we set false value to the following 
configuration.
  <property>
    <!--
    We have some hardcoded viewIndex ids in the IT tests which assumes 
viewIndexId is of type Long.
    However the default viewIndexId type is set to "short" by default until we 
upgrade all clients to support
    long viewIndex ids.
    -->
    <name>phoenix.index.longViewIndex.enabled</name>
    <value>false</value>
  </property>



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to