Github user jackylk commented on a diff in the pull request:

    https://github.com/apache/carbondata/pull/2254#discussion_r185460028
  
    --- Diff: 
processing/src/main/java/org/apache/carbondata/processing/datamap/DataMapWriterListener.java
 ---
    @@ -130,16 +137,26 @@ public void onBlockletEnd(int blockletId) {
        * @param tablePage  page data
        */
       public void onPageAdded(int blockletId, int pageId, TablePage tablePage) 
throws IOException {
    -    Set<Map.Entry<List<String>, List<DataMapWriter>>> entries = 
registry.entrySet();
    -    for (Map.Entry<List<String>, List<DataMapWriter>> entry : entries) {
    -      List<String> indexedColumns = entry.getKey();
    +    Set<Map.Entry<List<CarbonColumn>, List<DataMapWriter>>> entries = 
registry.entrySet();
    +    for (Map.Entry<List<CarbonColumn>, List<DataMapWriter>> entry : 
entries) {
    +      List<CarbonColumn> indexedColumns = entry.getKey();
           ColumnPage[] pages = new ColumnPage[indexedColumns.size()];
           for (int i = 0; i < indexedColumns.size(); i++) {
    -        pages[i] = tablePage.getColumnPage(indexedColumns.get(i));
    +        pages[i] = 
tablePage.getColumnPage(indexedColumns.get(i).getColName());
           }
           List<DataMapWriter> writers = entry.getValue();
    -      for (DataMapWriter writer : writers) {
    -        writer.onPageAdded(blockletId, pageId, pages);
    +      int pageSize = pages[0].getPageSize();
    +
    +      // add every row in the page to writer
    +      for (int rowId = 0; rowId < pageSize; rowId++) {
    +        Object[] rowData = new Object[indexedColumns.size()];
    +        for (int k = 0; k < rowData.length; k++) {
    +          rowData[k] = pages[k].getData(rowId);
    +        }
    +        CarbonRow row = new CarbonRow(rowData);
    --- End diff --
    
    ok, I will change back to pass ColumnPage


---

Reply via email to