mirror of
https://github.com/postgres/postgres.git
synced 2025-10-25 13:17:41 +03:00
A materialized view has a rule just like a view and a heap and other physical properties like a table. The rule is only used to populate the table, references in queries refer to the materialized data. This is a minimal implementation, but should still be useful in many cases. Currently data is only populated "on demand" by the CREATE MATERIALIZED VIEW and REFRESH MATERIALIZED VIEW statements. It is expected that future releases will add incremental updates with various timings, and that a more refined concept of defining what is "fresh" data will be developed. At some point it may even be possible to have queries use a materialized in place of references to underlying tables, but that requires the other above-mentioned features to be working first. Much of the documentation work by Robert Haas. Review by Noah Misch, Thom Brown, Robert Haas, Marko Tiikkaja Security review by KaiGai Kohei, with a decision on how best to implement sepgsql still pending.
84 lines
2.5 KiB
C
84 lines
2.5 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* tablecmds.h
|
|
* prototypes for tablecmds.c.
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2013, 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 "nodes/parsenodes.h"
|
|
#include "storage/lock.h"
|
|
#include "utils/relcache.h"
|
|
|
|
|
|
extern Oid DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId);
|
|
|
|
extern void RemoveRelations(DropStmt *drop);
|
|
|
|
extern Oid AlterTableLookupRelation(AlterTableStmt *stmt, LOCKMODE lockmode);
|
|
|
|
extern void AlterTable(Oid relid, LOCKMODE lockmode, AlterTableStmt *stmt);
|
|
|
|
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 AlterTableNamespace(AlterObjectSchemaStmt *stmt);
|
|
|
|
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 SetRelationHasSubclass(Oid relationId, bool relhassubclass);
|
|
|
|
extern Oid renameatt(RenameStmt *stmt);
|
|
|
|
extern Oid RenameConstraint(RenameStmt *stmt);
|
|
|
|
extern Oid RenameRelation(RenameStmt *stmt);
|
|
|
|
extern void RenameRelationInternal(Oid myrelid,
|
|
const char *newrelname);
|
|
|
|
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 bool isQueryUsingTempRelation(Query *query);
|
|
|
|
#endif /* TABLECMDS_H */
|