You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2026-04-30 20:49:04 +02:00
Main build (Jenkins)
This commit is contained in:
@@ -1 +1 @@
|
||||
07C4BB7AB731BEE83F841D7B9FCCBFE88AEA3E79ABE5F6C079001C2DBEC9A426
|
||||
020E99F2738A217F5BB9933180E87C96741C7679FB414458053C1635BA67A99A
|
||||
@@ -0,0 +1 @@
|
||||
{"URL":"http://localhost:9101","Login":"bayselonarrend","Password":"12we..."}
|
||||
@@ -0,0 +1 @@
|
||||
{"URL":"http://localhost:8123","Login":"bayselonarrend","Password":"12we..."}
|
||||
+34
-14
@@ -5,12 +5,14 @@
|
||||
|
||||
Authorization = New Structure(Login, Password);
|
||||
|
||||
// Connection creation
|
||||
|
||||
ConnectionSettings = OPI_ClickHouse.GetGRPCConnectionSettings(URL, Authorization);
|
||||
Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings);
|
||||
|
||||
// Request (simple)
|
||||
// Request via open connection (table creation)
|
||||
|
||||
QueryText = "CREATE TABLE events (
|
||||
QueryText = "CREATE TABLE IF NOT EXISTS events_grpc (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -22,9 +24,9 @@
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
// Request (with data)
|
||||
// Data insertion
|
||||
|
||||
QueryText = "INSERT INTO events FORMAT JSON";
|
||||
QueryText = "INSERT INTO events_grpc FORMAT JSON";
|
||||
|
||||
DataFormat = "JSON";
|
||||
DataArray = New Array;
|
||||
@@ -38,15 +40,7 @@
|
||||
Record1.Insert("event_type", "click");
|
||||
Record1.Insert("payload" , "{}");
|
||||
|
||||
Record2 = New Structure;
|
||||
Record2.Insert("id" , 2);
|
||||
Record2.Insert("timestamp" , CurrentDate);
|
||||
Record2.Insert("user_id" , 200);
|
||||
Record2.Insert("event_type", "hover");
|
||||
Record2.Insert("payload" , "{}");
|
||||
|
||||
DataArray.Add(Record1);
|
||||
DataArray.Add(Record2);
|
||||
|
||||
Meta = New Array;
|
||||
Meta.Add(New Structure("name,type", "id" , "UInt64"));
|
||||
@@ -56,8 +50,34 @@
|
||||
Meta.Add(New Structure("name,type", "payload" , "String"));
|
||||
|
||||
Data = New Structure("meta,data", Meta, DataArray);
|
||||
Database = "default";
|
||||
RequestID = String(New UUID());
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, Database, RequestID, Data, DataFormat);
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, "default", RequestID, Data, DataFormat);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
// Selection
|
||||
|
||||
SelectionText = "SELECT * FROM events_grpc";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(SelectionText, , , , "JSON");
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
// Request with external table via gRPC
|
||||
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("id" , "UInt64");
|
||||
ColoumnsStruct.Insert("name", "String");
|
||||
|
||||
Tab = Chars.Tab;
|
||||
TableData = "1" + Tab + "John
|
||||
|2" + Tab + "Jane";
|
||||
|
||||
ExternalTable = OPI_ClickHouse.GetExternalTableStructure("ext_grpc", ColoumnsStruct, TableData, "TSV");
|
||||
|
||||
ExternalTablesArray = New Array;
|
||||
ExternalTablesArray.Add(ExternalTable);
|
||||
|
||||
QueryText = "SELECT * FROM ext_grpc";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, , , , "JSON", ExternalTablesArray);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
+32
-3
@@ -9,9 +9,9 @@
|
||||
|
||||
Connection = OPI_ClickHouse.GetHTTPConnectionSettings(URL, Authorization);
|
||||
|
||||
// Request (simple)
|
||||
// Request (table creation)
|
||||
|
||||
QueryText = "CREATE TABLE events (
|
||||
QueryText = "CREATE TABLE IF NOT EXISTS events (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -23,7 +23,7 @@
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
// Request (with data)
|
||||
// Request (data insertion)
|
||||
|
||||
QueryText = "INSERT INTO events FORMAT JSON";
|
||||
|
||||
@@ -62,3 +62,32 @@
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, Database, RequestID, Data, DataFormat);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
// Request with external table
|
||||
|
||||
TableName = "ext_users";
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("id" , "UInt64");
|
||||
ColoumnsStruct.Insert("name", "String");
|
||||
|
||||
Tab = Chars.Tab;
|
||||
TableData = "1" + Tab + "John
|
||||
|2" + Tab + "Jane
|
||||
|3" + Tab + "Bob";
|
||||
|
||||
ExternalTable = OPI_ClickHouse.GetExternalTableStructure(TableName, ColoumnsStruct, TableData, "TSV");
|
||||
|
||||
ExternalTablesArray = New Array;
|
||||
ExternalTablesArray.Add(ExternalTable);
|
||||
|
||||
QueryText = "SELECT * FROM ext_users WHERE id > 1";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, , , , "JSON", ExternalTablesArray);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
// Selection
|
||||
|
||||
SelectionText = "SELECT * FROM events";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(SelectionText, , , , "JSON");
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
// Minimal structure
|
||||
|
||||
TableName = "external_data";
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("id" , "UInt64");
|
||||
ColoumnsStruct.Insert("name", "String");
|
||||
|
||||
Result = OPI_ClickHouse.GetExternalTableStructure(TableName, ColoumnsStruct);
|
||||
|
||||
// With TSV data
|
||||
|
||||
TableData = StrTemplate("1%1Test
|
||||
|2%2Test2", Chars.Tab);
|
||||
|
||||
Result = OPI_ClickHouse.GetExternalTableStructure(TableName, ColoumnsStruct, TableData, "TSV");
|
||||
@@ -0,0 +1,33 @@
|
||||
URL = "http://localhost:9101";
|
||||
|
||||
// No authorization
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL);
|
||||
|
||||
// With basic authorization
|
||||
|
||||
Login = "bayselonarrend";
|
||||
Password = "12we...";
|
||||
|
||||
Authorization = New Structure(Login, Password);
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL, Authorization);
|
||||
|
||||
// With JWT authorization
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL, JWT);
|
||||
|
||||
// With metadata
|
||||
|
||||
Meta = New Map;
|
||||
Meta.Insert("custom-meta", "value");
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL, Authorization, Meta);
|
||||
|
||||
// With TLS settings
|
||||
|
||||
Tls = OPI_ClickHouse.GetTlsSettings(True);
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL, Authorization, , Tls);
|
||||
@@ -0,0 +1,27 @@
|
||||
URL = "http://localhost:8123";
|
||||
|
||||
// No authorization
|
||||
|
||||
Result = OPI_ClickHouse.GetHTTPConnectionSettings(URL);
|
||||
|
||||
// With basic authorization
|
||||
|
||||
Login = "bayselonarrend";
|
||||
Password = "12we...";
|
||||
|
||||
Authorization = New Structure(Login, Password);
|
||||
|
||||
Result = OPI_ClickHouse.GetHTTPConnectionSettings(URL, Authorization);
|
||||
|
||||
// With JWT authorization
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Result = OPI_ClickHouse.GetHTTPConnectionSettings(URL, JWT);
|
||||
|
||||
// With additional headers
|
||||
|
||||
AdditionalHeaders = New Map;
|
||||
AdditionalHeaders.Insert("X-Custom-Header", "CustomValue");
|
||||
|
||||
Result = OPI_ClickHouse.GetHTTPConnectionSettings(URL, Authorization, AdditionalHeaders);
|
||||
@@ -0,0 +1,29 @@
|
||||
// Minimal request
|
||||
|
||||
QueryText = "SELECT 1";
|
||||
|
||||
Result = OPI_ClickHouse.GetRequestSettings(QueryText);
|
||||
|
||||
// Full request
|
||||
|
||||
RequestID = String(New UUID());
|
||||
Data = New Structure("meta,data", New Array, New Array);
|
||||
Database = "default";
|
||||
ResponseFormat = "CSV";
|
||||
|
||||
AdditionalSettings = New Map;
|
||||
AdditionalSettings.Insert("max_threads", "4");
|
||||
|
||||
ColoumnsStruct = New Structure("id,name", "UInt64", "String");
|
||||
ExternalTable = OPI_ClickHouse.GetExternalTableStructure("ext", ColoumnsStruct);
|
||||
|
||||
TableArray = New Array;
|
||||
TableArray.Add(ExternalTable);
|
||||
|
||||
Result = OPI_ClickHouse.GetRequestSettings(QueryText
|
||||
, Database
|
||||
, RequestID
|
||||
, Data
|
||||
, ResponseFormat
|
||||
, TableArray
|
||||
, AdditionalSettings);
|
||||
@@ -0,0 +1,5 @@
|
||||
SessionID = String(New UUID);
|
||||
Check = True;
|
||||
Timeout = 120;
|
||||
|
||||
Result = OPI_ClickHouse.GetSessionSettings(SessionID, Check, Timeout);
|
||||
@@ -0,0 +1 @@
|
||||
Result = OPI_ClickHouse.GetTlsSettings(False);
|
||||
+32
-3
@@ -37,9 +37,9 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
Connection = OPI_ClickHouse.GetHTTPConnectionSettings(URL, Authorization);
|
||||
|
||||
// Request (simple)
|
||||
// Request (table creation)
|
||||
|
||||
QueryText = "CREATE TABLE events (
|
||||
QueryText = "CREATE TABLE IF NOT EXISTS events (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -51,7 +51,7 @@ import TabItem from '@theme/TabItem';
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
// Request (with data)
|
||||
// Request (data insertion)
|
||||
|
||||
QueryText = "INSERT INTO events FORMAT JSON";
|
||||
|
||||
@@ -90,6 +90,35 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, Database, RequestID, Data, DataFormat);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
// Request with external table
|
||||
|
||||
TableName = "ext_users";
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("id" , "UInt64");
|
||||
ColoumnsStruct.Insert("name", "String");
|
||||
|
||||
Tab = Chars.Tab;
|
||||
TableData = "1" + Tab + "John
|
||||
|2" + Tab + "Jane
|
||||
|3" + Tab + "Bob";
|
||||
|
||||
ExternalTable = OPI_ClickHouse.GetExternalTableStructure(TableName, ColoumnsStruct, TableData, "TSV");
|
||||
|
||||
ExternalTablesArray = New Array;
|
||||
ExternalTablesArray.Add(ExternalTable);
|
||||
|
||||
QueryText = "SELECT * FROM ext_users WHERE id > 1";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, , , , "JSON", ExternalTablesArray);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
// Selection
|
||||
|
||||
SelectionText = "SELECT * FROM events";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(SelectionText, , , , "JSON");
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
```
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
sidebar_position: 4
|
||||
description: Get external table structure and other functions to work with ClickHouse in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, ClickHouse]
|
||||
---
|
||||
@@ -26,7 +26,23 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
// Minimal structure
|
||||
|
||||
TableName = "external_data";
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("id" , "UInt64");
|
||||
ColoumnsStruct.Insert("name", "String");
|
||||
|
||||
Result = OPI_ClickHouse.GetExternalTableStructure(TableName, ColoumnsStruct);
|
||||
|
||||
// With TSV data
|
||||
|
||||
TableData = StrTemplate("1%1Test
|
||||
|2%2Test2", Chars.Tab);
|
||||
|
||||
Result = OPI_ClickHouse.GetExternalTableStructure(TableName, ColoumnsStruct, TableData, "TSV");
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -25,7 +25,35 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
URL = "http://localhost:8123";
|
||||
|
||||
// No authorization
|
||||
|
||||
Result = OPI_ClickHouse.GetHTTPConnectionSettings(URL);
|
||||
|
||||
// With basic authorization
|
||||
|
||||
Login = "bayselonarrend";
|
||||
Password = "12we...";
|
||||
|
||||
Authorization = New Structure(Login, Password);
|
||||
|
||||
Result = OPI_ClickHouse.GetHTTPConnectionSettings(URL, Authorization);
|
||||
|
||||
// With JWT authorization
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Result = OPI_ClickHouse.GetHTTPConnectionSettings(URL, JWT);
|
||||
|
||||
// With additional headers
|
||||
|
||||
AdditionalHeaders = New Map;
|
||||
AdditionalHeaders.Insert("X-Custom-Header", "CustomValue");
|
||||
|
||||
Result = OPI_ClickHouse.GetHTTPConnectionSettings(URL, Authorization, AdditionalHeaders);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
sidebar_position: 3
|
||||
description: Get request settings and other functions to work with ClickHouse in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, ClickHouse]
|
||||
---
|
||||
@@ -35,7 +35,37 @@ The response body can be returned as a collection (for JSON) or as binary data (
|
||||
<br/>
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
// Minimal request
|
||||
|
||||
QueryText = "SELECT 1";
|
||||
|
||||
Result = OPI_ClickHouse.GetRequestSettings(QueryText);
|
||||
|
||||
// Full request
|
||||
|
||||
RequestID = String(New UUID());
|
||||
Data = New Structure("meta,data", New Array, New Array);
|
||||
Database = "default";
|
||||
ResponseFormat = "CSV";
|
||||
|
||||
AdditionalSettings = New Map;
|
||||
AdditionalSettings.Insert("max_threads", "4");
|
||||
|
||||
ColoumnsStruct = New Structure("id,name", "UInt64", "String");
|
||||
ExternalTable = OPI_ClickHouse.GetExternalTableStructure("ext", ColoumnsStruct);
|
||||
|
||||
TableArray = New Array;
|
||||
TableArray.Add(ExternalTable);
|
||||
|
||||
Result = OPI_ClickHouse.GetRequestSettings(QueryText
|
||||
, Database
|
||||
, RequestID
|
||||
, Data
|
||||
, ResponseFormat
|
||||
, TableArray
|
||||
, AdditionalSettings);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 6
|
||||
sidebar_position: 5
|
||||
description: Get session settings and other functions to work with ClickHouse in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, ClickHouse]
|
||||
---
|
||||
@@ -25,7 +25,13 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
SessionID = String(New UUID);
|
||||
Check = True;
|
||||
Timeout = 120;
|
||||
|
||||
Result = OPI_ClickHouse.GetSessionSettings(SessionID, Check, Timeout);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
+35
-15
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
sidebar_position: 2
|
||||
description: Create GRPC connection and other functions to work with ClickHouse in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, ClickHouse]
|
||||
---
|
||||
@@ -36,12 +36,14 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
Authorization = New Structure(Login, Password);
|
||||
|
||||
// Connection creation
|
||||
|
||||
ConnectionSettings = OPI_ClickHouse.GetGRPCConnectionSettings(URL, Authorization);
|
||||
Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings);
|
||||
|
||||
// Request (simple)
|
||||
// Request via open connection (table creation)
|
||||
|
||||
QueryText = "CREATE TABLE events (
|
||||
QueryText = "CREATE TABLE IF NOT EXISTS events_grpc (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -53,9 +55,9 @@ import TabItem from '@theme/TabItem';
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
// Request (with data)
|
||||
// Data insertion
|
||||
|
||||
QueryText = "INSERT INTO events FORMAT JSON";
|
||||
QueryText = "INSERT INTO events_grpc FORMAT JSON";
|
||||
|
||||
DataFormat = "JSON";
|
||||
DataArray = New Array;
|
||||
@@ -69,15 +71,7 @@ import TabItem from '@theme/TabItem';
|
||||
Record1.Insert("event_type", "click");
|
||||
Record1.Insert("payload" , "{}");
|
||||
|
||||
Record2 = New Structure;
|
||||
Record2.Insert("id" , 2);
|
||||
Record2.Insert("timestamp" , CurrentDate);
|
||||
Record2.Insert("user_id" , 200);
|
||||
Record2.Insert("event_type", "hover");
|
||||
Record2.Insert("payload" , "{}");
|
||||
|
||||
DataArray.Add(Record1);
|
||||
DataArray.Add(Record2);
|
||||
|
||||
Meta = New Array;
|
||||
Meta.Add(New Structure("name,type", "id" , "UInt64"));
|
||||
@@ -87,10 +81,36 @@ import TabItem from '@theme/TabItem';
|
||||
Meta.Add(New Structure("name,type", "payload" , "String"));
|
||||
|
||||
Data = New Structure("meta,data", Meta, DataArray);
|
||||
Database = "default";
|
||||
RequestID = String(New UUID());
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, Database, RequestID, Data, DataFormat);
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, "default", RequestID, Data, DataFormat);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
// Selection
|
||||
|
||||
SelectionText = "SELECT * FROM events_grpc";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(SelectionText, , , , "JSON");
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
// Request with external table via gRPC
|
||||
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("id" , "UInt64");
|
||||
ColoumnsStruct.Insert("name", "String");
|
||||
|
||||
Tab = Chars.Tab;
|
||||
TableData = "1" + Tab + "John
|
||||
|2" + Tab + "Jane";
|
||||
|
||||
ExternalTable = OPI_ClickHouse.GetExternalTableStructure("ext_grpc", ColoumnsStruct, TableData, "TSV");
|
||||
|
||||
ExternalTablesArray = New Array;
|
||||
ExternalTablesArray.Add(ExternalTable);
|
||||
|
||||
QueryText = "SELECT * FROM ext_grpc";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, , , , "JSON", ExternalTablesArray);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
```
|
||||
|
||||
|
||||
+35
-1
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
sidebar_position: 1
|
||||
description: Get gRPC connection settings and other functions to work with ClickHouse in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, ClickHouse]
|
||||
---
|
||||
@@ -26,7 +26,41 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
URL = "http://localhost:9101";
|
||||
|
||||
// No authorization
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL);
|
||||
|
||||
// With basic authorization
|
||||
|
||||
Login = "bayselonarrend";
|
||||
Password = "12we...";
|
||||
|
||||
Authorization = New Structure(Login, Password);
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL, Authorization);
|
||||
|
||||
// With JWT authorization
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL, JWT);
|
||||
|
||||
// With metadata
|
||||
|
||||
Meta = New Map;
|
||||
Meta.Insert("custom-meta", "value");
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL, Authorization, Meta);
|
||||
|
||||
// With TLS settings
|
||||
|
||||
Tls = OPI_ClickHouse.GetTlsSettings(True);
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL, Authorization, , Tls);
|
||||
```
|
||||
|
||||
|
||||
|
||||
+4
-2
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
sidebar_position: 6
|
||||
description: Get TLS Settings and other functions to work with ClickHouse in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, ClickHouse]
|
||||
---
|
||||
@@ -28,7 +28,9 @@ Tls settings can only be set when a connection is created: explicitly, by using
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
Result = OPI_ClickHouse.GetTlsSettings(False);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
description: Open bidirectional GRPC stream and other functions to work with ClickHouse in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, ClickHouse]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Open bidirectional GRPC stream
|
||||
Initializes a bidirectional stream for exchange
|
||||
|
||||
|
||||
|
||||
`Function OpenBidirectionalGRPCStream(Val Connection, Val Timeout = 10000) Export`
|
||||
|
||||
| Parameter | CLI option | Type | Required | Description |
|
||||
|-|-|-|-|-|
|
||||
| Connection | - | Arbitrary | ✔ | GRPC connection object |
|
||||
| Timeout | - | Number | ✖ | Timeout (in ms) |
|
||||
|
||||
|
||||
Returns: Map Of KeyAndValue - Processing result
|
||||
|
||||
|
||||
:::caution
|
||||
**NOCLI:** this method is not available in CLI version
|
||||
:::
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
description: Open client GRPC stream and other functions to work with ClickHouse in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, ClickHouse]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Open client GRPC stream
|
||||
Initializes a client stream for exchange
|
||||
|
||||
|
||||
|
||||
`Function OpenClientGRPCStream(Val Connection, Val Timeout = 10000) Export`
|
||||
|
||||
| Parameter | CLI option | Type | Required | Description |
|
||||
|-|-|-|-|-|
|
||||
| Connection | - | Arbitrary | ✔ | GRPC connection object |
|
||||
| Timeout | - | Number | ✖ | Timeout (in ms) |
|
||||
|
||||
|
||||
Returns: Map Of KeyAndValue - Processing result
|
||||
|
||||
|
||||
:::caution
|
||||
**NOCLI:** this method is not available in CLI version
|
||||
:::
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
description: Open server GRPC stream and other functions to work with ClickHouse in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
|
||||
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, ClickHouse]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Open server GRPC stream
|
||||
Initializes a server stream for exchange
|
||||
|
||||
|
||||
|
||||
`Function OpenServerGRPCStream(Val Connection, Val Request = Undefined, Val Session = Undefined, Val Timeout = 10000) Export`
|
||||
|
||||
| Parameter | CLI option | Type | Required | Description |
|
||||
|-|-|-|-|-|
|
||||
| Connection | - | Arbitrary | ✔ | GRPC connection object |
|
||||
| Request | - | Structure Of KeyAndValue | ✖ | Request data. See GetRequestSettings |
|
||||
| Session | - | Structure Of KeyAndValue | ✖ | Session settings. See GetSessionSettings |
|
||||
| Timeout | - | Number | ✖ | Timeout (in ms) |
|
||||
|
||||
|
||||
Returns: Map Of KeyAndValue - Processing result
|
||||
|
||||
|
||||
:::caution
|
||||
**NOCLI:** this method is not available in CLI version
|
||||
:::
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"URL":"http://localhost:9101","Логин":"bayselonarrend","Пароль":"12we..."}
|
||||
@@ -0,0 +1 @@
|
||||
{"URL":"http://localhost:8123","Логин":"bayselonarrend","Пароль":"12we..."}
|
||||
+32
-3
@@ -9,9 +9,9 @@
|
||||
|
||||
Соединение = OPI_ClickHouse.ПолучитьНастройкиСоединенияHTTP(URL, Авторизация);
|
||||
|
||||
// Запрос (простой)
|
||||
// Запрос (создание таблицы)
|
||||
|
||||
ТекстЗапроса = "CREATE TABLE events (
|
||||
ТекстЗапроса = "CREATE TABLE IF NOT EXISTS events (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -23,7 +23,7 @@
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
// Запрос (с данными)
|
||||
// Запрос (вставка данных)
|
||||
|
||||
ТекстЗапроса = "INSERT INTO events FORMAT JSON";
|
||||
|
||||
@@ -62,3 +62,32 @@
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, БазаДанных, IDЗапроса, Данные, ФорматДанных);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
// Запрос с внешней таблицей
|
||||
|
||||
ИмяТаблицы = "ext_users";
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("id" , "UInt64");
|
||||
СтруктураКолонок.Вставить("name", "String");
|
||||
|
||||
Таб = Символы.Таб;
|
||||
ДанныеТаблицы = "1" + Таб + "John
|
||||
|2" + Таб + "Jane
|
||||
|3" + Таб + "Bob";
|
||||
|
||||
ВнешняяТаблица = OPI_ClickHouse.ПолучитьСтруктуруВнешнейТаблицы(ИмяТаблицы, СтруктураКолонок, ДанныеТаблицы, "TSV");
|
||||
|
||||
МассивВнешнихТаблиц = Новый Массив;
|
||||
МассивВнешнихТаблиц.Добавить(ВнешняяТаблица);
|
||||
|
||||
ТекстЗапроса = "SELECT * FROM ext_users WHERE id > 1";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, , , , "JSON", МассивВнешнихТаблиц);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
// Выборка
|
||||
|
||||
ТекстВыборки = "SELECT * FROM events";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстВыборки, , , , "JSON");
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
+36
-16
@@ -5,12 +5,14 @@
|
||||
|
||||
Авторизация = Новый Структура(Логин, Пароль);
|
||||
|
||||
// Открытие соединения
|
||||
|
||||
НастройкиСоединения = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, Авторизация);
|
||||
Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения);
|
||||
|
||||
// Запрос (простой)
|
||||
// Запрос через открытое соединение (создание таблицы)
|
||||
|
||||
ТекстЗапроса = "CREATE TABLE events (
|
||||
ТекстЗапроса = "CREATE TABLE IF NOT EXISTS events_grpc (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -22,9 +24,9 @@
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
// Запрос (с данными)
|
||||
// Вставка данных
|
||||
|
||||
ТекстЗапроса = "INSERT INTO events FORMAT JSON";
|
||||
ТекстЗапроса = "INSERT INTO events_grpc FORMAT JSON";
|
||||
|
||||
ФорматДанных = "JSON";
|
||||
МассивДанных = Новый Массив;
|
||||
@@ -38,15 +40,7 @@
|
||||
Запись1.Вставить("event_type", "click");
|
||||
Запись1.Вставить("payload" , "{}");
|
||||
|
||||
Запись2 = Новый Структура;
|
||||
Запись2.Вставить("id" , 2);
|
||||
Запись2.Вставить("timestamp" , ТекущаяДата);
|
||||
Запись2.Вставить("user_id" , 200);
|
||||
Запись2.Вставить("event_type", "hover");
|
||||
Запись2.Вставить("payload" , "{}");
|
||||
|
||||
МассивДанных.Добавить(Запись1);
|
||||
МассивДанных.Добавить(Запись2);
|
||||
|
||||
Мета = Новый Массив;
|
||||
Мета.Добавить(Новый Структура("name,type", "id" , "UInt64"));
|
||||
@@ -55,9 +49,35 @@
|
||||
Мета.Добавить(Новый Структура("name,type", "event_type", "String"));
|
||||
Мета.Добавить(Новый Структура("name,type", "payload" , "String"));
|
||||
|
||||
Данные = Новый Структура("meta,data", Мета, МассивДанных);
|
||||
БазаДанных = "default";
|
||||
IDЗапроса = Строка(Новый УникальныйИдентификатор());
|
||||
Данные = Новый Структура("meta,data", Мета, МассивДанных);
|
||||
IDЗапроса = Строка(Новый УникальныйИдентификатор());
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, БазаДанных, IDЗапроса, Данные, ФорматДанных);
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, "default", IDЗапроса, Данные, ФорматДанных);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
// Выборка
|
||||
|
||||
ТекстВыборки = "SELECT * FROM events_grpc";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстВыборки, , , , "JSON");
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
// Запрос с внешней таблицей через gRPC
|
||||
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("id" , "UInt64");
|
||||
СтруктураКолонок.Вставить("name", "String");
|
||||
|
||||
Таб = Символы.Таб;
|
||||
ДанныеТаблицы = "1" + Таб + "John
|
||||
|2" + Таб + "Jane";
|
||||
|
||||
ВнешняяТаблица = OPI_ClickHouse.ПолучитьСтруктуруВнешнейТаблицы("ext_grpc", СтруктураКолонок, ДанныеТаблицы, "TSV");
|
||||
|
||||
МассивВнешнихТаблиц = Новый Массив;
|
||||
МассивВнешнихТаблиц.Добавить(ВнешняяТаблица);
|
||||
|
||||
ТекстЗапроса = "SELECT * FROM ext_grpc";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, , , , "JSON", МассивВнешнихТаблиц);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиTls(Ложь);
|
||||
@@ -0,0 +1,29 @@
|
||||
// Минимальный запрос
|
||||
|
||||
ТекстЗапроса = "SELECT 1";
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса);
|
||||
|
||||
// Полный запрос
|
||||
|
||||
IDЗапроса = Строка(Новый УникальныйИдентификатор());
|
||||
Данные = Новый Структура("meta,data", Новый Массив, Новый Массив);
|
||||
БазаДанных = "default";
|
||||
ФорматОтвета = "CSV";
|
||||
|
||||
ДопНастройки = Новый Соответствие;
|
||||
ДопНастройки.Вставить("max_threads", "4");
|
||||
|
||||
СтруктураКолонок = Новый Структура("id,name", "UInt64", "String");
|
||||
ВнешняяТаблица = OPI_ClickHouse.ПолучитьСтруктуруВнешнейТаблицы("ext", СтруктураКолонок);
|
||||
|
||||
МассивТаблиц = Новый Массив;
|
||||
МассивТаблиц.Добавить(ВнешняяТаблица);
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса
|
||||
, БазаДанных
|
||||
, IDЗапроса
|
||||
, Данные
|
||||
, ФорматОтвета
|
||||
, МассивТаблиц
|
||||
, ДопНастройки);
|
||||
@@ -0,0 +1,5 @@
|
||||
IDСессии = Строка(Новый УникальныйИдентификатор);
|
||||
Проверять = Истина;
|
||||
Таймаут = 120;
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСессии(IDСессии, Проверять, Таймаут);
|
||||
@@ -0,0 +1,33 @@
|
||||
URL = "http://localhost:9101";
|
||||
|
||||
// Без авторизации
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL);
|
||||
|
||||
// С basic авторизацией
|
||||
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = "12we...";
|
||||
|
||||
Авторизация = Новый Структура(Логин, Пароль);
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, Авторизация);
|
||||
|
||||
// С JWT авторизацией
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, JWT);
|
||||
|
||||
// С метаданными
|
||||
|
||||
Meta = Новый Соответствие;
|
||||
Meta.Вставить("custom-meta", "value");
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, Авторизация, Meta);
|
||||
|
||||
// С TLS настройками
|
||||
|
||||
Tls = OPI_ClickHouse.ПолучитьНастройкиTls(Истина);
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, Авторизация, , Tls);
|
||||
@@ -0,0 +1,27 @@
|
||||
URL = "http://localhost:8123";
|
||||
|
||||
// Без авторизации
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияHTTP(URL);
|
||||
|
||||
// С basic авторизацией
|
||||
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = "12we...";
|
||||
|
||||
Авторизация = Новый Структура(Логин, Пароль);
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияHTTP(URL, Авторизация);
|
||||
|
||||
// С JWT авторизацией
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияHTTP(URL, JWT);
|
||||
|
||||
// С дополнительными заголовками
|
||||
|
||||
ДопЗаголовки = Новый Соответствие;
|
||||
ДопЗаголовки.Вставить("X-Custom-Header", "CustomValue");
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияHTTP(URL, Авторизация, ДопЗаголовки);
|
||||
@@ -0,0 +1,15 @@
|
||||
// Минимальная структура
|
||||
|
||||
ИмяТаблицы = "external_data";
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("id" , "UInt64");
|
||||
СтруктураКолонок.Вставить("name", "String");
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьСтруктуруВнешнейТаблицы(ИмяТаблицы, СтруктураКолонок);
|
||||
|
||||
// С данными TSV
|
||||
|
||||
ДанныеТаблицы = СтрШаблон("1%1Test
|
||||
|2%2Test2", Символы.Таб);
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьСтруктуруВнешнейТаблицы(ИмяТаблицы, СтруктураКолонок, ДанныеТаблицы, "TSV");
|
||||
+32
-3
@@ -37,9 +37,9 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
Соединение = OPI_ClickHouse.ПолучитьНастройкиСоединенияHTTP(URL, Авторизация);
|
||||
|
||||
// Запрос (простой)
|
||||
// Запрос (создание таблицы)
|
||||
|
||||
ТекстЗапроса = "CREATE TABLE events (
|
||||
ТекстЗапроса = "CREATE TABLE IF NOT EXISTS events (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -51,7 +51,7 @@ import TabItem from '@theme/TabItem';
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
// Запрос (с данными)
|
||||
// Запрос (вставка данных)
|
||||
|
||||
ТекстЗапроса = "INSERT INTO events FORMAT JSON";
|
||||
|
||||
@@ -90,6 +90,35 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, БазаДанных, IDЗапроса, Данные, ФорматДанных);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
// Запрос с внешней таблицей
|
||||
|
||||
ИмяТаблицы = "ext_users";
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("id" , "UInt64");
|
||||
СтруктураКолонок.Вставить("name", "String");
|
||||
|
||||
Таб = Символы.Таб;
|
||||
ДанныеТаблицы = "1" + Таб + "John
|
||||
|2" + Таб + "Jane
|
||||
|3" + Таб + "Bob";
|
||||
|
||||
ВнешняяТаблица = OPI_ClickHouse.ПолучитьСтруктуруВнешнейТаблицы(ИмяТаблицы, СтруктураКолонок, ДанныеТаблицы, "TSV");
|
||||
|
||||
МассивВнешнихТаблиц = Новый Массив;
|
||||
МассивВнешнихТаблиц.Добавить(ВнешняяТаблица);
|
||||
|
||||
ТекстЗапроса = "SELECT * FROM ext_users WHERE id > 1";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, , , , "JSON", МассивВнешнихТаблиц);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
// Выборка
|
||||
|
||||
ТекстВыборки = "SELECT * FROM events";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстВыборки, , , , "JSON");
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
```
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
sidebar_position: 4
|
||||
description: Получить структуру внешней таблицы и другие функции для работы с ClickHouse в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, ClickHouse]
|
||||
---
|
||||
@@ -26,7 +26,23 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
// Минимальная структура
|
||||
|
||||
ИмяТаблицы = "external_data";
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("id" , "UInt64");
|
||||
СтруктураКолонок.Вставить("name", "String");
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьСтруктуруВнешнейТаблицы(ИмяТаблицы, СтруктураКолонок);
|
||||
|
||||
// С данными TSV
|
||||
|
||||
ДанныеТаблицы = СтрШаблон("1%1Test
|
||||
|2%2Test2", Символы.Таб);
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьСтруктуруВнешнейТаблицы(ИмяТаблицы, СтруктураКолонок, ДанныеТаблицы, "TSV");
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -25,7 +25,35 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
URL = "http://localhost:8123";
|
||||
|
||||
// Без авторизации
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияHTTP(URL);
|
||||
|
||||
// С basic авторизацией
|
||||
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = "12we...";
|
||||
|
||||
Авторизация = Новый Структура(Логин, Пароль);
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияHTTP(URL, Авторизация);
|
||||
|
||||
// С JWT авторизацией
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияHTTP(URL, JWT);
|
||||
|
||||
// С дополнительными заголовками
|
||||
|
||||
ДопЗаголовки = Новый Соответствие;
|
||||
ДопЗаголовки.Вставить("X-Custom-Header", "CustomValue");
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияHTTP(URL, Авторизация, ДопЗаголовки);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
sidebar_position: 3
|
||||
description: Получить настройки запроса и другие функции для работы с ClickHouse в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, ClickHouse]
|
||||
---
|
||||
@@ -35,7 +35,37 @@ import TabItem from '@theme/TabItem';
|
||||
<br/>
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
// Минимальный запрос
|
||||
|
||||
ТекстЗапроса = "SELECT 1";
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса);
|
||||
|
||||
// Полный запрос
|
||||
|
||||
IDЗапроса = Строка(Новый УникальныйИдентификатор());
|
||||
Данные = Новый Структура("meta,data", Новый Массив, Новый Массив);
|
||||
БазаДанных = "default";
|
||||
ФорматОтвета = "CSV";
|
||||
|
||||
ДопНастройки = Новый Соответствие;
|
||||
ДопНастройки.Вставить("max_threads", "4");
|
||||
|
||||
СтруктураКолонок = Новый Структура("id,name", "UInt64", "String");
|
||||
ВнешняяТаблица = OPI_ClickHouse.ПолучитьСтруктуруВнешнейТаблицы("ext", СтруктураКолонок);
|
||||
|
||||
МассивТаблиц = Новый Массив;
|
||||
МассивТаблиц.Добавить(ВнешняяТаблица);
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса
|
||||
, БазаДанных
|
||||
, IDЗапроса
|
||||
, Данные
|
||||
, ФорматОтвета
|
||||
, МассивТаблиц
|
||||
, ДопНастройки);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 6
|
||||
sidebar_position: 5
|
||||
description: Получить настройки сессии и другие функции для работы с ClickHouse в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, ClickHouse]
|
||||
---
|
||||
@@ -25,7 +25,13 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
IDСессии = Строка(Новый УникальныйИдентификатор);
|
||||
Проверять = Истина;
|
||||
Таймаут = 120;
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСессии(IDСессии, Проверять, Таймаут);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
+38
-18
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
sidebar_position: 2
|
||||
description: Открыть соединение GRPC и другие функции для работы с ClickHouse в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, ClickHouse]
|
||||
---
|
||||
@@ -16,7 +16,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| НастройкиСоединения | - | Структура Из КлючИЗначение | ✔ | Параметры соединения. См. [`ПолучитьНастройкиСоединенияGRPC`](/docs/ClickHouse/Common-methods/Get-grpc-connection-settings) |
|
||||
| НастройкиСоединения | - | Структура Из КлючИЗначение | ✔ | Параметры соединения. См. [`ПолучитьНастройкиСоединенияGRPC`](/docs/ClickHouse/Grpc/Get-grpc-connection-settings) |
|
||||
|
||||
|
||||
Возвращаемое значение: Произвольный - Объект коннектора или соответствие с информацией об ошибке
|
||||
@@ -36,12 +36,14 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
Авторизация = Новый Структура(Логин, Пароль);
|
||||
|
||||
// Открытие соединения
|
||||
|
||||
НастройкиСоединения = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, Авторизация);
|
||||
Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения);
|
||||
|
||||
// Запрос (простой)
|
||||
// Запрос через открытое соединение (создание таблицы)
|
||||
|
||||
ТекстЗапроса = "CREATE TABLE events (
|
||||
ТекстЗапроса = "CREATE TABLE IF NOT EXISTS events_grpc (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -53,9 +55,9 @@ import TabItem from '@theme/TabItem';
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
// Запрос (с данными)
|
||||
// Вставка данных
|
||||
|
||||
ТекстЗапроса = "INSERT INTO events FORMAT JSON";
|
||||
ТекстЗапроса = "INSERT INTO events_grpc FORMAT JSON";
|
||||
|
||||
ФорматДанных = "JSON";
|
||||
МассивДанных = Новый Массив;
|
||||
@@ -69,15 +71,7 @@ import TabItem from '@theme/TabItem';
|
||||
Запись1.Вставить("event_type", "click");
|
||||
Запись1.Вставить("payload" , "{}");
|
||||
|
||||
Запись2 = Новый Структура;
|
||||
Запись2.Вставить("id" , 2);
|
||||
Запись2.Вставить("timestamp" , ТекущаяДата);
|
||||
Запись2.Вставить("user_id" , 200);
|
||||
Запись2.Вставить("event_type", "hover");
|
||||
Запись2.Вставить("payload" , "{}");
|
||||
|
||||
МассивДанных.Добавить(Запись1);
|
||||
МассивДанных.Добавить(Запись2);
|
||||
|
||||
Мета = Новый Массив;
|
||||
Мета.Добавить(Новый Структура("name,type", "id" , "UInt64"));
|
||||
@@ -86,11 +80,37 @@ import TabItem from '@theme/TabItem';
|
||||
Мета.Добавить(Новый Структура("name,type", "event_type", "String"));
|
||||
Мета.Добавить(Новый Структура("name,type", "payload" , "String"));
|
||||
|
||||
Данные = Новый Структура("meta,data", Мета, МассивДанных);
|
||||
БазаДанных = "default";
|
||||
IDЗапроса = Строка(Новый УникальныйИдентификатор());
|
||||
Данные = Новый Структура("meta,data", Мета, МассивДанных);
|
||||
IDЗапроса = Строка(Новый УникальныйИдентификатор());
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, БазаДанных, IDЗапроса, Данные, ФорматДанных);
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, "default", IDЗапроса, Данные, ФорматДанных);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
// Выборка
|
||||
|
||||
ТекстВыборки = "SELECT * FROM events_grpc";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстВыборки, , , , "JSON");
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
// Запрос с внешней таблицей через gRPC
|
||||
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("id" , "UInt64");
|
||||
СтруктураКолонок.Вставить("name", "String");
|
||||
|
||||
Таб = Символы.Таб;
|
||||
ДанныеТаблицы = "1" + Таб + "John
|
||||
|2" + Таб + "Jane";
|
||||
|
||||
ВнешняяТаблица = OPI_ClickHouse.ПолучитьСтруктуруВнешнейТаблицы("ext_grpc", СтруктураКолонок, ДанныеТаблицы, "TSV");
|
||||
|
||||
МассивВнешнихТаблиц = Новый Массив;
|
||||
МассивВнешнихТаблиц.Добавить(ВнешняяТаблица);
|
||||
|
||||
ТекстЗапроса = "SELECT * FROM ext_grpc";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, , , , "JSON", МассивВнешнихТаблиц);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
```
|
||||
|
||||
|
||||
+35
-1
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
sidebar_position: 1
|
||||
description: Получить настройки соединения gRPC и другие функции для работы с ClickHouse в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, ClickHouse]
|
||||
---
|
||||
@@ -26,7 +26,41 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
URL = "http://localhost:9101";
|
||||
|
||||
// Без авторизации
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL);
|
||||
|
||||
// С basic авторизацией
|
||||
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = "12we...";
|
||||
|
||||
Авторизация = Новый Структура(Логин, Пароль);
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, Авторизация);
|
||||
|
||||
// С JWT авторизацией
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, JWT);
|
||||
|
||||
// С метаданными
|
||||
|
||||
Meta = Новый Соответствие;
|
||||
Meta.Вставить("custom-meta", "value");
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, Авторизация, Meta);
|
||||
|
||||
// С TLS настройками
|
||||
|
||||
Tls = OPI_ClickHouse.ПолучитьНастройкиTls(Истина);
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, Авторизация, , Tls);
|
||||
```
|
||||
|
||||
|
||||
|
||||
+4
-2
@@ -1,5 +1,5 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
sidebar_position: 6
|
||||
description: Получить настройки TLS и другие функции для работы с ClickHouse в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, ClickHouse]
|
||||
---
|
||||
@@ -28,7 +28,9 @@ import TabItem from '@theme/TabItem';
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиTls(Ложь);
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
description: Открыть двунаправленный поток GRPC и другие функции для работы с ClickHouse в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, ClickHouse]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Открыть двунаправленный поток GRPC
|
||||
Инициализирует двунаправленный поток для обмена
|
||||
|
||||
|
||||
|
||||
`Функция ОткрытьДвунаправленныйПотокGRPC(Знач Соединение, Знач Таймаут = 10000) Экспорт`
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| Соединение | - | Произвольный | ✔ | Объект GRPC соединения |
|
||||
| Таймаут | - | Число | ✖ | Таймаут (в мс) |
|
||||
|
||||
|
||||
Возвращаемое значение: Соответствие Из КлючИЗначение - Результат обработки
|
||||
|
||||
|
||||
:::caution
|
||||
**NOCLI:** данный метод недоступен для использования в CLI версии
|
||||
:::
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
description: Открыть клиентский поток GRPC и другие функции для работы с ClickHouse в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, ClickHouse]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Открыть клиентский поток GRPC
|
||||
Инициализирует клиентский поток для обмена
|
||||
|
||||
|
||||
|
||||
`Функция ОткрытьКлиентскийПотокGRPC(Знач Соединение, Знач Таймаут = 10000) Экспорт`
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| Соединение | - | Произвольный | ✔ | Объект GRPC соединения |
|
||||
| Таймаут | - | Число | ✖ | Таймаут (в мс) |
|
||||
|
||||
|
||||
Возвращаемое значение: Соответствие Из КлючИЗначение - Результат обработки
|
||||
|
||||
|
||||
:::caution
|
||||
**NOCLI:** данный метод недоступен для использования в CLI версии
|
||||
:::
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
description: Открыть серверный поток GRPC и другие функции для работы с ClickHouse в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
|
||||
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, ClickHouse]
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Открыть серверный поток GRPC
|
||||
Инициализирует серверный поток для обмена
|
||||
|
||||
|
||||
|
||||
`Функция ОткрытьСерверныйПотокGRPC(Знач Соединение, Знач Запрос = Неопределено, Знач Сессия = Неопределено, Знач Таймаут = 10000) Экспорт`
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| Соединение | - | Произвольный | ✔ | Объект GRPC соединения |
|
||||
| Запрос | - | Структура Из КлючИЗначение | ✖ | Данные запроса. См. [`ПолучитьНастройкиЗапроса`](/docs/ClickHouse/Common-methods/Get-request-settings) |
|
||||
| Сессия | - | Структура Из КлючИЗначение | ✖ | Настройки сессии. См. [`ПолучитьНастройкиСессии`](/docs/ClickHouse/Common-methods/Get-session-settings) |
|
||||
| Таймаут | - | Число | ✖ | Таймаут (в мс) |
|
||||
|
||||
|
||||
Возвращаемое значение: Соответствие Из КлючИЗначение - Результат обработки
|
||||
|
||||
|
||||
:::caution
|
||||
**NOCLI:** данный метод недоступен для использования в CLI версии
|
||||
:::
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+9961
-9961
File diff suppressed because it is too large
Load Diff
@@ -1 +1 @@
|
||||
07C4BB7AB731BEE83F841D7B9FCCBFE88AEA3E79ABE5F6C079001C2DBEC9A426
|
||||
020E99F2738A217F5BB9933180E87C96741C7679FB414458053C1635BA67A99A
|
||||
+130
-5
@@ -7002,7 +7002,17 @@
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ExecuteRequest",
|
||||
"variant": "Simple"
|
||||
"variant": "TableCreation"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ExecuteRequest",
|
||||
"variant": "DataInsert"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ExecuteRequest",
|
||||
"variant": "ExternalTable"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
@@ -7011,17 +7021,132 @@
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ExecuteRequest",
|
||||
"variant": "CSVSelection"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ExecuteRequest",
|
||||
"variant": "TSVSelection"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ExecuteRequest",
|
||||
"variant": "JSONCompactSelection"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ExecuteRequest",
|
||||
"variant": "AdditionalSettings"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ExecuteRequest",
|
||||
"variant": "SessionCreation"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ExecuteRequest",
|
||||
"variant": "SessionInsert"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "CreateGRPCConnection",
|
||||
"variant": "Openning"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "CreateGRPCConnection",
|
||||
"variant": "TableCreation"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "CreateGRPCConnection",
|
||||
"variant": "DataInsert"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "CreateGRPCConnection",
|
||||
"variant": "Selection"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "CreateGRPCConnection",
|
||||
"variant": ""
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "CreateGRPCConnection",
|
||||
"variant": "Simple"
|
||||
"name": "GetHTTPConnectionSettings",
|
||||
"variant": "NoAuthorization"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "CreateGRPCConnection",
|
||||
"variant": "Complex"
|
||||
"name": "GetHTTPConnectionSettings",
|
||||
"variant": "BasicAuthorization"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "GetHTTPConnectionSettings",
|
||||
"variant": "JWTAuthorization"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "GetHTTPConnectionSettings",
|
||||
"variant": ""
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "GetGRPCConnectionSettings",
|
||||
"variant": "NoAuthorization"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "GetGRPCConnectionSettings",
|
||||
"variant": "BasicAuthorization"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "GetGRPCConnectionSettings",
|
||||
"variant": "JWTAuthorization"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "GetGRPCConnectionSettings",
|
||||
"variant": "WithMetadata"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "GetGRPCConnectionSettings",
|
||||
"variant": ""
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "GetRequestSettings",
|
||||
"variant": "Minimal"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "GetRequestSettings",
|
||||
"variant": ""
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "GetExternalTableStructure",
|
||||
"variant": "Minimal"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "GetExternalTableStructure",
|
||||
"variant": ""
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "GetSessionSettings",
|
||||
"variant": ""
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "GetTlsSettings",
|
||||
"variant": ""
|
||||
}
|
||||
]
|
||||
+130
-5
@@ -7002,7 +7002,17 @@
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ВыполнитьЗапрос",
|
||||
"variant": "Простой"
|
||||
"variant": "СозданиеТаблицы"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ВыполнитьЗапрос",
|
||||
"variant": "ВставкаДанных"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ВыполнитьЗапрос",
|
||||
"variant": "ВнешняяТаблица"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
@@ -7011,17 +7021,132 @@
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ВыполнитьЗапрос",
|
||||
"variant": "ВыборкаCSV"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ВыполнитьЗапрос",
|
||||
"variant": "ВыборкаTSV"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ВыполнитьЗапрос",
|
||||
"variant": "ВыборкаJSONCompact"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ВыполнитьЗапрос",
|
||||
"variant": "ДопНастройки"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ВыполнитьЗапрос",
|
||||
"variant": "СессияСоздание"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ВыполнитьЗапрос",
|
||||
"variant": "СессияВставка"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ОткрытьСоединениеGRPC",
|
||||
"variant": "Открытие"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ОткрытьСоединениеGRPC",
|
||||
"variant": "СозданиеТаблицы"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ОткрытьСоединениеGRPC",
|
||||
"variant": "ВставкаДанных"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ОткрытьСоединениеGRPC",
|
||||
"variant": "Выборка"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ОткрытьСоединениеGRPC",
|
||||
"variant": ""
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ОткрытьСоединениеGRPC",
|
||||
"variant": "Простой"
|
||||
"name": "ПолучитьНастройкиСоединенияHTTP",
|
||||
"variant": "БезАвторизации"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ОткрытьСоединениеGRPC",
|
||||
"variant": "Сложный"
|
||||
"name": "ПолучитьНастройкиСоединенияHTTP",
|
||||
"variant": "BasicАвторизация"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ПолучитьНастройкиСоединенияHTTP",
|
||||
"variant": "JWTАвторизация"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ПолучитьНастройкиСоединенияHTTP",
|
||||
"variant": ""
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ПолучитьНастройкиСоединенияGRPC",
|
||||
"variant": "БезАвторизации"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ПолучитьНастройкиСоединенияGRPC",
|
||||
"variant": "BasicАвторизация"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ПолучитьНастройкиСоединенияGRPC",
|
||||
"variant": "JWTАвторизация"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ПолучитьНастройкиСоединенияGRPC",
|
||||
"variant": "СМетаданными"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ПолучитьНастройкиСоединенияGRPC",
|
||||
"variant": ""
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ПолучитьНастройкиЗапроса",
|
||||
"variant": "Минимальный"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ПолучитьНастройкиЗапроса",
|
||||
"variant": ""
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ПолучитьСтруктуруВнешнейТаблицы",
|
||||
"variant": "Минимальная"
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ПолучитьСтруктуруВнешнейТаблицы",
|
||||
"variant": ""
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ПолучитьНастройкиСессии",
|
||||
"variant": ""
|
||||
},
|
||||
{
|
||||
"lib": "ClickHouse",
|
||||
"name": "ПолучитьНастройкиTls",
|
||||
"variant": ""
|
||||
}
|
||||
]
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
07C4BB7AB731BEE83F841D7B9FCCBFE88AEA3E79ABE5F6C079001C2DBEC9A426
|
||||
020E99F2738A217F5BB9933180E87C96741C7679FB414458053C1635BA67A99A
|
||||
+280
-54
@@ -125,38 +125,6 @@ Function GetHTTPConnectionSettings(Val Address
|
||||
|
||||
EndFunction
|
||||
|
||||
// Get gRPC connection settings
|
||||
// Gets the settings structure for gRPC connection
|
||||
//
|
||||
// Parameters:
|
||||
// Address - String - Connection address with protocol and port - url
|
||||
// Authorization - String, Structure Of KeyAndValue - Authorization: string for JWT, structure for basic - auth
|
||||
// Meta - Structure Of KeyAndValue - gRPC metadata structure, if necessary - meta
|
||||
// Tls - Structure Of KeyAndValue - TLS settings. See GetTlsSettings - tls
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue - Connection settings structure
|
||||
Function GetGRPCConnectionSettings(Val Address
|
||||
, Val Authorization = Undefined
|
||||
, Val Meta = Undefined
|
||||
, Val Tls = Undefined) Export
|
||||
|
||||
ConnectionSettings = New Structure;
|
||||
OPI_Tools.AddField("address" , Address , "String" , ConnectionSettings);
|
||||
OPI_Tools.AddField("tls" , Tls , "KeyAndValue", ConnectionSettings);
|
||||
OPI_Tools.AddField("metadata" , Meta , "KeyAndValue", ConnectionSettings);
|
||||
OPI_Tools.AddField("transport", "grpc" , "String" , ConnectionSettings);
|
||||
|
||||
If Authorization = Undefined Then
|
||||
Return ConnectionSettings;
|
||||
EndIf;
|
||||
|
||||
CompleteAuthorizationSettings(Authorization, ConnectionSettings);
|
||||
|
||||
Return ConnectionSettings;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Get request settings
|
||||
// Forms the request description structure
|
||||
//
|
||||
@@ -240,10 +208,6 @@ Function GetSessionSettings(Val SessionID = Undefined
|
||||
SessionSettings = New Structure;
|
||||
HasSessionID = SessionID <> Undefined;
|
||||
|
||||
If HasSessionID Then
|
||||
SessionID = String(New UUID());
|
||||
EndIf;
|
||||
|
||||
If CheckSession = Undefined Then
|
||||
CheckSession = HasSessionID;
|
||||
EndIf;
|
||||
@@ -260,6 +224,38 @@ EndFunction
|
||||
|
||||
#Region GRPC
|
||||
|
||||
// Get gRPC connection settings
|
||||
// Gets the settings structure for gRPC connection
|
||||
//
|
||||
// Parameters:
|
||||
// Address - String - Connection address with protocol and port - url
|
||||
// Authorization - String, Structure Of KeyAndValue - Authorization: string for JWT, structure for basic - auth
|
||||
// Meta - Structure Of KeyAndValue - gRPC metadata structure, if necessary - meta
|
||||
// Tls - Structure Of KeyAndValue - TLS settings. See GetTlsSettings - tls
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue - Connection settings structure
|
||||
Function GetGRPCConnectionSettings(Val Address
|
||||
, Val Authorization = Undefined
|
||||
, Val Meta = Undefined
|
||||
, Val Tls = Undefined) Export
|
||||
|
||||
ConnectionSettings = New Structure;
|
||||
OPI_Tools.AddField("address" , Address , "String" , ConnectionSettings);
|
||||
OPI_Tools.AddField("tls" , Tls , "KeyAndValue", ConnectionSettings);
|
||||
OPI_Tools.AddField("metadata" , Meta , "KeyAndValue", ConnectionSettings);
|
||||
OPI_Tools.AddField("transport", "grpc" , "String" , ConnectionSettings);
|
||||
|
||||
If Authorization = Undefined Then
|
||||
Return ConnectionSettings;
|
||||
EndIf;
|
||||
|
||||
CompleteAuthorizationSettings(Authorization, ConnectionSettings);
|
||||
|
||||
Return ConnectionSettings;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Create GRPC connection !NOCLI
|
||||
// Opens a GRPC connection for working with ClickHouse
|
||||
//
|
||||
@@ -304,6 +300,56 @@ Function CreateGRPCConnection(Val ConnectionSettings) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
// Open client GRPC stream !NOCLI
|
||||
// Initializes a client stream for exchange
|
||||
//
|
||||
// Parameters:
|
||||
// Connection - Arbitrary - GRPC connection object - conn
|
||||
// Timeout - Number - Timeout (in ms) - tout
|
||||
//
|
||||
// Returns:
|
||||
// Map Of KeyAndValue - Processing result
|
||||
Function OpenClientGRPCStream(Val Connection, Val Timeout = 10000) Export
|
||||
|
||||
Return OpenGRPCStream(Connection, "client", , , Timeout);
|
||||
|
||||
EndFunction
|
||||
|
||||
// Open server GRPC stream !NOCLI
|
||||
// Initializes a server stream for exchange
|
||||
//
|
||||
// Parameters:
|
||||
// Connection - Arbitrary - GRPC connection object - conn
|
||||
// Request - Structure Of KeyAndValue - Request data. See GetRequestSettings - req
|
||||
// Session - Structure Of KeyAndValue - Session settings. See GetSessionSettings - session
|
||||
// Timeout - Number - Timeout (in ms) - tout
|
||||
//
|
||||
// Returns:
|
||||
// Map Of KeyAndValue - Processing result
|
||||
Function OpenServerGRPCStream(Val Connection
|
||||
, Val Request = Undefined
|
||||
, Val Session = Undefined
|
||||
, Val Timeout = 10000) Export
|
||||
|
||||
Return OpenGRPCStream(Connection, "server", Request, Session, Timeout);
|
||||
|
||||
EndFunction
|
||||
|
||||
// Open bidirectional GRPC stream !NOCLI
|
||||
// Initializes a bidirectional stream for exchange
|
||||
//
|
||||
// Parameters:
|
||||
// Connection - Arbitrary - GRPC connection object - conn
|
||||
// Timeout - Number - Timeout (in ms) - tout
|
||||
//
|
||||
// Returns:
|
||||
// Map Of KeyAndValue - Processing result
|
||||
Function OpenBidirectionalGRPCStream(Val Connection, Val Timeout = 10000) Export
|
||||
|
||||
Return OpenGRPCStream(Connection, "bidi", , , Timeout);
|
||||
|
||||
EndFunction
|
||||
|
||||
// Get TLS Settings
|
||||
// Forms settings for using TLS
|
||||
//
|
||||
@@ -355,6 +401,23 @@ Procedure CompleteAuthorizationSettings(Val Authorization, ConnectionSettings)
|
||||
|
||||
EndProcedure
|
||||
|
||||
Function IsValidJSONFormat(Val Format)
|
||||
|
||||
Return Format = "JSON"
|
||||
Or Format = "JSONCompact"
|
||||
Or Format = "JSONColumns"
|
||||
Or Format = "JSONColumnsWithMetadata";
|
||||
|
||||
EndFunction
|
||||
|
||||
Function IsStringFormat(Val Format)
|
||||
|
||||
Return StrFind(Format, "CSV") > 0
|
||||
Or StrFind(Format, "TSV") > 0
|
||||
Or StrFind(Format, "Pretty") > 0;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region HTTP
|
||||
@@ -384,17 +447,17 @@ Function ExecuteRequestViaHTTP(Val Connection, Val Request, Val Session)
|
||||
.AddHeader("X-ClickHouse-Database", Database, True)
|
||||
.SetBinaryBody(Data);
|
||||
|
||||
SetAdditionalHTTPParameters(HTTPClient, Request);
|
||||
SetAdditionalHTTPHeaders(HTTPClient, Connection);
|
||||
SetHTTPAuthorization(HTTPClient, Connection);
|
||||
SetHTTPExternalTables(HTTPClient, ExternalTables);
|
||||
SetHTTPSession(HTTPClient, Session);
|
||||
SetAdditionalHTTPParameters(HTTPClient, Request);
|
||||
SetAdditionalHTTPHeaders(HTTPClient, Connection);
|
||||
|
||||
|
||||
HTTPClient.ProcessRequest("POST", True);
|
||||
|
||||
If HTTPClient.Error Then
|
||||
|
||||
Response = FormatHTTPErrorResponse(HTTPClient);
|
||||
|
||||
Else
|
||||
|
||||
Try
|
||||
@@ -407,8 +470,15 @@ Function ExecuteRequestViaHTTP(Val Connection, Val Request, Val Session)
|
||||
|
||||
If ResponseCode < 300 Then
|
||||
|
||||
Result = True;
|
||||
ResponseBody = HTTPClient.ReturnResponseAsJSONObject();
|
||||
Result = True;
|
||||
|
||||
If IsValidJSONFormat(DataFormat) Then
|
||||
ResponseBody = HTTPClient.ReturnResponseAsJSONObject();
|
||||
ElsIf IsStringFormat(DataFormat) Then
|
||||
ResponseBody = HTTPClient.ReturnResponseAsString();
|
||||
Else
|
||||
ResponseBody = HTTPClient.ReturnResponseAsBinaryData();
|
||||
EndIf;
|
||||
|
||||
If OPI_Tools.IsCLI() Then
|
||||
|
||||
@@ -488,7 +558,7 @@ Procedure SetHTTPAuthorization(HTTPClient, Val Connection)
|
||||
|
||||
ElsIf Authorization = "basic" Then
|
||||
|
||||
Login = OPI_Tools.GetOr(Connection, "user", Undefined);
|
||||
Login = OPI_Tools.GetOr(Connection, "user" , Undefined);
|
||||
Password = OPI_Tools.GetOr(Connection, "password", Undefined);
|
||||
|
||||
HTTPClient
|
||||
@@ -542,12 +612,33 @@ Procedure SetHTTPExternalTables(HTTPClient, Val ExternalTables)
|
||||
HTTPClient
|
||||
.AddURLParameter(FormatParameterName , TableFormat , True)
|
||||
.AddURLParameter(StructureParameterName, ColumnsAsString, True)
|
||||
|
||||
.AddMultipartFormDataFile(TableName, FileName, TableData, FileDataType, True);
|
||||
|
||||
EndDo;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure SetHTTPSession(HTTPClient, Val Session)
|
||||
|
||||
If Not ValueIsFilled(Session) Then
|
||||
Return;
|
||||
EndIf;
|
||||
|
||||
ErrorText = "An incorrect session information structure was passed";
|
||||
OPI_TypeConversion.GetKeyValueCollection(Session, ErrorText);
|
||||
|
||||
SessionID = OPI_Tools.GetOr(Session, "id" , Undefined);
|
||||
Check = OPI_Tools.GetOr(Session, "check" , Undefined);
|
||||
Timeout = OPI_Tools.GetOr(Session, "timeout", Undefined);
|
||||
|
||||
HTTPClient
|
||||
.AddURLParameter("session_id" , SessionID, True)
|
||||
.AddURLParameter("session_check" , Check , True)
|
||||
.AddURLParameter("session_timeout", Timeout , True);
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region GRPC
|
||||
@@ -568,6 +659,64 @@ Function ExecuteRequestViaGRPC(Val Connection, Val Request, Val Session)
|
||||
Return Connector;
|
||||
EndIf;
|
||||
|
||||
GRPCRequest = FormGRPCRequest(ConnectionSettings, Request, Session);
|
||||
|
||||
Service = GetGRPCServiceName();
|
||||
Method = "ExecuteQuery";
|
||||
Result = OPI_GRPC.ExecuteMethod(Connector, Service, Method, GRPCRequest);
|
||||
|
||||
ProcessGRPCResponse(Result);
|
||||
|
||||
If CloseConnection Then
|
||||
OPI_GRPC.CloseConnection(Connector);
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function OpenGRPCStream(Connection
|
||||
, Val View
|
||||
, Val Request = Undefined
|
||||
, Val Session = Undefined
|
||||
, Val Timeout = 10000)
|
||||
|
||||
Service = GetGRPCServiceName();
|
||||
|
||||
If View = "client" Then
|
||||
|
||||
Method = "ExecuteQueryWithStreamInput";
|
||||
Result = OPI_GRPC.InitializeClientStream(Connection, Service, Method, Timeout);
|
||||
|
||||
ElsIf View = "server" Then
|
||||
|
||||
Method = "ExecuteQueryWithStreamOutput";
|
||||
GRPCRequest = FormGRPCRequest(Connection, Request, Session);
|
||||
Result = OPI_GRPC.InitializeServerStream(Connection, Service, Method, GRPCRequest, Timeout);
|
||||
|
||||
Else
|
||||
|
||||
Method = "ExecuteQueryWithStreamIO";
|
||||
Result = OPI_GRPC.InitializeBidirectionalStream(Connection, Service, Method, Timeout);
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function FormGRPCRequest(Val Connection, Val Request, Val Session)
|
||||
|
||||
If Request = Undefined Then
|
||||
Return Request;
|
||||
EndIf;
|
||||
|
||||
If OPI_GRPC.IsConnector(Connection) Then
|
||||
ConnectionSettings = OPI_Tools.JsonToStructure(Connection.GetSettings());
|
||||
Else
|
||||
ConnectionSettings = Connection;
|
||||
EndIf;
|
||||
|
||||
Data = OPI_Tools.GetOr(Request, "data" , Undefined);
|
||||
RequestID = OPI_Tools.GetOr(Request, "id" , Undefined);
|
||||
QueryText = OPI_Tools.GetOr(Request, "query" , Undefined);
|
||||
@@ -586,16 +735,15 @@ Function ExecuteRequestViaGRPC(Val Connection, Val Request, Val Session)
|
||||
|
||||
SetGRPCAuthorization(GRPCRequest, ConnectionSettings);
|
||||
SetGRPCExternalTables(GRPCRequest, ExternalTables);
|
||||
SetGRPCSession(GRPCRequest, Session);
|
||||
|
||||
Service = "clickhouse.grpc.ClickHouse";
|
||||
Method = "ExecuteQuery";
|
||||
Result = OPI_GRPC.ExecuteMethod(Connector, Service, Method, GRPCRequest);
|
||||
Return GRPCRequest;
|
||||
|
||||
If CloseConnection Then
|
||||
OPI_GRPC.CloseConnection(Connector);
|
||||
EndIf;
|
||||
EndFunction
|
||||
|
||||
Return Result;
|
||||
Function GetGRPCServiceName()
|
||||
|
||||
Return "clickhouse.grpc.ClickHouse";
|
||||
|
||||
EndFunction
|
||||
|
||||
@@ -643,6 +791,10 @@ Procedure SetGRPCExternalTables(GRPCRequest, Val ExternalTables)
|
||||
TableData = OPI_Tools.GetOr(Table, "data" , Undefined);
|
||||
TableColumns = OPI_Tools.GetOr(Table, "cols" , Undefined);
|
||||
|
||||
If TableData <> Undefined Then
|
||||
OPI_TypeConversion.GetBinaryData(TableData, True);
|
||||
EndIf;
|
||||
|
||||
ErrorText = StrTemplate("Incorrect structure of columns for the table ""%1""", TableName);
|
||||
OPI_TypeConversion.GetKeyValueCollection(TableColumns, ErrorText);
|
||||
|
||||
@@ -674,6 +826,68 @@ Procedure SetGRPCExternalTables(GRPCRequest, Val ExternalTables)
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure SetGRPCSession(GRPCRequest, Val Session)
|
||||
|
||||
If Not ValueIsFilled(Session) Then
|
||||
Return;
|
||||
EndIf;
|
||||
|
||||
ErrorText = "An incorrect session information structure was passed";
|
||||
OPI_TypeConversion.GetKeyValueCollection(Session, ErrorText);
|
||||
|
||||
SessionID = OPI_Tools.GetOr(Session, "id" , Undefined);
|
||||
Check = OPI_Tools.GetOr(Session, "check" , Undefined);
|
||||
Timeout = OPI_Tools.GetOr(Session, "timeout", Undefined);
|
||||
|
||||
OPI_Tools.AddField("session_id" , SessionID, "String" , GRPCRequest);
|
||||
OPI_Tools.AddField("session_check" , Check , "Boolean", GRPCRequest);
|
||||
OPI_Tools.AddField("session_timeout", Timeout , "Number" , GRPCRequest);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ProcessGRPCResponse(Response)
|
||||
|
||||
If Not OPI_Tools.GetOr(Response, "result", False) Then
|
||||
Return;
|
||||
EndIf;
|
||||
|
||||
Format = OPI_Tools.GetOr(Response, "output_format", Undefined);
|
||||
|
||||
If Not ValueIsFilled(Format) Then
|
||||
Return;
|
||||
EndIf;
|
||||
|
||||
B64String = OPI_Tools.CollectionFieldExists(Response, "data.output.BYTES");
|
||||
|
||||
If ValueIsFilled(B64String) Then
|
||||
|
||||
If IsValidJSONFormat(Format) Then
|
||||
|
||||
Value = GetBinaryDataFromBase64String(B64String);
|
||||
Success = False;
|
||||
OPI_TypeConversion.GetCollection(Value, , Success);
|
||||
|
||||
If Not Success Then
|
||||
Value = GetStringFromBinaryData(Value);
|
||||
EndIf;
|
||||
|
||||
ElsIf IsStringFormat(Format) Then
|
||||
|
||||
Value = GetBinaryDataFromBase64String(B64String);
|
||||
Value = GetStringFromBinaryData(Value);
|
||||
|
||||
Else
|
||||
|
||||
Return;
|
||||
|
||||
EndIf;
|
||||
|
||||
Response["data"]["output"] = Value;
|
||||
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
@@ -688,10 +902,6 @@ Function ПолучитьНастройкиСоединенияHTTP(Val Адре
|
||||
Return GetHTTPConnectionSettings(Адрес, Авторизация, ДопЗаголовки);
|
||||
EndFunction
|
||||
|
||||
Function ПолучитьНастройкиСоединенияGRPC(Val Адрес, Val Авторизация = Undefined, Val Meta = Undefined, Val Tls = Undefined) Export
|
||||
Return GetGRPCConnectionSettings(Адрес, Авторизация, Meta, Tls);
|
||||
EndFunction
|
||||
|
||||
Function ПолучитьНастройкиЗапроса(Val Текст, Val БазаДанных = Undefined, Val IDЗапроса = Undefined, Val Данные = Undefined, Val ФорматОтвета = "JSON", Val ВнешниеТаблицы = Undefined, Val Настройки = Undefined) Export
|
||||
Return GetRequestSettings(Текст, БазаДанных, IDЗапроса, Данные, ФорматОтвета, ВнешниеТаблицы, Настройки);
|
||||
EndFunction
|
||||
@@ -704,10 +914,26 @@ Function ПолучитьНастройкиСессии(Val IDСессии = Und
|
||||
Return GetSessionSettings(IDСессии, ПроверятьСессию, Таймаут);
|
||||
EndFunction
|
||||
|
||||
Function ПолучитьНастройкиСоединенияGRPC(Val Адрес, Val Авторизация = Undefined, Val Meta = Undefined, Val Tls = Undefined) Export
|
||||
Return GetGRPCConnectionSettings(Адрес, Авторизация, Meta, Tls);
|
||||
EndFunction
|
||||
|
||||
Function ОткрытьСоединениеGRPC(Val НастройкиСоединения) Export
|
||||
Return CreateGRPCConnection(НастройкиСоединения);
|
||||
EndFunction
|
||||
|
||||
Function ОткрытьКлиентскийПотокGRPC(Val Соединение, Val Таймаут = 10000) Export
|
||||
Return OpenClientGRPCStream(Соединение, Таймаут);
|
||||
EndFunction
|
||||
|
||||
Function ОткрытьСерверныйПотокGRPC(Val Соединение, Val Запрос = Undefined, Val Сессия = Undefined, Val Таймаут = 10000) Export
|
||||
Return OpenServerGRPCStream(Соединение, Запрос, Сессия, Таймаут);
|
||||
EndFunction
|
||||
|
||||
Function ОткрытьДвунаправленныйПотокGRPC(Val Соединение, Val Таймаут = 10000) Export
|
||||
Return OpenBidirectionalGRPCStream(Соединение, Таймаут);
|
||||
EndFunction
|
||||
|
||||
Function ПолучитьНастройкиTls(Val ОтключитьПроверкуСертификатов, Val ПутьКСертификату = "") Export
|
||||
Return GetTlsSettings(ОтключитьПроверкуСертификатов, ПутьКСертификату);
|
||||
EndFunction
|
||||
|
||||
+325
-25
@@ -3362,11 +3362,17 @@ EndProcedure
|
||||
Procedure CH_CommonMethods() Export
|
||||
|
||||
TestParameters = New Structure;
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Address" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_User" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Password", TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Address" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_AddressGRPC", TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_User" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Password" , TestParameters);
|
||||
|
||||
ClickHouse_ExecuteRequest(TestParameters);
|
||||
ClickHouse_GetHTTPConnectionSettings(TestParameters);
|
||||
ClickHouse_GetGRPCConnectionSettings(TestParameters);
|
||||
ClickHouse_GetRequestSettings(TestParameters);
|
||||
ClickHouse_GetExternalTableStructure(TestParameters);
|
||||
ClickHouse_GetSessionSettings(TestParameters);
|
||||
|
||||
EndProcedure
|
||||
|
||||
@@ -3378,6 +3384,7 @@ Procedure CH_GRPC() Export
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Password" , TestParameters);
|
||||
|
||||
ClickHouse_CreateGRPCConnection(TestParameters);
|
||||
ClickHouse_GetTlsSettings(TestParameters);
|
||||
|
||||
EndProcedure
|
||||
|
||||
@@ -27069,9 +27076,9 @@ Procedure ClickHouse_ExecuteRequest(FunctionParameters)
|
||||
|
||||
Connection = OPI_ClickHouse.GetHTTPConnectionSettings(URL, Authorization);
|
||||
|
||||
// Request (simple)
|
||||
// Request (table creation)
|
||||
|
||||
QueryText = "CREATE TABLE events (
|
||||
QueryText = "CREATE TABLE IF NOT EXISTS events (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -27080,15 +27087,15 @@ Procedure ClickHouse_ExecuteRequest(FunctionParameters)
|
||||
|) ENGINE = MergeTree()
|
||||
|ORDER BY (timestamp, id)";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings("DROP TABLE events"); // SKIP
|
||||
Request = OPI_ClickHouse.GetRequestSettings("DROP TABLE IF EXISTS events"); // SKIP
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request); // SKIP
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "Simple"); // SKIP
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "TableCreation"); // SKIP
|
||||
|
||||
// Request (with data)
|
||||
// Request (data insertion)
|
||||
|
||||
QueryText = "INSERT INTO events FORMAT JSON";
|
||||
|
||||
@@ -27128,6 +27135,89 @@ Procedure ClickHouse_ExecuteRequest(FunctionParameters)
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, Database, RequestID, Data, DataFormat);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "DataInsert"); // SKIP
|
||||
|
||||
// Request with external table
|
||||
|
||||
TableName = "ext_users";
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("id" , "UInt64");
|
||||
ColoumnsStruct.Insert("name", "String");
|
||||
|
||||
Tab = Chars.Tab;
|
||||
TableData = "1" + Tab + "John
|
||||
|2" + Tab + "Jane
|
||||
|3" + Tab + "Bob";
|
||||
|
||||
ExternalTable = OPI_ClickHouse.GetExternalTableStructure(TableName, ColoumnsStruct, TableData, "TSV");
|
||||
|
||||
ExternalTablesArray = New Array;
|
||||
ExternalTablesArray.Add(ExternalTable);
|
||||
|
||||
QueryText = "SELECT * FROM ext_users WHERE id > 1";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, , , , "JSON", ExternalTablesArray);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "ExternalTable"); // SKIP
|
||||
|
||||
// Selection
|
||||
|
||||
SelectionText = "SELECT * FROM events";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(SelectionText, , , , "JSON");
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest"); // SKIP
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(SelectionText, , , , "CSV");
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "CSVSelection");
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(SelectionText, , , , "TSV");
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "TSVSelection");
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(SelectionText, , , , "JSONCompact");
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "JSONCompactSelection");
|
||||
|
||||
QueryText = "SELECT 1 AS result";
|
||||
|
||||
AdditionalSettings = New Map;
|
||||
AdditionalSettings.Insert("max_threads", "4");
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, , , , "JSON", , AdditionalSettings);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "AdditionalSettings");
|
||||
|
||||
Session = OPI_ClickHouse.GetSessionSettings(String(New UUID()));
|
||||
|
||||
QueryText = "CREATE TEMPORARY TABLE temp_session_test (id UInt64, value String)";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request, Session);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "SessionCreation");
|
||||
|
||||
QueryText = "INSERT INTO temp_session_test VALUES (1, 'test1'), (2, 'test2')";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request, Session);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "SessionInsert");
|
||||
|
||||
QueryText = "SELECT * FROM temp_session_test";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, , , , "JSON");
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request, Session);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest");
|
||||
@@ -27143,14 +27233,16 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
|
||||
Authorization = New Structure(Login, Password);
|
||||
|
||||
// Connection creation
|
||||
|
||||
ConnectionSettings = OPI_ClickHouse.GetGRPCConnectionSettings(URL, Authorization);
|
||||
Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings);
|
||||
|
||||
Process(Connection, "ClickHouse", "CreateGRPCConnection"); // SKIP
|
||||
Process(Connection, "ClickHouse", "CreateGRPCConnection", "Openning"); // SKIP
|
||||
|
||||
// Request (simple)
|
||||
// Request via open connection (table creation)
|
||||
|
||||
QueryText = "CREATE TABLE events (
|
||||
QueryText = "CREATE TABLE IF NOT EXISTS events_grpc (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -27159,14 +27251,17 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
|) ENGINE = MergeTree()
|
||||
|ORDER BY (timestamp, id)";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings("DROP TABLE IF EXISTS events_grpc"); // SKIP
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request); // SKIP
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "Simple"); // SKIP
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "TableCreation"); // SKIP
|
||||
|
||||
// Request (with data)
|
||||
// Data insertion
|
||||
|
||||
QueryText = "INSERT INTO events FORMAT JSON";
|
||||
QueryText = "INSERT INTO events_grpc FORMAT JSON";
|
||||
|
||||
DataFormat = "JSON";
|
||||
DataArray = New Array;
|
||||
@@ -27180,15 +27275,7 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
Record1.Insert("event_type", "click");
|
||||
Record1.Insert("payload" , "{}");
|
||||
|
||||
Record2 = New Structure;
|
||||
Record2.Insert("id" , 2);
|
||||
Record2.Insert("timestamp" , CurrentDate);
|
||||
Record2.Insert("user_id" , 200);
|
||||
Record2.Insert("event_type", "hover");
|
||||
Record2.Insert("payload" , "{}");
|
||||
|
||||
DataArray.Add(Record1);
|
||||
DataArray.Add(Record2);
|
||||
|
||||
Meta = New Array;
|
||||
Meta.Add(New Structure("name,type", "id" , "UInt64"));
|
||||
@@ -27198,15 +27285,228 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
Meta.Add(New Structure("name,type", "payload" , "String"));
|
||||
|
||||
Data = New Structure("meta,data", Meta, DataArray);
|
||||
Database = "default";
|
||||
RequestID = String(New UUID());
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, Database, RequestID, Data, DataFormat);
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, "default", RequestID, Data, DataFormat);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "DataInsert"); // SKIP
|
||||
|
||||
// Selection
|
||||
|
||||
SelectionText = "SELECT * FROM events_grpc";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(SelectionText, , , , "JSON");
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "Selection"); // SKIP
|
||||
|
||||
// Request with external table via gRPC
|
||||
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("id" , "UInt64");
|
||||
ColoumnsStruct.Insert("name", "String");
|
||||
|
||||
Tab = Chars.Tab;
|
||||
TableData = "1" + Tab + "John
|
||||
|2" + Tab + "Jane";
|
||||
|
||||
ExternalTable = OPI_ClickHouse.GetExternalTableStructure("ext_grpc", ColoumnsStruct, TableData, "TSV");
|
||||
|
||||
ExternalTablesArray = New Array;
|
||||
ExternalTablesArray.Add(ExternalTable);
|
||||
|
||||
QueryText = "SELECT * FROM ext_grpc";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, , , , "JSON", ExternalTablesArray);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "Complex");
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetHTTPConnectionSettings(FunctionParameters)
|
||||
|
||||
URL = FunctionParameters["ClickHouse_Address"];
|
||||
|
||||
// No authorization
|
||||
|
||||
Result = OPI_ClickHouse.GetHTTPConnectionSettings(URL);
|
||||
|
||||
Process(Result, "ClickHouse", "GetHTTPConnectionSettings", "NoAuthorization"); // SKIP
|
||||
|
||||
// With basic authorization
|
||||
|
||||
Login = FunctionParameters["ClickHouse_User"];
|
||||
Password = FunctionParameters["ClickHouse_Password"];
|
||||
|
||||
Authorization = New Structure(Login, Password);
|
||||
|
||||
Result = OPI_ClickHouse.GetHTTPConnectionSettings(URL, Authorization);
|
||||
|
||||
Process(Result, "ClickHouse", "GetHTTPConnectionSettings", "BasicAuthorization"); // SKIP
|
||||
|
||||
// With JWT authorization
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Result = OPI_ClickHouse.GetHTTPConnectionSettings(URL, JWT);
|
||||
|
||||
Process(Result, "ClickHouse", "GetHTTPConnectionSettings", "JWTAuthorization"); // SKIP
|
||||
|
||||
// With additional headers
|
||||
|
||||
AdditionalHeaders = New Map;
|
||||
AdditionalHeaders.Insert("X-Custom-Header", "CustomValue");
|
||||
|
||||
Result = OPI_ClickHouse.GetHTTPConnectionSettings(URL, Authorization, AdditionalHeaders);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetHTTPConnectionSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetGRPCConnectionSettings(FunctionParameters)
|
||||
|
||||
URL = FunctionParameters["ClickHouse_AddressGRPC"];
|
||||
|
||||
// No authorization
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL);
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "NoAuthorization"); // SKIP
|
||||
|
||||
// With basic authorization
|
||||
|
||||
Login = FunctionParameters["ClickHouse_User"];
|
||||
Password = FunctionParameters["ClickHouse_Password"];
|
||||
|
||||
Authorization = New Structure(Login, Password);
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL, Authorization);
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "BasicAuthorization"); // SKIP
|
||||
|
||||
// With JWT authorization
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL, JWT);
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "JWTAuthorization"); // SKIP
|
||||
|
||||
// With metadata
|
||||
|
||||
Meta = New Map;
|
||||
Meta.Insert("custom-meta", "value");
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL, Authorization, Meta);
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "WithMetadata"); // SKIP
|
||||
|
||||
// With TLS settings
|
||||
|
||||
Tls = OPI_ClickHouse.GetTlsSettings(True);
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL, Authorization, , Tls);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetRequestSettings(FunctionParameters)
|
||||
|
||||
// Minimal request
|
||||
|
||||
QueryText = "SELECT 1";
|
||||
|
||||
Result = OPI_ClickHouse.GetRequestSettings(QueryText);
|
||||
|
||||
Process(Result, "ClickHouse", "GetRequestSettings", "Minimal"); // SKIP
|
||||
|
||||
// Full request
|
||||
|
||||
RequestID = String(New UUID());
|
||||
Data = New Structure("meta,data", New Array, New Array);
|
||||
Database = "default";
|
||||
ResponseFormat = "CSV";
|
||||
|
||||
AdditionalSettings = New Map;
|
||||
AdditionalSettings.Insert("max_threads", "4");
|
||||
|
||||
ColoumnsStruct = New Structure("id,name", "UInt64", "String");
|
||||
ExternalTable = OPI_ClickHouse.GetExternalTableStructure("ext", ColoumnsStruct);
|
||||
|
||||
TableArray = New Array;
|
||||
TableArray.Add(ExternalTable);
|
||||
|
||||
Result = OPI_ClickHouse.GetRequestSettings(QueryText
|
||||
, Database
|
||||
, RequestID
|
||||
, Data
|
||||
, ResponseFormat
|
||||
, TableArray
|
||||
, AdditionalSettings);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetRequestSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetExternalTableStructure(FunctionParameters)
|
||||
|
||||
// Minimal structure
|
||||
|
||||
TableName = "external_data";
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("id" , "UInt64");
|
||||
ColoumnsStruct.Insert("name", "String");
|
||||
|
||||
Result = OPI_ClickHouse.GetExternalTableStructure(TableName, ColoumnsStruct);
|
||||
|
||||
Process(Result, "ClickHouse", "GetExternalTableStructure", "Minimal"); // SKIP
|
||||
|
||||
|
||||
// With TSV data
|
||||
|
||||
TableData = StrTemplate("1%1Test
|
||||
|2%2Test2", Chars.Tab);
|
||||
|
||||
Result = OPI_ClickHouse.GetExternalTableStructure(TableName, ColoumnsStruct, TableData, "TSV");
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetExternalTableStructure");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetSessionSettings(FunctionParameters)
|
||||
|
||||
SessionID = String(New UUID);
|
||||
Check = True;
|
||||
Timeout = 120;
|
||||
|
||||
Result = OPI_ClickHouse.GetSessionSettings(SessionID, Check, Timeout);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetSessionSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetTlsSettings(FunctionParameters)
|
||||
|
||||
Result = OPI_ClickHouse.GetTlsSettings(False);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetTlsSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
|
||||
+500
-25
@@ -3363,11 +3363,17 @@ EndProcedure
|
||||
Procedure CH_CommonMethods() Export
|
||||
|
||||
TestParameters = New Structure;
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Address" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_User" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Password", TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Address" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_AddressGRPC", TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_User" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Password" , TestParameters);
|
||||
|
||||
ClickHouse_ExecuteRequest(TestParameters);
|
||||
ClickHouse_GetHTTPConnectionSettings(TestParameters);
|
||||
ClickHouse_GetGRPCConnectionSettings(TestParameters);
|
||||
ClickHouse_GetRequestSettings(TestParameters);
|
||||
ClickHouse_GetExternalTableStructure(TestParameters);
|
||||
ClickHouse_GetSessionSettings(TestParameters);
|
||||
|
||||
EndProcedure
|
||||
|
||||
@@ -3379,6 +3385,7 @@ Procedure CH_GRPC() Export
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Password" , TestParameters);
|
||||
|
||||
ClickHouse_CreateGRPCConnection(TestParameters);
|
||||
ClickHouse_GetTlsSettings(TestParameters);
|
||||
|
||||
EndProcedure
|
||||
|
||||
@@ -35778,9 +35785,9 @@ Procedure ClickHouse_ExecuteRequest(FunctionParameters)
|
||||
|
||||
Connection = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options);
|
||||
|
||||
// Request (simple)
|
||||
// Request (table creation)
|
||||
|
||||
QueryText = "CREATE TABLE events (
|
||||
QueryText = "CREATE TABLE IF NOT EXISTS events (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -35789,7 +35796,7 @@ Procedure ClickHouse_ExecuteRequest(FunctionParameters)
|
||||
|) ENGINE = MergeTree()
|
||||
|ORDER BY (timestamp, id)";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings("DROP TABLE events"); // SKIP
|
||||
Request = OPI_ClickHouse.GetRequestSettings("DROP TABLE IF EXISTS events"); // SKIP
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request); // SKIP
|
||||
|
||||
Options = New Structure;
|
||||
@@ -35802,9 +35809,9 @@ Procedure ClickHouse_ExecuteRequest(FunctionParameters)
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "Simple"); // SKIP
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "TableCreation"); // SKIP
|
||||
|
||||
// Request (with data)
|
||||
// Request (data insertion)
|
||||
|
||||
QueryText = "INSERT INTO events FORMAT JSON";
|
||||
|
||||
@@ -35855,6 +35862,173 @@ Procedure ClickHouse_ExecuteRequest(FunctionParameters)
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "DataInsert"); // SKIP
|
||||
|
||||
// Request with external table
|
||||
|
||||
TableName = "ext_users";
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("id" , "UInt64");
|
||||
ColoumnsStruct.Insert("name", "String");
|
||||
|
||||
Tab = Chars.Tab;
|
||||
TableData = "1" + Tab + "John
|
||||
|2" + Tab + "Jane
|
||||
|3" + Tab + "Bob";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("name", TableName);
|
||||
Options.Insert("cols", ColoumnsStruct);
|
||||
Options.Insert("data", TableData);
|
||||
Options.Insert("format", "TSV");
|
||||
|
||||
ExternalTable = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options);
|
||||
|
||||
ExternalTablesArray = New Array;
|
||||
ExternalTablesArray.Add(ExternalTable);
|
||||
|
||||
QueryText = "SELECT * FROM ext_users WHERE id > 1";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
Options.Insert("format", "JSON");
|
||||
Options.Insert("ext", ExternalTablesArray);
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "ExternalTable"); // SKIP
|
||||
|
||||
// Selection
|
||||
|
||||
SelectionText = "SELECT * FROM events";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", SelectionText);
|
||||
Options.Insert("format", "JSON");
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest"); // SKIP
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", SelectionText);
|
||||
Options.Insert("format", "CSV");
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "CSVSelection");
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", SelectionText);
|
||||
Options.Insert("format", "TSV");
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "TSVSelection");
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", SelectionText);
|
||||
Options.Insert("format", "JSONCompact");
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "JSONCompactSelection");
|
||||
|
||||
QueryText = "SELECT 1 AS result";
|
||||
|
||||
AdditionalSettings = New Map;
|
||||
AdditionalSettings.Insert("max_threads", "4");
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
Options.Insert("format", "JSON");
|
||||
Options.Insert("settings", AdditionalSettings);
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "AdditionalSettings");
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("id", String);
|
||||
|
||||
Session = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetSessionSettings", Options);
|
||||
|
||||
QueryText = "CREATE TEMPORARY TABLE temp_session_test (id UInt64, value String)";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
Options.Insert("session", Session);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "SessionCreation");
|
||||
|
||||
QueryText = "INSERT INTO temp_session_test VALUES (1, 'test1'), (2, 'test2')";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
Options.Insert("session", Session);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "SessionInsert");
|
||||
|
||||
QueryText = "SELECT * FROM temp_session_test";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
Options.Insert("format", "JSON");
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
Options.Insert("session", Session);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest");
|
||||
@@ -35870,6 +36044,8 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
|
||||
Authorization = New Structure(Login, Password);
|
||||
|
||||
// Connection creation
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
Options.Insert("auth", Authorization);
|
||||
@@ -35877,11 +36053,11 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options);
|
||||
Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings);
|
||||
|
||||
Process(Connection, "ClickHouse", "CreateGRPCConnection"); // SKIP
|
||||
Process(Connection, "ClickHouse", "CreateGRPCConnection", "Openning"); // SKIP
|
||||
|
||||
// Request (simple)
|
||||
// Request via open connection (table creation)
|
||||
|
||||
QueryText = "CREATE TABLE events (
|
||||
QueryText = "CREATE TABLE IF NOT EXISTS events_grpc (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -35890,6 +36066,9 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
|) ENGINE = MergeTree()
|
||||
|ORDER BY (timestamp, id)";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings("DROP TABLE IF EXISTS events_grpc"); // SKIP
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request); // SKIP
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
|
||||
@@ -35900,11 +36079,11 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "Simple"); // SKIP
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "TableCreation"); // SKIP
|
||||
|
||||
// Request (with data)
|
||||
// Data insertion
|
||||
|
||||
QueryText = "INSERT INTO events FORMAT JSON";
|
||||
QueryText = "INSERT INTO events_grpc FORMAT JSON";
|
||||
|
||||
DataFormat = "JSON";
|
||||
DataArray = New Array;
|
||||
@@ -35918,15 +36097,7 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
Record1.Insert("event_type", "click");
|
||||
Record1.Insert("payload" , "{}");
|
||||
|
||||
Record2 = New Structure;
|
||||
Record2.Insert("id" , 2);
|
||||
Record2.Insert("timestamp" , CurrentDate);
|
||||
Record2.Insert("user_id" , 200);
|
||||
Record2.Insert("event_type", "hover");
|
||||
Record2.Insert("payload" , "{}");
|
||||
|
||||
DataArray.Add(Record1);
|
||||
DataArray.Add(Record2);
|
||||
|
||||
Meta = New Array;
|
||||
Meta.Add(New Structure("name,type", "id" , "UInt64"));
|
||||
@@ -35936,12 +36107,11 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
Meta.Add(New Structure("name,type", "payload" , "String"));
|
||||
|
||||
Data = New Structure("meta,data", Meta, DataArray);
|
||||
Database = "default";
|
||||
RequestID = String(New UUID());
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
Options.Insert("db", Database);
|
||||
Options.Insert("db", "default");
|
||||
Options.Insert("id", RequestID);
|
||||
Options.Insert("data", Data);
|
||||
Options.Insert("format", DataFormat);
|
||||
@@ -35953,9 +36123,314 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "DataInsert"); // SKIP
|
||||
|
||||
// Selection
|
||||
|
||||
SelectionText = "SELECT * FROM events_grpc";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", SelectionText);
|
||||
Options.Insert("format", "JSON");
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "Selection"); // SKIP
|
||||
|
||||
// Request with external table via gRPC
|
||||
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("id" , "UInt64");
|
||||
ColoumnsStruct.Insert("name", "String");
|
||||
|
||||
Tab = Chars.Tab;
|
||||
TableData = "1" + Tab + "John
|
||||
|2" + Tab + "Jane";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("name", "ext_grpc");
|
||||
Options.Insert("cols", ColoumnsStruct);
|
||||
Options.Insert("data", TableData);
|
||||
Options.Insert("format", "TSV");
|
||||
|
||||
ExternalTable = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options);
|
||||
|
||||
ExternalTablesArray = New Array;
|
||||
ExternalTablesArray.Add(ExternalTable);
|
||||
|
||||
QueryText = "SELECT * FROM ext_grpc";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
Options.Insert("format", "JSON");
|
||||
Options.Insert("ext", ExternalTablesArray);
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "Complex");
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetHTTPConnectionSettings(FunctionParameters)
|
||||
|
||||
URL = FunctionParameters["ClickHouse_Address"];
|
||||
|
||||
// No authorization
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "GetHTTPConnectionSettings", "NoAuthorization"); // SKIP
|
||||
|
||||
// With basic authorization
|
||||
|
||||
Login = FunctionParameters["ClickHouse_User"];
|
||||
Password = FunctionParameters["ClickHouse_Password"];
|
||||
|
||||
Authorization = New Structure(Login, Password);
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
Options.Insert("auth", Authorization);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "GetHTTPConnectionSettings", "BasicAuthorization"); // SKIP
|
||||
|
||||
// With JWT authorization
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
Options.Insert("auth", JWT);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "GetHTTPConnectionSettings", "JWTAuthorization"); // SKIP
|
||||
|
||||
// With additional headers
|
||||
|
||||
AdditionalHeaders = New Map;
|
||||
AdditionalHeaders.Insert("X-Custom-Header", "CustomValue");
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
Options.Insert("auth", Authorization);
|
||||
Options.Insert("headers", AdditionalHeaders);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetHTTPConnectionSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetGRPCConnectionSettings(FunctionParameters)
|
||||
|
||||
URL = FunctionParameters["ClickHouse_AddressGRPC"];
|
||||
|
||||
// No authorization
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "NoAuthorization"); // SKIP
|
||||
|
||||
// With basic authorization
|
||||
|
||||
Login = FunctionParameters["ClickHouse_User"];
|
||||
Password = FunctionParameters["ClickHouse_Password"];
|
||||
|
||||
Authorization = New Structure(Login, Password);
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
Options.Insert("auth", Authorization);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "BasicAuthorization"); // SKIP
|
||||
|
||||
// With JWT authorization
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
Options.Insert("auth", JWT);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "JWTAuthorization"); // SKIP
|
||||
|
||||
// With metadata
|
||||
|
||||
Meta = New Map;
|
||||
Meta.Insert("custom-meta", "value");
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
Options.Insert("auth", Authorization);
|
||||
Options.Insert("meta", Meta);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "WithMetadata"); // SKIP
|
||||
|
||||
// With TLS settings
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("trust", Истина);
|
||||
|
||||
Tls = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetTlsSettings", Options);
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
Options.Insert("auth", Authorization);
|
||||
Options.Insert("tls", Tls);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetRequestSettings(FunctionParameters)
|
||||
|
||||
// Minimal request
|
||||
|
||||
QueryText = "SELECT 1";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "GetRequestSettings", "Minimal"); // SKIP
|
||||
|
||||
// Full request
|
||||
|
||||
RequestID = String(New UUID());
|
||||
Data = New Structure("meta,data", New Array, New Array);
|
||||
Database = "default";
|
||||
ResponseFormat = "CSV";
|
||||
|
||||
AdditionalSettings = New Map;
|
||||
AdditionalSettings.Insert("max_threads", "4");
|
||||
|
||||
ColoumnsStruct = New Structure("id,name", "UInt64", "String");
|
||||
Options = New Structure;
|
||||
Options.Insert("name", "ext");
|
||||
Options.Insert("cols", ColoumnsStruct);
|
||||
|
||||
ExternalTable = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options);
|
||||
|
||||
TableArray = New Array;
|
||||
TableArray.Add(ExternalTable);
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
Options.Insert("db", Database);
|
||||
Options.Insert("id", RequestID);
|
||||
Options.Insert("data", Data);
|
||||
Options.Insert("format", ResponseFormat);
|
||||
Options.Insert("ext", TableArray);
|
||||
Options.Insert("settings", AdditionalSettings);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetRequestSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetExternalTableStructure(FunctionParameters)
|
||||
|
||||
// Minimal structure
|
||||
|
||||
TableName = "external_data";
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("id" , "UInt64");
|
||||
ColoumnsStruct.Insert("name", "String");
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("name", TableName);
|
||||
Options.Insert("cols", ColoumnsStruct);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "GetExternalTableStructure", "Minimal"); // SKIP
|
||||
|
||||
|
||||
// With TSV data
|
||||
|
||||
TableData = StrTemplate("1%1Test
|
||||
|2%2Test2", Chars.Tab);
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("name", TableName);
|
||||
Options.Insert("cols", ColoumnsStruct);
|
||||
Options.Insert("data", TableData);
|
||||
Options.Insert("format", "TSV");
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetExternalTableStructure");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetSessionSettings(FunctionParameters)
|
||||
|
||||
SessionID = String(New UUID);
|
||||
Check = True;
|
||||
Timeout = 120;
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("id", SessionID);
|
||||
Options.Insert("check", Check);
|
||||
Options.Insert("timeout", Timeout);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetSessionSettings", Options);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetSessionSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetTlsSettings(FunctionParameters)
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("trust", Ложь);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetTlsSettings", Options);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetTlsSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
|
||||
+204
@@ -12962,12 +12962,216 @@ Function Check_ClickHouse_ExecuteRequest(Val Result, Option)
|
||||
Result.Insert("body", GetStringFromBinaryData(Result["body"]));
|
||||
EndIf;
|
||||
|
||||
If Option = "TableCreation" Or Option = "DataInsert" Then
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["status"]).Равно(200);
|
||||
|
||||
ElsIf Option = "JSONSelection" Or Option = "JSONCompactSelection" Then
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["status"]).Равно(200);
|
||||
ExpectsThat(Result["body"]).ИмеетТип("Map");
|
||||
|
||||
ElsIf Option = "CSVSelection" Or Option = "TSVSelection" Then
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["status"]).Равно(200);
|
||||
ExpectsThat(Result["body"]).ИмеетТип("String");
|
||||
|
||||
ElsIf Option = "ExternalTable" Then
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["body"]).ИмеетТип("Map");
|
||||
ExpectsThat(Result["body"]["rows"]).Равно(2);
|
||||
|
||||
ElsIf Option = "AdditionalSettings" Then
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["body"]).ИмеетТип("Map");
|
||||
|
||||
ElsIf Option = "SessionCreation" Or Option = "SessionInsert" Then
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["status"]).Равно(200);
|
||||
|
||||
Else
|
||||
|
||||
// Primary variant - Selection from session temporary table
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["body"]).ИмеетТип("Map");
|
||||
ExpectsThat(Result["body"]["rows"]).Равно(2);
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_ClickHouse_CreateGRPCConnection(Val Result, Option)
|
||||
|
||||
If Option = "Openning" Then
|
||||
|
||||
Result = String(TypeOf(Result));
|
||||
ExpectsThat(Result).Равно("AddIn.OPI_GRPC.Main");
|
||||
|
||||
ElsIf Option = "TableCreation" Or Option = "DataInsert" Then
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
|
||||
ElsIf Option = "Selection" Then
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
|
||||
Else
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_ClickHouse_GetHTTPConnectionSettings(Val Result, Option)
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Structure").Заполнено();
|
||||
ExpectsThat(Result.Property("address")).Равно(True);
|
||||
ExpectsThat(Result.Property("transport")).Равно(True);
|
||||
ExpectsThat(Result["transport"]).Равно("http");
|
||||
|
||||
If Option = "NoAuthorization" Then
|
||||
|
||||
ExpectsThat(Result.Property("auth_type")).Равно(False);
|
||||
|
||||
ElsIf Option = "BasicAuthorization" Then
|
||||
|
||||
ExpectsThat(Result["auth_type"]).Равно("basic");
|
||||
ExpectsThat(Result.Property("user")).Равно(True);
|
||||
ExpectsThat(Result.Property("password")).Равно(True);
|
||||
|
||||
ElsIf Option = "JWTAuthorization" Then
|
||||
|
||||
ExpectsThat(Result["auth_type"]).Равно("jwt");
|
||||
ExpectsThat(Result.Property("token")).Равно(True);
|
||||
|
||||
ElsIf Not ValueIsFilled(Option) Then
|
||||
|
||||
ExpectsThat(Result.Property("headers")).Равно(True);
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_ClickHouse_GetGRPCConnectionSettings(Val Result, Option)
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Structure").Заполнено();
|
||||
ExpectsThat(Result.Property("address")).Равно(True);
|
||||
ExpectsThat(Result.Property("transport")).Равно(True);
|
||||
ExpectsThat(Result["transport"]).Равно("grpc");
|
||||
|
||||
If Option = "NoAuthorization" Then
|
||||
|
||||
ExpectsThat(Result.Property("auth_type")).Равно(False);
|
||||
|
||||
ElsIf Option = "BasicAuthorization" Then
|
||||
|
||||
ExpectsThat(Result["auth_type"]).Равно("basic");
|
||||
ExpectsThat(Result.Property("user")).Равно(True);
|
||||
ExpectsThat(Result.Property("password")).Равно(True);
|
||||
|
||||
ElsIf Option = "JWTAuthorization" Then
|
||||
|
||||
ExpectsThat(Result["auth_type"]).Равно("jwt");
|
||||
ExpectsThat(Result.Property("token")).Равно(True);
|
||||
|
||||
ElsIf Option = "WithMetadata" Then
|
||||
|
||||
ExpectsThat(Result.Property("metadata")).Равно(True);
|
||||
|
||||
ElsIf Not ValueIsFilled(Option) Then
|
||||
|
||||
ExpectsThat(Result.Property("tls")).Равно(True);
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_ClickHouse_GetRequestSettings(Val Result, Option)
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Structure").Заполнено();
|
||||
ExpectsThat(Result.Property("query")).Равно(True);
|
||||
|
||||
If Option = "Minimal" Then
|
||||
|
||||
ExpectsThat(Result["query"]).Равно("SELECT 1");
|
||||
|
||||
Else
|
||||
|
||||
ExpectsThat(Result["database"]).Равно("default");
|
||||
ExpectsThat(Result["id"]).Заполнено();
|
||||
ExpectsThat(Result.Property("data")).Равно(True);
|
||||
ExpectsThat(Result["format"]).Равно("CSV");
|
||||
ExpectsThat(Result.Property("external_tables")).Равно(True);
|
||||
ExpectsThat(Result["external_tables"]).ИмеетТип("Array");
|
||||
ExpectsThat(Result.Property("settings")).Равно(True);
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_ClickHouse_GetExternalTableStructure(Val Result, Option)
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Structure").Заполнено();
|
||||
ExpectsThat(Result.Property("name")).Равно(True);
|
||||
ExpectsThat(Result.Property("cols")).Равно(True);
|
||||
ExpectsThat(Result["name"]).Равно("external_data");
|
||||
|
||||
If Option = "Minimal" Then
|
||||
|
||||
ExpectsThat(Result.Property("data")).Равно(False);
|
||||
|
||||
ElsIf Option = "TSV" Or Not ValueIsFilled(Option) Then
|
||||
|
||||
ExpectsThat(Result["format"]).Равно("TSV");
|
||||
ExpectsThat(Result.Property("data")).Равно(True);
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_ClickHouse_GetSessionSettings(Val Result, Option)
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Structure").Заполнено();
|
||||
ExpectsThat(Result["id"]).ИмеетТип("String").Заполнено();
|
||||
ExpectsThat(Result["check"]).Равно(True);
|
||||
ExpectsThat(Result["timeout"]).Равно(120);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_ClickHouse_GetTlsSettings(Val Result, Option)
|
||||
|
||||
ExpectsThat(OPI_Tools.ThisIsCollection(Result, True)).Равно(True);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
+28
-5
@@ -41,7 +41,8 @@
|
||||
|
||||
Procedure GetBinaryData(Value, Val Force = False, Val TryB64 = True) Export
|
||||
|
||||
If Value = Undefined Then
|
||||
If Value = Undefined Then
|
||||
Value = GetBinaryDataFromString("");
|
||||
Return;
|
||||
EndIf;
|
||||
|
||||
@@ -98,12 +99,16 @@ Procedure GetBinaryOrStream(Value) Export
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure GetCollection(Value, ByNetwork = True) Export
|
||||
Procedure GetCollection(Value, ByNetwork = True, Success = False) Export
|
||||
|
||||
Success = False;
|
||||
|
||||
If Value = Undefined Then
|
||||
Return;
|
||||
EndIf;
|
||||
|
||||
Success = True;
|
||||
|
||||
Try
|
||||
|
||||
// BSLLS:ExternalAppStarting-off
|
||||
@@ -147,6 +152,7 @@ Procedure GetCollection(Value, ByNetwork = True) Export
|
||||
|
||||
If (Not ThisIsCollection(Value)) Or Not ValueIsFilled(Value) Then
|
||||
|
||||
Success = False;
|
||||
Value = InitialValue;
|
||||
OPI_Tools.ValueToArray(Value);
|
||||
|
||||
@@ -158,6 +164,7 @@ Procedure GetCollection(Value, ByNetwork = True) Export
|
||||
|
||||
Except
|
||||
|
||||
Success = False;
|
||||
Value = InitialValue;
|
||||
OPI_Tools.ValueToArray(Value);
|
||||
|
||||
@@ -426,8 +433,24 @@ Procedure ConvertSourceToValue(Value, TryB64)
|
||||
Else
|
||||
|
||||
If TryB64 Then
|
||||
Value = Base64Value(Value);
|
||||
|
||||
Value_ = Base64Value(Value);
|
||||
|
||||
If TypeOf(Value_) = Type("BinaryData") Then
|
||||
Success = Value_.Size() <> 0;
|
||||
Else
|
||||
Success = False;
|
||||
EndIf;
|
||||
|
||||
If Success Then
|
||||
Value = Value_;
|
||||
EndIf;
|
||||
|
||||
Else
|
||||
Success = False;
|
||||
EndIf;
|
||||
|
||||
If Not Success Then
|
||||
Raise "The value is not a file path or Base64 string";
|
||||
EndIf;
|
||||
|
||||
@@ -447,8 +470,8 @@ Procedure ПолучитьДвоичныеИлиПоток(Значение) Exp
|
||||
GetBinaryOrStream(Значение);
|
||||
EndProcedure
|
||||
|
||||
Procedure ПолучитьКоллекцию(Значение, ПоСети = True) Export
|
||||
GetCollection(Значение, ПоСети);
|
||||
Procedure ПолучитьКоллекцию(Значение, ПоСети = True, Успех = False) Export
|
||||
GetCollection(Значение, ПоСети, Успех);
|
||||
EndProcedure
|
||||
|
||||
Procedure ПолучитьКоллекциюКлючИЗначение(Значение, Val СообщениеОшибки = "Указанное значение не является подходящей коллекцией!") Export
|
||||
|
||||
@@ -1014,7 +1014,7 @@ Function AddMultipartFormDataFile(Val FieldName
|
||||
OPI_TypeConversion.GetBinaryData(Data, True, True);
|
||||
OPI_TypeConversion.GetBoolean(IgnoreEmpty);
|
||||
|
||||
If IgnoreEmpty And Data.Size = 0 Then
|
||||
If IgnoreEmpty And Data.Size() = 0 Then
|
||||
AddLog(StrTemplate("AddMultipartFormDataFile: empty file ignored, field %1", FieldName));
|
||||
Return ЭтотОбъект;
|
||||
EndIf;
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@
|
||||
|
||||
Function GetHashSum() Export
|
||||
|
||||
LastBuildHash = "07C4BB7AB731BEE83F841D7B9FCCBFE88AEA3E79ABE5F6C079001C2DBEC9A426";
|
||||
LastBuildHash = "020E99F2738A217F5BB9933180E87C96741C7679FB414458053C1635BA67A99A";
|
||||
|
||||
Return LastBuildHash;
|
||||
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@
|
||||
|
||||
Function GetHashSum() Export
|
||||
|
||||
LastBuildHash = "07C4BB7AB731BEE83F841D7B9FCCBFE88AEA3E79ABE5F6C079001C2DBEC9A426";
|
||||
LastBuildHash = "020E99F2738A217F5BB9933180E87C96741C7679FB414458053C1635BA67A99A";
|
||||
|
||||
Return LastBuildHash;
|
||||
|
||||
|
||||
+264
-50
@@ -125,38 +125,6 @@ Function GetHTTPConnectionSettings(Val Address
|
||||
|
||||
EndFunction
|
||||
|
||||
// Get gRPC connection settings
|
||||
// Gets the settings structure for gRPC connection
|
||||
//
|
||||
// Parameters:
|
||||
// Address - String - Connection address with protocol and port - url
|
||||
// Authorization - String, Structure Of KeyAndValue - Authorization: string for JWT, structure for basic - auth
|
||||
// Meta - Structure Of KeyAndValue - gRPC metadata structure, if necessary - meta
|
||||
// Tls - Structure Of KeyAndValue - TLS settings. See GetTlsSettings - tls
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue - Connection settings structure
|
||||
Function GetGRPCConnectionSettings(Val Address
|
||||
, Val Authorization = Undefined
|
||||
, Val Meta = Undefined
|
||||
, Val Tls = Undefined) Export
|
||||
|
||||
ConnectionSettings = New Structure;
|
||||
OPI_Tools.AddField("address" , Address , "String" , ConnectionSettings);
|
||||
OPI_Tools.AddField("tls" , Tls , "KeyAndValue", ConnectionSettings);
|
||||
OPI_Tools.AddField("metadata" , Meta , "KeyAndValue", ConnectionSettings);
|
||||
OPI_Tools.AddField("transport", "grpc" , "String" , ConnectionSettings);
|
||||
|
||||
If Authorization = Undefined Then
|
||||
Return ConnectionSettings;
|
||||
EndIf;
|
||||
|
||||
CompleteAuthorizationSettings(Authorization, ConnectionSettings);
|
||||
|
||||
Return ConnectionSettings;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Get request settings
|
||||
// Forms the request description structure
|
||||
//
|
||||
@@ -240,10 +208,6 @@ Function GetSessionSettings(Val SessionID = Undefined
|
||||
SessionSettings = New Structure;
|
||||
HasSessionID = SessionID <> Undefined;
|
||||
|
||||
If HasSessionID Then
|
||||
SessionID = String(New UUID());
|
||||
EndIf;
|
||||
|
||||
If CheckSession = Undefined Then
|
||||
CheckSession = HasSessionID;
|
||||
EndIf;
|
||||
@@ -260,6 +224,38 @@ EndFunction
|
||||
|
||||
#Region GRPC
|
||||
|
||||
// Get gRPC connection settings
|
||||
// Gets the settings structure for gRPC connection
|
||||
//
|
||||
// Parameters:
|
||||
// Address - String - Connection address with protocol and port - url
|
||||
// Authorization - String, Structure Of KeyAndValue - Authorization: string for JWT, structure for basic - auth
|
||||
// Meta - Structure Of KeyAndValue - gRPC metadata structure, if necessary - meta
|
||||
// Tls - Structure Of KeyAndValue - TLS settings. See GetTlsSettings - tls
|
||||
//
|
||||
// Returns:
|
||||
// Structure Of KeyAndValue - Connection settings structure
|
||||
Function GetGRPCConnectionSettings(Val Address
|
||||
, Val Authorization = Undefined
|
||||
, Val Meta = Undefined
|
||||
, Val Tls = Undefined) Export
|
||||
|
||||
ConnectionSettings = New Structure;
|
||||
OPI_Tools.AddField("address" , Address , "String" , ConnectionSettings);
|
||||
OPI_Tools.AddField("tls" , Tls , "KeyAndValue", ConnectionSettings);
|
||||
OPI_Tools.AddField("metadata" , Meta , "KeyAndValue", ConnectionSettings);
|
||||
OPI_Tools.AddField("transport", "grpc" , "String" , ConnectionSettings);
|
||||
|
||||
If Authorization = Undefined Then
|
||||
Return ConnectionSettings;
|
||||
EndIf;
|
||||
|
||||
CompleteAuthorizationSettings(Authorization, ConnectionSettings);
|
||||
|
||||
Return ConnectionSettings;
|
||||
|
||||
EndFunction
|
||||
|
||||
// Create GRPC connection !NOCLI
|
||||
// Opens a GRPC connection for working with ClickHouse
|
||||
//
|
||||
@@ -304,6 +300,56 @@ Function CreateGRPCConnection(Val ConnectionSettings) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
// Open client GRPC stream !NOCLI
|
||||
// Initializes a client stream for exchange
|
||||
//
|
||||
// Parameters:
|
||||
// Connection - Arbitrary - GRPC connection object - conn
|
||||
// Timeout - Number - Timeout (in ms) - tout
|
||||
//
|
||||
// Returns:
|
||||
// Map Of KeyAndValue - Processing result
|
||||
Function OpenClientGRPCStream(Val Connection, Val Timeout = 10000) Export
|
||||
|
||||
Return OpenGRPCStream(Connection, "client", , , Timeout);
|
||||
|
||||
EndFunction
|
||||
|
||||
// Open server GRPC stream !NOCLI
|
||||
// Initializes a server stream for exchange
|
||||
//
|
||||
// Parameters:
|
||||
// Connection - Arbitrary - GRPC connection object - conn
|
||||
// Request - Structure Of KeyAndValue - Request data. See GetRequestSettings - req
|
||||
// Session - Structure Of KeyAndValue - Session settings. See GetSessionSettings - session
|
||||
// Timeout - Number - Timeout (in ms) - tout
|
||||
//
|
||||
// Returns:
|
||||
// Map Of KeyAndValue - Processing result
|
||||
Function OpenServerGRPCStream(Val Connection
|
||||
, Val Request = Undefined
|
||||
, Val Session = Undefined
|
||||
, Val Timeout = 10000) Export
|
||||
|
||||
Return OpenGRPCStream(Connection, "server", Request, Session, Timeout);
|
||||
|
||||
EndFunction
|
||||
|
||||
// Open bidirectional GRPC stream !NOCLI
|
||||
// Initializes a bidirectional stream for exchange
|
||||
//
|
||||
// Parameters:
|
||||
// Connection - Arbitrary - GRPC connection object - conn
|
||||
// Timeout - Number - Timeout (in ms) - tout
|
||||
//
|
||||
// Returns:
|
||||
// Map Of KeyAndValue - Processing result
|
||||
Function OpenBidirectionalGRPCStream(Val Connection, Val Timeout = 10000) Export
|
||||
|
||||
Return OpenGRPCStream(Connection, "bidi", , , Timeout);
|
||||
|
||||
EndFunction
|
||||
|
||||
// Get TLS Settings
|
||||
// Forms settings for using TLS
|
||||
//
|
||||
@@ -355,6 +401,23 @@ Procedure CompleteAuthorizationSettings(Val Authorization, ConnectionSettings)
|
||||
|
||||
EndProcedure
|
||||
|
||||
Function IsValidJSONFormat(Val Format)
|
||||
|
||||
Return Format = "JSON"
|
||||
Or Format = "JSONCompact"
|
||||
Or Format = "JSONColumns"
|
||||
Or Format = "JSONColumnsWithMetadata";
|
||||
|
||||
EndFunction
|
||||
|
||||
Function IsStringFormat(Val Format)
|
||||
|
||||
Return StrFind(Format, "CSV") > 0
|
||||
Or StrFind(Format, "TSV") > 0
|
||||
Or StrFind(Format, "Pretty") > 0;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region HTTP
|
||||
@@ -384,17 +447,17 @@ Function ExecuteRequestViaHTTP(Val Connection, Val Request, Val Session)
|
||||
.AddHeader("X-ClickHouse-Database", Database, True)
|
||||
.SetBinaryBody(Data);
|
||||
|
||||
SetAdditionalHTTPParameters(HTTPClient, Request);
|
||||
SetAdditionalHTTPHeaders(HTTPClient, Connection);
|
||||
SetHTTPAuthorization(HTTPClient, Connection);
|
||||
SetHTTPExternalTables(HTTPClient, ExternalTables);
|
||||
SetHTTPSession(HTTPClient, Session);
|
||||
SetAdditionalHTTPParameters(HTTPClient, Request);
|
||||
SetAdditionalHTTPHeaders(HTTPClient, Connection);
|
||||
|
||||
|
||||
HTTPClient.ProcessRequest("POST", True);
|
||||
|
||||
If HTTPClient.Error Then
|
||||
|
||||
Response = FormatHTTPErrorResponse(HTTPClient);
|
||||
|
||||
Else
|
||||
|
||||
Try
|
||||
@@ -407,8 +470,15 @@ Function ExecuteRequestViaHTTP(Val Connection, Val Request, Val Session)
|
||||
|
||||
If ResponseCode < 300 Then
|
||||
|
||||
Result = True;
|
||||
ResponseBody = HTTPClient.ReturnResponseAsJSONObject();
|
||||
Result = True;
|
||||
|
||||
If IsValidJSONFormat(DataFormat) Then
|
||||
ResponseBody = HTTPClient.ReturnResponseAsJSONObject();
|
||||
ElsIf IsStringFormat(DataFormat) Then
|
||||
ResponseBody = HTTPClient.ReturnResponseAsString();
|
||||
Else
|
||||
ResponseBody = HTTPClient.ReturnResponseAsBinaryData();
|
||||
EndIf;
|
||||
|
||||
If OPI_Tools.IsCLI() Then
|
||||
|
||||
@@ -488,7 +558,7 @@ Procedure SetHTTPAuthorization(HTTPClient, Val Connection)
|
||||
|
||||
ElsIf Authorization = "basic" Then
|
||||
|
||||
Login = OPI_Tools.GetOr(Connection, "user", Undefined);
|
||||
Login = OPI_Tools.GetOr(Connection, "user" , Undefined);
|
||||
Password = OPI_Tools.GetOr(Connection, "password", Undefined);
|
||||
|
||||
HTTPClient
|
||||
@@ -542,12 +612,33 @@ Procedure SetHTTPExternalTables(HTTPClient, Val ExternalTables)
|
||||
HTTPClient
|
||||
.AddURLParameter(FormatParameterName , TableFormat , True)
|
||||
.AddURLParameter(StructureParameterName, ColumnsAsString, True)
|
||||
|
||||
.AddMultipartFormDataFile(TableName, FileName, TableData, FileDataType, True);
|
||||
|
||||
EndDo;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure SetHTTPSession(HTTPClient, Val Session)
|
||||
|
||||
If Not ValueIsFilled(Session) Then
|
||||
Return;
|
||||
EndIf;
|
||||
|
||||
ErrorText = "An incorrect session information structure was passed";
|
||||
OPI_TypeConversion.GetKeyValueCollection(Session, ErrorText);
|
||||
|
||||
SessionID = OPI_Tools.GetOr(Session, "id" , Undefined);
|
||||
Check = OPI_Tools.GetOr(Session, "check" , Undefined);
|
||||
Timeout = OPI_Tools.GetOr(Session, "timeout", Undefined);
|
||||
|
||||
HTTPClient
|
||||
.AddURLParameter("session_id" , SessionID, True)
|
||||
.AddURLParameter("session_check" , Check , True)
|
||||
.AddURLParameter("session_timeout", Timeout , True);
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region GRPC
|
||||
@@ -568,6 +659,64 @@ Function ExecuteRequestViaGRPC(Val Connection, Val Request, Val Session)
|
||||
Return Connector;
|
||||
EndIf;
|
||||
|
||||
GRPCRequest = FormGRPCRequest(ConnectionSettings, Request, Session);
|
||||
|
||||
Service = GetGRPCServiceName();
|
||||
Method = "ExecuteQuery";
|
||||
Result = OPI_GRPC.ExecuteMethod(Connector, Service, Method, GRPCRequest);
|
||||
|
||||
ProcessGRPCResponse(Result);
|
||||
|
||||
If CloseConnection Then
|
||||
OPI_GRPC.CloseConnection(Connector);
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function OpenGRPCStream(Connection
|
||||
, Val View
|
||||
, Val Request = Undefined
|
||||
, Val Session = Undefined
|
||||
, Val Timeout = 10000)
|
||||
|
||||
Service = GetGRPCServiceName();
|
||||
|
||||
If View = "client" Then
|
||||
|
||||
Method = "ExecuteQueryWithStreamInput";
|
||||
Result = OPI_GRPC.InitializeClientStream(Connection, Service, Method, Timeout);
|
||||
|
||||
ElsIf View = "server" Then
|
||||
|
||||
Method = "ExecuteQueryWithStreamOutput";
|
||||
GRPCRequest = FormGRPCRequest(Connection, Request, Session);
|
||||
Result = OPI_GRPC.InitializeServerStream(Connection, Service, Method, GRPCRequest, Timeout);
|
||||
|
||||
Else
|
||||
|
||||
Method = "ExecuteQueryWithStreamIO";
|
||||
Result = OPI_GRPC.InitializeBidirectionalStream(Connection, Service, Method, Timeout);
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function FormGRPCRequest(Val Connection, Val Request, Val Session)
|
||||
|
||||
If Request = Undefined Then
|
||||
Return Request;
|
||||
EndIf;
|
||||
|
||||
If OPI_GRPC.IsConnector(Connection) Then
|
||||
ConnectionSettings = OPI_Tools.JsonToStructure(Connection.GetSettings());
|
||||
Else
|
||||
ConnectionSettings = Connection;
|
||||
EndIf;
|
||||
|
||||
Data = OPI_Tools.GetOr(Request, "data" , Undefined);
|
||||
RequestID = OPI_Tools.GetOr(Request, "id" , Undefined);
|
||||
QueryText = OPI_Tools.GetOr(Request, "query" , Undefined);
|
||||
@@ -586,16 +735,15 @@ Function ExecuteRequestViaGRPC(Val Connection, Val Request, Val Session)
|
||||
|
||||
SetGRPCAuthorization(GRPCRequest, ConnectionSettings);
|
||||
SetGRPCExternalTables(GRPCRequest, ExternalTables);
|
||||
SetGRPCSession(GRPCRequest, Session);
|
||||
|
||||
Service = "clickhouse.grpc.ClickHouse";
|
||||
Method = "ExecuteQuery";
|
||||
Result = OPI_GRPC.ExecuteMethod(Connector, Service, Method, GRPCRequest);
|
||||
Return GRPCRequest;
|
||||
|
||||
If CloseConnection Then
|
||||
OPI_GRPC.CloseConnection(Connector);
|
||||
EndIf;
|
||||
EndFunction
|
||||
|
||||
Return Result;
|
||||
Function GetGRPCServiceName()
|
||||
|
||||
Return "clickhouse.grpc.ClickHouse";
|
||||
|
||||
EndFunction
|
||||
|
||||
@@ -643,6 +791,10 @@ Procedure SetGRPCExternalTables(GRPCRequest, Val ExternalTables)
|
||||
TableData = OPI_Tools.GetOr(Table, "data" , Undefined);
|
||||
TableColumns = OPI_Tools.GetOr(Table, "cols" , Undefined);
|
||||
|
||||
If TableData <> Undefined Then
|
||||
OPI_TypeConversion.GetBinaryData(TableData, True);
|
||||
EndIf;
|
||||
|
||||
ErrorText = StrTemplate("Incorrect structure of columns for the table ""%1""", TableName);
|
||||
OPI_TypeConversion.GetKeyValueCollection(TableColumns, ErrorText);
|
||||
|
||||
@@ -674,6 +826,68 @@ Procedure SetGRPCExternalTables(GRPCRequest, Val ExternalTables)
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure SetGRPCSession(GRPCRequest, Val Session)
|
||||
|
||||
If Not ValueIsFilled(Session) Then
|
||||
Return;
|
||||
EndIf;
|
||||
|
||||
ErrorText = "An incorrect session information structure was passed";
|
||||
OPI_TypeConversion.GetKeyValueCollection(Session, ErrorText);
|
||||
|
||||
SessionID = OPI_Tools.GetOr(Session, "id" , Undefined);
|
||||
Check = OPI_Tools.GetOr(Session, "check" , Undefined);
|
||||
Timeout = OPI_Tools.GetOr(Session, "timeout", Undefined);
|
||||
|
||||
OPI_Tools.AddField("session_id" , SessionID, "String" , GRPCRequest);
|
||||
OPI_Tools.AddField("session_check" , Check , "Boolean", GRPCRequest);
|
||||
OPI_Tools.AddField("session_timeout", Timeout , "Number" , GRPCRequest);
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ProcessGRPCResponse(Response)
|
||||
|
||||
If Not OPI_Tools.GetOr(Response, "result", False) Then
|
||||
Return;
|
||||
EndIf;
|
||||
|
||||
Format = OPI_Tools.GetOr(Response, "output_format", Undefined);
|
||||
|
||||
If Not ValueIsFilled(Format) Then
|
||||
Return;
|
||||
EndIf;
|
||||
|
||||
B64String = OPI_Tools.CollectionFieldExists(Response, "data.output.BYTES");
|
||||
|
||||
If ValueIsFilled(B64String) Then
|
||||
|
||||
If IsValidJSONFormat(Format) Then
|
||||
|
||||
Value = GetBinaryDataFromBase64String(B64String);
|
||||
Success = False;
|
||||
OPI_TypeConversion.GetCollection(Value, , Success);
|
||||
|
||||
If Not Success Then
|
||||
Value = GetStringFromBinaryData(Value);
|
||||
EndIf;
|
||||
|
||||
ElsIf IsStringFormat(Format) Then
|
||||
|
||||
Value = GetBinaryDataFromBase64String(B64String);
|
||||
Value = GetStringFromBinaryData(Value);
|
||||
|
||||
Else
|
||||
|
||||
Return;
|
||||
|
||||
EndIf;
|
||||
|
||||
Response["data"]["output"] = Value;
|
||||
|
||||
EndIf;
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#EndRegion
|
||||
|
||||
@@ -12963,12 +12963,216 @@ Function Check_ClickHouse_ExecuteRequest(Val Result, Option)
|
||||
Result.Insert("body", GetStringFromBinaryData(Result["body"]));
|
||||
EndIf;
|
||||
|
||||
If Option = "TableCreation" Or Option = "DataInsert" Then
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["status"]).Равно(200);
|
||||
|
||||
ElsIf Option = "JSONSelection" Or Option = "JSONCompactSelection" Then
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["status"]).Равно(200);
|
||||
ExpectsThat(Result["body"]).ИмеетТип("Map");
|
||||
|
||||
ElsIf Option = "CSVSelection" Or Option = "TSVSelection" Then
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["status"]).Равно(200);
|
||||
ExpectsThat(Result["body"]).ИмеетТип("String");
|
||||
|
||||
ElsIf Option = "ExternalTable" Then
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["body"]).ИмеетТип("Map");
|
||||
ExpectsThat(Result["body"]["rows"]).Равно(2);
|
||||
|
||||
ElsIf Option = "AdditionalSettings" Then
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["body"]).ИмеетТип("Map");
|
||||
|
||||
ElsIf Option = "SessionCreation" Or Option = "SessionInsert" Then
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["status"]).Равно(200);
|
||||
|
||||
Else
|
||||
|
||||
// Primary variant - Selection from session temporary table
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
ExpectsThat(Result["result"]).Равно(True);
|
||||
ExpectsThat(Result["body"]).ИмеетТип("Map");
|
||||
ExpectsThat(Result["body"]["rows"]).Равно(2);
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_ClickHouse_CreateGRPCConnection(Val Result, Option)
|
||||
|
||||
If Option = "Openning" Then
|
||||
|
||||
Result = String(TypeOf(Result));
|
||||
ExpectsThat(Result).Равно("AddIn.OPI_GRPC.Main");
|
||||
|
||||
ElsIf Option = "TableCreation" Or Option = "DataInsert" Then
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
|
||||
ElsIf Option = "Selection" Then
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
|
||||
Else
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Map").Заполнено();
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_ClickHouse_GetHTTPConnectionSettings(Val Result, Option)
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Structure").Заполнено();
|
||||
ExpectsThat(Result.Property("address")).Равно(True);
|
||||
ExpectsThat(Result.Property("transport")).Равно(True);
|
||||
ExpectsThat(Result["transport"]).Равно("http");
|
||||
|
||||
If Option = "NoAuthorization" Then
|
||||
|
||||
ExpectsThat(Result.Property("auth_type")).Равно(False);
|
||||
|
||||
ElsIf Option = "BasicAuthorization" Then
|
||||
|
||||
ExpectsThat(Result["auth_type"]).Равно("basic");
|
||||
ExpectsThat(Result.Property("user")).Равно(True);
|
||||
ExpectsThat(Result.Property("password")).Равно(True);
|
||||
|
||||
ElsIf Option = "JWTAuthorization" Then
|
||||
|
||||
ExpectsThat(Result["auth_type"]).Равно("jwt");
|
||||
ExpectsThat(Result.Property("token")).Равно(True);
|
||||
|
||||
ElsIf Not ValueIsFilled(Option) Then
|
||||
|
||||
ExpectsThat(Result.Property("headers")).Равно(True);
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_ClickHouse_GetGRPCConnectionSettings(Val Result, Option)
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Structure").Заполнено();
|
||||
ExpectsThat(Result.Property("address")).Равно(True);
|
||||
ExpectsThat(Result.Property("transport")).Равно(True);
|
||||
ExpectsThat(Result["transport"]).Равно("grpc");
|
||||
|
||||
If Option = "NoAuthorization" Then
|
||||
|
||||
ExpectsThat(Result.Property("auth_type")).Равно(False);
|
||||
|
||||
ElsIf Option = "BasicAuthorization" Then
|
||||
|
||||
ExpectsThat(Result["auth_type"]).Равно("basic");
|
||||
ExpectsThat(Result.Property("user")).Равно(True);
|
||||
ExpectsThat(Result.Property("password")).Равно(True);
|
||||
|
||||
ElsIf Option = "JWTAuthorization" Then
|
||||
|
||||
ExpectsThat(Result["auth_type"]).Равно("jwt");
|
||||
ExpectsThat(Result.Property("token")).Равно(True);
|
||||
|
||||
ElsIf Option = "WithMetadata" Then
|
||||
|
||||
ExpectsThat(Result.Property("metadata")).Равно(True);
|
||||
|
||||
ElsIf Not ValueIsFilled(Option) Then
|
||||
|
||||
ExpectsThat(Result.Property("tls")).Равно(True);
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_ClickHouse_GetRequestSettings(Val Result, Option)
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Structure").Заполнено();
|
||||
ExpectsThat(Result.Property("query")).Равно(True);
|
||||
|
||||
If Option = "Minimal" Then
|
||||
|
||||
ExpectsThat(Result["query"]).Равно("SELECT 1");
|
||||
|
||||
Else
|
||||
|
||||
ExpectsThat(Result["database"]).Равно("default");
|
||||
ExpectsThat(Result["id"]).Заполнено();
|
||||
ExpectsThat(Result.Property("data")).Равно(True);
|
||||
ExpectsThat(Result["format"]).Равно("CSV");
|
||||
ExpectsThat(Result.Property("external_tables")).Равно(True);
|
||||
ExpectsThat(Result["external_tables"]).ИмеетТип("Array");
|
||||
ExpectsThat(Result.Property("settings")).Равно(True);
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_ClickHouse_GetExternalTableStructure(Val Result, Option)
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Structure").Заполнено();
|
||||
ExpectsThat(Result.Property("name")).Равно(True);
|
||||
ExpectsThat(Result.Property("cols")).Равно(True);
|
||||
ExpectsThat(Result["name"]).Равно("external_data");
|
||||
|
||||
If Option = "Minimal" Then
|
||||
|
||||
ExpectsThat(Result.Property("data")).Равно(False);
|
||||
|
||||
ElsIf Option = "TSV" Or Not ValueIsFilled(Option) Then
|
||||
|
||||
ExpectsThat(Result["format"]).Равно("TSV");
|
||||
ExpectsThat(Result.Property("data")).Равно(True);
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_ClickHouse_GetSessionSettings(Val Result, Option)
|
||||
|
||||
ExpectsThat(Result).ИмеетТип("Structure").Заполнено();
|
||||
ExpectsThat(Result["id"]).ИмеетТип("String").Заполнено();
|
||||
ExpectsThat(Result["check"]).Равно(True);
|
||||
ExpectsThat(Result["timeout"]).Равно(120);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function Check_ClickHouse_GetTlsSettings(Val Result, Option)
|
||||
|
||||
ExpectsThat(OPI_Tools.ThisIsCollection(Result, True)).Равно(True);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
#EndRegion
|
||||
|
||||
+325
-25
@@ -3362,11 +3362,17 @@ EndProcedure
|
||||
Procedure CH_CommonMethods() Export
|
||||
|
||||
TestParameters = New Structure;
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Address" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_User" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Password", TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Address" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_AddressGRPC", TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_User" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Password" , TestParameters);
|
||||
|
||||
ClickHouse_ExecuteRequest(TestParameters);
|
||||
ClickHouse_GetHTTPConnectionSettings(TestParameters);
|
||||
ClickHouse_GetGRPCConnectionSettings(TestParameters);
|
||||
ClickHouse_GetRequestSettings(TestParameters);
|
||||
ClickHouse_GetExternalTableStructure(TestParameters);
|
||||
ClickHouse_GetSessionSettings(TestParameters);
|
||||
|
||||
EndProcedure
|
||||
|
||||
@@ -3378,6 +3384,7 @@ Procedure CH_GRPC() Export
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Password" , TestParameters);
|
||||
|
||||
ClickHouse_CreateGRPCConnection(TestParameters);
|
||||
ClickHouse_GetTlsSettings(TestParameters);
|
||||
|
||||
EndProcedure
|
||||
|
||||
@@ -27070,9 +27077,9 @@ Procedure ClickHouse_ExecuteRequest(FunctionParameters)
|
||||
|
||||
Connection = OPI_ClickHouse.GetHTTPConnectionSettings(URL, Authorization);
|
||||
|
||||
// Request (simple)
|
||||
// Request (table creation)
|
||||
|
||||
QueryText = "CREATE TABLE events (
|
||||
QueryText = "CREATE TABLE IF NOT EXISTS events (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -27081,15 +27088,15 @@ Procedure ClickHouse_ExecuteRequest(FunctionParameters)
|
||||
|) ENGINE = MergeTree()
|
||||
|ORDER BY (timestamp, id)";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings("DROP TABLE events"); // SKIP
|
||||
Request = OPI_ClickHouse.GetRequestSettings("DROP TABLE IF EXISTS events"); // SKIP
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request); // SKIP
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "Simple"); // SKIP
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "TableCreation"); // SKIP
|
||||
|
||||
// Request (with data)
|
||||
// Request (data insertion)
|
||||
|
||||
QueryText = "INSERT INTO events FORMAT JSON";
|
||||
|
||||
@@ -27129,6 +27136,89 @@ Procedure ClickHouse_ExecuteRequest(FunctionParameters)
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, Database, RequestID, Data, DataFormat);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "DataInsert"); // SKIP
|
||||
|
||||
// Request with external table
|
||||
|
||||
TableName = "ext_users";
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("id" , "UInt64");
|
||||
ColoumnsStruct.Insert("name", "String");
|
||||
|
||||
Tab = Chars.Tab;
|
||||
TableData = "1" + Tab + "John
|
||||
|2" + Tab + "Jane
|
||||
|3" + Tab + "Bob";
|
||||
|
||||
ExternalTable = OPI_ClickHouse.GetExternalTableStructure(TableName, ColoumnsStruct, TableData, "TSV");
|
||||
|
||||
ExternalTablesArray = New Array;
|
||||
ExternalTablesArray.Add(ExternalTable);
|
||||
|
||||
QueryText = "SELECT * FROM ext_users WHERE id > 1";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, , , , "JSON", ExternalTablesArray);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "ExternalTable"); // SKIP
|
||||
|
||||
// Selection
|
||||
|
||||
SelectionText = "SELECT * FROM events";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(SelectionText, , , , "JSON");
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest"); // SKIP
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(SelectionText, , , , "CSV");
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "CSVSelection");
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(SelectionText, , , , "TSV");
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "TSVSelection");
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(SelectionText, , , , "JSONCompact");
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "JSONCompactSelection");
|
||||
|
||||
QueryText = "SELECT 1 AS result";
|
||||
|
||||
AdditionalSettings = New Map;
|
||||
AdditionalSettings.Insert("max_threads", "4");
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, , , , "JSON", , AdditionalSettings);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "AdditionalSettings");
|
||||
|
||||
Session = OPI_ClickHouse.GetSessionSettings(String(New UUID()));
|
||||
|
||||
QueryText = "CREATE TEMPORARY TABLE temp_session_test (id UInt64, value String)";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request, Session);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "SessionCreation");
|
||||
|
||||
QueryText = "INSERT INTO temp_session_test VALUES (1, 'test1'), (2, 'test2')";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request, Session);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "SessionInsert");
|
||||
|
||||
QueryText = "SELECT * FROM temp_session_test";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, , , , "JSON");
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request, Session);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest");
|
||||
@@ -27144,14 +27234,16 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
|
||||
Authorization = New Structure(Login, Password);
|
||||
|
||||
// Connection creation
|
||||
|
||||
ConnectionSettings = OPI_ClickHouse.GetGRPCConnectionSettings(URL, Authorization);
|
||||
Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings);
|
||||
|
||||
Process(Connection, "ClickHouse", "CreateGRPCConnection"); // SKIP
|
||||
Process(Connection, "ClickHouse", "CreateGRPCConnection", "Openning"); // SKIP
|
||||
|
||||
// Request (simple)
|
||||
// Request via open connection (table creation)
|
||||
|
||||
QueryText = "CREATE TABLE events (
|
||||
QueryText = "CREATE TABLE IF NOT EXISTS events_grpc (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -27160,14 +27252,17 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
|) ENGINE = MergeTree()
|
||||
|ORDER BY (timestamp, id)";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings("DROP TABLE IF EXISTS events_grpc"); // SKIP
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request); // SKIP
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "Simple"); // SKIP
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "TableCreation"); // SKIP
|
||||
|
||||
// Request (with data)
|
||||
// Data insertion
|
||||
|
||||
QueryText = "INSERT INTO events FORMAT JSON";
|
||||
QueryText = "INSERT INTO events_grpc FORMAT JSON";
|
||||
|
||||
DataFormat = "JSON";
|
||||
DataArray = New Array;
|
||||
@@ -27181,15 +27276,7 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
Record1.Insert("event_type", "click");
|
||||
Record1.Insert("payload" , "{}");
|
||||
|
||||
Record2 = New Structure;
|
||||
Record2.Insert("id" , 2);
|
||||
Record2.Insert("timestamp" , CurrentDate);
|
||||
Record2.Insert("user_id" , 200);
|
||||
Record2.Insert("event_type", "hover");
|
||||
Record2.Insert("payload" , "{}");
|
||||
|
||||
DataArray.Add(Record1);
|
||||
DataArray.Add(Record2);
|
||||
|
||||
Meta = New Array;
|
||||
Meta.Add(New Structure("name,type", "id" , "UInt64"));
|
||||
@@ -27199,15 +27286,228 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
Meta.Add(New Structure("name,type", "payload" , "String"));
|
||||
|
||||
Data = New Structure("meta,data", Meta, DataArray);
|
||||
Database = "default";
|
||||
RequestID = String(New UUID());
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, Database, RequestID, Data, DataFormat);
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, "default", RequestID, Data, DataFormat);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "DataInsert"); // SKIP
|
||||
|
||||
// Selection
|
||||
|
||||
SelectionText = "SELECT * FROM events_grpc";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(SelectionText, , , , "JSON");
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "Selection"); // SKIP
|
||||
|
||||
// Request with external table via gRPC
|
||||
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("id" , "UInt64");
|
||||
ColoumnsStruct.Insert("name", "String");
|
||||
|
||||
Tab = Chars.Tab;
|
||||
TableData = "1" + Tab + "John
|
||||
|2" + Tab + "Jane";
|
||||
|
||||
ExternalTable = OPI_ClickHouse.GetExternalTableStructure("ext_grpc", ColoumnsStruct, TableData, "TSV");
|
||||
|
||||
ExternalTablesArray = New Array;
|
||||
ExternalTablesArray.Add(ExternalTable);
|
||||
|
||||
QueryText = "SELECT * FROM ext_grpc";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings(QueryText, , , , "JSON", ExternalTablesArray);
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "Complex");
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetHTTPConnectionSettings(FunctionParameters)
|
||||
|
||||
URL = FunctionParameters["ClickHouse_Address"];
|
||||
|
||||
// No authorization
|
||||
|
||||
Result = OPI_ClickHouse.GetHTTPConnectionSettings(URL);
|
||||
|
||||
Process(Result, "ClickHouse", "GetHTTPConnectionSettings", "NoAuthorization"); // SKIP
|
||||
|
||||
// With basic authorization
|
||||
|
||||
Login = FunctionParameters["ClickHouse_User"];
|
||||
Password = FunctionParameters["ClickHouse_Password"];
|
||||
|
||||
Authorization = New Structure(Login, Password);
|
||||
|
||||
Result = OPI_ClickHouse.GetHTTPConnectionSettings(URL, Authorization);
|
||||
|
||||
Process(Result, "ClickHouse", "GetHTTPConnectionSettings", "BasicAuthorization"); // SKIP
|
||||
|
||||
// With JWT authorization
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Result = OPI_ClickHouse.GetHTTPConnectionSettings(URL, JWT);
|
||||
|
||||
Process(Result, "ClickHouse", "GetHTTPConnectionSettings", "JWTAuthorization"); // SKIP
|
||||
|
||||
// With additional headers
|
||||
|
||||
AdditionalHeaders = New Map;
|
||||
AdditionalHeaders.Insert("X-Custom-Header", "CustomValue");
|
||||
|
||||
Result = OPI_ClickHouse.GetHTTPConnectionSettings(URL, Authorization, AdditionalHeaders);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetHTTPConnectionSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetGRPCConnectionSettings(FunctionParameters)
|
||||
|
||||
URL = FunctionParameters["ClickHouse_AddressGRPC"];
|
||||
|
||||
// No authorization
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL);
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "NoAuthorization"); // SKIP
|
||||
|
||||
// With basic authorization
|
||||
|
||||
Login = FunctionParameters["ClickHouse_User"];
|
||||
Password = FunctionParameters["ClickHouse_Password"];
|
||||
|
||||
Authorization = New Structure(Login, Password);
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL, Authorization);
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "BasicAuthorization"); // SKIP
|
||||
|
||||
// With JWT authorization
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL, JWT);
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "JWTAuthorization"); // SKIP
|
||||
|
||||
// With metadata
|
||||
|
||||
Meta = New Map;
|
||||
Meta.Insert("custom-meta", "value");
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL, Authorization, Meta);
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "WithMetadata"); // SKIP
|
||||
|
||||
// With TLS settings
|
||||
|
||||
Tls = OPI_ClickHouse.GetTlsSettings(True);
|
||||
|
||||
Result = OPI_ClickHouse.GetGRPCConnectionSettings(URL, Authorization, , Tls);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetRequestSettings(FunctionParameters)
|
||||
|
||||
// Minimal request
|
||||
|
||||
QueryText = "SELECT 1";
|
||||
|
||||
Result = OPI_ClickHouse.GetRequestSettings(QueryText);
|
||||
|
||||
Process(Result, "ClickHouse", "GetRequestSettings", "Minimal"); // SKIP
|
||||
|
||||
// Full request
|
||||
|
||||
RequestID = String(New UUID());
|
||||
Data = New Structure("meta,data", New Array, New Array);
|
||||
Database = "default";
|
||||
ResponseFormat = "CSV";
|
||||
|
||||
AdditionalSettings = New Map;
|
||||
AdditionalSettings.Insert("max_threads", "4");
|
||||
|
||||
ColoumnsStruct = New Structure("id,name", "UInt64", "String");
|
||||
ExternalTable = OPI_ClickHouse.GetExternalTableStructure("ext", ColoumnsStruct);
|
||||
|
||||
TableArray = New Array;
|
||||
TableArray.Add(ExternalTable);
|
||||
|
||||
Result = OPI_ClickHouse.GetRequestSettings(QueryText
|
||||
, Database
|
||||
, RequestID
|
||||
, Data
|
||||
, ResponseFormat
|
||||
, TableArray
|
||||
, AdditionalSettings);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetRequestSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetExternalTableStructure(FunctionParameters)
|
||||
|
||||
// Minimal structure
|
||||
|
||||
TableName = "external_data";
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("id" , "UInt64");
|
||||
ColoumnsStruct.Insert("name", "String");
|
||||
|
||||
Result = OPI_ClickHouse.GetExternalTableStructure(TableName, ColoumnsStruct);
|
||||
|
||||
Process(Result, "ClickHouse", "GetExternalTableStructure", "Minimal"); // SKIP
|
||||
|
||||
|
||||
// With TSV data
|
||||
|
||||
TableData = StrTemplate("1%1Test
|
||||
|2%2Test2", Chars.Tab);
|
||||
|
||||
Result = OPI_ClickHouse.GetExternalTableStructure(TableName, ColoumnsStruct, TableData, "TSV");
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetExternalTableStructure");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetSessionSettings(FunctionParameters)
|
||||
|
||||
SessionID = String(New UUID);
|
||||
Check = True;
|
||||
Timeout = 120;
|
||||
|
||||
Result = OPI_ClickHouse.GetSessionSettings(SessionID, Check, Timeout);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetSessionSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetTlsSettings(FunctionParameters)
|
||||
|
||||
Result = OPI_ClickHouse.GetTlsSettings(False);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetTlsSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
|
||||
+500
-25
@@ -3363,11 +3363,17 @@ EndProcedure
|
||||
Procedure CH_CommonMethods() Export
|
||||
|
||||
TestParameters = New Structure;
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Address" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_User" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Password", TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Address" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_AddressGRPC", TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_User" , TestParameters);
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Password" , TestParameters);
|
||||
|
||||
ClickHouse_ExecuteRequest(TestParameters);
|
||||
ClickHouse_GetHTTPConnectionSettings(TestParameters);
|
||||
ClickHouse_GetGRPCConnectionSettings(TestParameters);
|
||||
ClickHouse_GetRequestSettings(TestParameters);
|
||||
ClickHouse_GetExternalTableStructure(TestParameters);
|
||||
ClickHouse_GetSessionSettings(TestParameters);
|
||||
|
||||
EndProcedure
|
||||
|
||||
@@ -3379,6 +3385,7 @@ Procedure CH_GRPC() Export
|
||||
OPI_TestDataRetrieval.ParameterToCollection("ClickHouse_Password" , TestParameters);
|
||||
|
||||
ClickHouse_CreateGRPCConnection(TestParameters);
|
||||
ClickHouse_GetTlsSettings(TestParameters);
|
||||
|
||||
EndProcedure
|
||||
|
||||
@@ -35778,9 +35785,9 @@ Procedure ClickHouse_ExecuteRequest(FunctionParameters)
|
||||
|
||||
Connection = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options);
|
||||
|
||||
// Request (simple)
|
||||
// Request (table creation)
|
||||
|
||||
QueryText = "CREATE TABLE events (
|
||||
QueryText = "CREATE TABLE IF NOT EXISTS events (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -35789,7 +35796,7 @@ Procedure ClickHouse_ExecuteRequest(FunctionParameters)
|
||||
|) ENGINE = MergeTree()
|
||||
|ORDER BY (timestamp, id)";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings("DROP TABLE events"); // SKIP
|
||||
Request = OPI_ClickHouse.GetRequestSettings("DROP TABLE IF EXISTS events"); // SKIP
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request); // SKIP
|
||||
|
||||
Options = New Structure;
|
||||
@@ -35802,9 +35809,9 @@ Procedure ClickHouse_ExecuteRequest(FunctionParameters)
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "Simple"); // SKIP
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "TableCreation"); // SKIP
|
||||
|
||||
// Request (with data)
|
||||
// Request (data insertion)
|
||||
|
||||
QueryText = "INSERT INTO events FORMAT JSON";
|
||||
|
||||
@@ -35855,6 +35862,173 @@ Procedure ClickHouse_ExecuteRequest(FunctionParameters)
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "DataInsert"); // SKIP
|
||||
|
||||
// Request with external table
|
||||
|
||||
TableName = "ext_users";
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("id" , "UInt64");
|
||||
ColoumnsStruct.Insert("name", "String");
|
||||
|
||||
Tab = Chars.Tab;
|
||||
TableData = "1" + Tab + "John
|
||||
|2" + Tab + "Jane
|
||||
|3" + Tab + "Bob";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("name", TableName);
|
||||
Options.Insert("cols", ColoumnsStruct);
|
||||
Options.Insert("data", TableData);
|
||||
Options.Insert("format", "TSV");
|
||||
|
||||
ExternalTable = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options);
|
||||
|
||||
ExternalTablesArray = New Array;
|
||||
ExternalTablesArray.Add(ExternalTable);
|
||||
|
||||
QueryText = "SELECT * FROM ext_users WHERE id > 1";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
Options.Insert("format", "JSON");
|
||||
Options.Insert("ext", ExternalTablesArray);
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "ExternalTable"); // SKIP
|
||||
|
||||
// Selection
|
||||
|
||||
SelectionText = "SELECT * FROM events";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", SelectionText);
|
||||
Options.Insert("format", "JSON");
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest"); // SKIP
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", SelectionText);
|
||||
Options.Insert("format", "CSV");
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "CSVSelection");
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", SelectionText);
|
||||
Options.Insert("format", "TSV");
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "TSVSelection");
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", SelectionText);
|
||||
Options.Insert("format", "JSONCompact");
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "JSONCompactSelection");
|
||||
|
||||
QueryText = "SELECT 1 AS result";
|
||||
|
||||
AdditionalSettings = New Map;
|
||||
AdditionalSettings.Insert("max_threads", "4");
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
Options.Insert("format", "JSON");
|
||||
Options.Insert("settings", AdditionalSettings);
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "AdditionalSettings");
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("id", String);
|
||||
|
||||
Session = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetSessionSettings", Options);
|
||||
|
||||
QueryText = "CREATE TEMPORARY TABLE temp_session_test (id UInt64, value String)";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
Options.Insert("session", Session);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "SessionCreation");
|
||||
|
||||
QueryText = "INSERT INTO temp_session_test VALUES (1, 'test1'), (2, 'test2')";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
Options.Insert("session", Session);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest", "SessionInsert");
|
||||
|
||||
QueryText = "SELECT * FROM temp_session_test";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
Options.Insert("format", "JSON");
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
Options.Insert("session", Session);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "ExecuteRequest");
|
||||
@@ -35870,6 +36044,8 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
|
||||
Authorization = New Structure(Login, Password);
|
||||
|
||||
// Connection creation
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
Options.Insert("auth", Authorization);
|
||||
@@ -35877,11 +36053,11 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
ConnectionSettings = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options);
|
||||
Connection = OPI_ClickHouse.CreateGRPCConnection(ConnectionSettings);
|
||||
|
||||
Process(Connection, "ClickHouse", "CreateGRPCConnection"); // SKIP
|
||||
Process(Connection, "ClickHouse", "CreateGRPCConnection", "Openning"); // SKIP
|
||||
|
||||
// Request (simple)
|
||||
// Request via open connection (table creation)
|
||||
|
||||
QueryText = "CREATE TABLE events (
|
||||
QueryText = "CREATE TABLE IF NOT EXISTS events_grpc (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -35890,6 +36066,9 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
|) ENGINE = MergeTree()
|
||||
|ORDER BY (timestamp, id)";
|
||||
|
||||
Request = OPI_ClickHouse.GetRequestSettings("DROP TABLE IF EXISTS events_grpc"); // SKIP
|
||||
Result = OPI_ClickHouse.ExecuteRequest(Connection, Request); // SKIP
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
|
||||
@@ -35900,11 +36079,11 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "Simple"); // SKIP
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "TableCreation"); // SKIP
|
||||
|
||||
// Request (with data)
|
||||
// Data insertion
|
||||
|
||||
QueryText = "INSERT INTO events FORMAT JSON";
|
||||
QueryText = "INSERT INTO events_grpc FORMAT JSON";
|
||||
|
||||
DataFormat = "JSON";
|
||||
DataArray = New Array;
|
||||
@@ -35918,15 +36097,7 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
Record1.Insert("event_type", "click");
|
||||
Record1.Insert("payload" , "{}");
|
||||
|
||||
Record2 = New Structure;
|
||||
Record2.Insert("id" , 2);
|
||||
Record2.Insert("timestamp" , CurrentDate);
|
||||
Record2.Insert("user_id" , 200);
|
||||
Record2.Insert("event_type", "hover");
|
||||
Record2.Insert("payload" , "{}");
|
||||
|
||||
DataArray.Add(Record1);
|
||||
DataArray.Add(Record2);
|
||||
|
||||
Meta = New Array;
|
||||
Meta.Add(New Structure("name,type", "id" , "UInt64"));
|
||||
@@ -35936,12 +36107,11 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
Meta.Add(New Structure("name,type", "payload" , "String"));
|
||||
|
||||
Data = New Structure("meta,data", Meta, DataArray);
|
||||
Database = "default";
|
||||
RequestID = String(New UUID());
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
Options.Insert("db", Database);
|
||||
Options.Insert("db", "default");
|
||||
Options.Insert("id", RequestID);
|
||||
Options.Insert("data", Data);
|
||||
Options.Insert("format", DataFormat);
|
||||
@@ -35953,9 +36123,314 @@ Procedure ClickHouse_CreateGRPCConnection(FunctionParameters)
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "DataInsert"); // SKIP
|
||||
|
||||
// Selection
|
||||
|
||||
SelectionText = "SELECT * FROM events_grpc";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", SelectionText);
|
||||
Options.Insert("format", "JSON");
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "Selection"); // SKIP
|
||||
|
||||
// Request with external table via gRPC
|
||||
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("id" , "UInt64");
|
||||
ColoumnsStruct.Insert("name", "String");
|
||||
|
||||
Tab = Chars.Tab;
|
||||
TableData = "1" + Tab + "John
|
||||
|2" + Tab + "Jane";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("name", "ext_grpc");
|
||||
Options.Insert("cols", ColoumnsStruct);
|
||||
Options.Insert("data", TableData);
|
||||
Options.Insert("format", "TSV");
|
||||
|
||||
ExternalTable = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options);
|
||||
|
||||
ExternalTablesArray = New Array;
|
||||
ExternalTablesArray.Add(ExternalTable);
|
||||
|
||||
QueryText = "SELECT * FROM ext_grpc";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
Options.Insert("format", "JSON");
|
||||
Options.Insert("ext", ExternalTablesArray);
|
||||
|
||||
Request = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
Options = New Structure;
|
||||
Options.Insert("conn", Connection);
|
||||
Options.Insert("req", Request);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "ExecuteRequest", Options);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection", "Complex");
|
||||
Process(Result, "ClickHouse", "CreateGRPCConnection");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetHTTPConnectionSettings(FunctionParameters)
|
||||
|
||||
URL = FunctionParameters["ClickHouse_Address"];
|
||||
|
||||
// No authorization
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "GetHTTPConnectionSettings", "NoAuthorization"); // SKIP
|
||||
|
||||
// With basic authorization
|
||||
|
||||
Login = FunctionParameters["ClickHouse_User"];
|
||||
Password = FunctionParameters["ClickHouse_Password"];
|
||||
|
||||
Authorization = New Structure(Login, Password);
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
Options.Insert("auth", Authorization);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "GetHTTPConnectionSettings", "BasicAuthorization"); // SKIP
|
||||
|
||||
// With JWT authorization
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
Options.Insert("auth", JWT);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "GetHTTPConnectionSettings", "JWTAuthorization"); // SKIP
|
||||
|
||||
// With additional headers
|
||||
|
||||
AdditionalHeaders = New Map;
|
||||
AdditionalHeaders.Insert("X-Custom-Header", "CustomValue");
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
Options.Insert("auth", Authorization);
|
||||
Options.Insert("headers", AdditionalHeaders);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetHTTPConnectionSettings", Options);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetHTTPConnectionSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetGRPCConnectionSettings(FunctionParameters)
|
||||
|
||||
URL = FunctionParameters["ClickHouse_AddressGRPC"];
|
||||
|
||||
// No authorization
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "NoAuthorization"); // SKIP
|
||||
|
||||
// With basic authorization
|
||||
|
||||
Login = FunctionParameters["ClickHouse_User"];
|
||||
Password = FunctionParameters["ClickHouse_Password"];
|
||||
|
||||
Authorization = New Structure(Login, Password);
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
Options.Insert("auth", Authorization);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "BasicAuthorization"); // SKIP
|
||||
|
||||
// With JWT authorization
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
Options.Insert("auth", JWT);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "JWTAuthorization"); // SKIP
|
||||
|
||||
// With metadata
|
||||
|
||||
Meta = New Map;
|
||||
Meta.Insert("custom-meta", "value");
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
Options.Insert("auth", Authorization);
|
||||
Options.Insert("meta", Meta);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings", "WithMetadata"); // SKIP
|
||||
|
||||
// With TLS settings
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("trust", Истина);
|
||||
|
||||
Tls = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetTlsSettings", Options);
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("url", URL);
|
||||
Options.Insert("auth", Authorization);
|
||||
Options.Insert("tls", Tls);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetGRPCConnectionSettings", Options);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetGRPCConnectionSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetRequestSettings(FunctionParameters)
|
||||
|
||||
// Minimal request
|
||||
|
||||
QueryText = "SELECT 1";
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "GetRequestSettings", "Minimal"); // SKIP
|
||||
|
||||
// Full request
|
||||
|
||||
RequestID = String(New UUID());
|
||||
Data = New Structure("meta,data", New Array, New Array);
|
||||
Database = "default";
|
||||
ResponseFormat = "CSV";
|
||||
|
||||
AdditionalSettings = New Map;
|
||||
AdditionalSettings.Insert("max_threads", "4");
|
||||
|
||||
ColoumnsStruct = New Structure("id,name", "UInt64", "String");
|
||||
Options = New Structure;
|
||||
Options.Insert("name", "ext");
|
||||
Options.Insert("cols", ColoumnsStruct);
|
||||
|
||||
ExternalTable = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options);
|
||||
|
||||
TableArray = New Array;
|
||||
TableArray.Add(ExternalTable);
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("query", QueryText);
|
||||
Options.Insert("db", Database);
|
||||
Options.Insert("id", RequestID);
|
||||
Options.Insert("data", Data);
|
||||
Options.Insert("format", ResponseFormat);
|
||||
Options.Insert("ext", TableArray);
|
||||
Options.Insert("settings", AdditionalSettings);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetRequestSettings", Options);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetRequestSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetExternalTableStructure(FunctionParameters)
|
||||
|
||||
// Minimal structure
|
||||
|
||||
TableName = "external_data";
|
||||
ColoumnsStruct = New Structure;
|
||||
ColoumnsStruct.Insert("id" , "UInt64");
|
||||
ColoumnsStruct.Insert("name", "String");
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("name", TableName);
|
||||
Options.Insert("cols", ColoumnsStruct);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options);
|
||||
|
||||
Process(Result, "ClickHouse", "GetExternalTableStructure", "Minimal"); // SKIP
|
||||
|
||||
|
||||
// With TSV data
|
||||
|
||||
TableData = StrTemplate("1%1Test
|
||||
|2%2Test2", Chars.Tab);
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("name", TableName);
|
||||
Options.Insert("cols", ColoumnsStruct);
|
||||
Options.Insert("data", TableData);
|
||||
Options.Insert("format", "TSV");
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetExternalTableStructure", Options);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetExternalTableStructure");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetSessionSettings(FunctionParameters)
|
||||
|
||||
SessionID = String(New UUID);
|
||||
Check = True;
|
||||
Timeout = 120;
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("id", SessionID);
|
||||
Options.Insert("check", Check);
|
||||
Options.Insert("timeout", Timeout);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetSessionSettings", Options);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetSessionSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure ClickHouse_GetTlsSettings(FunctionParameters)
|
||||
|
||||
Options = New Structure;
|
||||
Options.Insert("trust", Ложь);
|
||||
|
||||
Result = OPI_TestDataRetrieval.ExecuteTestCLI("clickhouse", "GetTlsSettings", Options);
|
||||
|
||||
// END
|
||||
|
||||
Process(Result, "ClickHouse", "GetTlsSettings");
|
||||
|
||||
EndProcedure
|
||||
|
||||
|
||||
+26
-3
@@ -41,7 +41,8 @@
|
||||
|
||||
Procedure GetBinaryData(Value, Val Force = False, Val TryB64 = True) Export
|
||||
|
||||
If Value = Undefined Then
|
||||
If Value = Undefined Then
|
||||
Value = GetBinaryDataFromString("");
|
||||
Return;
|
||||
EndIf;
|
||||
|
||||
@@ -98,12 +99,16 @@ Procedure GetBinaryOrStream(Value) Export
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure GetCollection(Value, ByNetwork = True) Export
|
||||
Procedure GetCollection(Value, ByNetwork = True, Success = False) Export
|
||||
|
||||
Success = False;
|
||||
|
||||
If Value = Undefined Then
|
||||
Return;
|
||||
EndIf;
|
||||
|
||||
Success = True;
|
||||
|
||||
Try
|
||||
|
||||
// BSLLS:ExternalAppStarting-off
|
||||
@@ -147,6 +152,7 @@ Procedure GetCollection(Value, ByNetwork = True) Export
|
||||
|
||||
If (Not ThisIsCollection(Value)) Or Not ValueIsFilled(Value) Then
|
||||
|
||||
Success = False;
|
||||
Value = InitialValue;
|
||||
OPI_Tools.ValueToArray(Value);
|
||||
|
||||
@@ -158,6 +164,7 @@ Procedure GetCollection(Value, ByNetwork = True) Export
|
||||
|
||||
Except
|
||||
|
||||
Success = False;
|
||||
Value = InitialValue;
|
||||
OPI_Tools.ValueToArray(Value);
|
||||
|
||||
@@ -426,8 +433,24 @@ Procedure ConvertSourceToValue(Value, TryB64)
|
||||
Else
|
||||
|
||||
If TryB64 Then
|
||||
Value = Base64Value(Value);
|
||||
|
||||
Value_ = Base64Value(Value);
|
||||
|
||||
If TypeOf(Value_) = Type("BinaryData") Then
|
||||
Success = Value_.Size() <> 0;
|
||||
Else
|
||||
Success = False;
|
||||
EndIf;
|
||||
|
||||
If Success Then
|
||||
Value = Value_;
|
||||
EndIf;
|
||||
|
||||
Else
|
||||
Success = False;
|
||||
EndIf;
|
||||
|
||||
If Not Success Then
|
||||
Raise "The value is not a file path or Base64 string";
|
||||
EndIf;
|
||||
|
||||
|
||||
@@ -1014,7 +1014,7 @@ Function AddMultipartFormDataFile(Val FieldName
|
||||
OPI_TypeConversion.GetBinaryData(Data, True, True);
|
||||
OPI_TypeConversion.GetBoolean(IgnoreEmpty);
|
||||
|
||||
If IgnoreEmpty And Data.Size = 0 Then
|
||||
If IgnoreEmpty And Data.Size() = 0 Then
|
||||
AddLog(StrTemplate("AddMultipartFormDataFile: empty file ignored, field %1", FieldName));
|
||||
Return ThisObject;
|
||||
EndIf;
|
||||
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
07C4BB7AB731BEE83F841D7B9FCCBFE88AEA3E79ABE5F6C079001C2DBEC9A426
|
||||
020E99F2738A217F5BB9933180E87C96741C7679FB414458053C1635BA67A99A
|
||||
+45
-45
@@ -86,51 +86,6 @@ Function GetComposition() Export
|
||||
NewLine.Region = "Common methods";
|
||||
|
||||
|
||||
NewLine = CompositionTable.Add();
|
||||
NewLine.Library = "clickhouse";
|
||||
NewLine.Module = "OPI_ClickHouse";
|
||||
NewLine.Method = "GetGRPCConnectionSettings";
|
||||
NewLine.SearchMethod = "GETGRPCCONNECTIONSETTINGS";
|
||||
NewLine.Parameter = "--url";
|
||||
NewLine.ParameterTrim = "-u";
|
||||
NewLine.Description = "Connection address with protocol and port";
|
||||
NewLine.Region = "Common methods";
|
||||
NewLine.MethodDescription = "Gets the settings structure for gRPC connection";
|
||||
|
||||
|
||||
NewLine = CompositionTable.Add();
|
||||
NewLine.Library = "clickhouse";
|
||||
NewLine.Module = "OPI_ClickHouse";
|
||||
NewLine.Method = "GetGRPCConnectionSettings";
|
||||
NewLine.SearchMethod = "GETGRPCCONNECTIONSETTINGS";
|
||||
NewLine.Parameter = "--auth";
|
||||
NewLine.ParameterTrim = "-a";
|
||||
NewLine.Description = "Authorization: string for JWT, structure for basic (optional, def. val.. - Empty value)";
|
||||
NewLine.Region = "Common methods";
|
||||
|
||||
|
||||
NewLine = CompositionTable.Add();
|
||||
NewLine.Library = "clickhouse";
|
||||
NewLine.Module = "OPI_ClickHouse";
|
||||
NewLine.Method = "GetGRPCConnectionSettings";
|
||||
NewLine.SearchMethod = "GETGRPCCONNECTIONSETTINGS";
|
||||
NewLine.Parameter = "--meta";
|
||||
NewLine.ParameterTrim = "-m";
|
||||
NewLine.Description = "gRPC metadata structure, if necessary (optional, def. val.. - Empty value)";
|
||||
NewLine.Region = "Common methods";
|
||||
|
||||
|
||||
NewLine = CompositionTable.Add();
|
||||
NewLine.Library = "clickhouse";
|
||||
NewLine.Module = "OPI_ClickHouse";
|
||||
NewLine.Method = "GetGRPCConnectionSettings";
|
||||
NewLine.SearchMethod = "GETGRPCCONNECTIONSETTINGS";
|
||||
NewLine.Parameter = "--tls";
|
||||
NewLine.ParameterTrim = "-t";
|
||||
NewLine.Description = "TLS settings. See GetTlsSettings (optional, def. val.. - Empty value)";
|
||||
NewLine.Region = "Common methods";
|
||||
|
||||
|
||||
NewLine = CompositionTable.Add();
|
||||
NewLine.Library = "clickhouse";
|
||||
NewLine.Module = "OPI_ClickHouse";
|
||||
@@ -288,6 +243,51 @@ Function GetComposition() Export
|
||||
NewLine.Region = "Common methods";
|
||||
|
||||
|
||||
NewLine = CompositionTable.Add();
|
||||
NewLine.Library = "clickhouse";
|
||||
NewLine.Module = "OPI_ClickHouse";
|
||||
NewLine.Method = "GetGRPCConnectionSettings";
|
||||
NewLine.SearchMethod = "GETGRPCCONNECTIONSETTINGS";
|
||||
NewLine.Parameter = "--url";
|
||||
NewLine.ParameterTrim = "-u";
|
||||
NewLine.Description = "Connection address with protocol and port";
|
||||
NewLine.Region = "Grpc";
|
||||
NewLine.MethodDescription = "Gets the settings structure for gRPC connection";
|
||||
|
||||
|
||||
NewLine = CompositionTable.Add();
|
||||
NewLine.Library = "clickhouse";
|
||||
NewLine.Module = "OPI_ClickHouse";
|
||||
NewLine.Method = "GetGRPCConnectionSettings";
|
||||
NewLine.SearchMethod = "GETGRPCCONNECTIONSETTINGS";
|
||||
NewLine.Parameter = "--auth";
|
||||
NewLine.ParameterTrim = "-a";
|
||||
NewLine.Description = "Authorization: string for JWT, structure for basic (optional, def. val.. - Empty value)";
|
||||
NewLine.Region = "Grpc";
|
||||
|
||||
|
||||
NewLine = CompositionTable.Add();
|
||||
NewLine.Library = "clickhouse";
|
||||
NewLine.Module = "OPI_ClickHouse";
|
||||
NewLine.Method = "GetGRPCConnectionSettings";
|
||||
NewLine.SearchMethod = "GETGRPCCONNECTIONSETTINGS";
|
||||
NewLine.Parameter = "--meta";
|
||||
NewLine.ParameterTrim = "-m";
|
||||
NewLine.Description = "gRPC metadata structure, if necessary (optional, def. val.. - Empty value)";
|
||||
NewLine.Region = "Grpc";
|
||||
|
||||
|
||||
NewLine = CompositionTable.Add();
|
||||
NewLine.Library = "clickhouse";
|
||||
NewLine.Module = "OPI_ClickHouse";
|
||||
NewLine.Method = "GetGRPCConnectionSettings";
|
||||
NewLine.SearchMethod = "GETGRPCCONNECTIONSETTINGS";
|
||||
NewLine.Parameter = "--tls";
|
||||
NewLine.ParameterTrim = "-t";
|
||||
NewLine.Description = "TLS settings. See GetTlsSettings (optional, def. val.. - Empty value)";
|
||||
NewLine.Region = "Grpc";
|
||||
|
||||
|
||||
NewLine = CompositionTable.Add();
|
||||
NewLine.Library = "clickhouse";
|
||||
NewLine.Module = "OPI_ClickHouse";
|
||||
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
07C4BB7AB731BEE83F841D7B9FCCBFE88AEA3E79ABE5F6C079001C2DBEC9A426
|
||||
020E99F2738A217F5BB9933180E87C96741C7679FB414458053C1635BA67A99A
|
||||
+280
-54
@@ -125,38 +125,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить настройки соединения gRPC
|
||||
// Получает структуру настроек для gRPC соединения
|
||||
//
|
||||
// Параметры:
|
||||
// Адрес - Строка - Адрес подключения с протоколом и портом - url
|
||||
// Авторизация - Строка, Структура Из КлючИЗначение - Авторизация: строка для JWT, структура для basic - auth
|
||||
// Meta - Структура Из КлючИЗначение - Структура метаданных gRPC, если необходимо - meta
|
||||
// Tls - Структура Из КлючИЗначение - Настройки TLS. См. ПолучитьНастройкиTls - tls
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Структура настроек соединения
|
||||
Функция ПолучитьНастройкиСоединенияGRPC(Знач Адрес
|
||||
, Знач Авторизация = Неопределено
|
||||
, Знач Meta = Неопределено
|
||||
, Знач Tls = Неопределено) Экспорт
|
||||
|
||||
НастройкиСоединения = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("address" , Адрес , "Строка" , НастройкиСоединения);
|
||||
OPI_Инструменты.ДобавитьПоле("tls" , Tls , "КлючИЗначение", НастройкиСоединения);
|
||||
OPI_Инструменты.ДобавитьПоле("metadata" , Meta , "КлючИЗначение", НастройкиСоединения);
|
||||
OPI_Инструменты.ДобавитьПоле("transport", "grpc", "Строка" , НастройкиСоединения);
|
||||
|
||||
Если Авторизация = Неопределено Тогда
|
||||
Возврат НастройкиСоединения;
|
||||
КонецЕсли;
|
||||
|
||||
ДополнитьНастройкиАвторизацией(Авторизация, НастройкиСоединения);
|
||||
|
||||
Возврат НастройкиСоединения;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить настройки запроса
|
||||
// Формирует структуру описания запроса
|
||||
//
|
||||
@@ -240,10 +208,6 @@
|
||||
НастройкиСессии = Новый Структура;
|
||||
ЕстьИдентификаторСессии = IDСессии <> Неопределено;
|
||||
|
||||
Если ЕстьИдентификаторСессии Тогда
|
||||
IDСессии = Строка(Новый УникальныйИдентификатор());
|
||||
КонецЕсли;
|
||||
|
||||
Если ПроверятьСессию = Неопределено Тогда
|
||||
ПроверятьСессию = ЕстьИдентификаторСессии;
|
||||
КонецЕсли;
|
||||
@@ -260,6 +224,38 @@
|
||||
|
||||
#Область GRPC
|
||||
|
||||
// Получить настройки соединения gRPC
|
||||
// Получает структуру настроек для gRPC соединения
|
||||
//
|
||||
// Параметры:
|
||||
// Адрес - Строка - Адрес подключения с протоколом и портом - url
|
||||
// Авторизация - Строка, Структура Из КлючИЗначение - Авторизация: строка для JWT, структура для basic - auth
|
||||
// Meta - Структура Из КлючИЗначение - Структура метаданных gRPC, если необходимо - meta
|
||||
// Tls - Структура Из КлючИЗначение - Настройки TLS. См. ПолучитьНастройкиTls - tls
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Структура настроек соединения
|
||||
Функция ПолучитьНастройкиСоединенияGRPC(Знач Адрес
|
||||
, Знач Авторизация = Неопределено
|
||||
, Знач Meta = Неопределено
|
||||
, Знач Tls = Неопределено) Экспорт
|
||||
|
||||
НастройкиСоединения = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("address" , Адрес , "Строка" , НастройкиСоединения);
|
||||
OPI_Инструменты.ДобавитьПоле("tls" , Tls , "КлючИЗначение", НастройкиСоединения);
|
||||
OPI_Инструменты.ДобавитьПоле("metadata" , Meta , "КлючИЗначение", НастройкиСоединения);
|
||||
OPI_Инструменты.ДобавитьПоле("transport", "grpc", "Строка" , НастройкиСоединения);
|
||||
|
||||
Если Авторизация = Неопределено Тогда
|
||||
Возврат НастройкиСоединения;
|
||||
КонецЕсли;
|
||||
|
||||
ДополнитьНастройкиАвторизацией(Авторизация, НастройкиСоединения);
|
||||
|
||||
Возврат НастройкиСоединения;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Открыть соединение GRPC !NOCLI
|
||||
// Открывает GRPC соединение для работы с ClickHouse
|
||||
//
|
||||
@@ -304,6 +300,56 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Открыть клиентский поток GRPC !NOCLI
|
||||
// Инициализирует клиентский поток для обмена
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Объект GRPC соединения - conn
|
||||
// Таймаут - Число - Таймаут (в мс) - tout
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат обработки
|
||||
Функция ОткрытьКлиентскийПотокGRPC(Знач Соединение, Знач Таймаут = 10000) Экспорт
|
||||
|
||||
Возврат ОткрытьПотокGRPC(Соединение, "client", , , Таймаут);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Открыть серверный поток GRPC !NOCLI
|
||||
// Инициализирует серверный поток для обмена
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Объект GRPC соединения - conn
|
||||
// Запрос - Структура Из КлючИЗначение - Данные запроса. См. ПолучитьНастройкиЗапроса - req
|
||||
// Сессия - Структура Из КлючИЗначение - Настройки сессии. См. ПолучитьНастройкиСессии - session
|
||||
// Таймаут - Число - Таймаут (в мс) - tout
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат обработки
|
||||
Функция ОткрытьСерверныйПотокGRPC(Знач Соединение
|
||||
, Знач Запрос = Неопределено
|
||||
, Знач Сессия = Неопределено
|
||||
, Знач Таймаут = 10000) Экспорт
|
||||
|
||||
Возврат ОткрытьПотокGRPC(Соединение, "server", Запрос, Сессия, Таймаут);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Открыть двунаправленный поток GRPC !NOCLI
|
||||
// Инициализирует двунаправленный поток для обмена
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Объект GRPC соединения - conn
|
||||
// Таймаут - Число - Таймаут (в мс) - tout
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат обработки
|
||||
Функция ОткрытьДвунаправленныйПотокGRPC(Знач Соединение, Знач Таймаут = 10000) Экспорт
|
||||
|
||||
Возврат ОткрытьПотокGRPC(Соединение, "bidi", , , Таймаут);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить настройки TLS
|
||||
// Формирует настройки для использования TLS при выполнении запросов
|
||||
//
|
||||
@@ -355,6 +401,23 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ЭтоФорматВалидногоJSON(Знач Формат)
|
||||
|
||||
Возврат Формат = "JSON"
|
||||
Или Формат = "JSONCompact"
|
||||
Или Формат = "JSONColumns"
|
||||
Или Формат = "JSONColumnsWithMetadata";
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоСтроковыйФормат(Знач Формат)
|
||||
|
||||
Возврат СтрНайти(Формат, "CSV") > 0
|
||||
Или СтрНайти(Формат, "TSV") > 0
|
||||
Или СтрНайти(Формат, "Pretty") > 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область HTTP
|
||||
@@ -384,17 +447,17 @@
|
||||
.ДобавитьЗаголовок("X-ClickHouse-Database", БазаДанных, Истина)
|
||||
.УстановитьДвоичноеТело(Данные);
|
||||
|
||||
УстановитьДополнительныеПараметрыHTTP(HTTPКлиент, Запрос);
|
||||
УстановитьДополнительныеЗаголовкиHTTP(HTTPКлиент, Соединение);
|
||||
УстановитьАвторизациюHTTP(HTTPКлиент, Соединение);
|
||||
УстановитьВнешниеТаблицыHTTP(HTTPКлиент, ВнешниеТаблицы);
|
||||
УстановитьСессиюHTTP(HTTPКлиент, Сессия);
|
||||
УстановитьДополнительныеПараметрыHTTP(HTTPКлиент, Запрос);
|
||||
УстановитьДополнительныеЗаголовкиHTTP(HTTPКлиент, Соединение);
|
||||
|
||||
|
||||
HTTPКлиент.ОбработатьЗапрос("POST", Истина);
|
||||
|
||||
Если HTTPКлиент.Ошибка Тогда
|
||||
|
||||
Ответ = ОформитьОшибочныйОтветHTTP(HTTPКлиент);
|
||||
|
||||
Иначе
|
||||
|
||||
Попытка
|
||||
@@ -407,8 +470,15 @@
|
||||
|
||||
Если ОтветКод < 300 Тогда
|
||||
|
||||
Результат = Истина;
|
||||
ТелоОтвета = HTTPКлиент.ВернутьОтветКакJSONКоллекцию();
|
||||
Результат = Истина;
|
||||
|
||||
Если ЭтоФорматВалидногоJSON(ФорматДанных) Тогда
|
||||
ТелоОтвета = HTTPКлиент.ВернутьОтветКакJSONКоллекцию();
|
||||
ИначеЕсли ЭтоСтроковыйФормат(ФорматДанных) Тогда
|
||||
ТелоОтвета = HTTPКлиент.ВернутьОтветКакСтроку();
|
||||
Иначе
|
||||
ТелоОтвета = HTTPКлиент.ВернутьОтветКакДвоичныеДанные();
|
||||
КонецЕсли;
|
||||
|
||||
Если OPI_Инструменты.ЭтоCLI() Тогда
|
||||
|
||||
@@ -488,7 +558,7 @@
|
||||
|
||||
ИначеЕсли Авторизация = "basic" Тогда
|
||||
|
||||
Логин = OPI_Инструменты.ПолучитьИли(Соединение, "user", Неопределено);
|
||||
Логин = OPI_Инструменты.ПолучитьИли(Соединение, "user" , Неопределено);
|
||||
Пароль = OPI_Инструменты.ПолучитьИли(Соединение, "password", Неопределено);
|
||||
|
||||
HTTPКлиент
|
||||
@@ -542,12 +612,33 @@
|
||||
HTTPКлиент
|
||||
.ДобавитьПараметрURL(ИмяПараметраФормат , ФорматТаблицы , Истина)
|
||||
.ДобавитьПараметрURL(ИмяПараметраСтруктура, КолонкиТаблицыСтрокой, Истина)
|
||||
|
||||
.ДобавитьФайлMultipartFormData(ИмяТаблицы, ИмяФайла, ДанныеТаблицы, ТипДанныхФайла, Истина);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьСессиюHTTP(HTTPКлиент, Знач Сессия)
|
||||
|
||||
Если Не ЗначениеЗаполнено(Сессия) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ТекстОшибки = "Передана некорректная структура информации о сессии";
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Сессия, ТекстОшибки);
|
||||
|
||||
IDСессии = OPI_Инструменты.ПолучитьИли(Сессия, "id" , Неопределено);
|
||||
Проверка = OPI_Инструменты.ПолучитьИли(Сессия, "check" , Неопределено);
|
||||
Таймаут = OPI_Инструменты.ПолучитьИли(Сессия, "timeout", Неопределено);
|
||||
|
||||
HTTPКлиент
|
||||
.ДобавитьПараметрURL("session_id" , IDСессии, Истина)
|
||||
.ДобавитьПараметрURL("session_check" , Проверка, Истина)
|
||||
.ДобавитьПараметрURL("session_timeout", Таймаут , Истина);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область GRPC
|
||||
@@ -568,6 +659,64 @@
|
||||
Возврат Коннектор;
|
||||
КонецЕсли;
|
||||
|
||||
ЗапросGRPC = СформироватьЗапросGRPC(НастройкиСоединения, Запрос, Сессия);
|
||||
|
||||
Сервис = ПолучитьИмяСервисаGRPC();
|
||||
Метод = "ExecuteQuery";
|
||||
Результат = OPI_GRPC.ВызватьМетод(Коннектор, Сервис, Метод, ЗапросGRPC);
|
||||
|
||||
ОбработатьОтветGRPC(Результат);
|
||||
|
||||
Если ЗакрыватьСоединение Тогда
|
||||
OPI_GRPC.ЗакрытьСоединение(Коннектор);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОткрытьПотокGRPC(Соединение
|
||||
, Знач Вид
|
||||
, Знач Запрос = Неопределено
|
||||
, Знач Сессия = Неопределено
|
||||
, Знач Таймаут = 10000)
|
||||
|
||||
Сервис = ПолучитьИмяСервисаGRPC();
|
||||
|
||||
Если Вид = "client" Тогда
|
||||
|
||||
Метод = "ExecuteQueryWithStreamInput";
|
||||
Результат = OPI_GRPC.ИнициализироватьКлиентскийПоток(Соединение, Сервис, Метод, Таймаут);
|
||||
|
||||
ИначеЕсли Вид = "server" Тогда
|
||||
|
||||
Метод = "ExecuteQueryWithStreamOutput";
|
||||
ЗапросGRPC = СформироватьЗапросGRPC(Соединение, Запрос, Сессия);
|
||||
Результат = OPI_GRPC.ИнициализироватьСерверныйПоток(Соединение, Сервис, Метод, ЗапросGRPC, Таймаут);
|
||||
|
||||
Иначе
|
||||
|
||||
Метод = "ExecuteQueryWithStreamIO";
|
||||
Результат = OPI_GRPC.ИнициализироватьДвунаправленныйПоток(Соединение, Сервис, Метод, Таймаут);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьЗапросGRPC(Знач Соединение, Знач Запрос, Знач Сессия)
|
||||
|
||||
Если Запрос = Неопределено Тогда
|
||||
Возврат Запрос;
|
||||
КонецЕсли;
|
||||
|
||||
Если OPI_GRPC.ЭтоКоннектор(Соединение) Тогда
|
||||
НастройкиСоединения = OPI_Инструменты.JsonВСтруктуру(Соединение.GetSettings());
|
||||
Иначе
|
||||
НастройкиСоединения = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
Данные = OPI_Инструменты.ПолучитьИли(Запрос, "data" , Неопределено);
|
||||
IDЗапроса = OPI_Инструменты.ПолучитьИли(Запрос, "id" , Неопределено);
|
||||
ТекстЗапроса = OPI_Инструменты.ПолучитьИли(Запрос, "query" , Неопределено);
|
||||
@@ -586,16 +735,15 @@
|
||||
|
||||
УстановитьАвторизациюGRPC(ЗапросGRPC, НастройкиСоединения);
|
||||
УстановитьВнешниеТаблицыGRPC(ЗапросGRPC, ВнешниеТаблицы);
|
||||
УстановитьСессиюGRPC(ЗапросGRPC, Сессия);
|
||||
|
||||
Сервис = "clickhouse.grpc.ClickHouse";
|
||||
Метод = "ExecuteQuery";
|
||||
Результат = OPI_GRPC.ВызватьМетод(Коннектор, Сервис, Метод, ЗапросGRPC);
|
||||
Возврат ЗапросGRPC;
|
||||
|
||||
Если ЗакрыватьСоединение Тогда
|
||||
OPI_GRPC.ЗакрытьСоединение(Коннектор);
|
||||
КонецЕсли;
|
||||
КонецФункции
|
||||
|
||||
Возврат Результат;
|
||||
Функция ПолучитьИмяСервисаGRPC()
|
||||
|
||||
Возврат "clickhouse.grpc.ClickHouse";
|
||||
|
||||
КонецФункции
|
||||
|
||||
@@ -643,6 +791,10 @@
|
||||
ДанныеТаблицы = OPI_Инструменты.ПолучитьИли(Таблица, "data" , Неопределено);
|
||||
КолонкиТаблицы = OPI_Инструменты.ПолучитьИли(Таблица, "cols" , Неопределено);
|
||||
|
||||
Если ДанныеТаблицы <> Неопределено Тогда
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(ДанныеТаблицы, Истина);
|
||||
КонецЕсли;
|
||||
|
||||
ТекстОшибки = СтрШаблон("Некорректная структура колонок для таблицы ""%1""", ИмяТаблицы);
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(КолонкиТаблицы, ТекстОшибки);
|
||||
|
||||
@@ -674,6 +826,68 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьСессиюGRPC(ЗапросGRPC, Знач Сессия)
|
||||
|
||||
Если Не ЗначениеЗаполнено(Сессия) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ТекстОшибки = "Передана некорректная структура информации о сессии";
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Сессия, ТекстОшибки);
|
||||
|
||||
IDСессии = OPI_Инструменты.ПолучитьИли(Сессия, "id" , Неопределено);
|
||||
Проверка = OPI_Инструменты.ПолучитьИли(Сессия, "check" , Неопределено);
|
||||
Таймаут = OPI_Инструменты.ПолучитьИли(Сессия, "timeout", Неопределено);
|
||||
|
||||
OPI_Инструменты.ДобавитьПоле("session_id" , IDСессии, "Строка", ЗапросGRPC);
|
||||
OPI_Инструменты.ДобавитьПоле("session_check" , Проверка, "Булево", ЗапросGRPC);
|
||||
OPI_Инструменты.ДобавитьПоле("session_timeout", Таймаут , "Число" , ЗапросGRPC);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработатьОтветGRPC(Ответ)
|
||||
|
||||
Если Не OPI_Инструменты.ПолучитьИли(Ответ, "result", Ложь) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Формат = OPI_Инструменты.ПолучитьИли(Ответ, "output_format", Неопределено);
|
||||
|
||||
Если Не ЗначениеЗаполнено(Формат) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
B64Строка = OPI_Инструменты.ПолеКоллекцииСуществует(Ответ, "data.output.BYTES");
|
||||
|
||||
Если ЗначениеЗаполнено(B64Строка) Тогда
|
||||
|
||||
Если ЭтоФорматВалидногоJSON(Формат) Тогда
|
||||
|
||||
Значение = ПолучитьДвоичныеДанныеИзBase64Строки(B64Строка);
|
||||
Успех = Ложь;
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Значение, , Успех);
|
||||
|
||||
Если Не Успех Тогда
|
||||
Значение = ПолучитьСтрокуИзДвоичныхДанных(Значение);
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли ЭтоСтроковыйФормат(Формат) Тогда
|
||||
|
||||
Значение = ПолучитьДвоичныеДанныеИзBase64Строки(B64Строка);
|
||||
Значение = ПолучитьСтрокуИзДвоичныхДанных(Значение);
|
||||
|
||||
Иначе
|
||||
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Ответ["data"]["output"] = Значение;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
@@ -688,10 +902,6 @@ Function GetHTTPConnectionSettings(Val Address, Val Authorization = Undefined, V
|
||||
Return ПолучитьНастройкиСоединенияHTTP(Address, Authorization, AdditionalHeaders);
|
||||
EndFunction
|
||||
|
||||
Function GetGRPCConnectionSettings(Val Address, Val Authorization = Undefined, Val Meta = Undefined, Val Tls = Undefined) Export
|
||||
Return ПолучитьНастройкиСоединенияGRPC(Address, Authorization, Meta, Tls);
|
||||
EndFunction
|
||||
|
||||
Function GetRequestSettings(Val Text, Val Database = Undefined, Val RequestID = Undefined, Val Data = Undefined, Val ResponseFormat = "JSON", Val ExternalTables = Undefined, Val Settings = Undefined) Export
|
||||
Return ПолучитьНастройкиЗапроса(Text, Database, RequestID, Data, ResponseFormat, ExternalTables, Settings);
|
||||
EndFunction
|
||||
@@ -704,10 +914,26 @@ Function GetSessionSettings(Val SessionID = Undefined, Val CheckSession = Undefi
|
||||
Return ПолучитьНастройкиСессии(SessionID, CheckSession, Timeout);
|
||||
EndFunction
|
||||
|
||||
Function GetGRPCConnectionSettings(Val Address, Val Authorization = Undefined, Val Meta = Undefined, Val Tls = Undefined) Export
|
||||
Return ПолучитьНастройкиСоединенияGRPC(Address, Authorization, Meta, Tls);
|
||||
EndFunction
|
||||
|
||||
Function CreateGRPCConnection(Val ConnectionSettings) Export
|
||||
Return ОткрытьСоединениеGRPC(ConnectionSettings);
|
||||
EndFunction
|
||||
|
||||
Function OpenClientGRPCStream(Val Connection, Val Timeout = 10000) Export
|
||||
Return ОткрытьКлиентскийПотокGRPC(Connection, Timeout);
|
||||
EndFunction
|
||||
|
||||
Function OpenServerGRPCStream(Val Connection, Val Request = Undefined, Val Session = Undefined, Val Timeout = 10000) Export
|
||||
Return ОткрытьСерверныйПотокGRPC(Connection, Request, Session, Timeout);
|
||||
EndFunction
|
||||
|
||||
Function OpenBidirectionalGRPCStream(Val Connection, Val Timeout = 10000) Export
|
||||
Return ОткрытьДвунаправленныйПотокGRPC(Connection, Timeout);
|
||||
EndFunction
|
||||
|
||||
Function GetTlsSettings(Val DisableCertVerification, Val CertFilepath = "") Export
|
||||
Return ПолучитьНастройкиTls(DisableCertVerification, CertFilepath);
|
||||
EndFunction
|
||||
|
||||
+328
-28
@@ -3362,11 +3362,17 @@
|
||||
Процедура CH_ОсновныеМетоды() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Address" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_User" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Password", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Address" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_AddressGRPC", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_User" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Password" , ПараметрыТеста);
|
||||
|
||||
ClickHouse_ВыполнитьЗапрос(ПараметрыТеста);
|
||||
ClickHouse_ПолучитьНастройкиСоединенияHTTP(ПараметрыТеста);
|
||||
ClickHouse_ПолучитьНастройкиСоединенияGRPC(ПараметрыТеста);
|
||||
ClickHouse_ПолучитьНастройкиЗапроса(ПараметрыТеста);
|
||||
ClickHouse_ПолучитьСтруктуруВнешнейТаблицы(ПараметрыТеста);
|
||||
ClickHouse_ПолучитьНастройкиСессии(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -3378,6 +3384,7 @@
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Password" , ПараметрыТеста);
|
||||
|
||||
ClickHouse_ОткрытьСоединениеGRPC(ПараметрыТеста);
|
||||
ClickHouse_ПолучитьНастройкиTls(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -27069,9 +27076,9 @@
|
||||
|
||||
Соединение = OPI_ClickHouse.ПолучитьНастройкиСоединенияHTTP(URL, Авторизация);
|
||||
|
||||
// Запрос (простой)
|
||||
// Запрос (создание таблицы)
|
||||
|
||||
ТекстЗапроса = "CREATE TABLE events (
|
||||
ТекстЗапроса = "CREATE TABLE IF NOT EXISTS events (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -27080,15 +27087,15 @@
|
||||
|) ENGINE = MergeTree()
|
||||
|ORDER BY (timestamp, id)";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE events"); // SKIP
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); // SKIP
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE IF EXISTS events"); // SKIP
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); // SKIP
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "Простой"); // SKIP
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "СозданиеТаблицы"); // SKIP
|
||||
|
||||
// Запрос (с данными)
|
||||
// Запрос (вставка данных)
|
||||
|
||||
ТекстЗапроса = "INSERT INTO events FORMAT JSON";
|
||||
|
||||
@@ -27128,6 +27135,89 @@
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, БазаДанных, IDЗапроса, Данные, ФорматДанных);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВставкаДанных"); // SKIP
|
||||
|
||||
// Запрос с внешней таблицей
|
||||
|
||||
ИмяТаблицы = "ext_users";
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("id" , "UInt64");
|
||||
СтруктураКолонок.Вставить("name", "String");
|
||||
|
||||
Таб = Символы.Таб;
|
||||
ДанныеТаблицы = "1" + Таб + "John
|
||||
|2" + Таб + "Jane
|
||||
|3" + Таб + "Bob";
|
||||
|
||||
ВнешняяТаблица = OPI_ClickHouse.ПолучитьСтруктуруВнешнейТаблицы(ИмяТаблицы, СтруктураКолонок, ДанныеТаблицы, "TSV");
|
||||
|
||||
МассивВнешнихТаблиц = Новый Массив;
|
||||
МассивВнешнихТаблиц.Добавить(ВнешняяТаблица);
|
||||
|
||||
ТекстЗапроса = "SELECT * FROM ext_users WHERE id > 1";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, , , , "JSON", МассивВнешнихТаблиц);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВнешняяТаблица"); // SKIP
|
||||
|
||||
// Выборка
|
||||
|
||||
ТекстВыборки = "SELECT * FROM events";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстВыборки, , , , "JSON");
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос"); // SKIP
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстВыборки, , , , "CSV");
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВыборкаCSV");
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстВыборки, , , , "TSV");
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВыборкаTSV");
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстВыборки, , , , "JSONCompact");
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВыборкаJSONCompact");
|
||||
|
||||
ТекстЗапроса = "SELECT 1 AS result";
|
||||
|
||||
ДопНастройки = Новый Соответствие;
|
||||
ДопНастройки.Вставить("max_threads", "4");
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, , , , "JSON", , ДопНастройки);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ДопНастройки");
|
||||
|
||||
Сессия = OPI_ClickHouse.ПолучитьНастройкиСессии(Строка(Новый УникальныйИдентификатор()));
|
||||
|
||||
ТекстЗапроса = "CREATE TEMPORARY TABLE temp_session_test (id UInt64, value String)";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос, Сессия);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "СессияСоздание");
|
||||
|
||||
ТекстЗапроса = "INSERT INTO temp_session_test VALUES (1, 'test1'), (2, 'test2')";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос, Сессия);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "СессияВставка");
|
||||
|
||||
ТекстЗапроса = "SELECT * FROM temp_session_test";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, , , , "JSON");
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос, Сессия);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос");
|
||||
@@ -27143,14 +27233,16 @@
|
||||
|
||||
Авторизация = Новый Структура(Логин, Пароль);
|
||||
|
||||
// Открытие соединения
|
||||
|
||||
НастройкиСоединения = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, Авторизация);
|
||||
Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения);
|
||||
|
||||
Обработать(Соединение, "ClickHouse", "ОткрытьСоединениеGRPC"); // SKIP
|
||||
Обработать(Соединение, "ClickHouse", "ОткрытьСоединениеGRPC", "Открытие"); // SKIP
|
||||
|
||||
// Запрос (простой)
|
||||
// Запрос через открытое соединение (создание таблицы)
|
||||
|
||||
ТекстЗапроса = "CREATE TABLE events (
|
||||
ТекстЗапроса = "CREATE TABLE IF NOT EXISTS events_grpc (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -27159,14 +27251,17 @@
|
||||
|) ENGINE = MergeTree()
|
||||
|ORDER BY (timestamp, id)";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE IF EXISTS events_grpc"); // SKIP
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); // SKIP
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "Простой"); // SKIP
|
||||
Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "СозданиеТаблицы"); // SKIP
|
||||
|
||||
// Запрос (с данными)
|
||||
// Вставка данных
|
||||
|
||||
ТекстЗапроса = "INSERT INTO events FORMAT JSON";
|
||||
ТекстЗапроса = "INSERT INTO events_grpc FORMAT JSON";
|
||||
|
||||
ФорматДанных = "JSON";
|
||||
МассивДанных = Новый Массив;
|
||||
@@ -27180,15 +27275,7 @@
|
||||
Запись1.Вставить("event_type", "click");
|
||||
Запись1.Вставить("payload" , "{}");
|
||||
|
||||
Запись2 = Новый Структура;
|
||||
Запись2.Вставить("id" , 2);
|
||||
Запись2.Вставить("timestamp" , ТекущаяДата);
|
||||
Запись2.Вставить("user_id" , 200);
|
||||
Запись2.Вставить("event_type", "hover");
|
||||
Запись2.Вставить("payload" , "{}");
|
||||
|
||||
МассивДанных.Добавить(Запись1);
|
||||
МассивДанных.Добавить(Запись2);
|
||||
|
||||
Мета = Новый Массив;
|
||||
Мета.Добавить(Новый Структура("name,type", "id" , "UInt64"));
|
||||
@@ -27197,16 +27284,229 @@
|
||||
Мета.Добавить(Новый Структура("name,type", "event_type", "String"));
|
||||
Мета.Добавить(Новый Структура("name,type", "payload" , "String"));
|
||||
|
||||
Данные = Новый Структура("meta,data", Мета, МассивДанных);
|
||||
БазаДанных = "default";
|
||||
IDЗапроса = Строка(Новый УникальныйИдентификатор());
|
||||
Данные = Новый Структура("meta,data", Мета, МассивДанных);
|
||||
IDЗапроса = Строка(Новый УникальныйИдентификатор());
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, БазаДанных, IDЗапроса, Данные, ФорматДанных);
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, "default", IDЗапроса, Данные, ФорматДанных);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "ВставкаДанных"); // SKIP
|
||||
|
||||
// Выборка
|
||||
|
||||
ТекстВыборки = "SELECT * FROM events_grpc";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстВыборки, , , , "JSON");
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "Выборка"); // SKIP
|
||||
|
||||
// Запрос с внешней таблицей через gRPC
|
||||
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("id" , "UInt64");
|
||||
СтруктураКолонок.Вставить("name", "String");
|
||||
|
||||
Таб = Символы.Таб;
|
||||
ДанныеТаблицы = "1" + Таб + "John
|
||||
|2" + Таб + "Jane";
|
||||
|
||||
ВнешняяТаблица = OPI_ClickHouse.ПолучитьСтруктуруВнешнейТаблицы("ext_grpc", СтруктураКолонок, ДанныеТаблицы, "TSV");
|
||||
|
||||
МассивВнешнихТаблиц = Новый Массив;
|
||||
МассивВнешнихТаблиц.Добавить(ВнешняяТаблица);
|
||||
|
||||
ТекстЗапроса = "SELECT * FROM ext_grpc";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, , , , "JSON", МассивВнешнихТаблиц);
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "Сложный");
|
||||
Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ClickHouse_ПолучитьНастройкиСоединенияHTTP(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["ClickHouse_Address"];
|
||||
|
||||
// Без авторизации
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияHTTP(URL);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP", "БезАвторизации"); // SKIP
|
||||
|
||||
// С basic авторизацией
|
||||
|
||||
Логин = ПараметрыФункции["ClickHouse_User"];
|
||||
Пароль = ПараметрыФункции["ClickHouse_Password"];
|
||||
|
||||
Авторизация = Новый Структура(Логин, Пароль);
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияHTTP(URL, Авторизация);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP", "BasicАвторизация"); // SKIP
|
||||
|
||||
// С JWT авторизацией
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияHTTP(URL, JWT);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP", "JWTАвторизация"); // SKIP
|
||||
|
||||
// С дополнительными заголовками
|
||||
|
||||
ДопЗаголовки = Новый Соответствие;
|
||||
ДопЗаголовки.Вставить("X-Custom-Header", "CustomValue");
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияHTTP(URL, Авторизация, ДопЗаголовки);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ClickHouse_ПолучитьНастройкиСоединенияGRPC(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["ClickHouse_AddressGRPC"];
|
||||
|
||||
// Без авторизации
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "БезАвторизации"); // SKIP
|
||||
|
||||
// С basic авторизацией
|
||||
|
||||
Логин = ПараметрыФункции["ClickHouse_User"];
|
||||
Пароль = ПараметрыФункции["ClickHouse_Password"];
|
||||
|
||||
Авторизация = Новый Структура(Логин, Пароль);
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, Авторизация);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "BasicАвторизация"); // SKIP
|
||||
|
||||
// С JWT авторизацией
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, JWT);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "JWTАвторизация"); // SKIP
|
||||
|
||||
// С метаданными
|
||||
|
||||
Meta = Новый Соответствие;
|
||||
Meta.Вставить("custom-meta", "value");
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, Авторизация, Meta);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "СМетаданными"); // SKIP
|
||||
|
||||
// С TLS настройками
|
||||
|
||||
Tls = OPI_ClickHouse.ПолучитьНастройкиTls(Истина);
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСоединенияGRPC(URL, Авторизация, , Tls);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ClickHouse_ПолучитьНастройкиЗапроса(ПараметрыФункции)
|
||||
|
||||
// Минимальный запрос
|
||||
|
||||
ТекстЗапроса = "SELECT 1";
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиЗапроса", "Минимальный"); // SKIP
|
||||
|
||||
// Полный запрос
|
||||
|
||||
IDЗапроса = Строка(Новый УникальныйИдентификатор());
|
||||
Данные = Новый Структура("meta,data", Новый Массив, Новый Массив);
|
||||
БазаДанных = "default";
|
||||
ФорматОтвета = "CSV";
|
||||
|
||||
ДопНастройки = Новый Соответствие;
|
||||
ДопНастройки.Вставить("max_threads", "4");
|
||||
|
||||
СтруктураКолонок = Новый Структура("id,name", "UInt64", "String");
|
||||
ВнешняяТаблица = OPI_ClickHouse.ПолучитьСтруктуруВнешнейТаблицы("ext", СтруктураКолонок);
|
||||
|
||||
МассивТаблиц = Новый Массив;
|
||||
МассивТаблиц.Добавить(ВнешняяТаблица);
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса
|
||||
, БазаДанных
|
||||
, IDЗапроса
|
||||
, Данные
|
||||
, ФорматОтвета
|
||||
, МассивТаблиц
|
||||
, ДопНастройки);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиЗапроса");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ClickHouse_ПолучитьСтруктуруВнешнейТаблицы(ПараметрыФункции)
|
||||
|
||||
// Минимальная структура
|
||||
|
||||
ИмяТаблицы = "external_data";
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("id" , "UInt64");
|
||||
СтруктураКолонок.Вставить("name", "String");
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьСтруктуруВнешнейТаблицы(ИмяТаблицы, СтруктураКолонок);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьСтруктуруВнешнейТаблицы", "Минимальная"); // SKIP
|
||||
|
||||
|
||||
// С данными TSV
|
||||
|
||||
ДанныеТаблицы = СтрШаблон("1%1Test
|
||||
|2%2Test2", Символы.Таб);
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьСтруктуруВнешнейТаблицы(ИмяТаблицы, СтруктураКолонок, ДанныеТаблицы, "TSV");
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьСтруктуруВнешнейТаблицы");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ClickHouse_ПолучитьНастройкиСессии(ПараметрыФункции)
|
||||
|
||||
IDСессии = Строка(Новый УникальныйИдентификатор);
|
||||
Проверять = Истина;
|
||||
Таймаут = 120;
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСессии(IDСессии, Проверять, Таймаут);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСессии");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ClickHouse_ПолучитьНастройкиTls(ПараметрыФункции)
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиTls(Ложь);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиTls");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
+503
-28
@@ -3363,11 +3363,17 @@
|
||||
Процедура CH_ОсновныеМетоды() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Address" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_User" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Password", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Address" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_AddressGRPC", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_User" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Password" , ПараметрыТеста);
|
||||
|
||||
ClickHouse_ВыполнитьЗапрос(ПараметрыТеста);
|
||||
ClickHouse_ПолучитьНастройкиСоединенияHTTP(ПараметрыТеста);
|
||||
ClickHouse_ПолучитьНастройкиСоединенияGRPC(ПараметрыТеста);
|
||||
ClickHouse_ПолучитьНастройкиЗапроса(ПараметрыТеста);
|
||||
ClickHouse_ПолучитьСтруктуруВнешнейТаблицы(ПараметрыТеста);
|
||||
ClickHouse_ПолучитьНастройкиСессии(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -3379,6 +3385,7 @@
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Password" , ПараметрыТеста);
|
||||
|
||||
ClickHouse_ОткрытьСоединениеGRPC(ПараметрыТеста);
|
||||
ClickHouse_ПолучитьНастройкиTls(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -35778,9 +35785,9 @@
|
||||
|
||||
Соединение = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции);
|
||||
|
||||
// Запрос (простой)
|
||||
// Запрос (создание таблицы)
|
||||
|
||||
ТекстЗапроса = "CREATE TABLE events (
|
||||
ТекстЗапроса = "CREATE TABLE IF NOT EXISTS events (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -35789,8 +35796,8 @@
|
||||
|) ENGINE = MergeTree()
|
||||
|ORDER BY (timestamp, id)";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE events"); // SKIP
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); // SKIP
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE IF EXISTS events"); // SKIP
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); // SKIP
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
@@ -35802,9 +35809,9 @@
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "Простой"); // SKIP
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "СозданиеТаблицы"); // SKIP
|
||||
|
||||
// Запрос (с данными)
|
||||
// Запрос (вставка данных)
|
||||
|
||||
ТекстЗапроса = "INSERT INTO events FORMAT JSON";
|
||||
|
||||
@@ -35855,6 +35862,173 @@
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВставкаДанных"); // SKIP
|
||||
|
||||
// Запрос с внешней таблицей
|
||||
|
||||
ИмяТаблицы = "ext_users";
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("id" , "UInt64");
|
||||
СтруктураКолонок.Вставить("name", "String");
|
||||
|
||||
Таб = Символы.Таб;
|
||||
ДанныеТаблицы = "1" + Таб + "John
|
||||
|2" + Таб + "Jane
|
||||
|3" + Таб + "Bob";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("name", ИмяТаблицы);
|
||||
Опции.Вставить("cols", СтруктураКолонок);
|
||||
Опции.Вставить("data", ДанныеТаблицы);
|
||||
Опции.Вставить("format", "TSV");
|
||||
|
||||
ВнешняяТаблица = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции);
|
||||
|
||||
МассивВнешнихТаблиц = Новый Массив;
|
||||
МассивВнешнихТаблиц.Добавить(ВнешняяТаблица);
|
||||
|
||||
ТекстЗапроса = "SELECT * FROM ext_users WHERE id > 1";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
Опции.Вставить("format", "JSON");
|
||||
Опции.Вставить("ext", МассивВнешнихТаблиц);
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВнешняяТаблица"); // SKIP
|
||||
|
||||
// Выборка
|
||||
|
||||
ТекстВыборки = "SELECT * FROM events";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстВыборки);
|
||||
Опции.Вставить("format", "JSON");
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос"); // SKIP
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстВыборки);
|
||||
Опции.Вставить("format", "CSV");
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВыборкаCSV");
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстВыборки);
|
||||
Опции.Вставить("format", "TSV");
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВыборкаTSV");
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстВыборки);
|
||||
Опции.Вставить("format", "JSONCompact");
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВыборкаJSONCompact");
|
||||
|
||||
ТекстЗапроса = "SELECT 1 AS result";
|
||||
|
||||
ДопНастройки = Новый Соответствие;
|
||||
ДопНастройки.Вставить("max_threads", "4");
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
Опции.Вставить("format", "JSON");
|
||||
Опции.Вставить("settings", ДопНастройки);
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ДопНастройки");
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("id", Строка);
|
||||
|
||||
Сессия = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСессии", Опции);
|
||||
|
||||
ТекстЗапроса = "CREATE TEMPORARY TABLE temp_session_test (id UInt64, value String)";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
Опции.Вставить("session", Сессия);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "СессияСоздание");
|
||||
|
||||
ТекстЗапроса = "INSERT INTO temp_session_test VALUES (1, 'test1'), (2, 'test2')";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
Опции.Вставить("session", Сессия);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "СессияВставка");
|
||||
|
||||
ТекстЗапроса = "SELECT * FROM temp_session_test";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
Опции.Вставить("format", "JSON");
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
Опции.Вставить("session", Сессия);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос");
|
||||
@@ -35870,6 +36044,8 @@
|
||||
|
||||
Авторизация = Новый Структура(Логин, Пароль);
|
||||
|
||||
// Открытие соединения
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
Опции.Вставить("auth", Авторизация);
|
||||
@@ -35877,11 +36053,11 @@
|
||||
НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции);
|
||||
Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения);
|
||||
|
||||
Обработать(Соединение, "ClickHouse", "ОткрытьСоединениеGRPC"); // SKIP
|
||||
Обработать(Соединение, "ClickHouse", "ОткрытьСоединениеGRPC", "Открытие"); // SKIP
|
||||
|
||||
// Запрос (простой)
|
||||
// Запрос через открытое соединение (создание таблицы)
|
||||
|
||||
ТекстЗапроса = "CREATE TABLE events (
|
||||
ТекстЗапроса = "CREATE TABLE IF NOT EXISTS events_grpc (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -35890,6 +36066,9 @@
|
||||
|) ENGINE = MergeTree()
|
||||
|ORDER BY (timestamp, id)";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE IF EXISTS events_grpc"); // SKIP
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); // SKIP
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
|
||||
@@ -35900,11 +36079,11 @@
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "Простой"); // SKIP
|
||||
Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "СозданиеТаблицы"); // SKIP
|
||||
|
||||
// Запрос (с данными)
|
||||
// Вставка данных
|
||||
|
||||
ТекстЗапроса = "INSERT INTO events FORMAT JSON";
|
||||
ТекстЗапроса = "INSERT INTO events_grpc FORMAT JSON";
|
||||
|
||||
ФорматДанных = "JSON";
|
||||
МассивДанных = Новый Массив;
|
||||
@@ -35918,15 +36097,7 @@
|
||||
Запись1.Вставить("event_type", "click");
|
||||
Запись1.Вставить("payload" , "{}");
|
||||
|
||||
Запись2 = Новый Структура;
|
||||
Запись2.Вставить("id" , 2);
|
||||
Запись2.Вставить("timestamp" , ТекущаяДата);
|
||||
Запись2.Вставить("user_id" , 200);
|
||||
Запись2.Вставить("event_type", "hover");
|
||||
Запись2.Вставить("payload" , "{}");
|
||||
|
||||
МассивДанных.Добавить(Запись1);
|
||||
МассивДанных.Добавить(Запись2);
|
||||
|
||||
Мета = Новый Массив;
|
||||
Мета.Добавить(Новый Структура("name,type", "id" , "UInt64"));
|
||||
@@ -35935,13 +36106,12 @@
|
||||
Мета.Добавить(Новый Структура("name,type", "event_type", "String"));
|
||||
Мета.Добавить(Новый Структура("name,type", "payload" , "String"));
|
||||
|
||||
Данные = Новый Структура("meta,data", Мета, МассивДанных);
|
||||
БазаДанных = "default";
|
||||
IDЗапроса = Строка(Новый УникальныйИдентификатор());
|
||||
Данные = Новый Структура("meta,data", Мета, МассивДанных);
|
||||
IDЗапроса = Строка(Новый УникальныйИдентификатор());
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
Опции.Вставить("db", БазаДанных);
|
||||
Опции.Вставить("db", "default");
|
||||
Опции.Вставить("id", IDЗапроса);
|
||||
Опции.Вставить("data", Данные);
|
||||
Опции.Вставить("format", ФорматДанных);
|
||||
@@ -35953,9 +36123,314 @@
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "ВставкаДанных"); // SKIP
|
||||
|
||||
// Выборка
|
||||
|
||||
ТекстВыборки = "SELECT * FROM events_grpc";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстВыборки);
|
||||
Опции.Вставить("format", "JSON");
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "Выборка"); // SKIP
|
||||
|
||||
// Запрос с внешней таблицей через gRPC
|
||||
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("id" , "UInt64");
|
||||
СтруктураКолонок.Вставить("name", "String");
|
||||
|
||||
Таб = Символы.Таб;
|
||||
ДанныеТаблицы = "1" + Таб + "John
|
||||
|2" + Таб + "Jane";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("name", "ext_grpc");
|
||||
Опции.Вставить("cols", СтруктураКолонок);
|
||||
Опции.Вставить("data", ДанныеТаблицы);
|
||||
Опции.Вставить("format", "TSV");
|
||||
|
||||
ВнешняяТаблица = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции);
|
||||
|
||||
МассивВнешнихТаблиц = Новый Массив;
|
||||
МассивВнешнихТаблиц.Добавить(ВнешняяТаблица);
|
||||
|
||||
ТекстЗапроса = "SELECT * FROM ext_grpc";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
Опции.Вставить("format", "JSON");
|
||||
Опции.Вставить("ext", МассивВнешнихТаблиц);
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "Сложный");
|
||||
Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ClickHouse_ПолучитьНастройкиСоединенияHTTP(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["ClickHouse_Address"];
|
||||
|
||||
// Без авторизации
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP", "БезАвторизации"); // SKIP
|
||||
|
||||
// С basic авторизацией
|
||||
|
||||
Логин = ПараметрыФункции["ClickHouse_User"];
|
||||
Пароль = ПараметрыФункции["ClickHouse_Password"];
|
||||
|
||||
Авторизация = Новый Структура(Логин, Пароль);
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
Опции.Вставить("auth", Авторизация);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP", "BasicАвторизация"); // SKIP
|
||||
|
||||
// С JWT авторизацией
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
Опции.Вставить("auth", JWT);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP", "JWTАвторизация"); // SKIP
|
||||
|
||||
// С дополнительными заголовками
|
||||
|
||||
ДопЗаголовки = Новый Соответствие;
|
||||
ДопЗаголовки.Вставить("X-Custom-Header", "CustomValue");
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
Опции.Вставить("auth", Авторизация);
|
||||
Опции.Вставить("headers", ДопЗаголовки);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ClickHouse_ПолучитьНастройкиСоединенияGRPC(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["ClickHouse_AddressGRPC"];
|
||||
|
||||
// Без авторизации
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "БезАвторизации"); // SKIP
|
||||
|
||||
// С basic авторизацией
|
||||
|
||||
Логин = ПараметрыФункции["ClickHouse_User"];
|
||||
Пароль = ПараметрыФункции["ClickHouse_Password"];
|
||||
|
||||
Авторизация = Новый Структура(Логин, Пароль);
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
Опции.Вставить("auth", Авторизация);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "BasicАвторизация"); // SKIP
|
||||
|
||||
// С JWT авторизацией
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
Опции.Вставить("auth", JWT);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "JWTАвторизация"); // SKIP
|
||||
|
||||
// С метаданными
|
||||
|
||||
Meta = Новый Соответствие;
|
||||
Meta.Вставить("custom-meta", "value");
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
Опции.Вставить("auth", Авторизация);
|
||||
Опции.Вставить("meta", Meta);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "СМетаданными"); // SKIP
|
||||
|
||||
// С TLS настройками
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("trust", Истина);
|
||||
|
||||
Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиTls", Опции);
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
Опции.Вставить("auth", Авторизация);
|
||||
Опции.Вставить("tls", Tls);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ClickHouse_ПолучитьНастройкиЗапроса(ПараметрыФункции)
|
||||
|
||||
// Минимальный запрос
|
||||
|
||||
ТекстЗапроса = "SELECT 1";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиЗапроса", "Минимальный"); // SKIP
|
||||
|
||||
// Полный запрос
|
||||
|
||||
IDЗапроса = Строка(Новый УникальныйИдентификатор());
|
||||
Данные = Новый Структура("meta,data", Новый Массив, Новый Массив);
|
||||
БазаДанных = "default";
|
||||
ФорматОтвета = "CSV";
|
||||
|
||||
ДопНастройки = Новый Соответствие;
|
||||
ДопНастройки.Вставить("max_threads", "4");
|
||||
|
||||
СтруктураКолонок = Новый Структура("id,name", "UInt64", "String");
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("name", "ext");
|
||||
Опции.Вставить("cols", СтруктураКолонок);
|
||||
|
||||
ВнешняяТаблица = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции);
|
||||
|
||||
МассивТаблиц = Новый Массив;
|
||||
МассивТаблиц.Добавить(ВнешняяТаблица);
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
Опции.Вставить("db", БазаДанных);
|
||||
Опции.Вставить("id", IDЗапроса);
|
||||
Опции.Вставить("data", Данные);
|
||||
Опции.Вставить("format", ФорматОтвета);
|
||||
Опции.Вставить("ext", МассивТаблиц);
|
||||
Опции.Вставить("settings", ДопНастройки);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиЗапроса");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ClickHouse_ПолучитьСтруктуруВнешнейТаблицы(ПараметрыФункции)
|
||||
|
||||
// Минимальная структура
|
||||
|
||||
ИмяТаблицы = "external_data";
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("id" , "UInt64");
|
||||
СтруктураКолонок.Вставить("name", "String");
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("name", ИмяТаблицы);
|
||||
Опции.Вставить("cols", СтруктураКолонок);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьСтруктуруВнешнейТаблицы", "Минимальная"); // SKIP
|
||||
|
||||
|
||||
// С данными TSV
|
||||
|
||||
ДанныеТаблицы = СтрШаблон("1%1Test
|
||||
|2%2Test2", Символы.Таб);
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("name", ИмяТаблицы);
|
||||
Опции.Вставить("cols", СтруктураКолонок);
|
||||
Опции.Вставить("data", ДанныеТаблицы);
|
||||
Опции.Вставить("format", "TSV");
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьСтруктуруВнешнейТаблицы");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ClickHouse_ПолучитьНастройкиСессии(ПараметрыФункции)
|
||||
|
||||
IDСессии = Строка(Новый УникальныйИдентификатор);
|
||||
Проверять = Истина;
|
||||
Таймаут = 120;
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("id", IDСессии);
|
||||
Опции.Вставить("check", Проверять);
|
||||
Опции.Вставить("timeout", Таймаут);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСессии", Опции);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСессии");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ClickHouse_ПолучитьНастройкиTls(ПараметрыФункции)
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("trust", Ложь);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиTls", Опции);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиTls");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
@@ -12962,12 +12962,216 @@
|
||||
Результат.Вставить("body", ПолучитьСтрокуИзДвоичныхДанных(Результат["body"]));
|
||||
КонецЕсли;
|
||||
|
||||
Если Вариант = "СозданиеТаблицы" Или Вариант = "ВставкаДанных" Тогда
|
||||
|
||||
ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
ОжидаетЧто(Результат["status"]).Равно(200);
|
||||
|
||||
ИначеЕсли Вариант = "ВыборкаJSON" Или Вариант = "ВыборкаJSONCompact" Тогда
|
||||
|
||||
ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
ОжидаетЧто(Результат["status"]).Равно(200);
|
||||
ОжидаетЧто(Результат["body"]).ИмеетТип("Соответствие");
|
||||
|
||||
ИначеЕсли Вариант = "ВыборкаCSV" Или Вариант = "ВыборкаTSV" Тогда
|
||||
|
||||
ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
ОжидаетЧто(Результат["status"]).Равно(200);
|
||||
ОжидаетЧто(Результат["body"]).ИмеетТип("Строка");
|
||||
|
||||
ИначеЕсли Вариант = "ВнешняяТаблица" Тогда
|
||||
|
||||
ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
ОжидаетЧто(Результат["body"]).ИмеетТип("Соответствие");
|
||||
ОжидаетЧто(Результат["body"]["rows"]).Равно(2);
|
||||
|
||||
ИначеЕсли Вариант = "ДопНастройки" Тогда
|
||||
|
||||
ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
ОжидаетЧто(Результат["body"]).ИмеетТип("Соответствие");
|
||||
|
||||
ИначеЕсли Вариант = "СессияСоздание" Или Вариант = "СессияВставка" Тогда
|
||||
|
||||
ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
ОжидаетЧто(Результат["status"]).Равно(200);
|
||||
|
||||
Иначе
|
||||
|
||||
// Основной вариант - выборка из временной таблицы сессии
|
||||
ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
|
||||
ОжидаетЧто(Результат["result"]).Равно(Истина);
|
||||
ОжидаетЧто(Результат["body"]).ИмеетТип("Соответствие");
|
||||
ОжидаетЧто(Результат["body"]["rows"]).Равно(2);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_ClickHouse_ОткрытьСоединениеGRPC(Знач Результат, Вариант)
|
||||
|
||||
Если Вариант = "Открытие" Тогда
|
||||
|
||||
Результат = Строка(ТипЗнч(Результат));
|
||||
ОжидаетЧто(Результат).Равно("AddIn.OPI_GRPC.Main");
|
||||
|
||||
ИначеЕсли Вариант = "СозданиеТаблицы" Или Вариант = "ВставкаДанных" Тогда
|
||||
|
||||
ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
|
||||
|
||||
ИначеЕсли Вариант = "Выборка" Тогда
|
||||
|
||||
ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
|
||||
|
||||
Иначе
|
||||
|
||||
ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_ClickHouse_ПолучитьНастройкиСоединенияHTTP(Знач Результат, Вариант)
|
||||
|
||||
ОжидаетЧто(Результат).ИмеетТип("Структура").Заполнено();
|
||||
ОжидаетЧто(Результат.Свойство("address")).Равно(Истина);
|
||||
ОжидаетЧто(Результат.Свойство("transport")).Равно(Истина);
|
||||
ОжидаетЧто(Результат["transport"]).Равно("http");
|
||||
|
||||
Если Вариант = "БезАвторизации" Тогда
|
||||
|
||||
ОжидаетЧто(Результат.Свойство("auth_type")).Равно(Ложь);
|
||||
|
||||
ИначеЕсли Вариант = "BasicАвторизация" Тогда
|
||||
|
||||
ОжидаетЧто(Результат["auth_type"]).Равно("basic");
|
||||
ОжидаетЧто(Результат.Свойство("user")).Равно(Истина);
|
||||
ОжидаетЧто(Результат.Свойство("password")).Равно(Истина);
|
||||
|
||||
ИначеЕсли Вариант = "JWTАвторизация" Тогда
|
||||
|
||||
ОжидаетЧто(Результат["auth_type"]).Равно("jwt");
|
||||
ОжидаетЧто(Результат.Свойство("token")).Равно(Истина);
|
||||
|
||||
ИначеЕсли Не ЗначениеЗаполнено(Вариант) Тогда
|
||||
|
||||
ОжидаетЧто(Результат.Свойство("headers")).Равно(Истина);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_ClickHouse_ПолучитьНастройкиСоединенияGRPC(Знач Результат, Вариант)
|
||||
|
||||
ОжидаетЧто(Результат).ИмеетТип("Структура").Заполнено();
|
||||
ОжидаетЧто(Результат.Свойство("address")).Равно(Истина);
|
||||
ОжидаетЧто(Результат.Свойство("transport")).Равно(Истина);
|
||||
ОжидаетЧто(Результат["transport"]).Равно("grpc");
|
||||
|
||||
Если Вариант = "БезАвторизации" Тогда
|
||||
|
||||
ОжидаетЧто(Результат.Свойство("auth_type")).Равно(Ложь);
|
||||
|
||||
ИначеЕсли Вариант = "BasicАвторизация" Тогда
|
||||
|
||||
ОжидаетЧто(Результат["auth_type"]).Равно("basic");
|
||||
ОжидаетЧто(Результат.Свойство("user")).Равно(Истина);
|
||||
ОжидаетЧто(Результат.Свойство("password")).Равно(Истина);
|
||||
|
||||
ИначеЕсли Вариант = "JWTАвторизация" Тогда
|
||||
|
||||
ОжидаетЧто(Результат["auth_type"]).Равно("jwt");
|
||||
ОжидаетЧто(Результат.Свойство("token")).Равно(Истина);
|
||||
|
||||
ИначеЕсли Вариант = "СМетаданными" Тогда
|
||||
|
||||
ОжидаетЧто(Результат.Свойство("metadata")).Равно(Истина);
|
||||
|
||||
ИначеЕсли Не ЗначениеЗаполнено(Вариант) Тогда
|
||||
|
||||
ОжидаетЧто(Результат.Свойство("tls")).Равно(Истина);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_ClickHouse_ПолучитьНастройкиЗапроса(Знач Результат, Вариант)
|
||||
|
||||
ОжидаетЧто(Результат).ИмеетТип("Структура").Заполнено();
|
||||
ОжидаетЧто(Результат.Свойство("query")).Равно(Истина);
|
||||
|
||||
Если Вариант = "Минимальный" Тогда
|
||||
|
||||
ОжидаетЧто(Результат["query"]).Равно("SELECT 1");
|
||||
|
||||
Иначе
|
||||
|
||||
ОжидаетЧто(Результат["database"]).Равно("default");
|
||||
ОжидаетЧто(Результат["id"]).Заполнено();
|
||||
ОжидаетЧто(Результат.Свойство("data")).Равно(Истина);
|
||||
ОжидаетЧто(Результат["format"]).Равно("CSV");
|
||||
ОжидаетЧто(Результат.Свойство("external_tables")).Равно(Истина);
|
||||
ОжидаетЧто(Результат["external_tables"]).ИмеетТип("Массив");
|
||||
ОжидаетЧто(Результат.Свойство("settings")).Равно(Истина);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_ClickHouse_ПолучитьСтруктуруВнешнейТаблицы(Знач Результат, Вариант)
|
||||
|
||||
ОжидаетЧто(Результат).ИмеетТип("Структура").Заполнено();
|
||||
ОжидаетЧто(Результат.Свойство("name")).Равно(Истина);
|
||||
ОжидаетЧто(Результат.Свойство("cols")).Равно(Истина);
|
||||
ОжидаетЧто(Результат["name"]).Равно("external_data");
|
||||
|
||||
Если Вариант = "Минимальная" Тогда
|
||||
|
||||
ОжидаетЧто(Результат.Свойство("data")).Равно(Ложь);
|
||||
|
||||
ИначеЕсли Вариант = "TSV" Или Не ЗначениеЗаполнено(Вариант) Тогда
|
||||
|
||||
ОжидаетЧто(Результат["format"]).Равно("TSV");
|
||||
ОжидаетЧто(Результат.Свойство("data")).Равно(Истина);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_ClickHouse_ПолучитьНастройкиСессии(Знач Результат, Вариант)
|
||||
|
||||
ОжидаетЧто(Результат).ИмеетТип("Структура").Заполнено();
|
||||
ОжидаетЧто(Результат["id"]).ИмеетТип("Строка").Заполнено();
|
||||
ОжидаетЧто(Результат["check"]).Равно(Истина);
|
||||
ОжидаетЧто(Результат["timeout"]).Равно(120);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Проверка_ClickHouse_ПолучитьНастройкиTls(Знач Результат, Вариант)
|
||||
|
||||
ОжидаетЧто(OPI_Инструменты.ЭтоКоллекция(Результат, Истина)).Равно(Истина);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
+27
-4
@@ -42,6 +42,7 @@
|
||||
Процедура ПолучитьДвоичныеДанные(Значение, Знач Безусловно = Ложь, Знач ПопыткаB64 = Истина) Экспорт
|
||||
|
||||
Если Значение = Неопределено Тогда
|
||||
Значение = ПолучитьДвоичныеДанныеИзСтроки("");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -98,12 +99,16 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПолучитьКоллекцию(Значение, ПоСети = Истина) Экспорт
|
||||
Процедура ПолучитьКоллекцию(Значение, ПоСети = Истина, Успех = Ложь) Экспорт
|
||||
|
||||
Успех = Ложь;
|
||||
|
||||
Если Значение = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Успех = Истина;
|
||||
|
||||
Попытка
|
||||
|
||||
// BSLLS:ExternalAppStarting-off
|
||||
@@ -147,6 +152,7 @@
|
||||
|
||||
Если (Не ЭтоКоллекция(Значение)) Или Не ЗначениеЗаполнено(Значение) Тогда
|
||||
|
||||
Успех = Ложь;
|
||||
Значение = ИсходноеЗначение;
|
||||
OPI_Инструменты.ЗначениеВМассив(Значение);
|
||||
|
||||
@@ -158,6 +164,7 @@
|
||||
|
||||
Исключение
|
||||
|
||||
Успех = Ложь;
|
||||
Значение = ИсходноеЗначение;
|
||||
OPI_Инструменты.ЗначениеВМассив(Значение);
|
||||
|
||||
@@ -426,8 +433,24 @@
|
||||
Иначе
|
||||
|
||||
Если ПопыткаB64 Тогда
|
||||
Значение = Base64Значение(Значение);
|
||||
|
||||
Значение_ = Base64Значение(Значение);
|
||||
|
||||
Если ТипЗнч(Значение_) = Тип("ДвоичныеДанные") Тогда
|
||||
Успех = Значение_.Размер() <> 0;
|
||||
Иначе
|
||||
Успех = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Если Успех Тогда
|
||||
Значение = Значение_;
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
Успех = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не Успех Тогда
|
||||
ВызватьИсключение "Значение не является путем к файлу или Base64 строкой";
|
||||
КонецЕсли;
|
||||
|
||||
@@ -447,8 +470,8 @@ Procedure GetBinaryOrStream(Value) Export
|
||||
ПолучитьДвоичныеИлиПоток(Value);
|
||||
EndProcedure
|
||||
|
||||
Procedure GetCollection(Value, ByNetwork = True) Export
|
||||
ПолучитьКоллекцию(Value, ByNetwork);
|
||||
Procedure GetCollection(Value, ByNetwork = True, Success = False) Export
|
||||
ПолучитьКоллекцию(Value, ByNetwork, Success);
|
||||
EndProcedure
|
||||
|
||||
Procedure GetKeyValueCollection(Value, Val ErrorText = "The specified value is not a valid collection!") Export
|
||||
|
||||
@@ -1014,7 +1014,7 @@
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Данные, Истина, Истина);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ИгнорироватьПустой);
|
||||
|
||||
Если ИгнорироватьПустой И Данные.Размер = 0 Тогда
|
||||
Если ИгнорироватьПустой И Данные.Размер() = 0 Тогда
|
||||
ДобавитьЛог(СтрШаблон("ДобавитьФайлMultipart: пустой файл проигнорирован, поле %1", ИмяПоля));
|
||||
Возврат ЭтотОбъект;
|
||||
КонецЕсли;
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@
|
||||
|
||||
Function GetHashSum() Export
|
||||
|
||||
LastBuildHash = "07C4BB7AB731BEE83F841D7B9FCCBFE88AEA3E79ABE5F6C079001C2DBEC9A426";
|
||||
LastBuildHash = "020E99F2738A217F5BB9933180E87C96741C7679FB414458053C1635BA67A99A";
|
||||
|
||||
Return LastBuildHash;
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
Function GetHashSum() Export
|
||||
|
||||
LastBuildHash = "07C4BB7AB731BEE83F841D7B9FCCBFE88AEA3E79ABE5F6C079001C2DBEC9A426";
|
||||
LastBuildHash = "020E99F2738A217F5BB9933180E87C96741C7679FB414458053C1635BA67A99A";
|
||||
|
||||
Return LastBuildHash;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/core/Modules/OPI_ClickHouse.os
|
||||
// OneScript: ./OInt/core/Modules/OPI_ClickHouse.os
|
||||
// Lib: ClickHouse
|
||||
// CLI: clickhouse
|
||||
// Keywords: clickhouse
|
||||
@@ -302,52 +302,52 @@
|
||||
|
||||
// Открыть клиентский поток GRPC !NOCLI
|
||||
// Инициализирует клиентский поток для обмена
|
||||
//
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Объект GRPC соединения - conn
|
||||
// Таймаут - Число - Таймаут (в мс) - tout
|
||||
//
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат обработки
|
||||
Функция ОткрытьКлиентскийПотокGRPC(Знач Соединение, Знач Таймаут = 10000) Экспорт
|
||||
|
||||
|
||||
Возврат ОткрытьПотокGRPC(Соединение, "client", , , Таймаут);
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Открыть серверный поток GRPC !NOCLI
|
||||
// Инициализирует серверный поток для обмена
|
||||
//
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Объект GRPC соединения - conn
|
||||
// Запрос - Структура Из КлючИЗначение - Данные запроса. См. ПолучитьНастройкиЗапроса - req
|
||||
// Сессия - Структура Из КлючИЗначение - Настройки сессии. См. ПолучитьНастройкиСессии - session
|
||||
// Таймаут - Число - Таймаут (в мс) - tout
|
||||
//
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат обработки
|
||||
Функция ОткрытьСерверныйПотокGRPC(Знач Соединение
|
||||
, Знач Запрос = Неопределено
|
||||
, Знач Сессия = Неопределено
|
||||
, Знач Таймаут = 10000) Экспорт
|
||||
|
||||
|
||||
Возврат ОткрытьПотокGRPC(Соединение, "server", Запрос, Сессия, Таймаут);
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Открыть двунаправленный поток GRPC !NOCLI
|
||||
// Инициализирует двунаправленный поток для обмена
|
||||
//
|
||||
//
|
||||
// Параметры:
|
||||
// Соединение - Произвольный - Объект GRPC соединения - conn
|
||||
// Таймаут - Число - Таймаут (в мс) - tout
|
||||
//
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат обработки
|
||||
Функция ОткрытьДвунаправленныйПотокGRPC(Знач Соединение, Знач Таймаут = 10000) Экспорт
|
||||
|
||||
|
||||
Возврат ОткрытьПотокGRPC(Соединение, "bidi", , , Таймаут);
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить настройки TLS
|
||||
@@ -407,15 +407,15 @@
|
||||
Или Формат = "JSONCompact"
|
||||
Или Формат = "JSONColumns"
|
||||
Или Формат = "JSONColumnsWithMetadata";
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоСтроковыйФормат(Знач Формат)
|
||||
|
||||
|
||||
Возврат СтрНайти(Формат, "CSV") > 0
|
||||
Или СтрНайти(Формат, "TSV") > 0
|
||||
Или СтрНайти(Формат, "Pretty") > 0;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -446,7 +446,7 @@
|
||||
|
||||
.ДобавитьЗаголовок("X-ClickHouse-Database", БазаДанных, Истина)
|
||||
.УстановитьДвоичноеТело(Данные);
|
||||
|
||||
|
||||
УстановитьАвторизациюHTTP(HTTPКлиент, Соединение);
|
||||
УстановитьВнешниеТаблицыHTTP(HTTPКлиент, ВнешниеТаблицы);
|
||||
УстановитьСессиюHTTP(HTTPКлиент, Сессия);
|
||||
@@ -470,8 +470,8 @@
|
||||
|
||||
Если ОтветКод < 300 Тогда
|
||||
|
||||
Результат = Истина;
|
||||
|
||||
Результат = Истина;
|
||||
|
||||
Если ЭтоФорматВалидногоJSON(ФорматДанных) Тогда
|
||||
ТелоОтвета = HTTPКлиент.ВернутьОтветКакJSONКоллекцию();
|
||||
ИначеЕсли ЭтоСтроковыйФормат(ФорматДанных) Тогда
|
||||
@@ -612,7 +612,7 @@
|
||||
HTTPКлиент
|
||||
.ДобавитьПараметрURL(ИмяПараметраФормат , ФорматТаблицы , Истина)
|
||||
.ДобавитьПараметрURL(ИмяПараметраСтруктура, КолонкиТаблицыСтрокой, Истина)
|
||||
|
||||
|
||||
.ДобавитьФайлMultipartFormData(ИмяТаблицы, ИмяФайла, ДанныеТаблицы, ТипДанныхФайла, Истина);
|
||||
|
||||
КонецЦикла;
|
||||
@@ -620,14 +620,14 @@
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьСессиюHTTP(HTTPКлиент, Знач Сессия)
|
||||
|
||||
|
||||
Если Не ЗначениеЗаполнено(Сессия) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
ТекстОшибки = "Передана некорректная структура информации о сессии";
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Сессия, ТекстОшибки);
|
||||
|
||||
|
||||
IDСессии = OPI_Инструменты.ПолучитьИли(Сессия, "id" , Неопределено);
|
||||
Проверка = OPI_Инструменты.ПолучитьИли(Сессия, "check" , Неопределено);
|
||||
Таймаут = OPI_Инструменты.ПолучитьИли(Сессия, "timeout", Неопределено);
|
||||
@@ -636,7 +636,7 @@
|
||||
.ДобавитьПараметрURL("session_id" , IDСессии, Истина)
|
||||
.ДобавитьПараметрURL("session_check" , Проверка, Истина)
|
||||
.ДобавитьПараметрURL("session_timeout", Таймаут , Истина);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
@@ -664,8 +664,8 @@
|
||||
Сервис = ПолучитьИмяСервисаGRPC();
|
||||
Метод = "ExecuteQuery";
|
||||
Результат = OPI_GRPC.ВызватьМетод(Коннектор, Сервис, Метод, ЗапросGRPC);
|
||||
|
||||
ОбработатьОтветGRPC(Результат);
|
||||
|
||||
ОбработатьОтветGRPC(Результат);
|
||||
|
||||
Если ЗакрыватьСоединение Тогда
|
||||
OPI_GRPC.ЗакрытьСоединение(Коннектор);
|
||||
@@ -677,46 +677,46 @@
|
||||
|
||||
Функция ОткрытьПотокGRPC(Соединение
|
||||
, Знач Вид
|
||||
, Знач Запрос = Неопределено
|
||||
, Знач Сессия = Неопределено
|
||||
, Знач Запрос = Неопределено
|
||||
, Знач Сессия = Неопределено
|
||||
, Знач Таймаут = 10000)
|
||||
|
||||
Сервис = ПолучитьИмяСервисаGRPC();
|
||||
|
||||
|
||||
Если Вид = "client" Тогда
|
||||
|
||||
|
||||
Метод = "ExecuteQueryWithStreamInput";
|
||||
Результат = OPI_GRPC.ИнициализироватьКлиентскийПоток(Соединение, Сервис, Метод, Таймаут);
|
||||
|
||||
|
||||
ИначеЕсли Вид = "server" Тогда
|
||||
|
||||
|
||||
Метод = "ExecuteQueryWithStreamOutput";
|
||||
ЗапросGRPC = СформироватьЗапросGRPC(Соединение, Запрос, Сессия);
|
||||
Результат = OPI_GRPC.ИнициализироватьСерверныйПоток(Соединение, Сервис, Метод, ЗапросGRPC, Таймаут);
|
||||
|
||||
|
||||
Иначе
|
||||
|
||||
Метод = "ExecuteQueryWithStreamIO";
|
||||
|
||||
Метод = "ExecuteQueryWithStreamIO";
|
||||
Результат = OPI_GRPC.ИнициализироватьДвунаправленныйПоток(Соединение, Сервис, Метод, Таймаут);
|
||||
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьЗапросGRPC(Знач Соединение, Знач Запрос, Знач Сессия)
|
||||
|
||||
|
||||
Если Запрос = Неопределено Тогда
|
||||
Возврат Запрос;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Если OPI_GRPC.ЭтоКоннектор(Соединение) Тогда
|
||||
НастройкиСоединения = OPI_Инструменты.JsonВСтруктуру(Соединение.GetSettings());
|
||||
НастройкиСоединения = OPI_Инструменты.JsonВСтруктуру(Соединение.GetSettings());
|
||||
Иначе
|
||||
НастройкиСоединения = Соединение;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Данные = OPI_Инструменты.ПолучитьИли(Запрос, "data" , Неопределено);
|
||||
IDЗапроса = OPI_Инструменты.ПолучитьИли(Запрос, "id" , Неопределено);
|
||||
ТекстЗапроса = OPI_Инструменты.ПолучитьИли(Запрос, "query" , Неопределено);
|
||||
@@ -736,15 +736,15 @@
|
||||
УстановитьАвторизациюGRPC(ЗапросGRPC, НастройкиСоединения);
|
||||
УстановитьВнешниеТаблицыGRPC(ЗапросGRPC, ВнешниеТаблицы);
|
||||
УстановитьСессиюGRPC(ЗапросGRPC, Сессия);
|
||||
|
||||
|
||||
Возврат ЗапросGRPC;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьИмяСервисаGRPC()
|
||||
|
||||
Возврат "clickhouse.grpc.ClickHouse";
|
||||
|
||||
|
||||
Возврат "clickhouse.grpc.ClickHouse";
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УстановитьАвторизациюGRPC(ЗапросGRPC, Знач НастройкиСоединения)
|
||||
@@ -790,7 +790,7 @@
|
||||
ФорматТаблицы = OPI_Инструменты.ПолучитьИли(Таблица, "format", Неопределено);
|
||||
ДанныеТаблицы = OPI_Инструменты.ПолучитьИли(Таблица, "data" , Неопределено);
|
||||
КолонкиТаблицы = OPI_Инструменты.ПолучитьИли(Таблица, "cols" , Неопределено);
|
||||
|
||||
|
||||
Если ДанныеТаблицы <> Неопределено Тогда
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(ДанныеТаблицы, Истина);
|
||||
КонецЕсли;
|
||||
@@ -827,14 +827,14 @@
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьСессиюGRPC(ЗапросGRPC, Знач Сессия)
|
||||
|
||||
|
||||
Если Не ЗначениеЗаполнено(Сессия) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
ТекстОшибки = "Передана некорректная структура информации о сессии";
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Сессия, ТекстОшибки);
|
||||
|
||||
|
||||
IDСессии = OPI_Инструменты.ПолучитьИли(Сессия, "id" , Неопределено);
|
||||
Проверка = OPI_Инструменты.ПолучитьИли(Сессия, "check" , Неопределено);
|
||||
Таймаут = OPI_Инструменты.ПолучитьИли(Сессия, "timeout", Неопределено);
|
||||
@@ -842,50 +842,50 @@
|
||||
OPI_Инструменты.ДобавитьПоле("session_id" , IDСессии, "Строка", ЗапросGRPC);
|
||||
OPI_Инструменты.ДобавитьПоле("session_check" , Проверка, "Булево", ЗапросGRPC);
|
||||
OPI_Инструменты.ДобавитьПоле("session_timeout", Таймаут , "Число" , ЗапросGRPC);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработатьОтветGRPC(Ответ)
|
||||
|
||||
Если Не OPI_Инструменты.ПолучитьИли(Ответ, "result", Ложь) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Формат = OPI_Инструменты.ПолучитьИли(Ответ, "output_format", Неопределено);
|
||||
|
||||
Если Не ЗначениеЗаполнено(Формат) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
B64Строка = OPI_Инструменты.ПолеКоллекцииСуществует(Ответ, "data.output.BYTES");
|
||||
|
||||
Если ЗначениеЗаполнено(B64Строка) Тогда
|
||||
|
||||
Если ЭтоФорматВалидногоJSON(Формат) Тогда
|
||||
|
||||
Значение = ПолучитьДвоичныеДанныеИзBase64Строки(B64Строка);
|
||||
Успех = Ложь;
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Значение, , Успех);
|
||||
|
||||
Если Не Успех Тогда
|
||||
Значение = ПолучитьСтрокуИзДвоичныхДанных(Значение);
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли ЭтоСтроковыйФормат(Формат) Тогда
|
||||
|
||||
Значение = ПолучитьДвоичныеДанныеИзBase64Строки(B64Строка);
|
||||
Значение = ПолучитьСтрокуИзДвоичныхДанных(Значение);
|
||||
|
||||
Иначе
|
||||
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Ответ["data"]["output"] = Значение;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Если Не OPI_Инструменты.ПолучитьИли(Ответ, "result", Ложь) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Формат = OPI_Инструменты.ПолучитьИли(Ответ, "output_format", Неопределено);
|
||||
|
||||
Если Не ЗначениеЗаполнено(Формат) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
B64Строка = OPI_Инструменты.ПолеКоллекцииСуществует(Ответ, "data.output.BYTES");
|
||||
|
||||
Если ЗначениеЗаполнено(B64Строка) Тогда
|
||||
|
||||
Если ЭтоФорматВалидногоJSON(Формат) Тогда
|
||||
|
||||
Значение = ПолучитьДвоичныеДанныеИзBase64Строки(B64Строка);
|
||||
Успех = Ложь;
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(Значение, , Успех);
|
||||
|
||||
Если Не Успех Тогда
|
||||
Значение = ПолучитьСтрокуИзДвоичныхДанных(Значение);
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли ЭтоСтроковыйФормат(Формат) Тогда
|
||||
|
||||
Значение = ПолучитьДвоичныеДанныеИзBase64Строки(B64Строка);
|
||||
Значение = ПолучитьСтрокуИзДвоичныхДанных(Значение);
|
||||
|
||||
Иначе
|
||||
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Ответ["data"]["output"] = Значение;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/tools/Modules/OPI_ПреобразованиеТипов.os
|
||||
// OneScript: ./OInt/tools/Modules/OPI_ПреобразованиеТипов.os
|
||||
|
||||
// MIT License
|
||||
|
||||
@@ -101,13 +101,13 @@
|
||||
|
||||
Процедура ПолучитьКоллекцию(Значение, ПоСети = Истина, Успех = Ложь) Экспорт
|
||||
|
||||
Успех = Ложь;
|
||||
|
||||
Успех = Ложь;
|
||||
|
||||
Если Значение = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Успех = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Успех = Истина;
|
||||
|
||||
Попытка
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
|
||||
Если (Не ЭтоКоллекция(Значение)) Или Не ЗначениеЗаполнено(Значение) Тогда
|
||||
|
||||
Успех = Ложь;
|
||||
Успех = Ложь;
|
||||
Значение = ИсходноеЗначение;
|
||||
OPI_Инструменты.ЗначениеВМассив(Значение);
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
|
||||
Исключение
|
||||
|
||||
Успех = Ложь;
|
||||
Успех = Ложь;
|
||||
Значение = ИсходноеЗначение;
|
||||
OPI_Инструменты.ЗначениеВМассив(Значение);
|
||||
|
||||
@@ -433,23 +433,23 @@
|
||||
Иначе
|
||||
|
||||
Если ПопыткаB64 Тогда
|
||||
|
||||
|
||||
Значение_ = Base64Значение(Значение);
|
||||
|
||||
|
||||
Если ТипЗнч(Значение_) = Тип("ДвоичныеДанные") Тогда
|
||||
Успех = Значение_.Размер() <> 0;
|
||||
Иначе
|
||||
Успех = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Если Успех Тогда
|
||||
Значение = Значение_;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Иначе
|
||||
Успех = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Если Не Успех Тогда
|
||||
ВызватьИсключение "Значение не является путем к файлу или Base64 строкой";
|
||||
КонецЕсли;
|
||||
|
||||
+10
-10
@@ -27085,7 +27085,7 @@
|
||||
| user_id UInt32,
|
||||
| event_type String,
|
||||
| payload String
|
||||
|) ENGINE = MergeTree()
|
||||
|) ENGINE = MergeTree()
|
||||
|ORDER BY (timestamp, id)";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE IF EXISTS events"); // SKIP
|
||||
@@ -27137,7 +27137,7 @@
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВставкаДанных"); // SKIP
|
||||
|
||||
|
||||
// Запрос с внешней таблицей
|
||||
|
||||
ИмяТаблицы = "ext_users";
|
||||
@@ -27168,7 +27168,7 @@
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстВыборки, , , , "JSON");
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
|
||||
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос"); // SKIP
|
||||
@@ -27249,7 +27249,7 @@
|
||||
| user_id UInt32,
|
||||
| event_type String,
|
||||
| payload String
|
||||
|) ENGINE = MergeTree()
|
||||
|) ENGINE = MergeTree()
|
||||
|ORDER BY (timestamp, id)";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE IF EXISTS events_grpc"); // SKIP
|
||||
@@ -27436,10 +27436,10 @@
|
||||
Данные = Новый Структура("meta,data", Новый Массив, Новый Массив);
|
||||
БазаДанных = "default";
|
||||
ФорматОтвета = "CSV";
|
||||
|
||||
|
||||
ДопНастройки = Новый Соответствие;
|
||||
ДопНастройки.Вставить("max_threads", "4");
|
||||
|
||||
|
||||
СтруктураКолонок = Новый Структура("id,name", "UInt64", "String");
|
||||
ВнешняяТаблица = OPI_ClickHouse.ПолучитьСтруктуруВнешнейТаблицы("ext", СтруктураКолонок);
|
||||
|
||||
@@ -27489,10 +27489,10 @@
|
||||
|
||||
Процедура ClickHouse_ПолучитьНастройкиСессии(ПараметрыФункции)
|
||||
|
||||
IDСессии = Строка(Новый УникальныйИдентификатор);
|
||||
Проверять = Истина;
|
||||
Таймаут = 120;
|
||||
|
||||
IDСессии = Строка(Новый УникальныйИдентификатор);
|
||||
Проверять = Истина;
|
||||
Таймаут = 120;
|
||||
|
||||
Результат = OPI_ClickHouse.ПолучитьНастройкиСессии(IDСессии, Проверять, Таймаут);
|
||||
|
||||
// END
|
||||
|
||||
+503
-28
@@ -3363,11 +3363,17 @@
|
||||
Процедура CH_ОсновныеМетоды() Экспорт
|
||||
|
||||
ПараметрыТеста = Новый Структура;
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Address" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_User" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Password", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Address" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_AddressGRPC", ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_User" , ПараметрыТеста);
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Password" , ПараметрыТеста);
|
||||
|
||||
ClickHouse_ВыполнитьЗапрос(ПараметрыТеста);
|
||||
ClickHouse_ПолучитьНастройкиСоединенияHTTP(ПараметрыТеста);
|
||||
ClickHouse_ПолучитьНастройкиСоединенияGRPC(ПараметрыТеста);
|
||||
ClickHouse_ПолучитьНастройкиЗапроса(ПараметрыТеста);
|
||||
ClickHouse_ПолучитьСтруктуруВнешнейТаблицы(ПараметрыТеста);
|
||||
ClickHouse_ПолучитьНастройкиСессии(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -3379,6 +3385,7 @@
|
||||
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("ClickHouse_Password" , ПараметрыТеста);
|
||||
|
||||
ClickHouse_ОткрытьСоединениеGRPC(ПараметрыТеста);
|
||||
ClickHouse_ПолучитьНастройкиTls(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -35778,9 +35785,9 @@
|
||||
|
||||
Соединение = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции);
|
||||
|
||||
// Запрос (простой)
|
||||
// Запрос (создание таблицы)
|
||||
|
||||
ТекстЗапроса = "CREATE TABLE events (
|
||||
ТекстЗапроса = "CREATE TABLE IF NOT EXISTS events (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -35789,8 +35796,8 @@
|
||||
|) ENGINE = MergeTree()
|
||||
|ORDER BY (timestamp, id)";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE events"); // SKIP
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); // SKIP
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE IF EXISTS events"); // SKIP
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); // SKIP
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
@@ -35802,9 +35809,9 @@
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "Простой"); // SKIP
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "СозданиеТаблицы"); // SKIP
|
||||
|
||||
// Запрос (с данными)
|
||||
// Запрос (вставка данных)
|
||||
|
||||
ТекстЗапроса = "INSERT INTO events FORMAT JSON";
|
||||
|
||||
@@ -35855,6 +35862,173 @@
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВставкаДанных"); // SKIP
|
||||
|
||||
// Запрос с внешней таблицей
|
||||
|
||||
ИмяТаблицы = "ext_users";
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("id" , "UInt64");
|
||||
СтруктураКолонок.Вставить("name", "String");
|
||||
|
||||
Таб = Символы.Таб;
|
||||
ДанныеТаблицы = "1" + Таб + "John
|
||||
|2" + Таб + "Jane
|
||||
|3" + Таб + "Bob";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("name", ИмяТаблицы);
|
||||
Опции.Вставить("cols", СтруктураКолонок);
|
||||
Опции.Вставить("data", ДанныеТаблицы);
|
||||
Опции.Вставить("format", "TSV");
|
||||
|
||||
ВнешняяТаблица = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции);
|
||||
|
||||
МассивВнешнихТаблиц = Новый Массив;
|
||||
МассивВнешнихТаблиц.Добавить(ВнешняяТаблица);
|
||||
|
||||
ТекстЗапроса = "SELECT * FROM ext_users WHERE id > 1";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
Опции.Вставить("format", "JSON");
|
||||
Опции.Вставить("ext", МассивВнешнихТаблиц);
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВнешняяТаблица"); // SKIP
|
||||
|
||||
// Выборка
|
||||
|
||||
ТекстВыборки = "SELECT * FROM events";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстВыборки);
|
||||
Опции.Вставить("format", "JSON");
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос"); // SKIP
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстВыборки);
|
||||
Опции.Вставить("format", "CSV");
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВыборкаCSV");
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстВыборки);
|
||||
Опции.Вставить("format", "TSV");
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВыборкаTSV");
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстВыборки);
|
||||
Опции.Вставить("format", "JSONCompact");
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ВыборкаJSONCompact");
|
||||
|
||||
ТекстЗапроса = "SELECT 1 AS result";
|
||||
|
||||
ДопНастройки = Новый Соответствие;
|
||||
ДопНастройки.Вставить("max_threads", "4");
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
Опции.Вставить("format", "JSON");
|
||||
Опции.Вставить("settings", ДопНастройки);
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "ДопНастройки");
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("id", Строка);
|
||||
|
||||
Сессия = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСессии", Опции);
|
||||
|
||||
ТекстЗапроса = "CREATE TEMPORARY TABLE temp_session_test (id UInt64, value String)";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
Опции.Вставить("session", Сессия);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "СессияСоздание");
|
||||
|
||||
ТекстЗапроса = "INSERT INTO temp_session_test VALUES (1, 'test1'), (2, 'test2')";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
Опции.Вставить("session", Сессия);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос", "СессияВставка");
|
||||
|
||||
ТекстЗапроса = "SELECT * FROM temp_session_test";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
Опции.Вставить("format", "JSON");
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
Опции.Вставить("session", Сессия);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ВыполнитьЗапрос");
|
||||
@@ -35870,6 +36044,8 @@
|
||||
|
||||
Авторизация = Новый Структура(Логин, Пароль);
|
||||
|
||||
// Открытие соединения
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
Опции.Вставить("auth", Авторизация);
|
||||
@@ -35877,11 +36053,11 @@
|
||||
НастройкиСоединения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции);
|
||||
Соединение = OPI_ClickHouse.ОткрытьСоединениеGRPC(НастройкиСоединения);
|
||||
|
||||
Обработать(Соединение, "ClickHouse", "ОткрытьСоединениеGRPC"); // SKIP
|
||||
Обработать(Соединение, "ClickHouse", "ОткрытьСоединениеGRPC", "Открытие"); // SKIP
|
||||
|
||||
// Запрос (простой)
|
||||
// Запрос через открытое соединение (создание таблицы)
|
||||
|
||||
ТекстЗапроса = "CREATE TABLE events (
|
||||
ТекстЗапроса = "CREATE TABLE IF NOT EXISTS events_grpc (
|
||||
| id UInt64,
|
||||
| timestamp DateTime,
|
||||
| user_id UInt32,
|
||||
@@ -35890,6 +36066,9 @@
|
||||
|) ENGINE = MergeTree()
|
||||
|ORDER BY (timestamp, id)";
|
||||
|
||||
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса("DROP TABLE IF EXISTS events_grpc"); // SKIP
|
||||
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос); // SKIP
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
|
||||
@@ -35900,11 +36079,11 @@
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "Простой"); // SKIP
|
||||
Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "СозданиеТаблицы"); // SKIP
|
||||
|
||||
// Запрос (с данными)
|
||||
// Вставка данных
|
||||
|
||||
ТекстЗапроса = "INSERT INTO events FORMAT JSON";
|
||||
ТекстЗапроса = "INSERT INTO events_grpc FORMAT JSON";
|
||||
|
||||
ФорматДанных = "JSON";
|
||||
МассивДанных = Новый Массив;
|
||||
@@ -35918,15 +36097,7 @@
|
||||
Запись1.Вставить("event_type", "click");
|
||||
Запись1.Вставить("payload" , "{}");
|
||||
|
||||
Запись2 = Новый Структура;
|
||||
Запись2.Вставить("id" , 2);
|
||||
Запись2.Вставить("timestamp" , ТекущаяДата);
|
||||
Запись2.Вставить("user_id" , 200);
|
||||
Запись2.Вставить("event_type", "hover");
|
||||
Запись2.Вставить("payload" , "{}");
|
||||
|
||||
МассивДанных.Добавить(Запись1);
|
||||
МассивДанных.Добавить(Запись2);
|
||||
|
||||
Мета = Новый Массив;
|
||||
Мета.Добавить(Новый Структура("name,type", "id" , "UInt64"));
|
||||
@@ -35935,13 +36106,12 @@
|
||||
Мета.Добавить(Новый Структура("name,type", "event_type", "String"));
|
||||
Мета.Добавить(Новый Структура("name,type", "payload" , "String"));
|
||||
|
||||
Данные = Новый Структура("meta,data", Мета, МассивДанных);
|
||||
БазаДанных = "default";
|
||||
IDЗапроса = Строка(Новый УникальныйИдентификатор());
|
||||
Данные = Новый Структура("meta,data", Мета, МассивДанных);
|
||||
IDЗапроса = Строка(Новый УникальныйИдентификатор());
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
Опции.Вставить("db", БазаДанных);
|
||||
Опции.Вставить("db", "default");
|
||||
Опции.Вставить("id", IDЗапроса);
|
||||
Опции.Вставить("data", Данные);
|
||||
Опции.Вставить("format", ФорматДанных);
|
||||
@@ -35953,9 +36123,314 @@
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "ВставкаДанных"); // SKIP
|
||||
|
||||
// Выборка
|
||||
|
||||
ТекстВыборки = "SELECT * FROM events_grpc";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстВыборки);
|
||||
Опции.Вставить("format", "JSON");
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "Выборка"); // SKIP
|
||||
|
||||
// Запрос с внешней таблицей через gRPC
|
||||
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("id" , "UInt64");
|
||||
СтруктураКолонок.Вставить("name", "String");
|
||||
|
||||
Таб = Символы.Таб;
|
||||
ДанныеТаблицы = "1" + Таб + "John
|
||||
|2" + Таб + "Jane";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("name", "ext_grpc");
|
||||
Опции.Вставить("cols", СтруктураКолонок);
|
||||
Опции.Вставить("data", ДанныеТаблицы);
|
||||
Опции.Вставить("format", "TSV");
|
||||
|
||||
ВнешняяТаблица = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции);
|
||||
|
||||
МассивВнешнихТаблиц = Новый Массив;
|
||||
МассивВнешнихТаблиц.Добавить(ВнешняяТаблица);
|
||||
|
||||
ТекстЗапроса = "SELECT * FROM ext_grpc";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
Опции.Вставить("format", "JSON");
|
||||
Опции.Вставить("ext", МассивВнешнихТаблиц);
|
||||
|
||||
Запрос = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("conn", Соединение);
|
||||
Опции.Вставить("req", Запрос);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ВыполнитьЗапрос", Опции);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC", "Сложный");
|
||||
Обработать(Результат, "ClickHouse", "ОткрытьСоединениеGRPC");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ClickHouse_ПолучитьНастройкиСоединенияHTTP(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["ClickHouse_Address"];
|
||||
|
||||
// Без авторизации
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP", "БезАвторизации"); // SKIP
|
||||
|
||||
// С basic авторизацией
|
||||
|
||||
Логин = ПараметрыФункции["ClickHouse_User"];
|
||||
Пароль = ПараметрыФункции["ClickHouse_Password"];
|
||||
|
||||
Авторизация = Новый Структура(Логин, Пароль);
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
Опции.Вставить("auth", Авторизация);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP", "BasicАвторизация"); // SKIP
|
||||
|
||||
// С JWT авторизацией
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
Опции.Вставить("auth", JWT);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP", "JWTАвторизация"); // SKIP
|
||||
|
||||
// С дополнительными заголовками
|
||||
|
||||
ДопЗаголовки = Новый Соответствие;
|
||||
ДопЗаголовки.Вставить("X-Custom-Header", "CustomValue");
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
Опции.Вставить("auth", Авторизация);
|
||||
Опции.Вставить("headers", ДопЗаголовки);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияHTTP", Опции);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияHTTP");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ClickHouse_ПолучитьНастройкиСоединенияGRPC(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["ClickHouse_AddressGRPC"];
|
||||
|
||||
// Без авторизации
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "БезАвторизации"); // SKIP
|
||||
|
||||
// С basic авторизацией
|
||||
|
||||
Логин = ПараметрыФункции["ClickHouse_User"];
|
||||
Пароль = ПараметрыФункции["ClickHouse_Password"];
|
||||
|
||||
Авторизация = Новый Структура(Логин, Пароль);
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
Опции.Вставить("auth", Авторизация);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "BasicАвторизация"); // SKIP
|
||||
|
||||
// С JWT авторизацией
|
||||
|
||||
JWT = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.test";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
Опции.Вставить("auth", JWT);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "JWTАвторизация"); // SKIP
|
||||
|
||||
// С метаданными
|
||||
|
||||
Meta = Новый Соответствие;
|
||||
Meta.Вставить("custom-meta", "value");
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
Опции.Вставить("auth", Авторизация);
|
||||
Опции.Вставить("meta", Meta);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC", "СМетаданными"); // SKIP
|
||||
|
||||
// С TLS настройками
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("trust", Истина);
|
||||
|
||||
Tls = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиTls", Опции);
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("url", URL);
|
||||
Опции.Вставить("auth", Авторизация);
|
||||
Опции.Вставить("tls", Tls);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСоединенияGRPC", Опции);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСоединенияGRPC");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ClickHouse_ПолучитьНастройкиЗапроса(ПараметрыФункции)
|
||||
|
||||
// Минимальный запрос
|
||||
|
||||
ТекстЗапроса = "SELECT 1";
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиЗапроса", "Минимальный"); // SKIP
|
||||
|
||||
// Полный запрос
|
||||
|
||||
IDЗапроса = Строка(Новый УникальныйИдентификатор());
|
||||
Данные = Новый Структура("meta,data", Новый Массив, Новый Массив);
|
||||
БазаДанных = "default";
|
||||
ФорматОтвета = "CSV";
|
||||
|
||||
ДопНастройки = Новый Соответствие;
|
||||
ДопНастройки.Вставить("max_threads", "4");
|
||||
|
||||
СтруктураКолонок = Новый Структура("id,name", "UInt64", "String");
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("name", "ext");
|
||||
Опции.Вставить("cols", СтруктураКолонок);
|
||||
|
||||
ВнешняяТаблица = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции);
|
||||
|
||||
МассивТаблиц = Новый Массив;
|
||||
МассивТаблиц.Добавить(ВнешняяТаблица);
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("query", ТекстЗапроса);
|
||||
Опции.Вставить("db", БазаДанных);
|
||||
Опции.Вставить("id", IDЗапроса);
|
||||
Опции.Вставить("data", Данные);
|
||||
Опции.Вставить("format", ФорматОтвета);
|
||||
Опции.Вставить("ext", МассивТаблиц);
|
||||
Опции.Вставить("settings", ДопНастройки);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиЗапроса", Опции);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиЗапроса");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ClickHouse_ПолучитьСтруктуруВнешнейТаблицы(ПараметрыФункции)
|
||||
|
||||
// Минимальная структура
|
||||
|
||||
ИмяТаблицы = "external_data";
|
||||
СтруктураКолонок = Новый Структура;
|
||||
СтруктураКолонок.Вставить("id" , "UInt64");
|
||||
СтруктураКолонок.Вставить("name", "String");
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("name", ИмяТаблицы);
|
||||
Опции.Вставить("cols", СтруктураКолонок);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции);
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьСтруктуруВнешнейТаблицы", "Минимальная"); // SKIP
|
||||
|
||||
|
||||
// С данными TSV
|
||||
|
||||
ДанныеТаблицы = СтрШаблон("1%1Test
|
||||
|2%2Test2", Символы.Таб);
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("name", ИмяТаблицы);
|
||||
Опции.Вставить("cols", СтруктураКолонок);
|
||||
Опции.Вставить("data", ДанныеТаблицы);
|
||||
Опции.Вставить("format", "TSV");
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьСтруктуруВнешнейТаблицы", Опции);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьСтруктуруВнешнейТаблицы");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ClickHouse_ПолучитьНастройкиСессии(ПараметрыФункции)
|
||||
|
||||
IDСессии = Строка(Новый УникальныйИдентификатор);
|
||||
Проверять = Истина;
|
||||
Таймаут = 120;
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("id", IDСессии);
|
||||
Опции.Вставить("check", Проверять);
|
||||
Опции.Вставить("timeout", Таймаут);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиСессии", Опции);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиСессии");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ClickHouse_ПолучитьНастройкиTls(ПараметрыФункции)
|
||||
|
||||
Опции = Новый Структура;
|
||||
Опции.Вставить("trust", Ложь);
|
||||
|
||||
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("clickhouse", "ПолучитьНастройкиTls", Опции);
|
||||
|
||||
// END
|
||||
|
||||
Обработать(Результат, "ClickHouse", "ПолучитьНастройкиTls");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
07C4BB7AB731BEE83F841D7B9FCCBFE88AEA3E79ABE5F6C079001C2DBEC9A426
|
||||
020E99F2738A217F5BB9933180E87C96741C7679FB414458053C1635BA67A99A
|
||||
+45
-45
@@ -86,51 +86,6 @@
|
||||
НоваяСтрока.Область = "Основные методы";
|
||||
|
||||
|
||||
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||
НоваяСтрока.Библиотека = "clickhouse";
|
||||
НоваяСтрока.Модуль = "OPI_ClickHouse";
|
||||
НоваяСтрока.Метод = "ПолучитьНастройкиСоединенияGRPC";
|
||||
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИСОЕДИНЕНИЯGRPC";
|
||||
НоваяСтрока.Параметр = "--url";
|
||||
НоваяСтрока.ПараметрСокр = "-u";
|
||||
НоваяСтрока.Описание = "Адрес подключения с протоколом и портом";
|
||||
НоваяСтрока.Область = "Основные методы";
|
||||
НоваяСтрока.ОписаниеМетода = "Получает структуру настроек для gRPC соединения";
|
||||
|
||||
|
||||
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||
НоваяСтрока.Библиотека = "clickhouse";
|
||||
НоваяСтрока.Модуль = "OPI_ClickHouse";
|
||||
НоваяСтрока.Метод = "ПолучитьНастройкиСоединенияGRPC";
|
||||
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИСОЕДИНЕНИЯGRPC";
|
||||
НоваяСтрока.Параметр = "--auth";
|
||||
НоваяСтрока.ПараметрСокр = "-a";
|
||||
НоваяСтрока.Описание = "Авторизация: строка для JWT, структура для basic (необяз. по ум. - Пустое значение)";
|
||||
НоваяСтрока.Область = "Основные методы";
|
||||
|
||||
|
||||
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||
НоваяСтрока.Библиотека = "clickhouse";
|
||||
НоваяСтрока.Модуль = "OPI_ClickHouse";
|
||||
НоваяСтрока.Метод = "ПолучитьНастройкиСоединенияGRPC";
|
||||
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИСОЕДИНЕНИЯGRPC";
|
||||
НоваяСтрока.Параметр = "--meta";
|
||||
НоваяСтрока.ПараметрСокр = "-m";
|
||||
НоваяСтрока.Описание = "Структура метаданных gRPC, если необходимо (необяз. по ум. - Пустое значение)";
|
||||
НоваяСтрока.Область = "Основные методы";
|
||||
|
||||
|
||||
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||
НоваяСтрока.Библиотека = "clickhouse";
|
||||
НоваяСтрока.Модуль = "OPI_ClickHouse";
|
||||
НоваяСтрока.Метод = "ПолучитьНастройкиСоединенияGRPC";
|
||||
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИСОЕДИНЕНИЯGRPC";
|
||||
НоваяСтрока.Параметр = "--tls";
|
||||
НоваяСтрока.ПараметрСокр = "-t";
|
||||
НоваяСтрока.Описание = "Настройки TLS. См. ПолучитьНастройкиTls (необяз. по ум. - Пустое значение)";
|
||||
НоваяСтрока.Область = "Основные методы";
|
||||
|
||||
|
||||
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||
НоваяСтрока.Библиотека = "clickhouse";
|
||||
НоваяСтрока.Модуль = "OPI_ClickHouse";
|
||||
@@ -292,6 +247,51 @@
|
||||
НоваяСтрока.Область = "Основные методы";
|
||||
|
||||
|
||||
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||
НоваяСтрока.Библиотека = "clickhouse";
|
||||
НоваяСтрока.Модуль = "OPI_ClickHouse";
|
||||
НоваяСтрока.Метод = "ПолучитьНастройкиСоединенияGRPC";
|
||||
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИСОЕДИНЕНИЯGRPC";
|
||||
НоваяСтрока.Параметр = "--url";
|
||||
НоваяСтрока.ПараметрСокр = "-u";
|
||||
НоваяСтрока.Описание = "Адрес подключения с протоколом и портом";
|
||||
НоваяСтрока.Область = "Grpc";
|
||||
НоваяСтрока.ОписаниеМетода = "Получает структуру настроек для gRPC соединения";
|
||||
|
||||
|
||||
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||
НоваяСтрока.Библиотека = "clickhouse";
|
||||
НоваяСтрока.Модуль = "OPI_ClickHouse";
|
||||
НоваяСтрока.Метод = "ПолучитьНастройкиСоединенияGRPC";
|
||||
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИСОЕДИНЕНИЯGRPC";
|
||||
НоваяСтрока.Параметр = "--auth";
|
||||
НоваяСтрока.ПараметрСокр = "-a";
|
||||
НоваяСтрока.Описание = "Авторизация: строка для JWT, структура для basic (необяз. по ум. - Пустое значение)";
|
||||
НоваяСтрока.Область = "Grpc";
|
||||
|
||||
|
||||
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||
НоваяСтрока.Библиотека = "clickhouse";
|
||||
НоваяСтрока.Модуль = "OPI_ClickHouse";
|
||||
НоваяСтрока.Метод = "ПолучитьНастройкиСоединенияGRPC";
|
||||
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИСОЕДИНЕНИЯGRPC";
|
||||
НоваяСтрока.Параметр = "--meta";
|
||||
НоваяСтрока.ПараметрСокр = "-m";
|
||||
НоваяСтрока.Описание = "Структура метаданных gRPC, если необходимо (необяз. по ум. - Пустое значение)";
|
||||
НоваяСтрока.Область = "Grpc";
|
||||
|
||||
|
||||
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||
НоваяСтрока.Библиотека = "clickhouse";
|
||||
НоваяСтрока.Модуль = "OPI_ClickHouse";
|
||||
НоваяСтрока.Метод = "ПолучитьНастройкиСоединенияGRPC";
|
||||
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬНАСТРОЙКИСОЕДИНЕНИЯGRPC";
|
||||
НоваяСтрока.Параметр = "--tls";
|
||||
НоваяСтрока.ПараметрСокр = "-t";
|
||||
НоваяСтрока.Описание = "Настройки TLS. См. ПолучитьНастройкиTls (необяз. по ум. - Пустое значение)";
|
||||
НоваяСтрока.Область = "Grpc";
|
||||
|
||||
|
||||
НоваяСтрока = ТаблицаСостава.Добавить();
|
||||
НоваяСтрока.Библиотека = "clickhouse";
|
||||
НоваяСтрока.Модуль = "OPI_ClickHouse";
|
||||
|
||||
Reference in New Issue
Block a user