String function
AdaBase.Driver.Base.[DB].trait_client_version ()
This is a connection attribute. It returns the version number as reported by the database client as a string.
String function
AdaBase.Driver.Base.[DB].trait_client_info ()
This is a connection attribute. It returns a string containing additional information about the the database client, such as the client library version number.
with Ada.Text_IO;
with Ada.Exceptions;
with AdaBase;
with Connect;
with GNAT.Traceback.Symbolic;
procedure Traits is
package SYM renames GNAT.Traceback.Symbolic;
package TIO renames Ada.Text_IO;
package CON renames Connect;
package EX renames Ada.Exceptions;
-- Database_Driver renames specific 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 (" multiquery on: " & driver.trait_multiquery_enabled'Img);
TIO.Put_Line (" encoding: " & driver.trait_character_set);
end display_traits;
begin
CON.connect_database;
display_versions (driver => CON.DR);
display_traits (driver => CON.DR);
CON.DR.disconnect;
CON.DR.set_trait_autocommit (trait => True);
CON.DR.set_trait_column_case (trait => AdaBase.upper_case);
CON.DR.set_trait_error_mode (trait => AdaBase.silent);
CON.DR.set_trait_max_blob_size (trait => 2 ** 16);
CON.DR.set_trait_multiquery_enabled (True);
CON.DR.set_trait_character_set ("");
CON.connect_database;
display_traits (driver => CON.DR);
CON.DR.disconnect;
exception
when E : others =>
TIO.Put_Line ("");
TIO.Put_Line ("exception name: " & EX.Exception_Name (E));
TIO.Put_Line ("exception msg : " & EX.Exception_Message (E));
TIO.Put_Line ("Traceback:");
TIO.Put_Line (SYM.Symbolic_Traceback (E));
end Traits;
Example code: testcases/traits/traits.adb
client info: 5.6.30
client version: 5.06.30
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
multiquery on: FALSE
encoding: UTF8
autocommit: TRUE
column case: UPPER_CASE
error_mode: SILENT
blob_size: 65536
multiquery on: TRUE
encoding: LATIN1
Output using the MySQL driver
client info: 2016-05-18 10:57:30 fc49f556e48970561d7ab6a2f24fdd7d9eb81ff2
client version: 3.13.0
server info: Not applicable
server version: Not applicable
driver: SQLite3 native driver
autocommit: FALSE
column case: NATURAL_CASE
error_mode: WARNING
blob_size: 4096
multiquery on: FALSE
encoding: UTF-8
autocommit: TRUE
column case: UPPER_CASE
error_mode: SILENT
blob_size: 65536
multiquery on: TRUE
encoding: UTF-8
Output using the SQLite driver
client info: 9.05.03
client version: 9.05.03
server info: Protocol 3.0
server version: 9.05.02
driver: PostgreSQL 9.1+ native driver
autocommit: FALSE
column case: NATURAL_CASE
error_mode: WARNING
blob_size: 4096
multiquery on: FALSE
encoding: UTF8
autocommit: TRUE
column case: UPPER_CASE
error_mode: SILENT
blob_size: 65536
multiquery on: TRUE
encoding: UTF8
Output using the PostgreSQL driver
[DB] is "MySQL.MySQL_Driver", "PostgreSQL.PostgreSQL_Driver", or "SQLite.SQLite_Driver"