mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
Hash indexes had better pass the index collation to support functions, too.
Per experimentation with contrib/citext, whose hash function assumes that it'll be passed a collation.
This commit is contained in:
parent
1abd146ddd
commit
a0b75a41a9
@ -80,11 +80,13 @@ uint32
|
||||
_hash_datum2hashkey(Relation rel, Datum key)
|
||||
{
|
||||
FmgrInfo *procinfo;
|
||||
Oid collation;
|
||||
|
||||
/* XXX assumes index has only one attribute */
|
||||
procinfo = index_getprocinfo(rel, 1, HASHPROC);
|
||||
collation = rel->rd_indcollation[0];
|
||||
|
||||
return DatumGetUInt32(FunctionCall1(procinfo, key));
|
||||
return DatumGetUInt32(FunctionCall1Coll(procinfo, collation, key));
|
||||
}
|
||||
|
||||
/*
|
||||
@ -98,6 +100,7 @@ uint32
|
||||
_hash_datum2hashkey_type(Relation rel, Datum key, Oid keytype)
|
||||
{
|
||||
RegProcedure hash_proc;
|
||||
Oid collation;
|
||||
|
||||
/* XXX assumes index has only one attribute */
|
||||
hash_proc = get_opfamily_proc(rel->rd_opfamily[0],
|
||||
@ -108,8 +111,9 @@ _hash_datum2hashkey_type(Relation rel, Datum key, Oid keytype)
|
||||
elog(ERROR, "missing support function %d(%u,%u) for index \"%s\"",
|
||||
HASHPROC, keytype, keytype,
|
||||
RelationGetRelationName(rel));
|
||||
collation = rel->rd_indcollation[0];
|
||||
|
||||
return DatumGetUInt32(OidFunctionCall1(hash_proc, key));
|
||||
return DatumGetUInt32(OidFunctionCall1Coll(hash_proc, collation, key));
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user