mirror of
https://github.com/postgres/postgres.git
synced 2025-09-11 00:12:06 +03:00
Refactor parse_filename_for_nontemp_relation to parse more.
Instead of returning the number of characters in the RelFileNumber,
return the RelFileNumber itself. Continue to return the fork number,
as before, and additionally return the segment number.
parse_filename_for_nontemp_relation now rejects a RelFileNumber or
segment number that begins with a leading zero. Before, we accepted
such cases as relation filenames, but if we continued to do so after
this change, the function might return the same values for two
different files (e.g. 1234.5 and 001234.5 or 1234.005) which could be
annoying for callers. Since we don't actually ever generate filenames
with leading zeroes in the names, any such files that we find must
have been created by something other than PostgreSQL, and it is
therefore reasonable to treat them as non-relation files.
Along the way, change unlogged_relation_entry to store a RelFileNumber
rather than an OID. This update should have been made in
851f4cc75c
, but it was overlooked.
It's trivial to make the update as part of this commit, perhaps more
trivial than it would have been without it, so do that.
Patch by me, reviewed by David Steele.
Discussion: http://postgr.es/m/CA+TgmoZNVeBzoqDL8xvr-nkaepq815jtDR4nJzPew7=3iEuM1g@mail.gmail.com
This commit is contained in:
@@ -20,8 +20,9 @@
|
||||
|
||||
extern void ResetUnloggedRelations(int op);
|
||||
extern bool parse_filename_for_nontemp_relation(const char *name,
|
||||
int *relnumchars,
|
||||
ForkNumber *fork);
|
||||
RelFileNumber *relnumber,
|
||||
ForkNumber *fork,
|
||||
unsigned *segno);
|
||||
|
||||
#define UNLOGGED_RELATION_CLEANUP 0x0001
|
||||
#define UNLOGGED_RELATION_INIT 0x0002
|
||||
|
Reference in New Issue
Block a user