From 4f0315aeb032f8e8a0704d4bc534d1237db7784a Mon Sep 17 00:00:00 2001 From: Alex Fabijanic Date: Thu, 2 Nov 2023 00:28:18 +0100 Subject: [PATCH] feat(Data::Statement): make statementsCount() Optional 230 --- Data/include/Poco/Data/Statement.h | 2 +- Data/src/Statement.cpp | 9 +++++---- Data/testsuite/src/DataTest.cpp | 2 ++ 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Data/include/Poco/Data/Statement.h b/Data/include/Poco/Data/Statement.h index 518be8417..272c4afd4 100644 --- a/Data/include/Poco/Data/Statement.h +++ b/Data/include/Poco/Data/Statement.h @@ -305,7 +305,7 @@ public: const std::string& toString() const; /// Creates a string from the accumulated SQL statement. - std::size_t statementsCount() const; + Optional statementsCount() const; /// Returns the total number of SQL statements held in the accummulated SQL statement. Optional parse(); diff --git a/Data/src/Statement.cpp b/Data/src/Statement.cpp index 520237dde..570f13078 100644 --- a/Data/src/Statement.cpp +++ b/Data/src/Statement.cpp @@ -155,13 +155,14 @@ Statement& Statement::reset() return *this; } -std::size_t Statement::statementsCount() const +Optional Statement::statementsCount() const { + Optional ret; #ifndef POCO_DATA_NO_SQL_PARSER - return _pParseResult->size(); -#else - return 0u; + if (_pImpl->session().shouldParse()) + ret = _pParseResult->size(); #endif + return ret; } diff --git a/Data/testsuite/src/DataTest.cpp b/Data/testsuite/src/DataTest.cpp index df4057d14..c7f6899a9 100644 --- a/Data/testsuite/src/DataTest.cpp +++ b/Data/testsuite/src/DataTest.cpp @@ -1451,6 +1451,7 @@ void DataTest::testSQLParse() "'",'a',"'",-1, 1u, 1.5, "42", now); assertTrue ("SELECT 'a',-1,1,1.500000,42 FROM Person WHERE Name LIKE 'Simp%'" == stmt.toString()); + assertEqual (1u, stmt.statementsCount().value()); assertTrue (stmt.isSelect().value()); assertTrue (stmt.hasSelect().value()); assertTrue (!stmt.isUpdate().value()); @@ -1470,6 +1471,7 @@ void DataTest::testSQLParse() "PREPARE prep_inst FROM 'INSERT INTO test VALUES (?, ?, ?)';" "EXECUTE prep_inst(1, 2, 3);"); stmt.execute(); + assertEqual (8u, stmt.statementsCount().value()); assertTrue (!stmt.isSelect().value()); assertTrue (stmt.hasSelect().value()); assertTrue (!stmt.isUpdate().value());