diff options
author | Bruce Momjian <bruce@momjian.us> | 2021-05-03 14:59:30 -0400 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2021-05-03 14:59:39 -0400 |
commit | f7a97b6ec31f3f57a6154d0039c4de81ad517064 (patch) | |
tree | 82b4dc972c89b5bf75381dd5af917a624901cc69 /src | |
parent | 5df6aeab42279eaea8e9ff92744645b155c85b03 (diff) | |
download | postgresql-f7a97b6ec31f3f57a6154d0039c4de81ad517064.tar.gz postgresql-f7a97b6ec31f3f57a6154d0039c4de81ad517064.zip |
Update query_id computation
Properly fix:
- the "ONLY" in FROM [ONLY] isn't hashed
- the agglevelsup field in GROUPING isn't hashed
- WITH TIES not being hashed (new in PG 13)
- "DISTINCT" in "GROUP BY [DISTINCT]" isn't hashed (new in PG 14)
Reported-by: Julien Rouhaud
Discussion: https://postgr.es/m/20210425081119.ulyzxqz23ueh3wuj@nol
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/misc/queryjumble.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/backend/utils/misc/queryjumble.c b/src/backend/utils/misc/queryjumble.c index afd6d76cebe..1bb9fe20ea8 100644 --- a/src/backend/utils/misc/queryjumble.c +++ b/src/backend/utils/misc/queryjumble.c @@ -230,6 +230,7 @@ JumbleQueryInternal(JumbleState *jstate, Query *query) JumbleExpr(jstate, (Node *) query->onConflict); JumbleExpr(jstate, (Node *) query->returningList); JumbleExpr(jstate, (Node *) query->groupClause); + APP_JUMB(query->groupDistinct); JumbleExpr(jstate, (Node *) query->groupingSets); JumbleExpr(jstate, query->havingQual); JumbleExpr(jstate, (Node *) query->windowClause); @@ -237,6 +238,7 @@ JumbleQueryInternal(JumbleState *jstate, Query *query) JumbleExpr(jstate, (Node *) query->sortClause); JumbleExpr(jstate, query->limitOffset); JumbleExpr(jstate, query->limitCount); + APP_JUMB(query->limitOption); JumbleRowMarks(jstate, query->rowMarks); JumbleExpr(jstate, query->setOperations); } @@ -259,6 +261,7 @@ JumbleRangeTable(JumbleState *jstate, List *rtable) case RTE_RELATION: APP_JUMB(rte->relid); JumbleExpr(jstate, (Node *) rte->tablesample); + APP_JUMB(rte->inh); break; case RTE_SUBQUERY: JumbleQueryInternal(jstate, rte->subquery); @@ -399,6 +402,7 @@ JumbleExpr(JumbleState *jstate, Node *node) GroupingFunc *grpnode = (GroupingFunc *) node; JumbleExpr(jstate, (Node *) grpnode->refs); + APP_JUMB(grpnode->agglevelsup); } break; case T_WindowFunc: |