All pages
Powered by GitBook
Couldn't generate the PDF for 135 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

Connector/C

The MariaDB Connector/C is used to connect applications developed in C/C++ to MariaDB and MySQL databases. MariaDB Connector/C is LGPLv2.1 licensed.

MariaDB Connector/C Overview

Quickstart Guide for Connector/C

Browse & download the latest MariaDB connectors

Download Connectors

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 MDEV-9055 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:

  • #connectors

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 MSI packages. 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 binary tarballs 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 MariaDB 10.2 or later.

You can configure your package manager to install it from MariaDB Corporation's MariaDB Package Repository by using the MariaDB Package Repository setup script.

You can also configure your package manager to install it from MariaDB Foundation's MariaDB Repository by using the MariaDB Repository Configuration Tool.

Installing with yum/dnf

On RHEL, CentOS, Fedora, and other similar Linux distributions, it is highly recommended to install the relevant RPM package from MariaDB's repository using yum or dnf. 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:

sudo yum install MariaDB-shared

If you want to build applications with MariaDB Connector/C, then you will also need to install the development package. For example:

sudo yum install MariaDB-devel

Installing with apt-get

On Debian, Ubuntu, and other similar Linux distributions, it is highly recommended to install the relevant DEB package from MariaDB's repository using apt-get. For example:

sudo apt-get install libmariadb3

If you want to build applications with MariaDB Connector/C, then you will also need to install the development package. For example:

sudo apt-get install libmariadb-dev

Installing with zypper

On SLES, OpenSUSE, and other similar Linux distributions, it is highly recommended to install the relevant RPM package from MariaDB's repository using zypper. For example:

sudo zypper install MariaDB-shared

If you want to build applications with MariaDB Connector/C, then you will also need to install the development package. For example:

sudo zypper install MariaDB-devel

Installing MariaDB Connector/C from Source

See Building Connector/C From Source 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:

  • MariaDB Client Library for C API Functions

  • MariaDB Client Library for C API Prepared Statement Functions

It is also downloadable in html format from mariadb-client-doc.zip

Configuring MariaDB Connector/C with Option Files

Just like MariaDB Server and libmysqlclient, MariaDB Connector/C can also read configuration options from client option groups in option files.

See Configuring MariaDB Connector/C with Option Files 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, caching_sha2_password. 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 CONC project on MariaDB's Jira bug tracker.

Source Code

The source code is available at the mariadb-connector-c repository 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 Licensing FAQ.

Install MariaDB Connector/C

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:

Package Repository

Description

ES Package Repository

  • MariaDB Enterprise Server package repository

  • Available to customers of MariaDB Corporation

  • Available for APT, YUM, and ZYpp on supported Linux distributions

  • Configured with the mariadb_es_repo_setup utility

CS Package Repository

  • MariaDB Community Server package repository

  • Publicly available

  • Available for APT, YUM, and ZYpp on supported Linux distributions

  • Configured with the mariadb_repo_setup utility

ES Package Repository

MariaDB Connector/C is available from the same package repository as MariaDB Enterprise Server.

To configure the ES package repository:

  1. Install curl.

    Install via APT on Debian, Ubuntu:

    sudo apt install curl

    Install via YUM on CentOS, RHEL, Rocky Linux:

    sudo yum install curl

    Install via ZYpp on SLES:

    sudo zypper install curl
  2. Download the mariadb_es_repo_setup utility, validate its checksum, and ensure that its permissions allow it to be executed:

    $ curl -LsSO https://dlm.mariadb.com/enterprise-release-helpers/mariadb_es_repo_setup
    $ echo "${checksum}  mariadb_es_repo_setup" \
        | sha256sum -c -
    $ chmod +x mariadb_es_repo_setup
    1. Checksums of the various releases of the script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Subsitute ${checksum} in the example above with the latest checksum.

  3. Retrieve your Customer Download Token at Customer Download Token at the MariaDB Customer Portal and substitute your token for CUSTOMER_DOWNLOAD_TOKEN in the following step.

  4. Configure the ES package repository using the mariadb_es_repo_setup utility:

    sudo ./mariadb_es_repo_setup --token="CUSTOMER_DOWNLOAD_TOKEN" --apply \
       --mariadb-server-version="10.6"
    • All major releases of ES contain the same version of MariaDB Connector/C.

    • By default, the mariadb_es_repo_setup utility will configure your system to use the package repository for ES 10.6.

    • To configure your system to use the ES package repository for a specific major release, use the --mariadb-server-version option.

  5. Install MariaDB Connector/C using the package repository.

CS Package Repository

MariaDB Connector/C is available from the same package repository as MariaDB Community Server.

To configure the CS package repository:

  1. Install curl.

    Install via APT on Debian, Ubuntu:

    $ sudo apt install curl

    Install via YUM on CentOS, RHEL, Rocky Linux:

    $ sudo yum install curl

    Install via ZYpp on SLES:

    $ sudo zypper install curl
  2. Download the mariadb_repo_setup utility, validate its checksum, and ensure that its permissions allow it to be executed:

    curl -LsSO https://r.mariadb.com/downloads/mariadb_repo_setup
    echo "${checksum} mariadb_repo_setup" \
        | sha256sum -c -
    chmod +x mariadb_repo_setup
    1. Checksums of the various releases of the script can be found in the Versions section at the bottom of the MariaDB Package Repository Setup and Usage page. Subsitute ${checksum} in the example above with the latest checksum.

  3. Configure the CS package repository using the mariadb_repo_setup utility:

    sudo ./mariadb_repo_setup \
       --mariadb-server-version="mariadb-10.6"
    • All major releases of CS contain the same version of MariaDB Connector/C.

    • By default, the mariadb_repo_setup 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 --mariadb-server-version option.

  4. Install MariaDB Connector/C using the package repository.

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 ES Package Repository or the CS Package Repository.

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 ES Package Repository or CS Package Repository configured.

Install MariaDB Connector/C and package dependencies:

sudo yum install MariaDB-shared MariaDB-devel

Install on Debian, Ubuntu

To install MariaDB Connector/C on Debian and Ubuntu, you can use APT if you have the ES Package Repository or CS Package Repository configured.

Install MariaDB Connector/C and package dependencies:

sudo apt install libmariadb3 libmariadb-dev

Install on SLES

To install MariaDB Connector/C on SLES, you can use ZYpp if you have the ES Package Repository or CS Package Repository configured.

Install MariaDB Connector/C and package dependencies:

sudo zypper install MariaDB-shared MariaDB-devel

Install via Binary Tarball (Linux)

MariaDB Connector/C can be installed on supported Linux distributions via a binary tarball package:

  1. Go to the MariaDB Connector/C download page

  2. Ensure the "Product" dropdown reads "C connector."

  3. In the "Version" dropdown, select the version you want to download.

  4. In the "OS" dropdown, select your Linux distribution.

  5. Click on the "Download" button to download the binary tarball package.

Install via MSI (Windows)

MariaDB Connector/C can be installed on Microsoft Windows via an MSI package:

  1. Go to the MariaDB Connector/C download page

  2. Ensure the "Product" dropdown reads "C connector."

  3. In the "Version" dropdown, select the version you want to download.

  4. In the "OS" dropdown, select either "MS Windows (64-bit)" or "MS Windows (32-bit)", depending on whether you need a 64-bit or 32-bit connector.

  5. Click on the "Download" button to download the MSI package.

  6. When the MSI package finishes downloading, run it and follow the on-screen instructions.

This page is: Copyright © 2025 MariaDB. All rights reserved.

List of MariaDB Connector/C Releases

Download MariaDB Connector/C

<< back to About MariaDB Connector/C

Date
Release
Status
included in
Release Notes
Changelog

09 Apr 2025

MariaDB Connector/C 3.4.5

Stable (GA)

MariaDB Enterprise Server 11.4.5-3

Release Notes

Changelog

11 Feb 2025

MariaDB Connector/C 3.4.4

Stable (GA)

MariaDB 11.4.5

Release Notes

Changelog

12 Nov 2024

MariaDB Connector/C 3.4.3

Stable (GA)

MariaDB 11.6.2MariaDB 11.7.1

Release Notes

Changelog

20 Aug 2024

MariaDB Connector/C 3.4.1

Stable (GA)

MariaDB 11.4.3MariaDB 11.5.2

Release Notes

Changelog

09 Apr 2025

MariaDB Connector/C 3.3.15

Stable (GA)

MariaDB Enterprise Server 10.6.21-17

Release Notes

Changelog

11 Feb 2015

MariaDB Connector/C 3.3.14

Stable (GA)

MariaDB 10.6.21MariaDB 10.11.11

Release Notes

Changelog

12 Nov 2024

MariaDB Connector/C 3.3.13

Stable (GA)

Release Notes

Changelog

20 Aug 2024

MariaDB Connector/C 3.3.11

Stable (GA)

MariaDB 10.6.19MariaDB 10.11.9

Release Notes

Changelog

21 Jun 2024

MariaDB Connector/C 3.3.10

Stable (GA)

MariaDB 10.6.18MariaDB 10.11.8

Release Notes

Changelog

19 Feb 2024

MariaDB Connector/C 3.3.9

Stable (GA)

MariaDB 10.6.17MariaDB 10.11.7

Release Notes

Changelog

29 Nov 2023

MariaDB Connector/C 3.3.8

Stable (GA)

MariaDB 10.6.16MariaDB 10.10.7MariaDB 10.11.6

Release Notes

Changelog

14 Sep 2023

MariaDB Connector/C 3.3.7

Stable (GA)

Release Notes

Changelog

22 May 2023

MariaDB Connector/C 3.3.5

Stable (GA)

MariaDB 10.8.8MariaDB 10.9.6MariaDB 10.10.4

Release Notes

Changelog

7 Feb 2023

MariaDB Connector/C 3.3.4

Stable (GA)

MariaDB 10.8.7MariaDB 10.9.5MariaDB 10.10.3

Release Notes

Changelog

7 Nov 2022

MariaDB Connector/C 3.3.3

Stable (GA)

MariaDB 10.8.6MariaDB 10.9.4

Release Notes

Changelog

22 Aug 2022

MariaDB Connector/C 3.3.2

Stable (GA)

MariaDB 10.8.4MariaDB 10.9.2

Release Notes

Changelog

25 May 2022

MariaDB Connector/C 3.3.1

Stable (GA)

MariaDB 10.8.3MariaDB 10.9.1

Release Notes

Changelog

15 Feb 2022

MariaDB Connector/C 3.3.0

RC

MariaDB 10.8.2

Release Notes

Changelog

25 May 2022

MariaDB Connector/C 3.2.7

Stable (GA)

MariaDB 10.7.4MariaDB 10.6.8

Release Notes

Changelog

15 Feb 2022

MariaDB Connector/C 3.2.6

Stable (GA)

MariaDB 10.7.3MariaDB 10.6.7

Release Notes

Changelog

10 Nov 2021

MariaDB Connector/C 3.2.5

Stable (GA)

