Fix handling of REWIND/MARK/BACKWARD in incremental sort
authorTomas Vondra <tomas.vondra@postgresql.org>
Sat, 9 May 2020 17:41:18 +0000 (19:41 +0200)
committerTomas Vondra <tomas.vondra@postgresql.org>
Sat, 9 May 2020 17:41:18 +0000 (19:41 +0200)
commitc4427226483c78618ba45eff34917400a77718a5
treeffa7196ed0e8d590d91a154a3354dd715e8be411
parent6c298881c20797ac424558b9ff68d9781e03f6c4
Fix handling of REWIND/MARK/BACKWARD in incremental sort

The executor flags were not handled entirely correctly, although the
bugs were mostly harmless and it was mostly comment inaccuracy. We don't
need to strip any of the flags for child nodes.

Incremental sort does not support backward scans of mark/restore, so
MARK/BACKWARDS flags should not be possible. So we simply ensure this
using an assert, and we don't bother removing them when initializing
the child node.

With REWIND it's a bit less clear - incremental sort does not support
REWIND, but there is no way to signal this - it's legal to just ignore
the flag. We however continue passing the flag to child nodes, because
they might be useful to leverage that.

Reported-by: Michael Paquier
Author: James Coleman
Reviewed-by: Tomas Vondra
Discussion: https://postgr.es/m/20200414065336.GI1492@paquier.xyz
src/backend/executor/nodeIncrementalSort.c