Nebula
Loading...
Searching...
No Matches
sqlite3database.h
Go to the documentation of this file.
1#pragma once
2#ifndef DB_SQLITE3DATABASE_H
3#define DB_SQLITE3DATABASE_H
4//------------------------------------------------------------------------------
14#include "core/config.h"
15#include "attr/attribute.h"
16#include "db/database.h"
17#include "sqlite3.h"
18
19//------------------------------------------------------------------------------
20namespace Attr
21{
22 // some SQLite-internal names
27 DeclareAttrBlob(dflt_value);
32}
33
34//------------------------------------------------------------------------------
35namespace Db
36{
38{
40public:
43 {
46 };
47
51 virtual ~Sqlite3Database();
52
54 void SetCacheNumPages(SizeT numCachePages);
56 SizeT GetCacheNumPages() const;
58 void SetTempStore(TempStore s);
60 TempStore GetTempStore() const;
62 void SetSynchronousMode(bool b);
64 bool GetSynchronousMode() const;
66 void SetBusyTimeout(int ms);
68 int GetBusyTimeout() const;
69
71 virtual bool Open();
73 virtual void Close();
74
76 virtual bool AttachDatabase(const IO::URI& uri, const Util::String& dbName);
78 virtual void DetachDatabase(const Util::String& dbName);
80 virtual void BeginTransaction();
82 virtual void EndTransaction();
84 virtual bool IsInTransaction() const;
85
87 sqlite3* GetSqliteHandle() const;
88
90 virtual void CopyInMemoryDatabaseToFile(const IO::URI& fileUri);
91
92private:
94 void ReadTableLayouts();
96 void RegisterAttributes(Ptr<Table>& attrTable);
97
103 sqlite3* sqliteHandle;
106};
107
108//------------------------------------------------------------------------------
111inline sqlite3*
113{
114 n_assert(0 != this->sqliteHandle);
115 return this->sqliteHandle;
116}
117
118//------------------------------------------------------------------------------
121inline void
123{
124 n_assert(!this->IsOpen());
125 n_assert(p > 0);
126 this->cacheNumPages = p;
127}
128
129//------------------------------------------------------------------------------
132inline SizeT
134{
135 return this->cacheNumPages;
136}
137
138//------------------------------------------------------------------------------
141inline void
146
147//------------------------------------------------------------------------------
152{
153 return this->tempStore;
154}
155
156//------------------------------------------------------------------------------
159inline void
161{
162 this->syncMode = b;
163}
164
165//------------------------------------------------------------------------------
168inline bool
170{
171 return this->syncMode;
172}
173
174//------------------------------------------------------------------------------
177inline void
179{
180 this->busyTimeout = ms;
181}
182
183//------------------------------------------------------------------------------
186inline int
188{
189 return this->busyTimeout;
190}
191
192//------------------------------------------------------------------------------
195inline bool
197{
198 return this->inTransaction;
199}
200
201} // namespace Db
202//------------------------------------------------------------------------------
203#endif
204
#define DeclareAttrString(NAME)
Definition attributedefinition.h:94
#define DeclareAttrBlob(NAME)
Definition attributedefinition.h:106
#define DeclareAttrInt(NAME)
Definition attributedefinition.h:54
#define DeclareAttrBool(NAME)
Definition attributedefinition.h:78
IO::URI uri
Definition database.h:108
bool IsOpen() const
return true if database is open
Definition database.h:156
Database()
constructor
Definition database.cc:25
sqlite3 * sqliteHandle
Definition sqlite3database.h:103
virtual void EndTransaction()
end a transaction on the database
Definition sqlite3database.cc:252
virtual void Close()
close the database
Definition sqlite3database.cc:207
TempStore
temporary storage location
Definition sqlite3database.h:43
@ File
Definition sqlite3database.h:44
virtual ~Sqlite3Database()
destructor
Definition sqlite3database.cc:53
int busyTimeout
Definition sqlite3database.h:102
Sqlite3Database()
constructor
Definition sqlite3database.cc:39
Ptr< Command > endTransactionCmd
Definition sqlite3database.h:105
TempStore tempStore
Definition sqlite3database.h:99
virtual void DetachDatabase(const Util::String &dbName)
detach an attached database
Definition sqlite3database.cc:397
Ptr< Command > beginTransactionCmd
Definition sqlite3database.h:104
int GetBusyTimeout() const
get busy timeout in milliseconds
Definition sqlite3database.h:187
void SetCacheNumPages(SizeT numCachePages)
set the SQLite3 database cache size in number of pages
Definition sqlite3database.h:122
SizeT GetCacheNumPages() const
get SQLite3 database cache size
Definition sqlite3database.h:133
bool GetSynchronousMode() const
get synchronous mode
Definition sqlite3database.h:169
void RegisterAttributes(Ptr< Table > &attrTable)
dynamically register attributes from special _Attributes db table
Definition sqlite3database.cc:274
virtual bool IsInTransaction() const
return true if a transaction is currently open
Definition sqlite3database.h:196
void SetSynchronousMode(bool b)
synchronous mode on/off
Definition sqlite3database.h:160
SizeT cacheNumPages
Definition sqlite3database.h:98
__DeclareClass(Sqlite3Database)
virtual void BeginTransaction()
begin a transaction on the database
Definition sqlite3database.cc:235
void ReadTableLayouts()
read table layouts from database
Definition sqlite3database.cc:312
void SetTempStore(TempStore s)
set temporary storage location
Definition sqlite3database.h:142
bool inTransaction
Definition sqlite3database.h:101
sqlite3 * GetSqliteHandle() const
get the SQLite database handle
Definition sqlite3database.h:112
virtual bool Open()
open the database
Definition sqlite3database.cc:65
virtual void CopyInMemoryDatabaseToFile(const IO::URI &fileUri)
copy in memory database to file
Definition sqlite3database.cc:416
TempStore GetTempStore() const
get temporary storage location
Definition sqlite3database.h:151
virtual bool AttachDatabase(const IO::URI &uri, const Util::String &dbName)
attach another database to the current database
Definition sqlite3database.cc:360
void SetBusyTimeout(int ms)
set busy timeout in milliseconds (default is 100, 0 disabled busy handling)
Definition sqlite3database.h:178
bool syncMode
Definition sqlite3database.h:100
An URI object can split a Uniform Resource Identifier string into its components or build a string fr...
Definition uri.h:67
Nebula's smart pointer class which manages the life time of RefCounted objects.
Definition ptr.h:38
Nebula's universal string class.
Definition string.h:50
#define n_assert(exp)
Definition debug.h:58
Nebula compiler specific defines and configuration.
Definition accessmode.h:13
Definition column.cc:10
Definition arenaallocator.h:31
int SizeT
Definition types.h:42