summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Paquier2023-09-05 04:57:44 +0000
committerMichael Paquier2023-09-05 04:57:44 +0000
commitaa0d3504560d40f4300a3d49d1c6c3bfc3b894e5 (patch)
treea26b3f042522203a814fdbd862e5cd8e090735ac
parentae10dbb0c5e09bff9e26412de7940271ef501164 (diff)
Improve description of keys in tsvector
If all the bits of a key in a tsvector are true (marked with ALLISTRUE), gtsvectorout() would show the following description: "0 true bits, 0 false bits" This is confusing, as all the bits are true, but this would be equivalent to the information if siglen is 0. This commit improves the output so as "all true bits" show instead in this case. Alexander has proposed a regression test for pageinspect, not included here as it is rather expensive compared to its coverage value. Author: Alexander Lakhin Discussion: https://postgr.es/m/[email protected]
-rw-r--r--src/backend/utils/adt/tsgistidx.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/backend/utils/adt/tsgistidx.c b/src/backend/utils/adt/tsgistidx.c
index 12a4111e99a..273f9b09253 100644
--- a/src/backend/utils/adt/tsgistidx.c
+++ b/src/backend/utils/adt/tsgistidx.c
@@ -115,10 +115,15 @@ gtsvectorout(PG_FUNCTION_ARGS)
sprintf(outbuf, ARROUTSTR, (int) ARRNELEM(key));
else
{
- int siglen = GETSIGLEN(key);
- int cnttrue = (ISALLTRUE(key)) ? SIGLENBIT(siglen) : sizebitvec(GETSIGN(key), siglen);
+ if (ISALLTRUE(key))
+ sprintf(outbuf, "all true bits");
+ else
+ {
+ int siglen = GETSIGLEN(key);
+ int cnttrue = sizebitvec(GETSIGN(key), siglen);
- sprintf(outbuf, SINGOUTSTR, cnttrue, (int) SIGLENBIT(siglen) - cnttrue);
+ sprintf(outbuf, SINGOUTSTR, cnttrue, (int) SIGLENBIT(siglen) - cnttrue);
+ }
}
PG_FREE_IF_COPY(key, 0);