Add volatile modifier to a variable used in the query cache module.
authorTatsuo Ishii <ishii@sraoss.co.jp>
Fri, 20 May 2022 04:55:20 +0000 (13:55 +0900)
committerTatsuo Ishii <ishii@sraoss.co.jp>
Fri, 20 May 2022 04:55:20 +0000 (13:55 +0900)
"sts" variable used in pool_fetch_memory_cache() did not have volatile
modifier although it is used in PG_TRY() block. If an exception arises
the value set to variable will be lost in the PG_CATCH block. The bad
effect of this will not be triggered unless error occurs and I think
the bad effect has rarely been observed in the wild (as for as I know,
I have never heard such a report). Anyway, bug is bug.

src/query_cache/pool_memqcache.c

index a8cc5f7121cc3056ed52f24a1a13d97f61f62cf0..4b127f50f834bb709f1d18a908418b471ef158ae 100644 (file)
@@ -734,7 +734,7 @@ pool_fetch_from_memory_cache(POOL_CONNECTION * frontend,
 {
        char       *qcache;
        size_t          qcachelen;
-       int                     sts;
+       volatile int    sts;
        pool_sigset_t oldmask;
 
        ereport(DEBUG1,