From 2971d4c975c8e893421fe65c207ab18ddc199377 Mon Sep 17 00:00:00 2001 From: "hong.guo" Date: Fri, 26 Nov 2021 13:07:56 +0800 Subject: [PATCH 1/5] add compatible definition for std::experimental::filesystem --- include/SQLiteCpp/Database.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/include/SQLiteCpp/Database.h b/include/SQLiteCpp/Database.h index 7ee45d8..95ed341 100644 --- a/include/SQLiteCpp/Database.h +++ b/include/SQLiteCpp/Database.h @@ -15,6 +15,7 @@ // c++17: MinGW GCC version > 8 // c++17: Visual Studio 2017 version 15.7 // c++17: macOS unless targetting compatibility with macOS < 10.15 +#ifndef SQLITECPP_HAVE_STD_EXPERIMENTAL_FILESYSTEM #if __cplusplus >= 201703L #if defined(__MINGW32__) || defined(__MINGW64__) #if __GNUC__ > 8 // MinGW requires GCC version > 8 for std::filesystem @@ -33,6 +34,16 @@ #include #endif // c++17 and a suitable compiler +#else // SQLITECPP_HAVE_STD_EXPERIMENTAL_FILESYSTEM + +#define SQLITECPP_HAVE_STD_FILESYSTEM +#include +namespace std { +namespace filesystem = experimental::filesystem; +} + +#endif // SQLITECPP_HAVE_STD_EXPERIMENTAL_FILESYSTEM + #include #include From bfb8e6a01784422da4ece46f51037444258f312c Mon Sep 17 00:00:00 2001 From: modest <53246970+panicfrog@users.noreply.github.com> Date: Sun, 24 Jul 2022 20:21:23 +0800 Subject: [PATCH 2/5] Fix compilation issues earlier than iOS 13 (#359) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 叶 永平 --- include/SQLiteCpp/Database.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/SQLiteCpp/Database.h b/include/SQLiteCpp/Database.h index 7ee45d8..3236bc2 100644 --- a/include/SQLiteCpp/Database.h +++ b/include/SQLiteCpp/Database.h @@ -21,7 +21,10 @@ #define SQLITECPP_HAVE_STD_FILESYSTEM #endif #elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500 - // macOS clang won't less us touch std::filesystem if we're targetting earlier than 10.15 + // macOS clang won't let us touch std::filesystem if we're targetting earlier than 10.15 + #elif defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && defined(__IPHONE_13_0) && \ +__IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_13_0 + // build for iOS clang won't let us touch std::filesystem if we're targetting earlier than iOS 13 #else #define SQLITECPP_HAVE_STD_FILESYSTEM #endif From 6c2a3d151f6bd965b4fd486dd2e7b53519f1e5ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Rombauts?= Date: Sun, 24 Jul 2022 16:02:32 +0200 Subject: [PATCH 3/5] Update changelog --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1561d4f..1c40661 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -204,4 +204,7 @@ Version 3.x - 2022 - #335 from jagerman/older-macos-avoid-std-filesystem - #337 Add catkin configuration from ardabbour/master - #339 Allow specifying transaction behaviors DEFERRED, IMMEDIATE, and EXCLUSIVE from jjenkins278/transaction_behavior - +- #340 add HTML keywords and properly link up the links in docs/README.md from phoebe-leong/patch-1 +- #341 Install the package.xml file from ardabbour/patch-1 +- #352 add basic meson support from ninjaoflight/meson-support +- #349 Refactoring of Statement and Column classes from Kacperos155/refactoring-Statement&Column From 091726aa65a059004dcbda16095c58fd7fc8781c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Rombauts?= Date: Sun, 24 Jul 2022 16:03:45 +0200 Subject: [PATCH 4/5] Fix Statement unit tests still using long long & long long api have been replaced by int32_t and int64_t types TODO: we need to continue cleanup APIs to remove all long from the codebase before we can release a new version --- tests/Statement_test.cpp | 55 +++++++++++++++------------------------- 1 file changed, 20 insertions(+), 35 deletions(-) diff --git a/tests/Statement_test.cpp b/tests/Statement_test.cpp index 8a79a18..cbf578f 100644 --- a/tests/Statement_test.cpp +++ b/tests/Statement_test.cpp @@ -167,7 +167,7 @@ TEST(Statement, executeStep) const int64_t id = query.getColumn(0); const std::string msg = query.getColumn(1); const int integer = query.getColumn(2); - const long integer2= query.getColumn(2); + const int64_t integer2= query.getColumn(2); const double real = query.getColumn(3); EXPECT_EQ(1, id); EXPECT_EQ("first", msg); @@ -220,7 +220,7 @@ TEST(Statement, tryExecuteStep) const int64_t id = query.getColumn(0); const std::string msg = query.getColumn(1); const int integer = query.getColumn(2); - const long integer2= query.getColumn(2); + const int64_t integer2= query.getColumn(2); const double real = query.getColumn(3); EXPECT_EQ(1, id); EXPECT_EQ("first", msg); @@ -327,7 +327,7 @@ TEST(Statement, bindings) // Fourth row with string/int64/float { const std::string fourth("fourth"); - const long long int64 = 12345678900000LL; + const int64_t int64 = 12345678900000LL; const float float32 = 0.234f; insert.bind(1, fourth); insert.bind(2, int64); @@ -370,10 +370,10 @@ TEST(Statement, bindings) // reset() without clearbindings() insert.reset(); - // Sixth row with uint32_t unsigned value and a long value (which is either a 32b int or a 64b long long) + // Sixth row with uint32_t unsigned value and a long value (which is either a 32b int or a 64b int64_t) { const uint32_t uint32 = 4294967295U; - const long integer = -123; + const int64_t integer = -123; insert.bind(2, uint32); insert.bind(3, integer); EXPECT_EQ(1, insert.exec()); @@ -455,11 +455,11 @@ TEST(Statement, bindByName) EXPECT_EQ(SQLite::OK, db.getErrorCode()); // Create a new table - EXPECT_EQ(0, db.exec("CREATE TABLE test (id INTEGER PRIMARY KEY, msg TEXT, int INTEGER, double REAL, long INTEGER)")); + EXPECT_EQ(0, db.exec("CREATE TABLE test (id INTEGER PRIMARY KEY, msg TEXT, int INTEGER, long INTEGER, double REAL)")); EXPECT_EQ(SQLite::OK, db.getErrorCode()); // Insertion with bindable parameters - SQLite::Statement insert(db, "INSERT INTO test VALUES (NULL, @msg, @int, @double, @long)"); + SQLite::Statement insert(db, "INSERT INTO test VALUES (NULL, @msg, @int, @long, @double)"); // First row with text/int/double insert.bind("@msg", "first"); @@ -481,8 +481,8 @@ TEST(Statement, bindByName) EXPECT_EQ (1, query.getColumn(0).getInt64()); EXPECT_STREQ("first", query.getColumn(1).getText()); EXPECT_EQ (123, query.getColumn(2).getInt()); - EXPECT_EQ (0.123, query.getColumn(3).getDouble()); - EXPECT_EQ (-123, query.getColumn(4).getInt()); + EXPECT_EQ (-123, query.getColumn(3).getInt()); + EXPECT_EQ (0.123, query.getColumn(4).getDouble()); // reset() with clearbindings() and new bindings insert.reset(); @@ -491,13 +491,13 @@ TEST(Statement, bindByName) // Second row with string/int64/float { const std::string second("second"); - const long long int64 = 12345678900000LL; - const long integer = -123; + const int32_t int32 = -123; + const int64_t int64 = 12345678900000LL; const float float32 = 0.234f; insert.bind("@msg", second); - insert.bind("@int", int64); + insert.bind("@int", int32); + insert.bind("@long", int64); insert.bind("@double", float32); - insert.bind("@long", integer); EXPECT_EQ(1, insert.exec()); EXPECT_EQ(SQLITE_DONE, db.getErrorCode()); @@ -507,9 +507,9 @@ TEST(Statement, bindByName) EXPECT_FALSE(query.isDone()); EXPECT_EQ(2, query.getColumn(0).getInt64()); EXPECT_EQ(second, query.getColumn(1).getText()); - EXPECT_EQ(12345678900000LL, query.getColumn(2).getInt64()); - EXPECT_EQ(0.234f, query.getColumn(3).getDouble()); - EXPECT_EQ(-123, query.getColumn(4).getInt()); + EXPECT_EQ(-123, query.getColumn(2).getInt()); + EXPECT_EQ(12345678900000LL, query.getColumn(3).getInt64()); + EXPECT_EQ(0.234f, query.getColumn(4).getDouble()); } // reset() without clearbindings() @@ -530,7 +530,7 @@ TEST(Statement, bindByName) EXPECT_STREQ(buffer, query.getColumn(1).getText()); EXPECT_TRUE (query.isColumnNull(2)); EXPECT_EQ(0, query.getColumn(2).getInt()); - EXPECT_EQ(0.234f, query.getColumn(3).getDouble()); + EXPECT_EQ(0.234f, query.getColumn(4).getDouble()); } // reset() without clearbindings() @@ -551,7 +551,7 @@ TEST(Statement, bindByName) EXPECT_FALSE(query.isDone()); EXPECT_EQ(4, query.getColumn(0).getInt64()); EXPECT_EQ(4294967295U, query.getColumn(2).getUInt()); - EXPECT_EQ(12345678900000LL, query.getColumn(4).getInt64()); + EXPECT_EQ(12345678900000LL, query.getColumn(3).getInt64()); } } @@ -604,8 +604,8 @@ TEST(Statement, bindByNameString) // Second row with string/int64/float { const std::string second("second"); - const long long int64 = 12345678900000LL; - const long integer = -123; + const int64_t int64 = 12345678900000LL; + const int64_t integer = -123; const float float32 = 0.234f; insert.bind(amsg, second); insert.bind(aint, int64); @@ -1010,21 +1010,6 @@ TEST(Statement, getColumns) } #endif -#if (LONG_MAX > INT_MAX) // sizeof(long)==8 means the data model of the system is LP64 (64bits Linux) -TEST(Statement, bind64bitsLong) -{ - // Create a new database - SQLite::Database db(":memory:", SQLite::OPEN_READWRITE|SQLite::OPEN_CREATE); - EXPECT_EQ(SQLite::OK, db.getErrorCode()); - EXPECT_EQ(SQLite::OK, db.getExtendedErrorCode()); - - SQLite::Statement query(db, "SELECT ?"); - query.bind(1, 4294967297L); - query.executeStep(); - EXPECT_EQ(4294967297L, query.getColumn(0).getInt64()); -} -#endif - TEST(Statement, getBindParameterCount) { // Create a new database From 7d8b69e797f3fbfdf60a0de876394da1220042d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Rombauts?= Date: Sun, 24 Jul 2022 18:28:25 +0200 Subject: [PATCH 5/5] Remove extra {} in declaration --- include/SQLiteCpp/Statement.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/SQLiteCpp/Statement.h b/include/SQLiteCpp/Statement.h index c81e215..692fa69 100644 --- a/include/SQLiteCpp/Statement.h +++ b/include/SQLiteCpp/Statement.h @@ -707,7 +707,7 @@ private: bool mbDone{false}; //!< true when the last executeStep() had no more row to fetch /// Map of columns index by name (mutable so getColumnIndex can be const) - mutable std::map mColumnNames{}; + mutable std::map mColumnNames; };