Hi, Hyde: It's confused me that some annotations in Calcite(org.apache.calcite.sql.fun.SqlGroupingFunction.java) : /** * The {@code GROUPING} function. * * <p>Accepts 1 or more arguments. * Example: {@code GROUPING(deptno, gender)} returns * 3 if both deptno and gender are being grouped, * 2 if only deptno is being grouped, * 1 if only gender is being groped, * 0 if neither deptno nor gender are being grouped. * * <p>This function is defined in the SQL standard. * {@code GROUPING_ID} is a non-standard synonym. * * <p>Some examples are in {@code agg.iq}. */
The annotations above seems conflicts with other implementations like Hive( https://cwiki.apache.org/confluence/display/Hive/Enhanced+Aggregation%2C+Cube%2C+Grouping+and+Rollup?spm=ata.13261165.0.0.528c6dfcXalQFy#EnhancedAggregation,Cube,GroupingandRollup-Groupingfunction ) Notice that: "The grouping function indicates whether an expression in a GROUP BY clause is aggregated or not for a given row. The value 0 represents a column that is part of the grouping set, while the value 1 represents a column that is not part of the grouping set. " It is clearly that 0 and 1 bit have different interpretation between annotations in Calcite and in Hive. And I did not figure out why... Any feedback can give me on this would be highly appreciated. Best regards!