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
---