Rename Statement::mbIsOk to mbHasRow

This commit is contained in:
Sébastien Rombauts 2017-08-28 17:17:18 +02:00
parent 473a307b6d
commit 4f7899c959
4 changed files with 47 additions and 42 deletions

View File

@ -549,9 +549,14 @@ public:
return mColumnCount; return mColumnCount;
} }
/// true when a row has been fetched with executeStep() /// true when a row has been fetched with executeStep()
inline bool hasRow() const
{
return mbHasRow;
}
/// @deprecated, use #hasRow()
inline bool isOk() const inline bool isOk() const
{ {
return mbOk; return hasRow();
} }
/// true when the last executeStep() had no more row to fetch /// true when the last executeStep() had no more row to fetch
inline bool isDone() const inline bool isDone() const
@ -632,7 +637,7 @@ private:
*/ */
inline void checkRow() const inline void checkRow() const
{ {
if (false == mbOk) if (false == mbHasRow)
{ {
throw SQLite::Exception("No row to get a column from. executeStep() was not called, or returned false."); throw SQLite::Exception("No row to get a column from. executeStep() was not called, or returned false.");
} }
@ -658,7 +663,7 @@ private:
Ptr mStmtPtr; //!< Shared Pointer to the prepared SQLite Statement Object Ptr mStmtPtr; //!< Shared Pointer to the prepared SQLite Statement Object
int mColumnCount; //!< Number of columns in the result of the prepared statement int mColumnCount; //!< Number of columns in the result of the prepared statement
mutable TColumnNames mColumnNames; //!< Map of columns index by name (mutable so getColumnIndex can be const) mutable TColumnNames mColumnNames; //!< Map of columns index by name (mutable so getColumnIndex can be const)
bool mbOk; //!< true when a row has been fetched with executeStep() bool mbHasRow; //!< true when a row has been fetched with executeStep()
bool mbDone; //!< true when the last executeStep() had no more row to fetch bool mbDone; //!< true when the last executeStep() had no more row to fetch
}; };

View File

@ -25,7 +25,7 @@ Statement::Statement(Database &aDatabase, const char* apQuery) :
mQuery(apQuery), mQuery(apQuery),
mStmtPtr(aDatabase.mpSQLite, mQuery), // prepare the SQL query, and ref count (needs Database friendship) mStmtPtr(aDatabase.mpSQLite, mQuery), // prepare the SQL query, and ref count (needs Database friendship)
mColumnCount(0), mColumnCount(0),
mbOk(false), mbHasRow(false),
mbDone(false) mbDone(false)
{ {
mColumnCount = sqlite3_column_count(mStmtPtr); mColumnCount = sqlite3_column_count(mStmtPtr);
@ -36,7 +36,7 @@ Statement::Statement(Database &aDatabase, const std::string& aQuery) :
mQuery(aQuery), mQuery(aQuery),
mStmtPtr(aDatabase.mpSQLite, mQuery), // prepare the SQL query, and ref count (needs Database friendship) mStmtPtr(aDatabase.mpSQLite, mQuery), // prepare the SQL query, and ref count (needs Database friendship)
mColumnCount(0), mColumnCount(0),
mbOk(false), mbHasRow(false),
mbDone(false) mbDone(false)
{ {
mColumnCount = sqlite3_column_count(mStmtPtr); mColumnCount = sqlite3_column_count(mStmtPtr);
@ -58,7 +58,7 @@ void Statement::reset()
int Statement::tryReset() noexcept int Statement::tryReset() noexcept
{ {
mbOk = false; mbHasRow = false;
mbDone = false; mbDone = false;
return sqlite3_reset(mStmtPtr); return sqlite3_reset(mStmtPtr);
} }
@ -250,7 +250,7 @@ bool Statement::executeStep()
throw SQLite::Exception(mStmtPtr, ret); throw SQLite::Exception(mStmtPtr, ret);
} }
return mbOk; // true only if one row is accessible by getColumn(N) return mbHasRow; // true only if one row is accessible by getColumn(N)
} }
// Execute a one-step query with no expected result // Execute a one-step query with no expected result
@ -280,16 +280,16 @@ int Statement::tryExecuteStep() noexcept
const int ret = sqlite3_step(mStmtPtr); const int ret = sqlite3_step(mStmtPtr);
if (SQLITE_ROW == ret) // one row is ready : call getColumn(N) to access it if (SQLITE_ROW == ret) // one row is ready : call getColumn(N) to access it
{ {
mbOk = true; mbHasRow = true;
} }
else if (SQLITE_DONE == ret) // no (more) row ready : the query has finished executing else if (SQLITE_DONE == ret) // no (more) row ready : the query has finished executing
{ {
mbOk = false; mbHasRow = false;
mbDone = true; mbDone = true;
} }
else else
{ {
mbOk = false; mbHasRow = false;
mbDone = false; mbDone = false;
} }

