mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +03:00
Fix incorrect hash equality operator bug in Memoize
In v14, because we don't have a field in RestrictInfo to cache both the left and right type's hash equality operator, we just restrict the scope of Memoize to only when the left and right types of a RestrictInfo are the same. In master we add another field to RestrictInfo and cache both hash equality operators. Reported-by: Jaime Casanova Author: David Rowley Discussion: https://postgr.es/m/20210929185544.GB24346%40ahch-to Backpatch-through: 14
This commit is contained in:
@@ -217,7 +217,8 @@ make_restrictinfo_internal(PlannerInfo *root,
|
||||
restrictinfo->left_mcvfreq = -1;
|
||||
restrictinfo->right_mcvfreq = -1;
|
||||
|
||||
restrictinfo->hasheqoperator = InvalidOid;
|
||||
restrictinfo->left_hasheqoperator = InvalidOid;
|
||||
restrictinfo->right_hasheqoperator = InvalidOid;
|
||||
|
||||
return restrictinfo;
|
||||
}
|
||||
@@ -368,7 +369,8 @@ commute_restrictinfo(RestrictInfo *rinfo, Oid comm_op)
|
||||
result->right_bucketsize = rinfo->left_bucketsize;
|
||||
result->left_mcvfreq = rinfo->right_mcvfreq;
|
||||
result->right_mcvfreq = rinfo->left_mcvfreq;
|
||||
result->hasheqoperator = InvalidOid;
|
||||
result->left_hasheqoperator = InvalidOid;
|
||||
result->right_hasheqoperator = InvalidOid;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
Reference in New Issue
Block a user