[PATCH v1] psql: Count all table footer lines in pager setup

Erik Wienhold <ewie@ewie.name>

From: Erik Wienhold <ewie@ewie.name>
To:
Date: 2025-05-07T01:43:46Z
Lists: pgsql-hackers
Until now every table footer was counted as a single line when
determining if the pager is needed.  This fails to trigger the pager
when describing a view with a long definition using command \d+.  Fix
that by counting the actual lines of the footer text.
---
 src/fe_utils/print.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/fe_utils/print.c b/src/fe_utils/print.c
index 4af0f32f2fc..accb12145da 100644
--- a/src/fe_utils/print.c
+++ b/src/fe_utils/print.c
@@ -3416,12 +3416,13 @@ IsPagerNeeded(const printTableContent *cont, int extra_lines, bool expanded,
 		{
 			printTableFooter *f;
 
-			/*
-			 * FIXME -- this is slightly bogus: it counts the number of
-			 * footers, not the number of lines in them.
-			 */
-			for (f = cont->footers; f; f = f->next)
-				lines++;
+			for (f = cont->footers; f; f = f->next) {
+				int f_lines;
+
+				pg_wcssize((const unsigned char *) f->data, strlen(f->data),
+						   cont->opt->encoding, NULL, &f_lines, NULL);
+				lines += f_lines;
+			}
 		}
 
 		*fout = PageOutput(lines + extra_lines, cont->opt);
-- 
2.50.1


--zbipdo3ugt3s25ts--