97 template <
class DerivedT>
139 template <
typename T>
141 template <
typename T>
143 template <
typename T>
144 bool SetProperty(
const std::string &key,
const T value);
336 Sql(sqlite3 *sqlite_db,
const std::string &statement);
355 bool BindBlob(
const int index,
const void* value,
const unsigned size) {
358 sqlite3_bind_blob(
statement_, index, value, static_cast<int>(size),
367 sqlite3_bind_blob(
statement_, index, value, static_cast<int>(size),
376 bool BindInt(
const int index,
const int value) {
381 bool BindInt64(
const int index,
const sqlite3_int64 value) {
393 index, value.data(),
static_cast<int>(value.length()));
397 return BindText(index, value, size, SQLITE_TRANSIENT);
399 bool BindText(
const int index,
const std::string &value) {
400 return BindText(index, value.data(),
static_cast<int>(value.length()),
406 void(*dtor)(
void*) = SQLITE_STATIC) {
417 template <
typename T>
418 inline bool Bind(
const int index,
const T &value);
422 return sqlite3_column_type(
statement_, idx_column);
434 return sqlite3_column_bytes(
statement_, idx_column);
437 return sqlite3_column_blob(
statement_, idx_column);
440 return sqlite3_column_double(
statement_, idx_column);
443 if (sqlite3_column_type(
statement_, idx_column) == SQLITE_NULL)
445 return sqlite3_column_int(
statement_, idx_column);
448 return sqlite3_column_int(
statement_, idx_column);
451 return sqlite3_column_int64(
statement_, idx_column);
454 return sqlite3_column_text(
statement_, idx_column);
457 return reinterpret_cast<const char*
>(
RetrieveText(idx_column));
459 template <
typename T>
478 bool Init(
const sqlite3 *database,
const std::string &statement);
488 void DeferredInit(
const sqlite3 *database,
const char *statement);
501 bool Init(
const char *statement);
521 #endif // CVMFS_SQL_H_
const char * query_string_
std::string GetLastErrorMsg() const
bool Bind(const int index, const T &value)
const std::string & filename() const
std::string GetLastErrorMsg() const
bool IsInitialized() const
bool BindTextTransient(const int index, const std::string &value)
const std::string & path() const
void EnforceSchema(float version, unsigned revision)
double GetFreePageRatio() const
int page_cache_used
Bytes used for caching pages.
bool BindText(const int index, const std::string &value)
const std::string & filename() const
bool Init(const sqlite3 *database, const std::string &statement)
bool PrepareCommonQueries()
const void * RetrieveBlob(const int idx_column) const
double RetrieveDouble(const int idx_column) const
bool BeginTransaction() const
void ReadSchemaRevision()
bool BindBlobTransient(const int index, const void *value, const unsigned size)
Database(const std::string &filename, const OpenMode open_mode)
void set_schema_version(const float ver)
assert((mem||(size==0))&&"Out Of Memory")
std::string DebugResultTable()
int RetrieveNullableInt(const int idx_column, const int val_null) const
float schema_version() const
int stmt_used
Bytes used for prepared statmements (lookaside + heap)
void set_schema_revision(const unsigned rev)
static DerivedT * Open(const std::string &filename, const OpenMode open_mode)
sqlite3 * database() const
bool CreatePropertiesTable()
T GetProperty(const std::string &key) const
unsigned schema_revision() const
T GetPropertyDefault(const std::string &key, const T default_value) const
void DeferredInit(const sqlite3 *database, const char *statement)
bool BindDouble(const int index, const double value)
UniquePtr< Sql > set_property_
unsigned GetModifiedRowCount() const
static const float kSchemaEpsilon
sqlite3_int64 RetrieveInt64(const int idx_column) const
bool BindBlob(const int index, const void *value, const unsigned size)
bool BindInt(const int index, const int value)
DatabaseRaiiWrapper(const std::string &filename, Database< DerivedT > *delegate)
T Retrieve(const int index)
UniquePtr< Sql > commit_transaction_
UniquePtr< Sql > has_property_
bool BindTextTransient(const int index, const char *value, const int size)
sqlite3 * sqlite_db() const
bool CommitTransaction() const
sqlite3_stmt * statement_
bool BindInt64(const int index, const sqlite3_int64 value)
bool SetProperty(const std::string &key, const T value)
bool OpenDatabase(const int sqlite_open_flags)
bool HasProperty(const std::string &key) const
bool IsEqualSchema(const float value, const float compare) const
std::string RetrieveString(const int idx_column) const
const unsigned char * RetrieveText(const int idx_column) const
static const char * kSchemaRevisionKey
unsigned schema_revision_
int RetrieveType(const int idx_column) const
int schema_used
Bytes used to store db schema.
bool BindText(const int index, const char *value, const int size, void(*dtor)(void *)=SQLITE_STATIC)
UnlinkGuard db_file_guard
Database< DerivedT > * delegate_
void GetMemStatistics(MemStatistics *stats) const
void PrintSqlError(const std::string &error_msg)
DatabaseRaiiWrapper database_
static const char * kSchemaVersionKey
int RetrieveInt(const int idx_column) const
UniquePtr< Sql > get_property_
bool BindNull(const int index)
bool StoreSchemaRevision()
UniquePtr< Sql > begin_transaction_
static DerivedT * Create(const std::string &filename)
int RetrieveBytes(const int idx_column) const