25 #ifndef LSST_MWI_PERSISTENCE_DBSTORAGEIMPL_H 26 #define LSST_MWI_PERSISTENCE_DBSTORAGEIMPL_H 46 #include <boost/shared_array.hpp> 47 #include <mysql/mysql.h> 50 #include <unordered_map> 59 namespace persistence {
64 class LogicalLocation;
93 virtual void startTransaction(
void);
94 virtual void endTransaction(
void);
96 virtual void startSession(
std::string const& location);
98 virtual void createTableFromTemplate(
std::string const& tableName,
100 bool mayAlreadyExist);
101 virtual void dropTable(
std::string const& tableName);
102 virtual void truncateTable(
std::string const& tableName);
104 virtual void executeSql(
std::string const& sqlStatement);
106 virtual void setTableForInsert(
std::string const& tableName);
107 template <
typename T>
108 void setColumn(
std::string const& columnName, T
const& value);
109 virtual void setColumnToNull(
std::string const& columnName);
110 virtual void insertRow(
void);
112 virtual void setTableForQuery(
std::string const& tableName,
bool isExpr);
113 virtual void setTableListForQuery(
115 virtual void outColumn(
std::string const& columnName,
bool isExpr);
116 template <
typename T>
void outParam(
std::string const& columnName,
117 T* location,
bool isExpr);
118 template <
typename T>
void condParam(
std::string const& paramName,
120 virtual void orderBy(
std::string const& expression);
121 virtual void groupBy(
std::string const& expression);
122 virtual void setQueryWhere(
std::string const& whereClause);
123 virtual void query(
void);
124 virtual bool next(
void);
125 template <
typename T> T
const& getColumnByPos(
int pos);
126 bool columnIsNull(
int pos);
127 virtual void finishQuery(
void);
135 void* allocateMemory(
size_t size);
177 void DbStorageImpl::setColumn<std::string>(
std::string const& columnName,
180 void DbStorageImpl::setColumn<dafBase::DateTime>(
std::string const& columnName,
184 void DbStorageImpl::outParam<std::string>(
std::string const& columnName,
187 void DbStorageImpl::outParam<dafBase::DateTime>(
std::string const& columnName,
192 std::string const& DbStorageImpl::getColumnByPos<std::string>(
int pos);
195 DbStorageImpl::getColumnByPos<dafBase::DateTime>(
int pos);
std::shared_ptr< Policy > Ptr
std::vector< boost::shared_array< char > > _bindingMemory
Memory for bound variables.
Class for handling dates/times, including MJD, UTC, and TAI.
table::Key< std::string > name
std::vector< std::string > _queryTables
Names of tables to select from.
Class for logical location of a persisted Persistable instance.
boost::shared_array< unsigned long > _fieldLengths
Space for lengths of result fields.
int _numResultFields
Number of result fields.
Class for database storage.
BoundVar(void)
Default constructor.
MYSQL * _db
MySQL database connection pointer.
A base class for image defects.
MYSQL_STMT * _statement
Prepared query statement.
boost::shared_array< my_bool > _fieldNulls
Space for null flags of result fields.
Interface for DateTime class.
MYSQL_FIELD * _resultFields
Query result field metadata.
Class for implementation of database storage.
std::string _location
Database location string saved for use by raw MySQL interface.
std::unordered_map< std::string, BoundVar > BoundVarMap
BoundVarMap _inputVars
Input variable bindings.
BoundVarMap _outputVars
Output variable bindings.
Citizen is a class that should be among all LSST classes base classes, and handles basic memory manag...
bool _readonly
Remember if we are supposed to be read-only.
std::vector< std::string > _outColumns
std::string _insertTable
Name of table into which to insert.