Fix InitializeRelfilenumberMap for 05d4cbf9b6ba708858984b01ca0fc56d59d4ec7c
authorRobert Haas <rhaas@postgresql.org>
Wed, 28 Sep 2022 12:02:30 +0000 (08:02 -0400)
committerRobert Haas <rhaas@postgresql.org>
Wed, 28 Sep 2022 12:04:49 +0000 (08:04 -0400)
Since relfilenodes are now 56-bits, we use bigint as the SQL type
to represent them, which means F_INT8EQ must be used here rather
than F_OIDEQ. On 64-bit machines this doesn't matter, but 32-bit
machines are unhappy.

Dilip Kumar

Discussion: http://postgr.es/m/CAFiTN-t71ciSckMzixAhrF9py7oRO6xszKi4mTRwjuucXr5tpw@mail.gmail.com

src/backend/utils/cache/relfilenumbermap.c

index 2e0acf98f20d5def0918632f13c808bc2057390f..11427ba97ebcd1bcdbe878322914cae9ef5fc202 100644 (file)
@@ -88,7 +88,6 @@ static void
 InitializeRelfilenumberMap(void)
 {
        HASHCTL         ctl;
-       int                     i;
 
        /* Make sure we've initialized CacheMemoryContext. */
        if (CacheMemoryContext == NULL)
@@ -97,17 +96,20 @@ InitializeRelfilenumberMap(void)
        /* build skey */
        MemSet(&relfilenumber_skey, 0, sizeof(relfilenumber_skey));
 
-       for (i = 0; i < 2; i++)
-       {
-               fmgr_info_cxt(F_OIDEQ,
-                                         &relfilenumber_skey[i].sk_func,
-                                         CacheMemoryContext);
-               relfilenumber_skey[i].sk_strategy = BTEqualStrategyNumber;
-               relfilenumber_skey[i].sk_subtype = InvalidOid;
-               relfilenumber_skey[i].sk_collation = InvalidOid;
-       }
-
+       fmgr_info_cxt(F_OIDEQ,
+                                 &relfilenumber_skey[0].sk_func,
+                                 CacheMemoryContext);
+       relfilenumber_skey[0].sk_strategy = BTEqualStrategyNumber;
+       relfilenumber_skey[0].sk_subtype = InvalidOid;
+       relfilenumber_skey[0].sk_collation = InvalidOid;
        relfilenumber_skey[0].sk_attno = Anum_pg_class_reltablespace;
+
+       fmgr_info_cxt(F_INT8EQ,
+                                 &relfilenumber_skey[1].sk_func,
+                                 CacheMemoryContext);
+       relfilenumber_skey[1].sk_strategy = BTEqualStrategyNumber;
+       relfilenumber_skey[1].sk_subtype = InvalidOid;
+       relfilenumber_skey[1].sk_collation = InvalidOid;
        relfilenumber_skey[1].sk_attno = Anum_pg_class_relfilenode;
 
        /*