Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w4vIv-002hHV-38 for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 06:31:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w4vIu-004hRr-1Q for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 06:31:52 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w4vIu-004hRj-0S for pgsql-hackers@lists.postgresql.org; Tue, 24 Mar 2026 06:31:52 +0000 Received: from mail-yx1-xb134.google.com ([2607:f8b0:4864:20::b134]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w4vIr-00000000pSo-3A7O for pgsql-hackers@lists.postgresql.org; Tue, 24 Mar 2026 06:31:52 +0000 Received: by mail-yx1-xb134.google.com with SMTP id 956f58d0204a3-64ae222d87dso905911d50.2 for ; Mon, 23 Mar 2026 23:31:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774333909; cv=none; d=google.com; s=arc-20240605; b=fQTP5PQW2jN9cTOFmpbZDGuTnyn94bKXghZggG0DgW4VpIkXkL2/565+GivZT2Hc5u Kb6qhx4iF6tgoTZl7cb9cIZP5VVdouISDcXlc0rxd/WtT+iw4nFhuFA+aAyVdy0slHk8 x8zLE5zUddJwXJ1HJxlHp/JR88Iqru2H8Se2g9tY8wvaUxs7Tnq3vt53cxTaPY+fA7WM mstmcwseHhE8CT0rBRKSD9JuD/WWJN1AVyyplTo+SPo+Gdeu1VY7BMwI9fBwRDEtcTOR 256aSp0N4yeY4BN45oDWLVZfJtRZzjAEIkX05asJbG9pxGT9VqFF7JaT/TbCqhgXulCw VGvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=L8Dzd4klQiGSI6X8PdOSQStzMHn3zkVEOtG/i8DvCf4=; fh=difWPyZhf+FMfWnUHiBJsrLSKQJL23D1+3HP+YAZNos=; b=KxGu+8c42uRPBxn5557OjvfZtlMJpaghD5qCWfwlopYptr6565kHpXmPj2BcXTu2pM rTBCfWJoV+Lt0rXBZba2HStOo0Gbu4ydJ1pJY/TyLWO5EAhjzjmbjt65uXorU1ZzlJty NYXFciM132TtZY2230NfVdhgGLXyDUJqjiMiH/+jXhBHA0fJnnf2k5Qv8rK7tW4FBDyr YicYoxCU/O74Tb1KjZQwZsVNB2w92f0WkbUHudpqfE1IH0s9gSgp+b9Rccz2jPQNUYXX im0gFTAQX77O1uMU4mQID2R7sVxtO1WtnJaOxMfsF31LasCuaOEMuwvVHBMXifd0OhuV e2uQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774333909; x=1774938709; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=L8Dzd4klQiGSI6X8PdOSQStzMHn3zkVEOtG/i8DvCf4=; b=nVMzuQp8ybXEu7ZdWvQIdDgQmzvLA5cWJj4jD3GYMF1c+A0YaWczZmMl6yb6pKhEBT JtNciV+vNXLN2BhazZ8t/vVZM3g1YKADHyFZoMVWq+rMYarFvuvg3syxAeseUYTHCniI vDYkO7mDf1JpXHJZAxNTRbK6R4Dcurhrk9+y/FxofGY608M1wLOMShgYlcYnvmxG9/67 VxP4oHbbRhx5HskPkdAnXjaE/OZ5OI3McRIaeFBQxXvrjdb2EU9DB81Su2/ezLE9Wrgr YeaXw/7bRaFKXzW1A0FDutgyR+X9YNuPc6ZkmNdfQjk6WsPmd4QrF+Rck87NU7hoFtIa JeLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774333909; x=1774938709; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=L8Dzd4klQiGSI6X8PdOSQStzMHn3zkVEOtG/i8DvCf4=; b=fJCAffm9FTjYguORdVbmwAZrBtVC2tk402VLK2S4Rt8yrR890AYDbJqH69YE82CqV9 ybyt3GfkzZHyfW4PhH7uAen/vCJRYy+7Z8CCXWd0V0waEhJnA41756TJgyP1kMqPo+4Z tl065ffTdlSl7gOaJG7WbmWYbtIkWTdv2IRO2KI+EyH+JLoOUR6s/kzGD6wjh1l08KH9 H0Mqi7vtvmYopfHErsMRAtkTYvi8yfGQus7GoubybpC7SNC7WXCQwbor9chg8SKjh9hu NEIlEIonX1fHYH8LQ8vwRAsm8NtH2Q+r2InYO7Xz1mQW9dTdP219bezuYUMks1j9LGSV Cntg== X-Gm-Message-State: AOJu0Yzgbh22oCBXGjPT8S+2QH26AFu/nmfJuVndFLkNg29yfvIlWXAD WD85/uI+gLeGtbQIJbAVuhL14NFyZndR3FC8K6Xt51I3ZeS8paIjB9e/bVapXdUz74OHJUspwiO G773XnBeQgsdkW1YW9KCNopmM5ItPQ/c= X-Gm-Gg: ATEYQzxmFXRfAgEytCaAnNQr9yYQ8Ee+d1uwG8hccJUk0lG547e9pi8g7bmRBi0etx+ K+f3y8aTmUTWbPLnhr+noBNZiQxixK6kjUdYZMSHgYtIT1ucEoBG64kD9v/O5Z2xwggGE29v0CS zwtPbqtTtn6rcFoLYxDRUU+2im2bAnQ9Eg/DQcBX9sVQS/XHIo7QMpDqW9OJSyzXTNTWQwk80Wy I/Bw26a/8A3NbvBsk00ccRl9JBvUaiTOA5v9FSqoItZQu7s+Xy1633qPRF2mUzjVCTymJIDHGur RnwKJmVcjMx3p/CEgiM6VoX8884Zl29xdlgOC+dwQIpsZJm1pjV8DNxoty4Jk/BSu5vPv+RKbhv YP8hNylZHnMAnzBN/mlxemnyCtNu5R5gPNX5RCut3jg8LNWCnmRuALl1++w== X-Received: by 2002:a05:690c:385:b0:799:2b4c:1d49 with SMTP id 00721157ae682-79a90bc7e4amr147378197b3.36.1774333908762; Mon, 23 Mar 2026 23:31:48 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Pavel Stehule Date: Tue, 24 Mar 2026 07:31:11 +0100 X-Gm-Features: AaiRm50U0rtKHyQtSY6C0DVCdwPd9NoVxpt2mkTHxb82YnJ-ORvZWQWV7NYNBaQ Message-ID: Subject: Re: bugfix - fix broken output in expanded aligned format, when data are too short To: Chao Li Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000589888064dbf4ebb" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000589888064dbf4ebb Content-Type: multipart/alternative; boundary="000000000000589887064dbf4eb9" --000000000000589887064dbf4eb9 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable =C3=BAt 24. 3. 2026 v 7:12 odes=C3=ADlatel Chao Li = napsal: > > > > On Mar 24, 2026, at 13:46, Pavel Stehule > wrote: > > > > Hi > > > > new version > > > > * fixed unwanted forcing to wrapped mode > > * regress test > > > > Regards > > > > Pavel > > > > > Thanks for the fix. The patch overall looks good to me. A couple of small > comments: > > 1 > ``` > /* > * Calculate available width for data in wrapped mode > */ > - if (cont->opt->format =3D=3D PRINT_WRAPPED) > + if (cont->opt->format =3D=3D PRINT_WRAPPED || cont->opt->format = =3D=3D > PRINT_ALIGNED) > ``` > > Since the condition has been updated, I think the comment above should be > adjusted as well. > done pavel@nemesis:~/src/postgresql$ git diff diff --git a/src/fe_utils/print.c b/src/fe_utils/print.c index 7d7eb7dd041..dbfe437bc4c 100644 --- a/src/fe_utils/print.c +++ b/src/fe_utils/print.c @@ -1443,7 +1443,8 @@ print_aligned_vertical(const printTableContent *cont, } /* - * Calculate available width for data in wrapped mode + * Calculate available width for data in wrapped mode or minimal width + * in aligned mode */ if (cont->opt->format =3D=3D PRINT_WRAPPED || cont->opt->format =3D=3D PRINT_ALIGNED) { > > 2 > ``` > +-- the output in expanded mode is shorter than header > +\pset border 2 > +\pset expanded on > +create table psql_short_tab(a int, b int); > +insert into psql_short_tab values(10,20),(30,40); > +\pset format aligned > +select * from psql_short_tab; > +\pset format wrapped > +select * from psql_short_tab; > +drop table psql_short_tab; > + > ``` > > After this test, does it make sense to turn expanded mode off explicitly, > in case it affects following tests? Today the next test happens to reset > it, but maybe tomorrow a new test gets added before that point. > There is no default pset setting in psql.sql. Following test has its own setting. Generally this is the responsibility to every test to set the environment how it is necessary. Maybe I am wrong, but I see, so only database objects and prepared queries are cleaned there. There is not problem to write \pset border 1 \pset expanded off, but following tests starts with \pset expanded off and this can be little bit messy and redundant Thank you for check Regards Pavel > > Best regards, > -- > Chao Li (Evan) > HighGo Software Co., Ltd. > https://www.highgo.com/ > > > > > --000000000000589887064dbf4eb9 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


=C3=BAt 24. 3. = 2026 v=C2=A07:12 odes=C3=ADlatel Chao Li <li.evan.chao@gmail.com> napsal:


> On Mar 24, 2026, at 13:46, Pavel Stehule <pavel.stehule@gmail.com> wrote:<= br> >
> Hi
>
> new version
>
> * fixed unwanted forcing to wrapped mode
> * regress test
>
> Regards
>
> Pavel
> <v20260324-1-0001-The-output-of-thin-table-is-broken-in-expanded-mo= de-.patch>

Thanks for the fix. The patch overall looks good to me. A couple of small c= omments:

1
```
=C2=A0 =C2=A0 =C2=A0 =C2=A0 /*
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* Calculate available width for data in w= rapped mode
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*/
-=C2=A0 =C2=A0 =C2=A0 =C2=A0if (cont->opt->format =3D=3D PRINT_WRAPPE= D)
+=C2=A0 =C2=A0 =C2=A0 =C2=A0if (cont->opt->format =3D=3D PRINT_WRAPPE= D || cont->opt->format =3D=3D PRINT_ALIGNED)
```

Since the condition has been updated, I think the comment above should be a= djusted as well.

done

pavel@nemesis:~/src/postgresql$ git diff
diff --git a/src/fe_uti= ls/print.c b/src/fe_utils/print.c
index 7d7eb7dd041..dbfe437bc4c 100644<= br>--- a/src/fe_utils/print.c
+++ b/src/fe_utils/print.c
@@ -1443,7 += 1443,8 @@ print_aligned_vertical(const printTableContent *cont,
=C2=A0 = =C2=A0 }
=C2=A0
=C2=A0 =C2=A0 /*
- =C2=A0 =C2=A0* Calculate availa= ble width for data in wrapped mode
+ =C2=A0 =C2=A0* Calculate available = width for data in wrapped mode or minimal width
+ =C2=A0 =C2=A0* in alig= ned mode
=C2=A0 =C2=A0 =C2=A0*/
=C2=A0 =C2=A0 if (cont->opt->fo= rmat =3D=3D PRINT_WRAPPED || cont->opt->format =3D=3D PRINT_ALIGNED)<= br>=C2=A0 =C2=A0 {

=C2=A0

2
```
+-- the output in expanded mode is shorter than header
+\pset border 2
+\pset expanded on
+create table psql_short_tab(a int, b int);
+insert into psql_short_tab values(10,20),(30,40);
+\pset format aligned
+select * from psql_short_tab;
+\pset format wrapped
+select * from psql_short_tab;
+drop table psql_short_tab;
+
```

After this test, does it make sense to turn expanded mode off explicitly, i= n case it affects following tests? Today the next test happens to reset it,= but maybe tomorrow a new test gets added before that point.

There is no default pset setting in psql.sql. Followi= ng test has its own setting. Generally this is the responsibility to every = test to set the environment how it is necessary. Maybe I am wrong, but I se= e, so only database objects and prepared queries are cleaned there. There i= s not problem to write \pset border 1 \pset expanded off, but following tes= ts starts with \pset expanded off and this can be little bit messy and redu= ndant=C2=A0

Thank you for check

Regards

Pavel
=C2=A0

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
ht= tps://www.highgo.com/




--000000000000589887064dbf4eb9-- --000000000000589888064dbf4ebb Content-Type: text/x-patch; charset="US-ASCII"; name="v20260324-2-0001-The-output-of-thin-table-is-broken-in-expanded-mode-.patch" Content-Disposition: attachment; filename="v20260324-2-0001-The-output-of-thin-table-is-broken-in-expanded-mode-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn48k4bp0 RnJvbSBiNDZjNTM5M2U2NzRmMTE1MTVmZTdkMDI1ZWZmYTQ4ZGM0YWFmNGQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAib2tib2JAZ2l0aHViLmNvbSIgPHBhdmVsLnN0ZWh1bGVAZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI0IE1hciAyMDI2IDA2OjQyOjE4ICswMTAwClN1YmplY3Q6IFtQ QVRDSF0gVGhlIG91dHB1dCBvZiB0aGluIHRhYmxlIGlzIGJyb2tlbiBpbiBleHBhbmRlZCBtb2Rl ICh3aGVuCiBoZWFkZXIgaXMgd2lkZXIgdGhhbiByb3cpIGFuZCB3aGVuIGFsaWduZWQgbW9kZSBp cyB1c2VkLiBUaGUgd3JhcHBlZCBtb2RlIGlzCiBvay4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGlz c3VlLgoKLS0tCiBzcmMvZmVfdXRpbHMvcHJpbnQuYyAgICAgICAgICAgICAgIHwgIDcgKysrKy0t LQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCB8IDI2ICsrKysrKysrKysrKysr KysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbCAgICAgIHwgMTEgKysr KysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvZmVfdXRpbHMvcHJpbnQuYyBiL3NyYy9mZV91dGlscy9wcmlu dC5jCmluZGV4IDEyZDk2OWU4NjY2Li5kYmZlNDM3YmM0YyAxMDA2NDQKLS0tIGEvc3JjL2ZlX3V0 aWxzL3ByaW50LmMKKysrIGIvc3JjL2ZlX3V0aWxzL3ByaW50LmMKQEAgLTE0NDMsOSArMTQ0Mywx MCBAQCBwcmludF9hbGlnbmVkX3ZlcnRpY2FsKGNvbnN0IHByaW50VGFibGVDb250ZW50ICpjb250 LAogCX0KIAogCS8qCi0JICogQ2FsY3VsYXRlIGF2YWlsYWJsZSB3aWR0aCBmb3IgZGF0YSBpbiB3 cmFwcGVkIG1vZGUKKwkgKiBDYWxjdWxhdGUgYXZhaWxhYmxlIHdpZHRoIGZvciBkYXRhIGluIHdy YXBwZWQgbW9kZSBvciBtaW5pbWFsIHdpZHRoCisJICogaW4gYWxpZ25lZCBtb2RlCiAJICovCi0J aWYgKGNvbnQtPm9wdC0+Zm9ybWF0ID09IFBSSU5UX1dSQVBQRUQpCisJaWYgKGNvbnQtPm9wdC0+ Zm9ybWF0ID09IFBSSU5UX1dSQVBQRUQgfHwgY29udC0+b3B0LT5mb3JtYXQgPT0gUFJJTlRfQUxJ R05FRCkKIAl7CiAJCXVuc2lnbmVkIGludCBzd2lkdGgsCiAJCQkJCXJ3aWR0aCA9IDAsCkBAIC0x NTE3LDcgKzE1MTgsNyBAQCBwcmludF9hbGlnbmVkX3ZlcnRpY2FsKGNvbnN0IHByaW50VGFibGVD b250ZW50ICpjb250LAogCQkJaWYgKHdpZHRoIDwgcndpZHRoKQogCQkJCXdpZHRoID0gcndpZHRo OwogCi0JCQlpZiAob3V0cHV0X2NvbHVtbnMgPiAwKQorCQkJaWYgKGNvbnQtPm9wdC0+Zm9ybWF0 ID09IFBSSU5UX1dSQVBQRUQgJiYgb3V0cHV0X2NvbHVtbnMgPiAwKQogCQkJewogCQkJCXVuc2ln bmVkIGludCBtaW5fd2lkdGg7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHNxbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CmluZGV4IGM4 ZjM5MzJlZGYwLi5kYzQ0MjE5NjMxZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wc3FsLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CkBA IC0yODU0LDYgKzI4NTQsMzIgQEAgZXhlY3V0ZSBxOwogKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tKwogCiBkZWFsbG9jYXRlIHE7CistLSB0aGUgb3V0cHV0IGluIGV4cGFu ZGVkIG1vZGUgaXMgc2hvcnRlciB0aGFuIGhlYWRlcgorXHBzZXQgYm9yZGVyIDIKK1xwc2V0IGV4 cGFuZGVkIG9uCitjcmVhdGUgdGFibGUgcHNxbF9zaG9ydF90YWIoYSBpbnQsIGIgaW50KTsKK2lu c2VydCBpbnRvIHBzcWxfc2hvcnRfdGFiIHZhbHVlcygxMCwyMCksKDMwLDQwKTsKK1xwc2V0IGZv cm1hdCBhbGlnbmVkCitzZWxlY3QgKiBmcm9tIHBzcWxfc2hvcnRfdGFiOworKy1bIFJFQ09SRCAx IF0tKworfCBhIHwgMTAgICAgICAgfAorfCBiIHwgMjAgICAgICAgfAorKy1bIFJFQ09SRCAyIF0t KworfCBhIHwgMzAgICAgICAgfAorfCBiIHwgNDAgICAgICAgfAorKy0tLSstLS0tLS0tLS0tKwor CitccHNldCBmb3JtYXQgd3JhcHBlZAorc2VsZWN0ICogZnJvbSBwc3FsX3Nob3J0X3RhYjsKKyst WyBSRUNPUkQgMSBdLSsKK3wgYSB8IDEwICAgICAgIHwKK3wgYiB8IDIwICAgICAgIHwKKystWyBS RUNPUkQgMiBdLSsKK3wgYSB8IDMwICAgICAgIHwKK3wgYiB8IDQwICAgICAgIHwKKystLS0rLS0t LS0tLS0tLSsKKworZHJvcCB0YWJsZSBwc3FsX3Nob3J0X3RhYjsKIFxwc2V0IGxpbmVzdHlsZSBh c2NpaQogXHBzZXQgYm9yZGVyIDEKIC0tIHN1cHBvcnQgdGFibGUgZm9yIG91dHB1dC1mb3JtYXQg dGVzdHMgKHVzZWZ1bCB0byBjcmVhdGUgYSBmb290ZXIpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wc3FsLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsCmluZGV4 IGRjZGJkNGZjMDIwLi5iMDNhNjFmODY1NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcHNxbC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwKQEAgLTQ5OSw2 ICs0OTksMTcgQEAgZXhlY3V0ZSBxOwogCiBkZWFsbG9jYXRlIHE7CiAKKy0tIHRoZSBvdXRwdXQg aW4gZXhwYW5kZWQgbW9kZSBpcyBzaG9ydGVyIHRoYW4gaGVhZGVyCitccHNldCBib3JkZXIgMgor XHBzZXQgZXhwYW5kZWQgb24KK2NyZWF0ZSB0YWJsZSBwc3FsX3Nob3J0X3RhYihhIGludCwgYiBp bnQpOworaW5zZXJ0IGludG8gcHNxbF9zaG9ydF90YWIgdmFsdWVzKDEwLDIwKSwoMzAsNDApOwor XHBzZXQgZm9ybWF0IGFsaWduZWQKK3NlbGVjdCAqIGZyb20gcHNxbF9zaG9ydF90YWI7CitccHNl dCBmb3JtYXQgd3JhcHBlZAorc2VsZWN0ICogZnJvbSBwc3FsX3Nob3J0X3RhYjsKK2Ryb3AgdGFi bGUgcHNxbF9zaG9ydF90YWI7CisKIFxwc2V0IGxpbmVzdHlsZSBhc2NpaQogXHBzZXQgYm9yZGVy IDEKIAotLSAKMi41My4wCgo= --000000000000589888064dbf4ebb--