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);
133 void error(
std::string const& text,
bool mysqlCaused =
true);
135 void* allocateMemory(
size_t size);
151 BoundVarMap _inputVars;
153 BoundVarMap _outputVars;
164 MYSQL_STMT* _statement;
166 MYSQL_FIELD* _resultFields;
168 int _numResultFields;
170 boost::shared_array<unsigned long> _fieldLengths;
172 boost::shared_array<my_bool> _fieldNulls;
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
Class for logical location of a persisted Persistable instance.
Class for database storage.
BoundVar(void)
Default constructor.
Class for implementation of database storage.