summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiu Yiding <liuyd.fnst@fujitsu.com>2025-12-02 10:37:28 +0800
committerKhem Raj <raj.khem@gmail.com>2025-12-02 09:18:20 -0800
commit7fb4910ccb6a156bf67eb773ff1b421b30536b58 (patch)
treec66a2b4e6bcb98b67cd2f9f1665378073c5b219c
parenta2f2c06ec813bfc93718b1851a207343aaa7c663 (diff)
downloadmeta-openembedded-7fb4910ccb6a156bf67eb773ff1b421b30536b58.tar.gz
pgpool2: 4.6.3 -> 4.6.4
Drop 0001-snprintf-Add-math.h-to-ensure-isnan-and-isinf-are-de.patch and v1-0001-Make-time-calculations-always-long-long.patch as those were merged upstream. Signed-off-by: Liu Yiding <liuyd.fnst@fujitsu.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r--meta-networking/recipes-support/pgpool2/pgpool2/0001-snprintf-Add-math.h-to-ensure-isnan-and-isinf-are-de.patch40
-rw-r--r--meta-networking/recipes-support/pgpool2/pgpool2/v1-0001-Make-time-calculations-always-long-long.patch336
-rw-r--r--meta-networking/recipes-support/pgpool2/pgpool2_4.6.4.bb (renamed from meta-networking/recipes-support/pgpool2/pgpool2_4.6.3.bb)4
3 files changed, 1 insertions, 379 deletions
diff --git a/meta-networking/recipes-support/pgpool2/pgpool2/0001-snprintf-Add-math.h-to-ensure-isnan-and-isinf-are-de.patch b/meta-networking/recipes-support/pgpool2/pgpool2/0001-snprintf-Add-math.h-to-ensure-isnan-and-isinf-are-de.patch
deleted file mode 100644
index 1fdf91227b..0000000000
--- a/meta-networking/recipes-support/pgpool2/pgpool2/0001-snprintf-Add-math.h-to-ensure-isnan-and-isinf-are-de.patch
+++ /dev/null
@@ -1,40 +0,0 @@
1From c0b6ae020ad87040b5bc6fbae94fb815f10884d2 Mon Sep 17 00:00:00 2001
2From: Gyorgy Sarvari <skandigraun@gmail.com>
3Date: Thu, 11 Sep 2025 11:58:02 +0200
4Subject: [PATCH] snprintf: Add math.h to ensure isnan and isinf are defined
5
6When building for 32-bit arm arch, compilation fails with the following error:
7| snprintf.c: In function 'fmtfloat':
8| snprintf.c:1232:13: error: implicit declaration of function 'isnan' [-Wimplicit-function-declaration]
9| 1232 | if (isnan(value))
10| | ^~~~~
11| snprintf.c:50:1: note: include '<math.h>' or provide a declaration of 'isnan'
12| 49 | #include "postgresql/server/port.h"
13| +++ |+#include <math.h>
14| 50 |
15| snprintf.c:1254:21: error: implicit declaration of function 'isinf' [-Wimplicit-function-declaration]
16| 1254 | if (isinf(value))
17| | ^~~~~
18| snprintf.c:1254:21: note: include '<math.h>' or provide a declaration of 'isinf'
19
20To avoid the error, add math.h to snprintf.c.
21
22Upstream-Status: Submitted [https://github.com/pgpool/pgpool2/pull/128]
23
24Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
25---
26 src/parser/snprintf.c | 1 +
27 1 file changed, 1 insertion(+)
28
29diff --git a/src/parser/snprintf.c b/src/parser/snprintf.c
30index 6dd4a50..cce7951 100644
31--- a/src/parser/snprintf.c
32+++ b/src/parser/snprintf.c
33@@ -36,6 +36,7 @@
34 #include "c.h"
35 #endif
36
37+#include <math.h>
38 #include <stdarg.h>
39 #include <stdio.h>
40 #include <stdint.h>
diff --git a/meta-networking/recipes-support/pgpool2/pgpool2/v1-0001-Make-time-calculations-always-long-long.patch b/meta-networking/recipes-support/pgpool2/pgpool2/v1-0001-Make-time-calculations-always-long-long.patch
deleted file mode 100644
index 07930f4341..0000000000
--- a/meta-networking/recipes-support/pgpool2/pgpool2/v1-0001-Make-time-calculations-always-long-long.patch
+++ /dev/null
@@ -1,336 +0,0 @@
1From 693208fa9f8481714040617746983741b7bf904d Mon Sep 17 00:00:00 2001
2From: Tatsuo Ishii <ishii@postgresql.org>
3Date: Fri, 3 Oct 2025 21:10:50 +0900
4Subject: [PATCH v1] Make time calculations always long long.
5
6Previously pgpool assumed that time_t to be a simple long. This causes
7a lots of compile time warnings on certain systems, for example
8OpenBSD because on the system time_t is __int64, which results in long
9long. This commit upcasts such calculations to long long to avoid the
10issue.
11
12This way times can't get truncated and for the places where time_t is
13actually used as a time and not a time diff this would allow pgpool to
14keep working correctly post Y2038 on 64 bit clean time_t systems post
15Y2038 (e.g. i386 OpenBSD).
16
17Moreover, json_get_long_value_for_key is changed to
18json_get_llong_value_for_key and changed the parameter to long long.
19This makes it more in line _json_value's integer, which is defined as
20int64. This should also give 32 bit platforms proper retrieval of the
21max value of an integer and may or may not solve some weird integer
22overflow issues.
23
24Author: Martijn van Duren <pgpool@list.imperialat.at>
25Reviewed-by: Tatsuo Ishii <ishii@postgresql.org>
26Discussion: https://www.pgpool.net/pipermail/pgpool-hackers/2025-May/004584.html
27
28From Yocto's perspective this patch also allows this application to
29compile for 32-bit targets.
30
31Upstream-Status: Submitted [https://www.postgresql.org/message-id/20251003.211957.2067537305399895611.ishii@postgresql.org]
32Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
33
34---
35 src/include/utils/json.h | 2 +-
36 src/include/watchdog/wd_commands.h | 2 +-
37 src/include/watchdog/wd_json_data.h | 4 ++--
38 src/main/pgpool_logger.c | 2 +-
39 src/pcp_con/pcp_worker.c | 4 ++--
40 src/protocol/pool_connection_pool.c | 12 ++++++------
41 src/query_cache/pool_memqcache.c | 6 +++---
42 src/utils/json.c | 2 +-
43 src/utils/pool_process_reporting.c | 2 +-
44 src/utils/pool_relcache.c | 2 +-
45 src/watchdog/watchdog.c | 4 ++--
46 src/watchdog/wd_commands.c | 4 ++--
47 src/watchdog/wd_heartbeat.c | 4 ++--
48 src/watchdog/wd_json_data.c | 20 +++++++++++---------
49 14 files changed, 36 insertions(+), 34 deletions(-)
50
51diff --git a/src/include/utils/json.h b/src/include/utils/json.h
52index 67cc025..7e24382 100644
53--- a/src/include/utils/json.h
54+++ b/src/include/utils/json.h
55@@ -313,7 +313,7 @@ extern "C"
56 /* pgpool-II extensions */
57 json_value *json_get_value_for_key(json_value * source, const char *key);
58 int json_get_int_value_for_key(json_value * source, const char *key, int *value);
59-int json_get_long_value_for_key(json_value * source, const char *key, long *value);
60+int json_get_llong_value_for_key(json_value * source, const char *key, long long *value);
61 char *json_get_string_value_for_key(json_value * source, const char *key);
62 int json_get_bool_value_for_key(json_value * source, const char *key, bool *value);
63
64diff --git a/src/include/watchdog/wd_commands.h b/src/include/watchdog/wd_commands.h
65index 34c5b9a..dd788da 100644
66--- a/src/include/watchdog/wd_commands.h
67+++ b/src/include/watchdog/wd_commands.h
68@@ -52,7 +52,7 @@ typedef struct WDGenericData
69 char *stringVal;
70 int intVal;
71 bool boolVal;
72- long longVal;
73+ long long longVal;
74 } data;
75 } WDGenericData;
76
77diff --git a/src/include/watchdog/wd_json_data.h b/src/include/watchdog/wd_json_data.h
78index 7b53999..4ad4910 100644
79--- a/src/include/watchdog/wd_json_data.h
80+++ b/src/include/watchdog/wd_json_data.h
81@@ -51,8 +51,8 @@ extern bool parse_node_status_json(char *json_data, int data_len, int *nodeID, i
82
83
84 extern bool parse_beacon_message_json(char *json_data, int data_len, int *state,
85- long *seconds_since_node_startup,
86- long *seconds_since_current_state,
87+ long long *seconds_since_node_startup,
88+ long long *seconds_since_current_state,
89 int *quorumStatus,
90 int *standbyNodesCount,
91 bool *escalated);
92diff --git a/src/main/pgpool_logger.c b/src/main/pgpool_logger.c
93index 2060867..21c67a8 100644
94--- a/src/main/pgpool_logger.c
95+++ b/src/main/pgpool_logger.c
96@@ -50,7 +50,7 @@
97 #include "main/pgpool_logger.h"
98
99 #define DEVNULL "/dev/null"
100-typedef int64 pg_time_t;
101+typedef time_t pg_time_t;
102 /*
103 * We read() into a temp buffer twice as big as a chunk, so that any fragment
104 * left after processing can be moved down to the front and we'll still have
105diff --git a/src/pcp_con/pcp_worker.c b/src/pcp_con/pcp_worker.c
106index de2658d..ddd892a 100644
107--- a/src/pcp_con/pcp_worker.c
108+++ b/src/pcp_con/pcp_worker.c
109@@ -933,9 +933,9 @@ inform_node_info(PCP_CONNECTION * frontend, char *buf)
110
111 snprintf(standby_delay_by_time_str, sizeof(standby_delay_by_time_str), "%d", bi->standby_delay_by_time);
112
113- snprintf(standby_delay_str, sizeof(standby_delay_str), UINT64_FORMAT, bi->standby_delay);
114+ snprintf(standby_delay_str, sizeof(standby_delay_str), "%lld", (long long)bi->standby_delay);
115
116- snprintf(status_changed_time_str, sizeof(status_changed_time_str), UINT64_FORMAT, bi->status_changed_time);
117+ snprintf(status_changed_time_str, sizeof(status_changed_time_str), "%lld", (long long)bi->status_changed_time);
118
119 pcp_write(frontend, "i", 1);
120 wsize = htonl(sizeof(code) +
121diff --git a/src/protocol/pool_connection_pool.c b/src/protocol/pool_connection_pool.c
122index 225294a..03e9a85 100644
123--- a/src/protocol/pool_connection_pool.c
124+++ b/src/protocol/pool_connection_pool.c
125@@ -299,10 +299,10 @@ pool_create_cp(void)
126
127 ereport(DEBUG1,
128 (errmsg("creating connection pool"),
129- errdetail("user: %s database: %s closetime: %ld",
130+ errdetail("user: %s database: %s closetime: %lld",
131 CONNECTION_SLOT(p, main_node_id)->sp->user,
132 CONNECTION_SLOT(p, main_node_id)->sp->database,
133- CONNECTION_SLOT(p, main_node_id)->closetime)));
134+ (long long)CONNECTION_SLOT(p, main_node_id)->closetime)));
135
136 if (CONNECTION_SLOT(p, main_node_id)->closetime < closetime)
137 {
138@@ -363,7 +363,7 @@ pool_connection_pool_timer(POOL_CONNECTION_POOL * backend)
139
140 ereport(DEBUG1,
141 (errmsg("setting backend connection close timer"),
142- errdetail("close time %ld", time(NULL))));
143+ errdetail("close time %lld", (long long)time(NULL))));
144
145 /* Set connection close time */
146 for (i = 0; i < NUM_BACKENDS; i++)
147@@ -421,7 +421,7 @@ pool_backend_timer(void)
148 now = time(NULL);
149
150 ereport(DEBUG1,
151- (errmsg("backend timer handler called at %ld", now)));
152+ (errmsg("backend timer handler called at %lld", (long long)now)));
153
154 for (i = 0; i < pool_config->max_pool; i++, p++)
155 {
156@@ -439,8 +439,8 @@ pool_backend_timer(void)
157
158 ereport(DEBUG1,
159 (errmsg("backend timer handler called"),
160- errdetail("expire time: %ld",
161- MAIN_CONNECTION(p)->closetime + pool_config->connection_life_time)));
162+ errdetail("expire time: %lld",
163+ (long long)(MAIN_CONNECTION(p)->closetime + pool_config->connection_life_time))));
164
165 if (now >= (MAIN_CONNECTION(p)->closetime + pool_config->connection_life_time))
166 {
167diff --git a/src/query_cache/pool_memqcache.c b/src/query_cache/pool_memqcache.c
168index cc70207..03a77b7 100644
169--- a/src/query_cache/pool_memqcache.c
170+++ b/src/query_cache/pool_memqcache.c
171@@ -280,7 +280,7 @@ pool_commit_cache(POOL_CONNECTION_POOL * backend, char *query, char *data, size_
172 memqcache_expire = pool_config->memqcache_expire;
173 ereport(DEBUG1,
174 (errmsg("committing SELECT results to cache storage"),
175- errdetail("memqcache_expire = %ld", memqcache_expire)));
176+ errdetail("memqcache_expire = %lld", (long long)memqcache_expire)));
177
178 if (pool_is_shmem_cache())
179 {
180@@ -2887,8 +2887,8 @@ static POOL_CACHEID * pool_find_item_on_shmem_cache(POOL_QUERY_HASH * query_hash
181 {
182 ereport(DEBUG1,
183 (errmsg("memcache finding item"),
184- errdetail("cache expired: now: %ld timestamp: %ld",
185- now, cih->timestamp + cih->expire)));
186+ errdetail("cache expired: now: %lld timestamp: %lld",
187+ (long long)now, (long long)(cih->timestamp + cih->expire))));
188 pool_delete_item_shmem_cache(c);
189 return NULL;
190 }
191diff --git a/src/utils/json.c b/src/utils/json.c
192index 319c8fd..9336fde 100644
193--- a/src/utils/json.c
194+++ b/src/utils/json.c
195@@ -1191,7 +1191,7 @@ json_get_int_value_for_key(json_value * source, const char *key, int *value)
196 }
197
198 int
199-json_get_long_value_for_key(json_value * source, const char *key, long *value)
200+json_get_llong_value_for_key(json_value * source, const char *key, long long *value)
201 {
202 json_value *jNode;
203
204diff --git a/src/utils/pool_process_reporting.c b/src/utils/pool_process_reporting.c
205index 71f871b..5910999 100644
206--- a/src/utils/pool_process_reporting.c
207+++ b/src/utils/pool_process_reporting.c
208@@ -2052,7 +2052,7 @@ get_health_check_stats(int *nrows)
209
210 /* status last changed */
211 t = bi->status_changed_time;
212- ereport(LOG,(errmsg("status_changed_time %ld", t)));
213+ ereport(LOG,(errmsg("status_changed_time %lld", (long long)t)));
214 strftime(stats[i].last_status_change, POOLCONFIG_MAXDATELEN, "%F %T", localtime(&t));
215
216 snprintf(stats[i].total_count, POOLCONFIG_MAXLONGCOUNTLEN, UINT64_FORMAT, health_check_stats[i].total_count);
217diff --git a/src/utils/pool_relcache.c b/src/utils/pool_relcache.c
218index 32362fc..1701cb5 100644
219--- a/src/utils/pool_relcache.c
220+++ b/src/utils/pool_relcache.c
221@@ -187,7 +187,7 @@ pool_search_relcache(POOL_RELCACHE * relcache, POOL_CONNECTION_POOL * backend, c
222 {
223 ereport(DEBUG1,
224 (errmsg("searching relcache"),
225- errdetail("relcache for database:%s table:%s expired. now:%ld expiration time:%ld", dbname, table, now, relcache->cache[i].expire)));
226+ errdetail("relcache for database:%s table:%s expired. now:%lld expiration time:%lld", dbname, table, (long long)now, (long long)relcache->cache[i].expire)));
227
228 relcache->cache[i].refcnt = 0;
229 break;
230diff --git a/src/watchdog/watchdog.c b/src/watchdog/watchdog.c
231index beb5a15..a78cc25 100644
232--- a/src/watchdog/watchdog.c
233+++ b/src/watchdog/watchdog.c
234@@ -6656,8 +6656,8 @@ watchdog_state_machine_nw_isolation(WD_EVENTS event, WatchdogNode * wdNode, WDPa
235 static bool
236 beacon_message_received_from_node(WatchdogNode * wdNode, WDPacketData * pkt)
237 {
238- long seconds_since_node_startup;
239- long seconds_since_current_state;
240+ long long seconds_since_node_startup;
241+ long long seconds_since_current_state;
242 int quorum_status;
243 int standby_nodes_count;
244 bool escalated;
245diff --git a/src/watchdog/wd_commands.c b/src/watchdog/wd_commands.c
246index 1459558..c5cd1dc 100644
247--- a/src/watchdog/wd_commands.c
248+++ b/src/watchdog/wd_commands.c
249@@ -193,9 +193,9 @@ get_wd_runtime_variable_value(char* wd_authkey, char *varName)
250
251 case VALUE_DATA_TYPE_LONG:
252 {
253- long longVal;
254+ long long longVal;
255
256- if (json_get_long_value_for_key(root, WD_JSON_KEY_VALUE_DATA, &longVal))
257+ if (json_get_llong_value_for_key(root, WD_JSON_KEY_VALUE_DATA, &longVal))
258 {
259 ereport(WARNING,
260 (errmsg("get runtime variable value from watchdog failed"),
261diff --git a/src/watchdog/wd_heartbeat.c b/src/watchdog/wd_heartbeat.c
262index 09b1ef5..e42cff5 100644
263--- a/src/watchdog/wd_heartbeat.c
264+++ b/src/watchdog/wd_heartbeat.c
265@@ -850,8 +850,8 @@ packet_to_string_hb(WdHbPacket * pkt, char *str, int maxlen)
266 {
267 int len;
268
269- len = snprintf(str, maxlen, "tv_sec=%ld tv_usec=%ld from=%s",
270- pkt->send_time.tv_sec, pkt->send_time.tv_usec, pkt->from);
271+ len = snprintf(str, maxlen, "tv_sec=%lld tv_usec=%lld from=%s",
272+ (long long)pkt->send_time.tv_sec, (long long)pkt->send_time.tv_usec, pkt->from);
273
274 return len;
275 }
276diff --git a/src/watchdog/wd_json_data.c b/src/watchdog/wd_json_data.c
277index 474fc37..602e3bf 100644
278--- a/src/watchdog/wd_json_data.c
279+++ b/src/watchdog/wd_json_data.c
280@@ -530,6 +530,7 @@ get_watchdog_node_from_json(char *json_data, int data_len, char **authkey)
281 {
282 json_value *root = NULL;
283 char *ptr;
284+ long long longVal;
285 WatchdogNode *wdNode = palloc0(sizeof(WatchdogNode));
286
287 root = json_parse(json_data, data_len);
288@@ -537,19 +538,20 @@ get_watchdog_node_from_json(char *json_data, int data_len, char **authkey)
289 if (root == NULL || root->type != json_object)
290 goto ERROR_EXIT;
291
292- if (json_get_long_value_for_key(root, "StartupTimeSecs", &wdNode->startup_time.tv_sec))
293+ if (json_get_llong_value_for_key(root, "StartupTimeSecs", &longVal))
294 {
295 bool escalated;
296- long seconds_since_node_startup;
297- long seconds_since_current_state;
298+ long long seconds_since_node_startup;
299+ long long seconds_since_current_state;
300 struct timeval current_time;
301
302+ wdNode->startup_time.tv_sec = longVal;
303 gettimeofday(&current_time, NULL);
304
305 /* The new version does not have StartupTimeSecs Key */
306- if (json_get_long_value_for_key(root, "SecondsSinceStartup", &seconds_since_node_startup))
307+ if (json_get_llong_value_for_key(root, "SecondsSinceStartup", &seconds_since_node_startup))
308 goto ERROR_EXIT;
309- if (json_get_long_value_for_key(root, "SecondsSinceCurrentState", &seconds_since_current_state))
310+ if (json_get_llong_value_for_key(root, "SecondsSinceCurrentState", &seconds_since_current_state))
311 goto ERROR_EXIT;
312 if (json_get_bool_value_for_key(root, "Escalated", &escalated))
313 goto ERROR_EXIT;
314@@ -640,8 +642,8 @@ ERROR_EXIT:
315 bool
316 parse_beacon_message_json(char *json_data, int data_len,
317 int *state,
318- long *seconds_since_node_startup,
319- long *seconds_since_current_state,
320+ long long *seconds_since_node_startup,
321+ long long *seconds_since_current_state,
322 int *quorumStatus,
323 int *standbyNodesCount,
324 bool *escalated)
325@@ -655,9 +657,9 @@ parse_beacon_message_json(char *json_data, int data_len,
326
327 if (json_get_int_value_for_key(root, "State", state))
328 goto ERROR_EXIT;
329- if (json_get_long_value_for_key(root, "SecondsSinceStartup", seconds_since_node_startup))
330+ if (json_get_llong_value_for_key(root, "SecondsSinceStartup", seconds_since_node_startup))
331 goto ERROR_EXIT;
332- if (json_get_long_value_for_key(root, "SecondsSinceCurrentState", seconds_since_current_state))
333+ if (json_get_llong_value_for_key(root, "SecondsSinceCurrentState", seconds_since_current_state))
334 goto ERROR_EXIT;
335 if (json_get_bool_value_for_key(root, "Escalated", escalated))
336 goto ERROR_EXIT;
diff --git a/meta-networking/recipes-support/pgpool2/pgpool2_4.6.3.bb b/meta-networking/recipes-support/pgpool2/pgpool2_4.6.4.bb
index 6d83ce9bc4..0d7f1e0342 100644
--- a/meta-networking/recipes-support/pgpool2/pgpool2_4.6.3.bb
+++ b/meta-networking/recipes-support/pgpool2/pgpool2_4.6.4.bb
@@ -12,13 +12,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=e4b38de086d73e0521de0bbdbaa4a1a9"
12 12
13SRC_URI = "https://www.pgpool.net/mediawiki/images/pgpool-II-${PV}.tar.gz \ 13SRC_URI = "https://www.pgpool.net/mediawiki/images/pgpool-II-${PV}.tar.gz \
14 file://0001-Fix-build-error-when-build-this-file.patch \ 14 file://0001-Fix-build-error-when-build-this-file.patch \
15 file://0001-snprintf-Add-math.h-to-ensure-isnan-and-isinf-are-de.patch \
16 file://v1-0001-Make-time-calculations-always-long-long.patch \
17 file://define_SIGNAL_ARGS.patch \ 15 file://define_SIGNAL_ARGS.patch \
18 file://pgpool.sysconfig \ 16 file://pgpool.sysconfig \
19 file://pgpool.service \ 17 file://pgpool.service \
20 " 18 "
21SRC_URI[sha256sum] = "46688668b2ace67d8161a320256252d98698bc7d9788cc6727269d5720299f2c" 19SRC_URI[sha256sum] = "ef0d2e91a9a11d737c6476247219e679f718bec53550646189594ef9aefd298d"
22 20
23S = "${UNPACKDIR}/pgpool-II-${PV}" 21S = "${UNPACKDIR}/pgpool-II-${PV}"
24 22