mirror of
https://github.com/postgres/postgres.git
synced 2026-04-28 17:49:35 -04:00
We have been using the term RelFileNode to refer to either (1) the integer that is used to name the sequence of files for a certain relation within the directory set aside for that tablespace/database combination; or (2) that value plus the OIDs of the tablespace and database; or occasionally (3) the whole series of files created for a relation based on those values. Using the same name for more than one thing is confusing. Replace RelFileNode with RelFileNumber when we're talking about just the single number, i.e. (1) from above, and with RelFileLocator when we're talking about all the things that are needed to locate a relation's files on disk, i.e. (2) from above. In the places where we refer to (3) as a relfilenode, instead refer to "relation storage". Since there is a ton of SQL code in the world that knows about pg_class.relfilenode, don't change the name of that column, or of other SQL-facing things that derive their name from it. On the other hand, do adjust closely-related internal terminology. For example, the structure member names dbNode and spcNode appear to be derived from the fact that the structure itself was called RelFileNode, so change those to dbOid and spcOid. Likewise, various variables with names like rnode and relnode get renamed appropriately, according to how they're being used in context. Hopefully, this is clearer than before. It is also preparation for future patches that intend to widen the relfilenumber fields from its current width of 32 bits. Variables that store a relfilenumber are now declared as type RelFileNumber rather than type Oid; right now, these are the same, but that can now more easily be changed. Dilip Kumar, per an idea from me. Reviewed also by Andres Freund. I fixed some whitespace issues, changed a couple of words in a comment, and made one other minor correction. Discussion: http://postgr.es/m/CA+TgmoamOtXbVAQf9hWFzonUo6bhhjS6toZQd7HZ-pmojtAmag@mail.gmail.com Discussion: http://postgr.es/m/CA+Tgmobp7+7kmi4gkq7Y+4AM9fTvL+O1oQ4-5gFTT+6Ng-dQ=g@mail.gmail.com Discussion: http://postgr.es/m/CAFiTN-vTe79M8uDH1yprOU64MNFE+R3ODRuA+JWf27JbhY4hJw@mail.gmail.com
106 lines
3.5 KiB
C
106 lines
3.5 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* tablecmds.h
|
|
* prototypes for tablecmds.c.
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* src/include/commands/tablecmds.h
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef TABLECMDS_H
|
|
#define TABLECMDS_H
|
|
|
|
#include "access/htup.h"
|
|
#include "catalog/dependency.h"
|
|
#include "catalog/objectaddress.h"
|
|
#include "nodes/parsenodes.h"
|
|
#include "storage/lock.h"
|
|
#include "utils/relcache.h"
|
|
|
|
struct AlterTableUtilityContext; /* avoid including tcop/utility.h here */
|
|
|
|
|
|
extern ObjectAddress DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId,
|
|
ObjectAddress *typaddress, const char *queryString);
|
|
|
|
extern void RemoveRelations(DropStmt *drop);
|
|
|
|
extern Oid AlterTableLookupRelation(AlterTableStmt *stmt, LOCKMODE lockmode);
|
|
|
|
extern void AlterTable(AlterTableStmt *stmt, LOCKMODE lockmode,
|
|
struct AlterTableUtilityContext *context);
|
|
|
|
extern LOCKMODE AlterTableGetLockLevel(List *cmds);
|
|
|
|
extern void ATExecChangeOwner(Oid relationOid, Oid newOwnerId, bool recursing, LOCKMODE lockmode);
|
|
|
|
extern void AlterTableInternal(Oid relid, List *cmds, bool recurse);
|
|
|
|
extern Oid AlterTableMoveAll(AlterTableMoveAllStmt *stmt);
|
|
|
|
extern ObjectAddress AlterTableNamespace(AlterObjectSchemaStmt *stmt,
|
|
Oid *oldschema);
|
|
|
|
extern void AlterTableNamespaceInternal(Relation rel, Oid oldNspOid,
|
|
Oid nspOid, ObjectAddresses *objsMoved);
|
|
|
|
extern void AlterRelationNamespaceInternal(Relation classRel, Oid relOid,
|
|
Oid oldNspOid, Oid newNspOid,
|
|
bool hasDependEntry,
|
|
ObjectAddresses *objsMoved);
|
|
|
|
extern void CheckTableNotInUse(Relation rel, const char *stmt);
|
|
|
|
extern void ExecuteTruncate(TruncateStmt *stmt);
|
|
extern void ExecuteTruncateGuts(List *explicit_rels,
|
|
List *relids,
|
|
List *relids_logged,
|
|
DropBehavior behavior,
|
|
bool restart_seqs);
|
|
|
|
extern void SetRelationHasSubclass(Oid relationId, bool relhassubclass);
|
|
|
|
extern bool CheckRelationTableSpaceMove(Relation rel, Oid newTableSpaceId);
|
|
extern void SetRelationTableSpace(Relation rel, Oid newTableSpaceId,
|
|
RelFileNumber newRelFileNumber);
|
|
|
|
extern ObjectAddress renameatt(RenameStmt *stmt);
|
|
|
|
extern ObjectAddress RenameConstraint(RenameStmt *stmt);
|
|
|
|
extern ObjectAddress RenameRelation(RenameStmt *stmt);
|
|
|
|
extern void RenameRelationInternal(Oid myrelid,
|
|
const char *newrelname, bool is_internal,
|
|
bool is_index);
|
|
|
|
extern void ResetRelRewrite(Oid myrelid);
|
|
|
|
extern void find_composite_type_dependencies(Oid typeOid,
|
|
Relation origRelation,
|
|
const char *origTypeName);
|
|
|
|
extern void check_of_type(HeapTuple typetuple);
|
|
|
|
extern void register_on_commit_action(Oid relid, OnCommitAction action);
|
|
extern void remove_on_commit_action(Oid relid);
|
|
|
|
extern void PreCommit_on_commit_actions(void);
|
|
extern void AtEOXact_on_commit_actions(bool isCommit);
|
|
extern void AtEOSubXact_on_commit_actions(bool isCommit,
|
|
SubTransactionId mySubid,
|
|
SubTransactionId parentSubid);
|
|
|
|
extern void RangeVarCallbackOwnsTable(const RangeVar *relation,
|
|
Oid relId, Oid oldRelId, void *arg);
|
|
|
|
extern void RangeVarCallbackOwnsRelation(const RangeVar *relation,
|
|
Oid relId, Oid oldRelId, void *arg);
|
|
extern bool PartConstraintImpliedByRelConstraint(Relation scanrel,
|
|
List *partConstraint);
|
|
|
|
#endif /* TABLECMDS_H */
|