Common definitions for cursor types. More...
#include <cursor.hxx>
Public Types | |
enum | accesspolicy { forward_only, random_access } |
Cursor access-pattern policy. More... | |
typedef result::difference_type | difference_type |
enum | ownershippolicy { owned, loose } |
Cursor destruction policy. More... | |
typedef result::size_type | size_type |
enum | updatepolicy { read_only, update } |
Cursor update policy. More... | |
Public Member Functions | |
const PGSTD::string & | name () const throw () |
Name of underlying SQL cursor. More... | |
Static Public Member Functions | |
Special movement distances | |
static difference_type | all () throw () |
Special value: read until end. More... | |
static difference_type | next () throw () |
Special value: read one row only. More... | |
static difference_type | prior () throw () |
Special value: read backwards, one row only. More... | |
static difference_type | backward_all () throw () |
Special value: read backwards from current position back to origin. More... | |
Protected Member Functions | |
cursor_base (connection_base &, const PGSTD::string &Name, bool embellish_name=true) | |
Protected Attributes | |
const PGSTD::string | m_name |
Private Member Functions | |
cursor_base () | |
Not allowed. More... | |
cursor_base (const cursor_base &) | |
Not allowed. More... | |
cursor_base & | operator= (const cursor_base &) |
Not allowed. More... | |
Common definitions for cursor types.
In C++ terms, fetches are always done in pre-increment or pre-decrement fashion–i.e. the result does not include the row the cursor is on at the beginning of the fetch, and the cursor ends up being positioned on the last row in the result.
There are singular positions akin to end()
at both the beginning and the end of the cursor's range of movement, although these fit in so naturally with the semantics that one rarely notices them. The cursor begins at the first of these, but any fetch in the forward direction will move the cursor off this position and onto the first row before returning anything.
Cursor destruction policy.
The normal thing to do is to make a cursor object the owner of the SQL cursor it represents. There may be cases, however, where a cursor needs to persist beyond the end of the current transaction (and thus also beyond the lifetime of the cursor object that created it!), where it can be "adopted" into a new cursor object. See the basic_cursor documentation for an explanation of cursor adoption.
If a cursor is created with "loose" ownership policy, the object representing the underlying SQL cursor will not take the latter with it when its own lifetime ends, nor will its originating transaction.
Enumerator | |
---|---|
owned |
Destroy SQL cursor when cursor object is closed at end of transaction. |
loose |
Leave SQL cursor in existence after close of object and transaction. |
|
protected |
|
private |
Not allowed.
|
private |
Not allowed.
|
inlinestatic |
Special value: read until end.
|
inlinestatic |
Special value: read backwards from current position back to origin.
Referenced by pqxx::stateless_cursor< up, op >::stateless_cursor().
|
inline |
Name of underlying SQL cursor.
|
inlinestatic |
Special value: read one row only.
|
private |
Not allowed.
|
inlinestatic |
Special value: read backwards, one row only.
|
protected |