1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2026-05-06 21:04:14 +02:00

PG: Функция отключения соединений

This commit is contained in:
Anton Titovets
2025-02-14 23:16:56 +03:00
parent dc12658f00
commit f978ac1274
6 changed files with 6837 additions and 6572 deletions
+6509 -6504
View File
File diff suppressed because it is too large Load Diff
+58 -33
View File
@@ -232,6 +232,31 @@
КонецФункции
// Отключить все соединения базы данных
// Завершает все соединения к базе данных кроме текущего
//
// Параметры:
// База - Строка - Имя базы - base
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Результат выполнения запроса
Функция ОтключитьВсеСоединенияБазыДанных(Знач База, Знач Соединение = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
ТекстSQL = "SELECT pg_terminate_backend(pid)
|FROM pg_stat_activity
|WHERE datname = '%1' AND pid <> pg_backend_pid();";
ТекстSQL = СтрШаблон(ТекстSQL, База);
Результат = ВыполнитьЗапросSQL(ТекстSQL, , , Соединение);
Возврат Результат;
КонецФункции
// Получить информацию о таблице
// Получает информацию о таблице
//
@@ -245,7 +270,7 @@
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
ТекстSQL = "SELECT column_name, data_type, character_maximum_length
ТекстSQL = "SELECT column_name, data_type, character_maximum_length
|FROM information_schema.columns
|WHERE table_name = '%1';";
@@ -274,6 +299,38 @@
КонецФункции
// Очистить таблицу
// Очищает таблицу базы
//
// Параметры:
// Таблица - Строка - Имя таблицы - table
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
//
// Возвращаемое значение:
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
Функция ОчиститьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт
Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_PostgreSQL, Таблица, , Соединение);
Возврат Результат;
КонецФункции
// Удалить таблицу
// Удаляет таблицу из базы
//
// Параметры:
// Таблица - Строка - Имя таблицы - table
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
//
// Возвращаемое значение:
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
Функция УдалитьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт
Результат = OPI_ЗапросыSQL.УдалитьТаблицу(OPI_PostgreSQL, Таблица, Соединение);
Возврат Результат;
КонецФункции
// Добавить записи
// Добавляет записи в таблицу
//
@@ -358,38 +415,6 @@
КонецФункции
// Удалить таблицу
// Удаляет таблицу из базы
//
// Параметры:
// Таблица - Строка - Имя таблицы - table
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
//
// Возвращаемое значение:
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
Функция УдалитьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт
Результат = OPI_ЗапросыSQL.УдалитьТаблицу(OPI_PostgreSQL, Таблица, Соединение);
Возврат Результат;
КонецФункции
// Очистить таблицу
// Очищает таблицу базы
//
// Параметры:
// Таблица - Строка - Имя таблицы - table
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
//
// Возвращаемое значение:
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
Функция ОчиститьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт
Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_PostgreSQL, Таблица, , Соединение);
Возврат Результат;
КонецФункции
// Получить структуру фильтра записей
// Получает структуру шаблон для фильтрации записей в запросах ORM
//
+105
View File
@@ -2340,9 +2340,12 @@
PostgreSQL_ПолучитьИнформациюОТаблице(ПараметрыТеста);
PostgreSQL_ДобавитьЗаписи(ПараметрыТеста);
PostgreSQL_ПолучитьЗаписи(ПараметрыТеста);
PostgreSQL_ОбновитьЗаписи(ПараметрыТеста);
PostgreSQL_ОчиститьТаблицу(ПараметрыТеста);
PostgreSQL_УдалитьТаблицу(ПараметрыТеста);
PostgreSQL_ОтключитьВсеСоединенияБазыДанных(ПараметрыТеста);
PostgreSQL_УдалитьБазуДанных(ПараметрыТеста);
PostgreSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста);
КонецПроцедуры
@@ -17641,6 +17644,10 @@
Пароль = ПараметрыФункции["PG_Password"];
База = "testbase1";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
@@ -17760,6 +17767,57 @@
КонецПроцедуры
Процедура PostgreSQL_ОбновитьЗаписи(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "bayselonarrend";
Пароль = ПараметрыФункции["PG_Password"];
База = "testbase1";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
СтруктураПолей = Новый Структура;
СтруктураПолей.Вставить("bool_field" , Новый Структура("BOOL" , Ложь));
СтруктураПолей.Вставить("oldchar_field" , Новый Структура("OLDCHAR" , 2));
СтруктураПолей.Вставить("smallint_field" , Новый Структура("SMALLINT" , 10));
СтруктураПолей.Вставить("smallserial_field", Новый Структура("SMALLSERIAL" , 10));
Фильтры = Новый Массив;
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("field", "oid_field");
СтруктураФильтра.Вставить("type" , "=");
СтруктураФильтра.Вставить("value", Новый Структура("OID", 24576));
СтруктураФильтра.Вставить("raw" , Ложь);
Фильтры.Добавить(СтруктураФильтра);
Результат = OPI_PostgreSQl.ОбновитьЗаписи(Таблица, СтруктураПолей, СтруктураФильтра, СтрокаПодключения);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОбновитьЗаписи", "PostgreSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Проверка = OPI_PostgreSQl.ПолучитьЗаписи(Таблица
, "['bool_field'
|,'smallserial_field'
|, 'smallint_field']"
, Фильтры, , , СтрокаПодключения);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Проверка, "ОбновитьЗаписи (проверка)", "PostgreSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Проверка);
OPI_ПолучениеДанныхТестов.Проверка_SQLiteЗначенияПолей(Проверка["data"][0], СтруктураПолей);
КонецПроцедуры
Процедура PostgreSQL_УдалитьТаблицу(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
@@ -17812,6 +17870,11 @@
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Подключение, "УдалитьБазуДанных (открытие)", "PostgreSQL");
OPI_ПолучениеДанныхТестов.Проверка_Компонента(Подключение, "AddIn.OPI_PostgreSQL.Main");
Результат = OPI_PostgreSQL.ОтключитьВсеСоединенияБазыДанных(База, Подключение);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБазуДанных (отключение)", "PostgreSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_PostgreSQL.УдалитьБазуДанных(База, Подключение);
@@ -17865,6 +17928,48 @@
КонецПроцедуры
Процедура PostgreSQL_ОтключитьВсеСоединенияБазыДанных(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "bayselonarrend";
Пароль = ПараметрыФункции["PG_Password"];
База = "testbase1";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Результат = OPI_PostgreSQL.ОтключитьВсеСоединенияБазыДанных(База, СтрокаПодключения);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтключитьВсеСоединенияБазыДанных", "PostgreSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
КонецПроцедуры
Процедура PostgreSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции)
Результат = OPI_PostgreSQL.ПолучитьСтруктуруФильтраЗаписей();
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСтруктуруФильтраЗаписей", "PostgreSQL");
OPI_ПолучениеДанныхТестов.Проверка_Структура(Результат);
Результат = OPI_PostgreSQL.ПолучитьСтруктуруФильтраЗаписей(Истина);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСтруктуруФильтраЗаписей (пустая)", "PostgreSQL");
Для Каждого Элемент Из Результат Цикл
OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@@ -2155,9 +2155,9 @@
КонецФункции
Функция ПолучитьОбщийМодуль(Знач Имя)
Модуль = Вычислить(Имя);
Возврат Модуль;
КонецФункции
@@ -232,6 +232,31 @@
КонецФункции
// Отключить все соединения базы данных
// Завершает все соединения к базе данных кроме текущего
//
// Параметры:
// База - Строка - Имя базы - base
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
//
// Возвращаемое значение:
// Структура Из КлючИЗначение - Результат выполнения запроса
Функция ОтключитьВсеСоединенияБазыДанных(Знач База, Знач Соединение = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(База);
ТекстSQL = "SELECT pg_terminate_backend(pid)
|FROM pg_stat_activity
|WHERE datname = '%1' AND pid <> pg_backend_pid();";
ТекстSQL = СтрШаблон(ТекстSQL, База);
Результат = ВыполнитьЗапросSQL(ТекстSQL, , , Соединение);
Возврат Результат;
КонецФункции
// Получить информацию о таблице
// Получает информацию о таблице
//
@@ -245,7 +270,7 @@
OPI_ПреобразованиеТипов.ПолучитьСтроку(Таблица);
ТекстSQL = "SELECT column_name, data_type, character_maximum_length
ТекстSQL = "SELECT column_name, data_type, character_maximum_length
|FROM information_schema.columns
|WHERE table_name = '%1';";
@@ -274,6 +299,38 @@
КонецФункции
// Очистить таблицу
// Очищает таблицу базы
//
// Параметры:
// Таблица - Строка - Имя таблицы - table
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
//
// Возвращаемое значение:
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
Функция ОчиститьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт
Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_PostgreSQL, Таблица, , Соединение);
Возврат Результат;
КонецФункции
// Удалить таблицу
// Удаляет таблицу из базы
//
// Параметры:
// Таблица - Строка - Имя таблицы - table
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
//
// Возвращаемое значение:
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
Функция УдалитьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт
Результат = OPI_ЗапросыSQL.УдалитьТаблицу(OPI_PostgreSQL, Таблица, Соединение);
Возврат Результат;
КонецФункции
// Добавить записи
// Добавляет записи в таблицу
//
@@ -358,38 +415,6 @@
КонецФункции
// Удалить таблицу
// Удаляет таблицу из базы
//
// Параметры:
// Таблица - Строка - Имя таблицы - table
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
//
// Возвращаемое значение:
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
Функция УдалитьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт
Результат = OPI_ЗапросыSQL.УдалитьТаблицу(OPI_PostgreSQL, Таблица, Соединение);
Возврат Результат;
КонецФункции
// Очистить таблицу
// Очищает таблицу базы
//
// Параметры:
// Таблица - Строка - Имя таблицы - table
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
//
// Возвращаемое значение:
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
Функция ОчиститьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт
Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_PostgreSQL, Таблица, , Соединение);
Возврат Результат;
КонецФункции
// Получить структуру фильтра записей
// Получает структуру шаблон для фильтрации записей в запросах ORM
//
+105
View File
@@ -2340,9 +2340,12 @@
PostgreSQL_ПолучитьИнформациюОТаблице(ПараметрыТеста);
PostgreSQL_ДобавитьЗаписи(ПараметрыТеста);
PostgreSQL_ПолучитьЗаписи(ПараметрыТеста);
PostgreSQL_ОбновитьЗаписи(ПараметрыТеста);
PostgreSQL_ОчиститьТаблицу(ПараметрыТеста);
PostgreSQL_УдалитьТаблицу(ПараметрыТеста);
PostgreSQL_ОтключитьВсеСоединенияБазыДанных(ПараметрыТеста);
PostgreSQL_УдалитьБазуДанных(ПараметрыТеста);
PostgreSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста);
КонецПроцедуры
@@ -17641,6 +17644,10 @@
Пароль = ПараметрыФункции["PG_Password"];
База = "testbase1";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
@@ -17760,6 +17767,57 @@
КонецПроцедуры
Процедура PostgreSQL_ОбновитьЗаписи(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "bayselonarrend";
Пароль = ПараметрыФункции["PG_Password"];
База = "testbase1";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
СтруктураПолей = Новый Структура;
СтруктураПолей.Вставить("bool_field" , Новый Структура("BOOL" , Ложь));
СтруктураПолей.Вставить("oldchar_field" , Новый Структура("OLDCHAR" , 2));
СтруктураПолей.Вставить("smallint_field" , Новый Структура("SMALLINT" , 10));
СтруктураПолей.Вставить("smallserial_field", Новый Структура("SMALLSERIAL" , 10));
Фильтры = Новый Массив;
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("field", "oid_field");
СтруктураФильтра.Вставить("type" , "=");
СтруктураФильтра.Вставить("value", Новый Структура("OID", 24576));
СтруктураФильтра.Вставить("raw" , Ложь);
Фильтры.Добавить(СтруктураФильтра);
Результат = OPI_PostgreSQl.ОбновитьЗаписи(Таблица, СтруктураПолей, СтруктураФильтра, СтрокаПодключения);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОбновитьЗаписи", "PostgreSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Проверка = OPI_PostgreSQl.ПолучитьЗаписи(Таблица
, "['bool_field'
|,'smallserial_field'
|, 'smallint_field']"
, Фильтры, , , СтрокаПодключения);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Проверка, "ОбновитьЗаписи (проверка)", "PostgreSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Проверка);
OPI_ПолучениеДанныхТестов.Проверка_SQLiteЗначенияПолей(Проверка["data"][0], СтруктураПолей);
КонецПроцедуры
Процедура PostgreSQL_УдалитьТаблицу(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
@@ -17812,6 +17870,11 @@
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Подключение, "УдалитьБазуДанных (открытие)", "PostgreSQL");
OPI_ПолучениеДанныхТестов.Проверка_Компонента(Подключение, "AddIn.OPI_PostgreSQL.Main");
Результат = OPI_PostgreSQL.ОтключитьВсеСоединенияБазыДанных(База, Подключение);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБазуДанных (отключение)", "PostgreSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_PostgreSQL.УдалитьБазуДанных(База, Подключение);
@@ -17865,6 +17928,48 @@
КонецПроцедуры
Процедура PostgreSQL_ОтключитьВсеСоединенияБазыДанных(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "bayselonarrend";
Пароль = ПараметрыФункции["PG_Password"];
База = "testbase1";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Результат = OPI_PostgreSQL.ОтключитьВсеСоединенияБазыДанных(База, СтрокаПодключения);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтключитьВсеСоединенияБазыДанных", "PostgreSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
КонецПроцедуры
Процедура PostgreSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции)
Результат = OPI_PostgreSQL.ПолучитьСтруктуруФильтраЗаписей();
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСтруктуруФильтраЗаписей", "PostgreSQL");
OPI_ПолучениеДанныхТестов.Проверка_Структура(Результат);
Результат = OPI_PostgreSQL.ПолучитьСтруктуруФильтраЗаписей(Истина);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСтруктуруФильтраЗаписей (пустая)", "PostgreSQL");
Для Каждого Элемент Из Результат Цикл
OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#КонецОбласти