|
PostgreSQL Source Code git master
|
#include "utils/snapshot.h"

Go to the source code of this file.
Data Structures | |
| struct | LargeObjectDesc |
Macros | |
| #define | IFS_RDLOCK (1 << 0) /* LO was opened for reading */ |
| #define | IFS_WRLOCK (1 << 1) /* LO was opened for writing */ |
| #define | LOBLKSIZE (BLCKSZ / 4) |
| #define | MAX_LARGE_OBJECT_SIZE ((int64) INT_MAX * LOBLKSIZE) |
Typedefs | |
| typedef struct LargeObjectDesc | LargeObjectDesc |
Functions | |
| void | close_lo_relation (bool isCommit) |
| Oid | inv_create (Oid lobjId) |
| LargeObjectDesc * | inv_open (Oid lobjId, int flags, MemoryContext mcxt) |
| void | inv_close (LargeObjectDesc *obj_desc) |
| int | inv_drop (Oid lobjId) |
| int64 | inv_seek (LargeObjectDesc *obj_desc, int64 offset, int whence) |
| int64 | inv_tell (LargeObjectDesc *obj_desc) |
| int | inv_read (LargeObjectDesc *obj_desc, char *buf, int nbytes) |
| int | inv_write (LargeObjectDesc *obj_desc, const char *buf, int nbytes) |
| void | inv_truncate (LargeObjectDesc *obj_desc, int64 len) |
Variables | |
| PGDLLIMPORT bool | lo_compat_privileges |
| #define IFS_RDLOCK (1 << 0) /* LO was opened for reading */ |
Definition at line 48 of file large_object.h.
| #define IFS_WRLOCK (1 << 1) /* LO was opened for writing */ |
Definition at line 49 of file large_object.h.
| #define LOBLKSIZE (BLCKSZ / 4) |
Definition at line 70 of file large_object.h.
Definition at line 76 of file large_object.h.
| typedef struct LargeObjectDesc LargeObjectDesc |
| void close_lo_relation | ( | bool | isCommit | ) |
Definition at line 97 of file inv_api.c.
References CurrentResourceOwner, index_close(), lo_heap_r, lo_index_r, NoLock, table_close(), and TopTransactionResourceOwner.
Referenced by AtEOXact_LargeObject().
| void inv_close | ( | LargeObjectDesc * | obj_desc | ) |
Definition at line 299 of file inv_api.c.
References Assert(), and pfree().
Referenced by be_lo_export(), be_lo_from_bytea(), be_lo_put(), closeLOfd(), lo_get_fragment_internal(), and lo_import_internal().
Definition at line 173 of file inv_api.c.
References CommandCounterIncrement(), GetUserId(), InvokeObjectPostCreateHook, LargeObjectCreate(), and recordDependencyOnOwner().
Referenced by be_lo_creat(), be_lo_create(), be_lo_from_bytea(), and lo_import_internal().
| int inv_drop | ( | Oid | lobjId | ) |
Definition at line 311 of file inv_api.c.
References ObjectAddress::classId, CommandCounterIncrement(), DROP_CASCADE, and performDeletion().
Referenced by be_lo_unlink().
| LargeObjectDesc * inv_open | ( | Oid | lobjId, |
| int | flags, | ||
| MemoryContext | mcxt | ||
| ) |
Definition at line 215 of file inv_api.c.
References ACL_SELECT, ACL_UPDATE, ACLCHECK_OK, ereport, errcode(), errmsg(), ERROR, LargeObjectDesc::flags, GetActiveSnapshot(), GetUserId(), LargeObjectDesc::id, IFS_RDLOCK, IFS_WRLOCK, INV_READ, INV_WRITE, InvalidSubTransactionId, LargeObjectExistsWithSnapshot(), lo_compat_privileges, MemoryContextAlloc(), LargeObjectDesc::offset, pg_largeobject_aclcheck_snapshot(), LargeObjectDesc::snapshot, and LargeObjectDesc::subid.
Referenced by be_lo_export(), be_lo_from_bytea(), be_lo_open(), be_lo_put(), lo_get_fragment_internal(), and lo_import_internal().
| int inv_read | ( | LargeObjectDesc * | obj_desc, |
| char * | buf, | ||
| int | nbytes | ||
| ) |
Definition at line 450 of file inv_api.c.
References Assert(), BTEqualStrategyNumber, BTGreaterEqualStrategyNumber, buf, data, elog, ereport, errcode(), errmsg(), ERROR, LargeObjectDesc::flags, ForwardScanDirection, getdatafield(), GETSTRUCT(), HeapTupleHasNulls(), LargeObjectDesc::id, IFS_RDLOCK, Int32GetDatum(), len, lo_heap_r, lo_index_r, LOBLKSIZE, MemSet, ObjectIdGetDatum(), LargeObjectDesc::offset, open_lo_relation(), pfree(), ScanKeyInit(), LargeObjectDesc::snapshot, systable_beginscan_ordered(), systable_endscan_ordered(), systable_getnext_ordered(), and VARDATA().
Referenced by be_lo_export(), lo_get_fragment_internal(), and lo_read().
| int64 inv_seek | ( | LargeObjectDesc * | obj_desc, |
| int64 | offset, | ||
| int | whence | ||
| ) |
Definition at line 388 of file inv_api.c.
References Assert(), ereport, errcode(), errmsg(), errmsg_internal(), ERROR, INT64_FORMAT, inv_getsize(), MAX_LARGE_OBJECT_SIZE, and LargeObjectDesc::offset.
Referenced by be_lo_lseek(), be_lo_lseek64(), be_lo_put(), and lo_get_fragment_internal().
| int64 inv_tell | ( | LargeObjectDesc * | obj_desc | ) |
Definition at line 437 of file inv_api.c.
References Assert(), and LargeObjectDesc::offset.
Referenced by be_lo_tell(), and be_lo_tell64().
| void inv_truncate | ( | LargeObjectDesc * | obj_desc, |
| int64 | len | ||
| ) |
Definition at line 738 of file inv_api.c.
References Assert(), BTEqualStrategyNumber, BTGreaterEqualStrategyNumber, CatalogCloseIndexes(), CatalogOpenIndexes(), CatalogTupleDelete(), CatalogTupleInsertWithInfo(), CatalogTupleUpdateWithInfo(), CommandCounterIncrement(), data, elog, ereport, errcode(), errmsg(), errmsg_internal(), ERROR, LargeObjectDesc::flags, ForwardScanDirection, getdatafield(), GETSTRUCT(), heap_form_tuple(), heap_freetuple(), heap_modify_tuple(), HeapTupleHasNulls(), LargeObjectDesc::id, IFS_WRLOCK, Int32GetDatum(), INT64_FORMAT, len, lo_heap_r, lo_index_r, LOBLKSIZE, MAX_LARGE_OBJECT_SIZE, MemSet, ObjectIdGetDatum(), open_lo_relation(), pfree(), PointerGetDatum(), RelationData::rd_att, RelationGetDescr, ScanKeyInit(), SET_VARSIZE(), LargeObjectDesc::snapshot, systable_beginscan_ordered(), systable_endscan_ordered(), systable_getnext_ordered(), HeapTupleData::t_self, values, VARDATA(), and VARHDRSZ.
Referenced by lo_truncate_internal().
| int inv_write | ( | LargeObjectDesc * | obj_desc, |
| const char * | buf, | ||
| int | nbytes | ||
| ) |
Definition at line 543 of file inv_api.c.
References Assert(), BTEqualStrategyNumber, BTGreaterEqualStrategyNumber, buf, CatalogCloseIndexes(), CatalogOpenIndexes(), CatalogTupleInsertWithInfo(), CatalogTupleUpdateWithInfo(), CommandCounterIncrement(), data, elog, ereport, errcode(), errmsg(), ERROR, LargeObjectDesc::flags, ForwardScanDirection, getdatafield(), GETSTRUCT(), heap_form_tuple(), heap_freetuple(), heap_modify_tuple(), HeapTupleHasNulls(), LargeObjectDesc::id, IFS_WRLOCK, Int32GetDatum(), len, lo_heap_r, lo_index_r, LOBLKSIZE, MAX_LARGE_OBJECT_SIZE, MemSet, ObjectIdGetDatum(), LargeObjectDesc::offset, open_lo_relation(), pfree(), PointerGetDatum(), RelationData::rd_att, RelationGetDescr, ScanKeyInit(), SET_VARSIZE(), LargeObjectDesc::snapshot, systable_beginscan_ordered(), systable_endscan_ordered(), systable_getnext_ordered(), HeapTupleData::t_self, values, VARDATA(), and VARHDRSZ.
Referenced by be_lo_from_bytea(), be_lo_put(), lo_import_internal(), and lo_write().
|
extern |
Definition at line 56 of file inv_api.c.
Referenced by be_lo_unlink(), check_object_ownership(), has_lo_priv_byid(), and inv_open().