View File

@ -52,7 +52,7 @@ TEST(Column, basis) {
EXPECT_STREQ("SELECT * FROM test", query.getQuery().c_str()); EXPECT_STREQ("SELECT * FROM test", query.getQuery().c_str());
EXPECT_EQ(6, query.getColumnCount ()); EXPECT_EQ(6, query.getColumnCount ());
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
// validates every variant of cast operators, and conversions of types // validates every variant of cast operators, and conversions of types

View File

@ -39,7 +39,7 @@ TEST(Statement, invalid) {
SQLite::Statement query(db, "SELECT * FROM test"); SQLite::Statement query(db, "SELECT * FROM test");
EXPECT_STREQ("SELECT * FROM test", query.getQuery().c_str()); EXPECT_STREQ("SELECT * FROM test", query.getQuery().c_str());
EXPECT_EQ(2, query.getColumnCount ()); EXPECT_EQ(2, query.getColumnCount ());
EXPECT_FALSE(query.isOk()); EXPECT_FALSE(query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_EQ(SQLite::OK, query.getErrorCode()); EXPECT_EQ(SQLite::OK, query.getErrorCode());
EXPECT_EQ(SQLite::OK, query.getExtendedErrorCode()); EXPECT_EQ(SQLite::OK, query.getExtendedErrorCode());
@ -53,14 +53,14 @@ TEST(Statement, invalid) {
EXPECT_THROW(query.getColumn(2), SQLite::Exception); EXPECT_THROW(query.getColumn(2), SQLite::Exception);
query.reset(); query.reset();
EXPECT_FALSE(query.isOk()); EXPECT_FALSE(query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
query.executeStep(); query.executeStep();
EXPECT_FALSE(query.isOk()); EXPECT_FALSE(query.hasRow());
EXPECT_TRUE( query.isDone()); EXPECT_TRUE( query.isDone());
query.reset(); query.reset();
EXPECT_FALSE(query.isOk()); EXPECT_FALSE(query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
query.reset(); query.reset();
@ -89,7 +89,7 @@ TEST(Statement, invalid) {
EXPECT_EQ(1, db.getTotalChanges()); EXPECT_EQ(1, db.getTotalChanges());
query.reset(); query.reset();
EXPECT_FALSE(query.isOk()); EXPECT_FALSE(query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_THROW(query.exec(), SQLite::Exception); // exec() shall throw as it does not expect a result EXPECT_THROW(query.exec(), SQLite::Exception); // exec() shall throw as it does not expect a result
@ -115,7 +115,7 @@ TEST(Statement, executeStep) {
// Get the first row // Get the first row
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
const int64_t id = query.getColumn(0); const int64_t id = query.getColumn(0);
const std::string msg = query.getColumn(1); const std::string msg = query.getColumn(1);
@ -130,7 +130,7 @@ TEST(Statement, executeStep) {
// Step one more time to discover there is nothing more // Step one more time to discover there is nothing more
query.executeStep(); query.executeStep();
EXPECT_FALSE(query.isOk()); EXPECT_FALSE(query.hasRow());
EXPECT_TRUE (query.isDone()); // "done" is "the end" EXPECT_TRUE (query.isDone()); // "done" is "the end"
// Step after "the end" throw an exception // Step after "the end" throw an exception
@ -167,7 +167,7 @@ TEST(Statement, tryExecuteStep) {
// Get the first row // Get the first row
EXPECT_EQ(query.tryExecuteStep(), SQLITE_ROW); EXPECT_EQ(query.tryExecuteStep(), SQLITE_ROW);
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
const int64_t id = query.getColumn(0); const int64_t id = query.getColumn(0);
const std::string msg = query.getColumn(1); const std::string msg = query.getColumn(1);
@ -182,7 +182,7 @@ TEST(Statement, tryExecuteStep) {
// Step one more time to discover there is nothing more // Step one more time to discover there is nothing more
EXPECT_EQ(query.tryExecuteStep(), SQLITE_DONE); EXPECT_EQ(query.tryExecuteStep(), SQLITE_DONE);
EXPECT_FALSE(query.isOk()); EXPECT_FALSE(query.hasRow());
EXPECT_TRUE (query.isDone()); // "done" is "the end" EXPECT_TRUE (query.isDone()); // "done" is "the end"
// Try to insert a new row with the same PRIMARY KEY: "UNIQUE constraint failed: test.id" // Try to insert a new row with the same PRIMARY KEY: "UNIQUE constraint failed: test.id"
@ -222,7 +222,7 @@ TEST(Statement, bindings) {
// Check the result // Check the result
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_EQ (1, query.getColumn(0).getInt64()); EXPECT_EQ (1, query.getColumn(0).getInt64());
EXPECT_STREQ("first", query.getColumn(1).getText()); EXPECT_STREQ("first", query.getColumn(1).getText());
@ -240,7 +240,7 @@ TEST(Statement, bindings) {
// Check the result // Check the result
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_EQ (2, query.getColumn(0).getInt64()); EXPECT_EQ (2, query.getColumn(0).getInt64());
EXPECT_STREQ("first", query.getColumn(1).getText()); EXPECT_STREQ("first", query.getColumn(1).getText());
@ -259,7 +259,7 @@ TEST(Statement, bindings) {
// Check the resultw // Check the resultw
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_EQ (3, query.getColumn(0).getInt64()); EXPECT_EQ (3, query.getColumn(0).getInt64());
EXPECT_TRUE (query.isColumnNull(1)); EXPECT_TRUE (query.isColumnNull(1));
@ -287,7 +287,7 @@ TEST(Statement, bindings) {
// Check the result // Check the result
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_EQ(4, query.getColumn(0).getInt64()); EXPECT_EQ(4, query.getColumn(0).getInt64());
EXPECT_EQ(fourth, query.getColumn(1).getText()); EXPECT_EQ(fourth, query.getColumn(1).getText());
@ -307,7 +307,7 @@ TEST(Statement, bindings) {
// Check the result // Check the result
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_EQ(5, query.getColumn(0).getInt64()); EXPECT_EQ(5, query.getColumn(0).getInt64());
EXPECT_STREQ(buffer, query.getColumn(1).getText()); EXPECT_STREQ(buffer, query.getColumn(1).getText());
@ -329,7 +329,7 @@ TEST(Statement, bindings) {
// Check the result // Check the result
query.executeStep(); query.executeStep();
EXPECT_TRUE(query.isOk()); EXPECT_TRUE(query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_EQ(6, query.getColumn(0).getInt64()); EXPECT_EQ(6, query.getColumn(0).getInt64());
EXPECT_EQ(4294967295U, query.getColumn(2).getUInt()); EXPECT_EQ(4294967295U, query.getColumn(2).getUInt());
@ -366,7 +366,7 @@ TEST(Statement, bindNoCopy) {
// Check the result // Check the result
query.executeStep(); query.executeStep();
EXPECT_TRUE(query.isOk()); EXPECT_TRUE(query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_EQ(1, query.getColumn(0).getInt64()); EXPECT_EQ(1, query.getColumn(0).getInt64());
EXPECT_STREQ(txt1, query.getColumn(1).getText()); EXPECT_STREQ(txt1, query.getColumn(1).getText());
@ -401,7 +401,7 @@ TEST(Statement, bindByName) {
// Check the result // Check the result
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_EQ (1, query.getColumn(0).getInt64()); EXPECT_EQ (1, query.getColumn(0).getInt64());
EXPECT_STREQ("first", query.getColumn(1).getText()); EXPECT_STREQ("first", query.getColumn(1).getText());
@ -425,7 +425,7 @@ TEST(Statement, bindByName) {
// Check the result // Check the result
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_EQ(2, query.getColumn(0).getInt64()); EXPECT_EQ(2, query.getColumn(0).getInt64());
EXPECT_EQ(second, query.getColumn(1).getText()); EXPECT_EQ(second, query.getColumn(1).getText());
@ -445,7 +445,7 @@ TEST(Statement, bindByName) {
// Check the result // Check the result
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_EQ(3, query.getColumn(0).getInt64()); EXPECT_EQ(3, query.getColumn(0).getInt64());
EXPECT_STREQ(buffer, query.getColumn(1).getText()); EXPECT_STREQ(buffer, query.getColumn(1).getText());
@ -466,7 +466,7 @@ TEST(Statement, bindByName) {
// Check the result // Check the result
query.executeStep(); query.executeStep();
EXPECT_TRUE(query.isOk()); EXPECT_TRUE(query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_EQ(4, query.getColumn(0).getInt64()); EXPECT_EQ(4, query.getColumn(0).getInt64());
EXPECT_EQ(4294967295U, query.getColumn(2).getUInt()); EXPECT_EQ(4294967295U, query.getColumn(2).getUInt());
@ -503,7 +503,7 @@ TEST(Statement, bindNoCopyByName) {
// Check the result // Check the result
query.executeStep(); query.executeStep();
EXPECT_TRUE(query.isOk()); EXPECT_TRUE(query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_EQ(1, query.getColumn(0).getInt64()); EXPECT_EQ(1, query.getColumn(0).getInt64());
EXPECT_STREQ(txt1, query.getColumn(1).getText()); EXPECT_STREQ(txt1, query.getColumn(1).getText());
@ -535,7 +535,7 @@ TEST(Statement, isColumnNull) {
// Get the first non-null row // Get the first non-null row
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_THROW(query.isColumnNull(-1), SQLite::Exception); EXPECT_THROW(query.isColumnNull(-1), SQLite::Exception);
EXPECT_EQ(false, query.isColumnNull(0)); EXPECT_EQ(false, query.isColumnNull(0));
@ -545,7 +545,7 @@ TEST(Statement, isColumnNull) {
// Get the second row with null text // Get the second row with null text
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_THROW(query.isColumnNull(-1), SQLite::Exception); EXPECT_THROW(query.isColumnNull(-1), SQLite::Exception);
EXPECT_EQ(true, query.isColumnNull(0)); EXPECT_EQ(true, query.isColumnNull(0));
@ -555,7 +555,7 @@ TEST(Statement, isColumnNull) {
// Get the second row with null integer // Get the second row with null integer
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_THROW(query.isColumnNull(-1), SQLite::Exception); EXPECT_THROW(query.isColumnNull(-1), SQLite::Exception);
EXPECT_EQ(false, query.isColumnNull(0)); EXPECT_EQ(false, query.isColumnNull(0));
@ -565,7 +565,7 @@ TEST(Statement, isColumnNull) {
// Get the third row with null float // Get the third row with null float
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_THROW(query.isColumnNull(-1), SQLite::Exception); EXPECT_THROW(query.isColumnNull(-1), SQLite::Exception);
EXPECT_EQ(false, query.isColumnNull(0)); EXPECT_EQ(false, query.isColumnNull(0));
@ -597,7 +597,7 @@ TEST(Statement, isColumnNullByName) {
// Get the first non-null row // Get the first non-null row
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_THROW(query.isColumnNull(""), SQLite::Exception); EXPECT_THROW(query.isColumnNull(""), SQLite::Exception);
EXPECT_EQ(false, query.isColumnNull("msg")); EXPECT_EQ(false, query.isColumnNull("msg"));
@ -607,7 +607,7 @@ TEST(Statement, isColumnNullByName) {
// Get the second row with null text // Get the second row with null text
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_THROW(query.isColumnNull(""), SQLite::Exception); EXPECT_THROW(query.isColumnNull(""), SQLite::Exception);
EXPECT_EQ(true, query.isColumnNull("msg")); EXPECT_EQ(true, query.isColumnNull("msg"));
@ -617,7 +617,7 @@ TEST(Statement, isColumnNullByName) {
// Get the second row with null integer // Get the second row with null integer
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_THROW(query.isColumnNull(""), SQLite::Exception); EXPECT_THROW(query.isColumnNull(""), SQLite::Exception);
EXPECT_EQ(false, query.isColumnNull("msg")); EXPECT_EQ(false, query.isColumnNull("msg"));
@ -627,7 +627,7 @@ TEST(Statement, isColumnNullByName) {
// Get the third row with null float // Get the third row with null float
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
EXPECT_THROW(query.isColumnNull(""), SQLite::Exception); EXPECT_THROW(query.isColumnNull(""), SQLite::Exception);
EXPECT_EQ(false, query.isColumnNull("msg")); EXPECT_EQ(false, query.isColumnNull("msg"));
@ -657,7 +657,7 @@ TEST(Statement, getColumnByName) {
EXPECT_STREQ("SELECT * FROM test", query.getQuery().c_str()); EXPECT_STREQ("SELECT * FROM test", query.getQuery().c_str());
EXPECT_EQ(4, query.getColumnCount()); EXPECT_EQ(4, query.getColumnCount());
query.executeStep(); query.executeStep();
EXPECT_TRUE (query.isOk()); EXPECT_TRUE (query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
// Look for non-existing columns // Look for non-existing columns
@ -734,7 +734,7 @@ TEST(Statement, getColumns) {
EXPECT_STREQ("SELECT * FROM test", query.getQuery().c_str()); EXPECT_STREQ("SELECT * FROM test", query.getQuery().c_str());
EXPECT_EQ(4, query.getColumnCount()); EXPECT_EQ(4, query.getColumnCount());
query.executeStep(); query.executeStep();
EXPECT_TRUE(query.isOk()); EXPECT_TRUE(query.hasRow());
EXPECT_FALSE(query.isDone()); EXPECT_FALSE(query.isDone());
// Get all columns // Get all columns