[ https://issues.apache.org/jira/browse/HIVE-14016?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Matt McCline updated HIVE-14016: -------------------------------- Status: Patch Available (was: In Progress) > Vectorization: Add support for Grouping Sets > -------------------------------------------- > > Key: HIVE-14016 > URL: https://issues.apache.org/jira/browse/HIVE-14016 > Project: Hive > Issue Type: Improvement > Components: Vectorization > Reporter: Gopal V > Assignee: Matt McCline > Attachments: HIVE-14016.01.patch, HIVE-14016.02.patch, > HIVE-14016.03.patch, HIVE-14016.04.patch, HIVE-14016.05.patch, > HIVE-14016.06.patch > > > Rollup and Cube queries are not vectorized today due to the miss of > grouping-sets inside vector group by. > The cube and rollup operators can be shimmed onto the end of the pipeline by > converting a single row writer into a multiple row writer. > The corresponding non-vec loop is as follows > {code} > if (groupingSetsPresent) { > Object[] newKeysArray = newKeys.getKeyArray(); > Object[] cloneNewKeysArray = new Object[newKeysArray.length]; > for (int keyPos = 0; keyPos < groupingSetsPosition; keyPos++) { > cloneNewKeysArray[keyPos] = newKeysArray[keyPos]; > } > for (int groupingSetPos = 0; groupingSetPos < groupingSets.size(); > groupingSetPos++) { > for (int keyPos = 0; keyPos < groupingSetsPosition; keyPos++) { > newKeysArray[keyPos] = null; > } > FastBitSet bitset = groupingSetsBitSet[groupingSetPos]; > // Some keys need to be left to null corresponding to that grouping > set. > for (int keyPos = bitset.nextSetBit(0); keyPos >= 0; > keyPos = bitset.nextSetBit(keyPos+1)) { > newKeysArray[keyPos] = cloneNewKeysArray[keyPos]; > } > newKeysArray[groupingSetsPosition] = > newKeysGroupingSets[groupingSetPos]; > processKey(row, rowInspector); > } > } > {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)