MariaDB 10.7.1MariaDB 10.6.5

Release Notes

Changelog

9 Aug 2021

MariaDB Connector/C 3.2.4

Stable (GA)

MariaDB 10.6.4

Release Notes

Changelog

7 Jul 2021

MariaDB Connector/C 3.2.3

Stable (GA)

MariaDB 10.6.3

Release Notes

Changelog

29 Jun 2021

MariaDB Connector/C 3.2.2

RC

MariaDB 10.6.2

Release Notes

Changelog

10 Jun 2021

MariaDB Connector/C 3.2.0

Beta

MariaDB 10.6.1

Release Notes

Changelog

09 Apr 2025

MariaDB Connector/C 3.1.28

Stable (GA)

MariaDB Enterprise Server 10.5.28-22

Release Notes

Changelog

11 Feb 2025

MariaDB Connector/C 3.1.27

Stable (GA)

MariaDB 10.5.28

Release Notes

Changelog

12 Nov 2024

MariaDB Connector/C 3.1.26

Stable (GA)

Release Notes

Changelog

18 Jun 2024

MariaDB Connector/C 3.1.24

Stable (GA)

MariaDB 10.5.25MariaDB 10.4.34

Release Notes

Changelog

29 Nov 2023

MariaDB Connector/C 3.1.23

Stable (GA)

MariaDB 10.5.23MariaDB 10.4.32

Release Notes

Changelog

1 Sep 2023

MariaDB Connector/C 3.1.22

Stable (GA)

MariaDB 10.5.22MariaDB 10.4.31

Release Notes

Changelog

22 May 2023

MariaDB Connector/C 3.1.21

Stable (GA)

MariaDB 10.5.20MariaDB 10.4.29MariaDB 10.3.39

Release Notes

Changelog

7 Feb 2023

MariaDB Connector/C 3.1.20

Stable (GA)

MariaDB 10.5.19MariaDB 10.4.28MariaDB 10.3.38

Release Notes

Changelog

7 Nov 2022

MariaDB Connector/C 3.1.19

Stable (GA)

MariaDB 10.5.18MariaDB 10.4.27MariaDB 10.3.37

Release Notes

Changelog

22 Aug 2022

MariaDB Connector/C 3.1.18

Stable (GA)

MariaDB 10.5.17MariaDB 10.4.26MariaDB 10.3.36

Release Notes

Changelog

25 May 2022

MariaDB Connector/C 3.1.17

Stable (GA)

MariaDB 10.5.16MariaDB 10.4.25MariaDB 10.3.35MariaDB 10.2.44

Release Notes

Changelog

15 Feb 2022

MariaDB Connector/C 3.1.16

Stable (GA)

MariaDB 10.5.15MariaDB 10.4.24MariaDB 10.3.34MariaDB 10.2.43

Release Notes

Changelog

10 Nov 2021

MariaDB Connector/C 3.1.15

Stable (GA)

MariaDB 10.5.13MariaDB 10.4.22MariaDB 10.3.32MariaDB 10.2.41

Release Notes

Changelog

11 Aug 2021

MariaDB Connector/C 3.1.14

Stable (GA)

MariaDB 10.5.12MariaDB 10.4.21MariaDB 10.3.31MariaDB 10.2.40

Release Notes

Changelog

11 May 2021

MariaDB Connector/C 3.1.13

Stable (GA)

MariaDB 10.5.10MariaDB 10.4.19MariaDB 10.3.29MariaDB 10.2.38

Release Notes

Changelog

23 Feb 2021

MariaDB Connector/C 3.1.12

Stable (GA)

MariaDB 10.5.9MariaDB 10.4.18MariaDB 10.3.28MariaDB 10.2.37

Release Notes

Changelog

4 Nov 2020

MariaDB Connector/C 3.1.11

Stable (GA)

MariaDB 10.5.7MariaDB 10.4.16MariaDB 10.3.26MariaDB 10.2.35

Release Notes

Changelog

17 Sep 2020

MariaDB Connector/C 3.1.10

Stable (GA)

Release Notes

Changelog

24 Jun 2020

MariaDB Connector/C 3.1.9

Stable (GA)

MariaDB 10.5.4MariaDB 10.4.14MariaDB 10.3.24MariaDB 10.2.33

Release Notes

Changelog

14 May 2020

MariaDB Connector/C 3.1.8

Stable (GA)

MariaDB 10.5.3MariaDB 10.4.13MariaDB 10.3.23MariaDB 10.2.32

Release Notes

Changelog

29 Jan 2020

MariaDB Connector/C 3.1.7

Stable (GA)

MariaDB 10.4.12MariaDB 10.3.22MariaDB 10.2.31

Release Notes

Changelog

12 Dec 2019

MariaDB Connector/C 3.1.6

Stable (GA)

MariaDB 10.4.11MariaDB 10.3.21MariaDB 10.2.30

Release Notes

Changelog

11 Nov 2019

MariaDB Connector/C 3.1.5

Stable (GA)

MariaDB 10.4.10MariaDB 10.3.20MariaDB 10.2.29

Release Notes

Changelog

11 Sep 2019

MariaDB Connector/C 3.1.4

Stable (GA)

MariaDB 10.4.8MariaDB 10.3.18MariaDB 10.2.27

Release Notes

Changelog

1 Aug 2019

MariaDB Connector/C 3.1.3

Stable (GA)

MariaDB 10.4.7

Release Notes

Changelog

19 Jun 2019

MariaDB Connector/C 3.1.2

Stable (GA)

MariaDB 10.4.6

Release Notes

Changelog

06 Jun 2019

MariaDB Connector/C 3.1.1

RC

Release Notes

Changelog

09 Apr 2019

MariaDB Connector/C 3.1.0

Alpha

MariaDB 10.4.4

Release Notes

Changelog

13 May 2019

MariaDB Connector/C 3.0.10

Stable (GA)

MariaDB 10.2.24

Release Notes

Changelog

11 Feb 2019

MariaDB Connector/C 3.0.9

Stable (GA)

Release Notes

Changelog

21 Dec 2018

MariaDB Connector/C 3.0.8

Stable (GA)

Release Notes

Changelog

14 Nov 2018

MariaDB Connector/C 3.0.7

Stable (GA)

Release Notes

Changelog

2 Aug 2018

MariaDB Connector/C 3.0.6

Stable (GA)

Release Notes

Changelog

7 Jun 2018

MariaDB Connector/C 3.0.5

Stable (GA)

Release Notes

Changelog

25 Apr 2018

MariaDB Connector/C 3.0.4

Stable (GA)

Release Notes

Changelog

18 Jan 2018

MariaDB Connector/C 3.0.3

Stable (GA)

Release Notes

Changelog

20 Jul 2017

MariaDB Connector/C 3.0.2

Stable (GA)

Release Notes

Changelog

18 Jan 2017

MariaDB Connector/C 3.0.1

Beta

Release Notes

Changelog

20 Jan 2016

MariaDB Connector/C 3.0.0

Alpha

Release Notes

7 Sep 2018

MariaDB Connector/C 2.3.7

Stable (GA)

Release Notes

Changelog

7 Jun 2018

MariaDB Connector/C 2.3.6

Stable (GA)

Release Notes

Changelog

18 Jan 2018

MariaDB Connector/C 2.3.5

Stable (GA)

Release Notes

Changelog

4 Dec 2017

MariaDB Connector/C 2.3.4

Stable (GA)

Release Notes

Changelog

31 May 2017

MariaDB Connector/C 2.3.3

Stable (GA)

Release Notes

Changelog

18 Jan 2017

MariaDB Connector/C 2.3.2

Stable (GA)

Release Notes

Changelog

4 Aug 2016

MariaDB Connector/C 2.3.1

Stable (GA)

Release Notes

Changelog

1 Jul 2016

MariaDB Connector/C 2.3.0

Stable (GA)

Release Notes

Changelog

26 Apr 2016

MariaDB Connector/C 2.2.3

Stable (GA)

Release Notes

Changelog

9 Dec 2015

MariaDB Connector/C 2.2.2

Stable (GA)

Release Notes

Changelog

18 Nov 2015

MariaDB Connector/C 2.2.1

Stable (GA)

Release Notes

Changelog

29 Sep 2015

MariaDB Connector/C 2.2.0

Stable (GA)

Release Notes

Changelog

29 Jan 2015

MariaDB Connector/C 2.1.0

Stable (GA)

Release Notes

Changelog

2 Apr 2014

MariaDB Client Library for C 2.0.0

Stable (GA)

Release Notes

Changelog

29 Nov 2012

MariaDB Client Library for C 1.0.0

Stable (GA)

Release Notes

Changelog

This page is: Copyright © 2025 MariaDB. All rights reserved.

Configuring MariaDB Connector/C with Option Files

Just like MariaDB Server and libmysqlclient, MariaDB Connector/C can also read configuration options from client option groups in option files.

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:

mysql_optionsv(mysql, MYSQL_READ_DEFAULT_FILE, NULL);

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 cmake option was defined when MariaDB Connector/C was built. This option is usually defined as /etc when building RPM packages, but it is usually not defined when building DEB packages or binary tarballs.

  • When the DEFAULT_SYSCONFDIR cmake option was not defined, MariaDB Connector/C looks for the MariaDB option file in the following locations in the following order:

Location

/etc/my.cnf

/etc/mysql/my.cnf

$MYSQL_HOME/my.cnf

~/.my.cnf

  • When the DEFAULT_SYSCONFDIR cmake option was defined, MariaDB Connector/C looks for the MariaDB option file in the following locations in the following order:

Location

DEFAULT_SYSCONFDIR/my.cnf

$MYSQL_HOME/my.cnf

~/.my.cnf

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

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

  • The System Windows Directory is the directory returned by the GetSystemWindowsDirectory function. The value is usually C:\Windows. To find its specific value on your system, open cmd.exe and execute:

echo %WINDIR%
  • The Windows Directory is the directory returned by the GetWindowsDirectory 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 GetSystemWindowsDirectory function.

  • EXEDIR is the parent directory of the executable program that MariaDB Connector/C is linked with.

  • MYSQL_HOME is the environment variable containing the path to the directory holding the server-specific my.cnf file.

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 mysql_optionsv function and providing the MYSQL_READ_DEFAULT_FILE option name and an option file path as arguments. For example:

mysql_optionsv(mysql, MYSQL_READ_DEFAULT_FILE, (void *)"./my_conf.cnf");

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

--defaults-file =path

Only read options from the given option file.

--defaults-extra-file =path

Read this extra option file after all other option files are read.

The --defaults-file command-line option is roughly equivalent to setting the MYSQL_READ_DEFAULT_FILE option with a non-NULL argument.

The --defaults-extra-file command-line option does not yet have an equivalent option in MariaDB Connector/C. See CONC-399 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 Option Groups section below for more information on available option groups.

  • The same option group can appear multiple times.

  • 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 option prefixes that are supported by MariaDB Server. See CONC-415 for more information.

  • See the Options section below for information about available options.

