Code review for dynahash change.
authorThomas Munro <[email protected]>
Sat, 19 Sep 2020 03:39:48 +0000 (15:39 +1200)
committerThomas Munro <[email protected]>
Sat, 19 Sep 2020 03:53:06 +0000 (15:53 +1200)
Commit be0a6666 left behind a comment about the order of some tests that
didn't make sense without the expensive division, and in fact we might
as well change the order to one that fails more cheaply most of the time
as a micro-optimization.  Also, remove the "+ 1" applied to max_bucket,
to drop an instruction and match the original behavior.  Per review
from Tom Lane.

Discussion: https://postgr.es/m/VI1PR0701MB696044FC35013A96FECC7AC8F62D0%40VI1PR0701MB6960.eurprd07.prod.outlook.com

src/backend/utils/hash/dynahash.c

index 1122e2e5e59adeae5232dd3d75259a1a7b618656..d14d875c9341d3e3fd9cb29038a13da0e18cc9f7 100644 (file)
@@ -963,11 +963,10 @@ hash_search_with_hash_value(HTAB *hashp,
    {
        /*
         * Can't split if running in partitioned mode, nor if frozen, nor if
-        * table is the subject of any active hash_seq_search scans.  Strange
-        * order of these tests is to try to check cheaper conditions first.
+        * table is the subject of any active hash_seq_search scans.
         */
-       if (!IS_PARTITIONED(hctl) && !hashp->frozen &&
-           hctl->freeList[0].nentries > (long) (hctl->max_bucket + 1) &&
+       if (hctl->freeList[0].nentries > (long) hctl->max_bucket &&
+           !IS_PARTITIONED(hctl) && !hashp->frozen &&
            !has_seq_scans(hashp))
            (void) expand_table(hashp);
    }