diff --git a/configure b/configure
index 1f6d7933f9c73ad3ea67ce91eb5fae8b926ccf86..0b6c5752b7b6bbbd9168fa9e3371c93db1494f77 100755
--- a/configure
+++ b/configure
@@ -23217,7 +23217,8 @@ _ACEOF
fi
-for ac_func in rl_completion_matches rl_filename_completion_function
+
+for ac_func in rl_completion_matches rl_filename_completion_function rl_reset_screen_size
do
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
diff --git a/configure.in b/configure.in
index 9671a8d214cdf035ff3a5ae4daae9aa771ec2b07..43a10512b372dccdcbae2f5e7c08f6979cf01d89 100644
--- a/configure.in
+++ b/configure.in
@@ -1508,7 +1508,7 @@ LIBS="$LIBS_including_readline"
if test "$with_readline" = yes; then
PGAC_VAR_RL_COMPLETION_APPEND_CHARACTER
- AC_CHECK_FUNCS([rl_completion_matches rl_filename_completion_function])
+ AC_CHECK_FUNCS([rl_completion_matches rl_filename_completion_function rl_reset_screen_size])
AC_CHECK_FUNCS([append_history history_truncate_file])
fi
diff --git a/src/bin/psql/input.c b/src/bin/psql/input.c
index f08ed83d68ef99a17dd71f912bf67f457c6df5e6..1e5bba908a75614392c74c3c18b9a3094f3faa8e 100644
--- a/src/bin/psql/input.c
+++ b/src/bin/psql/input.c
@@ -65,6 +65,17 @@ gets_interactive(const char *prompt)
{
char *result;
+ /*
+ * Some versions of readline don't notice SIGWINCH signals that arrive
+ * when not actively reading input. The simplest fix is to always
+ * re-read the terminal size. This leaves a window for SIGWINCH to be
+ * missed between here and where readline() enables libreadline's
+ * signal handler, but that's probably short enough to be ignored.
+ */
+#ifdef HAVE_RL_RESET_SCREEN_SIZE
+ rl_reset_screen_size();
+#endif
+
/* Enable SIGINT to longjmp to sigint_interrupt_jmp */
sigint_interrupt_enabled = true;
@@ -330,6 +341,7 @@ initializeInput(int flags)
char home[MAXPGPATH];
useReadline = true;
+ rl_initialize();
initialize_readline();
useHistory = true;
diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in
index b6a6a48807e47db24941bfca4d928ee122ec0639..1c49fcb1225bf12d6d28d12f321b04431a0a8b20 100644
--- a/src/include/pg_config.h.in
+++ b/src/include/pg_config.h.in
@@ -421,6 +421,9 @@
/* Define to 1 if you have the `rl_filename_completion_function' function. */
#undef HAVE_RL_FILENAME_COMPLETION_FUNCTION
+/* Define to 1 if you have the `rl_reset_screen_size' function. */
+#undef HAVE_RL_RESET_SCREEN_SIZE
+
/* Define to 1 if you have the <security/pam_appl.h> header file. */
#undef HAVE_SECURITY_PAM_APPL_H