Return SchemaVersion::NOT_EXIST 21/71321/1
authorKyungwook Tak <k.tak@samsung.com>
Wed, 25 May 2016 04:31:19 +0000 (13:31 +0900)
committerKyungwook Tak <k.tak@samsung.com>
Wed, 25 May 2016 05:11:29 +0000 (14:11 +0900)
Instead of throw exception, return enum value which means not exist when
get schema version in Db::Manager ctor.

And don't throw exception in Db::Statement dtor. it's useless and
uncatchable.

Change-Id: I0f93df10d21d8d0685c3b9a25b0aa5fc4406b0aa
Signed-off-by: Kyungwook Tak <k.tak@samsung.com>
src/framework/db/manager.cpp
src/framework/db/manager.h
src/framework/db/statement.cpp

index 474d639..54bc192 100644 (file)
@@ -156,10 +156,7 @@ int Manager::getSchemaVersion()
 
        stmt.bind(DB_VERSION_STR);
 
-       if (!stmt.step())
-               ThrowExc(DbFailed, "schema version row isn't exist!");
-
-       return stmt.getInt();
+       return stmt.step() ? stmt.getInt() : SchemaVersion::NOT_EXIST;
 }
 
 void Manager::setSchemaVersion(int sv)
index 48e3259..3eab9b3 100644 (file)
@@ -41,6 +41,11 @@ public:
        Manager(const std::string &dbfile, const std::string &scriptsDir);
        virtual ~Manager();
 
+       Manager(const Manager &) = delete;
+       Manager &operator=(const Manager &) = delete;
+       Manager(Manager &&) = delete;
+       Manager &operator=(Manager &&) = delete;
+
        // SCHEMA_INFO. it's public only for testing for now...
        int getSchemaVersion();
 
index 7320f6f..4d9e1b1 100644 (file)
@@ -52,7 +52,7 @@ Statement::Statement(const Connection &db, const std::string &query) :
 Statement::~Statement()
 {
        if (SQLITE_OK != ::sqlite3_finalize(m_stmt))
-               ThrowExc(DbFailed, getErrorMessage());
+               ERROR("Failed to sqlite3_finalize: " << getErrorMessage());
 }
 
 void Statement::reset()
@@ -98,7 +98,8 @@ bool Statement::step()
 int Statement::exec()
 {
        if (::sqlite3_step(m_stmt) != SQLITE_DONE)
-               ThrowExc(DbFailed, getErrorMessage());
+               ThrowExc(DbFailed, "exec() failed. query: " << m_query <<
+                                " msg: " << getErrorMessage());
 
        // column cannot be 'get' after sqlite done, so make index overflow.
        m_columnIndex = m_columnCount + 1;