-
- Downloads
Make the behavior of HAVING without GROUP BY conform to the SQL spec.
Formerly, if such a clause contained no aggregate functions we mistakenly treated it as equivalent to WHERE. Per spec it must cause the query to be treated as a grouped query of a single group, the same as appearance of aggregate functions would do. Also, the HAVING filter must execute after aggregate function computation even if it itself contains no aggregate functions.
Showing
- doc/src/sgml/query.sgml 4 additions, 3 deletionsdoc/src/sgml/query.sgml
- doc/src/sgml/ref/select.sgml 12 additions, 1 deletiondoc/src/sgml/ref/select.sgml
- src/backend/executor/nodeGroup.c 75 additions, 45 deletionssrc/backend/executor/nodeGroup.c
- src/backend/nodes/copyfuncs.c 5 additions, 4 deletionssrc/backend/nodes/copyfuncs.c
- src/backend/nodes/equalfuncs.c 3 additions, 7 deletionssrc/backend/nodes/equalfuncs.c
- src/backend/optimizer/path/allpaths.c 16 additions, 10 deletionssrc/backend/optimizer/path/allpaths.c
- src/backend/optimizer/plan/createplan.c 12 additions, 3 deletionssrc/backend/optimizer/plan/createplan.c
- src/backend/optimizer/plan/planner.c 93 additions, 55 deletionssrc/backend/optimizer/plan/planner.c
- src/backend/optimizer/util/pathnode.c 10 additions, 1 deletionsrc/backend/optimizer/util/pathnode.c
- src/backend/parser/analyze.c 7 additions, 4 deletionssrc/backend/parser/analyze.c
- src/backend/parser/parse_agg.c 2 additions, 2 deletionssrc/backend/parser/parse_agg.c
- src/backend/rewrite/rewriteHandler.c 1 addition, 30 deletionssrc/backend/rewrite/rewriteHandler.c
- src/backend/rewrite/rewriteManip.c 7 additions, 63 deletionssrc/backend/rewrite/rewriteManip.c
- src/include/nodes/parsenodes.h 2 additions, 1 deletionsrc/include/nodes/parsenodes.h
- src/include/optimizer/planmain.h 2 additions, 2 deletionssrc/include/optimizer/planmain.h
- src/include/rewrite/rewriteManip.h 1 addition, 2 deletionssrc/include/rewrite/rewriteManip.h
- src/test/regress/expected/select_having.out 38 additions, 1 deletionsrc/test/regress/expected/select_having.out
- src/test/regress/expected/select_having_1.out 38 additions, 1 deletionsrc/test/regress/expected/select_having_1.out
- src/test/regress/expected/select_having_2.out 38 additions, 1 deletionsrc/test/regress/expected/select_having_2.out
- src/test/regress/sql/select_having.sql 18 additions, 1 deletionsrc/test/regress/sql/select_having.sql
Loading
Please register or sign in to comment