Hello ports@,

I'm currently experimenting with a setup where I expect to be using
pgpool-II. It appears that everything works as expected with the
update below. The only thing that doesn't seem to work is the new
wd_monitoring_interfaces_list functionality, for which I don't see
a direct need for my own setup and which probably needs some
OpenBSD specific code.

The json_writer.c bit is a bug I hit and got accepted upstream[0]

OK?

martijn@

[0] 
https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=14c94473b5b59429186d8c65407bcce17a20cf99

diff /usr/ports
path + /usr/ports
commit - 0fbcf24b3e32197a3a763c2c08e4480204b0b998
blob - 7b727f2f1bf26c69a4dc850af2467de70dc34498
file + databases/pgpool/Makefile
--- databases/pgpool/Makefile
+++ databases/pgpool/Makefile
@@ -1,7 +1,6 @@
 COMMENT=       connection pool server for PostgreSQL
 
-DISTNAME=      pgpool-II-3.7.18
-REVISION=      1
+DISTNAME=      pgpool-II-4.6.0
 
 CATEGORIES=    databases
 
commit - 0fbcf24b3e32197a3a763c2c08e4480204b0b998
blob - 20e05c1a006ebc4e5571c61db88536c1b0fbd841
file + databases/pgpool/distinfo
--- databases/pgpool/distinfo
+++ databases/pgpool/distinfo
@@ -1,2 +1,2 @@
-SHA256 (pgpool-II-3.7.18.tar.gz) = 0I4zuZYUjHukHw5PWjMLU5Ec1srJTHh3gIewaMjaCX4=
-SIZE (pgpool-II-3.7.18.tar.gz) = 3447131
+SHA256 (pgpool-II-4.6.0.tar.gz) = 9oplcUQtfqU7afOddJrUV3kLABgOGbAZ/ILiNbqwcyE=
+SIZE (pgpool-II-4.6.0.tar.gz) = 5396128
commit - 0fbcf24b3e32197a3a763c2c08e4480204b0b998
blob - /dev/null
file + databases/pgpool/patches/patch-src_include_utils_fe_ports_h (mode 644)
--- /dev/null
+++ databases/pgpool/patches/patch-src_include_utils_fe_ports_h
@@ -0,0 +1,11 @@
+Index: src/include/utils/fe_ports.h
+--- src/include/utils/fe_ports.h.orig
++++ src/include/utils/fe_ports.h
+@@ -28,6 +28,7 @@
+ #error "This file is not expected to be compiled for pgpool utilities only"
+ #endif
+ 
++#include <stdarg.h>
+ #include <stdlib.h>
+ #ifndef FE_PORTS
+ #define FE_PORTS
commit - 0fbcf24b3e32197a3a763c2c08e4480204b0b998
blob - f557cc3cf3fd3092e985cbfd30ed054e91427d8c
file + /dev/null
--- databases/pgpool/patches/patch-src_query_cache_pool_memqcache_c
+++ /dev/null
@@ -1,36 +0,0 @@
-Fix 64-bit time_t issues
-
-Index: src/query_cache/pool_memqcache.c
---- src/query_cache/pool_memqcache.c.orig
-+++ src/query_cache/pool_memqcache.c
-@@ -265,7 +265,7 @@ static int pool_commit_cache(POOL_CONNECTION_POOL *bac
-       memqcache_expire = pool_config->memqcache_expire;
-       ereport(DEBUG1,
-               (errmsg("commiting SELECT results to cache storage"),
--                       errdetail("memqcache_expire = %ld", 
memqcache_expire)));
-+                       errdetail("memqcache_expire = %lld", (long 
long)memqcache_expire)));
- 
-       if (pool_is_shmem_cache())
-       {
-@@ -2536,8 +2536,8 @@ static POOL_CACHEID *pool_find_item_on_shmem_cache(POO
-               {
-                       ereport(DEBUG1,
-                               (errmsg("memcache finding item"),
--                                      errdetail("cache expired: now: %ld 
timestamp: %ld",
--                                                 now, cih->timestamp + 
pool_config->memqcache_expire)));
-+                                      errdetail("cache expired: now: %lld 
timestamp: %lld",
-+                                                 (long long)now, (long 
long)cih->timestamp + pool_config->memqcache_expire)));
-                       pool_delete_item_shmem_cache(c);
-                       return NULL;
-               }
-@@ -2826,8 +2826,8 @@ static void dump_shmem_cache(POOL_CACHE_BLOCKID blocki
-               fprintf(stderr, "shmem: block: %d %d th item pointer(%lu 
bytes): offset:%d flags:%x\n",
-                               blockid, i, sizeof(*cip), cip->offset, 
cip->flags);
-               cih = item_header((char *)bh, i);
--              fprintf(stderr, "shmem: block: %d %d th item header(%lu bytes): 
timestamp:%ld length:%d\n",
--                              blockid, i, sizeof(*cih), cih->timestamp, 
cih->total_length);
-+              fprintf(stderr, "shmem: block: %d %d th item header(%lu bytes): 
timestamp:%lld length:%d\n",
-+                              blockid, i, sizeof(*cih), (long 
long)cih->timestamp, cih->total_length);
-       }
- }
- #endif
commit - 0fbcf24b3e32197a3a763c2c08e4480204b0b998
blob - /dev/null
file + databases/pgpool/patches/patch-src_utils_json_writer_c (mode 644)
--- /dev/null
+++ databases/pgpool/patches/patch-src_utils_json_writer_c
@@ -0,0 +1,63 @@
+Index: src/utils/json_writer.c
+--- src/utils/json_writer.c.orig
++++ src/utils/json_writer.c
+@@ -26,6 +26,7 @@
+ #include "utils/palloc.h"
+ #include "utils/json_writer.h"
+ 
++static void jw_put_string_escape(JsonNode * jNode, char *string);
+ static inline int jw_get_current_element_count(JsonNode * jNode);
+ static inline void jw_inc_current_element_count(JsonNode * jNode);
+ static inline JWElementType jw_get_current_element_type(JsonNode * jNode);
+@@ -67,9 +68,50 @@ jw_put_string(JsonNode * jNode, char *key, char *value
+ 
+       if (jw_get_current_element_count(jNode) > 0)
+               appendStringInfoChar(jNode->buf, ',');
+-      appendStringInfo(jNode->buf, "\"%s\":\"%s\"", key, value);
++      jw_put_string_escape(jNode, key);
++      appendStringInfoChar(jNode->buf, ':');
++      jw_put_string_escape(jNode, value);
+       jw_inc_current_element_count(jNode);
+       return true;
++}
++
++static void
++jw_put_string_escape(JsonNode * jNode, char *string)
++{
++      int i;
++
++      appendStringInfoChar(jNode->buf, '"');
++      for (i = 0; string[i] != '\0'; i++)
++      {
++              switch (string[i])
++              {
++                      case '\"':
++                              appendStringInfo(jNode->buf, "\\\"");
++                              break;
++                      case '\\':
++                              appendStringInfo(jNode->buf, "\\\\");
++                              break;
++                      case '\b':
++                              appendStringInfo(jNode->buf, "\\b");
++                              break;
++                      case '\f':
++                              appendStringInfo(jNode->buf, "\\f");
++                              break;
++                      case '\n':
++                              appendStringInfo(jNode->buf, "\\n");
++                              break;
++                      case '\r':
++                              appendStringInfo(jNode->buf, "\\r");
++                              break;
++                      case '\t':
++                              appendStringInfo(jNode->buf, "\\t");
++                              break;
++                      default:
++                              appendStringInfoChar(jNode->buf, string[i]);
++                              break;
++              }
++      }
++      appendStringInfoChar(jNode->buf, '"');
+ }
+ 
+ /* for compatibility reasons we pack bool in int*/
commit - 0fbcf24b3e32197a3a763c2c08e4480204b0b998
blob - 76606da9c6c164fc036ca5bbbc4e24bb2ddb3235
file + /dev/null
--- databases/pgpool/patches/patch-src_utils_pool_relcache_c
+++ /dev/null
@@ -1,14 +0,0 @@
-Fix 64-bit time_t issue
-
-Index: src/utils/pool_relcache.c
---- src/utils/pool_relcache.c.orig
-+++ src/utils/pool_relcache.c
-@@ -148,7 +148,7 @@ void *pool_search_relcache(POOL_RELCACHE *relcache, PO
-                               {
-                                       ereport(DEBUG1,
-                                               (errmsg("searching relcache"),
--                                                       errdetail("relcache 
for database:%s table:%s expired. now:%ld expiration time:%ld", dbname, table, 
now, relcache->cache[i].expire)));
-+                                                       errdetail("relcache 
for database:%s table:%s expired. now:%lld expiration time:%lld", dbname, 
table, (long long)now, (long long)relcache->cache[i].expire)));
- 
-                                       relcache->cache[i].refcnt = 0;
-                                       break;
commit - 0fbcf24b3e32197a3a763c2c08e4480204b0b998
blob - /dev/null
file + databases/pgpool/patches/patch-src_utils_ssl_utils_c (mode 644)
--- /dev/null
+++ databases/pgpool/patches/patch-src_utils_ssl_utils_c
@@ -0,0 +1,21 @@
+Index: src/utils/ssl_utils.c
+--- src/utils/ssl_utils.c.orig
++++ src/utils/ssl_utils.c
+@@ -221,7 +221,7 @@ calculate_hmac_sha256(const char *data, int len, char 
+       unsigned int res_len = WD_AUTH_HASH_LEN;
+       HMAC_CTX   *ctx = NULL;
+ 
+-#if (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined 
(LIBRESSL_VERSION_NUMBER))
++#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
+       ctx = HMAC_CTX_new();
+       HMAC_CTX_reset(ctx);
+ #else
+@@ -233,7 +233,7 @@ calculate_hmac_sha256(const char *data, int len, char 
+       HMAC_Init_ex(ctx, key, strlen(key), EVP_sha256(), NULL);
+       HMAC_Update(ctx, (unsigned char *) data, len);
+       HMAC_Final(ctx, (unsigned char *) str, &res_len);
+-#if (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined 
(LIBRESSL_VERSION_NUMBER))
++#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
+       HMAC_CTX_reset(ctx);
+       HMAC_CTX_free(ctx);
+ #else
commit - 0fbcf24b3e32197a3a763c2c08e4480204b0b998
blob - e86dbdc672216d188f8c9693552977e9d558866f
file + databases/pgpool/patches/patch-src_watchdog_wd_escalation_c
--- databases/pgpool/patches/patch-src_watchdog_wd_escalation_c
+++ databases/pgpool/patches/patch-src_watchdog_wd_escalation_c
@@ -1,12 +1,13 @@
 Index: src/watchdog/wd_escalation.c
 --- src/watchdog/wd_escalation.c.orig
 +++ src/watchdog/wd_escalation.c
