MariaDB Connector/C is used to connect applications developed in C/C++ to MariaDB and MySQL databases.The client library is LGPL licensed.
Integration with MariaDB Server
MariaDB Connector/C is distributed with MariaDB Server packages. Eventually, it will completely replace the functionality that has traditionally been performed by libmysqlclient in those packages. Currently, MariaDB Connector/C has replaced libmysqlclient as the client library for client utilities that are distributed with MariaDB Server. See for more information.
Installing MariaDB Connector/C
MariaDB Connector/C packages can be downloaded by selecting your desired version from the following page:
MariaDB Connector/C packages can also be downloaded by selecting C/C++ connector as the Product on the following page:
See the instructions below for information on how to install the MariaDB Connector/C package for your operating system.
Installing MariaDB Connector/C on Windows
To install MariaDB Connector/C on Windows, we distribute . The MSI installation process is fairly straightforward. Both 32-bit and 64-bit MSI packages are available.
Installing MariaDB Connector/C on Linux
MariaDB Connector/C is distributed in on Linux.
Installing with a Package Manager
Since MariaDB Connector/C is now integrated with MariaDB Server, it can also be installed via a package manager on Linux. In order to do so, your system needs to be configured to install from one of the MariaDB repositories. The repository needs to be configured for or later.
You can configure your package manager to install it from MariaDB Corporation's MariaDB Package Repository by using the .
You can also configure your package manager to install it from MariaDB Foundation's MariaDB Repository by using the .
Installing with yum/dnf
On RHEL, CentOS, Fedora, and other similar Linux distributions, it is highly recommended to install the relevant from MariaDB's
repository using or . Starting with RHEL 8 and Fedora 22, yum has been replaced by dnf, which is the next major version of yum. However, yum commands still work on many systems that use dnf. For example:
If you want to build applications with MariaDB Connector/C, then you will also need to install the development package. For example:
Installing with apt-get
On Debian, Ubuntu, and other similar Linux distributions, it is highly recommended to install the relevant from MariaDB's
repository using . For example:
If you want to build applications with MariaDB Connector/C, then you will also need to install the development package. For example:
Installing with zypper
On SLES, OpenSUSE, and other similar Linux distributions, it is highly recommended to install the relevant from MariaDB's repository using .
For example:
If you want to build applications with MariaDB Connector/C, then you will also need to install the development package. For example:
Installing MariaDB Connector/C from Source
See for information on how to build MariaDB Connector/C from source.
API - Function Reference
MariaDB Connector/C has exactly the same API as the MySQL Connector/C for MySQL 5.5
The function reference is available at:
It is also downloadable in html format from
Configuring MariaDB Connector/C with Option Files
Just like MariaDB Server and libmysqlclient, MariaDB Connector/C can also read configuration options from client in .
See for more information.
Known Bugs and Limitations
double to string conversion for prepared statements doesn't work correctly
Connector 3.0.7 and below doesn't support the MySQL 8.0 default authentication protocol, . This protocol should be supported in Connector/C 3.0.8 and above.
Reporting Bugs
If you find a bug, please report it via the on .
Source Code
The source code is available at the on GitHub.
License
GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
For licensing questions, see the .
Building Connector/C From Source
Build MariaDB Connector/C from source. Download the package from MariaDB downloads or get the latest development version from the Connector/C GitHub repository.
MariaDB Connector/C API Functions
Explore API functions for MariaDB Connector/C. This section provides detailed documentation on functions for connecting, querying, and managing data, enabling robust C applications for MariaDB.
Complete MariaDB installation guide. Complete setup instructions for Linux, Windows, and macOS with configuration and verification for production use.
MariaDB Connector/C supports several Linux distributions and Microsoft Windows.
Configure Package Repository (Linux)
To install MariaDB Connector/C on Linux using APT, YUM, or ZYpp, you must configure your system to use either the ES Package Repository or the CS Package Repository.
If your system is already configured to use one of these package repositories, you can skip to install MariaDB Connector/C.
Choose a package repository to configure:
ES Package Repository
MariaDB Connector/C is available from the same package repository as MariaDB Enterprise Server.
To configure the ES package repository:
Install curl.
Install via APT on Debian, Ubuntu:
Install via YUM on CentOS, RHEL, Rocky Linux:
Install via ZYpp on SLES:
Download the utility, validate its checksum, and ensure that its permissions allow it to be executed:
CS Package Repository
MariaDB Connector/C is available from the same package repository as MariaDB Community Server.
To configure the CS package repository:
Install curl.
Install via APT on Debian, Ubuntu:
Install via YUM on CentOS, RHEL, Rocky Linux:
Install via ZYpp on SLES:
Download the utility, validate its checksum, and ensure that its permissions allow it to be executed:
Installation
Installation via Package Repository (Linux)
On supported Linux distributions, MariaDB Connector/C can be installed using APT, YUM, or ZYpp if the system is configured to use the or the .
Install on CentOS, RHEL, Rocky Linux
To install MariaDB Connector/C on CentOS, RHEL, and Rocky Linux, you can use YUM if you have the or configured.
Install MariaDB Connector/C and package dependencies:
Install on Debian, Ubuntu
To install MariaDB Connector/C on Debian and Ubuntu, you can use APT if you have the or configured.
Install MariaDB Connector/C and package dependencies:
Install on SLES
To install MariaDB Connector/C on SLES, you can use ZYpp if you have the or configured.
Install MariaDB Connector/C and package dependencies:
Install via Binary Tarball (Linux)
MariaDB Connector/C can be installed on supported Linux distributions via a binary tarball package:
Go to the
Ensure the "Product" dropdown reads "C connector."
In the "Version" dropdown, select the version you want to download.
Install via MSI (Windows)
MariaDB Connector/C can be installed on Microsoft Windows via an MSI package:
Go to the
Ensure the "Product" dropdown reads "C connector."
In the "Version" dropdown, select the version you want to download.
Immediately aborts a connection by making all subsequent read/write operations fail.mariadb_cancel() does not invalidate memory used for mysql structure, nor close any communication channels. To free the memory, must be called.mariadb_cancel() is useful to break long queries in situations where sending KILL is not possible.
Commits the current transaction for the specified database connection. Returns zero on success, nonzero if an error occurred.
Executing mysql_commit() will not affected the behaviour of . This means, any update or insert statements following mysql_commit() will be rolled back when the connection gets closed.
See also
mysql_escape_string
Syntax
unsigned long mysql_escape_string(char * to,
const char * from,
unsigned long);
Description
Escapes a string using the default character set.
This function is deprecated and will be discontinued. Please use instead.
See also
mysql_fetch_lengths
Syntax
unsigned long * mysql_fetch_lengths(MYSQL_RES * result);
The mysql_fetch_lengths() function returns an array containing the lengths of every column of the current row within the result set (not including terminating zero character) or NULL if an error occurred.
mysql_fetch_lengths() is valid only for the current row of the result set. It returns NULL if you call it before calling or after retrieving all rows in the result.
Describes the type of connection in use for the connection, including the server host name. Returns a string, or NULL if the connection is not valid.
See also
mysql_hex_string
Syntax
to - result buffer
from - the string which will be encoded
len - length of the string (from)
Description
This function is used to create a hexadecimal string which can be used in SQL statements. e.g. INSERT INTO my_blob VALUES(X'A0E1CD').
Returns the length of the encoded string without the trailing null character.
The size of the buffer for the encoded string must be 2 * length + 1.
The encoded string does not contain a leading X'.
See also
MariaDB Connector/C Plugins
MariaDB Connector/C functionality can be extended via loadable (or statically compiled in) plugins. As of the version 3.1.11 Connector/C comes with the following plugins
connection plugins
mariadb_reconnect
Syntax
mysql - a mysql handle, which was previously allocated by or .
mysql_affected_rows
Syntax
mysql is a connection identifier, which was previously allocated by or .
mysql_autocommit
Syntax
mysql - a mysql handle, identifier, which was previously allocated by or .
mysql_change_user
Syntax
mysql - a mysql handle, which was previously allocated by or .
mysql_data_seek
Syntax
result - a result set identifier returned by mysql_store_result().
mysql_error
Syntax
mysql - a mysql handle, which was previously allocated by or .
mysql_fetch_field
Syntax
result - a result set identifier returned by or .
mysql_fetch_fields
Syntax
res - a result set identifier returned by or .
mysql_fetch_field_direct
Syntax
res - a result set identifier returned by or .
mysql_field_count
Syntax
mysql - a mysql handle, which was previously allocated by or .
mysql_field_seek
Syntax
result - a result set identifier returned by or .
mysql_get_server_version
Syntax
mysql - a mysql handle, which was previously allocated by or .
mysql_server_init
Syntax
Description
mysql_server_init()
mysql_row_tell
Syntax
res - a result set identifier returned by .
mysql_get_character_set_info
Syntax
mysql - a mysql handle, which was previously allocated by or .
mysql_get_ssl_cipher
Syntax
mysql - a mysql handle, which was previously allocated by or .
mysql_get_server_info
Syntax
mysql - a mysql handle, which was previously allocated by or .
mysql_read_query_result
Syntax
mysql - a mysql handle, which was previously allocated by or .
Returns zero on success, otherwise non-zero.
mysql_library_init
Syntax
Description
Call to initialize the library before calling other functions, both for embedded servers and regular clients. If used on an embedded server, the server is started and subsystems initialized. Returns zero for success, or nonzero if an error occurred.
mysql_rollback
Syntax
mysql - a mysql handle, which was previously allocated by or .
mysql_get_proto_info
Syntax
mysql - a mysql handle, which was previously allocated by or .
mysql_num_fields
Syntax
MYSQL RES * - A result set identifier returned by or .
mysql_real_escape_string
Syntax
mysql - a MySQL handle, which was previously allocated by or .
sudo yum install MariaDB-shared
sudo yum install MariaDB-devel
sudo apt-get install libmariadb3
sudo apt-get install libmariadb-dev
sudo zypper install MariaDB-shared
sudo zypper install MariaDB-devel
void mysql_free_result(MYSQL_RES * result);
unsigned long mysql_hex_string(char * to,
const char * from,
unsigned long len);
Checksums of the various releases of the mariadb_es_repo_setup script can be found in the section at the bottom of the page. Subsitute ${checksum} in the example above with the latest checksum.
Checksums of the various releases of the mariadb_repo_setup script can be found in the section at the bottom of the page. Subsitute ${checksum} in the example above with the latest checksum.
Configure the CS package repository using the mariadb_repo_setup utility:
All major releases of CS contain the same version of MariaDB Connector/C.
By default, the utility will configure your system to use the package repository for CS 10.6.
To configure your system to use the CS package repository for a specific major release, use the option.
These plugins are used by the Connector/C to communicate with the MariaDB server.
socket
npipe
shmem
io plugins
These are plugins that are used whenever Connector/C needs to read a file.
For example, for LOAD DATA LOCAL INFILE statement, when a server requests the Connector/C to send a specific file.
remote_io
This plugin uses libcurl to access remote files, it allows the client to execute statements like
LOAD DATA LOCAL INFILE 'http://mariadb.com/example.csv' INTO t1
Note that here, like with any LOAD DATA LOCAL, it'll be the client that fetches the file, not the server.
This plugin supports the following url schemes: http://, https://, ftp://, sftp://, ldap://, smb://.
auth plugins
These are authentication plugins. They are loaded automatically by the Connector/C when the server requests a specific authentication method.
mysql_native_password
dialog
This is a generic dialog plugin that asks the user a question (as instructed by the server) and sends the answer to the server. Everything is sent in plain text, one should enable SSL if secrets are sent via this plugin.
Graphical clients can customize the plugin to provide graphical dialog form. See
client_ed25519
caching_sha2_password
sha256_password
auth_gssapi_client
mysql_old_password
mysql_clear_password
Description
mariadb_reconnect() tries to reconnect to a server in case the connection died due to timeout or other errors. It uses the same credentials which were specified in mysql_real_connect().
The function will return 0 on sucess.
The function will return an error, if the option MYSQL_OPT_RECONNECT wasn't specified before.
Returns the number of affected rows by the last operation associated with MySQL, if the operation was an "upsert" (, , or ) statement, or UINT64_MAX (0xffffffffffffffff) if the last query failed.
When using , MariaDB will not update columns where the new value is the same as the old value. This creates the possibility that mysql_affected_rows may not actually equal the number of rows matched, only the number of rows that were literally affected by the query.
The statement first deletes the record with the same primary key and then inserts the new record. This function returns the number of deleted records in addition to the number of inserted records.
Toggles autocommit mode on or off for the current database connection. Autocommit mode will be set if mode=1 or unset if mode=0. Returns zero on success, or nonzero if an error occurred.
Parameters
mode only affects operations on transactional table types. To determine the current state of autocommit mode use the SQL command SELECT @@autocommit. Be aware: the mysql_rollback() function will not work if autocommit mode is switched on.
db - the default database. If desired, the NULL value may be passed resulting in only changing the user and not selecting a database. To select a database in this case use the mysql_select_db() function.
Description
Changes the user and default database of the current connection.
In order to successfully change users a valid username and password parameters must be provided and that user must have sufficient permissions to access the desired database. If for any reason authorization fails, the current user authentication will remain.
Returns zero on success, nonzero if an error occured.
mysql_change_user will always cause the current database connection to behave as if was a completely new database connection, regardless of if the operation was completed successfully. This reset includes performing a rollback on any active transactions, closing all temporary tables, and unlocking all locked tables.
offset - the field offset. Must be between zero and the total number of rows minus one (0..mysql_num_rows - 1).
Description
The mysql_data_seek() function seeks to an arbitrary function result pointer specified by the offset in the result set. Returns zero on success, nonzero if an error occurred.
This function can only be used with buffered result sets obtained from the use of the mysql_store_result function.
Returns the definition of one column of a result set as a pointer to a MYSQL_FIELD structure. Call this function repeatedly to retrieve information about all columns in the result set.
The field order will be reset if you execute a new SELECT query.
In case only information for a specific field is required the field can be selected by using the mysql_field_seek() function or obtained by mysql_fetch_field_direct() function.
This function serves an identical purpose to the mysql_fetch_field() function with the single difference that instead of returning one field at a time for each field, the fields are returned as an array. Each field contains the definition for a column of the result set.
Returns the number of columns for the most recent query on the connection represented by the link parameter as an unsigned integer. This function can be useful when using the mysql_store_result() function to determine if the query should have produced a non-empty result set or not without knowing the nature of the query.
The mysql_field_count() function should be used to determine if there is a result set available.
offset - the field number. This number must be in the range from 0..number of fields - 1.
Description
Sets the field cursor to the given offset. The next call to mysql_fetch_field() will retrieve the field definition of the column associated with that offset.
mysql_read_query_result() reads the result of a SQL statement executed with mysql_send_query(). If the SQL statement returned a resultset, it must be freed before the next call to mysql_read_query_result() is made. This is similar to how results from mysql_query() must be processed before another call can be made.
to - buffer for the encoded string. The size of this buffer must be length * 2 + 1 bytes: in the worst case every character of the from string needs to be escaped. Additionally, a trailing 0 character will be appended.
from - a string which will be encoded by mysql_real_escape_string().
long - the length of the from string.
Description
This function is used to create a legal SQL string that you can use in an SQL statement. The given string is encoded to an escaped SQL string, taking into account the current character set of the connection.
Returns the length of the encoded (to) string.
unsigned long mysql_real_escape_string(MYSQL * mysql,
char * to,
const char * from,
unsigned long);
Prerequisites For Building Connector/C From Source
Windows
Visual Studio 2013 or newer (older versions of Visual Studio may also work but have not been tested).
cmake 2.8.12 or newer, available from the .
for Connector/C 2.x: OpenSSL libraries and include files.
for Connector/C 3.0 remote-io plugin: libraries and include files
Linux / Mac OS X
The following is a list of tools that are required for building MariaDB Connector/C on Linux and Mac OS X. Most, if not all, of these will exist as packages in your distribution's package repositories, so check there first.
gcc 3.4.6 or newer C compiler
TLS/SSL libraries and include files
OpenSSL 1.0.1 or newer or
On Linux you can get those programs with your package manager. On Mac OS X you will need Xcode and to install the remaining programs with or .
Fetches one row of data from the result set and returns it as an array of char pointers (MYSQL_ROW), where each column is stored in an offset starting from 0 (zero). Each subsequent call to this function will return the next row within the result set, or NULL if there are no more rows.
If a column contains a NULL value the corresponding char pointer will be set to NULL.
Memory associated to MYSQL_ROW will be freed when calling function.
See also
mysql_thread_init
Syntax
Description
Thread initialization for multi-threaded clients. Multi-threaded clients should call mysql_thread_init() at the beginning of the thread initialization to initialize thread specific client library variables. If mysql_thread_init() was not called explicitly, it will be called automatically by or .
Returns zero if successful or 1 if an error occurred.
Before a client thread ends the function must be called to release memory - otherwise the client library will report an error.
This function has been deprecated since MariaDB Connector/C 3.0.0.
Returns a string containing the error code for the most recently invoked function that can succeed or fail. The error code consists of five characters. '00000' means no error. The values are specified by ANSI SQL and ODBC
Please note that not all client library error codes are mapped to SQLSTATE errors. Errors which can't be mapped will be returned as value HY000.
Used to initiate the retrieval of a result set from the last query executed using the mysql_real_query() function on the database connection. Either this or the function must be called before the results of a query can be retrieved, and one or the other must be called to prevent the next query on that database connection from failing.
Returns an unbuffered result set or NULL if an error occurred.
The mysql_use_result() function does not transfer the entire result set. Hence, several functions like or cannot be used.
mysql_use_result() will block the current connection until all result sets are retrieved, or result set was released by .
See also
mysql_stmt_close
Syntax
stmt - a statement handle, which was previously allocated by mysql_stmt_init().
Description
Closes a prepared statement and deallocates the statement handle. If the current statement has pending or unread results, this function cancels them so that the next query can be executed.
Returns zero on success, nonzero on error (when communicating with the server). The statement is deallocated, regardless of the error.
If you want to reuse the statement handle with a different SQL command, use .
See Also
mysql_init
Syntax
mysql - a pointer to MYSQL or NULL. In case of passing a NULL pointer mysql_init() will allocate memory and return a pointer to a MYSQL structure.
Description
Prepares and initializes a MYSQL structure to be used with .
If mysql_thread_init() was not called before, mysql_init() will also initialize the thread subsystem for the current thread.
Members of the MYSQL structure are not intended for application use.
Any subsequent calls to any mysql function (except mysql_options()) will fail until was called.
Memory allocated by mysql_init() must be freed with .
Returns the last for the most recent function call that can succeed or fail. Zero means no error occurred.
Client error messages are listed in errmsg.h header file, server error messages are listed in mysqld_error.h header file of the server source distribution.
See also
mysql_get_client_version
Syntax
unsigned long mysql_get_client_version(void);
Description
Returns a number representing the client library version.
To obtain a string containing the client library version use the function.
The mysql_insert_id() function returns the ID generated by a query on a table with a column having the attribute or the value for the last usage of . If the last query wasn't an or statement or if the modified table does not have a column with the attribute and was not used, this function will return zero.
When performing a multi-insert statement, mysql_insert_id() will return the value of the first row.
Resets the current connection and clears session state. Similar to or , mysql_reset_connection() resets session status, but without disconnecting, opening, or reauthenticating.
On client side mysql_reset_connection()
clears pending or unprocessed result sets
clears status like affected_rows, info or last_insert_id
invalidates active prepared statements
On server side mysql_reset_connection()
drops temporary table(s)
rollbacks active transaction
resets auto commit mode
releases table locks
Returns zero on success, non-zero if an error occurred.
This function was added in MariaDB Connector/C 3.0.0.
This function is used to ask the server to kill a MariaDB thread specified by the processid parameter. This value must be retrieved by . If trying to kill the own connection should be used.
Returns 0 on success, otherwise nonzero.
To stop a running command without killing the connection, use . The mysql_kill() function only kills a connection; it doesn't free any memory - this must be done explicitly by calling .
See also
mysql_send_query
Syntax
int mysql_send_query(MYSQL * mysql,
const char * query,
unsigned long length);
mysql_send_query() executes a SQL statement without waiting for the result. The main purpose of this function is to perform batch execution of DML statements.
Each successful call tomysql_send_query() must be followed by a call to . Multiple calls to mysql_send_query() can be made before the calls to are done.
Checks whether the connection to the server is working. If it has gone down, and global option reconnect is enabled an automatic reconnection is attempted.
Returns zero on success, nonzero if an error occured.
This function can be used by clients that remain idle for a long while, to check whether the server has closed the connection and reconnect if necessary.
If a reconnect occurred the thread_id will change. Also resources bundled to the connection (prepared statements, locks, temporary tables, ...) will be released.
data - pointer to data, which must be declared as const char *
length - pointer to a size_t variable, which will contain the length of data
Description
mysql_session_track_get_first() retrieves the first session status change information received from the server.
Depending on the specified type the read only data pointer will contain the following information:
SESSION_TRACK_SCHEMA: The name of the default schema (database)
SESSION_TRACK_SYSTEM_VARIABLES: If a session system variable is changed, the first call contains the name of the changed system variable, the second call contains the new value. Both name and value are represented as strings.
SESSION_TRACK_STATE_CHANGE
Further data needs to be obtained by calling .
mysql_session_track_get_first() was added in Connector/C 3.0 and MariaDB Server 10.2.
query - a string containing the statement to be performed.
long - length of the string.
Description
mysql_real_query() is a binary-safe function for executing a statement on the database server. Returns zero on success, otherwise non-zero.
Contrary to the function, mysql_real_query is binary safe.
To determine if mysql_real_query returns a result set, use the function.
See also
MariaDB Connector/C API Prepared Statement Functions
Explore API functions for prepared statements in Connector/C. This section provides detailed documentation on using prepared statements for efficient and secure query execution in C applications.
mysql_set_local_infile_default
Name
mysql_set_local_infile_default - Sets local infile callback functions to default
Synopsis
Description
Sets local infile callback functions to MariaDB Connector/C internal default callback functions.
Parameter
mysql - mysql handle, which was previously allocated by
See also
mysql_server_end
Syntax
void mysql_server_end(void );
Description
mysql_server_end() is an alias for .
See also
mysql_shutdown
Syntax
int mysql_shutdown(MYSQL * mysql,
enum mysql_enum_shutdown_level);
The behavior of mysql_num_rows() depends on whether buffered or unbuffered result sets are being used. For unbuffered result sets, mysql_num_rows() will not return the correbct number of rows until all the rows in the result have been retrieved.
See also
mysql_next_result
Syntax
mysql - a mysql handle, which was previously allocated by or .
mysql_refresh
Syntax
mysql - a mysql handle, which was previously allocated by or .
mysql_set_server_option
Syntax
mysql - a mysql handle, which was previously allocated by or .
mysql_real_connect
Syntax
mysql - a mysql handle, which was previously allocated by .
mysql_stmt_bind_result
Syntax
stmt - a statement handle, which was previously allocated by .
mysql_info
Syntax
mysql - a mysql handle, which was previously allocated by or .
mysql_ssl_set
Syntax
mysql - a mysql handle, which was previously allocated by or .
mysql_thread_id
Syntax
mysql - a mysql handle, which was previously allocated by or .
mysql_stmt_affected_rows
Syntax
stmt - a statement handle, which was previously allocated by
mysql_stat
Syntax
mysql - a mysql handle, which was previously allocated by or .
mysql_set_local_infile_handler
Name
mysql_set_local_infile_handler - Registers callback functions for LOAD DATA LOCAL INFILE
Synopsis
mariadb_stmt_fetch_fields
Syntax
stmt - A statement handle, which was previously allocated by .
mysql_library_end
Syntax
Description
Call when finished using the library, such as after disconnecting from the server. In an embedded server application, the embedded server is shut down and cleaned up. For a client program, only cleans up by performing memory management tasks.
Registers four callback functions which will be called if a LOAD DATA LOCAL INFILE command will be executed.
The initialization function accepts 3 parameters and returns zero on success, nonzero on error. It allocates an handle, which will be passed to read, end and error functions:
int init(void **handle, const char *filename, void *userdata)
The read function is called repeatly to read data chunks from file into buffer. The amount of bytes is limited by parameer buffer_len. The function returns the number of bytes which were read from the file:
int mysql_local_infile_read(void *handle, char * buffer, unsigned int buffer_len)
The end function will be called after the read function returned zero (no more bytes to read). To prevent leaking of resources, the file must be closed and handle must be freed inside this function:
void end(void *handle);
The error function is called to get an error message in case init, read or end functions returned an error.
error(void *handler, char *error_buf, unsigned int error_buf_len);
Parameter
mysql - mysql handle, which was previously allocated by mysql_init()
local_infile_init - initialization function, e.g. for opening the file
local_infile_read - read function
local_infile_end - terminating function, e.g. for closing the file
local_infile_error - error function
userdata - a buffer which will be passed to all callback function
options - a bit masked composed integer. See below.
Description
Flushes different types of information stored on the server. The bit-masked parameter options specify which kind of information will be flushed. options can be any combination of the following:
Option
Description
REFRESH_GRANT
Refresh grant tables.
REFRESH_LOG
Flush logs.
REFRESH_TABLES
Flush table cache.
REFRESH_HOSTS
Flush host cache.
REFRESH_STATUS
Reset status variables.
REFRESH_THREADS
Flush thread cache.
Returns zero on success, otherwise nonzero.
To combine different values in the options parameter, use the OR operator '|'. The function mysql_reload() is an alias for mysql_refresh().
host - can be either a host name or an IP address. Passing the NULL value or the string "localhost" to this parameter, the local host is assumed. When possible, pipes will be used instead of the TCP/IP protocol.
user - the user name.
passwd - If provided or NULL, the server will attempt to authenticate the user against those user records which have no password only. This allows one username to be used with different permissions (depending on if a password as provided or not).
db - if provided will specify the default database to be used when performing queries.
port - specifies the port number to attempt to connect to the server.
unix_socket - specifies the socket or named pipe that should be used.
flags - the flags allows various connection options to be set:
CLIENT_FOUND_ROWS: Return the number of matched rows instead of number of changed rows.
CLIENT_NO_SCHEMA: Forbids the use of database.tablename.column syntax and forces the SQL parser to generate an error.
CLIENT_COMPRESS: Use compression protocol
CLIENT_IGNORE_SPACE: Allows spaces after function names. All function names will become reserved words.
CLIENT_LOCAL_FILES: Allows LOAD DATA LOCAL statements
CLIENT_MULTI_STATEMENTS: Allows the client to send multiple statements in one command. Statements will be divided by a semicolon.
CLIENT_MULTI_RESULTS: Indicates that the client is able to handle multiple result sets from stored procedures or multi statements. This option will be automatically set if CLIENT_MULTI_STATEMENTS is set.
And others per .
Description
Establishes a connection to a database server. Returns a MYSQL * handle or NULL if an error occurred.
The password doesn't need to be encrypted before executing mysql_real_connect(). This will be handled in the client server protocol.
The connection handle can't be reused for establishing a new connection. It must be closed and reinitialized before.
A column can be bound or rebound at any time, even after a result set has been partially retrieved. The new binding takes effect the next time mysql_stmt_fetch() is called.
capath - path to the directory containing the trusted TLS CA certificates in PEM format.
cipher list of permitted ciphers to use for TLS encryption.
Description
Used for establishing a . It must be called before attempting to use mysql_real_connect(). TLS support must be enabled in the client library in order for the function to have any effect.
NULL can be used for an unused parameter. Always returns zero.
mysql_real_connect() will return an error if attempting to connect and TLS is incorrectly set up.
The mysql_thread_id() function returns the thread id for the current connection.
The current connection can be killed with mysql_kill(). If reconnect option is enabled the thread id might change if the client reconnects to the server.
Note that connector will return only the first 32connectionsbits value. If your database might expect to create more than 4.3 billion connections without a restart, it's better to query 'select CONNECTION_ID()'
Returns the number of affected rows by the last prepared statement associated with mysql, if the operation was an "upsert" (, , or ) statement, or -1 if the last prepared statement failed.
When using UPDATE, MariaDB will not update columns where the new value is the same as the old value. This creates the possibility that mysql_stmt_affected_rows() may not equal the number of rows matched, only the number of rows that were literally affected by the query.
The statement first deletes the record with the same primary key and then inserts the new record. This function returns the number of deleted records in addition to the number of inserted records.
Returns an array of fields. Each field contains the definition for a column of the result set.
If the statement doesn't have a result set a NULL pointer will be returned.
debug - a string representing the debug operation to perform. See description below.
Description
Enables debug output for development and debug purposes by using Fred Fish's DBUG library. For using this function the mariadb-client library must be compiled with debug support.
Almost all MariaDB binaries use the DBUG library and one can get a trace of the program execution by using the command line option with the binary. This will only work if the binary is compiled for debugging (compiler option -DDBUG_ON).
Returns void.
The debug control string is a sequence of colon separated fields as follows:
Each field consists of a mandatory flag character followed by an optional "," and comma separated list of modifiers:
The currently recognized flag characters are:
Option
Description
Instead of using the mysql_debug() function you also can set the environment variable MYSQL_DEBUG\
Enabling generation of debug information slows down the overall performance and generates huge files. In case you need debug information only for special places you can disable the generation of debug information by using mysql_debug_end().
See also
mysql_debug_end()
mysql_stmt_bind_param
Syntax
stmt - a statement handle, which was previously allocated by mysql_stmt_init().
bind - an array of MYSQL_BIND structures. The size of this array must be equal to the number of parameters.
Description
Binds variables for parameter markers in the prepared statement that was passed to . Returns zero on success, non-zero on failure.
The number of parameters can be obtained by .
If the number of parameters is unknown, for example when using , the number of parameters have to be specified with the function.
mysql_option - the option you want to set. See description below.
arg - the value for the option.
Description
Used to set extra connect options and affect behavior for a connection. This function may be called multiple times to set several options. mysql_options() should be called after and before .
Returns zero on success, non zero if an error occurred (invalid option or value).
This function is deprecated as of MariaDB Connector/C 3.0 and will be removed in future releases. It's preferable to use .
Options
See .
See also
mysql_select_db
Syntax
int mysql_select_db(MYSQL * mysql,
const char * db);
Selects a database as default. Returns zero on success, non-zero on failure
The SQL command will return the name of the default database.
The default database can also be set by the db parameter in .
mysql_thread_safe
Syntax
unsigned int mysql_thread_safe(void );
Description
Indicates whether or not the client library is compiled as thread safe. Returns 1 if the client library was compiled as thread safe otherwise zero.
By default the mariadb client library is compiled as thread safe.
See also
MariaDB Connector/C Types and Definitions
MariaDB Connector/C provides the following types and definitions.
Enumeration Types
enum mysql_option
Configuration Settings for Building Connector/C
Configuration settings
Connector/C specifies its build process with platform-independent CMake listfiles included in each directory of a source tree with the name CMakeLists.txt.
Configuration settings may be specified by passing the -D option to CMake command line interpreter.
mariadb_get_infov
Syntax
mysql - a mysql handle, which was previously allocated by or . For general information which is not bound to connection this parameter might be null.
mariadb_stmt_execute_direct
Syntax
stmt - A statement handle, which was previously allocated by .
mysql_stmt_attr_get
Syntax
stmt - a statement handle, which was previously allocated by .
mysql_warning_count
Syntax
mysql - a mysql handle, which was previously allocated by or .
mysql_thread_end
Syntax
Description
The mysql_thread_end()
int mysql_next_result(MYSQL * mysql);
int mysql_refresh(MYSQL * mysql,
unsigned int options);
int mysql_set_server_option(MYSQL * mysql,
enum enum_mysql_set_option);
function needs to be called before a client thread ends. It will release thread-specific memory, which was allocated by a previous
call. Returns void.
Unlike mysql_thread_init()mysql_thread_end() will not be invoked automatically if the thread ends. To avoid memory leaks mysql_thread_end() must be called explicitly.
This function has been deprecated since MariaDB Connector/C 3.0.0.
Identify the source file line number for each line of debug or trace output.
n
Print the current function nesting depth for each line of debug or trace output.
N
Number each line of dbug output.
o
Redirect the debugger output stream to the specified file. The default output is stderr.
O
As o but the file is really flushed between each write. When needed the file is closed and reopened between each write.
a
Like o, but opens for append.
A
Like O, but opens for append.
p
Limit debugger actions to specified processes. A process must be identified with the DBUG_PROCESS macro and match one in the list for debugger actions to occur.
P
Print the current process name for each line of debug or trace output.
r
When pushing a new state, do not inherit the previous state's function nesting level. Useful when the output is to start at the left margin.
S
Do function _sanity(file,line) at each debugged function until _sanity() returns something that differs from 0. (Mostly used with safemalloc)
t
Enable function call/exit trace lines. May be followed by a list (containing only one modifier) giving a numeric maximum trace level, beyond which no output will occur for either debugging or tracing macros. The default is a compile time option.
d
Enable output from DBUG_ macros for the current state. May be followed by a list of keywords which selects output only for the DBUG macros with that keyword. A null list of keywords implies output for all macros.
D
Delay after each debugger output line. The argument is the number of tenths of seconds to delay, subject to machine capabilities. I.E. -#D,20 is delay two seconds.
f
Limit debugging and/or tracing, and profiling to the list of named functions. Note that a null list will disable all functions. The appropriate "d" or "t" flags must still be given, this flag only limits their actions if they are enabled.
F
Identify the source file name for each line of debug or trace output.
i
Identify the process with the pid for each line of debug or trace output.
g
Enable profiling. Create a file called 'dbugmon.out' containing information that can be used to profile the program. May be followed by a list of keywords that select profiling only for the functions in that list. A null list implies that all functions are considered.
enum enum_mysql_timestamp_type is used in the MYSQL_TIME structure and indicates the type. It has the following constants:
MYSQL_TIMESTAMP_NONE
MYSQL_TIMESTAMP_ERROR
MYSQL_TIMESTAMP_DATE
MYSQL_TIMESTAMP_DATETIME
MYSQL_TIMESTAMP_TIME
enum mysql_set_option
enum mysql_set_option is used as a parameter in mysql_set_server_option() and has the following constants:
MYSQL_OPTIONS_MULTI_STATEMENTS_ON
MYSQL_OPTIONS_MULTI_STATEMENTS_OFF
enum enum_field_types
enum field_types describes the different field types used by MariaDB and has the following constants:
MYSQL_TYPE_DECIMAL
MYSQL_TYPE_TINY
MYSQL_TYPE_SHORT
MYSQL_TYPE_LONG
MYSQL_TYPE_FLOAT
MYSQL_TYPE_DOUBLE
MYSQL_TYPE_NULL
MYSQL_TYPE_TIMESTAMP
MYSQL_TYPE_LONGLONG
MYSQL_TYPE_INT24
MYSQL_TYPE_DATE
MYSQL_TYPE_TIME
MYSQL_TYPE_DATETIME
MYSQL_TYPE_YEAR
MYSQL_TYPE_NEWDATE
MYSQL_TYPE_VARCHAR
MYSQL_TYPE_BIT
MYSQL_TYPE_TIMESTAMP2
MYSQL_TYPE_DATETIME2
MYSQL_TYPE_TIME2
MYSQL_TYPE_JSON
MYSQL_TYPE_NEWDECIMAL
MYSQL_TYPE_ENUM
MYSQL_TYPE_SET
MYSQL_TYPE_TINY_BLOB
MYSQL_TYPE_MEDIUM_BLOB
MYSQL_TYPE_LONG_BLOB
MYSQL_TYPE_BLOB
MYSQL_TYPE_VAR_STRING
MYSQL_TYPE_STRING
MYSQL_TYPE_GEOMETRY
enum mysql_enum_shutdown_level
enum mysql_enum_shutdown_level is used as a parameter in mysql_server_shutdown() and has the following constants:
SHUTDOWN_DEFAULT
KILL_QUERY
KILL_CONNECTION
enum enum_stmt_attr_type
enum_stmt_attr_type is used to set different statement options. For a detailed description please check mysql_stmt_attr_set() function.
enum enum_cursor_type
enum_cursor_type specifies the cursor type and is used in mysql_stmt_attr_set() function. Currently the following constants are supported:
CURSOR_TYPE_READ_ONLY
CURSOR_TYPE_NO_CURSOR
enum enum_indicator_type
enum_indicator_type describes the type of indicator used for prepared statements bulk operations.
STMT_INDICATOR_NTS
String is zero terminated
STMT_INDICATOR_NONE
No indicator in use
STMT_INDICATOR_NULL
Value is NULL
STMT_INDICATOR_DEFAULT
Use default value
STMT_INDICATOR_IGNORE
Ignore the specified value
STMT_INDICATOR_IGNORE_ROW
Skip the current row
Definitions
Field Flags
The following field flags are used in MYSQL_FIELD structure.
Flag
Value
Description
NOT_NULL_FLAG
1
Field can't be NULL
PRI_KEY_FLAG
2
Field is part of primary key
UNIQUE_KEY_FLAG
4
Field is part of unique key
MULTIPLE_KEY_FLAG
8
Field is part of a key
Server Status
The server_status can be obtained by the mariadb_get_infov() function using the MARIADB_CONNECTION_SERVER_STATUS option.
SERVER_STATUS_IN_TRANS
1
A transaction is currently active
SERVER_STATUS_AUTOCOMMIT
2
Autocommit mode is set
SERVER_MORE_RESULTS_EXISTS
8
more results exists (more packet follow)
SERVER_QUERY_NO_GOOD_INDEX_USED
16
SERVER_QUERY_NO_INDEX_USED
32
Macros
IS_PRI_KEY(flag)
True if the field is part of a primary key
IS_NOT_NULL(flags)
True if the field is defined as not NULL
IS_BLOB(flags)
True if the field is a text or blob field
IS_NUM(column_type)
True if the column type is numeric
IS_LONGDATA(column_type)
True if the column is a blob or text field
Do not build Connector/C from the root of the source tree: Either create a subdirectory "build" inside the source tree or create a subdirectory outside of the source tree.
Example:
Reconfiguration
In case Connector/C was already configured, the CMakeCache.txt file needs to be removed first. In several cases, e.g. when cross compiling CMakeFiles subfolders need to be removed too.
Generator options
If you want to use a different generator, e.g. for nmake on Windows, you need to specify the generator with the -G option. cmake --help lists the available generators for the used platform.
CMake-related configuration settings
CMAKE_BUILD_TYPE
Build type: Release, RelWithDebInfo or Debug
CMAKE_INSTALL_PREFIX
Installation base directory
CMAKE_C_FLAGS
Flags for C-Compiler
TLS/SSL options
Option
Default
Description
WITH_OPENSSL
ON
Possible values are ON or OFF. Not supported anymore since Connector/C 3.0
WITH_SSL
SCHANNEL (windows), otherwise OPENSSL
Specifies type of TLS/SSL library. E.g. GNUTLS, OPENSSL or SCHANNEL (Windows only). OFF disables TLS/SSL functionality
Client plugins
Client plugins can be configured as dynamic plugins (DYNAMIC) or built-in plugins (STATIC) by specifying the plugin name followed by suffix _PLUGIN_TYPE as key, and "DYNAMIC" or "STATIC" as value.
E.g. for building dialog plugin as a built-in plugin, for versions < Connector/C 3.0.4
Beginning with C/C 3.0.4
Connector/C 3.0 supports the following plugins:
Plugin
Type
Default
Description
SOCKET
IO
static
plugin for client server communication via socket
SHMEM
IO
static
plugin for client server communication via shared memory
NPIPE
IO
static
plugin for client server communication via named pipe
value - the type of value you want to retrieve. See description below.
arg - pointer to a variable for storing value of the specified option.
... - variable argument list
Description
Retrieves generic or connection specific information. Returns zero on success, non-zero if an error occurred (invalid option), This function was added in MariaDB Connector/C 3.0,
Value types
Generic information
For these information types of parameters mysql needs to be set to NULL.
MARIADB_CHARSET_NAME: Retrieves the charset information for a character set by its literal representation.Parameter type: const MARIADB_CHARSET_INFO*.
MARIADB_CLIENT_ERRORS: Retrieve array of client errors. This can be used in plugins to set global error messages (which are not exported by MariaDB Connector/C).Parameter type: const char **.
MARIADB_CLIENT_VERSION: The client version in literal representation.Parameter type: const char *.
MARIADB_CLIENT_VERSION_ID: The client version in numeric format.Parameter type: unsigned int.
MARIADB_MAX_ALLOWED_PACKET: Retrieves value of maximum allowed packet size.Parameter type: size_t
MARIADB_NET_BUFFER_LENGTH: Retrieves the length of net buffer.Parameter type: size_t
MARIADB_TLS_LIBRARY: The TLS library MariaDB Connector/C is compiled against.Parameter type: const char *.
Connection related information
MARIADB_CONNECTION_ASYNC_TIMEOUT: Retrieves the timeout for non-blocking calls in seconds.Parameter type: unsigned int.
MARIADB_CONNECTION_ASYNC_TIMEOUT_MS: Retrieves the timeout for non-blocking calls in milliseconds.Parameter type: unsigned int.
MARIADB_CONNECTION_MARIADB_CHARSET_INFO: Retrieves character set information for given connection. Parameter type: const MY_CHARSET_INFO *.
MARIADB_CONNECTION_CLIENT_CAPABILITIES: Returns the capability flags of the client.Parameter type: unsigned long.
MARIADB_CONNECTION_ERROR: Retrieves error message for last used command. Parameter type: const char *.
MARIADB_CONNECTION_ERROR_ID: Retrieves error number for last used command. Parameter type: unsigned int.
MARIADB_CONNECTION_EXTENDED_SERVER_CAPABILITIES: Returns the extended of the connected MariaDB server.Parameter type: unsigned long.
MARIADB_CONNECTION_INFO: Retrieves generic info for last used command.Parameter type: const char *.
MARIADB_CONNECTION_PORT: Retrieves the port number of server host.Parameter type: unsigned int.
MARIADB_CONNECTION_PROTOCOL_VERSION_ID: Retrieves the protocol version number.Parameter type: unsigned int.
MARIADB_CONNECTION_PVIO_TYPE: Retrives the pvio plugin used for specified connection.Parameter type: unsigned int.
MARIADB_CONNECTION_SCHEMA: Retrieves the current schema.Parameter type: const char*.
MARIADB_CONNECTION_SERVER_CAPABILITIES: Returns the of the connected server.Parameter type: unsigned long.
MARIADB_CONNECTION_SERVER_STATUS: Returns server status after last operation. A list of possible flags can be found in the description OK packet.Parameter type: unsigned int.
MARIADB_CONNECTION_SERVER_TYPE: Retrieves the type of the server.Parameter type: const char*.
MARIADB_CONNECTION_SERVER_VERSION: Retrieves the server version in literal format.Parameter type: const char *.
MARIADB_CONNECTION_SERVER_VERSION_ID: Retrieves the server version in numeric format.Parameter type: unsigned int.
MARIADB_CONNECTION_SOCKET: Retrieves the handle (socket) for given connection.Parameter type: my_socket.
MARIADB_CONNECTION_SQLSTATE: Retrieves current sqlstate information for last used command. Parameter type: const char *.
MARIADB_CONNECTION_SSL_CIPHER: Retrieves the TLS cipher in use.Parameter type: const char *.
MARIADB_CONNECTION_TLS_VERSION: Retrieves the TLS protocol version used in literal format.Parameter type: char *.
MARIADB_CONNECTION_TLS_VERSION_ID: Retrieves the TLS protocol version used in numeric format.Parameter type: unsigned int.
MARIADB_CONNECTION_UNIX_SOCKET: Retrieves the file name of the unix socketParameter type: const char *.
MARIADB_CONNECTION_USER: Retrieves connection's user name.Parameter type: const char *.
Prepares and executes a statement which was previously allocated by mysql_stmt_init(), using the current values of the parameter variables if any parameters exist in the statement.
Returns zero on success, non-zero on failure.
This function was added in Connector/C 3.0 and requires or later versions.
Since the number of parameter of the statement is unknown before execution it is mandatory to set the number of parameters via the mysql_stmt_attr_set() function.
If the SQL statement is a zero-terminated string, you can also pass -1 as length.
The statement handle is intended for one-time execution. Reusing the statement handle might lead to unexpected behavior.
Returns the number of warnings from the last executed query, or zero if there are no warnings.
For retrieving warning messages you should use the SQL command SHOW WARNINGS. If TRADITIONAL is enabled an error instead of warning will be returned. For detailed information check the server documentation.
mysql_option - the option you want to retrieve. See description below.
arg - pointer to a variable for storing value of the specified option.
... - variable argument list
Description
Retrieves the value for a given option which was previously set by .
Returns zero on success, non zero if an error occurred (invalid option).
This function was added in MariaDB Connector/C 3.0.0.
Options
Boolean values (my_bool)
MYSQL_OPT_COMPRESS
MYSQL_OPT_NAMED_PIPE
MYSQL_OPT_RECONNECT
MYSQL_REPORT_DATA_TRUNCATION
Integer values
MYSQL_OPT_CONNECT_TIMEOUT
MYSQL_OPT_READ_TIMEOUT
MYSQL_OPT_WRITE_TIMEOUT
MYSQL_OPT_LOCAL_INFILE
Character arrays
MYSQL_INIT_COMMAND
Character values
MYSQL_READ_DEFAULT_FILE
MYSQL_READ_DEFAULT_GROUP
MYSQL_SET_CHARSET_NAME
MYSQL_PLUGIN_DIR
Misc
MYSQL_PROGRESS_CALLBACK: requires a function pointer *(const MYSQL *, uint, uint, double, const char *, uint))arg)
MYSQL_CONNECT_ATTRS: this option requires 5 parameters:
MARIADB_OPT_USERDATA: retrieves userdata for a given key.
See also
mysql_stmt_attr_set
Syntax
stmt - a statement handle, which was previously allocated by mysql_stmt_init().
enum_stmt_attr_type - the attribute that you want to set. See below.
attr - the value to assign to the attribute
Description
Used to modify the behavior of a prepared statement. This function may be called multiple times to set several attributes. Returns zero on success, non-zero on failure.
Attribute types
The enum_stmt_attr_type attribute can have one of the following values:
STMT_ATTR_UPDATE_MAX_LENGTH If set to 1, will update the max_length value of MYSQL_FIELD structures.
STMT_ATTR_CURSOR_TYPE: cursor type when is invoked. Possible values are CURSOR_TYPE_READ_ONLY or default value CURSOR_TYPE_NO_CURSOR.
STMT_ATTR_PREFETCH_ROWS: number of rows which will be prefetched. The default value is 1.
STMT_ATTR_PREBIND_PARAMS: number of parameter markers when using . If the statement handle is reused it will be reset automatically to the state after mysql_stmt_init(). This option was added in Connector/C 3.0
STMT_ATTR_ARRAY_SIZE: number of array elements. This option was added in Connector/C 3.0 and requires or later
STMT_ATTR_ROW_SIZE: specifies size of a structure for row wise binding. This length must include space for all of the bound parameters and any padding of the structure or buffer to ensure that when the address of a bound parameter is incremented with the specified length, the result will point to the beginning of the same parameter in the next set of parameters. When using the sizeof operator in ANSI C, this behavior is guaranteed.
If the value is zero column-wise binding will be used (default).
This option was added in Connector/C 3.0 and requires or later
If you use the MYSQL_STMT_ATTR_CURSOR_TYPE option with MYSQL_CURSOR_TYPE_READ_ONLY, a cursor is opened for the statement when you invoke . If there is already an open cursor from a previous call, it closes the cursor before opening a new one. also closes any open cursor before preparing the statement for re-execution.
See Also
mysql_set_character_set
Syntax
mysql - a mysql handle, which was previously allocated by or .
Sets the default for the current connection. Returns zero on success, non-zero on failure.
It's strongly recommended to use mysql_set_character_set() instead of SET NAMES ... since mysql_real_escape_string() might fail or deliver unexpected results.
The client library supports the following character sets:
Character set
Description
armscii8
8-bit character set for Armenian
ascii
US ASCII character set
big5
2-byte character set for traditional Chinese, Hongkong, Macau and Taiwan
int mysql_set_character_set(MYSQL * mysql,
const char * csname);
cp1256
Windows code page 1256-character set
cp1257
Windows code page 1257-character set
cp850
MS-DOS Codepage 850 (Western Europe)
cp852
MS-DOS Codepage 852 (Middle Europe)
cp866
MS-DOS Codepage 866 (Russian)
cp932
Microsoft Codepage 932 (Extension to sjis)
dec8
DEC West European
eucjpms
UJIS for Windows Japanese
euckr
EUC KR-Korean
gb2312
GB-2312 simplified Chinese
gbk
GBK simplified Chinese
geostd8
GEOSTD8 Georgian
greek
ISO 8859-7 Greek
hebrew
ISO 8859-8 Hebrew
hp8
HP West European
keybcs2
DOS Kamenicky Czech-Slovak
koi8r
KOI8-R Relcom Russian
koi8u
KOI8-U Ukrainian
latin1
CP1252 Western European
latin2
ISO 8859-2 Central Europe
latin5
ISO 8859-9 Turkish
latin7
ISO 8859-13 Baltic
macce
MAC Central European
macroman
MAC Western European
sjis
SJIS for Windows Japanese
swe7
7-bit Swedish
tis620
TIS620 Thai
ucs2
UCS-2 Unicode
ujis
EUC-JP Japanese
utf8
UTF-8 Unicode
utf16
UTF-16 Unicode
utf32
UTF-32 Unicode
utf8mb4
UTF 4-byte Unicode
MariaDB Connector/C Data Structures
This page describes the public data structures used by MariaDB Connector/C.
MYSQL
The MYSQL structure represents one database connection and is used by most of MariaDB Connector/C's API functions. The MYSQL structure needs to be allocated and initialized by the mysql_init() API function. It will be released by the mysql_close() function.
The MYSQL structure should be considered as opaque; copying or changing values of its members might produce unexpected results, errors or program crashes.
MYSQL_RES
The MYSQL_RES structure represents a result set which contains data and metadata information. It will be returned by the , and API functions and needs to be released by .
The MYSQL_RES structure should be considered as opaque; copying or changing values of its members might produce unexpected results, errors or program crashes.
MYSQL_ROW
MYSQL_ROW represents an array of character pointers, pointing to the columns of the actual data row.
Data will be received by the function. The size of the array is the number of columns for the current row.
After freeing the result set with MYSQL_ROW becomes invalid.
MYSQL_STMT
The MYSQL_STMT structure represents a prepared statement handle and is used by MariaDB Connector/C's prepared statement API functions. The MYSQL_STMT structure needs to be allocated and initialized by the function and needs to be released by the function.
The MYSQL_STMT structure should be considered as opaque; copying or changing values of its members might produce unexpected results, errors or program crashes.
MYSQL_FIELD
The MYSQL_FIELD structure describes the metadata of a column. It can be obtained by the function.
It has the following members:
MYSQL_BIND
The MYSQL_BIND structure is used to provide parameters for prepared statements or to receive output column value from prepared statements.
MYSQL_TIME
The MYSQL_TIME structure is used for date and time values in prepared statements. It has the following members:
table_length
The length of table name
char *
org_table
The original name of the table
unsigned int
org_table_length
The length of original table name
char *
db
The name of the database (schema)
unsigned int
db_length
The length of database name
char *
catalog
The catalog name (always 'def')
unsigned int
catalog_length
The length of catalog name
char *
def
default value
unsigned int
def_length
The length of default value
unsigned int
length
The length (width) of the column definition
unsigned int
max_length
The maximum length of the column value
unsigned int
flags
Flags
unsigned int
decimals
Number of decimals
enum enum_field_types
type
Field type
buffer_length
Length of buffer
enum enum_field_types
buffer_type
unsigned long
length_value
Used if length pointer is NULL
my_bool
error_value
Used if error pointer is NULL
my_bool
is_null_value
Used if is_null pointer is NULL
my_bool
is_unsigned
Set if integer type is unsigned
my_bool
is_null_value
Used if value is NULL
second
Second
unsigned long
second_part
Fractional seconds (max. 6 digits)
my_bool
neg
Negative value
enum enum_mysql_timestamp_type
time_type
Type
char *
name
The name of the column
unsigned int
name_length
The length of column name
char *
org_name
The original name of the column
unsigned int
org_name_length
The length of original column name
char *
table
The name of the table
unsigned long *
length
Pointer for the length of the buffer (not used for parameters). The length is ignored for numeric and fixed size data types, as the buffer_type value determines the size of the data.
my_bool *
is_nulll
Pointer which indicates if column is NULL (not used for parameters)
my_bool *
error
Pointer which indicates if an error occured
void *
buffer
Data buffer which contains or receives data
char *
u.indicator
Array of indicator variables for bulk operation parameter
Just like MariaDB Server and libmysqlclient, MariaDB Connector/C can also read configuration options from client in .
Default Option File Locations
MariaDB Connector/C reads option files from many different directories by default. See the sections below to find out which directories are checked for which system.
MariaDB Connector/C allows application developers to read options from the default option files by calling the mysql_optionsv function and providing the MYSQL_READ_DEFAULT_FILE option name and a NULL pointer as arguments. For example:
Default Option File Locations on Linux, Unix, Mac
On Linux, Unix, or Mac OS X, the default option file is called my.cnf. MariaDB Connector/C looks for the MariaDB option file in the locations and orders listed below.
The locations are dependent on whether the DEFAULT_SYSCONFDIR option was defined when MariaDB Connector/C was built. This option is usually defined as /etc when building , but it is usually not defined when building or .
When the DEFAULT_SYSCONFDIR option was not defined, MariaDB Connector/C looks for the MariaDB option file in the following locations in the following order:
Location
When the DEFAULT_SYSCONFDIR option was defined, MariaDB Connector/C looks for the MariaDB option file in the following locations in the following order:
Location
Default Option File Locations on Windows
On Windows, the default option file can be called either my.ini or my.cnf. MariaDB Connector/C looks for the MariaDB option file in the following locations in the following order:
Location
The System Windows Directory is the directory returned by the function. The value is usually C:\Windows. To find its specific value on your system, open and execute:
The Windows Directory is the directory returned by the function. The value may be a private Windows Directory for the application, or it may be the same as the System Windows Directory returned by the function.
EXEDIR is the parent directory of the executable program that MariaDB Connector/C is linked with.
Default Option File Hierarchy
MariaDB Connector/C will look in all of the above locations, in order, even if has already found an option file, and it's possible for more than one option file to exist. For example, you could have an option file in /etc/my.cnf with global settings for all servers, and then you could another option file in ~/.my.cnf (i.e.your user account's home directory) which will specify additional settings (or override previously specified setting) that are specific only to that user.
Custom Option File Locations
MariaDB Connector/C allows application developers to read option files from a custom option file by calling the function and providing the option name and an option file path as arguments. For example:
Many MariaDB clients can be configured to read options from custom options files with the following command-line arguments. They must be given as the first argument on the command-line. Application developers who use MariaDB Connector/C in their application and rely on option files may also want to consider implementing these command-line arguments:
Option
Description
The command-line option is roughly equivalent to setting the option with a non-NULL argument.
The command-line option does not yet have an equivalent option in MariaDB Connector/C. See for more information.
Option File Syntax
The syntax of the MariaDB option files are:
Lines starting with
are comments.
Empty lines are ignored.
Option groups use the syntax [group-name]. See the section below for more information on available option groups.
The same option group can appear multiple times.
Option Groups
MariaDB Connector/C reads client options from the following in :
Group
Description
MariaDB Connector/C allows application developers to read options from these option groups by calling the function and providing the option name and a NULL pointer as arguments.
For example:
Custom Option Groups
MariaDB Connector/C allows application developers to read options from a custom option group by calling the function and providing the option name and the name of the custom option group as arguments.
For example:
The custom option group will be read in addition to the default option groups listed above.
Many MariaDB clients can be configured to read options from option groups with a custom suffix by providing the following command-line argument. It must be given as the first argument on the command-line. Application developers who use MariaDB Connector/C in their application and rely on option files may also want to consider implementing this command-line argument:
Option
Description
The command-line option does not yet have an equivalent option in MariaDB Connector/C. See for more information.
Including Option Files
It is possible to include additional option files from another option file. For example, to include /etc/mysql/dbserver1.cnf, an option file could contain:
Including Option File Directories
It is also possible to include the default option files in a directory from another option file. For example, to include the default option files in /etc/my.cnf.d/, an option file could contain:
Unlike with MariaDB server, this directive does not configure MariaDB Connector/C to include all option files ending in .cnf on Unix-like operating systems or all option files ending in .cnf and .ini files on Windows. Instead, it just configures MariaDB Connector/C to include the my.cnf in the given directory, and also the my.ini in the given directory if it's Windows. See for more information.
Checking Program Options
For many MariaDB clients, you can check which options a given program is going to use by using the command-line argument:
Option
Description
It must be given as the first argument on the command-line. Application developers who use MariaDB Connector/C in their application and rely on option files may also want to consider implementing this command-line argument. For example:
If it is installed on your system, then you can also check which options a given program is going to use by using the utility and providing the names of the option groups that the program reads.
For example:
See for more information.
MySQL 5.6 Obfuscated Authentication Credential Option File
MySQL 5.6 and above support an obfuscated authentication credential option file called .mylogin.cnf that is created with .
MariaDB Connector/C does not support this. The passwords in MySQL's .mylogin.cnf are only obfuscated, rather than encrypted, so the feature does not really add much from a security perspective. It is more likely to give users a false sense of security, rather than to seriously protect them.
Options
MariaDB Connector/C options can be set in client .
Unlike with the server, dashes (-) and underscores (_) in options are not interchangeable for MariaDB Connector/C. Options must be specified exactly as they are defined. See for more information.
Unlike with the server, the loose prefix has no meaning for MariaDB Connector/C. Unknown options will simply be ignored.
Custom Options
MariaDB Connector/C allows application developers to implement custom options in option files by defining a function that matches this signature:
And then assigning the function pointer to mysql->options.extension->set_option.
Default Options
These are the options supported in option files by MariaDB Connector/C by default.
These options can also be set inside your application with the function.
bind-address
Description: Specify the network interface from which to connect to MariaDB Server.
mysql_optionsv: MYSQL_OPT_BIND
Data Type: string
character-sets-dir
Description: Directory for files.
mysql_optionsv: MYSQL_SET_CHARSET_DIR
Data Type: string
compress
Description: Compress all information sent between the client and the server if both support compression.
mysql_optionsv: MYSQL_OPT_COMPRESS
Data Type: boolean
connect-timeout, timeout
Description: Connect timeout in seconds. This value will be passed as an unsigned int parameter.
mysql_optionsv: MYSQL_OPT_CONNECT_TIMEOUT
Data Type: int
database
Description: Database to use.
mysql_optionsv: MARIADB_OPT_SCHEMA
Data Type: string
debug
Description:
mysql_optionsv: MARIADB_OPT_DEBUG
Data Type: string
default-auth
Description: Default authentication client-side plugin to use.
mysql_optionsv: MYSQL_DEFAULT_AUTH
Data Type: string
default-character-set
Description: Specify the default for the connection.
mysql_optionsv: MYSQL_SET_CHARSET_NAME
Data Type: string
disable-local-infile
Description: Disable the use of .
mysql_optionsv: N/A
Data Type: string
host
Description: Hostname or IP address of the server to connect to.
mysql_optionsv: MARIADB_OPT_HOST
Data Type: string
interactive-timeout
Description:
mysql_optionsv: MARIADB_OPT_INTERACTIVE
Data Type: none
init-command
Description: Command(s) which will be executed when connecting and reconnecting to the server.
mysql_optionsv: MYSQL_INIT_COMMAND
Data Type: string
local-infile
Description: Enable or disable the use of .
mysql_optionsv: MYSQL_OPT_LOCAL_INFILE
Data Type: boolean
max-allowed-packet
Description: The maximum packet length to send to or receive from server. The default is 16MB, the maximum 1GB.
mysql_optionsv: MYSQL_OPT_MAX_ALLOWED_PACKET
Data Type: size_t
multi-results
Description: Indicates that the client is able to handle multiple result sets from stored procedures or multi statements. This option will be automatically set if multi-statements is set.
mysql_optionsv: MARIADB_OPT_MULTI_RESULTS
Data Type: none
multi-statements, multi-queries
Description: Allows the client to send multiple statements in one command. Statements will be divided by a semicolon.
mysql_optionsv: MARIADB_OPT_MULTI_STATEMENTS
Data Type: string
net-buffer-length
Description: The buffer size for TCP/IP and socket communication. Default is 16KB.
mysql_optionsv: MYSQL_OPT_NET_BUFFER_LENGTH
Data Type: size_t
password
Description: Password of the user to login to the server.
mysql_optionsv: MARIADB_OPT_PASSWORD
Data Type: string
pipe
Description: For Windows operating systems only: Use named pipes for client/server communication.
mysql_optionsv: MYSQL_OPT_NAMED_PIPE
Data Type: boolean
plugin-dir
Description: Specify the location of client plugins.
The plugin directory can also be specified with the MARIADB_PLUGIN_DIR environment variable.
mysql_optionsv: MYSQL_PLUGIN_DIR
port
Description: Port number to use for connection.
mysql_optionsv: MARIADB_OPT_PORT
Data Type: int
protocol
Description: Specify the type of client/server protocol. Possible values are:
0 - Refers to MYSQL_PROTOCOL_DEFAULT
1
reconnect
Description: Enable or disable automatic reconnect.
mysql_optionsv: MYSQL_OPT_RECONNECT
Data Type: boolean
report-data-truncation
Description: Enable or disable reporting data truncation errors for prepared statements.
mysql_optionsv: MYSQL_REPORT_DATA_TRUNCATION
Data Type: boolean
return-found-rows
Description: Return the number of matched rows instead of number of changed rows.
mysql_optionsv: MARIADB_OPT_FOUND_ROWS
Data Type: none
secure-auth
Description: Refuse client connecting to server if it uses old (pre-MySQL4.1.1) protocol. Defaults to false (unlike MySQL since 5,6, which defaults to true).
mysql_optionsv: MYSQL_SECURE_AUTH
Data Type: boolean
server_public_key
Description: Specifies the name of the file which contains the RSA public key of the database server. The format of this file must be in PEM format. This option is used by the client authentication plugin.
mysql_optionsv: MYSQL_SERVER_PUBLIC_KEY
Data Type: string
shared-memory-base-name
Description: Shared-memory name to use for Windows connections using shared memory to a local server (started with the --shared-memory option). Case-sensitive.
mysql_optionsv: MYSQL_SHARED_MEMORY_BASE_NAME
Data Type: string
socket
Description: For connections to localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
mysql_optionsv: MARIADB_OPT_UNIXSOCKET
Data Type: string
ssl-ca
Description: Defines a path to a PEM file that should contain one or more X509 certificates for trusted Certificate Authorities (CAs) to use for . This option requires that you use the absolute path, not a relative path.
See for more information.
mysql_optionsv: MYSQL_OPT_SSL_CA
ssl-capath
Description: Defines a path to a directory that contains one or more PEM files that should each contain one X509 certificate for a trusted Certificate Authority (CA) to use for . This option requires that you use the absolute path, not a relative path. The directory specified by this option needs to be run through the command.
See for more information.
This option is only supported if the connector was built with OpenSSL. If the connector was built with GnuTLS or Schannel, then this option is not supported. See for more information about which libraries are used on which platforms.
ssl-cert
Description: Defines a path to the X509 certificate file to use for . This option requires that you use the absolute path, not a relative path.
mysql_optionsv: MYSQL_OPT_SSL_CERT
Data Type: string
ssl-cipher
Description: List of permitted ciphers or cipher suites to use for .
mysql_optionsv: MYSQL_OPT_SSL_CIPHER
Data Type: string
ssl-crl
Description: Defines a path to a PEM file that should contain one or more revoked X509 certificates to use for . This option requires that you use the absolute path, not a relative path.
See for more information.
This option is only supported if the connector was built with OpenSSL or Schannel. If the connector was built with GnuTLS, then this option is not supported. See for more information about which libraries are used on which platforms.
ssl-crlpath
Description: Defines a path to a directory that contains one or more PEM files that should each contain one revoked X509 certificate to use for . This option requires that you use the absolute path, not a relative path. The directory specified by this option needs to be run through the command.
See for more information.
This option is only supported if the connector was built with OpenSSL. If the connector was built with GnuTLS or Schannel, then this option is not supported. See for more information about which libraries are used on which platforms.
ssl-enforce
Description: Whether to force .
mysql_optionsv: MYSQL_OPT_SSL_ENFORCE
Data Type: boolean
ssl-fp
Description: Specify the SHA1 fingerprint of a server certificate for validation during the handshake.
mysql_optionsv: MARIADB_OPT_SSL_FP
Data Type: string
ssl-fp-list, ssl-fplist
Description: Specify a file which contains one or more SHA1 fingerprints of server certificates for validation during the handshake.
mysql_optionsv: MARIADB_OPT_SSL_FP_LIST
Data Type: string
ssl-key
Description: Defines a path to a private key file to use for . This option requires that you use the absolute path, not a relative path. If the key is protected with a passphrase, the passphrase needs to be specified with ssl-passphrase option.
mysql_optionsv: MYSQL_OPT_SSL_KEY
Data Type: string
ssl-passphrase
Description: Specify a passphrase for a passphrase-protected private key, as configured by the option.
This option is only supported if the connector was built with OpenSSL or GnuTLS. If the connector was built with Schannel, then this option is not supported. See for more information about which libraries are used on which platforms.
mysql_optionsv: MARIADB_OPT_TLS_PASSPHRASE
ssl-verify-server-cert
Description: Enables (or disables) .
mysql_optionsv: MYSQL_OPT_SSL_VERIFY_SERVER_CERT
Data Type: boolean
tls_version
Description: Defines which protocol versions are allowed. This should be a comma-separated list of TLS protocol versions to allow. Valid TLS protocol versions are TLSv1.0, TLSv1.1, TLSv1.2, and TLSv1.3. Both the client and server should support the allowed TLS protocol versions. See for information on which TLS libraries support which TLS protocol versions. See for more information about which TLS libraries are used on which platforms.
mysql_optionsv: MARIADB_OPT_TLS_VERSION
user
Description: User to login to the server.
mysql_optionsv: MARIADB_OPT_USER
Data Type: string
See Also
MYSQL_HOME is the containing the path to the directory holding the server-specific my.cnf file.
The !include directive can be used to include other option files. See the Including Option Files section below for more information on this syntax.
Unlike with the server, the !includedir directive does not include all .cnf files (and potentially .ini files) in a given directory. Instead, it reads the my.cnf and (potentially the my.ini) in the given directory. See CONC-396 for more information. See the Including Option File Directories section below for more information on this syntax.
Dashes (-) and underscores (_) in options are interchangeable in MariaDB Connector C 3.1.1 and later. In versions before that, options must be specified exactly as they are defined. See CONC-395 for more information.
MariaDB Connector/C does not support the that are supported by MariaDB Server. See CONC-415 for more information.
See the Options section below for information about available options.
Default Value:
Introduced: MariaDB Connector/C 3.0.0
Default Value:
Default Value: false
Default Value:
Default Value:
Default Value:
Default Value:
Default Value:
Default Value:
Default Value:
Default Value:
Default Value:
Default Value: false
Default Value:
Default Value:
Default Value:
Default Value:
Introduced: MariaDB Connector/C 3.0.0
Default Value:
Default Value: false
Data Type: string
Default Value:
Default Value: 3306
- Refers to
MYSQL_PROTOCOL_TCP
2 - Refers to MYSQL_PROTOCOL_SOCKET
3 - Refers to MYSQL_PROTOCOL_PIPE
4 - Refers to MYSQL_PROTOCOL_MEMORY
mysql_optionsv: MYSQL_OPT_PROTOCOL
Data Type: int
Default Value:
Default Value: false
Introduced: MariaDB Connector/C 3.0.0
Default Value:
Default Value:
Default Value: false
Default Value:
Introduced: MariaDB Connector/C 3.1.0
Default Value:
Default Value:
Data Type: string
Default Value:
mysql_optionsv: MYSQL_OPT_SSL_CAPATH
Data Type: string
Default Value:
Default Value:
Default Value:
mysql_optionsv: MYSQL_OPT_SSL_CRL
Data Type: string
Default Value:
Introduced: MariaDB Connector/C 3.1.1
mysql_optionsv: MYSQL_OPT_SSL_CRLPATH
Data Type: string
Default Value:
Introduced: MariaDB Connector/C 3.1.1
Default Value:
Introduced: MariaDB Connector/C 3.1.1
Default Value:
Introduced: MariaDB Connector/C 3.0.0
Default Value:
Introduced: MariaDB Connector/C 3.0.0
Default Value:
Data Type: string
Default Value:
Introduced: MariaDB Connector/C 3.0.0
Default Value:
Introduced: MariaDB Connector/C 3.0.0
Data Type: string
Default Value:
Introduced: MariaDB Connector/C 3.0.4
Default Value:
/etc/my.cnf
/etc/mysql/my.cnf
$MYSQL_HOME/my.cnf
~/.my.cnf
DEFAULT_SYSCONFDIR/my.cnf
$MYSQL_HOME/my.cnf
~/.my.cnf
System Windows Directory\my.ini
System Windows Directory\my.cnf
Windows Directory\my.ini
Windows Directory\my.cnf
C:\my.ini
C:\my.cnf
EXEDIR\my.ini
EXEDIR\my.cnf
%MYSQL_HOME%\my.ini
%MYSQL_HOME%\my.cnf
=path
Only read options from the given option file.
=path
Read this extra option file after all other option files are read.
[client]
Options read by all MariaDB and MySQL client programs, which includes both MariaDB and MySQL clients. For example, mysqldump.
[client-server]
Options read by all MariaDB client programs and the MariaDB Server. This is useful for options like socket and port, which is common between the server and the clients.
[client-mariadb]
Options read by all MariaDB client programs.
=suffix
In addition to the default option groups, also read option groups with the given suffix.
Read options from option files, print all option values, and then exit the program.
mysql_option - the option to set. See description below.
arg - the value for the option.
... - variable argument list.
Description
Used to set extra connect options and affect behavior for a connection. This function may be called multiple times to set several options. All calls pass numeric literal values for a const void *. mysql_optionsv() should be called after .
Some of these options can also be set in , such as my.cnf.
Returns
Returns zero on success, non-zero if an error occurred (invalid option or value).
Options
MYSQL_INIT_COMMAND: lets you specify a command to execute immediately after connecting (and also after a reconnect if enabled).
Each call adds one SQL statement to an internal list; all stored commands are executed in order.
You cannot concatenate multiple statements with semicolons; each statement must be added with a separate call.
Connection Options
Some of these options can also be set as arguments to the function.
MARIADB_OPT_HOST: Hostname or IP address of the server to connect to.
MARIADB_OPT_USER: User to login to the server.
MARIADB_OPT_PASSWORD: Password of the user to login to the server.
TLS Options
MYSQL_OPT_SSL_KEY: Defines a path to a private key file to use for . This option requires that you use the absolute path, not a relative path. If the key is protected with a passphrase, the passphrase needs to be specified with MARIADB_OPT_TLS_PASSPHRASE option.
MYSQL_OPT_SSL_CERT: Defines a path to the X509 certificate file to use for . This option requires that you use the absolute path, not a relative path.
Plugin Options
MYSQL_DEFAULT_AUTH: Default authentication client-side plugin to use.
MYSQL_ENABLE_CLEARTEXT_PLUGIN: This option is supported to be compatible with MySQL client libraries. MySQL client libraries use this option to determine whether the authentication plugin can be used. However, MariaDB clients and client libraries do not need to set any options in order to use this authentication plugin. Therefore, this option does not actually do anything in MariaDB Connector/C.
Option File Options
MYSQL_READ_DEFAULT_FILE: Read options from an .
MYSQL_READ_DEFAULT_GROUP: Read options from the named from an .
These options work together, according to the following rules:
if both are set to NULL, then no option files are read.
if MYSQL_READ_DEFAULT_FILE is set to an empty string (or NULL and MYSQL_READ_DEFAULT_GROUP is set) then all are read.
Connection Attribute Options
Connection attributes are stored in the and Performance Schema tables.
By default, MariaDB Connector/C sends the following connection attributes to the server:
_client_name: always "libmariadb"
_client_version: version of MariaDB Connector/C
_os: operation system
If the is disabled, connection attributes will not be stored on server.
MYSQL_OPT_CONNECT_ATTR_DELETE: Deletes a connection attribute for the given key.
MYSQL_OPT_CONNECT_ATTR_ADD: Adds a key/value pair to connection attributes.
MYSQL_OPT_CONNECT_ATTR_RESET: Clears the current list of connection attributes.
mysqldump --print-defaults
mysqldump would have been started with the following arguments:
--ssl_cert=/etc/my.cnf.d/certificates/client-cert.pem --ssl_key=/etc/my.cnf.d/certificates/client-key.pem --ssl_ca=/etc/my.cnf.d/certificates/ca.pem --ssl-verify-server-cert --max_allowed_packet=1GB
MYSQL_OPT_CONNECT_TIMEOUT: Connect timeout in seconds. This value will be passed as an unsigned int parameter.
MARIADB_OPT_VERIFY_LOCAL_INFILE_CALLBACK: Specifies a callback function for filename and/or directory verification.
This option was added in Connector/C 2.3.0
MYSQL_PROGRESS_CALLBACK: Specifies a callback function which will be able to visualize the progress of certain long running statements (i.e. LOAD DATA LOCAL INFILE or ).
MYSQL_OPT_RECONNECT: Enable or disable automatic reconnect.
MYSQL_OPT_READ_TIMEOUT: Specifies the timeout in seconds for reading packets from the server.
MYSQL_OPT_WRITE_TIMEOUT:
Specifies the timeout in seconds for sending packets to the server.
MYSQL_REPORT_DATA_TRUNCATION: Enable or disable reporting data truncation errors for prepared statements.
MYSQL_SET_CHARSET_DIR: files.
MYSQL_SET_CHARSET_NAME: Specify the default for the connection.
MYSQL_OPT_BIND: Specify the network interface from which to connect to MariaDB Server.
MYSQL_OPT_NONBLOCK: Specify stack size for non-blocking operations.
The argument for MYSQL_OPT_NONBLOCK is the size of the stack used to save the state of a non-blocking operation while it is waiting for I/O and the application is doing other processing. Normally, applications will not have to change this, and it can be passed as zero to use the default value.
MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS: If this option is set, the client indicates that it will be able to handle expired passwords by setting the CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS capability flag.
If the password has expired and CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS is set, the server will not return an error when connecting, but put the connection in sandbox mode, where all commands will return error 1820 (ER_MUST_CHANGE_PASSWORD) unless a new password was set. This option was added in MariaDB Connector/C 3.0.4
MYSQL_OPT_MAX_ALLOWED_PACKET: The maximum packet length to send to or receive from server. The default is 16MB, the maximum 1GB.
MYSQL_OPT_NET_BUFFER_LENGTH: The buffer size for TCP/IP and socket communication. Default is 16KB.
MARIADB_OPT_SCHEMA: Database to use.
MARIADB_OPT_PORT: Port number to use for connection.
MARIADB_OPT_UNIXSOCKET: For connections to localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.
MYSQL_OPT_NAMED_PIPE: For Windows operating systems only: Use named pipes for client/server communication.
MYSQL_OPT_PROTOCOL: Specify the type of client/server protocol. Possible values are:
MYSQL_PROTOCOL_TCP
MYSQL_PROTOCOL_SOCKET
MYSQL_PROTOCOL_PIPE
MYSQL_PROTOCOL_MEMORY.
MARIADB_OPT_FOUND_ROWS: Return the number of matched rows instead of number of changed rows.
MYSQL_OPT_COMPRESS: Use the compressed protocol for client server communication. If the server doesn't support compressed protocol, the default protocol will be used.
MARIADB_OPT_MULTI_STATEMENTS: Allows the client to send multiple statements in one command. Statements will be divided by a semicolon.
MARIADB_OPT_MULTI_RESULTS: Indicates that the client is able to handle multiple result sets from stored procedures or multi statements. This option will be automatically set if MARIADB_OPT_MULTI_STATEMENTS is set.
MYSQL_SHARED_MEMORY_BASE_NAME: Shared-memory name to use for Windows connections using shared memory to a local server (started with the --shared-memory option). Case-sensitive.
MYSQL_OPT_SSL_CA: Defines a path to a PEM file that should contain one or more X509 certificates for trusted Certificate Authorities (CAs) to use for . This option requires that you use the absolute path, not a relative path. See for more information.
MYSQL_OPT_SSL_CAPATH: Defines a path to a directory that contains one or more PEM files that should each contain one X509 certificate for a trusted Certificate Authority (CA) to use for . This option requires that you use the absolute path, not a relative path. The directory specified by this option needs to be run through the openssl rehash command. See for more information. This option is only supported if the connector was built with OpenSSL. If the connector was built with GnuTLS or Schannel, then this option is not supported. See for more information about which libraries are used on which platforms.
MYSQL_OPT_SSL_CIPHER: Defines a list of permitted ciphers or cipher suites to use for .
MYSQL_OPT_SSL_CRL: Defines a path to a PEM file that should contain one or more revoked X509 certificates to use for . This option requires that you use the absolute path, not a relative path. See for more information. This option is only supported if the connector was built with OpenSSL or Schannel. If the connector was built with GnuTLS, then this option is not supported. See for more information about which libraries are used on which platforms.
MYSQL_OPT_SSL_CRLPATH: Defines a path to a directory that contains one or more PEM files that should each contain one revoked X509 certificate to use for . This option requires that you use the absolute path, not a relative path. The directory specified by this option needs to be run through the openssl rehash command. See for more information. This option is only supported if the connector was built with OpenSSL. If the connector was built with GnuTLS or Schannel, then this option is not supported. See for more information about which libraries are used on which platforms.
MARIADB_OPT_SSL_FP: Specify the SHA1 fingerprint of a server certificate for validation during the handshake. This is deprecated. Use MARIADB_OPT_TLS_PEER_FP instead.
MARIADB_OPT_TLS_PEER_FP: Specify the SHA1 fingerprint of a server certificate for validation during the handshake.
MARIADB_OPT_SSL_FP_LIST: Specify a file which contains one or more SHA1 fingerprints of server certificates for validation during the handshake. This is deprecated. Use MARIADB_OPT_TLS_PEER_FP_LIST instead.
MARIADB_OPT_TLS_PEER_FP_LIST: Specify a file which contains one or more SHA1 fingerprints of server certificates for validation during the handshake.
MARIADB_OPT_TLS_PASSPHRASE: Specify a passphrase for a passphrase-protected private key, as configured by the MYSQL_OPT_SSL_KEY option. This option is only supported if the connector was built with OpenSSL or GnuTLS. If the connector was built with Schannel, then this option is not supported. See for more information about which libraries are used on which platforms.
MARIADB_OPT_TLS_VERSION: Defines which protocol versions are allowed. This should be a comma-separated list of TLS protocol versions to allow. Valid TLS protocol versions are TLSv1.0, TLSv1.1, TLSv1.2, and TLSv1.3. Both the client and server should support the allowed TLS protocol versions. See for information on which TLS libraries support which TLS protocol versions. See for more information about which TLS libraries are used on which platforms.
MYSQL_OPT_SSL_ENFORCE: Whether to force . This enables TLS with the default system settings. It does not prevent the connection from being created if the server does not support TLS.
MARIADB_OPT_TLS_CIPHER_STRENGTH: Cipher strength. This value will be passed as an unsigned int parameter.
MARIADB_OPT_CONNECTION_HANDLER: Specify the name of a connection handler plugin.
MARIADB_OPT_USERDATA: Bundle user data to the current connection, e.g. for use in connection handler plugins. This option requires 4 parameters: connection, option, key and value.
MARIADB_OPT_CONNECTION_READ_ONLY: This option is used by connection handler plugins and indicates that the current connection will be used for read operations only.
MYSQL_PLUGIN_DIR: Specify the location of client plugins. The plugin directory can also be specified with the MARIADB_PLUGIN_DIR environment variable.
MYSQL_SECURE_AUTH: Refuse to connect to the server if the server uses the authentication plugin. This mode is off by default, which is a difference in behavior compared to MySQL 5.6 and later, where it is on by default.
MYSQL_SERVER_PUBLIC_KEY: Specifies the name of the file which contains the RSA public key of the database server. The format of this file must be in PEM format. This option is used by the client authentication plugin. It was introduced in Connector/C 3.1.0.
if MYSQL_READ_DEFAULT_FILE is set to a non-empty string, then it is interpreted as a path to a custom option file, and only that option file is read.
if MYSQL_READ_DEFAULT_GROUP is an empty string (or NULL and MYSQL_READ_DEFAULT_FILE is set) then only default groups — [client], [client-server], [client-mariadb] are read.
if MYSQL_READ_DEFAULT_GROUP is a non-empty string, then it is interpreted as a custom option group, and that custom option group is read in addition to default groups from above.
_pid: process id
_platform: e.g. x86 or x64
_server_host: the hostname (as specified in mysql_real_connect). This attribute was added in Connector/C 3.0.5
This function is designed to be executed by an user with the SUPER privilege and is used to dump server status information into the log for the MariaDB Server relating to the connection.
Returns zero on success, nonzero if an error occurred.
The server status information will be dumped into the file, which can usually be found in the data directory of your server installation.