1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-08-10 22:41:43 +02:00

PG: Пересборка под двоичные данные

This commit is contained in:
Anton Titovets
2025-08-08 08:50:13 +03:00
parent 3779e799ba
commit 8c6fe5737a
8 changed files with 20 additions and 16 deletions

View File

@@ -1,12 +1,12 @@
"MAIN ---"
linux-vdso.so.1 (0x00007ffd7fb79000)
libssl.so.3 => /lib64/libssl.so.3 (0x0000740872000000)
libcrypto.so.3 => /lib64/libcrypto.so.3 (0x0000740871800000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000740871400000)
libc.so.6 => /lib64/libc.so.6 (0x0000740871000000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000740870c00000)
/lib64/ld-linux-x86-64.so.2 (0x0000740872600000)
libz.so.1 => /lib64/libz.so.1 (0x0000740870800000)
linux-vdso.so.1 (0x00007ffeea6d2000)
libssl.so.3 => /lib64/libssl.so.3 (0x00007c2606a00000)
libcrypto.so.3 => /lib64/libcrypto.so.3 (0x00007c2606200000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007c2605e00000)
libc.so.6 => /lib64/libc.so.6 (0x00007c2605a00000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007c2605600000)
/lib64/ld-linux-x86-64.so.2 (0x00007c2607000000)
libz.so.1 => /lib64/libz.so.1 (0x00007c2605200000)
GLIBC_2.2.5
GLIBC_2.12
GLIBC_2.3

View File

@@ -13,7 +13,7 @@ pub fn execute_query(
query: String,
params_json: String,
force_result: bool,
) -> String {
) -> Vec<u8> {
let client_arc = match add_in.get_connection() {
Some(c) => c,
@@ -41,13 +41,13 @@ pub fn execute_query(
if query.trim_start().to_uppercase().starts_with("SELECT") || force_result {
match client.query(&query, &params_unboxed) {
Ok(rows) => {
rows_to_json(rows)
rows_to_json(rows).into_bytes()
}
Err(e) => format_json_error(&e.to_string()),
}
} else {
match client.execute(&query, &params_unboxed.as_slice()) {
Ok(_) => json!({"result": true}).to_string(),
Ok(_) => json!({"result": true}).to_string().into_bytes(),
Err(e) => format_json_error(&e.to_string()),
}
}
@@ -326,12 +326,12 @@ fn process_sql_value(column_name: &str, column_type: &str, row: &postgres::Row)
Ok(value)
}
fn format_json_error(error: &str) -> String {
fn format_json_error(error: &str) -> Vec<u8> {
json!({
"result": false,
"error": error
})
.to_string()
.to_string().into_bytes()
}
fn parse_date(input: &str) -> Result<NaiveDateTime, String> {

View File

@@ -41,8 +41,8 @@ pub fn cal_func(obj: &mut AddIn, num: usize, params: &mut [Variant]) -> Box<dyn
1 => Box::new(obj.close_connection()),
2 => {
let query = params[0].get_string().unwrap_or("".to_string());
let params_json = params[1].get_string().unwrap_or("".to_string());
let query = String::from_utf8_lossy(params[0].get_blob().unwrap_or(&[])).to_string();
let params_json = String::from_utf8_lossy(params[1].get_blob().unwrap_or(&[])).to_string();
let force_result = params[2].get_bool().unwrap_or(false);
Box::new(methods::execute_query(obj, query, params_json, force_result))

Binary file not shown.

Binary file not shown.

View File

@@ -150,6 +150,9 @@
Параметры_ = ОбработатьПараметры(Параметры);
ТекстЗапроса = ПолучитьДвоичныеДанныеИзСтроки(ТекстЗапроса);
Параметры_ = ПолучитьДвоичныеДанныеИзСтроки(Параметры_);
Если ЭтоКоннектор(Соединение) Тогда
ЗакрыватьСоединение = Ложь;
Коннектор = Соединение;
@@ -163,6 +166,7 @@
КонецЕсли;
Результат = Коннектор.Execute(ТекстЗапроса, Параметры_, ФорсироватьРезультат);
Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат);
Если ЗакрыватьСоединение Тогда
ЗакрытьСоединение(Коннектор);