-@@ -27,7 +27,7 @@
+@@ -27,9 +27,7 @@
  #include <unistd.h>
  #include <errno.h>
  
 -#ifdef __FreeBSD__
-+#if defined(__FreeBSD__) || defined(__OpenBSD__)
  #include <sys/wait.h>
- #endif
+-#endif
  
+ #include "utils/pool_signal.h"
+ #include "utils/elog.h"
commit - 0fbcf24b3e32197a3a763c2c08e4480204b0b998
blob - a3e6cd33e21ff2261ca7a489f5b176dcb99c8ced
file + /dev/null
--- databases/pgpool/patches/patch-src_watchdog_wd_utils_c
+++ /dev/null
@@ -1,23 +0,0 @@
-Fix build with opaque HMAC_CTX in LibreSSL 3.5.
-
-Index: src/watchdog/wd_utils.c
---- src/watchdog/wd_utils.c.orig
-+++ src/watchdog/wd_utils.c
-@@ -154,7 +154,7 @@ static void calculate_hmac_sha256(const char *data, in
-       unsigned int res_len = WD_AUTH_HASH_LEN;
-       HMAC_CTX *ctx = NULL;
- 
--#if (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined 
(LIBRESSL_VERSION_NUMBER))
-+#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
-       ctx = HMAC_CTX_new();
-       HMAC_CTX_reset(ctx);
- #else
-@@ -165,7 +165,7 @@ static void calculate_hmac_sha256(const char *data, in
-       HMAC_Init_ex(ctx, key, strlen(key), EVP_sha256(), NULL);
-       HMAC_Update(ctx, (unsigned char*)data, len);
-       HMAC_Final(ctx, (unsigned char*)str, &res_len);
--#if (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined 
(LIBRESSL_VERSION_NUMBER))
-+#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
-       HMAC_CTX_reset(ctx);
-       HMAC_CTX_free(ctx);
- #else
commit - 0fbcf24b3e32197a3a763c2c08e4480204b0b998
blob - f0b07253b47cf1f6356b8a1640750064b618f729
file + databases/pgpool/pkg/PLIST
--- databases/pgpool/pkg/PLIST
+++ databases/pgpool/pkg/PLIST
@@ -3,6 +3,9 @@
 @rcscript ${RCDIR}/pgpool
 @bin bin/pcp_attach_node
 @bin bin/pcp_detach_node
