diff options
Diffstat (limited to 'src/backend/utils/sort/sharedtuplestore.c')
-rw-r--r-- | src/backend/utils/sort/sharedtuplestore.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/src/backend/utils/sort/sharedtuplestore.c b/src/backend/utils/sort/sharedtuplestore.c index c3ab494a45e..6537a4303b1 100644 --- a/src/backend/utils/sort/sharedtuplestore.c +++ b/src/backend/utils/sort/sharedtuplestore.c @@ -196,14 +196,9 @@ static void sts_flush_chunk(SharedTuplestoreAccessor *accessor) { size_t size; - size_t written; size = STS_CHUNK_PAGES * BLCKSZ; - written = BufFileWrite(accessor->write_file, accessor->write_chunk, size); - if (written != size) - ereport(ERROR, - (errcode_for_file_access(), - errmsg("could not write to temporary file: %m"))); + BufFileWrite(accessor->write_file, accessor->write_chunk, size); memset(accessor->write_chunk, 0, size); accessor->write_pointer = &accessor->write_chunk->data[0]; accessor->sts->participants[accessor->participant].npages += @@ -555,6 +550,7 @@ sts_parallel_scan_next(SharedTuplestoreAccessor *accessor, void *meta_data) if (!eof) { SharedTuplestoreChunk chunk_header; + size_t nread; /* Make sure we have the file open. */ if (accessor->read_file == NULL) @@ -570,14 +566,15 @@ sts_parallel_scan_next(SharedTuplestoreAccessor *accessor, void *meta_data) if (BufFileSeekBlock(accessor->read_file, read_page) != 0) ereport(ERROR, (errcode_for_file_access(), - errmsg("could not read from shared tuplestore temporary file"), - errdetail_internal("Could not seek to next block."))); - if (BufFileRead(accessor->read_file, &chunk_header, - STS_CHUNK_HEADER_SIZE) != STS_CHUNK_HEADER_SIZE) + errmsg("could not seek block %u in shared tuplestore temporary file", + read_page))); + nread = BufFileRead(accessor->read_file, &chunk_header, + STS_CHUNK_HEADER_SIZE); + if (nread != STS_CHUNK_HEADER_SIZE) ereport(ERROR, (errcode_for_file_access(), - errmsg("could not read from shared tuplestore temporary file"), - errdetail_internal("Short read while reading chunk header."))); + errmsg("could not read from shared tuplestore temporary file: read only %zu of %zu bytes", + nread, STS_CHUNK_HEADER_SIZE))); /* * If this is an overflow chunk, we skip it and any following |