aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/gin
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2020-03-07 13:31:17 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2020-03-07 13:31:17 -0500
commitea7dace2aa21e79a7a8eb23c493bcd2057d9bd7e (patch)
treecaaf00c5cbd274518f2f87a2e6fe0dd7ee181ecd /src/backend/access/gin
parent7e39b968f118c6444bd3a3bd59c3e9d73e652e0c (diff)
downloadpostgresql-ea7dace2aa21e79a7a8eb23c493bcd2057d9bd7e.tar.gz
postgresql-ea7dace2aa21e79a7a8eb23c493bcd2057d9bd7e.zip
Simplify/speed up assertion cross-check in ginCompressPostingList().
I noticed while testing some other stuff that the CHECK_ENCODING_ROUNDTRIP logic in ginCompressPostingList could account for over 50% of the runtime of an INSERT with a GIN index. While that's not relevant to production performance, it's still kind of annoying in a debug build. Replacing the loop around short memcmp's with one long memcmp works just as well and is significantly faster, at least on my machine.
Diffstat (limited to 'src/backend/access/gin')
-rw-r--r--src/backend/access/gin/ginpostinglist.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/src/backend/access/gin/ginpostinglist.c b/src/backend/access/gin/ginpostinglist.c
index 7dff2071d8f..461ec93fdef 100644
--- a/src/backend/access/gin/ginpostinglist.c
+++ b/src/backend/access/gin/ginpostinglist.c
@@ -266,11 +266,9 @@ ginCompressPostingList(const ItemPointer ipd, int nipd, int maxsize,
{
int ndecoded;
ItemPointer tmp = ginPostingListDecode(result, &ndecoded);
- int i;
Assert(ndecoded == totalpacked);
- for (i = 0; i < ndecoded; i++)
- Assert(memcmp(&tmp[i], &ipd[i], sizeof(ItemPointerData)) == 0);
+ Assert(memcmp(tmp, ipd, ndecoded * sizeof(ItemPointerData)) == 0);
pfree(tmp);
}
#endif