41 # define __attribute__(x) 53 namespace persistence {
76 _impl->setPolicy(policy);
83 _impl->setPersistLocation(location);
90 _impl->setRetrieveLocation(location);
96 _impl->startTransaction();
102 _impl->endTransaction();
114 bool mayAlreadyExist) {
115 _impl->createTableFromTemplate(tableName, templateName, mayAlreadyExist);
122 _impl->dropTable(tableName);
129 _impl->truncateTable(tableName);
137 _impl->executeSql(sqlStatement);
144 _impl->setTableForInsert(tableName);
151 template <
typename T>
153 _impl->setColumn(columnName, value);
160 _impl->setColumnToNull(columnName);
176 _impl->setTableForQuery(tableName, isExpr);
184 _impl->setTableListForQuery(tableNameList);
195 _impl->outColumn(columnName, isExpr);
206 template <
typename T>
209 _impl->outParam(columnName, location, isExpr);
217 template <
typename T>
219 _impl->condParam(paramName, value);
227 _impl->orderBy(expression);
234 _impl->groupBy(expression);
243 _impl->setQueryWhere(whereClause);
256 return _impl->next();
262 template <
typename T>
264 return _impl->getColumnByPos<T>(pos);
271 return _impl->columnIsNull(pos);
279 _impl->finishQuery();
285 template void DbStorage::setColumn<>(
std::string const& columnName,
char const& value);
286 template void DbStorage::setColumn<>(
std::string const& columnName,
short const& value);
287 template void DbStorage::setColumn<>(
std::string const& columnName,
int const& value);
288 template void DbStorage::setColumn<>(
std::string const& columnName,
long const& value);
289 template void DbStorage::setColumn<>(
std::string const& columnName,
long long const& value);
290 template void DbStorage::setColumn<>(
std::string const& columnName,
float const& value);
291 template void DbStorage::setColumn<>(
std::string const& columnName,
double const& value);
293 template void DbStorage::setColumn<>(
std::string const& columnName,
bool const& value);
294 template void DbStorage::setColumn<>(
std::string const& columnName,
DateTime const& value);
296 template void DbStorage::outParam<>(
std::string const& columnName,
char* location,
bool isExpr);
297 template void DbStorage::outParam<>(
std::string const& columnName,
short* location,
bool isExpr);
298 template void DbStorage::outParam<>(
std::string const& columnName,
int* location,
bool isExpr);
299 template void DbStorage::outParam<>(
std::string const& columnName,
long* location,
bool isExpr);
300 template void DbStorage::outParam<>(
std::string const& columnName,
long long* location,
bool isExpr);
301 template void DbStorage::outParam<>(
std::string const& columnName,
float* location,
bool isExpr);
302 template void DbStorage::outParam<>(
std::string const& columnName,
double* location,
bool isExpr);
304 template void DbStorage::outParam<>(
std::string const& columnName,
bool* location,
bool isExpr);
305 template void DbStorage::outParam<>(
std::string const& columnName,
DateTime* location,
bool isExpr);
307 template void DbStorage::condParam<>(
std::string const& paramName,
char const& value);
308 template void DbStorage::condParam<>(
std::string const& paramName,
short const& value);
309 template void DbStorage::condParam<>(
std::string const& paramName,
int const& value);
310 template void DbStorage::condParam<>(
std::string const& paramName,
long const& value);
311 template void DbStorage::condParam<>(
std::string const& paramName,
long long const& value);
312 template void DbStorage::condParam<>(
std::string const& paramName,
float const& value);
313 template void DbStorage::condParam<>(
std::string const& paramName,
double const& value);
315 template void DbStorage::condParam<>(
std::string const& paramName,
bool const& value);
318 template char const& DbStorage::getColumnByPos<>(
int pos);
319 template short const& DbStorage::getColumnByPos<>(
int pos);
320 template int const& DbStorage::getColumnByPos<>(
int pos);
321 template long const& DbStorage::getColumnByPos<>(
int pos);
322 template long long const& DbStorage::getColumnByPos<>(
int pos);
323 template float const& DbStorage::getColumnByPos<>(
int pos);
324 template double const& DbStorage::getColumnByPos<>(
int pos);
325 template std::string const& DbStorage::getColumnByPos<>(
int pos);
326 template bool const& DbStorage::getColumnByPos<>(
int pos);
327 template DateTime const& DbStorage::getColumnByPos<>(
int pos);
void outParam(std::string const &columnName, T *location, bool isExpr=false)
Request a column in the query output and bind a destination location.
virtual void executeSql(std::string const &sqlStatement)
Execute an arbitrary SQL statement.
Class for handling dates/times, including MJD, UTC, and TAI.
virtual void outColumn(std::string const &columnName, bool isExpr=false)
Request a column in the query output.
Interface for DbStorage class.
void setColumn(std::string const &columnName, T const &value)
Set the value to insert in a given column.
Class for logical location of a persisted Persistable instance.
virtual void setQueryWhere(std::string const &whereClause)
Set the condition for the WHERE clause of the query.
virtual void dropTable(std::string const &tableName)
Drop a table.
bool columnIsNull(int pos)
Determine if the value of a column is NULL.
void condParam(std::string const ¶mName, T const &value)
Bind a value to a WHERE condition parameter.
virtual bool next(void)
Move to the next (first) row of the query result.
virtual void startTransaction(void)
Start a transaction.
A base class for image defects.
DbStorage(void)
Constructor.
std::unique_ptr< DbStorageImpl > _impl
Implementation class for isolation.
virtual void groupBy(std::string const &expression)
Request that the query output be grouped by an expression.
virtual void setPolicy(lsst::pex::policy::Policy::Ptr policy)
Allow a policy to be used to configure the DbStorage.
virtual void orderBy(std::string const &expression)
Request that the query output be sorted by an expression.
virtual void setRetrieveLocation(LogicalLocation const &location)
Set the database location to retrieve from.
virtual void endTransaction(void)
End a transaction.
virtual void insertRow(void)
Insert the row.
Interface for DateTime class.
Class for implementation of database storage.
virtual void setTableForQuery(std::string const &tableName, bool isExpr=false)
Set the table to query (single-table queries only).
virtual void query(void)
Execute the query.
T const & getColumnByPos(int pos)
Get the value of a column of the query result row by position.
virtual void setTableListForQuery(std::vector< std::string > const &tableNameList)
Set a list of tables to query (multiple-table queries).
~DbStorage(void)
Minimal destructor.
Interface for DbStorageImpl class.
virtual void finishQuery(void)
Indicate that query processing is finished.
virtual void setTableForInsert(std::string const &tableName)
Set the table to insert rows into.
virtual void setPersistLocation(LogicalLocation const &location)
Set the database location to persist to.
virtual void createTableFromTemplate(std::string const &tableName, std::string const &templateName, bool mayAlreadyExist=false)
Create a new table from an existing template table.
virtual void setColumnToNull(std::string const &columnName)
Set a given column to NULL.
virtual void truncateTable(std::string const &tableName)
Truncate a table.