aboutsummaryrefslogtreecommitdiff
path: root/contrib/dbase/dbf.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2001-06-06 17:07:46 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2001-06-06 17:07:46 +0000
commit1173344e74f7b0eccb9bf3ad2307c82e12cb4fd8 (patch)
tree00c3aef112f9552cca8be339a7119d0541d73578 /contrib/dbase/dbf.c
parentce370eec3555a48c05154fa2e3f102af9c851e1e (diff)
downloadpostgresql-1173344e74f7b0eccb9bf3ad2307c82e12cb4fd8.tar.gz
postgresql-1173344e74f7b0eccb9bf3ad2307c82e12cb4fd8.zip
Adjust WAL code so that checkpoints truncate the xlog at the previous
checkpoint's redo pointer, not its undo pointer, per discussion in pghackers a few days ago. No point in hanging onto undo information until we have the ability to do something with it --- and this solves a rather large problem with log space for long-running transactions. Also, change all calls of write() to detect the case where write returned a count less than requested, but failed to set errno. Presume that this situation indicates ENOSPC, and give the appropriate error message, rather than a random message associated with the previous value of errno.
Diffstat (limited to 'contrib/dbase/dbf.c')
-rw-r--r--contrib/dbase/dbf.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/contrib/dbase/dbf.c b/contrib/dbase/dbf.c
index 94f0b165cac..9ed0c475d12 100644
--- a/contrib/dbase/dbf.c
+++ b/contrib/dbase/dbf.c
@@ -155,9 +155,8 @@ int dbf_write_head(dbhead *dbh) {
put_short(head.dbh_hlen, dbh->db_hlen);
put_short(head.dbh_rlen, dbh->db_rlen);
- if (write(dbh->db_fd, &head, sizeof(dbf_header)) == -1 ) {
+ if (write(dbh->db_fd, &head, sizeof(dbf_header)) != sizeof(dbf_header))
return DBF_ERROR;
- }
return 0;
}
@@ -180,14 +179,12 @@ int dbf_put_fields(dbhead *dbh) {
field.dbf_flen = dbh->db_fields[t].db_flen;
field.dbf_dec = dbh->db_fields[t].db_dec;
- if (write(dbh->db_fd, &field, sizeof(dbf_field)) == -1) {
+ if (write(dbh->db_fd, &field, sizeof(dbf_field)) != sizeof(dbf_field))
return DBF_ERROR;
- }
}
- if (write(dbh->db_fd, &end, 1) == -1) {
+ if (write(dbh->db_fd, &end, 1) != 1)
return DBF_ERROR;
- }
return 0;
}
@@ -457,15 +454,13 @@ int dbf_put_record(dbhead *dbh, field *rec, u_long where) {
idx += rec[t].db_flen;
}
- if (write(dbh->db_fd, data, dbh->db_rlen) == -1) {
+ if (write(dbh->db_fd, data, dbh->db_rlen) != dbh->db_rlen)
return DBF_ERROR;
- }
/* There's a 0x1A at the end of a dbf-file */
if (where == dbh->db_records) {
- if (write(dbh->db_fd, &end, 1) == -1) {
+ if (write(dbh->db_fd, &end, 1) != 1)
return DBF_ERROR;
- }
}
dbh->db_offset += dbh->db_rlen;