1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-31 22:04:40 +03:00

Fix default signature length for gist_ltree_ops

911e702077 implemented operator class parameters including the signature length
in ltree.  Previously, the signature length for gist_ltree_ops was 8.  Because
of bug 911e702077 the default signature length for gist_ltree_ops became 28 for
ltree 1.1 (where options method is NOT provided) and 8 for ltree 1.2 (where
options method is provided).  This commit changes the default signature length
for ltree 1.1 to 8.

Existing gist_ltree_ops indexes might be corrupted in various scenarios.
Thus, we have to recommend reindexing all the gist_ltree_ops indexes after
the upgrade.

Reported-by: Victor Yegorov
Reviewed-by: Tomas Vondra, Tom Lane, Andres Freund, Nikita Glukhov
Reviewed-by: Andrew Dunstan
Author: Tomas Vondra, Alexander Korotkov
Discussion: https://postgr.es/m/17406-71e02820ae79bb40%40postgresql.org
Discussion: https://postgr.es/m/d80e0a55-6c3e-5b26-53e3-3c4f973f737c%40enterprisedb.com
This commit is contained in:
Alexander Korotkov
2022-03-16 11:41:18 +03:00
parent 51e760e5a6
commit bad202c615
2 changed files with 11 additions and 9 deletions

View File

@ -216,11 +216,13 @@ int ltree_strncasecmp(const char *a, const char *b, size_t s);
/* GiST support for ltree */
#define SIGLEN_MAX GISTMaxIndexKeySize
#define SIGLEN_DEFAULT (2 * sizeof(int32))
#define BITBYTE 8
#define SIGLEN (sizeof(int32) * SIGLENINT)
#define SIGLENBIT(siglen) ((siglen) * BITBYTE)
#define LTREE_SIGLEN_DEFAULT (2 * sizeof(int32))
#define LTREE_SIGLEN_MAX GISTMaxIndexKeySize
#define LTREE_GET_SIGLEN() (PG_HAS_OPCLASS_OPTIONS() ? \
((LtreeGistOptions *) PG_GET_OPCLASS_OPTIONS())->siglen : \
LTREE_SIGLEN_DEFAULT)
typedef unsigned char *BITVECP;