Gopal V created HIVE-14016:
------------------------------

             Summary: Vectorization: VectorGroupByRollupOperator and 
VectorGroupByCubeOperator
                 Key: HIVE-14016
                 URL: https://issues.apache.org/jira/browse/HIVE-14016
             Project: Hive
          Issue Type: Improvement
          Components: Vectorization
            Reporter: Gopal V


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.4#6332)

Reply via email to