Fix SQLiteStatement
authorSangyoon Jang <jeremy.jang@samsung.com>
Mon, 11 May 2020 10:30:28 +0000 (19:30 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Mon, 25 May 2020 04:28:15 +0000 (13:28 +0900)
- Use SQLITE_TRANSIENT when binding values
 Seems that SQLITE_STATIC needs explicit commit.
- Remove error logs at sqlite3_column_*
 Values can be null, and that is not an error.

Change-Id: Id53bd1936ec2a3cf00b339d2788dffd92f43f77a
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
src/theme_provider/sqlite_statement.cc

index 6aca241..61a781d 100644 (file)
@@ -54,7 +54,7 @@ bool SQLiteStatement::BindInt(int pos, int val) {
 }
 
 bool SQLiteStatement::BindString(int pos, const std::string& val) {
-  int r = sqlite3_bind_text(stmt_, pos, val.c_str(), -1, SQLITE_STATIC);
+  int r = sqlite3_bind_text(stmt_, pos, val.c_str(), -1, SQLITE_TRANSIENT);
   if (r != SQLITE_OK) {
     LOG(ERROR) << "sqlite3_bind_text() failed: " << GetErrorMessage();
     sql_conn_->SetErrorCode(r);
@@ -64,7 +64,8 @@ bool SQLiteStatement::BindString(int pos, const std::string& val) {
 }
 
 bool SQLiteStatement::BindBlob(int pos, const std::vector<unsigned char>& val) {
-  int r = sqlite3_bind_blob(stmt_, pos, val.data(), val.size(), SQLITE_STATIC);
+  int r = sqlite3_bind_blob(stmt_, pos, val.data(), val.size(),
+      SQLITE_TRANSIENT);
   if (r != SQLITE_OK) {
     LOG(ERROR) << "sqlite3_bind_blob() failed: " << GetErrorMessage();
     sql_conn_->SetErrorCode(r);
@@ -81,20 +82,16 @@ int SQLiteStatement::GetColumnInt(int pos) const {
 std::string SQLiteStatement::GetColumnString(int pos) const {
   const char* val = reinterpret_cast<const char*>(
       sqlite3_column_text(stmt_, pos));
-  if (!val) {
-    LOG(ERROR) << "sqlite3_column_text() failed: " << GetErrorMessage();
+  if (!val)
     return {};
-  }
   return std::string(val);
 }
 
 std::vector<unsigned char> SQLiteStatement::GetColumnBlob(int pos) const {
   const unsigned char* val = reinterpret_cast<const unsigned char*>(
       sqlite3_column_blob(stmt_, pos));
-  if (!val) {
-    LOG(ERROR) << "sqlite3_column_blob() failed: " << GetErrorMessage();
+  if (!val)
     return {};
-  }
   int len = sqlite3_column_bytes(stmt_, pos);
   if (len < 0) {
     LOG(ERROR) << "sqlite3_column_bytes() failed: " << GetErrorMessage();