Option Groups

MariaDB Connector/C reads client options from the following option groups in option files:

Group
Description

[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.

MariaDB Connector/C allows application developers to read options from these option groups by calling the mysql_optionsv function and providing the MYSQL_READ_DEFAULT_GROUP option name and a NULL pointer as arguments. For example:

mysql_optionsv(mysql, MYSQL_READ_DEFAULT_GROUP, NULL);

Custom Option Groups

MariaDB Connector/C allows application developers to read options from a custom option group by calling the mysql_optionsv function and providing the MYSQL_READ_DEFAULT_GROUP option name and the name of the custom option group as arguments. For example:

mysql_optionsv(mysql, MYSQL_READ_DEFAULT_GROUP, (void *)"my_section");

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

--defaults-group-suffix =suffix

In addition to the default option groups, also read option groups with the given suffix.

The --defaults-group-suffix command-line option does not yet have an equivalent option in MariaDB Connector/C. See CONC-404 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:

[client-mariadb]
...
!include /etc/mysql/dbserver1.cnf

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:

[client-mariadb]
...
!includedir /etc/my.cnf.d/

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 CONC-396 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 --print-defaults command-line argument:

Option
Description

--print-defaults

Read options from option files, print all option values, and then exit the program.

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:

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

If it is installed on your system, then you can also check which options a given program is going to use by using the my_print_defaults utility and providing the names of the option groups that the program reads. For example:

my_print_defaults my_section client client-server client-mariadb
--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

See Configuring MariaDB with Option Files: Checking Program Options 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 mysql_config_editor.

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 option groups.

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 CONC-395 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:

my_bool (*set_option)(MYSQL *mysql, const char *config_option, const char *config_value);

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 mysql_optionsv function.

bind-address

  • Description: Specify the network interface from which to connect to MariaDB Server.

  • mysql_optionsv: MYSQL_OPT_BIND

  • Data Type: string

  • Default Value:

  • Introduced: MariaDB Connector/C 3.0.0

character-sets-dir

  • Description: Directory for character set files.

  • mysql_optionsv: MYSQL_SET_CHARSET_DIR

  • Data Type: string

  • Default Value:

compress

  • Description: Compress all information sent between the client and the server if both support compression.

  • mysql_optionsv: MYSQL_OPT_COMPRESS

  • Data Type: boolean

  • Default Value: false

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

  • Default Value:

database

  • Description: Database to use.

  • mysql_optionsv: MARIADB_OPT_SCHEMA

  • Data Type: string

  • Default Value:

debug

  • Description:

  • mysql_optionsv: MARIADB_OPT_DEBUG

  • Data Type: string

  • Default Value:

default-auth

  • Description: Default authentication client-side plugin to use.

  • mysql_optionsv: MYSQL_DEFAULT_AUTH

  • Data Type: string

  • Default Value:

default-character-set

  • Description: Specify the default character set for the connection.

  • mysql_optionsv: MYSQL_SET_CHARSET_NAME

  • Data Type: string

  • Default Value:

disable-local-infile

  • Description: Disable the use of LOAD DATA LOCAL INFILE.

  • mysql_optionsv: N/A

  • Data Type: string

  • Default Value:

host

  • Description: Hostname or IP address of the server to connect to.

  • mysql_optionsv: MARIADB_OPT_HOST

  • Data Type: string

  • Default Value:

interactive-timeout

  • Description:

  • mysql_optionsv: MARIADB_OPT_INTERACTIVE

  • Data Type: none

  • Default Value:

init-command

  • Description: Command(s) which will be executed when connecting and reconnecting to the server.

  • mysql_optionsv: MYSQL_INIT_COMMAND

  • Data Type: string

  • Default Value:

local-infile

  • Description: Enable or disable the use of LOAD DATA LOCAL INFILE.

  • mysql_optionsv: MYSQL_OPT_LOCAL_INFILE

  • Data Type: boolean

  • Default Value: false

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

  • Default Value:

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

  • Default Value:

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

  • Default Value:

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

  • Default Value:

  • Introduced: MariaDB Connector/C 3.0.0

password

  • Description: Password of the user to login to the server.

  • mysql_optionsv: MARIADB_OPT_PASSWORD

  • Data Type: string

  • Default Value:

pipe

  • Description: For Windows operating systems only: Use named pipes for client/server communication.

  • mysql_optionsv: MYSQL_OPT_NAMED_PIPE

  • Data Type: boolean

  • Default Value: false

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

  • Data Type: string

  • Default Value:

port

  • Description: Port number to use for connection.

  • mysql_optionsv: MARIADB_OPT_PORT

  • Data Type: int

  • Default Value: 3306

protocol

  • Description: Specify the type of client/server protocol. Possible values are:

    • 0 - Refers to MYSQL_PROTOCOL_DEFAULT

    • 1 - 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:

reconnect

  • Description: Enable or disable automatic reconnect.

  • mysql_optionsv: MYSQL_OPT_RECONNECT

  • Data Type: boolean

  • Default Value: false

  • Introduced: MariaDB Connector/C 3.0.0

report-data-truncation

  • Description: Enable or disable reporting data truncation errors for prepared statements.

  • mysql_optionsv: MYSQL_REPORT_DATA_TRUNCATION

  • Data Type: boolean

  • Default Value:

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

  • Default Value:

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

  • Default Value: false

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 caching_sha2_password client authentication plugin.

  • mysql_optionsv: MYSQL_SERVER_PUBLIC_KEY

  • Data Type: string

  • Default Value:

  • Introduced: MariaDB Connector/C 3.1.0

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

  • Default Value:

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

  • Default Value:

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 TLS. This option requires that you use the absolute path, not a relative path.

    • See Secure Connections Overview: Certificate Authorities (CAs) for more information.

  • mysql_optionsv: MYSQL_OPT_SSL_CA

  • Data Type: string

  • Default Value:

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 TLS. 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 Secure Connections Overview: Certificate Authorities (CAs) 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 TLS and Cryptography Libraries Used by MariaDB for more information about which libraries are used on which platforms.

  • mysql_optionsv: MYSQL_OPT_SSL_CAPATH

  • Data Type: string

  • Default Value:

ssl-cert

  • Description: Defines a path to the X509 certificate file to use for TLS. This option requires that you use the absolute path, not a relative path.

  • mysql_optionsv: MYSQL_OPT_SSL_CERT

  • Data Type: string

  • Default Value:

ssl-cipher

  • Description: List of permitted ciphers or cipher suites to use for TLS.

  • mysql_optionsv: MYSQL_OPT_SSL_CIPHER

  • Data Type: string

  • Default Value:

ssl-crl

  • Description: Defines a path to a PEM file that should contain one or more revoked X509 certificates to use for TLS. This option requires that you use the absolute path, not a relative path.

    • See Secure Connections Overview: Certificate Revocation Lists (CRLs) 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 TLS and Cryptography Libraries Used by MariaDB for more information about which libraries are used on which platforms.

  • mysql_optionsv: MYSQL_OPT_SSL_CRL

  • Data Type: string

  • Default Value:

  • Introduced: MariaDB Connector/C 3.1.1

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 TLS. 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 Secure Connections Overview: Certificate Revocation Lists (CRLs) 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 TLS and Cryptography Libraries Used by MariaDB for more information about which libraries are used on which platforms.

  • mysql_optionsv: MYSQL_OPT_SSL_CRLPATH

  • Data Type: string

  • Default Value:

  • Introduced: MariaDB Connector/C 3.1.1

ssl-enforce

  • Description: Whether to force TLS.

  • mysql_optionsv: MYSQL_OPT_SSL_ENFORCE

  • Data Type: boolean

  • Default Value:

  • Introduced: MariaDB Connector/C 3.1.1

ssl-fp

  • Description: Specify the SHA1 fingerprint of a server certificate for validation during the TLS handshake.

  • mysql_optionsv: MARIADB_OPT_SSL_FP

  • Data Type: string

  • Default Value:

  • Introduced: MariaDB Connector/C 3.0.0

ssl-fp-list, ssl-fplist

  • Description: Specify a file which contains one or more SHA1 fingerprints of server certificates for validation during the TLS handshake.

  • mysql_optionsv: MARIADB_OPT_SSL_FP_LIST

  • Data Type: string

  • Default Value:

  • Introduced: MariaDB Connector/C 3.0.0

ssl-key

  • Description: Defines a path to a private key file to use for TLS. 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

  • Default Value:

ssl-passphrase

  • Description: Specify a passphrase for a passphrase-protected private key, as configured by the 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 TLS and Cryptography Libraries Used by MariaDB for more information about which libraries are used on which platforms.

  • mysql_optionsv: MARIADB_OPT_TLS_PASSPHRASE

  • Data Type: string

  • Default Value:

  • Introduced: MariaDB Connector/C 3.0.0

ssl-verify-server-cert

  • Description: Enables (or disables) server certificate verification.

  • mysql_optionsv: MYSQL_OPT_SSL_VERIFY_SERVER_CERT

  • Data Type: boolean

  • Default Value:

  • Introduced: MariaDB Connector/C 3.0.0

tls_version

  • Description: Defines which TLS 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 Secure Connections Overview: TLS Protocol Version Support for information on which TLS libraries support which TLS protocol versions. See TLS and Cryptography Libraries Used by MariaDB for more information about which TLS libraries are used on which platforms.

  • mysql_optionsv: MARIADB_OPT_TLS_VERSION

  • Data Type: string

  • Default Value:

  • Introduced: MariaDB Connector/C 3.0.4

user

  • Description: User to login to the server.

  • mysql_optionsv: MARIADB_OPT_USER

  • Data Type: string

  • Default Value:

See Also

  • Configuring MariaDB with Option Files

MariaDB Binlog/Replication API reference

These are currently documented on the github wiki.

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 mysql_use_result(), mysql_store_result() and mysql_stmt_result_metadata() API functions and needs to be released by mysql_free_result().

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 mysql_fetch_row() function. The size of the array is the number of columns for the current row.

After freeing the result set with mysql_free_result() 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 mysql_stmt_init() function and needs to be released by the mysql_stmt_close() 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 mysql_fetch_field() function.

It has the following members:

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 int

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

MYSQL_BIND

The MYSQL_BIND structure is used to provide parameters for prepared statements or to receive output column value from prepared statements.

unsigned long *

length

Pointer for the length of the buffer (not used for parameters)

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

unsigned long

buffer_length

Length of buffer

enum enum_field_types

buffer_type

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

MYSQL_TIME

The MYSQL_TIME structure is used for date and time values in prepared statements. It has the following members:

unsigned int

year

Year

unsigned int

month

Month

unsigned int

day

Day

unsigned int

hour

Hour

unsigned int

minute

Minute

unsigned int

second

Second

unsigned long

second_part

Fractional seconds (max. 6 digits)

my_bool

neg

Negative value

enum enum_mysql_timestamp_type

time_type

Type

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

aurora

replication

pvio plugins

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

MariaDB Connector/C Types and Definitions

MariaDB Connector/C provides the following types and definitions.

Enumeration Types

enum mysql_option

enum mysql_option is used as a parameter in mysql_optionsv() and mysql_get_optionsv() API functions. For a list of integral constants and their meanings please check the documentation of mysql_get_optionsv().

enum enum_mysql_timestamp_type

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

BLOB_FLAG

16

Field is a blob

UNSIGNED_FLAG

32

Field is unsigned integer

ZEROFILL_FLAG

64

Field is zero filled

BINARY_FLAG

128

Field is binary

ENUM_FLAG

256

Field is enum

AUTO_INCREMENT_FLAG

512

Field is an autoincrement field

TIMESTAMP_FLAG

1024

Field is a timestamp

SET_FLAG

2048

Field is a set

NO_DEFAULT_VALUE_FLAG

4096

Field has no default value

ON_UPDATE_NOW_FLAG

8192

If a field is updated it will get the current time value (NOW())

NUM_FLAG

32768

Field is numeric

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

SERVER_STATUS_CURSOR_EXISTS

64

when using COM_STMT_FETCH, indicate that current cursor still has result

SERVER_STATUS_LAST_ROW_SENT

128

when using COM_STMT_FETCH, indicate that current cursor has finished to send results

SERVER_STATUS_DB_DROPPED

1<<8

database has been dropped

SERVER_STATUS_NO_BACKSLASH_ESCAPES

1<<9

current escape mode is "no backslash escape"

SERVER_STATUS_METADATA_CHANGED

1<<10

A DDL change did have an impact on an existing PREPARE (an automatic reprepare has been executed)

SERVER_QUERY_WAS_SLOW

1<<11

Last statement took more than the time value specified in server variable long_query_time.

SERVER_PS_OUT_PARAMS

1<<12

this resultset contain stored procedure output parameter

SERVER_STATUS_IN_TRANS_READONLY

1<<13

current transaction is a read-only transaction

SERVER_SESSION_STATE_CHANGED

1<<14

session state change. see Session change type for more information

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

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.

Compiling Connector/C

After successful configuration, Connector/C can now be compiled.

Compiling on Windows

If no CMake generator was specified, CMake creates by default build files for Visual Studio. You can now either build Connector/C inside Visual Studio

devenv mariadb_connector_c.sln

or via command line

cmake --build . --config RelWithDebInfo

Compiling on Unix

By default CMake creates build files for GNU make. On some system GNU make is renamed to gmake. You can now build Connector/C with

make

or

cmake --build . --config Release

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.

Do not build Connector/C from root of the source tree: Either create a subdirectory "build" inside the source tree or create a subdirectory outside of the source tree.

Example:

cmake ../connector_c -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local

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

cmake .. -D{PLUGIN_NAME}_PLUGIN_TYPE=[STATIC|DYNAMIC|OFF]

Beginning with C/C 3.0.4

cmake .. -DCLIENT_PLUGIN_{PLUGIN_NAME}=[STATIC|DYNAMIC|OFF]

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

DIALOG

Authentication

dynamic

Authentication for user input, e.g. for PAM authentication

OLDPASSWORD

Authentication

static

Pre. 4.1 authentication (deprecated)

NATIVE

Authentication

static

Default authentication

CLEARTEXT

Authentication

dynamic

Sends password without hashing or encryption

AUTH_GSSAPI

Authentication

dynamic

Kerberos/GSSAPI authentication plugin

SHA256_PASSWORD

Authentication

dynamic

SHA256 password authentication plugin

AURORA

Connection

OFF

Fail over plugin for Aurora (experimental)

REPLICATION

Connection

OFF

Replication/fail over plugin (experimental)

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 CMake website.

  • for Connector/C 2.x: OpenSSL libraries and include files.

  • for Connector/C 3.0 remote-io plugin: Curl 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

    • GnuTLS 3.4 or newer

  • cmake 2.8.12 or newer, available from the CMake website.

  • for Connector/C 3.0 remote-io plugin: Curl libraries and include files

  • For GSSAPI plugin: Kerberos V5 libraries

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 Fink or MacPorts.

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.

mariadb_cancel

Syntax

int mariadb_cancel(MYSQL * mysql);

mysql - mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

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, mysql_close() must be called.mariadb_cancel() is useful to break long queries in situations where sending KILL is not possible.

mariadb_cancel() was added in Connector/C 3.0

mariadb_get_infov

Syntax

int mariadb_get_infov(MYSQL * mysql,
                      enum mariadb_value value,
                      void * arg,
                      ...);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect(). For general information which is not bound to connection this parameter might be null.

  • 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 parameter mysql needs to be set to NULL.

  • MARIADB_CHARSET_NAME: Retrieves the charset information for a character set by it's 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 capability flags of the connected MariaDB server.Parameter type: unsigned long.

  • MARIADB_CONNECTION_HOST: Retrieves connection's host name. Parameter type: const char *.

  • 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 capability flags 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 *.

Examples

/* get server port for current connection */
unsigned int port;
mariadb_get_infov(mysql, MARIADB_CONNECTION_PORT, void *)&port);
/* get user name for current connection */
const char *user;
mariadb_get_infov(mysql, MARIADB_CONNECTION_USER, (void *)&user);

