Skip to content

Commit

Permalink
- При выгрузке в ТЗ имена колонок задаются как есть, без замены симво…
Browse files Browse the repository at this point in the history
…лов.

- Устранены ворнинги в MSVC x64.
- Обновлён номер версии.
- Актуализированы тесты в 1С.
  • Loading branch information
orefkov committed Oct 15, 2022
1 parent c696e02 commit 6e45773
Show file tree
Hide file tree
Showing 7 changed files with 21 additions and 27 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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 в отладочной конфигурации
Expand Down
13 changes: 6 additions & 7 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,23 +47,23 @@

```
Функция ПодключитьВК()
ПутьКВК = КаталогПрограммы();
СистемнаяИнформация = Новый СистемнаяИнформация;
Если СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86 или СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда
ПутьКВК = ПутьКВК + "v8sqlite.dll";
ИначеЕсли СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86_64 Тогда
ПутьКВК = ПутьКВК + "libv8sqlite.so";
КонецЕсли;
Если не ПодключитьВнешнююКомпоненту(ПутьКВК, "v8sqlite", ТипВнешнейКомпоненты.Native) Тогда
Предупреждение("Не удалось подключить внешнюю компоненту " + ПутьКВК);
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции // ПодключитьВК()
```
Expand Down Expand Up @@ -220,7 +220,7 @@
база.ПодготовитьЗапрос("Запрос1", "
|select * from test where a = @p1
|");
...
база.УстановитьПараметр("Запрос1", "@p1", 1);
Expand Down Expand Up @@ -248,8 +248,7 @@

Возвращаемая строка зависит от указанного при вызове метода формате.
Для формата "ТаблицаЗначений" - выдаётся строка, которая методом `ЗначениеИзСтрокиВнутр` преобразуется
в Таблицу значений. Названия колонок запроса становятся идентификатороми и заголовками колонок
таблицы значений. Невалидные для идентификатора символы заменяются на `_`, заголовки остаются как есть.
в Таблицу значений. Названия колонок запроса становятся именем и заголовком колонок таблицы значений.

Для формата "JSON" возвращается строка, которая через XDTO преобразуется в массив.
Элементы массива - тоже массивы, строки результата запроса.
Expand Down
2 changes: 1 addition & 1 deletion src/sqlite.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
Binary file modified src/tests/v8sqlite.epf
Binary file not shown.
25 changes: 10 additions & 15 deletions src/v8sqlite_addin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,8 @@ bool V8SqliteAddin::BindParam(tVariant* params, unsigned count) {

SqliteQuery& query = find->second;

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");
Expand Down Expand Up @@ -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<u16symbol>(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<u16symbol>(name, u"\"", u"\"\"") & u"\",0},");
currentCol++;
}
void addRow() {
Expand Down Expand Up @@ -332,8 +327,8 @@ static bool execQuery(SqliteQuery& query, tVariant& retVal, hashStrMapUIU<int>&
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;
Expand Down Expand Up @@ -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<std::vector<ssu>>(u",", [](ssu& t) { t = t.trimmed(); });
for (const auto& v : vals) {
for (const auto& v: vals) {
dates.emplace(v, 0);
}
} else {
Expand Down
2 changes: 1 addition & 1 deletion src/v8sqlite_addin.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class V8SqliteAddin : public V8Addin<V8SqliteAddin> {
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;
}

Expand Down
4 changes: 2 additions & 2 deletions src/version.h
Original file line number Diff line number Diff line change
@@ -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"

0 comments on commit 6e45773

Please sign in to comment.