+@bin bin/pcp_health_check_stats
+@bin bin/pcp_invalidate_query_cache
+@bin bin/pcp_log_rotate
 @bin bin/pcp_node_count
 @bin bin/pcp_node_info
 @bin bin/pcp_pool_status
@@ -10,12 +13,16 @@
 @bin bin/pcp_proc_info
 @bin bin/pcp_promote_node
 @bin bin/pcp_recovery_node
+@bin bin/pcp_reload_config
 @bin bin/pcp_stop_pgpool
 @bin bin/pcp_watchdog_info
+@bin bin/pg_enc
 @bin bin/pg_md5
 @bin bin/pgpool
 bin/pgpool_setup
+@bin bin/pgproto
 bin/watchdog_setup
+@bin bin/wd_cli
 include/libpcp_ext.h
 include/pcp.h
 include/pool_process_reporting.h
@@ -26,16 +33,21 @@ lib/libpcp.la
 @so lib/postgresql/pgpool-regclass.so
 @man man/man8/pgpool.8
 share/examples/pgpool-II/
+share/examples/pgpool-II/aws_eip_if_cmd.sh.sample
+share/examples/pgpool-II/aws_rtb_if_cmd.sh.sample
+share/examples/pgpool-II/escalation.sh.sample
+share/examples/pgpool-II/failover.sh.sample
+share/examples/pgpool-II/follow_primary.sh.sample
 share/examples/pgpool-II/pcp.conf.sample
 @sample ${SYSCONFDIR}/pcp.conf
 share/examples/pgpool-II/pgpool.conf.sample
 @sample ${SYSCONFDIR}/pgpool.conf
-share/examples/pgpool-II/pgpool.conf.sample-logical
-share/examples/pgpool-II/pgpool.conf.sample-master-slave
-share/examples/pgpool-II/pgpool.conf.sample-replication
-share/examples/pgpool-II/pgpool.conf.sample-stream
+share/examples/pgpool-II/pgpool_remote_start.sample
 share/examples/pgpool-II/pool_hba.conf.sample
 @sample ${SYSCONFDIR}/pool_hba.conf
+share/examples/pgpool-II/recovery_1st_stage.sample
+share/examples/pgpool-II/replication_mode_recovery_1st_stage.sample
+share/examples/pgpool-II/replication_mode_recovery_2nd_stage.sample
 share/pgpool-II/
 share/pgpool-II/insert_lock.sql
 share/pgpool-II/pgpool.pam

Reply via email to