See also

  • mysql_get_optionv()

mariadb_reconnect

Syntax

my_bool  mariadb_reconnect(MYSQL * mysql)
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

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.

This function was added in Connector/C 3.0.

See also

  • mysql_real_connect()

  • mysql_options()

mysql_affected_rows

Syntax

my_ulonglong mysql_affected_rows(MYSQL * mysql);

mysql is a connection identifier, which was previously allocated by mysql_init() or mysql_real_connect().

Description

Returns the number of affected rows by the last operation associated with mysql, if the operation was an "upsert" (INSERT, UPDATE, DELETE or REPLACE) statement, or UINT64_MAX (0xffffffffffffffff) if the last query 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_affected_rows may not actually equal the number of rows matched, only the number of rows that were literally affected by the query.

The REPLACE 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.

See also

  • mysql_num_rows()

mysql_autocommit

Syntax

my_bool mysql_autocommit(MYSQL * mysql, my_bool auto_mode);
  • mysql - a mysql handle, identifier, which was previously allocated by mysql_init() or mysql_real_connect().

  • auto_mode - whether to turn autocommit on or not.

Description

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

Autocommit 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.

Turning off autocommit in sql

SET AUTOCOMMIT=0;

mysql_change_user

Syntax

my_bool mysql_change_user(MYSQL * mysql,
                          const char * user,
                          const char * passwd,
                          const char * db);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

  • user - the user name for server authentication

  • passwd - the password for server authentication

  • 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.

mysql_character_set_name

Syntax

const char * mysql_character_set_name(MYSQL * mysql);

mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

Returns the default client character set for the specified connection.

mysql_close

Syntax

void mysql_close(MYSQL * mysql);

mysql - mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

Closes a previously opened connection.

mysql_commit

Syntax

