Boolean function
AdaBase.Driver.Base.[DB].trait_protocol_compressed ()
This is a connection attribute. It returns True if the driver is configured to have the client and server compress the communication protocol between them.
Procedure
AdaBase.Driver.Base.[DB].set_trait_protocol_compressed (trait : Boolean)
This procedure activates the compression on the protocol between the client and the server. For MySQL, it must be set before the connection is made, otherwise an exception is thrown. The MySQL protocol is compressed by default, so normally the procedure is used to disable compression.
Most drivers do not support these compression traits, and trying to use them on an unsupported driver will result in a compilation failure.
with Ada.Text_IO;
with AdaBase;
with AdaBase.Logger.Facility;
with Connect;
procedure Traits_MySQL is
package TIO renames Ada.Text_IO;
package ALF renames AdaBase.Logger.Facility;
package CON renames Connect;
-- Database_Driver renames MySQL driver using subtype
procedure display_versions (driver : CON.Database_Driver);
procedure display_traits (driver : CON.Database_Driver);
procedure display_versions (driver : CON.Database_Driver) is
begin
TIO.Put_Line (" client info: " & driver.trait_client_info);
TIO.Put_Line ("client version: " & driver.trait_client_version);
TIO.Put_Line (" server info: " & driver.trait_server_info);
TIO.Put_Line ("server version: " & driver.trait_server_version);
TIO.Put_Line (" driver: " & driver.trait_driver);
end display_versions;
procedure display_traits (driver : CON.Database_Driver) is
begin
TIO.Put_Line ("");
TIO.Put_Line (" autocommit: " & driver.trait_autocommit'Img);
TIO.Put_Line (" column case: " & driver.trait_column_case'Img);
TIO.Put_Line (" error_mode: " & driver.trait_error_mode'Img);
TIO.Put_Line (" blob_size: " & driver.trait_max_blob_size'Img);
TIO.Put_Line (" compressed: " & driver.trait_protocol_compressed'Img);
TIO.Put_Line (" multiquery: " & driver.trait_multiquery_enabled'Img);
TIO.Put_Line (" using buffers: " & driver.trait_query_buffers_used'Img);
end display_traits;
begin
CON.DR.command_standard_logger (device => ALF.screen,
action => ALF.attach);
CON.connect_database;
display_versions (driver => CON.DR);
display_traits (driver => CON.DR);
CON.DR.set_trait_error_mode (trait => AdaBase.raise_exception);
CON.DR.set_trait_multiquery_enabled (trait => True);
CON.DR.set_trait_query_buffers_used (trait => True);
display_traits (driver => CON.DR);
CON.DR.disconnect;
CON.DR.set_trait_query_buffers_used (trait => False);
CON.DR.set_trait_protocol_compressed (trait => False);
CON.connect_database;
display_traits (driver => CON.DR);
CON.DR.disconnect;
end Traits_MySQL;
Example code: testcases/traits/traits.adb
2016-04-22 20:47:44 mysql : Connect : Connection to test database succeeded.
client info: 5.6.27
client version: 5.06.27
server info: 5.6.27
server version: 5.06.27
driver: MySQL 5.5+ native driver
autocommit: FALSE
column case: NATURAL_CASE
error_mode: WARNING
blob_size: 4096
compressed: TRUE
multiquery: FALSE
using buffers: TRUE
autocommit: FALSE
column case: NATURAL_CASE
error_mode: RAISE_EXCEPTION
blob_size: 4096
compressed: TRUE
multiquery: TRUE
using buffers: TRUE
2016-04-22 20:47:44 mysql : Disconnect : Disconnect From database
2016-04-22 20:47:44 mysql : Connect : Connection to test database succeeded.
autocommit: FALSE
column case: NATURAL_CASE
error_mode: RAISE_EXCEPTION
blob_size: 4096
compressed: FALSE
multiquery: TRUE
using buffers: FALSE
2016-04-22 20:47:44 mysql : Disconnect : Disconnect From database
Output using the MySQL driver
This trait is limited to specific drivers. Specially [DB] is limited to "MySQL.MySQL_Driver"