mirror of
https://github.com/postgres/postgres.git
synced 2025-10-21 02:52:47 +03:00
Introduce access/{table.h, relation.h}, for generic functions from heapam.h.
access/heapam contains functions that are very storage specific (say heap_insert() and a lot of lower level functions), and fairly generic infrastructure like relation_open(), heap_open() etc. In the upcoming pluggable storage work we're introducing a layer between table accesses in general and heapam, to allow for different storage methods. For a bit cleaner separation it thus seems advantageous to move generic functions like the aforementioned to their own headers. access/relation.h will contain relation_open() etc, and access/table.h will contain table_open() (formerly known as heap_open()). I've decided for table.h not to include relation.h, but we might change that at a later stage. relation.h already exists in another directory, but the other plausible name (rel.h) also conflicts. It'd be nice if there were a non-conflicting name, but nobody came up with a suggestion. It's possible that the appropriate way to address the naming conflict would be to rename nodes/relation.h, which isn't particularly well named. To avoid breaking a lot of extensions that just use heap_open() etc, table.h has macros mapping the old names to the new ones, and heapam.h includes relation, table.h. That also allows to keep the bulk renaming of existing callers in a separate commit. Author: Andres Freund Discussion: https://postgr.es/m/20190111000539.xbv7s6w7ilcvm7dp@alap3.anarazel.de
This commit is contained in:
@@ -14,8 +14,10 @@
|
||||
#ifndef HEAPAM_H
|
||||
#define HEAPAM_H
|
||||
|
||||
#include "access/relation.h" /* for backward compatibility */
|
||||
#include "access/sdir.h"
|
||||
#include "access/skey.h"
|
||||
#include "access/table.h" /* for backward compatibility */
|
||||
#include "nodes/lockoptions.h"
|
||||
#include "nodes/primnodes.h"
|
||||
#include "storage/bufpage.h"
|
||||
@@ -67,20 +69,6 @@ typedef struct HeapUpdateFailureData
|
||||
* ----------------
|
||||
*/
|
||||
|
||||
/* in heap/heapam.c */
|
||||
extern Relation relation_open(Oid relationId, LOCKMODE lockmode);
|
||||
extern Relation try_relation_open(Oid relationId, LOCKMODE lockmode);
|
||||
extern Relation relation_openrv(const RangeVar *relation, LOCKMODE lockmode);
|
||||
extern Relation relation_openrv_extended(const RangeVar *relation,
|
||||
LOCKMODE lockmode, bool missing_ok);
|
||||
extern void relation_close(Relation relation, LOCKMODE lockmode);
|
||||
|
||||
extern Relation heap_open(Oid relationId, LOCKMODE lockmode);
|
||||
extern Relation heap_openrv(const RangeVar *relation, LOCKMODE lockmode);
|
||||
extern Relation heap_openrv_extended(const RangeVar *relation,
|
||||
LOCKMODE lockmode, bool missing_ok);
|
||||
|
||||
#define heap_close(r,l) relation_close(r,l)
|
||||
|
||||
/* struct definitions appear in relscan.h */
|
||||
typedef struct HeapScanDescData *HeapScanDesc;
|
||||
|
29
src/include/access/relation.h
Normal file
29
src/include/access/relation.h
Normal file
@@ -0,0 +1,29 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* relation.h
|
||||
* Generic relation related routines.
|
||||
*
|
||||
*
|
||||
* Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* src/include/access/relation.h
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef ACCESS_RELATION_H
|
||||
#define ACCESS_RELATION_H
|
||||
|
||||
#include "nodes/primnodes.h"
|
||||
#include "utils/relcache.h"
|
||||
#include "storage/lockdefs.h"
|
||||
|
||||
|
||||
extern Relation relation_open(Oid relationId, LOCKMODE lockmode);
|
||||
extern Relation try_relation_open(Oid relationId, LOCKMODE lockmode);
|
||||
extern Relation relation_openrv(const RangeVar *relation, LOCKMODE lockmode);
|
||||
extern Relation relation_openrv_extended(const RangeVar *relation,
|
||||
LOCKMODE lockmode, bool missing_ok);
|
||||
extern void relation_close(Relation relation, LOCKMODE lockmode);
|
||||
|
||||
#endif /* ACCESS_RELATION_H */
|
38
src/include/access/table.h
Normal file
38
src/include/access/table.h
Normal file
@@ -0,0 +1,38 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* table.h
|
||||
* Generic routines for table related code.
|
||||
*
|
||||
*
|
||||
* Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* src/include/access/table.h
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef TABLE_H
|
||||
#define TABLE_H
|
||||
|
||||
#include "nodes/primnodes.h"
|
||||
#include "utils/relcache.h"
|
||||
#include "storage/lockdefs.h"
|
||||
|
||||
|
||||
extern Relation table_open(Oid relationId, LOCKMODE lockmode);
|
||||
extern Relation table_openrv(const RangeVar *relation, LOCKMODE lockmode);
|
||||
extern Relation table_openrv_extended(const RangeVar *relation,
|
||||
LOCKMODE lockmode, bool missing_ok);
|
||||
extern void table_close(Relation relation, LOCKMODE lockmode);
|
||||
|
||||
/*
|
||||
* heap_ used to be the prefix for these routines, and a lot of code will just
|
||||
* continue to work without adaptions after the introduction of pluggable
|
||||
* storage, therefore just map these names.
|
||||
*/
|
||||
#define heap_open(r, l) table_open(r, l)
|
||||
#define heap_openrv(r, l) table_openrv(r, l)
|
||||
#define heap_openrv_extended(r, l, m) table_openrv_extended(r, l, m)
|
||||
#define heap_close(r, l) table_close(r, l)
|
||||
|
||||
#endif /* TABLE_H */
|
Reference in New Issue
Block a user