mirror of
https://github.com/postgres/postgres.git
synced 2025-12-22 17:42:17 +03:00
Remove obsolete name_ops index-only scan comments.
nbtree index-only scans of an index that uses btree/name_ops as one of
its index column's input opclasses are no longer at any risk of reading
past the end of currTuples. We're no longer reliant on such scans being
able to at least read from the start of markTuples storage (which uses
space from the same allocation as currTuples) to avoid a segfault:
StoreIndexTuple (from nodeIndexonlyscan.c) won't actually read past the
end of a cstring datum from a name_ops index. In other words, we
already have the "special-case treatment for name_ops" that the removed
comment supposed we could avoid by relying on markTuples in this way.
Oversight in commit a63224be49, which added special case handling of
name_ops cstrings to StoreIndexTuple, but missed these comments.
This commit is contained in:
@@ -437,16 +437,6 @@ btrescan(IndexScanDesc scan, ScanKey scankey, int nscankeys,
|
|||||||
* not already done in a previous rescan call. To save on palloc
|
* not already done in a previous rescan call. To save on palloc
|
||||||
* overhead, both workspaces are allocated as one palloc block; only this
|
* overhead, both workspaces are allocated as one palloc block; only this
|
||||||
* function and btendscan know that.
|
* function and btendscan know that.
|
||||||
*
|
|
||||||
* NOTE: this data structure also makes it safe to return data from a
|
|
||||||
* "name" column, even though btree name_ops uses an underlying storage
|
|
||||||
* datatype of cstring. The risk there is that "name" is supposed to be
|
|
||||||
* padded to NAMEDATALEN, but the actual index tuple is probably shorter.
|
|
||||||
* However, since we only return data out of tuples sitting in the
|
|
||||||
* currTuples array, a fetch of NAMEDATALEN bytes can at worst pull some
|
|
||||||
* data out of the markTuples array --- running off the end of memory for
|
|
||||||
* a SIGSEGV is not possible. Yeah, this is ugly as sin, but it beats
|
|
||||||
* adding special-case treatment for name_ops elsewhere.
|
|
||||||
*/
|
*/
|
||||||
if (scan->xs_want_itup && so->currTuples == NULL)
|
if (scan->xs_want_itup && so->currTuples == NULL)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user