pgsql: Fix erroneous hash calculations in gin_extract_jsonb_path().
От | Tom Lane |
---|---|
Тема | pgsql: Fix erroneous hash calculations in gin_extract_jsonb_path(). |
Дата | |
Msg-id | E1ZuTlB-0000r3-P4@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Fix erroneous hash calculations in gin_extract_jsonb_path(). The jsonb_path_ops code calculated hash values inconsistently in some cases involving nested arrays and objects. This would result in queries possibly not finding entries that they should find, when using a jsonb_path_ops GIN index for the search. The problem cases involve JSONB values that contain both scalars and sub-objects at the same nesting level, for example an array containing both scalars and sub-arrays. To fix, reset the current stack->hash after processing each value or sub-object, not before; and don't try to be cute about the outermost level's initial hash. Correcting this means that existing jsonb_path_ops indexes may now be inconsistent with the new hash calculation code. The symptom is the same --- searches not finding entries they should find --- but the specific rows affected are likely to be different. Users will need to REINDEX jsonb_path_ops indexes to make sure that all searches work as expected. Per bug #13756 from Daniel Cheng. Back-patch to 9.4 where the faulty logic was introduced. Branch ------ REL9_5_STABLE Details ------- http://git.postgresql.org/pg/commitdiff/4d867458fce3743adc95ad6513c9d2dea87cd7f4 Modified Files -------------- src/backend/utils/adt/jsonb_gin.c | 51 +++++++++++++---------------------- src/test/regress/expected/jsonb.out | 50 ++++++++++++++++++++++++++++++++++ src/test/regress/sql/jsonb.sql | 20 ++++++++++++++ 3 files changed, 88 insertions(+), 33 deletions(-)
В списке pgsql-committers по дате отправления: