From 3b472e3cb62ec7621db34fcba417cd02323af120 Mon Sep 17 00:00:00 2001 From: Orefkov Aleksander Date: Wed, 5 Oct 2022 19:07:38 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D1=83=20=D0=B8=20=D1=82?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D1=8B=20=D0=BF=D0=BE=D0=B4=20Linux.=20=D0=9E?= =?UTF-8?q?=D0=BF=D1=82=D0=B8=D0=BC=D0=B8=D0=B7=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BB=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BB=D0=BE=D0=BD=D0=BE=D0=BA=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B5=D0=BE=D0=B1=D1=80=D0=B0=D0=B7=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=B0=D1=82=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 8 +++++++- CMakePresets.json | 10 +++++++++- src/tests/CMakeLists.txt | 2 +- src/tests/test_sqlite.cpp | 5 +++++ src/tests/v8sqlite.epf | Bin 11046 -> 11048 bytes src/v8sqlite_addin.cpp | 22 ++++++++++++---------- src/version.h | 4 ++-- 7 files changed, 36 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 401c614..c356280 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -85,10 +85,16 @@ elseif(UNIX) set (CMAKE_CXX_FLAGS "${V8SQLITE_CXX_CLANG_FLAGS}") set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${V8SQLITE_C_CLANG_FLAGS}") set (CMAKE_CXX_FLAGS_RELEASE "${V8SQLITE_CXX_CLANG_RELEASE}") - set (CMAKE_CXX_FLAGS_DEBUG "${V8SQLITE_CXX_CLANG_DEBUG}") + set (CMAKE_CXX_FLAGS_DEBUG "${V8SQLITE_CXX_CLANG_DEBUG} -g") set (CMAKE_C_FLAGS_RELEASE "${V8SQLITE_CXX_CLANG_RELEASE}") set (CMAKE_C_FLAGS_DEBUG "${V8SQLITE_CXX_FLAGS_DEBUG}") + if (CMAKE_BUILD_TYPE STREQUAL Debug) + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${V8SQLITE_CXX_CLANG_DEBUG}") + else () + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${V8SQLITE_CXX_CLANG_RELEASE}") + endif () + endif() # Set static runtime library diff --git a/CMakePresets.json b/CMakePresets.json index bcedd1b..29eb6b7 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -147,7 +147,15 @@ "vendor": { "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": { "sourceDir": "$env{HOME}/projects/$ms{projectDirName}", - "copySourcesOptions": { "exclusionList": [ ".vs", ".git", "out", "_build", "1C" ] } + "copySourcesOptions": { + "exclusionList": [ + ".vs", + ".git", + "out", + "_build", + "1C" + ] + } } } }, diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt index 8d8e4f0..16cfb01 100644 --- a/src/tests/CMakeLists.txt +++ b/src/tests/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_minimum_required (VERSION 3.15) add_executable(testv8sqlite test_addin_base.cpp ../addin_base.cpp test_sqlite.cpp ../sqlite.cpp ../sqlite3_unicode.c) target_include_directories(testv8sqlite PRIVATE "..") -add_compile_definitions(BUILD_TESTS) +add_compile_definitions(BUILD_TESTS SQLITE_CORE SQLITE_ENABLE_UNICODE) add_dependencies(testv8sqlite core_as_str) target_link_libraries(testv8sqlite sqlite3 core_as_str gtest_main) add_test(NAME testv8sqlite COMMAND testv8sqlite) diff --git a/src/tests/test_sqlite.cpp b/src/tests/test_sqlite.cpp index e439c6e..e4a4b12 100644 --- a/src/tests/test_sqlite.cpp +++ b/src/tests/test_sqlite.cpp @@ -24,7 +24,11 @@ TEST(Sqlite, CreateBase) { TEST(Sqlite, ErrorCreateBase) { SqliteBase base; +#ifdef _WIN32 EXPECT_FALSE(base.open(u"c:\\nul\\com")); +#else + EXPECT_FALSE(base.open(u"/sys")); +#endif EXPECT_EQ(base.lastError(), u"unable to open database file"); EXPECT_FALSE(base.isOpen()); } @@ -101,6 +105,7 @@ struct SimpleResultReceiver { value& operator=(value other) { this->~value(); new (this) value(std::move(other)); + return *this; } stringa& blob() { diff --git a/src/tests/v8sqlite.epf b/src/tests/v8sqlite.epf index a913564321bcc76e55bc0298f2301562523243f5..ef0ff82e5bf12a43c326930f1dca77161f499fe1 100644 GIT binary patch delta 4423 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 vtText; - hashStrMapUIU datesColumns; - std::unordered_set dates; + hashStrMapUIU& datesColumns; + std::vector dates; unsigned currentCol{0}; unsigned colCount{0}; int error{0}; + void doSetColCount(unsigned cc) { + colCount = cc; + dates.resize(colCount, 0); + } + void checkColumnForDates(ssu colName) { if (datesColumns.find(colName) != datesColumns.end()) { - dates.insert(currentCol); + dates[currentCol] = 1; } } @@ -172,7 +177,7 @@ struct ValueTableReceiver : ToTextReceiver { unsigned startOfRowCount = 0; void setColumnCount(unsigned cc) { - colCount = cc; + doSetColCount(cc); vtText << (eeu & u"{\"#\",acf6192e-81ca-46ef-93a6-5a6968b78663,{9,{" & cc & u","); } @@ -220,7 +225,7 @@ struct ValueTableReceiver : ToTextReceiver { currentCol++; } void addText(ssu v) { - if (dates.size() && dates.contains(currentCol) && v.len == 19) { + if (dates[currentCol] && v.len == 19) { vtText << (eeu & u"{\"D\"," & v(0, 4) & v(5, 2) & v(8, 2) & v(11, 2) & v(14, 2) & v(17, 2) & u"},"); } else { vtText << (eeu & u"{\"S\",\"" & e_repl(v, u"\"", u"\"\"") & u"\"},"); @@ -258,7 +263,7 @@ struct JsonReceiver : ToTextReceiver { void fixAnswer(WCHAR_T* answer) {} void setColumnCount(unsigned cc) { - colCount = cc; + doSetColCount(cc); vtText << uR"({"#type":"jv8:Array","#value":[{"#type":"jv8:Array","#value":[)"; } @@ -293,7 +298,7 @@ struct JsonReceiver : ToTextReceiver { addDelim(); } void addText(ssu v) { - if (dates.size() && dates.contains(currentCol) && v.len == 19) { + if (dates[currentCol] && v.len == 19) { vtText << (eeu & uR"({"#type":"jxs:dateTime","#value":")" & v(0, 10) & u'T' & v(11) & u"\"}"); } else { vtText << (eeu & uR"({"#type":"jxs:string","#value":")" & expr_json_str(v) & u"\"}"); @@ -383,9 +388,6 @@ bool V8SqliteAddin::ExecQuery(tVariant& retVal, tVariant* params, unsigned count } bool V8SqliteAddin::RemoveQuery(tVariant* params, unsigned count) { - if (!db_.isOpen()) { - return error(u"База данных не открыта", u"Database not opened"); - } if (params[0].vt != VTYPE_PWSTR) { return error(u"Первый параметр должен быть строкой", u"First param must be string"); } diff --git a/src/version.h b/src/version.h index 10ce51c..68bbf99 100644 --- a/src/version.h +++ b/src/version.h @@ -1,3 +1,3 @@ -#define F_VERSION 1,0,0,0 -#define P_VERSION "1.0.0.0" +#define F_VERSION 1,0,0,1 +#define P_VERSION "1.0.0.1" #define COPY_RIGHT " , 2022"