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)
|
_hash_datum2hashkey(Relation rel, Datum key)
|
||||||
{
|
{
|
||||||
FmgrInfo *procinfo;
|
FmgrInfo *procinfo;
|
||||||
|
Oid collation;
|
||||||
|
|
||||||
/* XXX assumes index has only one attribute */
|
/* XXX assumes index has only one attribute */
|
||||||
procinfo = index_getprocinfo(rel, 1, HASHPROC);
|
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)
|
_hash_datum2hashkey_type(Relation rel, Datum key, Oid keytype)
|
||||||
{
|
{
|
||||||
RegProcedure hash_proc;
|
RegProcedure hash_proc;
|
||||||
|
Oid collation;
|
||||||
|
|
||||||
/* XXX assumes index has only one attribute */
|
/* XXX assumes index has only one attribute */
|
||||||
hash_proc = get_opfamily_proc(rel->rd_opfamily[0],
|
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\"",
|
elog(ERROR, "missing support function %d(%u,%u) for index \"%s\"",
|
||||||
HASHPROC, keytype, keytype,
|
HASHPROC, keytype, keytype,
|
||||||
RelationGetRelationName(rel));
|
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