Make bit/varbit substring() treat any negative length as meaning "all the rest

Tom Lane <tgl@sss.pgh.pa.us>

Commit: e4a6ebf7dece1481b1432c8ac43124487bebf3d9
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2010-01-07T19:53:11Z
Releases: 9.0.0
Make bit/varbit substring() treat any negative length as meaning "all the rest
of the string".  The previous coding treated only -1 that way, and would
produce an invalid result value for other negative values.

We ought to fix it so that 2-parameter bit substring() is a different C
function and the 3-parameter form throws error for negative length, but
that takes a pg_proc change which is impractical in the back branches;
and in any case somebody might be relying on -1 working this way.
So just do this as a back-patchable fix.

Files

PathChange+/−
src/backend/utils/adt/varbit.c modified +17 −7