postgresql/contrib/intarray
Tom Lane 8aac9759bb Remove unnecessary pfree() in g_intbig_compress().
GiST compress functions (like all GiST opclass functions) are
supposed to be called in short-lived memory contexts, so that
minor memory leaks in them are not of concern, and indeed
explicit pfree's are likely slightly counterproductive.
But this one in g_intbig_compress() is more than
slightly counterproductive, because it's guarded by
"if (in != DatumGetArrayTypeP(entry->key))" which means
that if this test succeeds, we've detoasted the datum twice.
(And to add insult to injury, the extra detoast result is
leaked.)  Let's just drop the whole stanza, relying on the
GiST temporary context mechanism to clean up in good time.

The analogous bit in g_int_compress() is
       if (r != (ArrayType *) DatumGetPointer(entry->key))
           pfree(r);
which doesn't have the gratuitous-detoast problem so
I left it alone.  Perhaps there is a case for removing
unnecessary pfree's more widely, but I'm not sure if it's
worth the code churn.

The potential extra decompress seems expensive enough to
justify calling this a (minor) performance bug and
back-patching.

Konstantin Knizhnik, Matthias van de Meent, Tom Lane

Discussion: https://postgr.es/m/CAEze2Wi86=DxErfvf+SCB2UKmU2amKOF60BKuJOX=w-RojRn0A@mail.gmail.com
2023-07-13 13:07:51 -04:00
..
bench Pre-beta mechanical code beautification. 2023-05-19 17:24:48 -04:00
data 1. Fixed error with empty array ( '{}' ), 2001-08-04 19:35:32 +00:00
expected intarray: Prevent out-of-bound memory reads with gist__int_ops 2023-06-15 13:45:34 +09:00
sql intarray: Prevent out-of-bound memory reads with gist__int_ops 2023-06-15 13:45:34 +09:00
.gitignore Support "make check" in contrib 2011-04-25 22:27:11 +03:00
Makefile Remove deprecated containment operators for contrib types. 2021-03-05 10:45:41 -05:00
_int.h Fix typos in comments 2023-05-02 12:23:08 +09:00
_int_bool.c Convert contrib/intarray's bqarr_in() to report errors softly 2022-12-28 10:00:12 -05:00
_int_gin.c Make the order of the header file includes consistent in contrib modules. 2019-10-24 08:05:34 +05:30
_int_gist.c intarray: Prevent out-of-bound memory reads with gist__int_ops 2023-06-15 13:45:34 +09:00
_int_op.c Clean up newlines following left parentheses 2020-01-30 13:42:14 -03:00
_int_selfuncs.c Update copyright for 2023 2023-01-02 15:00:37 -05:00
_int_tool.c Remove useless casts to (void *) in arguments of some system functions 2023-02-07 06:57:59 +01:00
_intbig_gist.c Remove unnecessary pfree() in g_intbig_compress(). 2023-07-13 13:07:51 -04:00
intarray--1.0--1.1.sql Add selectivity estimation functions for intarray operators. 2015-07-21 20:59:24 +03:00
intarray--1.1--1.2.sql Make contrib modules' installation scripts more secure. 2020-08-10 10:44:42 -04:00
intarray--1.2--1.3.sql Implement operator class parameters 2020-03-30 19:17:23 +03:00
intarray--1.2.sql Update extensions with GIN/GIST support for parallel query. 2016-06-14 13:34:37 -04:00
intarray--1.3--1.4.sql Remove <@ from contrib/intarray's GiST operator classes. 2020-08-08 17:26:29 -04:00
intarray--1.4--1.5.sql Remove deprecated containment operators for contrib types. 2021-03-05 10:45:41 -05:00
intarray.control Remove deprecated containment operators for contrib types. 2021-03-05 10:45:41 -05:00
meson.build Update copyright for 2023 2023-01-02 15:00:37 -05:00