mirror of
https://github.com/postgres/postgres.git
synced 2025-05-13 01:13:08 -04:00
Fix gist_bool_ops to use gbtreekey2
Commit 57e3c5160b added a new GiST bool opclass, but it used gbtreekey4 to store the data, which left two bytes undefined, as reported by skink, our valgrind animal. There was a bit more confusion, because the opclass also used gbtreekey8 in the definition. Fix by defining a new gbtreekey2 struct, and using it in all the places. Discussion: https://postgr.es/m/CAE2gYzyDKJBZngssR84VGZEN=Ux=V9FV23QfPgo+7-yYnKKg4g@mail.gmail.com
This commit is contained in:
parent
ccf289745d
commit
e2fbb88372
@ -72,7 +72,7 @@ static const gbtree_ninfo tinfo =
|
|||||||
{
|
{
|
||||||
gbt_t_bool,
|
gbt_t_bool,
|
||||||
sizeof(bool),
|
sizeof(bool),
|
||||||
4, /* sizeof(gbtreekey4) */
|
2, /* sizeof(gbtreekey2) */
|
||||||
gbt_boolgt,
|
gbt_boolgt,
|
||||||
gbt_boolge,
|
gbt_boolge,
|
||||||
gbt_booleq,
|
gbt_booleq,
|
||||||
|
@ -4,6 +4,21 @@
|
|||||||
\echo Use "ALTER EXTENSION btree_gist UPDATE TO '1.7'" to load this file. \quit
|
\echo Use "ALTER EXTENSION btree_gist UPDATE TO '1.7'" to load this file. \quit
|
||||||
|
|
||||||
-- This upgrade scripts add support for bool.
|
-- This upgrade scripts add support for bool.
|
||||||
|
CREATE FUNCTION gbtreekey2_in(cstring)
|
||||||
|
RETURNS gbtreekey2
|
||||||
|
AS 'MODULE_PATHNAME', 'gbtreekey_in'
|
||||||
|
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
|
CREATE FUNCTION gbtreekey2_out(gbtreekey2)
|
||||||
|
RETURNS cstring
|
||||||
|
AS 'MODULE_PATHNAME', 'gbtreekey_out'
|
||||||
|
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
|
CREATE TYPE gbtreekey2 (
|
||||||
|
INTERNALLENGTH = 2,
|
||||||
|
INPUT = gbtreekey2_in,
|
||||||
|
OUTPUT = gbtreekey2_out
|
||||||
|
);
|
||||||
|
|
||||||
-- Define the GiST support methods
|
-- Define the GiST support methods
|
||||||
CREATE FUNCTION gbt_bool_consistent(internal,bool,int2,oid,internal)
|
CREATE FUNCTION gbt_bool_consistent(internal,bool,int2,oid,internal)
|
||||||
@ -32,11 +47,11 @@ AS 'MODULE_PATHNAME'
|
|||||||
LANGUAGE C IMMUTABLE STRICT;
|
LANGUAGE C IMMUTABLE STRICT;
|
||||||
|
|
||||||
CREATE FUNCTION gbt_bool_union(internal, internal)
|
CREATE FUNCTION gbt_bool_union(internal, internal)
|
||||||
RETURNS gbtreekey8
|
RETURNS gbtreekey2
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE C IMMUTABLE STRICT;
|
LANGUAGE C IMMUTABLE STRICT;
|
||||||
|
|
||||||
CREATE FUNCTION gbt_bool_same(gbtreekey8, gbtreekey8, internal)
|
CREATE FUNCTION gbt_bool_same(gbtreekey2, gbtreekey2, internal)
|
||||||
RETURNS internal
|
RETURNS internal
|
||||||
AS 'MODULE_PATHNAME'
|
AS 'MODULE_PATHNAME'
|
||||||
LANGUAGE C IMMUTABLE STRICT;
|
LANGUAGE C IMMUTABLE STRICT;
|
||||||
@ -57,6 +72,6 @@ AS
|
|||||||
FUNCTION 4 gbt_decompress (internal),
|
FUNCTION 4 gbt_decompress (internal),
|
||||||
FUNCTION 5 gbt_bool_penalty (internal, internal, internal),
|
FUNCTION 5 gbt_bool_penalty (internal, internal, internal),
|
||||||
FUNCTION 6 gbt_bool_picksplit (internal, internal),
|
FUNCTION 6 gbt_bool_picksplit (internal, internal),
|
||||||
FUNCTION 7 gbt_bool_same (gbtreekey8, gbtreekey8, internal),
|
FUNCTION 7 gbt_bool_same (gbtreekey2, gbtreekey2, internal),
|
||||||
FUNCTION 9 gbt_bool_fetch (internal),
|
FUNCTION 9 gbt_bool_fetch (internal),
|
||||||
STORAGE gbtreekey8;
|
STORAGE gbtreekey2;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user