my_bool mysql_commit(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

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 autocommit. This means, any update or insert statements following mysql_commit() will be rolled back when the connection gets closed.

See also

  • mysql_rollback()

mysql_data_seek

Syntax

void mysql_data_seek(MYSQL_RES * result,
                     my_ulonglong offset);
  • result - a result set identifier returned by mysql_store_result().

  • 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.

mysql_debug

Syntax

void mysql_debug(const char * debug);
  • 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 --debug 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:

field_1:field_2:field_n

Each field consists of a mandatory flag character followed by an optional "," and comma separated list of modifiers:

flag[,modifier,modifier,...,modifier]

The currently recognized flag characters are:

Option
Description

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.

L

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.

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_dump_debug_info()

mysql_dump_debug_info

Syntax

int mysql_dump_debug_info(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

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 error log file, which can usually be found in the data directory of your server installation.

See also

  • mysql_debug()

  • mysql_debug_end()

mysql_errno

Syntax

unsigned int mysql_errno(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

Returns the last error code 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_error()

  • mysql_sqlstate()

mysql_error

Syntax

const char * mysql_error(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

Returns the last error message for the most recent function call that can succeed or fail. If no error occurred an empty string is returned.

See also

  • mysql_errno()

  • mysql_sqlstate().

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 mysql_real_escape_string() instead.

See also

  • mysql_real_escape_string()

mysql_fetch_field

Syntax

MYSQL_FIELD * mysql_fetch_field(MYSQL_RES * result);
  • result - a result set identifier returned by mysql_store_result() or mysql_use_result().

Description

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.

See also

  • mysql_field_seek()

  • mysql_field_tell()

  • mysql_fetch_field_direct()

  • mysql_store_result()

  • mysql_use_result()

mysql_fetch_field_direct

Syntax

MYSQL_FIELD * mysql_fetch_field_direct(MYSQL_RES * res,
                                       unsigned int fieldnr);
  • res - a result set identifier returned by mysql_store_result() or mysql_use_result().

  • fieldnr - the field number. This value must be within the range from 0 to number of fields - 1

Description

Returns a pointer to a MYSQL_FIELD structure which contains field information from the specified result set.

The total number of fields can be obtained by mysql_field_count()

See also

  • mysql_fetch_field()

  • mysql_field_count()

mysql_fetch_fields

Syntax

MYSQL_FIELD * mysql_fetch_fields(MYSQL_RES * res);
  • res - a result set identifier returned by mysql_store_result() or mysql_use_result().

Description

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.

The total number of fields can be obtained by mysql_field_count().

See also

  • mysql_fetch_field()

  • mysql_fetch_field_direct()

  • mysql_field_count()

mysql_fetch_lengths

Syntax

unsigned long * mysql_fetch_lengths(MYSQL_RES * result);
  • result - a result set identifier returned by mysql_store_result() or mysql_use_result().

Description

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 mysql_fetch_row() or after retrieving all rows in the result.

See also

  • mysql_fetch_row()

mysql_fetch_row

Syntax

MYSQL_ROW mysql_fetch_row(MYSQL_RES * result);
  • result - a result set identifier returned by mysql_store_result() or mysql_use_result().

Description

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 mysql_free_result() function.

See also

  • mysql_use_result()

  • mysql_store_result()

mysql_field_count

Syntax

unsigned int mysql_field_count(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

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.

See also

  • mysql_store_result()

  • mysql_use_result()

mysql_field_seek

Syntax

MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES * result,
                                    MYSQL_FIELD_OFFSET offset);
  • result - a result set identifier returned by mysql_store_result() or mysql_use_result().

  • 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.

Returns the previous value of the field cursor.

The number of fields can be obtained from mysql_field_count().

To move the field cursor to the first field offset parameter should be null.

See also

  • mysql_field_tell()

mysql_field_tell

Syntax

MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES * result);
  • result - a result set identifier returned by mysql_store_result() or mysql_use_result().

Description

Return the offset of the field cursor used for the last mysql_fetch_field() call. This value can be used as a parameter for the function mysql_field_seek().

Returns the current offset of the field cursor

See also

  • mysql_field_seek()

mysql_free_result

Syntax

void mysql_free_result(MYSQL_RES * result);
  • result - a result set identifier returned by mysql_store_result() or mysql_use_result().

Description

Frees the memory associated with a result set. Returns void.

You should always free your result set with mysql_free_result() as soon it's not needed anymore

Row values obtained by a prior mysql_fetch_row() call will become invalid after calling mysql_free_result().

See also

  • mysql_store_result()

  • mysql_use_result()

mysql_get_character_set_info

Syntax

void mysql_get_character_set_info(MYSQL * mysql,
                                  MY_CHARSET_INFO * charset);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

  • charset - a pointer to a MY_CHARSET_INFO structure, in which the information will be copied.

Description

Returns information about the current default character set for the specified connection.

A complete list of supported character sets in the client library is listed in the function description for mysql_set_character_set_info().

mysql_get_client_info

Syntax

const char * mysql_get_client_info(void );

Description

Returns a string representing the client library version

To obtain the numeric value of the client library version use mysql_get_client_version().

See also

  • mysql_get_client_version()

  • mysql_get_host_info()

  • mysql_get_proto_info()

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 mysql_get_client_info() function.

See also

  • mysql_get_client_info()

mysql_get_host_info

Syntax

const char * mysql_get_host_info(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

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_get_server_version()

mysql_get_optionv

Syntax

int mysql_get_optionv(MYSQL * mysql,
                      enum mysql_option,
                      void * arg,
                      ...);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

  • 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 mysql_optionsv.

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

  • MYSQL_OPT_NONBLOCK

  • MYSQL_OPT_SSL_VERIFY_SERVER_CERT

  • MARIADB_OPT_CONNECTION_READ_ONLY

  • MYSQL_SECURE_AUTH

Integer values

  • MYSQL_OPT_CONNECT_TIMEOUT

  • MYSQL_OPT_READ_TIMEOUT

  • MYSQL_OPT_WRITE_TIMEOUT

  • MYSQL_OPT_LOCAL_INFILE

  • MYSQL_OPT_PROTOCOL

Character values

  • MYSQL_INIT_COMMAND

  • MYSQL_READ_DEFAULT_FILE

  • MYSQL_READ_DEFAULT_GROUP

  • MYSQL_SET_CHARSET_NAME

  • MYSQL_PLUGIN_DIR

  • MYSQL_OPT_SSL_KEY

  • MYSQL_OPT_SSL_CERT

  • MYSQL_OPT_SSL_CA

  • MYSQL_OPT_SSL_CAPATH

  • MYSQL_OPT_SSL_CRL

  • MYSQL_OPT_SSL_CRLPATH

  • MYSQL_OPT_SSL_CIPHER

  • MARIADB_OPT_SSL_FP

  • MARIADB_OPT_SSL_FPLIST

  • MARIADB_OPT_SSL_PASSPHRASE

  • MYSQL_DEFAULT_AUTH

  • MYSQL_OPT_BIND

  • MARIADB_OPT_CONNECTION_HANDLER

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:

/* get number of connection attributes */
int i, elements= 0;
char **key, **value;

mysql_get_optionv(mysql, MYSQL_CONNECT_ATTRS, NULL, NULL, (void *)&elements);
key= (char **)malloc(sizeof(char *) * elements);
val= (char **)malloc(sizeof(char *) * elements);
mysql_get_optionv(mysql, MYSQL_OPT_CONNECT_ATTRS, &key, &val, &elements);
for (i=0; i < elements; i++)
  printf("key: %s value: %s", key[i], val[i]);
  • MARIADB_OPT_USERDATA: retrieves userdata for a given key.

const char *ssh_user;
mysql_get_optionv(mysql, MARIADB_OPT_USERDATA, "ssh_user", (void *)ssh_user);

See also

  • mysql_optionsv()

mysql_get_proto_info

Syntax

unsigned int mysql_get_proto_info(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

Returns the protocol version number for the specified connection

The client library doesn't support protocol version 9 and prior.

See also

  • mysql_get_host_info()

mysql_get_server_info

Syntax

const char * mysql_get_server_info(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

Returns the server version or NULL on failure.

To obtain the numeric server version please use mysql_get_server_version().

See also

  • mysql_get_server_version()

  • mysql_get_client_info()

mysql_get_server_version

Syntax

unsigned long mysql_get_server_version(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

Returns an integer representing the version of connected server.

The form of the version number is VERSION_MAJOR * 10000 + VERSION_MINOR * 100 + VERSION_PATCH

See also

  • mysql_get_server_info()

mysql_get_ssl_cipher

Syntax

const char *mysql_get_ssl_cipher(MYSQL *mysql)
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

Returns the name of the currently used cipher of the TLS connection, or NULL for non TLS connections.

See also

  • mysql_ssl_set()

mysql_hex_string

Syntax

unsigned long mysql_hex_string(char * to,
                               const char * from,
                               unsigned long len);
  • 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

  • mysql_real_escape_string()

mysql_info

Syntax

const char * mysql_info(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

The mysql_info() function returns a string providing information about the last query executed. The nature of this string is provided below:

Table 1. Possible mysql_info return values

Query type
Example result string

INSERT INTO...SELECT...

Records: 100 Duplicates: 0 Warnings: 0

INSERT INTO...VALUES (...),(...),(...)

Records: 3 Duplicates: 0 Warnings: 0

LOAD DATA INFILE ...

Records: 1 Deleted: 0 Skipped: 0 Warnings: 0

ALTER TABLE ...

Records: 3 Duplicates: 0 Warnings: 0

UPDATE ...

Rows matched: 40 Changed: 40 Warnings: 0

Queries which do not fall into one of the preceding formats are not supported (e.g. SELECT ...). In these situations mysql_info() will return an empty string.

See also

  • mysql_affected_rows()

  • mysql_warning_count()

mysql_init

Syntax

MYSQL * mysql_init(MYSQL * mysql);

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 mysql_real_connect().

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 mysql_real_connect() was called.

Memory allocated by mysql_init() must be freed with mysql_close().

See also

  • mysql_real_connect()

  • mysql_options()

  • mysql_thread_init()

  • mysql_close()

mysql_insert_id

Syntax

my_ulonglong mysql_insert_id(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

The mysql_insert_id() function returns the ID generated by a query on a table with a column having the AUTO_INCREMENT attribute or the value for the last usage of LAST_INSERT_ID(expr). If the last query wasn't an INSERT or UPDATE statement or if the modified table does not have a column with the AUTO_INCREMENT attribute and LAST_INSERT_ID 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.

See also

  • AUTO INCREMENT

  • mysql_stmt_insert_id()

  • LAST_INSERT_ID()

mysql_kill

Syntax

int mysql_kill(MYSQL * mysql,
               unsigned long);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

  • long - process id

Description

This function is used to ask the server to kill a MariaDB thread specified by the processid parameter. This value must be retrieved by SHOW PROCESSLIST. If trying to kill the own connection mysql_thread_id() should be used.

Returns 0 on success, otherwise nonzero.

To stop a running command without killing the connection use KILL QUERY. The mysql_kill() function only kills a connection, it doesn't free any memory - this must be done explicitly by calling mysql_close().

See also

  • mysql_thread_id()

  • mysql_close()

  • mariadb_cancel()

mysql_library_end

Syntax

void mysql_library_end(void)

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.

mysql_server_end() is an alias.

See also

  • mysql_library_init()

mysql_library_init

Syntax

int mysql_library_init(int argc, char **argv, char **groups)

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.

Call mysql_library_end() to clean up after completion.

mysql_server_init() is an alias.

See also

  • mysql_library_end()

mysql_more_results

Syntax

my_bool mysql_more_results(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

Indicates if one or more result sets are available from a previous call to mysql_real_query(). Returns 1 if more result sets are available, otherwise zero. .

The function mysql_set_server_option() enables or disables multi statement support.

See also

  • mysql_real_query()

  • mysql_use_result()

  • mysql_store_result()

  • mysql_next_result()

mysql_next_result

Syntax

int mysql_next_result(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

Prepares next result set from a previous call to mysql_real_query() which can be retrieved by mysql_store_result() or mysql_use_result(). Returns zero on success, nonzero if an error occurred.

If a multi query contains errors the return value of mysql_errno/error() might change and there will be no result set available.

See also

  • mysql_real_query()

  • mysql_store_result()

  • mysql_use_result()

  • mysql_more_results()

mysql_num_fields

Syntax

unsigned int mysql_num_fields(MYSQL_RES * );
  • MYSQL RES * - A result set identifier returned by mysql_store_result() or mysql_use_result().

Description

Returns number of fields in a specified result set.

See also

  • mysql_fetch_field()

mysql_num_rows

Syntax

my_ulonglong mysql_num_rows(MYSQL_RES * );
  • MYSQL_RES - a result set identifier returned by mysql_store_result() or mysql_use_result().

Description

Returns number of rows in a result set.

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 correct number of rows until all the rows in the result have been retrieved.

See also

  • mysql_affected_rows()

  • mysql_use_result()

  • mysql_store_result()

mysql_options

Syntax

int mysql_options(MYSQL * mysql,
                  enum mysql_option,
                  const void * arg);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

  • 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 mysql_init() and before mysql_real_connect().

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 mysql_optionsv.

Options

See mysql_optionsv.

See also

  • mysql_init()

  • mysql_optionsv

  • mysql_real_connect()

mysql_optionsv

Syntax

int mysql_optionsv(MYSQL * mysql,
                   enum mysql_option,
                   const void * arg,
                   ...);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

  • mysql_option - the option you want 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. mysql_optionsv() should be called after mysql_init().

Some of these options can also be set in option files, such as my.cnf.

Returns

Returns zero on success, non zero if an error occurred (invalid option or value).

Options

  • MYSQL_INIT_COMMAND: Command(s) which will be executed when connecting and reconnecting to the server.

    mysql_optionsv(mysql, MYSQL_INIT_COMMAND, (void *)"CREATE TABLE ...");
  • MYSQL_OPT_CONNECT_TIMEOUT: Connect timeout in seconds. This value will be passed as an unsigned int parameter.

    unsigned int timeout= 5;
    mysql_optionsv(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (void *)&timeout);
  • 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

    int my_verify_filename(void *data, const char *filename)
    {
     return strcmp((char *)data, filename);
    }
    ...
    char *filename= "mydata.csv";
    mysql_optionsv(mysql, MARIADB_OPT_VERIFY_LOCAL_INFILE_CALLBACK, my_verify_filename, (void *)filename);
  • 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 ALTER TABLE).

    static void report_progress(const MYSQL *mysql __attribute__((unused)),
     uint stage, uint max_stage,
     double progress __attribute__((unused)),
     const char *proc_info __attribute__((unused)),
     uint proc_info_length __attribute__((unused)))
    {
     ...
    }
    mysql_optionsv(mysql, MYSQL_PROGRESS_CALLBACK, (void *)report_progress);
  • MYSQL_OPT_RECONNECT: Enable or disable automatic reconnect.

    my_bool reconnect= 1; /* enable reconnect */
    mysql_optionsv(mysql, MYSQL_OPT_RECONNECT, (void *)&reconnect);
  • MYSQL_OPT_READ_TIMEOUT: Specifies the timeout in seconds for reading packets from the server.

    unsigned int timeout= 5;
    mysql_optionsv(mysql, MYSQL_OPT_READ_TIMEOUT, (void *)&timeout);
  • MYSQL_OPT_WRITE_TIMEOUT: Specifies the timeout in seconds for sending packets to the server.

    unsigned int timeout= 5;
    mysql_optionsv(mysql, MYSQL_OPT_WRITE_TIMEOUT, (void *)&timeout);
  • MYSQL_REPORT_DATA_TRUNCATION: Enable or disable reporting data truncation errors for prepared statements.

    mysql_optionsv(mysql, MYSQL_REPORT_DATA_TRUNCATION, NULL); /* disable */
    mysql_optionsv(mysql, MYSQL_REPORT_DATA_TRUNCATION, (void *)"1"); /* enable */
  • MYSQL_SET_CHARSET_DIR: character set files.

    mysql_optionsv(mysql, MYSQL_SET_CHARSET_DIR, (void *)"/usr/local/mysql/share/mysql/charsets");
  • MYSQL_SET_CHARSET_NAME: Specify the default character set for the connection.

    mysql_optionsv(mysql, MYSQL_SET_CHARSET_NAME, (void *)"utf8");
  • MYSQL_OPT_BIND: Specify the network interface from which to connect to MariaDB Server.

    mysql_optionsv(mysql, MYSQL_OPT_BIND, (void *)"192.168.8.3");
  • 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_optionsv(mysql, MYSQL_OPT_NONBLOCK, 0);
  • 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_optionsv(mysql, MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, 1);
  • MYSQL_OPT_MAX_ALLOWED_PACKET: The maximum packet length to send to or receive from server. The default is 16MB, the maximum 1GB.

    mysql_optionsv(mysql, MYSQL_OPT_MAX_ALLOWED_PACKET, 0x40000000);
  • MYSQL_OPT_NET_BUFFER_LENGTH: The buffer size for TCP/IP and socket communication. Default is 16KB.

    mysql_optionsv(mysql, MYSQL_OPT_NET_BUFFER_LENGTH, 0x40000000);

Connection Options

Some of these options can also be set as arguments to the mysql_real_connect function.

  • MARIADB_OPT_HOST: Hostname or IP address of the server to connect to.

    mysql_optionsv(mysql, MARIADB_OPT_HOST, (void *)"dbserver.example.com");
  • MARIADB_OPT_USER: User to login to the server.

    mysql_optionsv(mysql, MARIADB_OPT_USER, (void *)"myuser");
  • MARIADB_OPT_PASSWORD: Password of the user to login to the server.

    mysql_optionsv(mysql, MARIADB_OPT_PASSWORD, (void *)"horsebattery");
  • MARIADB_OPT_SCHEMA: Database to use.

    mysql_optionsv(mysql, MARIADB_OPT_SCHEMA, (void *)"mydb");
  • MARIADB_OPT_PORT: Port number to use for connection.

    mysql_optionsv(mysql, MARIADB_OPT_PORT, 3307);
  • 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_optionsv(mysql, MARIADB_OPT_UNIXSOCKET, (void *)"/var/lib/mysql/mysql.sock");
  • MYSQL_OPT_NAMED_PIPE: For Windows operating systems only: Use named pipes for client/server communication.

    mysql_optionsv(mysql, MYSQL_OPT_NAMED_PIPE, NULL);
  • 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.

      enum mysql_protocol_type prot_type= MYSQL_PROTOCOL_SOCKET;
      mysql_optionsv(mysql, MYSQL_OPT_PROTOCOL, (void *)&prot_type);
  • MARIADB_OPT_FOUND_ROWS: Return the number of matched rows instead of number of changed rows.

    mysql_optionsv(mysql, MARIADB_OPT_FOUND_ROWS, 1);
  • 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.

    mysql_optionsv(mysql, MYSQL_OPT_COMPRESS, NULL);
  • MYSQL_OPT_LOCAL_INFILE: Enable or disable the use of LOAD DATA LOCAL INFILE

    unsigned int enable= 1, disable= 0;
    mysql_optionsv(mysql, MYSQL_OPT_LOCAL_INFILE, (void *)&disable);/* disable */
    mysql_optionsv(mysql, MYSQL_OPT_LOCAL_INFILE, (void *)NULL);     /* enable */
    mysql_optionsv(mysql, MYSQL_OPT_LOCAL_INFILE, (void *)&enable); /* enable */
  • MARIADB_OPT_MULTI_STATEMENTS: Allows the client to send multiple statements in one command. Statements will be divided by a semicolon.

    mysql_optionsv(mysql, MARIADB_OPT_MULTI_STATEMENTS, (void *)"");
  • 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_optionsv(mysql, MARIADB_OPT_MULTI_RESULTS, 1);
  • 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_optionsv(mysql, MYSQL_SHARED_MEMORY_BASE_NAME, (void *)"mariadb");

TLS Options

  • MYSQL_OPT_SSL_KEY: Defines a path to a private key file to use for TLS. 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_optionsv(mysql, MYSQL_OPT_SSL_KEY, (void *)"certs/client-key.pem");
  • MYSQL_OPT_SSL_CERT: Defines a path to the X509 certificate file to use for TLS. This option requires that you use the absolute path, not a relative path.

    mysql_optionsv(mysql, MYSQL_OPT_SSL_CERT, (void *)"certs/client-cert.pem");
  • 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 TLS. This option requires that you use the absolute path, not a relative path. See Secure Connections Overview: Certificate Authorities (CAs) for more information.

    mysql_optionsv(mysql, MYSQL_OPT_SSL_CA, (void *)"certs/ca-cert.pem");
  • 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 TLS. 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 Secure Connections Overview: Certificate Authorities (CAs) 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 TLS and Cryptography Libraries Used by MariaDB for more information about which libraries are used on which platforms.

    mysql_optionsv(mysql, MYSQL_OPT_SSL_CAPATH, (void *)"certs/ca-cert.pem");
  • MYSQL_OPT_SSL_CIPHER: Defines a list of permitted ciphers or cipher suites to use for TLS.

    mysql_optionsv(mysql, MYSQL_OPT_SSL_CIPHER, (void *)"DHE-RSA-AES256-SHA");
  • MYSQL_OPT_SSL_CRL: Defines a path to a PEM file that should contain one or more revoked X509 certificates to use for TLS. This option requires that you use the absolute path, not a relative path. See Secure Connections Overview: Certificate Revocation Lists (CRLs) 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 TLS and Cryptography Libraries Used by MariaDB for more information about which libraries are used on which platforms.

    mysql_optionsv(mysql, MYSQL_OPT_SSL_CAPATH, (void *)"certs/ca-cert.pem");\\\\<<code>>mysql_optionsv(mysql, MYSQL_OPT_SSL_CRL, (void *)"certs/crl.pem");
  • 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 TLS. 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 Secure Connections Overview: Certificate Revocation Lists (CRLs) 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 TLS and Cryptography Libraries Used by MariaDB for more information about which libraries are used on which platforms.

    mysql_optionsv(mysql, MYSQL_OPT_SSL_CAPATH, (void *)"certs/ca-cert.pem");\\\\<<code>>mysql_optionsv(mysql, MYSQL_OPT_SSL_CRLPATH, (void *)"certs/crls");
  • MARIADB_OPT_SSL_FP: Specify the SHA1 fingerprint of a server certificate for validation during the TLS handshake. This is deprecated. Use MARIADB_OPT_TLS_PEER_FP instead.

    mysql_optionsv(mysql, MARIADB_OPT_SSL_FP, (void *)"3a079e1a14ad326953a5d280f996b93d772a5bea");
  • MARIADB_OPT_TLS_PEER_FP: Specify the SHA1 fingerprint of a server certificate for validation during the TLS handshake.

    mysql_optionsv(mysql, MARIADB_OPT_TLS_PEER_FP, (void *)"3a079e1a14ad326953a5d280f996b93d772a5bea");
  • MARIADB_OPT_SSL_FP_LIST: Specify a file which contains one or more SHA1 fingerprints of server certificates for validation during the TLS handshake. This is deprecated. Use MARIADB_OPT_TLS_PEER_FP_LIST instead.

    mysql_optionsv(mysql, MARIADB_OPT_SSL_FP_LIST, (void *)"certs/fingerprints.txt");
  • MARIADB_OPT_TLS_PEER_FP_LIST: Specify a file which contains one or more SHA1 fingerprints of server certificates for validation during the TLS handshake.

    mysql_optionsv(mysql, MARIADB_OPT_TLS_PEER_FP_LIST, (void *)"certs/fingerprints.txt");
  • 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 TLS and Cryptography Libraries Used by MariaDB for more information about which libraries are used on which platforms.

    mysql_optionsv(mysql, MARIADB_OPT_SSL_PASSPHRASE, (void *)"thisisashortpassphrase");
  • MARIADB_OPT_TLS_VERSION: Defines which TLS 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 Secure Connections Overview: TLS Protocol Version Support for information on which TLS libraries support which TLS protocol versions. See TLS and Cryptography Libraries Used by MariaDB for more information about which TLS libraries are used on which platforms.

    mysql_optionsv(mysql, MARIADB_OPT_TLS_VERSION, (void *)"TLSv1.2,TLSv1.3");
  • MYSQL_OPT_SSL_VERIFY_SERVER_CERT: Enables (or disables) server certificate verification.

    my_bool verify= 1;
    mysql_optionsv(mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT, (void *)&verify);
  • MYSQL_OPT_SSL_ENFORCE: Whether to force TLS. This enables TLS with the default system settings. It does not prevent the connection from being created if the server does not support TLS.

    my_bool enforce_tls= 1;
    mysql_optionsv(mysql, MYSQL_OPT_SSL_ENFORCE, (void *)&enforce_tls);
  • MARIADB_OPT_TLS_CIPHER_STRENGTH: Cipher strength. This value will be passed as an unsigned int parameter.

    unsigned int cipher_strength= 128;
    mysql_optionsv(mysql, MARIADB_OPT_TLS_CIPHER_STRENGTH, (void*)&cipher_strength);

Plugin Options

  • MYSQL_DEFAULT_AUTH: Default authentication client-side plugin to use.

    mysql_optionsv(mysql, MYSQL_DEFAULT_AUTH, (void *)"ed25519");
  • 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 mysql_clear_password 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.

    mysql_optionsv(mysql, MYSQL_ENABLE_CLEARTEXT_PLUGIN, 1);
  • MARIADB_OPT_CONNECTION_HANDLER: Specify the name of a connection handler plugin.

    mysql_optionsv(mysql, MARIADB_OPT_CONNECTION_HANDLER, (void *)"aurora");
  • 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.

    mysql_optionsv(mysql, MARIADB_OPT_USERDATA, (void *)"ssh_user", (void *)ssh_user);
  • 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.

    my_bool read_only= 1;
    mysql_optionsv(mysql, MARIADB_OPT_CONNECTION_READ_ONLY, (void *)&read_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_optionsv(mysql, MYSQL_PLUGIN_DIR, (void *)"/opt/mariadb/lib/plugins");
  • MYSQL_SECURE_AUTH: Refuse to connect to the server if the server uses the mysql_old_password 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_optionsv(mysql, MYSQL_SECURE_AUTH, 1);
  • 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 caching_sha2_password client authentication plugin. It was introduced in Connector/C 3.1.0.

    mysql_optionsv(mysql, MYSQL_SERVER_PUBLIC_KEY, (void *)(void *)"certs/server-cert.pem);

Option File Options

  • MYSQL_READ_DEFAULT_FILE: Read options from an option file.

  • MYSQL_READ_DEFAULT_GROUP: Read options from the named option group from an option file.

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 default option files are read.

  • 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.

Connection Attribute Options

Connection attributes are stored in the session_connect_attrs and session_account_connect_attrs 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

  • _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

If the Performance Schema is disabled, connection attributes will not be stored on server.

  • MYSQL_OPT_CONNECT_ATTR_DELETE: Deletes a connection attribute for the given key.

    mysql_optionsv(mysql, MYSQL_OPT_CONNECT_ATTR_DELETE, (void *)"app_version");
  • MYSQL_OPT_CONNECT_ATTR_ADD: Adds a key/value pair to connection attributes.

    mysql_optionsv(mysql, MYSQL_OPT_CONNECT_ATTR_ADD, (void *)"app_version", (void *)"2.0.1");
  • MYSQL_OPT_CONNECT_ATTR_RESET: Clears the current list of connection attributes.

    mysql_optionsv(mysql, MYSQL_OPT_CONNECT_ATTR_RESET, 0);

See Also

  • mysql_init()

  • mysql_options()

  • mysql_real_connect()

mysql_ping

Syntax

int mysql_ping(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

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.

See also

  • mysql_options()

  • mysql_kill()

mysql_query

Syntax

int mysql_query(MYSQL * mysql,
                const char * query);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

  • query -a null terminated string containing the statement to be performed.

Description

Performs a statement pointed to by the null terminate string query against the database. Contrary to mysql_real_query(), mysql_query() is not binary safe.

Returns zero on success, non zero on failure

For executing multi statements the statements within the null terminated string statements must be separated by a semicolon.

If your statement contains binary data you should use mysql_real_query() or escape your data with mysql_hex_string().

To determine if a statement returned a result set use the function mysql_num_fields().

See also

  • mysql_real_query()

  • mysql_num_fields()

  • mysql_hex_string()

  • mysql_use_result()

  • mysql_store_result()

mysql_read_query_result

Syntax

int mysql_read_query_result(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Returns zero on success, otherwise non-zero.

Description

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.

mysql_real_connect

Syntax

MYSQL * mysql_real_connect(MYSQL * mysql,
                           const char * host,
                           const char * user,
                           const char * passwd,
                           const char * db,
                           unsigned int port,
                           const char * unix_socket,
                           unsigned long flags);
  • mysql - a mysql handle, which was previously allocated by mysql_init().

  • 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 protocol capabilities.

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.

See also

  • mariadb_reconnect

  • mysql_close()

  • mysql_init()

  • protocol capabilities

mysql_real_escape_string

Syntax

unsigned long mysql_real_escape_string(MYSQL * mysql,
                                       char * to,
                                       const char * from,
                                       unsigned long);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

  • to - buffer for the encoded string. The size of this buffer must be length * 2 + 1 bytes: in 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.

mysql_real_query

Syntax

int mysql_real_query(MYSQL * mysql,
                     const char * q,
                     unsigned long);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

  • query - a string containing the statement to be performed.

  • long - length of the string.

Description

mysql_real_query() is the binary safe function for performing a statement on the database server. Returns zero on success, otherwise non-zero.

Contrary to the mysql_query() function, mysql_real_query is binary safe.

To determine if mysql_real_query returns a result set use the mysql_num_fields() function.

See also

  • mysql_query()

  • mysql_num_fields()

  • mysql_use_result()

  • mysql_store_result()

mysql_refresh

Syntax

int mysql_refresh(MYSQL * mysql,
  unsigned int options);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

  • 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 combinationation 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.

REFRESH_SLAVE

Reset master server information and restart slaves.

REFRESH_MASTER

Remove binary log files.

REFRESH_READ_LOCK

REFRESH_FAST

Returns zero on success, otherwise non zero.

To combine different values in the options parameter use the OR operator '|'. The function mysql_reload() is an alias for mysql_refresh().

mysql_reset_connection

Syntax

int mysql_reset_connection(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

Resets the current connection and clears session state. Similar to mysql_change_user() or mariadb_reconnect(), 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 autocommit mode

  • releases table locks

  • initializes session variables (and sets them to the value of corresponding global variables)

  • closes active prepared statements

  • clears user variables

Returns zero on success, non zero if an error occurred.

This function was added in MariaDB Connector/C 3.0.0.

mysql_rollback

Syntax

my_bool mysql_rollback(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

Rolls back the current transaction for the database. Returns zero on success, nonzero if an error occurred.

mysql_rollback() will not work as expected if autocommit mode was set or the storage engine does not support transactions.

See also

  • mysql_commit()

  • mysql_autocommit()

mysql_row_seek

Syntax

MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES * result,
    MYSQL_ROW_OFFSET offset);
  • result - a result set identifier returned by mysql_store_result().

  • offset - row offset. This value can be obtained either by mysql_row_seek() or mysql_row_tell()

Description

Positions the row cursor to an aribtrary row in a result set which was obtained by mysql_store_result(). Returns the previous row offset.

This function will not work if the result set was obtained by mysql_use_result().

See also

  • mysql_store_result()

  • mysql_row_tell()

mysql_row_tell

Syntax

MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES * res);
  • res - a result set identifier returned by mysql_store_result().

Description

Returns the row offset of a result cursor. The returned offset value can be used to reposition the result cursor by calling mysql_row_seek().

This function will not work if the result set was obtained by mysql_use_result().

See also

  • mysql_store_result()

  • mysql_row_seek()

mysql_select_db

Syntax

int mysql_select_db(MYSQL * mysql,
                    const char * db);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

  • db - the default database name

Description

Selects a database as default. Returns zero on success, non-zero on failure

The SQL command SELECT DATABASE() will return the name of the default database.

The default database can also be set by the db parameter in mysql_real_connect().

mysql_send_query

Syntax

int mysql_send_query(MYSQL * mysql,
                     const char * query,
                     unsigned long length);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

  • query - the query to execute.

  • length - length of query.

Returns zero on success, otherwise non-zero.

Description

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 mysql_read_query_result(). Multiple calls to mysql_send_query() can be made before the calls to mysql_read_query_result() are done.

mysql_server_end

Syntax

void mysql_server_end(void );

Description

mysql_server_end() is an alias for mysql_library_end().

See also

  • mysql_library_init()

  • mysql_library_end()

mysql_server_init

Syntax

void mysql_server_init(void );

Description

mysql_server_init() is an alias for mysql_library_init().

See also

  • mysql_library_init()

  • mysql_library_end()

mysql_session_track_get_first

Syntax

int mysql_session_track_get_first(MYSQL * mysql,enum enum_session_state_type type, const char **data, size_t *length );
  • mysql - mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

  • type - type of information. Valid values are

    • SESSION_TRACK_SYSTEM_VARIABLES

    • SESSION_TRACK_SCHEMA

    • SESSION_TRACK_STATE_CHANGE

    • SESSION_TRACK_GTIDS (unsupported)

  • 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: shows whether the session status has changed. The value is changed as string "1" (changed) or "0" (unchanged).

Further data needs to be obtained by calling mysql_session_track_get_next().

mysql_session_track_get_first() was added in Connector/C 3.0 and MariaDB Server 10.2.

Returns

Zero for success, nonzero if an error occurred.

See also

mysql_session_track_get_next()

mysql_session_track_get_next

Syntax

int mysql_session_track_get_next(MYSQL * mysql,enum enum_session_state_type type, const char **data, size_t *length );
  • mysql - mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

  • type - type of information. Valid values are

    • SESSION_TRACK_SYSTEM_VARIABLES

    • SESSION_TRACK_SCHEMA

    • SESSION_TRACK_STATE_CHANGE

    • SESSION_TRACK_GTIDS (unsupported)

  • 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_next() retrieves the session status change information received from the server after a successful call to mysql_session_track_get_first().

mysql_session_track_get_next() needs to be called repeatedly until a non zero return value indicates end of data.

mysql_session_track_get_next() was added in Connector/C 3.0 and MariaDB Server 10.2.

Returns

Zero for success, nonzero if an error occurred.

See also

mysql_session_track_get_first()

mysql_set_character_set

Syntax

int mysql_set_character_set(MYSQL * mysql,
                            const char * csname);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

  • csname - character set name

Description

Sets the default character set 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

binary

8 bit binary character set

cp1250

Windows code page 1250 character set

cp1251

Windows code page 1251 character set

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

See also

  • mysql_real_escape_string()

mysql_set_server_option

Syntax

int mysql_set_server_option(MYSQL * mysql,
  enum enum_mysql_set_option);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

  • enum_mysql_set_option - server option (see below)

Description

Server option, which can be one of the following values:

Option
Description

MYSQL_OPTION_MULTI_STATEMENTS_OFF

Disables multi statement support

MYSQL_OPTION_MULTI_STATEMENTS_ON

Enable multi statement support

Returns zero on success, non-zero on failure.

See also

  • mysql_real_connect()

mysql_shutdown

Syntax

int mysql_shutdown(MYSQL * mysql,
  enum mysql_enum_shutdown_level);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

  • mysql_enum_shutdown_level - currently only one shutdown level, SHUTDOWN_DEFAULT is supported.

Description

Sends a shutdown message to the server. To shutdown the database server, the user for the current connection must have SHUTDOWN privileges.

Returns zero on success, non-zero on failure.

See also

  • mysql_kill()

mysql_sqlstate

Syntax

const char * mysql_sqlstate(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

Returns a string containing the SQLSTATE 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 returned as value HY000.

See also

  • mysql_error()

  • mysql_errno()

mysql_ssl_set

Syntax

my_bool mysql_ssl_set(MYSQL *mysql, const char *key, const char *cert,
  const char *ca, const char *capath, const char *cipher)
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

  • key - path to the key file.

  • cert - path to the certificate file.

  • ca - path to the certificate authority file.

  • 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 secure TLS connection. 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.

See also

  • mysql_get_ssl_cipher()

mysql_stat

Syntax

const char * mysql_stat(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

mysql_stat() returns a string with the current server status for uptime, threads, queries, open tables, flush tables and queries per second.

For a complete list of other status variables, you have to use the SHOW STATUS SQL command.

See also

  • mysql_get_server_info()

mysql_store_result

Syntax

MYSQL_RES * mysql_store_result(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

Returns a buffered resultset from the last executed query.

mysql_store_result() returns NULL in case an error occured or if the query didn't return data (e.g. when executing an INSERT or UPDATE query.

mysql_field_count() indicates if there will be a result set available.

The memory allocated by mysql_store_result() needs to be released by calling the function mysql_free_result().

See also

  • mysql_use_result()

  • mysql_real_query()

  • mysql_field_count()

mysql_thread_end

Syntax

void mysql_thread_end(void );

Description

The mysql_thread_end() function needs to be called before a client thread ends. It will release thread specific memory, which was allocated by a previous mysql_thread_init() 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.

See also

  • mysql_thread_init()

  • mysql_thread_safe()

mysql_thread_id

Syntax

unsigned long mysql_thread_id(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

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 32bits value. If your database might expect to create more than 4.3 billion connection without a restart, it's better to query 'select CONNECTION_ID()'

See also

  • mysql_kill()

  • mysql_options()

mysql_thread_init

Syntax

my_bool mysql_thread_init(void );

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 mysql_init() or mysql_real_connect().

Returns zero if successful or 1 if an error occurred.

Before a client thread ends the mysql_thread_end() function must be called to release memory - otherwise the client library will report an error.

See also

  • mysql_thread_end()

  • mysql_thread_safe()

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

  • mysql_thread_init()

  • mysql_thread_end()

mysql_use_result

Syntax

MYSQL_RES * mysql_use_result(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

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 mysql_store_result() 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 mysql_num_rows() or mysql_data_seek() cannot be used.

mysql_use_result() will block the current connection until all result sets are retrieved or result set was released by mysql_free_result().

See also

  • mysql_store_result()

  • mysql_free_result()

mysql_warning_count

Syntax

unsigned int mysql_warning_count(MYSQL * mysql);
  • mysql - a mysql handle, which was previously allocated by mysql_init() or mysql_real_connect().

Description

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 SQL_MODE TRADITIONAL is enabled an error instead of warning will be returned. For detailed information check the server documentation.

See also

  • mysql_stmt_affected_rows()

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.

mariadb_stmt_execute_direct

Syntax

int mariadb_stmt_execute_direct(MYSQL_STMT * stmt, const char *query, size_t length);
  • stmt - A statement handle, which was previously allocated by mysql_stmt_init().

  • query SQL statement

  • length Length of SQL statement

Description

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 MariaDB 10.2 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.

See Also

  • mysql_stmt_attr_set()

  • mysql_stmt_bind_param()

Example

static int execute_direct_example(MYSQL *mysql)
{
  MYSQL_STMT *stmt= mysql_stmt_init(mysql);
  MYSQL_BIND bind[2];
  int intval= 1;
  int param_count= 2;
  char *strval= "execute_direct_example";

  /* Direct execution without parameters */
  if (mariadb_stmt_execute_direct(stmt, "CREATE TABLE execute_direct (a int, b varchar(30))", -1))
    goto error;

  memset(&bind, 0, sizeof(MYSQL_BIND) * 2);
  bind[0].buffer_type= MYSQL_TYPE_SHORT;
  bind[0].buffer= &intval;
  bind[1].buffer_type= MYSQL_TYPE_STRING;
  bind[1].buffer= strval;
  bind[1].buffer_length= strlen(strval);

  /* set number of parameters */
  if (mysql_stmt_attr_set(stmt, STMT_ATTR_PREBIND_PARAMS, &param_count))
    goto error;

  /* bind parameters */
  if (mysql_stmt_bind_param(stmt, bind))
    goto error;

  if (mariadb_stmt_execute_direct(stmt, "INSERT INTO execute_direct VALUES (?,?)", -1))
    goto error;

  mysql_stmt_close(stmt);
  return 0;
error:
  printf("Error: %s\n", mysql_stmt_error(stmt));
  mysql_stmt_close(stmt);
  return 1;
}

mariadb_stmt_fetch_fields

Syntax

MYSQL_FIELD *mariadb_stmt_fetch_fields(MYSQL_STMT * stmt);
  • stmt - A statement handle, which was previously allocated by mysql_stmt_init().

Description

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.

This function was added in Connector/C 3.1.0

The number of fields can be obtained by mysql_stmt_field_count()

See Also

  • mysql_stmt_field_count()

mysql_stmt_affected_rows

Syntax

my_ulonglong mysql_stmt_affected_rows(MYSQL_STMT * stmt);
  • stmt - a statement handle, which was previously allocated by mysql_stmt_init().

Description

Returns the number of affected rows by the last prepared statement associated with mysql, if the operation was an "upsert" (INSERT, UPDATE, DELETE or REPLACE) 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 actually equal the number of rows matched, only the number of rows that were literally affected by the query.

The REPLACE 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.

See Also

  • mysql_stmt_insert_id()

mysql_stmt_attr_get

Syntax

my_bool mysql_stmt_attr_get(MYSQL_STMT * stmt,
                            enum enum_stmt_attr_type,
                            void * attr);
  • stmt - a statement handle, which was previously allocated by mysql_stmt_init().

  • enum_stmt_attr_type - attribute. See below.

  • attr - pointer to a variable, which will contain the attribute value.

Description

Gets the current value of a statement attribute. Returns zero on success, non zero on failure.

Attribute types

The enum_stmt_attr_type parameter has the following possible values:

  • STMT_ATTR_UPDATE_MAX_LENGTH: Indicates if mysql_stmt_store_result() will update the max_length value of MYSQL_FIELD structures.

    my_bool is_update;
    rc= mysql_stmt_attr_get(stmt, STMT_ATTR_UPDATE_MAX_LENGTH, &is_update);
  • STMT_ATTR_CURSOR_TYPE: Cursor type. Possible values are CURSOR_TYPE_READ_ONLY or default value CURSOR_TYPE_NO_CURSOR.

    unsigned long cursor_type;
    rc= mysql_stmt_attr_get(stmt, STMT_ATTR_CURSOR_TYPE, &cursor_type);
  • STMT_ATTR_PREFETCH_ROWS: Number of rows which will be prefetched. The default value is 1.

    unsigned long prefetch_rows;
    rc= mysql_stmt_attr_get(stmt, STMT_ATTR_PREFETCH_ROWS, &prefetch_rows);
  • STMT_ATTR_PREBIND_PARAMS: Number of parameters used for mariadb_stmt_execute_direct()

    unsigned int param_count;
    rc= mysql_stmt_attr_get(stmt, STMT_ATTR_PREBIND_PARAMS, ¶m_count);

Setting the number of prefetched rows will work only for read only cursors.

See Also

  • mysql_stmt_attr_set()

mysql_stmt_attr_set

Syntax

my_bool mysql_stmt_attr_set(MYSQL_STMT * stmt,
                            enum enum_stmt_attr_type,
                            const void * attr);
  • 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, mysql_stmt_store_result() will update the max_length value of MYSQL_FIELD structures.

my_bool update= 1;
rc= mysql_stmt_attr_set(stmt, STMT_ATTR_UPDATE_MAX_LENGTH, &update);
  • STMT_ATTR_CURSOR_TYPE: cursor type when mysql_stmt_execute() is invoked. Possible values are CURSOR_TYPE_READ_ONLY or default value CURSOR_TYPE_NO_CURSOR.

unsigned long cursor_type= CURSOR_TYPE_READ_ONLY;
rc= mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, &cursor_type);
  • STMT_ATTR_PREFETCH_ROWS: number of rows which will be prefetched. The default value is 1.

unsigned long rows=4;
rc= mysql_stmt_attr_set(stmt, STMT_ATTR_PREFETCH_ROWS, &rows);
  • STMT_ATTR_PREBIND_PARAMS: number of parameter markers when using mariadb_stmt_execute_direct(). 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

unsigned int params= 5;
rc= mysql_stmt_attr_set(stmt, STMT_ATTR_PREBIND_PARAMS, ¶ms);
  • STMT_ATTR_ARRAY_SIZE: number of array elements. This option was added in Connector/C 3.0 and requires MariaDB 10.2 or later

unsigned int array_size= 5;
rc= mysql_stmt_attr_set(stmt, STMT_ATTR_ARRAY_SIZE, &array_size);
  • 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 MariaDB 10.2 or later

size_t row_size= sizeof(struct st_customer);
rc= mysql_stmt_attr_set(stmt, STMT_ATTR_ROW_SIZE, &array_size);
  • 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 mysql_stmt_execute(). If there is already an open cursor from a previous mysql_stmt_execute() call, it closes the cursor before opening a new one. mysql_stmt_reset() also closes any open cursor before preparing the statement for re-execution.

  • If you open a cursor for a prepared statement it is unnecessary to call mysql_stmt_store_result().

  • mysql_stmt_free_result() closes any open cursor.

See Also

  • mariadb_stmt_execute_direct()

  • mysql_stmt_attr_get()

mysql_stmt_bind_param

Syntax

my_bool mysql_stmt_bind_param(MYSQL_STMT * stmt,
                              MYSQL_BIND * bnd);
  • 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 mysql_stmt_prepare(). Returns zero on success, non-zero on failure.

  • The number of parameters can be obtained by mysql_stmt_param_count().

  • If the number of parameters is unknown, for example when using mariadb_stmt_execute_direct(), the number of parameters have to be specified with the mysql_stmt_attr_set() function.

See Also

  • mariadb_stmt_execute_direct()

  • mysql_stmt_prepare()

  • mysql_stmt_bind_result()

  • mysql_stmt_execute()

  • mysql_stmt_param_count()

  • mysql_stmt_send_long_data()

mysql_stmt_bind_result

Syntax

my_bool mysql_stmt_bind_result(MYSQL_STMT * stmt,
                               MYSQL_BIND * bind);
  • 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 columns in result set.

Description

Binds columns in the result set to variables. Returns zero on success, non-zero on failure.

To determine the number of columns in result set use mysql_stmt_field_count().

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.

See Also

  • mysql_stmt_field_count()

  • mysql_stmt_execute()

  • mysql_stmt_fetch()

mysql_stmt_close

Syntax

my_bool mysql_stmt_close(MYSQL_STMT * stmt);
  • 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 mysql_stmt_reset().

See Also

  • mysql_stmt_init()

  • mysql_stmt_reset()

mysql_stmt_data_seek

Syntax

void mysql_stmt_data_seek(MYSQL_STMT * stmt,
                          my_ulonglong offset);
  • stmt - a statement handle, which was previously allocated by mysql_stmt_init().

  • offset - row offset. This value must between 0 and number of rows - 1.

Description

Seeks to an arbitrary row in statement result set obtained by a previous call to mysql_stmt_store_result(). Returns void.

The number of rows can be obtained with the function mysql_stmt_num_rows().

See Also

  • mysql_stmt_row_tell()

  • mysql_stmt_store_result()

  • mysql_stmt_num_rows()