public static void appendSecondaryIndexTypes(Dataset dataset,ARecordType recordType,ARecordType metaRecordType,Index index,boolean primaryKeysOnly,List<Object> dest) throws AlgebricksException {
  if (!primaryKeysOnly) {
switch (index.getIndexType()) {
case BTREE:
case SINGLE_PARTITION_WORD_INVIX:
case SINGLE_PARTITION_NGRAM_INVIX:
{
        dest.addAll(KeyFieldTypeUtils.getBTreeIndexKeyTypes(index,recordType,metaRecordType));
        break;
      }
case RTREE:
{
      dest.addAll(KeyFieldTypeUtils.getRTreeIndexKeyTypes(index,recordType,metaRecordType));
      break;
    }
case LENGTH_PARTITIONED_NGRAM_INVIX:
case LENGTH_PARTITIONED_WORD_INVIX:
default :
  break;
}
}
if (dataset.getDatasetType() == DatasetType.EXTERNAL) {
try {
appendExternalRecPrimaryKeys(dataset,dest);
}
 catch (AsterixException e) {
throw new AlgebricksException(e);
}
}
 else {
dest.addAll(KeyFieldTypeUtils.getPartitoningKeyTypes(dataset,recordType,metaRecordType));
}
}

public static void appendSecondaryIndexTypes ( Dataset dataset , ARecordType recordType , ARecordType metaRecordType , Index index , boolean primaryKeysOnly , List < Object > dest ) throws AlgebricksException { if ( ! primaryKeysOnly ) { switch ( index . getIndexType ( ) ) { case BTREE : case SINGLE_PARTITION_WORD_INVIX : case SINGLE_PARTITION_NGRAM_INVIX : { dest . addAll ( KeyFieldTypeUtils . getBTreeIndexKeyTypes ( index , recordType , metaRecordType ) ) ; break ; } case RTREE : { dest . addAll ( KeyFieldTypeUtils . getRTreeIndexKeyTypes ( index , recordType , metaRecordType ) ) ; break ; } case LENGTH_PARTITIONED_NGRAM_INVIX : case LENGTH_PARTITIONED_WORD_INVIX : default : break ; } } if ( dataset . getDatasetType ( ) == DatasetType . EXTERNAL ) { try { appendExternalRecPrimaryKeys ( dataset , dest ) ; } catch ( AsterixException e ) { throw new AlgebricksException ( e ) ; } } else { dest . addAll ( KeyFieldTypeUtils . getPartitoningKeyTypes ( dataset , recordType , metaRecordType ) ) ; } }
appends the types of the fields produced by the given secondary index to dest .
