LSSTApplications
11.0-24-g0a022a1,14.0+77,15.0,15.0+1
LSSTDataManagementBasePackage
|
Class for implementation of database storage. More...
#include <DbStorageImpl.h>
Public Types | |
enum | { magicSentinel = 0xdeadbeef } |
typedef unsigned long | memId |
Type of the block's ID. More... | |
typedef memId(* | memNewCallback) (const memId cid) |
A function used to register a callback. More... | |
typedef memId(* | memCallback) (const Citizen *ptr) |
Public Member Functions | |
virtual | ~DbStorageImpl (void) |
Destructor. More... | |
template<> | |
void | setColumn (std::string const &columnName, std::string const &value) |
template<> | |
void | setColumn (std::string const &columnName, dafBase::DateTime const &value) |
template<> | |
void | outParam (std::string const &columnName, std::string *location, bool isExpr) |
template<> | |
void | outParam (std::string const &columnName, dafBase::DateTime *location, bool isExpr) |
template<> | |
std::string const & | getColumnByPos (int pos) |
template<> | |
dafBase::DateTime const & | getColumnByPos (int pos) |
std::string | repr () const |
Return a string representation of a Citizen. More... | |
void | markPersistent (void) |
Mark a Citizen as persistent and not destroyed until process end. More... | |
memId | getId () const |
Return the Citizen's ID. More... | |
Static Public Member Functions | |
static bool | hasBeenCorrupted () |
Check all allocated blocks for corruption. More... | |
static memId | getNextMemId () |
Return the memId of the next object to be allocated. More... | |
static int | init () |
Called once when the memory system is being initialised. More... | |
Census | |
Provide a list of current Citizens | |
static int | census (int, memId startingMemId=0) |
How many active Citizens are there? More... | |
static void | census (std::ostream &stream, memId startingMemId=0) |
Print a list of all active Citizens to stream, sorted by ID. More... | |
static const std::vector< const Citizen * > * | census () |
Return a (newly allocated) std::vector of active Citizens sorted by ID. More... | |
callbackIDs | |
Set callback Ids. The old Id is returned | |
static memId | setNewCallbackId (memId id) |
Call the NewCallback when block is allocated. More... | |
static memId | setDeleteCallbackId (memId id) |
Call the current DeleteCallback when block is deleted. More... | |
callbacks | |
Set the New/Delete callback functions; in each case the previously installed callback is returned. These callback functions return a value which is Added to the previously registered id. The default callback functions are called default{New,Delete}Callback; you may want to set a break point in these callbacks from your favourite debugger | |
static memNewCallback | setNewCallback (memNewCallback func) |
Set the NewCallback function. More... | |
static memCallback | setDeleteCallback (memCallback func) |
Set the DeleteCallback function. More... | |
static memCallback | setCorruptionCallback (memCallback func) |
Set the CorruptionCallback function. More... | |
Private Types | |
typedef std::unordered_map< std::string, BoundVar > | BoundVarMap |
Private Member Functions | |
DbStorageImpl (void) | |
Default constructor. More... | |
virtual void | setPolicy (pexPolicy::Policy::Ptr policy) |
Allow a Policy to be used to configure the DbStorage. More... | |
virtual void | setPersistLocation (LogicalLocation const &location) |
Set the database location to persist to. More... | |
virtual void | setRetrieveLocation (LogicalLocation const &location) |
Set the database location to retrieve from. More... | |
virtual void | startTransaction (void) |
Start a transaction. More... | |
virtual void | endTransaction (void) |
End a transaction. More... | |
virtual void | startSession (std::string const &location) |
Start a database session. More... | |
virtual void | createTableFromTemplate (std::string const &tableName, std::string const &templateName, bool mayAlreadyExist) |
Create a new table from an existing template table. More... | |
virtual void | dropTable (std::string const &tableName) |
Drop a table. More... | |
virtual void | truncateTable (std::string const &tableName) |
Truncate a table. More... | |
virtual void | executeSql (std::string const &sqlStatement) |
Execute an arbitrary SQL statement. More... | |
virtual void | setTableForInsert (std::string const &tableName) |
Set the table to insert rows into. More... | |
template<typename T > | |
void | setColumn (std::string const &columnName, T const &value) |
Set the value to insert in a given column. More... | |
virtual void | setColumnToNull (std::string const &columnName) |
Set a given column to NULL. More... | |
virtual void | insertRow (void) |
Insert the row. More... | |
virtual void | setTableForQuery (std::string const &tableName, bool isExpr) |
Set the table to query (single-table queries only). More... | |
virtual void | setTableListForQuery (std::vector< std::string > const &tableNameList) |
Set a list of tables to query (multiple-table queries). More... | |
virtual void | outColumn (std::string const &columnName, bool isExpr) |
Request a column in the query output. More... | |
template<typename T > | |
void | outParam (std::string const &columnName, T *location, bool isExpr) |
Request a column in the query output and bind a destination location. More... | |
template<typename T > | |
void | condParam (std::string const ¶mName, T const &value) |
Bind a value to a WHERE condition parameter. More... | |
virtual void | orderBy (std::string const &expression) |
Request that the query output be sorted by an expression. More... | |
virtual void | groupBy (std::string const &expression) |
Request that the query output be grouped by an expression. More... | |
virtual void | setQueryWhere (std::string const &whereClause) |
Set the condition for the WHERE clause of the query. More... | |
virtual void | query (void) |
Execute the query. More... | |
virtual bool | next (void) |
Move to the next (first) row of the query result. More... | |
template<typename T > | |
T const & | getColumnByPos (int pos) |
Get the value of a column of the query result row by position. More... | |
bool | columnIsNull (int pos) |
Determine if the value of a column is NULL. More... | |
virtual void | finishQuery (void) |
Indicate that query processing is finished. More... | |
void | executeQuery (std::string const &query) |
Execute a query string. More... | |
std::string | quote (std::string const &name) |
Quote a name in ANSI-standard fashion. More... | |
void | stError (std::string const &text) |
void | error (std::string const &text, bool mysqlCaused=true) |
void * | allocateMemory (size_t size) |
Private Attributes | |
bool | _readonly |
Remember if we are supposed to be read-only. More... | |
std::string | _location |
Database location string saved for use by raw MySQL interface. More... | |
MYSQL * | _db |
MySQL database connection pointer. More... | |
std::string | _insertTable |
Name of table into which to insert. More... | |
std::vector< std::string > | _queryTables |
Names of tables to select from. More... | |
BoundVarMap | _inputVars |
Input variable bindings. More... | |
BoundVarMap | _outputVars |
Output variable bindings. More... | |
std::vector< boost::shared_array< char > > | _bindingMemory |
Memory for bound variables. More... | |
std::vector< std::string > | _outColumns |
std::string | _whereClause |
std::string | _groupBy |
std::string | _orderBy |
MYSQL_STMT * | _statement |
Prepared query statement. More... | |
MYSQL_FIELD * | _resultFields |
Query result field metadata. More... | |
int | _numResultFields |
Number of result fields. More... | |
boost::shared_array< unsigned long > | _fieldLengths |
Space for lengths of result fields. More... | |
boost::shared_array< my_bool > | _fieldNulls |
Space for null flags of result fields. More... | |
Friends | |
class | DbStorage |
Class for implementation of database storage.
Use via DbStorage class only.
Definition at line 79 of file DbStorageImpl.h.
|
private |
Definition at line 150 of file DbStorageImpl.h.
|
inherited |
|
virtual |
Destructor.
End session if present.
Definition at line 175 of file DbStorageImpl.cc.
|
private |
Default constructor.
Definition at line 168 of file DbStorageImpl.cc.
|
private |
Definition at line 289 of file DbStorageImpl.cc.
|
staticinherited |
How many active Citizens are there?
startingMemId | Don't print Citizens with lower IDs |
Definition at line 267 of file Citizen.cc.
|
staticinherited |
Print a list of all active Citizens to stream, sorted by ID.
stream | stream to print to |
startingMemId | Don't print Citizens with lower IDs |
Definition at line 290 of file Citizen.cc.
|
staticinherited |
Return a (newly allocated) std::vector of active Citizens sorted by ID.
You are responsible for deleting it; or you can say std::unique_ptr<std::vector<Citizen const*> const> leaks(Citizen::census()); and not bother (that becomes std::unique_ptr in C++11)
Definition at line 322 of file Citizen.cc.
|
private |
Determine if the value of a column is NULL.
[in] | pos | Position of the column (starts at 0) |
Definition at line 985 of file DbStorageImpl.cc.
|
private |
Bind a value to a WHERE condition parameter.
[in] | paramName | Name of the parameter (prefixed by ":" in the WHERE clause) |
[in] | value | Value to be bound to the parameter. |
Definition at line 633 of file DbStorageImpl.cc.
|
privatevirtual |
Create a new table from an existing template table.
[in] | tableName | Name of the new table |
[in] | templateName | Name of the existing template table |
[in] | mayAlreadyExist | False (default) if the table must not be present |
Definition at line 304 of file DbStorageImpl.cc.
|
privatevirtual |
Drop a table.
[in] | tableName | Name of the table to drop |
Definition at line 316 of file DbStorageImpl.cc.
|
privatevirtual |
End a transaction.
Definition at line 244 of file DbStorageImpl.cc.
|
private |
Definition at line 280 of file DbStorageImpl.cc.
|
private |
Execute a query string.
Definition at line 257 of file DbStorageImpl.cc.
|
privatevirtual |
Execute an arbitrary SQL statement.
Use primarily to perform server-side computations or complex DDL.
[in] | sqlStatement | SQL statement to be executed. Must not end in ";". |
Definition at line 331 of file DbStorageImpl.cc.
|
privatevirtual |
Indicate that query processing is finished.
Definition at line 996 of file DbStorageImpl.cc.
|
private |
Get the value of a column of the query result row by position.
[in] | pos | Position of the column (starts at 0) |
Definition at line 896 of file DbStorageImpl.cc.
std::string const& lsst::daf::persistence::DbStorageImpl::getColumnByPos | ( | int | pos | ) |
Definition at line 920 of file DbStorageImpl.cc.
dafBase::DateTime const& lsst::daf::persistence::DbStorageImpl::getColumnByPos | ( | int | pos | ) |
Definition at line 949 of file DbStorageImpl.cc.
|
inherited |
|
staticinherited |
Return the memId of the next object to be allocated.
Definition at line 229 of file Citizen.cc.
|
privatevirtual |
Request that the query output be grouped by an expression.
[in] | expression | Text of the SQL expression |
Definition at line 651 of file DbStorageImpl.cc.
|
staticinherited |
Check all allocated blocks for corruption.
Definition at line 353 of file Citizen.cc.
|
staticinherited |
Called once when the memory system is being initialised.
Definition at line 214 of file Citizen.cc.
|
privatevirtual |
Insert the row.
Row values must have been set with setColumn() calls.
Definition at line 441 of file DbStorageImpl.cc.
|
inherited |
Mark a Citizen as persistent and not destroyed until process end.
Definition at line 254 of file Citizen.cc.
|
privatevirtual |
Move to the next (first) row of the query result.
Definition at line 851 of file DbStorageImpl.cc.
|
privatevirtual |
Request that the query output be sorted by an expression.
Multiple expressions may be specified, in order.
[in] | expression | Text of the SQL expression |
Definition at line 641 of file DbStorageImpl.cc.
|
privatevirtual |
Request a column in the query output.
[in] | columnName | Name of the column |
[in] | isExpr | True if the name is actually an expression |
The order of outColumn() calls is the order of appearance in the output row. Use either outColumn() or outParam() but not both.
Definition at line 554 of file DbStorageImpl.cc.
|
private |
Request a column in the query output and bind a destination location.
[in] | columnName | Name of the column |
[in] | location | Pointer to the destination |
[in] | isExpr | True if the name is actually an expression |
The order of outParam() calls is the order of appearance in the output row. Use either outColumn() or outParam() but not both.
Definition at line 569 of file DbStorageImpl.cc.
void lsst::daf::persistence::DbStorageImpl::outParam | ( | std::string const & | columnName, |
std::string * | location, | ||
bool | isExpr | ||
) |
Definition at line 587 of file DbStorageImpl.cc.
void lsst::daf::persistence::DbStorageImpl::outParam | ( | std::string const & | columnName, |
dafBase::DateTime * | location, | ||
bool | isExpr | ||
) |
Definition at line 607 of file DbStorageImpl.cc.
|
privatevirtual |
Execute the query.
Definition at line 669 of file DbStorageImpl.cc.
|
private |
|
inherited |
Return a string representation of a Citizen.
Definition at line 245 of file Citizen.cc.
|
private |
Set the value to insert in a given column.
[in] | columnName | Name of the column |
[in] | value | Value to set in the column |
Definition at line 355 of file DbStorageImpl.cc.
void lsst::daf::persistence::DbStorageImpl::setColumn | ( | std::string const & | columnName, |
std::string const & | value | ||
) |
Definition at line 375 of file DbStorageImpl.cc.
void lsst::daf::persistence::DbStorageImpl::setColumn | ( | std::string const & | columnName, |
dafBase::DateTime const & | value | ||
) |
Definition at line 395 of file DbStorageImpl.cc.
|
privatevirtual |
Set a given column to NULL.
[in] | columnName | Name of the column |
Definition at line 427 of file DbStorageImpl.cc.
|
staticinherited |
Set the CorruptionCallback function.
func | function be called when block is found to be corrupted |
Definition at line 432 of file Citizen.cc.
|
staticinherited |
Set the DeleteCallback function.
func | function be called when desired block is deleted |
Definition at line 422 of file Citizen.cc.
|
staticinherited |
Call the current DeleteCallback when block is deleted.
id | Desired ID |
Definition at line 387 of file Citizen.cc.
|
staticinherited |
Set the NewCallback function.
func | The new function to be called when a designated block is allocated |
Definition at line 412 of file Citizen.cc.
|
staticinherited |
Call the NewCallback when block is allocated.
id | Desired ID |
Definition at line 376 of file Citizen.cc.
|
privatevirtual |
Set the database location to persist to.
[in] | location | Database connection string to insert into |
Definition at line 221 of file DbStorageImpl.cc.
|
privatevirtual |
Allow a Policy to be used to configure the DbStorage.
[in] | policy |
Definition at line 185 of file DbStorageImpl.cc.
|
privatevirtual |
Set the condition for the WHERE clause of the query.
[in] | whereClause | SQL text of the WHERE clause |
May include join conditions.
Definition at line 663 of file DbStorageImpl.cc.
|
privatevirtual |
Set the database location to retrieve from.
[in] | location | Database connection string to query |
Definition at line 229 of file DbStorageImpl.cc.
|
privatevirtual |
Set the table to insert rows into.
[in] | tableName | Name of the table |
Definition at line 342 of file DbStorageImpl.cc.
|
privatevirtual |
Set the table to query (single-table queries only).
[in] | tableName | Name of the table |
[in] | isExpr | True if the name is actually a table expression |
Definition at line 514 of file DbStorageImpl.cc.
|
privatevirtual |
Set a list of tables to query (multiple-table queries).
[in] | tableNameList | Vector of names of tables |
Definition at line 531 of file DbStorageImpl.cc.
|
privatevirtual |
Start a database session.
[in] | location | Physical database location |
[in] | am | Access mode for the database (ReadOnly or Update) |
Definition at line 196 of file DbStorageImpl.cc.
|
privatevirtual |
Start a transaction.
Definition at line 236 of file DbStorageImpl.cc.
|
private |
Definition at line 276 of file DbStorageImpl.cc.
|
privatevirtual |
Truncate a table.
[in] | tableName | Name of the table to truncate |
Definition at line 323 of file DbStorageImpl.cc.
|
friend |
Definition at line 85 of file DbStorageImpl.h.
|
private |
Memory for bound variables.
Definition at line 155 of file DbStorageImpl.h.
|
private |
MySQL database connection pointer.
Definition at line 141 of file DbStorageImpl.h.
|
private |
Space for lengths of result fields.
Definition at line 170 of file DbStorageImpl.h.
|
private |
Space for null flags of result fields.
Definition at line 172 of file DbStorageImpl.h.
|
private |
Definition at line 161 of file DbStorageImpl.h.
|
private |
Input variable bindings.
Definition at line 151 of file DbStorageImpl.h.
|
private |
Name of table into which to insert.
Definition at line 144 of file DbStorageImpl.h.
|
private |
Database location string saved for use by raw MySQL interface.
Definition at line 139 of file DbStorageImpl.h.
|
private |
Number of result fields.
Definition at line 168 of file DbStorageImpl.h.
|
private |
Definition at line 162 of file DbStorageImpl.h.
|
private |
Definition at line 159 of file DbStorageImpl.h.
|
private |
Output variable bindings.
Definition at line 153 of file DbStorageImpl.h.
|
private |
Names of tables to select from.
Definition at line 146 of file DbStorageImpl.h.
|
private |
Remember if we are supposed to be read-only.
Definition at line 137 of file DbStorageImpl.h.
|
private |
Query result field metadata.
Definition at line 166 of file DbStorageImpl.h.
|
private |
Prepared query statement.
Definition at line 164 of file DbStorageImpl.h.
|
private |
Definition at line 160 of file DbStorageImpl.h.