From 6e4577365e162880e39af96fa7251bf919be6c34 Mon Sep 17 00:00:00 2001 From: Orefkov Aleksander Date: Sat, 15 Oct 2022 11:59:27 +0300 Subject: [PATCH] =?UTF-8?q?-=20=D0=9F=D1=80=D0=B8=20=D0=B2=D1=8B=D0=B3?= =?UTF-8?q?=D1=80=D1=83=D0=B7=D0=BA=D0=B5=20=D0=B2=20=D0=A2=D0=97=20=D0=B8?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=B0=20=D0=BA=D0=BE=D0=BB=D0=BE=D0=BD=D0=BE?= =?UTF-8?q?=D0=BA=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=8E=D1=82=D1=81=D1=8F=20?= =?UTF-8?q?=D0=BA=D0=B0=D0=BA=20=D0=B5=D1=81=D1=82=D1=8C,=20=D0=B1=D0=B5?= =?UTF-8?q?=D0=B7=20=D0=B7=D0=B0=D0=BC=D0=B5=D0=BD=D1=8B=20=D1=81=D0=B8?= =?UTF-8?q?=D0=BC=D0=B2=D0=BE=D0=BB=D0=BE=D0=B2.=20-=20=D0=A3=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D1=8B=20=D0=B2=D0=BE=D1=80=D0=BD?= =?UTF-8?q?=D0=B8=D0=BD=D0=B3=D0=B8=20=D0=B2=20MSVC=20x64.=20-=20=D0=9E?= =?UTF-8?q?=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D1=91=D0=BD=20=D0=BD=D0=BE=D0=BC?= =?UTF-8?q?=D0=B5=D1=80=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8.=20-=20?= =?UTF-8?q?=D0=90=D0=BA=D1=82=D1=83=D0=B0=D0=BB=D0=B8=D0=B7=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D1=8B=20=D1=82=D0=B5=D1=81=D1=82=D1=8B?= =?UTF-8?q?=20=D0=B2=201=D0=A1.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 2 +- readme.md | 13 ++++++------- src/sqlite.cpp | 2 +- src/tests/v8sqlite.epf | Bin 8419 -> 8443 bytes src/v8sqlite_addin.cpp | 25 ++++++++++--------------- src/v8sqlite_addin.h | 2 +- src/version.h | 4 ++-- 7 files changed, 21 insertions(+), 27 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c356280..382df5d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,7 @@ if (WIN32) # Одинаковые флаги для компиляторов MSVC и clang-cl в релизной конфигурации set (V8SQLITE_CXX_FLAGS_RELEASE "/O2 /GS- /DNDEBUG" CACHE STRING "") # Одинаковые флаги для компиляторов MSVC и clang-cl в отладочной конфигурации - set (V8SQLITE_CXX_FLAGS_DEBUG "/Zi /Ob0 /Od /RTC1" CACHE STRING "") + set (V8SQLITE_CXX_FLAGS_DEBUG "/Zi /Ob0 /Od /D_DEBUG /RTC1" CACHE STRING "") # Флаги только для компилятора MSVC в релизной конфигурации set (V8SQLITE_CXX_MSVC_RELEASE "/GL" CACHE STRING "") # Флаги только для компилятора MSVC в отладочной конфигурации diff --git a/readme.md b/readme.md index bfd1db5..7ff5660 100644 --- a/readme.md +++ b/readme.md @@ -47,23 +47,23 @@ ``` Функция ПодключитьВК() - + ПутьКВК = КаталогПрограммы(); СистемнаяИнформация = Новый СистемнаяИнформация; - + Если СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86 или СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда ПутьКВК = ПутьКВК + "v8sqlite.dll"; ИначеЕсли СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86_64 Тогда ПутьКВК = ПутьКВК + "libv8sqlite.so"; КонецЕсли; - + Если не ПодключитьВнешнююКомпоненту(ПутьКВК, "v8sqlite", ТипВнешнейКомпоненты.Native) Тогда Предупреждение("Не удалось подключить внешнюю компоненту " + ПутьКВК); Возврат Ложь; КонецЕсли; Возврат Истина; - + КонецФункции // ПодключитьВК() ``` @@ -220,7 +220,7 @@ база.ПодготовитьЗапрос("Запрос1", " |select * from test where a = @p1 |"); - + ... база.УстановитьПараметр("Запрос1", "@p1", 1); @@ -248,8 +248,7 @@ Возвращаемая строка зависит от указанного при вызове метода формате. Для формата "ТаблицаЗначений" - выдаётся строка, которая методом `ЗначениеИзСтрокиВнутр` преобразуется -в Таблицу значений. Названия колонок запроса становятся идентификатороми и заголовками колонок -таблицы значений. Невалидные для идентификатора символы заменяются на `_`, заголовки остаются как есть. +в Таблицу значений. Названия колонок запроса становятся именем и заголовком колонок таблицы значений. Для формата "JSON" возвращается строка, которая через XDTO преобразуется в массив. Элементы массива - тоже массивы, строки результата запроса. diff --git a/src/sqlite.cpp b/src/sqlite.cpp index 7374bb6..ed1e0fb 100644 --- a/src/sqlite.cpp +++ b/src/sqlite.cpp @@ -29,7 +29,7 @@ int SqliteBase::exec(stru query) { SqliteQuery SqliteBase::prepare(stru query) { sqlite3_stmt* stmt = nullptr; if (db_) { - sqlite3_prepare16_v3(db_, (void*)query.str, query.len * 2, 0, &stmt, nullptr); + sqlite3_prepare16_v3(db_, (void*)query.str, (int)query.length() * 2, 0, &stmt, nullptr); } return SqliteQuery(stmt); } diff --git a/src/tests/v8sqlite.epf b/src/tests/v8sqlite.epf index a72df4c8fd8ff219c71ce27f3bf6ed7d54fe47d8..a038ba2cec695307ef853e0c5952945e0bc772cd 100644 GIT binary patch delta 5065 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 bC*nm7MsQIrnfJDAG<{Lmx;rCJOWXJt^Z0^4 delta 5053 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 TXDsNsecond; - int paramNum = params[1].vt == VTYPE_PWSTR ? - sqlite3_bind_parameter_index(query, lstringa<100>{varToTextU(params[1])}) - : getInteger(params[1]); + int paramNum = + params[1].vt == VTYPE_PWSTR ? sqlite3_bind_parameter_index(query, lstringa<100>{varToTextU(params[1])}) : getInteger(params[1]); if (!paramNum || paramNum > sqlite3_bind_parameter_count(query)) { return error(u"Неверный параметр запроса", u"Bad query param"); @@ -189,16 +188,12 @@ struct ValueTableReceiver : ToTextReceiver { void addColumnName(ssu name) { checkColumnForDates(name); - lstringu<200> idName{name}; - - bool first = true; - for (u16symbol *ptr = idName.str(), *end = ptr + idName.length(); ptr < end; ptr++) { - if (!(iswalpha(*ptr) || (!first && *ptr >= '0' && *ptr <= '9'))) { - *ptr = '_'; - } - first = false; + if (name.find('\"') != str_pos::badIdx) { + lstringu<200> idName{e_repl(name, u"\"", u"\"\"")}; + vtText << (eeu & u"{" & currentCol & u",\"" & idName & u"\",{\"Pattern\"},\"" & idName & u"\",0},"); + } else { + vtText << (eeu & u"{" & currentCol & u",\"" & name & u"\",{\"Pattern\"},\"" & name & u"\",0},"); } - vtText << (eeu & u"{" & currentCol & u",\"" & idName & u"\",{\"Pattern\"},\"" & e_repl(name, u"\"", u"\"\"") & u"\",0},"); currentCol++; } void addRow() { @@ -332,8 +327,8 @@ static bool execQuery(SqliteQuery& query, tVariant& retVal, hashStrMapUIU& return false; } if (receiver.colCount) { - retVal.vt = VTYPE_PWSTR; - retVal.wstrLen = (int)text.length(); + retVal.vt = VTYPE_PWSTR; + retVal.wstrLen = (int)text.length(); mm->AllocMemory((void**)&retVal.pwstrVal, (int)(text.length() + 1) * 2); *text.place(retVal.pwstrVal) = 0; @@ -361,7 +356,7 @@ bool V8SqliteAddin::ExecQuery(tVariant& retVal, tVariant* params, unsigned count if (params[2].vt != VTYPE_NULL) { if (params[2].vt == VTYPE_PWSTR) { auto vals = varToTextU(params[2]).splitf>(u",", [](ssu& t) { t = t.trimmed(); }); - for (const auto& v : vals) { + for (const auto& v: vals) { dates.emplace(v, 0); } } else { diff --git a/src/v8sqlite_addin.h b/src/v8sqlite_addin.h index e37764b..62ea84f 100644 --- a/src/v8sqlite_addin.h +++ b/src/v8sqlite_addin.h @@ -22,7 +22,7 @@ class V8SqliteAddin : public V8Addin { lstringu<40> v{ssa{P_VERSION}}; value.vt = VTYPE_PWSTR; value.pwstrVal = copyText(v); - value.wstrLen = v.length(); + value.wstrLen = (int)v.length(); return true; } diff --git a/src/version.h b/src/version.h index 3a85692..31165fd 100644 --- a/src/version.h +++ b/src/version.h @@ -1,3 +1,3 @@ -#define F_VERSION 1,0,0,3 -#define P_VERSION "1.0.0.3" +#define F_VERSION 1,0,0,4 +#define P_VERSION "1.0.0.4"