1
0
mirror of https://github.com/MariaDB/server.git synced 2026-10-23 18:49:29 +03:00

Merge branch 10.6 into 10.11

This commit is contained in:
forkfun
2026-07-22 19:49:18 +02:00
4341 changed files with 399378 additions and 125495 deletions

View File

@@ -26,8 +26,16 @@ An amazing description should answer some questions like:
TODO: fill description here
## How can this PR be tested?
TODO: fill steps to reproduce here, if applicable,
or remove the section
TODO: modify the automated test suite to verify that the PR causes MariaDB to
behave as intended. Consult the documentation on
["Writing good test cases"](https://mariadb.org/get-involved/getting-started-for-developers/writing-good-test-cases-mariadb-server).
In many cases, this will be as simple as modifying one `.test` and one `.result`
file in the `mysql-test/` subdirectory. Without _automated_ tests, future regressions
in the expected behavior can't be automatically detected and verified.
If the changes are not amenable to automated testing, please explain why not and
carefully describe how to test manually.
<!--
Tick one of the following boxes [x] to help us understand
@@ -47,4 +55,3 @@ You might consider answering some questions like:
-->
## Backward compatibility
TODO: fill details here, if applicable, or remove the section

8
.gitignore vendored
View File

@@ -107,6 +107,7 @@ packaging/rpm-oel/mysql.spec
packaging/rpm-uln/mysql.10.0.11.spec
packaging/solaris/postinstall-solaris
extra/pcre2
extra/libfmt
plugin/auth_pam/auth_pam_tool
plugin/auth_pam/config_auth_pam.h
plugin/aws_key_management/aws-sdk-cpp
@@ -186,6 +187,7 @@ sql-bench/innotest1b.pl
sql-bench/innotest2.pl
sql-bench/innotest2a.pl
sql-bench/innotest2b.pl
sql-bench/output
sql-bench/run-all-tests.pl
sql-bench/server-cfg.pl
sql-bench/test-ATIS.pl
@@ -240,7 +242,6 @@ storage/perfschema/pfs_config.h
storage/rocksdb/ldb
storage/rocksdb/myrocks_hotbackup
storage/rocksdb/mysql_ldb
storage/rocksdb/myrocks_hotbackup
storage/rocksdb/rdb_source_revision.h
storage/rocksdb/sst_dump
strings/conf_to_src
@@ -257,12 +258,13 @@ support-files/mariadb-extra.socket
support-files/mariadb@.service
support-files/mariadb@.socket
support-files/mariadb-extra@.socket
support-files/mini-benchmark
support-files/my-huge.cnf
support-files/my-innodb-heavy-4G.cnf
support-files/my-large.cnf
support-files/my-medium.cnf
support-files/my-small.cnf
support-files/mysql-log-rotate
support-files/mariadb.logrotate
support-files/mysql.10.0.11.spec
support-files/mysql.server
support-files/mysql.service
@@ -615,6 +617,8 @@ scripts/mariadb-setpermission
sql/mariadbd
sql/mariadb-tzinfo-to-sql
storage/rocksdb/mariadb-ldb
strings/ctype-uca1400data.h
strings/uca-dump
tests/mariadb-client-test
versioninfo_dll.rc
versioninfo_exe.rc

View File

@@ -43,7 +43,7 @@ variables:
CMAKE_FLAGS: "-DWITH_SSL=system -DPLUGIN_COLUMNSTORE=NO -DPLUGIN_ROCKSDB=NO -DPLUGIN_S3=NO -DPLUGIN_MROONGA=NO -DPLUGIN_CONNECT=NO -DPLUGIN_MROONGA=NO -DPLUGIN_TOKUDB=NO -DPLUGIN_PERFSCHEMA=NO -DWITH_WSREP=OFF"
# Major version dictates which branches share the same ccache. E.g. 10.6-abc
# and 10.6-xyz will have the same cache.
MARIADB_MAJOR_VERSION: "10.6"
MARIADB_MAJOR_VERSION: "10.9"
# NOTE! Currently ccache is only used on the Centos 9 build. As each job has
# sufficiently different environments they are unable to benefit from each
# other's ccaches. As each build generates about 1 GB of ccache, having
@@ -217,16 +217,18 @@ centos9:
GIT_SUBMODULE_STRATEGY: normal
script:
- yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
- dnf -y install 'dnf-command(config-manager)'
- dnf config-manager --set-enabled crb
- yum install -y yum-utils rpm-build openssl-devel libeatmydata ccache
# Install missing dependencies
- yum install -y https://mirror.stream.centos.org/9-stream/CRB/x86_64/os/Packages/Judy-devel-1.0.5-28.el9.x86_64.rpm
- yum install -y https://mirror.stream.centos.org/9-stream/CRB/x86_64/os/Packages/bison-devel-3.7.4-5.el9.x86_64.rpm
- yum install -y https://mirror.stream.centos.org/9-stream/CRB/x86_64/os/Packages/multilib-rpm-config-1-19.el9.noarch.rpm
- yum install -y gcc gcc-c++ cmake make bison ncurses-devel
- yum install -y zlib-devel libaio-devel systemd-devel pcre2-devel
- yum install -y libevent-devel libxml2-devel snappy-devel lz4-devel
- yum install -y libcurl-devel pam-devel libzstd-devel liburing-devel
- yum install -y lzo-devel bzip2-devel readline-devel xz-devel cracklib-devel
- yum install -y Judy-devel bison-devel multilib-rpm-config
# Configure ccache
- source /etc/profile.d/ccache.sh
- export CCACHE_DIR="$(pwd)/.ccache"; ccache --zero-stats
# This repository does not have any .spec files, so install dependencies based on CentOS spec file
- yum-builddep -y mariadb-server
- mkdir builddir; cd builddir
- cmake -DRPM=$CI_JOB_NAME $CMAKE_FLAGS .. 2>&1 | tee -a ../build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
- eatmydata make package -j 2 2>&1 | tee -a ../build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
@@ -510,6 +512,37 @@ flawfinder:
- flawfinder-all-vulnerabilities.html
- flawfinder-min-level5.json
mini-benchmark:
stage: test
dependencies:
- fedora
needs:
- fedora
script:
- ls -la rpm; rm -vf rpm/*.el?.* # Delete artifacts from Centos builds
# Don't use cracklib, otherwise the Sysbench user password will be rejected
- rm -vf rpm/*cracklib*.rpm
# Nothing provides galera-4 on Fedora, so this step fails if built with wsrep
- yum install -y rpm/*.rpm
# Fedora does not support running services in Docker (like Debian packages do) so start it manually
- /usr/bin/mariadb-install-db -u mysql
- sudo -u mysql /usr/sbin/mariadbd & sleep 10
# Since we did a manual start, we also need to run upgrade manually
- /usr/bin/mariadb-upgrade -u root
- |
mariadb --skip-column-names -e "SELECT @@version, @@version_comment" | tee /tmp/version
grep $MARIADB_MAJOR_VERSION /tmp/version || echo "MariaDB didn't install properly"
- yum install -y sysbench procps-ng perf flamegraph flamegraph-stackcollapse-perf util-linux dnf-utils
- /usr/share/mysql/mini-benchmark
- cp -av */sysbench-run-*.log */metrics.txt . # Move files one level down so they can be saved as artifacts
artifacts:
when: always
paths:
- sysbench-run-*.log
reports:
metrics:
- metrics.txt
# Once all RPM builds and tests have passed, also run the DEB builds and tests
# @NOTE: This is likely to work well only on salsa.debian.org as the Gitlab.com
# runners are too small for everything this stage does.

View File

@@ -34,7 +34,7 @@ fi
commands=""
# git clean -fdX removes all ignored (build) files
if test -d .git
if test -d .git && test -d libmariadb/CMakeFiles
then
commands="\
git clean -fdX

View File

@@ -204,6 +204,7 @@ base_configs="$base_configs --with-extra-charsets=complex "
base_configs="$base_configs --enable-thread-safe-client "
base_configs="$base_configs --with-big-tables $maintainer_mode"
base_configs="$base_configs --with-plugin-aria --with-aria-tmp-tables --with-plugin-s3=STATIC"
base_configs="$base_configs $SSL_LIBRARY"
if test -d "$path/../cmd-line-utils/readline"
then
@@ -214,18 +215,17 @@ then
fi
max_plugins="--with-plugins=max"
max_no_embedded_configs="$SSL_LIBRARY $max_plugins"
max_no_qc_configs="$SSL_LIBRARY $max_plugins --without-query-cache"
max_configs="$SSL_LIBRARY $max_plugins --with-embedded-server --with-libevent --with-plugin-rocksdb=dynamic --with-plugin-test_sql_discovery=DYNAMIC --with-plugin-file_key_management=DYNAMIC"
all_configs="$SSL_LIBRARY $max_plugins --with-embedded-server --with-innodb_plugin --with-libevent"
max_no_embedded_configs="$max_plugins"
max_no_qc_configs="$max_plugins --without-query-cache"
max_configs="$max_plugins --with-embedded-server --with-libevent --with-plugin-rocksdb=dynamic --with-plugin-test_sql_discovery=DYNAMIC --with-plugin-file_key_management=DYNAMIC --with-plugin-hashicorp_key_management=DYNAMIC --with-plugin-auth_gssapi=DYNAMIC"
all_configs="$max_configs"
#
# CPU and platform specific compilation flags.
#
alpha_cflags="$check_cpu_cflags -Wa,-m$cpu_flag"
amd64_cflags="$check_cpu_cflags"
amd64_cxxflags="" # If dropping '--with-big-tables', add here "-DBIG_TABLES"
pentium_cflags="$check_cpu_cflags -m32"
amd64_cflags="$check_cpu_cflags -m64"
pentium64_cflags="$check_cpu_cflags -m64"
ppc_cflags="$check_cpu_cflags"
sparc_cflags=""

View File

@@ -1,7 +1,10 @@
#! /bin/sh
path=`dirname $0`
set -- "$@" --with-debug=full
. "$path/SETUP.sh"
extra_flags="$amd64_cflags $debug_cflags"
extra_configs="$amd64_configs $debug_configs $all_configs"
CC="$CC --pipe"
. "$path/FINISH.sh"

View File

@@ -1,7 +1,6 @@
#! /bin/sh
# Copyright (c) 2005, 2006 MySQL AB
# Use is subject to license terms
# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -14,11 +13,13 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA
path=`dirname $0`
. "$path/SETUP.sh"
extra_flags="$amd64_cflags $debug_cflags"
extra_configs="$amd64_configs $debug_configs $max_configs"
CC="$CC --pipe"
. "$path/FINISH.sh"

View File

@@ -6,7 +6,5 @@ set -- "$@" --with-debug=full
extra_flags="$pentium64_cflags $debug_cflags"
extra_configs="$pentium_configs $debug_configs $all_configs"
extra_configs="$extra_configs "
CC="$CC --pipe"
. "$path/FINISH.sh"

View File

@@ -21,6 +21,5 @@ path=`dirname $0`
extra_flags="$pentium64_cflags $debug_cflags"
extra_configs="$pentium_configs $debug_configs $max_configs"
extra_configs="$extra_configs "
CC="$CC --pipe"
. "$path/FINISH.sh"

View File

@@ -31,7 +31,7 @@ path=`dirname $0`
# the destination
#
extra_flags="$pentium64_cflags $debug_cflags -fsanitize=undefined -DWITH_UBSAN -Wno-conversion -Wno-uninitialized"
extra_flags="$pentium64_cflags $debug_cflags -fsanitize=undefined -DWITH_UBSAN -Wno-conversion -Wno-uninitialized -Wno-unused-parameter"
extra_configs="$pentium_configs $debug_configs -DWITH_UBSAN=ON -DMYSQL_MAINTAINER_MODE=NO --without-spider"
. "$path/FINISH.sh"

View File

@@ -31,7 +31,7 @@ ENDIF()
# in RPM's:
#set(CPACK_RPM_SPEC_MORE_DEFINE "%define __spec_install_post /bin/true")
FOREACH(p CMP0022 CMP0046 CMP0040 CMP0048 CMP0054 CMP0056 CMP0067 CMP0074 CMP0075 CMP0069 CMP0135)
FOREACH(p CMP0022 CMP0046 CMP0040 CMP0048 CMP0054 CMP0056 CMP0067 CMP0074 CMP0075 CMP0069 CMP0135 CMP0091)
IF(POLICY ${p})
CMAKE_POLICY(SET ${p} NEW)
ENDIF()
@@ -160,6 +160,7 @@ INCLUDE(readline)
INCLUDE(libutils)
INCLUDE(dtrace)
INCLUDE(pcre)
INCLUDE(libfmt)
INCLUDE(ctest)
INCLUDE(plugin)
INCLUDE(install_macros)
@@ -301,14 +302,18 @@ ENDIF()
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DENABLED_DEBUG_SYNC")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DENABLED_DEBUG_SYNC")
IF(CMAKE_COMPILER_IS_GNUCC AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "10")
IF(CMAKE_C_COMPILER_ID STREQUAL "GNU" AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "10")
# Enable extra checks when using a recent enough version of GNU libstdc++
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG -D_GLIBCXX_ASSERTIONS")
ENDIF()
OPTION(ENABLE_GCOV "Enable gcov (debug, Linux builds only)" OFF)
OPTION(ENABLE_GCOV "Enable gcov (debug, macOS and Linux builds only)" OFF)
IF (ENABLE_GCOV)
MY_CHECK_AND_SET_COMPILER_FLAG("-DHAVE_gcov -fprofile-arcs -ftest-coverage -lgcov" DEBUG)
IF (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
MY_CHECK_AND_SET_COMPILER_FLAG("--coverage" DEBUG)
ELSE()
MY_CHECK_AND_SET_COMPILER_FLAG("-DHAVE_gcov -fprofile-arcs -ftest-coverage -lgcov" DEBUG)
ENDIF()
ENDIF()
OPTION(WITHOUT_PACKED_SORT_KEYS "disable packed sort keys" OFF)
@@ -351,7 +356,13 @@ SET(WITH_SAFEMALLOC "AUTO" CACHE STRING "Use safemalloc memory debugger. Will re
IF(WITH_SAFEMALLOC MATCHES "ON")
ADD_DEFINITIONS( -DSAFEMALLOC)
ELSEIF(WITH_SAFEMALLOC MATCHES "AUTO" AND NOT WIN32 AND NOT WITH_VALGRIND)
ELSEIF(WITH_SAFEMALLOC MATCHES "AUTO"
AND NOT WIN32
AND NOT WITH_VALGRIND
AND NOT WITH_ASAN
AND NOT WITH_UBSAN
AND NOT WITH_TSAN
AND NOT WITH_MSAN)
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC")
ENDIF()
@@ -419,7 +430,8 @@ ADD_DEFINITIONS(-DHAVE_CONFIG_H)
IF(_FILE_OFFSET_BITS)
ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=${_FILE_OFFSET_BITS})
ENDIF()
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/include)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/include
${CMAKE_SOURCE_DIR}/include/providers)
# Add bundled or system zlib.
MYSQL_CHECK_ZLIB_WITH_COMPRESS()
@@ -431,6 +443,7 @@ MYSQL_CHECK_READLINE()
SET(MALLOC_LIBRARY "system")
CHECK_PCRE()
CHECK_LIBFMT()
ADD_SUBDIRECTORY(tpool)
CHECK_SYSTEMD()
@@ -523,7 +536,7 @@ ADD_SUBDIRECTORY(support-files)
ADD_SUBDIRECTORY(extra/aws_sdk)
IF(NOT CMAKE_CROSSCOMPILING OR DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
SET(EXPORTED comp_err comp_sql factorial)
SET(EXPORTED comp_err comp_sql factorial uca-dump)
IF(NOT WITHOUT_SERVER)
SET(EXPORTED ${EXPORTED} gen_lex_hash gen_lex_token)
ENDIF()
@@ -582,9 +595,6 @@ INSTALL_DOCUMENTATION(README.md CREDITS COPYING THIRDPARTY COMPONENT Readme)
IF(UNIX)
INSTALL_DOCUMENTATION(Docs/INSTALL-BINARY COMPONENT Readme)
IF(WITH_WSREP)
INSTALL_DOCUMENTATION(Docs/README-wsrep COMPONENT Readme)
ENDIF()
ENDIF()
INCLUDE(build_depends)
@@ -640,7 +650,7 @@ IF(NOT WITHOUT_SERVER)
perror
replace)
IF(WIN32)
ADD_DEPENDENCIES(minbuild echo mariadb-install-db my_safe_kill)
ADD_DEPENDENCIES(minbuild echo mariadb-install-db my_safe_kill mariadb-upgrade-service)
ENDIF()
ADD_CUSTOM_TARGET(smoketest
COMMAND perl ./mysql-test-run.pl main.1st

314
COMMUNITY_CONTRIBUTIONS.md Normal file
View File

@@ -0,0 +1,314 @@
# Community Contributions Process #
MariaDB Server is an Open Source project that thrives thanks to its community.
MariaDB Foundation handles all community contributions in a timely manner.
This document provides a description how community contributions are processed.
Please make sure to familiarize yourself and follow the process
when submitting contributions.
All community contribution pull requests will eventually get the
"External Contribution" label at some point.
## The two sides of a contribution
A contribution should have **BOTH** a design document
in [Jira](https://jira.mariadb.org) and a pull request
in [GitHub](https://github.com/MariaDB/server).
In the normal case the process usually starts with filing
a [Jira](https://jira.mariadb.org) for the bug or the feature proposed.
Then a pull request gets created to implement the feature or fix the bug.
It could be the other way around too.
But it's important to always have both prior to review.
There are constant efforts (including background processes) to make sure
the states of the Jira and the corresponding pull request(s) are kept in sync.
### What should go into the jira ###
The [Jira](https://jira.mariadb.org) is used to describe the design of the
feature: why is it a good idea, what should work, what might not work etc.
Or to describe the bug: what is wrong, how to recreate it,
what's the expected outcome etc.
See [here](https://mariadb.org/contribute/#contribute-to-testing)
for more details.
> [!TIP]
> For faster processing always fill all of the applicable Jira fields:
> versions affected, component, etc.
> [!TIP]
> A lot of time an energy can be saved, especially on more complex tasks,
> by communicating early with possible reviewers and writing down a design
> specification into the Jira prior to implementation
> [!CAUTION]
> If the jira already exists and is assigned to somebody please reach out
> to them **before** starting to working on it to avoid effort duplication.
### What should go into the pull request ###
The pull request is used to describe the implementation.
E.g. how the bug is fixed. Or how the feature is implemented in detail.
The pull request should contain a **single commit** per logical change!
And that commit should have a commit message that's compliant with
the [MariaDB coding standards](https://github.com/MariaDB/server/blob/main/CODING_STANDARDS.md#git-commit-messages).
> [!IMPORTANT]
> Put the Jira reference, e.g. "MDEV-12345 ", as a prefix
> to your pull request's title
> [!CAUTION]
> If there's no Jira or no reference to it in your pull request
> there might be delays in processing it
## States of a Community Contribution ##
```mermaid
stateDiagram-v2
[*] --> Draft
Draft --> Closed : 3 Months of inactivity
Draft --> Open
Open --> Closed : Rejected
state "Preliminary Review" as PR
state "Final Review" as FR
Open --> PR
PR --> Draft : 21 Days of inactivity
PR --> FR
PR --> Closed : Rejected
FR --> PR
FR --> Draft : 21 Days of inactivity
FR --> Approved
FR --> Closed : Rejected
Approved --> Merged
Merged --> [*]
Closed --> [*]
```
### Draft ###
* Pull request
* State: Draft
* Assignee: Not relevant
* Label: optionally "need feedback" and/or "External Contribution"
* Jira
* State: absent or in "Stalled"/"Open"/"Confirmed"
* Assignee: Not relevant.
Contributions in this state are are excluded from any queues.
Except for the 3 months close period when they need feedback.
Put your contribution in Draft mode if it's not yet ready for
preliminary review.
Or if you want to sketch some sort of a pull request draft
to *manually* show to people.
At any time the pull request can be transitioned to "Open" state
by clicking the "Ready for review" button in
the GitHub pull request viewer UI.
> [!NOTE]
> There is a background process to move contributions in
> that state to "Closed" state if they have the "need feedback"
> and "External Contribution" pull request labels and there's
> been no activity for 3 months.
### Open ##
* Pull request
* State: Open
* Assignee: Not relevant
* Label: not relevant
* Jira
* State: "Stalled", "Confirmed" or "Open"
* Assignee: Not relevant
Contributions in this state should be ready for review. This means:
* There should be a single commit per logical change in the pull request
and this commit must
* have a commit message that corresponds to the MariaDB Server coding
standards, including the Jira reference.
* contain a concise description of what the change is:
this goes to the git commit log and is used for reference.
* should contain all the relevant attribution headers
(co-authors, reviewers etc.)
* The pull request should contain at least a copy of
the commit message. Ideally more can be added to it.
* The pull request should target the
right branch.
Rule of thumb: the lowest affected but not older than three years
GA branch for bugs, main branch for features and refactorings.
* All the relevant buildbot tests should be passing. Or, if failing,
the failures should be studied, compared to the test results on the
target branch (https://buildbot.mariadb.org/#/grid?branch=BRANCHNAME)
and justified as unrelated.
* The licensing of the pull request should be clear. As a legal requirement,
you must accept the CLA (contributor license agreement, also called MCA,
MariaDB Contributor Agreement) or, alternatively, license your contribution
under the 3-clause BSD license. See the
[MariaDB Contributor Agreement FAQ](https://mariadb.com/docs/general-resources/community/community/legal-documents/mariadb-contributor-agreement-faq)
for the difference between these two options and when to use what.
Questions and Answers
* When to move a contribution to Open state?
* When you're ready to submit it to a preliminary review
* Who moves a contribution to Open state?
* Usually the submitter
* What states can the contribution be moved to?
* Preliminary review, when the preliminary review starts
* Final review, if the final review starts before the preliminary
* Closed, if rejected or has the "need feedback" pull request label and
has been inactive for 3 months
* Who creates the Jira issue?
* If there isn't one already, the submitter can and should create it
> [!NOTE]
> There is an asynchronous process that assigns "External Contribution"
> label to pull requests in this state, if absent.
> This marks the contribution entering the preliminary review queue.
### Preliminary Review ###
* Pull request
* State: Open
* Assignee: The preliminary reviewer
* Label: External Contribution
* Jira
* State: "Open", "In Progress", "Stalled" or "Needs feedback"
* Assignee: The preliminary reviewer
* Label: "Contribution"
Contributions enter this state usually from "Open" state.
The preliminary reviewer does the following:
* Ensures that the contribution is ready for review: has jira,
tests pass, standards are followed etc.
* Provides a best effort technical review(s) of the content.
Note that the preliminary reviewer is not a domain expert,
so take that review with a grain of salt.
This is done to save time the final reviewer's time.
* Follows up so that their remarks are addressed.
* Moves the contribution to Draft if the contributor is inactive
for 3 weeks.
* Moves the contribution to "Final Review" when done.
* Assigns a "contribution" label to the Jira and makes sure
it has "Critical" priority.
* Can assign a "rework" label to community contribution pull requests.
This means that reviews are done through some other process.
Or that an internal developer has taken over the contribution to
re-do it and push it directly.
### Final review ###
* Pull request
* State: Open
* Assignee: The current final reviewer
* Label: External Contribution
* Jira
* State: "In progress", "In review", "In testing", "Stalled",
"Needs feedback"
* Assignee: The final reviewer (when actively reviewing) or the
preliminary reviewer, when waiting for reply by the contributior
for too long
* Label: "Contribution"
Contributions enter this state when the preliminary review is done.
Or if a certain domain expert takes interest into an incoming contribution
and starts interacting with it prior to the preliminary review.
The final reviewer is either a domain expert or a test engineer.
There can be more than one final reviewers assigned: usually done for
more complex contributions or when a separate testing step is required.
Watch the jira state and the assignees in this state for
detailed information:
* "In review" means that somebody is assigned to review and they are
working on it
* "Stalled" means that they're waiting on something. Also watch
the assignee in that state. If the jira is re-assigned back
from a final reviewer to a preliminary reviewer, this means
that the final reviewer waited for reply by the submitter
for some time and have (temporarily) moved on by
moving the Jira to "In progress" and assigning it back to the
preliminary reviewer. When a reply is received the preliminary
reviewer will move the jira back to "In review" or "In testing" and
re-assign to the final reviewer that has requested the feedback.
* "In testing" means a test engineer is assigned and they are working on
testing this.
* "Needs feedback" means that the reviewer needs feedback to proceed
* "In progress" means that the preliminary reviewer has picked this up
and is working on it.
**Try to avoid getting into the re-assignment loop by being active!**
> [!NOTE]
> There's a requirement that certain contributions need to undergo
> a separate test step. This is usually done for the new features or
> for more complex and risky bug fixes. If that's the desired state,
> a test engineer will be assigned as a final reviewer. See
> https://mariadb.com/docs/server/reference/product-development/mariadb-quality-development-rules
> for more details.
> [!TIP]
> The final reviewer is usually a core server developer. They often work
> in cycles, timed to match the release schedule, switching between
> bug fixing and new feature development. If a bug fix PR comes
> in the middle of the new feature development cycle or vice versa
> it might take up to a couple of months for a developer to do a review.
### Approved ###
* Pull request
* State: Open
* Assignee: The last final reviewer
* Label: External Contribution
* Jira
* State: "Approved"
* Assignee: The last final reviewer
* Label: "Contribution"
Contributions in that state are ready to be merged. Usually it's the last
final reviewer's job to trigger the merge of the pull request and update
the Jira accordingly. But sometimes the preliminary reviewer can help with
that too.
Prior to merging the pull request it should be rebased to the latest in
the target branch. Thus the contributor should be watching for any
possible merge conflicts or test failures during that rebase.
The person that does the merge might need some assistance by the contributor.
When the pull request is successfully merged the Jira should be moved to
"Closed" state and its target version should be specified.
### Merged ###
* Pull request
* State: Merged
* Assignee: not applicable
* Label: External Contribution
* Jira
* State: "Closed"
* Assignee: not applicable
* Label: "Contribution"
This is the "success" final state for a contribution.
Ideally all contributions will end up in this state.
No further actions are necessary.
### Closed ###
* Pull request
* State: Closed
* Assignee: not applicable
* Label: eventually "need feedback"
* Jira
* State: "Closed"
* Assignee: not applicable
This is the "failure" final state for a contribution.
A contribution can land in this state for one of the following reasons:
* It was rejected by the reviewers
* It was retracted by the contributor
* It was closed due to contributor's inactivity or lack of replies to
questions, as signified by the presence of the "need feedback" label
into the pull request.

View File

@@ -5,23 +5,26 @@ MariaDB Server has a vibrant community contributing in a wide range of areas. Th
### Engage online with other community members
---
- [MariaDB on Zulip](https://mariadb.zulipchat.com/)
- [maria-developers mailing list](http://launchpad.net/~maria-developers)
- [maria-discuss mailing list](http://launchpad.net/~maria-discuss)
- [maria-docs mailing list](http://launchpad.net/~maria-docs)
- The MariaDB Foundation and MariaDB Corporation have a presence on Reddit, Twitter and Facebook. See the [social media page](https://mariadb.com/kb/en/mariadb/social-media/).
- [maria-developers mailing list](https://lists.mariadb.org/postorius/lists/developers.lists.mariadb.org/)
- [maria-discuss mailing list](https://lists.mariadb.org/postorius/lists/discuss.lists.mariadb.org/)
- [maria-docs mailing list](https://lists.mariadb.org/postorius/lists/docs.lists.mariadb.org/)
- The MariaDB Foundation and MariaDB Corporation have a presence on Reddit, Twitter and Facebook. See the [social media page](https://mariadb.com/docs/general-resources/community/joining-the-community).
### Help document MariaDB
----
- Contribute towards [documenting MariaDB Server](https://mariadb.com/kb/en/meta/writing-editing-library-articles/) and its ecosystem by adding new content or improving existing content.
- [Translate](https://mariadb.com/kb/en/meta/translating-library-articles/) existing documentation.
---
- Contribute towards [documenting MariaDB Server](https://mariadb.com/docs/general-resources/about/readme/contributing-documentation) and its ecosystem by adding new content or improving existing content.
- [Translate](https://mariadb.com/docs/general-resources/about/readme/contributing-documentation) existing documentation.
### Help debug and develop MariaDB
-----
- [Report bugs](https://jira.mariadb.org/)
- Test development versions
- Write code to fix bugs or develop new features (see [Getting Started for Developers](https://mariadb.org/getting-started-for-developers)).See also [list of beginner friendly tasks](https://jira.mariadb.org/browse/MDEV-15736?jql=resolution%20%3D%20Unresolved%20AND%20labels%20%3D%20beginner-friendly%20ORDER%20BY%20updated%20DESC)
- Help with code quality control
- Participate in packaging for different Linux distributions
### Help develop MariaDB
---
- Fix bugs or develop new features. See [COMMUNITY_CONTRIBUTIONS.md](COMMUNITY_CONTRIBUTIONS.md) for details.
- Review code contributions
- Test bug fixes and features
- Participate in packaging for different distributions
Check the [list of beginner friendly tasks](https://jira.mariadb.org/issues/?jql=status%3DConfirmed%20AND%20labels%3Dbeginner-friendly%20ORDER%20BY%20updated%20DESC). Or talk to the [MariaDB developers](#engage-online-with-other-community-members).
See also [Getting Started for Developers](https://mariadb.org/getting-started-for-developers). Coding standards for the main source code can be found in [CODING_STANDARDS.md](CODING_STANDARDS.md).
### Sponsor or donate
---
@@ -31,10 +34,10 @@ You’re very welcome to support MariaDB Server as an individual, or talk your c
---
- Attend an event
- [Events and Conferences page](https://mariadb.org/events/)
- [mariadb.meetup.com](http://mariadb.meetup.com/)
- [mariadb.meetup.com](https://mariadb.meetup.com/)
### Live QA for beginner contributors
----
### Live Q&A for beginner contributors
---
MariaDB has a dedicated time each week when we answer new contributor questions live on Zulip.
From 8:00 to 10:00 UTC on Mondays, and 10:00 to 12:00 UTC on Thursdays, anyone can ask any questions they’d like,
and a live developer will be available to assist.
@@ -42,5 +45,5 @@ New contributors can ask questions any time, but we will provide immediate feedb
### Additional resources
----
- [MariaDB Foundation ](https://mariadb.org/)
- [Knowledge Base](https://mariadb.com/kb/en/)
- [MariaDB Foundation](https://mariadb.org/)
- [MariaDB Documentation](https://mariadb.com/docs/)

View File

@@ -66,7 +66,7 @@ following services to the MariaDB community:
- Bug fixing in MariaDB (for bugs that affects a large part of the community)
- Building the official MariaDB binaries
- Maintaining https://mariadb.org
- Documenting MariaDB in the MariaDB Knowledge Base https://mariadb.com/kb
- Documenting MariaDB in the MariaDB Documentation https://mariadb.com/docs
To be able to do the above we need help from corporations and individuals!

View File

@@ -2,7 +2,7 @@ MariaDB and MySQL have identical install methods. In this document we
describe how to install MariaDB.
The full documentation for installing MariaDB can be found at
https://mariadb.com/kb/en/library/binary-packages/
https://mariadb.com/docs/server/server-management/install-and-upgrade-mariadb/installing-mariadb/binary-packages
However most documentation at www.mysql.com also applies.
2.2. Installing MariaDB from Generic Binaries on Unix/Linux
@@ -36,7 +36,7 @@ However most documentation at www.mysql.com also applies.
please report them to: https://mariadb.org/jira
See the instructions at
https://mariadb.com/kb/en/mariadb-community-bug-reporting
https://mariadb.com/docs/general-resources/community/community/bug-tracking/reporting-bugs
The basic commands that you must execute to install and use a
MariaDB binary distribution are:
@@ -83,7 +83,7 @@ shell> useradd -g mysql mysql
shell> cd /usr/local
3. Obtain a distribution file using the instructions at
https://mariadb.com/kb/en/library/where-to-download-mariadb/
https://mariadb.com/docs/server/clients-and-utilities/server-client-software/download/where-to-download-mariadb
The description below describes how to install a MariaDB tar file.
4. Unpack the distribution, which creates the installation
@@ -152,7 +152,7 @@ shell> chown -R mysql data
location where your system has its startup files. More
information can be found in the support-files/mysql.server
script itself and at
https://mariadb.com/kb/en/starting-and-stopping-mariadb-automatically.
https://mariadb.com/docs/server/server-management/starting-and-stopping-mariadb/starting-and-stopping-mariadb-automatically
10. You can set up new accounts using the bin/mysql_setpermission
script if you install the DBI and DBD::MariaDB Perl modules. See
Section 4.6.14, "mysql_setpermission --- Interactively Set
@@ -184,7 +184,7 @@ shell> bin/mysqld_safe --user=mysql &
directory.
More information about mysqld_safe can be found at
https://mariadb.com/kb/en/mysqld_safe
https://mariadb.com/docs/server/clients-and-utilities/legacy-clients-and-utilities/mariadbd_safe
Note

View File

@@ -1,485 +0,0 @@
Codership Oy
http://www.codership.com
<info@codership.com>
DISCLAIMER
THIS SOFTWARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
IN NO EVENT SHALL CODERSHIP OY BE HELD LIABLE TO ANY PARTY FOR ANY DAMAGES
RESULTING DIRECTLY OR INDIRECTLY FROM THE USE OF THIS SOFTWARE.
Trademark Information.
MySQL is a trademark or registered trademark of Oracle and/or its affiliates.
Other trademarks are the property of their respective owners.
Licensing Information.
Please see file COPYING that came with this distribution
Source code can be found at
wsrep API: https://launchpad.net/wsrep
MySQL patch: https://launchpad.net/codership-mysql
ABOUT THIS DOCUMENT
This document covers installation and configuration issues specific to this
wsrep-patched MySQL distribution by Codership. It does not cover the use or
administration of MySQL server per se. The reader is assumed to know how to
install, configure, administer and use standard MySQL server version 5.1.xx.
MYSQL-5.5.x/wsrep-23.x
CONTENTS:
=========
1. WHAT IS WSREP PATCH FOR MYSQL
2. INSTALLATION
3. FIRST TIME SETUP
3.1 CONFIGURATION FILES
3.2 DATABASE PRIVILEGES
3.3 CHECK AND CORRECT FIREWALL SETTINGS
3.4 SELINUX
3.5 APPARMOR
3.6 CONNECT TO CLUSTER
4. UPGRADING FROM MySQL 5.1.x
5. CONFIGURATION OPTIONS
5.1 MANDATORY MYSQL OPTIONS
5.2 WSREP OPTIONS
6. ONLINE SCHEMA UPGRADE
6.1 TOTAL ORDER ISOLATION (TOI)
6.2 ROLLING SCHEMA UPGRADE (RSU)
7. LIMITATIONS
1. WHAT IS WSREP PATCH FOR MYSQL/INNODB
Wsrep API developed by Codership Oy is a modern generic (database-agnostic)
replication API for transactional databases with a goal to make database
replication/logging subsystem completely modular and pluggable. It is developed
with flexibility and completeness in mind to satisfy a broad range of modern
replication scenarios. It is equally suitable for synchronous and asynchronous,
master-slave and multi-master replication.
wsrep stands for Write Set REPlication.
Wsrep patch for MySQL/InnoDB allows MySQL server to load and use various wsrep
API implementations ("wsrep providers") with different qualities of service.
Without wsrep provider MySQL-wsrep server will function like a regular
standalone server.
2. INSTALLATION
In the examples below mysql authentication options are omitted for brevity.
2.1 Download and install mysql-wsrep package.
Download binary package for your Linux distribution from
https://launchpad.net/codership-mysql/
2.1.1 On Debian and Debian-derived distributions.
Upgrade from mysql-server-5.0 to mysql-wsrep is not supported yet, please
upgrade to mysql-server-5.1 first.
If you're installing over an existing mysql installation, mysql-server-wsrep
will conflict with the mysql-server-5.1 package, so remove it first:
$ sudo apt-get remove mysql-server-5.1 mysql-server-core-5.1
mysql-server-wsrep requires psmisc and mysql-client-5.1.47 (or later).
MySQL 5.1 packages can be found from backports repositories.
For further information about configuring and using Debian or Ubuntu
backports, see:
* http://backports.debian.org
* https://help.ubuntu.com/community/UbuntuBackports
For example, installation of required packages on Debian Lenny:
$ sudo apt-get install psmisc
$ sudo apt-get -t lenny-backports install mysql-client-5.1
Now you should be able to install the mysql-wsrep package:
$ sudo dpkg -i <mysql-server-wsrep DEB>
2.1.2 On CentOS and similar RPM-based distributions.
If you're migrating from existing MySQL installation, there are two variants:
a) If you're already using official MySQL-server-community 5.1.x RPM from
Oracle:
# rpm -e mysql-server
b) If you're upgrading from the stock mysql-5.0.77 on CentOS:
1) Make sure that the following packages are not installed:
# rpm --nodeps --allmatches -e mysql-server mysql-test mysql-bench
2) Install *official* MySQL-shared-compat-5.1.x from
http://dev.mysql.com/downloads/mysql/5.1.html
Actual installation:
# rpm -Uvh <MySQL-server-wsrep RPM>
If this fails due to unsatisfied dependencies, install missing packages
(e.g. yum install perl-DBI) and retry.
Additional packages to consider (if not yet installed):
* galera (multi-master replication provider, https://launchpad.net/galera)
* MySQL-client-community (for connecting to server and mysqldump-based SST)
* rsync (for rsync-based SST)
* mariabackup and nc (for mariabackup-based SST)
2.2 Upgrade system tables.
If you're upgrading a previous MySQL installation, it might be advisable to
upgrade system tables. To do that start mysqld and run mysql_upgrade command.
Consult MySQL documentation in case of errors. Normally they are not critical
and can be ignored unless specific functionality is needed.
3. FIRST TIME SETUP
Unless you're upgrading an already installed mysql-wsrep package, you will need
to set up a few things to prepare the server for operation.
3.1 CONFIGURATION FILES
* Make sure system-wide my.cnf does not bind mysqld to 127.0.0.1. That is, if
you have the following line in [mysqld] section, comment it out:
#bind-address = 127.0.0.1
* Make sure system-wide my.cnf contains "!includedir /etc/mysql/conf.d/" line.
* Edit /etc/mysql/conf.d/wsrep.cnf and set wsrep_provider option by specifying
a path to the provider library. If you don't have a provider, leave it as it is.
* When a new node joins the cluster it'll have to receive a state snapshot from
one of the peers. This requires a privileged MySQL account with access from
the rest of the cluster. Edit /etc/mysql/conf.d/wsrep.cnf and set mysql
login/password pair for SST, for example:
wsrep_sst_auth=wsrep_sst:wspass
* See CONFIGURATION section below about other configuration parameters that you
might want to change at this point.
3.2 DATABASE PRIVILEGES
Restart MySQL server and connect to it as root to grant privileges to SST
account (empty users confuse MySQL authentication matching rules, we need to
delete them too):
$ mysql -e "SET wsrep_on=OFF; DELETE FROM mysql.user WHERE user='';"
$ mysql -e "SET wsrep_on=OFF; GRANT ALL ON *.* TO wsrep_sst@'%' IDENTIFIED BY 'wspass'";
3.3 CHECK AND CORRECT FIREWALL SETTINGS.
MySQL-wsrep server needs to be accessible from other cluster members through
its client listening socket and through wsrep provider socket. See your
distribution and wsrep provider documentation for details. For example on
CentOS you might need to do something along these lines:
# iptables --insert RH-Firewall-1-INPUT 1 --proto tcp --source <my IP>/24 --destination <my IP>/32 --dport 3306 -j ACCEPT
# iptables --insert RH-Firewall-1-INPUT 1 --proto tcp --source <my IP>/24 --destination <my IP>/32 --dport 4567 -j ACCEPT
If there is a NAT firewall between the nodes, it must be configured to allow
direct connections between the nodes (e.g. via port forwarding).
3.4 SELINUX
If you have SELinux enabled, it may block mysqld from doing required operations.
You'll need to either disable it or configure to allow mysqld to run external
programs and open listen sockets at unprivileged ports (i.e. things that
an unprivileged user can do). See SELinux documentation about it.
To quickly disable SELinux:
1) run 'setenforce 0' as root.
2) set 'SELINUX=permissive' in /etc/selinux/config
3.5 APPARMOR
AppArmor automatically comes with Ubuntu and may also prevent mysqld to from
opening additional ports or run scripts. See AppArmor documentation about its
configuration. To disable AppArmor for mysqld:
$ cd /etc/apparmor.d/disable/
$ sudo ln -s /etc/apparmor.d/usr.sbin.mysqld
$ sudo service apparmor restart
3.6 CONNECT TO CLUSTER
Now you're ready to connect to cluster by setting wsrep_cluster_address variable
and monitor status of wsrep provider:
mysql> SET GLOBAL wsrep_cluster_address='<cluster address string>';
mysql> SHOW STATUS LIKE 'wsrep%';
4 UPGRADING FROM MySQL 5.1.x
!!! THESE INSTRUCTIONS ARE PRELIMINARY AND INCOMPLETE !!!
1) BEFORE UPGRADE (while running 5.1.x):
- comment out 'wsrep_provider' setting from configuration files
(my.cnf and/or wsrep.cnf)
- If performing a rolling upgrade on a running cluster, set
wsrep_sst_method=mysqldump.
You might also need to configure wsrep_sst_receive_address and
wsrep_sst_auth appropriately. mysqldump is the only way to transfer data
from 5.1.x to 5.5.x reliably.
- remove innodb_plugin settings from configuration files.
2) Perform upgrade as usual:
http://dev.mysql.com/doc/refman/5.5/en/upgrading-from-previous-series.html
Don't forget to run 'mysql_upgrade' command.
3) AFTER UPGRADING individual node:
- uncomment 'wsrep_provider' line in configuration file.
- restart the server and join the cluster.
4) AFTER UPGRADING the whole cluster:
- revert to usual wsrep SST settings if not 'mysqldump'.
5. CONFIGURATION OPTIONS
5.1 MANDATORY MYSQL OPTIONS
binlog_format=ROW
This option is required to use row-level replication as opposed to
statement-level. For performance and consistency considerations don't change
that. As a side effect, binlog, if turned on, can be ROW only. In future this
option won't have special meaning.
innodb_autoinc_lock_mode=2
This is a required parameter. Without it INSERTs into tables with
AUTO_INCREMENT column may fail.
autoinc lock modes 0 and 1 can cause unresolved deadlock, and make
the system unresponsive.
5.2 WSREP OPTIONS
All options are optional except for wsrep_provider, wsrep_cluster_address, and
wsrep_sst_auth.
wsrep_provider=none
A full path to the library that implements WSREP interface. If none is
specified, the server behaves like a regular mysqld.
wsrep_provider_options=
Provider-specific option string. Check wsrep provider documentation or
http://www.codership.com/wiki
wsrep_cluster_address=
Provider-specific cluster address string. This is used to connect a node to
the desired cluster. This option can be given either on mysqld startup or set
during runtime. See wsrep provider documentation for possible values.
wsrep_cluster_name="my_wsrep_cluster"
Logical cluster name, must be the same for all nodes of the cluster.
wsrep_node_address=
An option to explicitly specify the network address of the node in the form
<address>[:port] if autoguessing for some reason does not produce desirable
results (multiple network interfaces, NAT, etc.)
If not explicitly overridden by wsrep_sst_receive_address, the <address> part
will be used to listen for SST (see below). And the whole <address>[:port]
will be passed to the wsrep provider to be used as a base address in its
communications.
wsrep_node_name=
Human readable node name (for easier log reading only). Defaults to hostname.
wsrep_slave_threads=1
The number of threads dedicated to the processing of writesets from other nodes.
For best performance should be few per CPU core.
wsrep_dbug_option
Options for the built-in DBUG library (independent from what MySQL uses).
Empty by default. Not currently in use.
wsrep_debug=0
Enable debug-level logging.
wsrep_convert_LOCK_to_trx=0
Implicitly convert locking sessions into transactions inside mysqld. By
itself it does not mean support for locking sessions, but it prevents the
database from going into logically inconsistent state. Note however, that
loading large database dump with LOCK statements might result in abnormally
large transactions and cause an out-of-memory condition
wsrep_retry_autocommit=1
Retry autocommit queries and single statement transactions should they fail
certification test. This is analogous to rescheduling an autocommit query
should it go into a deadlock with other transactions in the database lock
manager.
wsrep_auto_increment_control=1
Automatically adjust auto_increment_increment and auto_increment_offset
variables based on the number of nodes in the cluster. Significantly reduces
certification conflict rate for INSERTS.
wsrep_drupal_282555_workaround=1
MySQL seems to have an obscure bug when INSERT into table with
AUTO_INCREMENT column with NULL value for that column can fail with a
duplicate key error. When this option is on, it retries such INSERTs.
Required for stable Drupal operation. Documented at:
http://bugs.mysql.com/bug.php?id=41984
http://drupal.org/node/282555
wsrep_causal_reads=0
Enforce strict READ COMMITTED semantics on reads and transactions. May
result in additional latencies. It is a session variable.
wsrep_OSU_method=TOI
Online Schema Upgrade (OSU) can be performed with two alternative methods:
Total Order Isolation (TOI) runs DDL statement in all cluster nodes in
same total order sequence locking the affected table for the duration of the
operation. This may result in the whole cluster being blocked for the
duration of the operation.
Rolling Schema Upgrade (RSU) executes the DDL statement only locally, thus
blocking only one cluster node. During the DDL processing, the node
is not replicating and may be unable to process replication events (due to
table lock). Once DDL operation is complete, the node will catch up and sync
with the cluster to become fully operational again. The DDL statement or
its effects are not replicated, so it is the user's responsibility to manually
perform this operation on each of the nodes.
wsrep_forced_binlog_format=none
Force every transaction to use given binlog format. When this variable is
set to something else than NONE, all transactions will use the given forced
format, regardless of what the client session has specified in binlog_format.
Valid choices for wsrep_forced_binlog_format are: ROW, STATEMENT, MIXED and
special value NONE, meaning that there is no forced binlog format in effect.
This variable was introduced to support STATEMENT format replication during
rolling schema upgrade processing. However, in most cases ROW replication
is valid for asymmetric schema replication.
State snapshot transfer options.
When a new node joins the cluster it has to synchronize its initial state with
the other cluster members by transferring state snapshot from one of them.
The options below govern how this happens and should be set up before attempting
to join or start a cluster.
wsrep_sst_method=rsync
What method to use to copy database state to a newly joined node. Supported
methods:
- mysqldump: slow (except for small datasets) but allows for upgrade
between major MySQL versions or InnoDB features.
- rsync: much faster on large datasets (default).
- rsync_wan: same as rsync but with deltaxfer to minimize network traffic.
- mariabackup: very fast and practically non-blocking SST method based on
mariabackup tool (enhanced version of Percona's xtrabackup).
(for mariabackup to work the following settings must be present in my.cnf
on all nodes:
[mysqld]
wsrep_sst_auth=root:<root password>
datadir=<path to data dir>
[client]
socket=<path to socket>
)
wsrep_sst_receive_address=
Address (hostname:port) at which this node wants to receive state snapshot.
Defaults to mysqld bind address, and if that is not specified (0.0.0.0) -
to the first IP of eth0 + mysqld bind port.
NOTE: check that your firewall allows connections to this address from other
cluster nodes.
wsrep_sst_auth=
Authentication information needed for state transfer. Depends on the state
transfer method. For mysqldump-based SST it is
<mysql_root_user>:<mysql_root_password>
and should be the same on all nodes - it is used to authenticate with both
state snapshot receiver and state snapshot donor.
wsrep_sst_donor=
A name of the node which should serve as state snapshot donor. This allows
controlling which node will serve the state snapshot request. By default the
most suitable node is chosen by the wsrep provider. This is the same as given in
wsrep_node_name.
6. ONLINE SCHEMA UPGRADE
Schema upgrades mean any data definition statements (DDL statements) run
for the database. They change the database structure and are non-
transactional.
Release 22.3 brings a new method for performing schema upgrades. A user can
now choose whether to use the traditional total order isolation or new
rolling schema upgrade method. The OSU method choice is done by global
parameter: 'wsrep_OSU_method'.
6.1 Total Order Isolation (TOI)
With earlier releases, DDL processing happened always by Total Order
Isolation (TOI) method. With TOI, the DDL was scheduled to be processed in
same transaction sequencing 'slot' in each cluster node.
The processing is secured by locking the affected table from any other use.
With TOI method, the whole cluster has part of the database locked for the
duration of the DDL processing.
6.2 Rolling Schema Upgrade (RSU)
Rolling schema upgrade is a new DDL processing method, where DDL will be
processed locally for the node. The node is disconnected of the replication
for the duration of the DDL processing, so that there is only DDL statement
processing in the node and it does not block the rest of the cluster. When
the DDL processing is complete, the node applies delayed replication events
and synchronizes back with the cluster.
The DDL can then be executed cluster-wide by running the same DDL statement
for each node in turn. When this rolling schema upgrade proceeds, part of
the cluster will have old schema structure and part of the cluster will have
new schema structure.
7. LIMITATIONS
1) Currently replication works only with InnoDB storage engine. Any writes to
tables of other types, including system (mysql.*) tables are not replicated.
However, DDL statements are replicated in statement level, and changes
to mysql.* tables will get replicated that way.
So, you can safely issue: CREATE USER...,
but issuing: INSERT INTO mysql.user..., will not be replicated.
2) DELETE operation is unsupported on tables without primary key. Also rows in
tables without primary key may appear in different order on different nodes.
As a result SELECT...LIMIT... may return slightly different sets.
3) Unsupported queries:
* LOCK/UNLOCK TABLES cannot be supported in multi-master setups.
* lock functions (GET_LOCK(), RELEASE_LOCK()... )
4) Query log cannot be directed to a table. If you enable query logging,
you must forward the log to a file:
log_output = FILE
Use general_log and general_log_file to choose query logging and the
log file name
5) Maximum allowed transaction size is defined by wsrep_max_ws_rows and
wsrep_max_ws_size. Anything bigger (e.g. huge LOAD DATA) will be rejected.
6) Due to cluster level optimistic concurrency control, transaction issuing
COMMIT may still be aborted at that stage. There can be two transactions.
writing to same rows and committing in separate cluster nodes, and only one
of them can successfully commit. The failing one will be aborted.
For cluster level aborts, MySQL/galera cluster gives back deadlock error.
code (Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)).
7) XA transactions can not be supported due to possible rollback on commit.

View File

@@ -1,11 +0,0 @@
MariaDB is in most aspects identical to MySQL.
Differences between MySQL and MariaDB can be found at:
https://mariadb.com/kb/en/mariadb-vs-mysql-features/
https://mariadb.com/kb/en/mariadb-vs-mysql-compatibility/
The MariaDB manual can be found at:
https://mariadb.com/kb/
The MySQL Reference Manual is available in various formats on
http://dev.mysql.com/doc.

View File

@@ -1,3 +1,3 @@
Instructions for building MariaDB can be found at:
https://mariadb.com/kb/en/compiling-mariadb-from-source
https://mariadb.com/docs/server/server-management/install-and-upgrade-mariadb/compiling-mariadb-from-source

View File

@@ -1,3 +1,3 @@
Up-to-date instructions about building MariaDB on Windows can be found
at: https://mariadb.com/kb/en/Building_MariaDB_on_Windows
at: https://mariadb.com/docs/server/server-management/install-and-upgrade-mariadb/compiling-mariadb-from-source/building_mariadb_on_windows

View File

@@ -12,4 +12,4 @@ that we are can try to fix it for the next release. You can also add
feature request to the JIRA.
The latest documentation for the MariaDB server can be found at:
https://mariadb.com/kb
https://mariadb.com/docs

View File

@@ -24,13 +24,13 @@ A description of the MariaDB project and a manual can be found at:
https://mariadb.org
https://mariadb.com/kb/en/
https://mariadb.com/docs/
https://mariadb.com/kb/en/mariadb-vs-mysql-features/
https://mariadb.com/docs/release-notes/community-server/about/compatibility-and-differences/mariadb-vs-mysql-features
https://mariadb.com/kb/en/mariadb-versus-mysql-compatibility/
https://mariadb.com/docs/release-notes/community-server/about/compatibility-and-differences/mariadb-vs-mysql-compatibility
https://mariadb.com/kb/en/new-and-old-releases/
https://mariadb.com/docs/release-notes
# Getting the code, building it and testing it

View File

@@ -930,180 +930,202 @@ archived older versions of code and data; there is also a smaller HTTP mirror.
***************************************************************************
%%The following software may be included in this product:
UnicodeData.txt
http://www.unicode.org/copyright.html
Use of any of this software is governed by the terms of the license below:
Unicode® Copyright and Terms of Use
Unicode Terms of Use
For the general privacy policy governing access to this site, see the Unicode Privacy Policy.
For the general privacy policy governing access to this site, see the
Unicode Privacy Policy. For trademark usage, see the Unicode
Consortium (R) Trademarks and Logo Policy.
Notice to End User: Terms of Use
Carefully read the following legal agreement ("Agreement"). Use or
copying of the software and/or codes provided with this agreement (The
"Software") constitutes your acceptance of these terms
Unicode Copyright
Copyright © 1991-2023 Unicode, Inc. All rights reserved.
Definitions
1. Unicode Copyright.
1. Copyright (c) 1991-2008 Unicode, Inc. All rights reserved.
2. Certain documents and files on this website contain a
legend indicating that "Modification is permitted." Any person
is hereby authorized, without fee, to modify such documents
and files to create derivative works conforming to the
Unicode (R) Standard, subject to Terms and Conditions herein.
3. Any person is hereby authorized, without fee, to view, use,
reproduce, and distribute all documents and files solely for
informational purposes in the creation of products supporting
the Unicode Standard, subject to the Terms and Conditions
herein.
4. Further specifications of rights and restrictions
pertaining to the use of the particular set of data files
known as the "Unicode Character Database" can be found in
Exhibit 1.
5. Each version of the Unicode Standard has further
specifications of rights and restrictions of use. For the book
editions, these are found on the back of the title page. For
the online edition, certain files (such as the PDF files for
book chapters and code charts) carry specific restrictions.
All other files are covered under these general Terms of Use.
To request a permission to reproduce any part of the Unicode
Standard, please contact the Unicode Consortium.
6. No license is granted to "mirror" the Unicode website where
a fee is charged for access to the "mirror" site.
7. Modification is not permitted with respect to this
document. All copies of this document must be verbatim.
2. Restricted Rights Legend. Any technical data or software which is
licensed to the United States of America, its agencies and/or
instrumentalities under this Agreement is commercial technical data
or commercial computer software developed exclusively at private
expense as defined in FAR 2.101, or DFARS 252.227-7014 (June 1995),
as applicable. For technical data, use, duplication, or disclosure
by the Government is subject to restrictions as set forth in DFARS
202.227-7015 Technical Data, Commercial and Items (Nov 1995) and
this Agreement. For Software, in accordance with FAR 12-212 or DFARS
227-7202, as applicable, use, duplication or disclosure by the
Government is subject to the restrictions set forth in this
Agreement.
3. Warranties and Disclaimers.
1. This publication and/or website may include technical or
typographical errors or other inaccuracies . Changes are
periodically added to the information herein; these changes
will be incorporated in new editions of the publication and/or
website. Unicode may make improvements and/or changes in the
product(s) and/or program(s) described in this publication
and/or website at any time.
2. If this file has been purchased on magnetic or optical
media from Unicode, Inc. the sole and exclusive remedy for any
claim will be exchange of the defective media within ninety
(90) days of original purchase.
3. EXCEPT AS PROVIDED IN SECTION C.2, THIS PUBLICATION AND/OR
SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND
EITHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT
LIMITED TO, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE, OR NON-INFRINGEMENT. UNICODE AND ITS
LICENSORS ASSUME NO RESPONSIBILITY FOR ERRORS OR OMISSIONS IN
THIS PUBLICATION AND/OR SOFTWARE OR OTHER DOCUMENTS WHICH ARE
REFERENCED BY OR LINKED TO THIS PUBLICATION OR THE UNICODE
WEBSITE.
4. Waiver of Damages. In no event shall Unicode or its licensors be
liable for any special, incidental, indirect or consequential
damages of any kind, or any damages whatsoever, whether or not
Unicode was advised of the possibility of the damage, including,
without limitation, those resulting from the following: loss of use,
data or profits, in connection with the use, modification or
distribution of this information or its derivatives.
5. Trademarks.
1. Unicode and the Unicode logo are registered trademarks of
Unicode, Inc.
2. This site contains product names and corporate names of
other companies. All product names and company names and logos
mentioned herein are the trademarks or registered trademarks
of their respective owners. Other products and corporate names
mentioned herein which are trademarks of a third party are
used only for explanation and for the owners' benefit and with
no intent to infringe.
3. Use of third party products or information referred to
herein is at the user's risk.
6. Miscellaneous.
1. Jurisdiction and Venue. This server is operated from a
location in the State of California, United States of America.
Unicode makes no representation that the materials are
appropriate for use in other locations. If you access this
server from other locations, you are responsible for
compliance with local laws. This Agreement, all use of this
site and any claims and damages resulting from use of this
site are governed solely by the laws of the State of
California without regard to any principles which would apply
the laws of a different jurisdiction. The user agrees that any
disputes regarding this site shall be resolved solely in the
courts located in Santa Clara County, California. The user
agrees said courts have personal jurisdiction and agree to
waive any right to transfer the dispute to any other forum.
2. Modification by Unicode Unicode shall have the right to
modify this Agreement at any time by posting it to this site.
The user may not assign any part of this Agreement without
Unicode's prior written consent.
3. Taxes. The user agrees to pay any taxes arising from access
to this website or use of the information herein, except for
those based on Unicode's net income.
4. Severability. If any provision of this Agreement is
declared invalid or unenforceable, the remaining provisions of
this Agreement shall remain in effect.
5. Entire Agreement. This Agreement constitutes the entire
agreement between the parties.
Unicode Data Files ("DATA FILES") include all data files under the directories:
https://www.unicode.org/Public/
https://www.unicode.org/reports/
https://www.unicode.org/ivd/data/
Unicode Data Files do not include PDF online code charts under the directory:
https://www.unicode.org/Public/
Unicode Software ("SOFTWARE") includes any source code published in the Unicode Standard
or any source code or compiled code under the directories:
https://www.unicode.org/Public/PROGRAMS/
https://www.unicode.org/Public/cldr/
http://site.icu-project.org/download/
Terms of Use
Certain documents and files on this website contain a legend
indicating that "Modification is permitted." Any person is hereby
authorized, without fee, to modify such documents and files to
create derivative works conforming to the Unicode® Standard, subject
to Terms and Conditions herein.
Any person is hereby authorized, without fee, to view, use,
reproduce, and distribute all documents and files, subject to the
Terms and Conditions herein.
Further specifications of rights and restrictions pertaining to the
use of the Unicode DATA FILES and SOFTWARE can be found in the
Unicode Data Files and Software License.
Each version of the Unicode Standard has further specifications of
rights and restrictions of use. For the book editions (Unicode 5.0
and earlier), these are found on the back of the title page.
The Unicode PDF online code charts carry specific restrictions.
Those restrictions are incorporated as the first page of each PDF
code chart.
All other files, including online documentation of the core
specification for Unicode 6.0 and later, are covered under these
general Terms of Use.
No license is granted to "mirror" the Unicode website where a fee is
charged for access to the "mirror" site.
Modification is not permitted with respect to this document. All
copies of this document must be verbatim.
Restricted Rights Legend
Any technical data or software which is licensed to the United
States of America, its agencies and/or instrumentalities under this
Agreement is commercial technical data or commercial computer
software developed exclusively at private expense as defined in FAR
2.101, or DFARS 252.227-7014 (June 1995), as applicable. For
technical data, use, duplication, or disclosure by the Government is
subject to restrictions as set forth in DFARS 202.227-7015 Technical
Data, Commercial and Items (Nov 1995) and this Agreement. For
Software, in accordance with FAR 12-212 or DFARS 227-7202, as
applicable, use, duplication or disclosure by the Government is
subject to the restrictions set forth in this Agreement.
Warranties and Disclaimers
This publication and/or website may include technical or
typographical errors or other inaccuracies. Changes are periodically
added to the information herein; these changes will be incorporated
in new editions of the publication and/or website. Unicode, Inc. may
make improvements and/or changes in the product(s) and/or program(s)
described in this publication and/or website at any time.
If this file has been purchased on magnetic or optical media from
Unicode, Inc. the sole and exclusive remedy for any claim will be
exchange of the defective media within ninety (90) days of original
purchase.
EXCEPT AS PROVIDED IN SECTION E.2, THIS PUBLICATION AND/OR SOFTWARE
IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND EITHER EXPRESS,
IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
NON-INFRINGEMENT. UNICODE, INC. AND ITS LICENSORS ASSUME NO
RESPONSIBILITY FOR ERRORS OR OMISSIONS IN THIS PUBLICATION AND/OR
SOFTWARE OR OTHER DOCUMENTS WHICH ARE REFERENCED BY OR LINKED TO
THIS PUBLICATION OR THE UNICODE WEBSITE.
Waiver of Damages
In no event shall Unicode, Inc. or its licensors be liable for any
special, incidental, indirect or consequential damages of any kind,
or any damages whatsoever, whether or not Unicode, Inc. was advised
of the possibility of the damage, including, without limitation,
those resulting from the following: loss of use, data or profits, in
connection with the use, modification or distribution of this
information or its derivatives.
Trademarks & Logos
The Unicode Word Mark and the Unicode Logo are trademarks of
Unicode, Inc. “The Unicode Consortium” and “Unicode, Inc.” are trade
names of Unicode, Inc. Use of the information and materials found on
this website indicates your acknowledgement of Unicode, Inc.’s
exclusive worldwide rights in the Unicode Word Mark, the Unicode
Logo, and the Unicode trade names.
The Unicode Consortium Name and Trademark Usage Policy (“Trademark
Policy”) are incorporated herein by reference and you agree to abide
by the provisions of the Trademark Policy, which may be changed from
time to time in the sole discretion of Unicode, Inc.
All third party trademarks referenced herein are the property of
their respective owners.
Miscellaneous
Jurisdiction and Venue. This website is operated from a location in
the State of California, United States of America. Unicode, Inc.
makes no representation that the materials are appropriate for use
in other locations. If you access this website from other locations,
you are responsible for compliance with local laws. This Agreement,
all use of this website and any claims and damages resulting from
use of this website are governed solely by the laws of the State of
California without regard to any principles which would apply the
laws of a different jurisdiction. The user agrees that any disputes
regarding this website shall be resolved solely in the courts
located in Santa Clara County, California. The user agrees said
courts have personal jurisdiction and agree to waive any right to
transfer the dispute to any other forum.
Modification by Unicode, Inc. Unicode, Inc. shall have the right to
modify this Agreement at any time by posting it to this website. The
user may not assign any part of this Agreement without Unicode,
Inc.’s prior written consent.
Taxes. The user agrees to pay any taxes arising from access to this
website or use of the information herein, except for those based on
Unicode’s net income.
Severability. If any provision of this Agreement is declared
invalid or unenforceable, the remaining provisions of this Agreement
shall remain in effect.
Entire Agreement. This Agreement constitutes the entire agreement
between the parties.
EXHIBIT 1
UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
Unicode Data Files include all data files under the directories
http://www.unicode.org/Public/, http://www.unicode.org/reports/, and
http://www.unicode.org/cldr/data/ . Unicode Software includes any source code
published in the Unicode Standard or under the directories
http://www.unicode.org/Public/, http://www.unicode.org/reports/, and
http://www.unicode.org/cldr/data/.
See Terms of Use <https://www.unicode.org/copyright.html>
for definitions of Unicode Inc.’s Data Files and Software.
NOTICE TO USER: Carefully read the following legal agreement. BY
DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES
("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND
AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU
DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES
OR SOFTWARE.
NOTICE TO USER: Carefully read the following legal agreement.
BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
TERMS AND CONDITIONS OF THIS AGREEMENT.
IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
THE DATA FILES OR SOFTWARE.
COPYRIGHT AND PERMISSION NOTICE
COPYRIGHT AND PERMISSION NOTICE
Copyright (c) 1991-2008 Unicode, Inc. All rights reserved. Distributed under
the Terms of Use in http://www.unicode.org/copyright.html.
Copyright © 1991-2023 Unicode, Inc. All rights reserved.
Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
Permission is hereby granted, free of charge, to any person obtaining a copy
of the Unicode data files and any associated documentation (the "Data Files") or
Unicode software and any associated documentation (the "Software") to deal in
the Data Files or Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, and/or sell copies of
the Data Files or Software, and to permit persons to whom the Data Files or
Software are furnished to do so, provided that (a) the above copyright notice(s)
and this permission notice appear with all copies of the Data Files or Software,
(b) both the above copyright notice(s) and this permission notice appear in
associated documentation, and (c) there is clear notice in each modified Data
File or in the Software as well as in the documentation associated with the Data
File(s) or Software that the data or software has been modified.
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Unicode data files and any associated documentation
(the "Data Files") or Unicode software and any associated documentation
(the "Software") to deal in the Data Files or Software
without restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, and/or sell copies of
the Data Files or Software, and to permit persons to whom the Data Files
or Software are furnished to do so, provided that either
(a) this copyright and permission notice appear with all copies
of the Data Files or Software, or
(b) this copyright and permission notice appear in associated
Documentation.
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD
PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT OF THIRD PARTY RIGHTS.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE.
DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THE DATA FILES OR SOFTWARE.
Except as contained in this notice, the name of a copyright holder shall not
be used in advertising or otherwise to promote the sale, use or other dealings
in these Data Files or Software without prior written authorization of the
copyright holder.
Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be
registered in some jurisdictions. All other trademarks and registered trademarks
mentioned herein are the property of their respective owners.
Except as contained in this notice, the name of a copyright holder
shall not be used in advertising or otherwise to promote the sale,
use or other dealings in these Data Files or Software without prior
written authorization of the copyright holder.
***************************************************************************

View File

@@ -1,4 +1,4 @@
MYSQL_VERSION_MAJOR=10
MYSQL_VERSION_MINOR=6
MYSQL_VERSION_PATCH=28
MYSQL_VERSION_MINOR=11
MYSQL_VERSION_PATCH=19
SERVER_MATURITY=stable

View File

@@ -1,6 +1,42 @@
version: build-{build}~branch-{branch}
clone_depth: 1
clone_depth: 10
skip_branch_with_pr: true
before_build:
- ps: |
function Get-Remote-Ref($ref) {
try {
$result = git ls-remote origin $ref 2>$null
if (-not $result) {
"Warning: Could not fetch remote ref '$ref'"
return $null
}
return ($result -split "`t")[0]
} catch {
"Warning: Exception while running git ls-remote for '$ref': $_"
return $null
}
}
Get-ChildItem Env: | Where-Object { $_.Name -like 'APPVEYOR*COMMIT' } | ForEach-Object { "$($_.Name)=$($_.Value)" }
$commit = $env:APPVEYOR_REPO_COMMIT
$commit2 = $env:APPVEYOR_PULL_REQUEST_HEAD_COMMIT
$branch = $env:APPVEYOR_REPO_BRANCH
$latest = $null
$mainBranch = $branch -match '^(main|\d+\.\d+)$'
if ($env:APPVEYOR_PULL_REQUEST_NUMBER -eq $null) {
"Branch build detected"
$latest = Get-Remote-Ref "refs/heads/$branch"
} else {
$pr = $env:APPVEYOR_PULL_REQUEST_NUMBER
$latest = Get-Remote-Ref "refs/pull/$pr/head"
$mainBranch = $False
"Pull Request build detected"
}
if ($latest -and ($commit -ne $latest) -and ($commit2 -ne $latest) -and (-not $mainBranch)) {
"Skipping outdated commit (latest is $latest)"
Exit-AppVeyorBuild
}
build_script:
# dump some system info

View File

@@ -64,6 +64,12 @@ enum options_client
OPT_PRINT_ROW_COUNT, OPT_PRINT_ROW_EVENT_POSITIONS,
OPT_CHECK_IF_UPGRADE_NEEDED,
OPT_COMPATIBILTY_CLEARTEXT_PLUGIN,
OPT_STOP_POSITION,
OPT_SERVER_ID,
OPT_IGNORE_DOMAIN_IDS,
OPT_DO_DOMAIN_IDS,
OPT_IGNORE_SERVER_IDS,
OPT_DO_SERVER_IDS,
OPT_MAX_CLIENT_OPTION /* should be always the last */
};

View File

@@ -34,9 +34,10 @@ typedef struct st_line_buffer
bool truncated;
} LINE_BUFFER;
extern LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file);
extern LINE_BUFFER *batch_readline_command(LINE_BUFFER *buffer, char * str);
extern char *batch_readline(LINE_BUFFER *buffer, bool binary_mode);
extern void batch_readline_end(LINE_BUFFER *buffer);
extern bool init_line_buffer(LINE_BUFFER *buffer, File file, ulong size,
ulong max_size);
#endif /* CLIENT_MY_READLINE_INCLUDED */

View File

@@ -88,9 +88,7 @@ extern "C" {
#endif /* defined(HAVE_CURSES_H) && defined(HAVE_TERM_H) */
#undef bcmp // Fix problem with new readline
#if defined(_WIN32)
#include <conio.h>
#else
#if !defined(_WIN32)
# ifdef __APPLE__
# include <editline/readline.h>
# else
@@ -104,6 +102,98 @@ extern "C" {
#define USE_POPEN
}
static CHARSET_INFO *charset_info= &my_charset_latin1;
#if defined(_WIN32)
/*
Set console mode for the whole duration of the client session.
We need for input
- line input (i.e read lines from console)
- echo typed characters
- "cooked" mode, i.e we do not want to handle all keystrokes,
like DEL etc ourselves, yet. We might want handle keystrokes
in the future, to implement tab completion, and better
(multiline) history.
Disable VT escapes for the output.We do not know what kind of escapes SELECT would return.
*/
struct Console_mode
{
HANDLE in= GetStdHandle(STD_INPUT_HANDLE);
HANDLE out= GetStdHandle(STD_OUTPUT_HANDLE);
DWORD mode_in=0;
DWORD mode_out=0;
enum {STDIN_CHANGED = 1, STDOUT_CHANGED = 2};
int changes=0;
Console_mode()
{
if (in && in != INVALID_HANDLE_VALUE && GetConsoleMode(in, &mode_in))
{
SetConsoleMode(in, ENABLE_ECHO_INPUT|ENABLE_LINE_INPUT|ENABLE_PROCESSED_INPUT);
changes |= STDIN_CHANGED;
}
if (out && out != INVALID_HANDLE_VALUE && GetConsoleMode(out, &mode_out))
{
#ifdef ENABLE_VIRTUAL_TERMINAL_INPUT
SetConsoleMode(out, mode_out & ~ENABLE_VIRTUAL_TERMINAL_INPUT);
changes |= STDOUT_CHANGED;
#endif
}
}
~Console_mode()
{
if (changes & STDIN_CHANGED)
SetConsoleMode(in, mode_in);
if(changes & STDOUT_CHANGED)
SetConsoleMode(out, mode_out);
}
};
static Console_mode my_conmode;
#define MAX_CGETS_LINE_LEN 65535
/** Read line from console, chomp EOL*/
static char *win_readline()
{
static wchar_t wstrbuf[MAX_CGETS_LINE_LEN];
static char strbuf[MAX_CGETS_LINE_LEN * 4];
DWORD nchars= 0;
uint len= 0;
SetLastError(0);
if (!ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), wstrbuf, MAX_CGETS_LINE_LEN-1,
&nchars, NULL))
goto err;
if (nchars == 0 && GetLastError() == ERROR_OPERATION_ABORTED)
goto err;
for (;nchars > 0; nchars--)
{
if (wstrbuf[nchars - 1] != '\n' && wstrbuf[nchars - 1] != '\r')
break;
}
if (nchars > 0)
{
uint errors;
len= my_convert(strbuf, sizeof(strbuf), charset_info,
(const char *) wstrbuf, nchars * sizeof(wchar_t),
&my_charset_utf16le_bin, &errors);
}
strbuf[len]= 0;
return strbuf;
err:
return NULL;
}
#endif
#ifdef HAVE_VIDATTR
static int have_curses= 0;
static void my_vidattr(chtype attrs)
@@ -213,7 +303,6 @@ unsigned short terminal_width= 80;
static uint opt_protocol=0;
static const char *opt_protocol_type= "";
static CHARSET_INFO *charset_info= &my_charset_latin1;
#include "sslopt-vars.h"
@@ -1073,8 +1162,9 @@ static void print_table_data_xml(MYSQL_RES *result);
static void print_tab_data(MYSQL_RES *result);
static void print_table_data_vertically(MYSQL_RES *result);
static void print_warnings(void);
static void end_timer(ulonglong start_time, char *buff);
static void nice_time(double sec,char *buff,bool part_second);
static void end_timer(ulonglong start_time, char *buff, size_t buff_size);
static void nice_time(double sec, char *buff, size_t buff_size,
bool part_second);
extern "C" sig_handler mysql_end(int sig) __attribute__ ((noreturn));
extern "C" sig_handler handle_sigint(int sig);
#if defined(HAVE_TERMIOS_H) && defined(GWINSZ_IN_SYS_IOCTL)
@@ -1118,6 +1208,81 @@ inline int get_command_index(char cmd_char)
return -1;
}
static LINE_BUFFER *batch_readline_init(ulong max_size, const char *path)
{
LINE_BUFFER *line_buff;
File file;
MY_STAT input_file_stat;
char buff[FN_REFLEN + 512];
if (path)
{
if ((file= my_open(path, O_RDONLY | O_BINARY, MYF(0))) < 0)
{
#ifdef _WIN32
if (my_errno == EACCES && my_stat(path, &input_file_stat, MYF(0)) &&
MY_S_ISDIR(input_file_stat.st_mode))
my_snprintf(buff, sizeof(buff), "Can't read from a directory '%.*s'",
FN_REFLEN, path);
else
#endif
my_snprintf(buff, sizeof(buff), "Failed to open file '%.*s', error: %d",
FN_REFLEN, path, my_errno);
put_info(buff, INFO_ERROR, 0);
return 0;
}
}
else
{
file= my_fileno(stdin);
}
if (my_fstat(file, &input_file_stat, MYF(0)))
{
my_snprintf(buff, sizeof(buff), "Failed to stat file '%.*s', error: %d",
FN_REFLEN, path ? path : "stdin", my_errno);
goto err1;
}
if (MY_S_ISDIR(input_file_stat.st_mode))
{
my_snprintf(buff, sizeof(buff), "Can't read from a directory '%.*s'",
FN_REFLEN, path ? path : "stdin");
goto err1;
}
#ifndef _WIN32
if (MY_S_ISBLK(input_file_stat.st_mode))
{
my_snprintf(buff, sizeof(buff), "Can't read from a block device '%.*s'",
FN_REFLEN, path ? path : "stdin");
goto err1;
}
#endif
if (!(line_buff= (LINE_BUFFER*) my_malloc(PSI_NOT_INSTRUMENTED,
sizeof(*line_buff),
MYF(MY_WME | MY_ZEROFILL))))
{
goto err;
}
if (init_line_buffer(line_buff, file, IO_SIZE, max_size))
{
my_free(line_buff);
goto err;
}
return line_buff;
err1:
put_info(buff, INFO_ERROR, 0);
err:
if (path)
my_close(file, MYF(0));
return 0;
}
static int delimiter_index= -1;
static int charset_index= -1;
static int sandbox_index= -1;
@@ -1192,10 +1357,8 @@ int main(int argc,char *argv[])
}
if (status.batch && !status.line_buff &&
!(status.line_buff= batch_readline_init(MAX_BATCH_BUFFER_SIZE, stdin)))
!(status.line_buff= batch_readline_init(MAX_BATCH_BUFFER_SIZE, NULL)))
{
put_info("Can't initialize batch_readline - may be the input source is "
"a directory or a block device.", INFO_ERROR, 0);
free_defaults(defaults_argv);
my_end(0);
exit(1);
@@ -1256,10 +1419,13 @@ int main(int argc,char *argv[])
histfile=my_strdup(PSI_NOT_INSTRUMENTED, getenv("MYSQL_HISTFILE"),MYF(MY_WME));
else if (getenv("HOME"))
{
size_t histfile_size=
strlen(getenv("HOME")) + strlen("/.mysql_history") + 2;
histfile=(char*) my_malloc(PSI_NOT_INSTRUMENTED,
strlen(getenv("HOME")) + strlen("/.mysql_history")+2, MYF(MY_WME));
histfile_size, MYF(MY_WME));
if (histfile)
sprintf(histfile,"%s/.mysql_history",getenv("HOME"));
snprintf(histfile, histfile_size,
"%s/.mysql_history", getenv("HOME"));
char link_name[FN_REFLEN];
if (my_readlink(link_name, histfile, 0) == 0 &&
strncmp(link_name, "/dev/null", 10) == 0)
@@ -1279,28 +1445,38 @@ int main(int argc,char *argv[])
if (verbose)
tee_fprintf(stdout, "Reading history-file %s\n",histfile);
read_history(histfile);
if (!(histfile_tmp= (char*) my_malloc(PSI_NOT_INSTRUMENTED,
strlen(histfile) + 5, MYF(MY_WME))))
{
fprintf(stderr, "Couldn't allocate memory for temp histfile!\n");
exit(1);
/* Extra space for the suffix appended to histfile:
"." - separator (sizeof = 2, includes NUL)
+ PID - up to 20 digits (ULONG_MAX = 18446744073709551615)
+ ".TMP"- extension (sizeof = 5, includes NUL, doubles
as the string NUL terminator)
sizeof(".") and sizeof(".TMP") each carry a NUL, so the sum
over-allocates by one byte, which is intentional. */
size_t hlen= strlen(histfile) + sizeof(".") + 20 + sizeof(".TMP");
if (!(histfile_tmp= (char*) my_malloc(PSI_NOT_INSTRUMENTED, hlen, MYF(MY_WME))))
{
fprintf(stderr, "Couldn't allocate memory for temp histfile!\n");
exit(1);
}
/* Include PID in name to avoid rename collision when concurrent sessions exit. */
/* pid_t is signed but getpid() always returns a non-negative value (POSIX). */
snprintf(histfile_tmp, hlen, "%s.%lu.TMP", histfile,
(unsigned long) getpid());
}
sprintf(histfile_tmp, "%s.TMP", histfile);
}
}
#endif
sprintf(buff, "%s",
snprintf(buff, sizeof(buff), "%s",
"Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\n");
put_info(buff,INFO_INFO);
status.exit_status= read_and_execute(!status.batch);
if (opt_outfile)
end_tee();
mysql_end(0);
#ifndef _lint
DBUG_RETURN(0); // Keep compiler happy
#endif
DBUG_RETURN(0);
}
sig_handler mysql_end(int sig)
@@ -1356,6 +1532,46 @@ sig_handler mysql_end(int sig)
exit(status.exit_status);
}
#ifdef _WIN32
#define CNV_BUFSIZE 1024
/**
Convert user,database,and password to requested charset.
This is done in the single case when user connects with non-UTF8
default-character-set, on UTF8 capable Windows.
User, password, and database are UTF8 encoded, prior to the function,
this needs to be fixed, in case they contain non-ASCIIs.
Mostly a workaround, to allow existng users with non-ASCII password
to survive upgrade without losing connectivity.
*/
static void maybe_convert_charset(const char **user, const char **password,
const char **database, const char *csname)
{
if (GetACP() != CP_UTF8 || !strncmp(csname, "utf8", 4))
return;
static char bufs[3][CNV_BUFSIZE];
const char **from[]= {user, password, database};
CHARSET_INFO *cs= get_charset_by_csname(csname, MY_CS_PRIMARY,
MYF(MY_UTF8_IS_UTF8MB3 | MY_WME));
if (!cs)
return;
for (int i= 0; i < 3; i++)
{
const char *str= *from[i];
if (!str)
continue;
uint errors;
uint len= my_convert(bufs[i], CNV_BUFSIZE, cs, str, (uint32) strlen(str),
&my_charset_utf8mb4_bin, &errors);
bufs[i][len]= 0;
*from[i]= bufs[i];
}
}
#endif
/*
set connection-specific options and call mysql_real_connect
*/
@@ -1365,7 +1581,7 @@ static bool do_connect(MYSQL *mysql, const char *host, const char *user,
if (opt_secure_auth)
mysql_options(mysql, MYSQL_SECURE_AUTH, (char *) &opt_secure_auth);
#if defined(HAVE_OPENSSL) && !defined(EMBEDDED_LIBRARY)
if (opt_use_ssl)
if (opt_use_ssl && opt_protocol <= MYSQL_PROTOCOL_SOCKET)
{
mysql_ssl_set(mysql, opt_ssl_key, opt_ssl_cert, opt_ssl_ca,
opt_ssl_capath, opt_ssl_cipher);
@@ -1387,6 +1603,10 @@ static bool do_connect(MYSQL *mysql, const char *host, const char *user,
mysql_options(mysql, MYSQL_OPT_CONNECT_ATTR_RESET, 0);
mysql_options4(mysql, MYSQL_OPT_CONNECT_ATTR_ADD,
"program_name", "mysql");
#ifdef _WIN32
maybe_convert_charset(&user, &password, &database,default_charset);
#endif
return mysql_real_connect(mysql, host, user, password, database,
opt_mysql_port, opt_mysql_unix_port, flags);
}
@@ -1431,7 +1651,7 @@ bool kill_query(const char *reason)
interrupted_query= 2;
/* kill_buffer is always big enough because max length of %lu is 15 */
sprintf(kill_buffer, "KILL %s%lu",
snprintf(kill_buffer, sizeof(kill_buffer), "KILL %s%lu",
(interrupted_query == 1) ? "QUERY " : "",
mysql_thread_id(&mysql));
if (verbose)
@@ -2059,11 +2279,6 @@ static inline void reset_prompt(char *in_string, bool *ml_comment) {
static int read_and_execute(bool interactive)
{
#if defined(_WIN32)
String tmpbuf;
String buffer;
#endif
char *line= NULL;
char in_string=0;
ulong line_number=0;
@@ -2141,26 +2356,7 @@ static int read_and_execute(bool interactive)
#if defined(_WIN32)
tee_fputs(prompt, stdout);
if (!tmpbuf.is_alloced())
tmpbuf.alloc(65535);
tmpbuf.length(0);
buffer.length(0);
size_t clen;
do
{
line= my_cgets((char*)tmpbuf.ptr(), tmpbuf.alloced_length()-1, &clen);
buffer.append(line, clen);
/*
if we got buffer fully filled than there is a chance that
something else is still in console input buffer
*/
} while (tmpbuf.alloced_length() <= clen);
/*
An empty line is returned from my_cgets when there's error reading :
Ctrl-c for example
*/
if (line)
line= buffer.c_ptr();
line= win_readline();
#else
if (opt_outfile)
fputs(prompt, OUTFILE);
@@ -2250,10 +2446,7 @@ static int read_and_execute(bool interactive)
}
}
#if defined(_WIN32)
buffer.free();
tmpbuf.free();
#else
#if !defined(_WIN32)
if (interactive)
/*
free the last entered line.
@@ -2512,7 +2705,7 @@ static bool add_line(String &buffer, char *line, size_t line_length,
}
else
{
sprintf(buff,"Unknown command '\\%c'.",inchar);
snprintf(buff, sizeof(buff), "Unknown command '\\%c'.", inchar);
if (put_info(buff,INFO_ERROR) > 0)
DBUG_RETURN(1);
*out++='\\';
@@ -2772,7 +2965,9 @@ static void fix_history(String *final_command)
ptr++;
}
if (total_lines > 1)
add_history(fixed_buffer.ptr());
{
add_history(fixed_buffer.c_ptr());
}
}
/*
@@ -3026,7 +3221,7 @@ You can turn off this feature to get a quicker startup with -A\n\n");
j=0;
while ((sql_field=mysql_fetch_field(fields)))
{
sprintf(buf,"%.64s.%.64s",table_row[0],sql_field->name);
snprintf(buf, sizeof(buf), "%.64s.%.64s",table_row[0], sql_field->name);
field_names[i][j] = strdup_root(&hash_mem_root,buf);
add_word(&ht,field_names[i][j]);
field_names[i][num_fields+j] = strdup_root(&hash_mem_root,
@@ -3094,6 +3289,36 @@ static int reconnect(void)
return 0;
}
#ifndef EMBEDDED_LIBRARY
#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wvarargs"
/* CONC-789 */
#endif
static void status_info_cb(void *data, enum enum_mariadb_status_info type, ...)
{
va_list ap;
va_start(ap, type);
if (type == SESSION_TRACK_TYPE && va_arg(ap, int) == SESSION_TRACK_SCHEMA)
{
MARIADB_CONST_STRING *val= va_arg(ap, MARIADB_CONST_STRING *);
my_free(current_db);
if (val->length)
current_db= my_strndup(PSI_NOT_INSTRUMENTED, val->str, val->length, MYF(MY_FAE));
else
current_db= NULL;
}
va_end(ap);
}
#ifdef __clang__
#pragma clang diagnostic pop
#endif
#else
#define mysql_optionsv(A,B,C,D) do { } while(0)
#endif
static void get_current_db()
{
MYSQL_RES *res;
@@ -3306,6 +3531,21 @@ static int com_clear(String *buffer,char *)
return 0;
}
static void adjust_console_codepage(const char *name __attribute__((unused)))
{
#ifdef _WIN32
if (my_set_console_cp(name) < 0)
{
char buf[128];
snprintf(buf, sizeof(buf),
"WARNING: Could not determine Windows codepage for charset '%s',"
"continue using codepage %u", name, GetConsoleOutputCP());
put_info(buf, INFO_INFO);
}
#endif
}
static int com_charset(String *, char *line)
{
char buff[256], *param;
@@ -3328,6 +3568,7 @@ static int com_charset(String *, char *line)
mysql_set_character_set(&mysql, charset_info->cs_name.str);
default_charset= (char *)charset_info->cs_name.str;
put_info("Charset changed", INFO_INFO);
adjust_console_codepage(charset_info->cs_name.str);
}
else put_info("Charset is not found", INFO_INFO);
return 0;
@@ -3357,8 +3598,6 @@ static int com_go(String *buffer, char *)
old_buffer.copy();
}
/* Remove garbage for nicer messages */
LINT_INIT_STRUCT(buff[0]);
remove_cntrl(*buffer);
if (buffer->is_empty())
@@ -3426,7 +3665,7 @@ static int com_go(String *buffer, char *)
}
if (verbose >= 3 || !opt_silent)
end_timer(timer, time_buff);
end_timer(timer, time_buff, sizeof(time_buff));
else
time_buff[0]= '\0';
@@ -3462,9 +3701,9 @@ static int com_go(String *buffer, char *)
print_tab_data(result);
else
print_table_data(result);
sprintf(buff,"%ld %s in set",
(long) mysql_num_rows(result),
(long) mysql_num_rows(result) == 1 ? "row" : "rows");
snprintf(buff, sizeof(buff), "%llu %s in set",
(unsigned long long) mysql_num_rows(result),
mysql_num_rows(result) == 1 ? "row" : "rows");
end_pager();
if (mysql_errno(&mysql))
{
@@ -3477,9 +3716,9 @@ static int com_go(String *buffer, char *)
else if (mysql_affected_rows(&mysql) == ~(ulonglong) 0)
strmov(buff,"Query OK");
else
sprintf(buff,"Query OK, %ld %s affected",
(long) mysql_affected_rows(&mysql),
(long) mysql_affected_rows(&mysql) == 1 ? "row" : "rows");
snprintf(buff, sizeof(buff), "Query OK, %llu %s affected",
(unsigned long long) mysql_affected_rows(&mysql),
mysql_affected_rows(&mysql) == 1 ? "row" : "rows");
pos=strend(buff);
if ((warnings= mysql_warning_count(&mysql)))
@@ -3648,11 +3887,14 @@ static char *fieldflags2str(uint f) {
ff2s_check_flag(NUM);
ff2s_check_flag(PART_KEY);
ff2s_check_flag(GROUP);
ff2s_check_flag(BINCMP);
/*
CONTEXT_COLLATION_FLAG (former BINCMP_FLAG) is used at parse
time only and should never show up on the client side. Don't test it.
*/
ff2s_check_flag(ON_UPDATE_NOW);
#undef ff2s_check_flag
if (f)
sprintf(s, " unknows=0x%04x", f);
snprintf(s, sizeof(buf) - (size_t)(s - buf), " unknown=0x%04x", f);
return buf;
}
@@ -4366,8 +4608,10 @@ com_edit(String *buffer,char *)
strxmov(buff,editor," ",filename,NullS);
if ((error= system(buff)))
{
char errmsg[100];
sprintf(errmsg, "Command '%.40s' failed", buff);
#define EDITOR_FAIL_MSG "Command '%.40s' failed"
char errmsg[sizeof(EDITOR_FAIL_MSG) - 1 + 40];
snprintf(errmsg, sizeof(errmsg), EDITOR_FAIL_MSG, buff);
#undef EDITOR_FAIL_MSG
put_info(errmsg, INFO_ERROR, 0, NullS);
goto err;
}
@@ -4513,9 +4757,9 @@ static int com_connect(String *buffer, char *line)
if (connected)
{
sprintf(buff,"Connection id: %lu",mysql_thread_id(&mysql));
snprintf(buff, sizeof(buff), "Connection id: %lu",mysql_thread_id(&mysql));
put_info(buff,INFO_INFO);
sprintf(buff,"Current database: %.128s\n",
snprintf(buff, sizeof(buff), "Current database: %.128s\n",
current_db ? current_db : "*** NONE ***");
put_info(buff,INFO_INFO);
}
@@ -4529,7 +4773,6 @@ static int com_source(String *, char *line)
LINE_BUFFER *line_buff;
int error;
STATUS old_status;
FILE *sql_file;
my_bool save_ignore_errors;
if (status.sandbox)
@@ -4549,18 +4792,10 @@ static int com_source(String *, char *line)
end--;
end[0]=0;
unpack_filename(source_name,source_name);
/* open file name */
if (!(sql_file = my_fopen(source_name, O_RDONLY | O_BINARY,MYF(0))))
{
char buff[FN_REFLEN+60];
sprintf(buff,"Failed to open file '%s', error: %d", source_name,errno);
return put_info(buff, INFO_ERROR, 0);
}
if (!(line_buff= batch_readline_init(MAX_BATCH_BUFFER_SIZE, sql_file)))
if (!(line_buff= batch_readline_init(MAX_BATCH_BUFFER_SIZE, source_name)))
{
my_fclose(sql_file,MYF(0));
return put_info("Can't initialize batch_readline", INFO_ERROR, 0);
return ignore_errors ? -1 : 1;
}
/* Save old status */
@@ -4579,7 +4814,7 @@ static int com_source(String *, char *line)
ignore_errors= save_ignore_errors;
status=old_status; // Continue as before
in_com_source= aborted= 0;
my_fclose(sql_file,MYF(0));
my_close(line_buff->file, MYF(0));
batch_readline_end(line_buff);
/*
If we got an error during source operation, don't abort the client
@@ -4847,6 +5082,8 @@ sql_real_connect(char *host,char *database,char *user,char *password,
mysql_close(&mysql);
}
mysql_init(&mysql);
if (!one_database)
mysql_optionsv(&mysql, MARIADB_OPT_STATUS_CALLBACK, status_info_cb, NULL);
if (opt_init_command)
mysql_options(&mysql, MYSQL_INIT_COMMAND, opt_init_command);
if (opt_connect_timeout)
@@ -4862,7 +5099,7 @@ sql_real_connect(char *host,char *database,char *user,char *password,
if (safe_updates)
{
char init_command[100];
sprintf(init_command,
snprintf(init_command, sizeof(init_command),
"SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=%lu,MAX_JOIN_SIZE=%lu",
select_limit,max_join_size);
mysql_options(&mysql, MYSQL_INIT_COMMAND, init_command);
@@ -4899,6 +5136,7 @@ sql_real_connect(char *host,char *database,char *user,char *password,
put_info(buff, INFO_ERROR);
return 1;
}
adjust_console_codepage(charset_info->cs_name.str);
connected=1;
#ifndef EMBEDDED_LIBRARY
mysql_options(&mysql, MYSQL_OPT_RECONNECT, &debug_info_flag);
@@ -5057,7 +5295,7 @@ static int com_status(String *, char *)
tee_fprintf(stdout, "%.*s\t\t\t", (int) (pos-status_str), status_str);
if ((status_str= str2int(pos,10,0,LONG_MAX,(long*) &sec)))
{
nice_time((double) sec,buff,0);
nice_time((double) sec,buff, sizeof(buff),0);
tee_puts(buff, stdout); /* print nice time */
while (*status_str == ' ')
status_str++; /* to next info */
@@ -5276,8 +5514,10 @@ void tee_putc(int c, FILE *file)
len("4294967296 days, 23 hours, 59 minutes, 60.000 seconds") -> 53
*/
static void nice_time(double sec, char *buff, bool part_second)
static void nice_time(double sec, char *buff, size_t buff_size,
bool part_second)
{
char *buff_end= buff + buff_size;
ulong tmp;
if (sec >= 3600.0*24)
{
@@ -5301,21 +5541,23 @@ static void nice_time(double sec, char *buff, bool part_second)
buff=strmov(buff," min ");
}
if (part_second)
sprintf(buff,"%.3f sec",sec);
snprintf(buff, buff_end - buff, "%.3f sec", sec);
else
sprintf(buff,"%d sec",(int) sec);
snprintf(buff, buff_end - buff, "%d sec", (int) sec);
}
static void end_timer(ulonglong start_time, char *buff)
static void end_timer(ulonglong start_time, char *buff, size_t buff_size)
{
double sec;
if (buff_size < 4)
return;
buff[0]=' ';
buff[1]='(';
sec= (microsecond_interval_timer() - start_time) / (double) (1000 * 1000);
nice_time(sec, buff + 2, 1);
strmov(strend(buff),")");
nice_time(sec, buff + 2, buff_size - 2, 1);
snprintf(strend(buff), buff_size - (strend(buff) - buff), ")");
}
static const char *construct_prompt()

View File

@@ -72,7 +72,7 @@ static char **defaults_argv;
static my_bool not_used; /* Can't use GET_BOOL without a value pointer */
char upgrade_from_version[sizeof("10.20.456-MariaDB")+30];
char upgrade_from_version[1024];
static my_bool opt_write_binlog;

View File

@@ -407,6 +407,7 @@ int main(int argc,char *argv[])
mysql_options(&mysql,MYSQL_OPT_PROTOCOL,(char*)&opt_protocol);
if (!strcmp(default_charset,MYSQL_AUTODETECT_CHARSET_NAME))
default_charset= (char *)my_default_csname();
my_set_console_cp(default_charset);
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, default_charset);
error_flags= (myf)(opt_nobeep ? 0 : ME_BELL);
@@ -710,7 +711,7 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
}
if (maybe_disable_binlog(mysql))
return -1;
sprintf(buff,"create database `%.*s`",FN_REFLEN,argv[1]);
snprintf(buff, sizeof(buff), "create database `%.*s`",FN_REFLEN,argv[1]);
if (mysql_query(mysql,buff))
{
my_printf_error(0,"CREATE DATABASE failed; error: '%-.200s'",
@@ -751,7 +752,7 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
if (opt_shutdown_wait_for_slaves)
{
sprintf(buff, "SHUTDOWN WAIT FOR ALL SLAVES");
snprintf(buff, sizeof(buff), "SHUTDOWN WAIT FOR ALL SLAVES");
if (mysql_query(mysql, buff))
{
my_printf_error(0, "%s failed; error: '%-.200s'",
@@ -1179,7 +1180,7 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
}
else
crypted_pw[0]=0; /* No password */
sprintf(buff,"set password='%s',sql_log_off=0",crypted_pw);
snprintf(buff, sizeof(buff), "set password='%s',sql_log_off=0",crypted_pw);
if (mysql_query(mysql,"set sql_log_off=1"))
{
@@ -1431,7 +1432,7 @@ static int drop_db(MYSQL *mysql, const char *db)
return -1;
}
}
sprintf(name_buff,"drop database `%.*s`",FN_REFLEN,db);
snprintf(name_buff, sizeof(name_buff), "drop database `%.*s`",FN_REFLEN,db);
if (mysql_query(mysql,name_buff))
{
my_printf_error(0, "DROP DATABASE %s failed;\nerror: '%s'", error_flags,

File diff suppressed because it is too large Load Diff

View File

@@ -274,8 +274,8 @@ static void usage(void)
printf("Usage: %s [OPTIONS] database [tables]\n", my_progname);
printf("OR %s [OPTIONS] --databases DB1 [DB2 DB3...]\n",
my_progname);
puts("Please consult the MariaDB Knowledge Base at");
puts("https://mariadb.com/kb/en/mysqlcheck for latest information about");
puts("Please consult the MariaDB Documentation at");
puts("https://mariadb.com/docs/server/clients-and-utilities/legacy-clients-and-utilities/mysqlcheck for latest information about");
puts("this program.");
print_defaults("my", load_default_groups);
puts("");
@@ -473,6 +473,7 @@ static int get_options(int *argc, char ***argv)
printf("Unsupported character set: %s\n", default_charset);
DBUG_RETURN(1);
}
my_set_console_cp(default_charset);
if (*argc > 0 && opt_alldbs)
{
printf("You should give only options, no arguments at all, with option\n");
@@ -1070,7 +1071,7 @@ static void __attribute__((noinline)) print_result()
continue;
}
if (status && changed)
printf("%-50s %s", row[0], row[3]);
printf("%-50s %s\n", row[0], row[3]);
else if (!status && changed)
{
/*
@@ -1080,11 +1081,11 @@ static void __attribute__((noinline)) print_result()
*/
if (!strcmp(row[2],"error") && strstr(row[3],"REPAIR "))
{
printf("%-50s %s", row[0], "Needs upgrade");
printf("%-50s %s\n", row[0], "Needs upgrade");
array4repair= strstr(row[3], "VIEW") ? &views4repair : &tables4repair;
}
else
printf("%s\n%-9s: %s", row[0], row[2], row[3]);
else if (!opt_silent || !strcasecmp(row[2],"error"))
printf("%s\n%-9s: %s\n", row[0], row[2], row[3]);
if (opt_auto_repair && strcmp(row[2],"note"))
{
found_error=1;
@@ -1093,9 +1094,8 @@ static void __attribute__((noinline)) print_result()
}
}
else
printf("%-9s: %s", row[2], row[3]);
printf("%-9s: %s\n", row[2], row[3]);
strmake_buf(prev, row[0]);
putchar('\n');
}
/* add the last table to be repaired to the list */
if (found_error && opt_auto_repair && what_to_do != DO_REPAIR)

File diff suppressed because it is too large Load Diff

View File

@@ -378,9 +378,9 @@ static int write_to_table(char *filename, MYSQL *mysql)
}
mysql_real_escape_string(mysql, escaped_name, hard_path,
(unsigned long) strlen(hard_path));
sprintf(sql_statement, "LOAD DATA %s %s INFILE '%s'",
opt_low_priority ? "LOW_PRIORITY" : "",
opt_local_file ? "LOCAL" : "", escaped_name);
snprintf(sql_statement, sizeof(sql_statement), "LOAD DATA %s %s INFILE '%s'",
opt_low_priority ? "LOW_PRIORITY" : "",
opt_local_file ? "LOCAL" : "", escaped_name);
end= strend(sql_statement);
if (replace)
end= strmov(end, " REPLACE");
@@ -498,6 +498,7 @@ static MYSQL *db_connect(char *host, char *database,
mysql_options(mysql, MYSQL_DEFAULT_AUTH, opt_default_auth);
if (!strcmp(default_charset,MYSQL_AUTODETECT_CHARSET_NAME))
default_charset= (char *)my_default_csname();
my_set_console_cp(default_charset);
mysql_options(mysql, MYSQL_SET_CHARSET_NAME, default_charset);
mysql_options(mysql, MYSQL_OPT_CONNECT_ATTR_RESET, 0);
mysql_options4(mysql, MYSQL_OPT_CONNECT_ATTR_ADD,
@@ -546,15 +547,18 @@ static void safe_exit(int error, MYSQL *mysql)
if (mysql)
mysql_close(mysql);
if (error)
sf_leaking_memory= 1; /* dirty exit, some threads are still running */
else
if (counter)
{
mysql_library_end();
free_defaults(argv_to_free);
my_free(opt_password);
my_end(my_end_arg); /* clean exit */
/* dirty exit. some threads are running,
memory is not freed, openssl not deinitialized */
DBUG_ASSERT(error);
_exit(error);
}
mysql_library_end();
free_defaults(argv_to_free);
my_free(opt_password);
my_end(my_end_arg); /* clean exit */
exit(error);
}

View File

@@ -137,6 +137,7 @@ int main(int argc, char **argv)
if (!strcmp(default_charset,MYSQL_AUTODETECT_CHARSET_NAME))
default_charset= (char *)my_default_csname();
my_set_console_cp(default_charset);
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, default_charset);
if (opt_plugin_dir && *opt_plugin_dir)

View File

@@ -2240,6 +2240,13 @@ generate_stats(conclusions *con, option_string *eng, stats *sptr)
stats *ptr;
unsigned int x;
if (eng && eng->string)
con->engine= eng->string;
/* Early return when iterations is 0 to avoid accessing uninitialized sptr */
if (iterations == 0)
return;
con->min_timing= sptr->timing;
con->max_timing= sptr->timing;
con->min_rows= sptr->rows;
@@ -2260,11 +2267,6 @@ generate_stats(conclusions *con, option_string *eng, stats *sptr)
con->min_timing= ptr->timing;
}
con->avg_timing= con->avg_timing/iterations;
if (eng && eng->string)
con->engine= eng->string;
else
con->engine= NULL;
}
void

View File

@@ -20,7 +20,7 @@
Tool used for executing a .test file
See the "MySQL Test framework manual" for more information
https://mariadb.com/kb/en/library/mysqltest/
https://mariadb.com/docs/server/clients-and-utilities/testing-tools/mariadb-test
Please keep the test framework tools identical in all versions!
@@ -55,6 +55,7 @@
#endif
#include <signal.h>
#include <my_stacktrace.h>
#include <my_attribute.h>
#include <welcome_copyright_notice.h> // ORACLE_WELCOME_COPYRIGHT_NOTICE
@@ -78,7 +79,7 @@ static my_bool non_blocking_api_enabled= 0;
#define MAX_DELIMITER_LENGTH 16
#define DEFAULT_MAX_CONN 64
#define DIE_BUFF_SIZE 15*1024
#define DIE_BUFF_SIZE 64*1024
#define RESULT_STRING_INIT_MEM 2048
#define RESULT_STRING_INCREMENT_MEM 2048
@@ -1533,12 +1534,12 @@ void do_eval(DYNAMIC_STRING *query_eval, const char *query,
}
else
{
if (!(v= var_get(p, &p, 0, 0)))
if (!(v= var_get(p, &p, 0, 0)) || !v->str_val)
{
report_or_die( "Bad variable in eval");
DBUG_VOID_RETURN;
}
dynstr_append_mem(query_eval, v->str_val, v->str_val_len);
dynstr_append_mem(query_eval, v->str_val, v->str_val_len);
}
break;
case '\\':
@@ -1987,6 +1988,8 @@ static void make_error_message(char *buf, size_t len, const char *fmt, va_list a
s+= my_snprintf(s, end -s, "\n");
}
PRAGMA_DISABLE_CHECK_STACK_FRAME
static void die(const char *fmt, ...)
{
char buff[DIE_BUFF_SIZE];
@@ -1998,6 +2001,8 @@ static void die(const char *fmt, ...)
really_die(buff);
}
PRAGMA_REENABLE_CHECK_STACK_FRAME
static void really_die(const char *msg)
{
static int dying= 0;
@@ -2026,6 +2031,8 @@ static void really_die(const char *msg)
cleanup_and_exit(1, 1);
}
PRAGMA_DISABLE_CHECK_STACK_FRAME
void report_or_die(const char *fmt, ...)
{
va_list args;
@@ -2080,6 +2087,7 @@ void abort_not_supported_test(const char *fmt, ...)
cleanup_and_exit(62, 0);
}
PRAGMA_REENABLE_CHECK_STACK_FRAME
void abort_not_in_this_version()
{
@@ -2900,7 +2908,7 @@ VAR* var_get(const char *var_name, const char **var_name_end, my_bool raw,
if (!raw && v->int_dirty)
{
sprintf(v->str_val, "%d", v->int_val);
snprintf(v->str_val, v->alloced_len, "%d", v->int_val);
v->int_dirty= false;
v->str_val_len = strlen(v->str_val);
}
@@ -2962,7 +2970,7 @@ void var_set(const char *var_name, const char *var_name_end,
{
if (v->int_dirty)
{
sprintf(v->str_val, "%d", v->int_val);
snprintf(v->str_val, v->alloced_len, "%d", v->int_val);
v->int_dirty=false;
v->str_val_len= strlen(v->str_val);
}
@@ -3704,6 +3712,47 @@ static int replace(DYNAMIC_STRING *ds_str,
return 0;
}
#ifdef _WIN32
/**
Check if background execution of command was requested.
Like in Unix shell, we assume background execution of the last
character in command is a ampersand (we do not tokenize though)
*/
static bool is_background_command(const DYNAMIC_STRING *ds)
{
for (size_t i= ds->length - 1; i > 1; i--)
{
char c= ds->str[i];
if (!isspace(c))
return (c == '&');
}
return false;
}
/**
Execute OS command in background. We assume that the last character
is ampersand, i.e is_background_command() returned
*/
#include <string>
static int execute_in_background(char *cmd)
{
STARTUPINFO s{};
PROCESS_INFORMATION pi{};
char *end= strrchr(cmd, '&');
DBUG_ASSERT(end);
*end =0;
std::string scmd("cmd /c ");
scmd.append(cmd);
BOOL ok=
CreateProcess(0, (char *)scmd.c_str(), 0, 0, 0, CREATE_NO_WINDOW, 0, 0, &s, &pi);
*end= '&';
if (!ok)
return (int) GetLastError();
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return 0;
}
#endif
/*
Execute given command.
@@ -3778,6 +3827,14 @@ void do_exec(struct st_command *command)
DBUG_PRINT("info", ("Executing '%s' as '%s'",
command->first_argument, ds_cmd.str));
#ifdef _WIN32
if (is_background_command(&ds_cmd))
{
error= execute_in_background(ds_cmd.str);
goto end;
}
#endif
if (!(res_file= my_popen(ds_cmd.str, "r")))
{
dynstr_free(&ds_cmd);
@@ -3804,7 +3861,9 @@ void do_exec(struct st_command *command)
dynstr_append_sorted(&ds_res, &ds_sorted);
dynstr_free(&ds_sorted);
}
#ifdef _WIN32
end:
#endif
if (error)
{
uint status= WEXITSTATUS(error);
@@ -4101,8 +4160,7 @@ void do_remove_file(struct st_command *command)
void do_remove_files_wildcard(struct st_command *command)
{
int error= 0, sys_errno= 0;
uint i;
size_t directory_length;
size_t i, directory_length;
MY_DIR *dir_info;
FILEINFO *file;
char dir_separator[2];
@@ -4141,7 +4199,7 @@ void do_remove_files_wildcard(struct st_command *command)
/* Set default wild chars for wild_compare, is changed in embedded mode */
set_wild_chars(1);
for (i= 0; i < (uint) dir_info->number_of_files; i++)
for (i= 0; i < dir_info->number_of_files; i++)
{
file= dir_info->dir_entry + i;
/* Remove only regular files, i.e. no directories etc. */
@@ -4427,7 +4485,7 @@ void do_rmdir(struct st_command *command)
static int get_list_files(DYNAMIC_STRING *ds, const DYNAMIC_STRING *ds_dirname,
const DYNAMIC_STRING *ds_wild)
{
uint i;
size_t i;
MY_DIR *dir_info;
FILEINFO *file;
DBUG_ENTER("get_list_files");
@@ -4436,7 +4494,7 @@ static int get_list_files(DYNAMIC_STRING *ds, const DYNAMIC_STRING *ds_dirname,
if (!(dir_info= my_dir(ds_dirname->str, MYF(MY_WANT_SORT))))
DBUG_RETURN(1);
set_wild_chars(1);
for (i= 0; i < (uint) dir_info->number_of_files; i++)
for (i= 0; i < dir_info->number_of_files; i++)
{
file= dir_info->dir_entry + i;
if (ds_wild && ds_wild->length &&
@@ -5207,7 +5265,8 @@ void do_sync_with_master2(struct st_command *command, long offset,
if (!master_pos.file[0])
die("Calling 'sync_with_master' without calling 'save_master_pos'");
sprintf(query_buf, "select master_pos_wait('%s', %ld, %d, '%s')",
snprintf(query_buf, sizeof(query_buf),
"select master_pos_wait('%s', %ld, %d, '%s')",
master_pos.file, master_pos.pos + offset, timeout,
connection_name);
@@ -8495,8 +8554,12 @@ void do_close_connection(struct st_command *command)
DBUG_PRINT("info", ("Closing connection %s", con->name));
#ifndef EMBEDDED_LIBRARY
if (command->type == Q_DIRTY_CLOSE)
{
mariadb_cancel(con->mysql);
else
{
simple_command(con->mysql,COM_QUIT,0,0,0);
if (con->util_mysql)
simple_command(con->util_mysql,COM_QUIT,0,0,0);
}
#endif /*!EMBEDDED_LIBRARY*/
if (con->stmt)
@@ -8636,6 +8699,7 @@ void safe_connect(MYSQL* mysql, const char *name, const char *host,
con - connection structure to be used
host, user, pass, - connection parameters
db, port, sock
default_db - 0 if db was explicitly passed
DESCRIPTION
This function will try to establish a connection to server and handle
@@ -8653,7 +8717,8 @@ void safe_connect(MYSQL* mysql, const char *name, const char *host,
int connect_n_handle_errors(struct st_command *command,
MYSQL* con, const char* host,
const char* user, const char* pass,
const char* db, int port, const char* sock)
const char* db, int port, const char* sock,
my_bool default_db)
{
DYNAMIC_STRING *ds;
int failed_attempts= 0;
@@ -8694,8 +8759,10 @@ int connect_n_handle_errors(struct st_command *command,
mysql_options(con, MYSQL_OPT_CONNECT_ATTR_RESET, 0);
mysql_options4(con, MYSQL_OPT_CONNECT_ATTR_ADD, "program_name", "mysqltest");
while (!mysql_real_connect(con, host, user, pass, db, port, sock ? sock: 0,
CLIENT_MULTI_STATEMENTS))
while (!mysql_real_connect(con, host, user, pass,
(default_db ? "" : db),
port, (sock ? sock : 0),
CLIENT_MULTI_STATEMENTS))
{
/*
If we have used up all our connections check whether this
@@ -8741,6 +8808,13 @@ do_handle_error:
return 0; /* Not connected */
}
if (default_db && db && db[0] != '\0')
{
mysql_select_db(con, db);
// Ignore errors intentionally
}
var_set_errno(0);
handle_no_error(command);
revert_properties();
@@ -8794,6 +8868,7 @@ void do_connect(struct st_command *command)
int connect_timeout= 0;
char *csname=0;
struct st_connection* con_slot;
my_bool default_db;
static DYNAMIC_STRING ds_connection_name;
static DYNAMIC_STRING ds_host;
@@ -8972,12 +9047,8 @@ void do_connect(struct st_command *command)
mysql_options(con_slot->mysql, MYSQL_OPT_SSL_CRL, opt_ssl_crl);
mysql_options(con_slot->mysql, MYSQL_OPT_SSL_CRLPATH, opt_ssl_crlpath);
mysql_options(con_slot->mysql, MARIADB_OPT_TLS_VERSION, opt_tls_version);
#if MYSQL_VERSION_ID >= 50000
/* Turn on ssl_verify_server_cert only if host is "localhost" */
opt_ssl_verify_server_cert= !strcmp(ds_host.str, "localhost");
mysql_options(con_slot->mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
&opt_ssl_verify_server_cert);
#endif
}
#endif
@@ -9004,7 +9075,12 @@ void do_connect(struct st_command *command)
/* Use default db name */
if (ds_database.length == 0)
{
dynstr_set(&ds_database, opt_db);
default_db= 1;
}
else
default_db= 0;
if (opt_plugin_dir && *opt_plugin_dir)
mysql_options(con_slot->mysql, MYSQL_PLUGIN_DIR, opt_plugin_dir);
@@ -9019,7 +9095,7 @@ void do_connect(struct st_command *command)
if (connect_n_handle_errors(command, con_slot->mysql,
ds_host.str,ds_user.str,
ds_password.str, ds_database.str,
con_port, ds_sock.str))
con_port, ds_sock.str, default_db))
{
DBUG_PRINT("info", ("Inserting connection %s in connection pool",
ds_connection_name.str));
@@ -9183,8 +9259,9 @@ void do_block(enum block_cmd cmd, struct st_command* command)
/* Parse and evaluate test expression */
expr_start= strchr(p, '(');
if (!expr_start++)
if (!expr_start)
die("missing '(' in %s", cmd_name);
expr_start++;
while (my_isspace(charset_info, *expr_start))
expr_start++;
@@ -9546,7 +9623,7 @@ int read_line()
my_bool have_slash= FALSE;
enum {R_NORMAL, R_Q, R_SLASH_IN_Q,
R_COMMENT, R_LINE_START} state= R_LINE_START;
R_COMMENT, R_LINE_START, R_CSTYLE_COMMENT} state= R_LINE_START;
DBUG_ENTER("read_line");
*p= 0;
@@ -9633,9 +9710,23 @@ int read_line()
state= R_Q;
}
}
else if (c == '*' && last_char == '/')
{
state= R_CSTYLE_COMMENT;
break;
}
have_slash= is_escape_char(c, last_quote);
break;
case R_CSTYLE_COMMENT:
if (c == '!')
// Got the hint introducer '/*!'. Switch to normal processing of
// next following characters
state= R_NORMAL;
else if (c == '/' && last_char == '*')
state= R_NORMAL;
break;
case R_COMMENT:
if (c == '\n')
{
@@ -10763,7 +10854,7 @@ void append_info(DYNAMIC_STRING *ds, ulonglong affected_rows,
const char *info)
{
char buf[40], buff2[21];
size_t len= sprintf(buf,"affected rows: %s\n", llstr(affected_rows, buff2));
size_t len= snprintf(buf, sizeof(buf), "affected rows: %s\n", llstr(affected_rows, buff2));
dynstr_append_mem(ds, buf, len);
if (info)
{
@@ -11469,7 +11560,7 @@ void run_query_stmt(struct st_connection *cn, struct st_command *command,
DYNAMIC_STRING ds_res_1st_execution;
my_bool ds_res_1st_execution_init = FALSE;
my_bool compare_2nd_execution = TRUE;
int query_match_ps2_re;
int query_match_ps2_re, query_match_cursor_re;
MYSQL_RES *res;
DBUG_ENTER("run_query_stmt");
DBUG_PRINT("query", ("'%-.60s'", query));
@@ -11528,6 +11619,9 @@ void run_query_stmt(struct st_connection *cn, struct st_command *command,
parameter markers.
*/
query_match_cursor_re= cursor_protocol_enabled && cn->stmt->field_count &&
match_re(&cursor_re, query);
if (cursor_protocol_enabled)
{
ps2_protocol_enabled = 0;
@@ -11536,7 +11630,7 @@ void run_query_stmt(struct st_connection *cn, struct st_command *command,
Use cursor for queries matching the filter,
else reset cursor type
*/
if (match_re(&cursor_re, query))
if (query_match_cursor_re)
{
/*
Use cursor when retrieving result
@@ -11548,12 +11642,13 @@ void run_query_stmt(struct st_connection *cn, struct st_command *command,
}
}
query_match_ps2_re = match_re(&ps2_re, query);
query_match_ps2_re = ps2_protocol_enabled && cn->stmt->field_count &&
match_re(&ps2_re, query);
/*
Execute the query first time if second execution enable
*/
if (ps2_protocol_enabled && query_match_ps2_re)
if (query_match_ps2_re)
{
if (do_stmt_execute(cn))
{
@@ -11609,8 +11704,7 @@ void run_query_stmt(struct st_connection *cn, struct st_command *command,
and keep them in a separate string for later. Cursor_protocol is used
only for queries matching the filter "cursor_re".
*/
if (cursor_protocol_enabled && match_re(&cursor_re, query) &&
!disable_warnings)
if (query_match_cursor_re && !disable_warnings)
append_warnings(&ds_execute_warnings, mysql);
if (read_stmt_results(stmt, ds, command))
@@ -11622,7 +11716,7 @@ void run_query_stmt(struct st_connection *cn, struct st_command *command,
The results of the first and second execution are compared
only if result logging is enabled
*/
if (compare_2nd_execution && ps2_protocol_enabled && query_match_ps2_re)
if (compare_2nd_execution && query_match_ps2_re)
{
if (ds->length != ds_res_1st_execution.length ||
!(memcmp(ds_res_1st_execution.str, ds->str, ds->length) == 0))
@@ -13002,12 +13096,8 @@ int main(int argc, char **argv)
mysql_options(con->mysql, MYSQL_OPT_SSL_CRL, opt_ssl_crl);
mysql_options(con->mysql, MYSQL_OPT_SSL_CRLPATH, opt_ssl_crlpath);
mysql_options(con->mysql, MARIADB_OPT_TLS_VERSION, opt_tls_version);
#if MYSQL_VERSION_ID >= 50000
/* Turn on ssl_verify_server_cert only if host is "localhost" */
opt_ssl_verify_server_cert= opt_host && !strcmp(opt_host, "localhost");
mysql_options(con->mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
&opt_ssl_verify_server_cert);
#endif
}
#endif

View File

@@ -23,38 +23,11 @@
#include <my_dir.h>
#include "my_readline.h"
static bool init_line_buffer(LINE_BUFFER *buffer,File file,ulong size,
ulong max_size);
static bool init_line_buffer_from_string(LINE_BUFFER *buffer,char * str);
static size_t fill_buffer(LINE_BUFFER *buffer);
static char *intern_read_line(LINE_BUFFER *buffer, ulong *out_length);
LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file)
{
LINE_BUFFER *line_buff;
#ifndef _WIN32
MY_STAT input_file_stat;
if (my_fstat(fileno(file), &input_file_stat, MYF(MY_WME)) ||
MY_S_ISDIR(input_file_stat.st_mode) ||
MY_S_ISBLK(input_file_stat.st_mode))
return 0;
#endif
if (!(line_buff=(LINE_BUFFER*)
my_malloc(PSI_NOT_INSTRUMENTED, sizeof(*line_buff),
MYF(MY_WME | MY_ZEROFILL))))
return 0;
if (init_line_buffer(line_buff,my_fileno(file),IO_SIZE,max_size))
{
my_free(line_buff);
return 0;
}
return line_buff;
}
char *batch_readline(LINE_BUFFER *line_buff, bool binary_mode)
{
char *pos;
@@ -64,13 +37,8 @@ char *batch_readline(LINE_BUFFER *line_buff, bool binary_mode)
return 0;
if (out_length && pos[out_length-1] == '\n')
{
/*
On Windows platforms we also need to remove '\r', unconditionally. On
Unix-like platforms we only remove it if we are not on binary mode.
*/
/* Remove '\n' */
if (--out_length && IF_WIN(1,!binary_mode) && pos[out_length-1] == '\r')
if (--out_length && !binary_mode && pos[out_length-1] == '\r')
/* Remove '\r' */
out_length--;
}
@@ -110,8 +78,7 @@ LINE_BUFFER *batch_readline_command(LINE_BUFFER *line_buff, char * str)
Functions to handle buffered readings of lines from a stream
******************************************************************************/
static bool
init_line_buffer(LINE_BUFFER *buffer,File file,ulong size,ulong max_buffer)
bool init_line_buffer(LINE_BUFFER *buffer,File file,ulong size,ulong max_buffer)
{
buffer->file=file;
buffer->bufread=size;

View File

@@ -1,7 +1,7 @@
find_path(LIBAIO_INCLUDE_DIR NAMES libaio.h)
find_path(LIBAIO_INCLUDE_DIRS NAMES libaio.h)
find_library(LIBAIO_LIBRARIES NAMES aio)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
LIBAIO DEFAULT_MSG
LIBAIO_LIBRARIES LIBAIO_INCLUDE_DIR)
LIBAIO_LIBRARIES LIBAIO_INCLUDE_DIRS)

View File

@@ -1,9 +1,17 @@
find_path(LZ4_INCLUDE_DIR NAMES lz4.h)
find_path(LZ4_INCLUDE_DIRS NAMES lz4.h)
find_library(LZ4_LIBRARIES NAMES lz4)
if(LZ4_INCLUDE_DIRS AND EXISTS "${LZ4_INCLUDE_DIRS}/lz4.h")
file(STRINGS "${LZ4_INCLUDE_DIRS}/lz4.h" LZ4_H REGEX "^#define LZ4_VERSION_[MR]")
string(REGEX REPLACE "LZ4_VERSION" "" LZ4_H "${LZ4_H}")
string(REGEX MATCHALL "[0-9]+" LZ4_H "${LZ4_H}")
string(REGEX REPLACE ";" "." LZ4_VERSION_STRING "${LZ4_H}")
endif()
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
LZ4 DEFAULT_MSG
LZ4_LIBRARIES LZ4_INCLUDE_DIR)
LZ4
REQUIRED_VARS LZ4_LIBRARIES LZ4_INCLUDE_DIRS
VERSION_VAR LZ4_VERSION_STRING)
mark_as_advanced(LZ4_INCLUDE_DIR LZ4_LIBRARIES)
mark_as_advanced(LZ4_INCLUDE_DIRS LZ4_LIBRARIES)

9
cmake/FindLZO.cmake Normal file
View File

@@ -0,0 +1,9 @@
find_path(LZO_INCLUDE_DIRS NAMES lzo/lzo1x.h)
find_library(LZO_LIBRARIES NAMES lzo2)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
LZO DEFAULT_MSG
LZO_LIBRARIES LZO_INCLUDE_DIRS)
mark_as_advanced(LZO_INCLUDE_DIRS LZO_LIBRARIES)

9
cmake/FindSnappy.cmake Normal file
View File

@@ -0,0 +1,9 @@
find_path(SNAPPY_INCLUDE_DIRS NAMES snappy.h)
find_library(SNAPPY_LIBRARIES NAMES snappy)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
Snappy DEFAULT_MSG
SNAPPY_LIBRARIES SNAPPY_INCLUDE_DIRS)
mark_as_advanced(SNAPPY_INCLUDE_DIRS SNAPPY_LIBRARIES)

View File

@@ -1,9 +1,9 @@
find_path(URING_INCLUDE_DIR NAMES liburing.h)
find_path(URING_INCLUDE_DIRS NAMES liburing.h)
find_library(URING_LIBRARIES NAMES uring)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
URING DEFAULT_MSG
URING_LIBRARIES URING_INCLUDE_DIR)
URING_LIBRARIES URING_INCLUDE_DIRS)
mark_as_advanced(URING_INCLUDE_DIR URING_LIBRARIES)
mark_as_advanced(URING_INCLUDE_DIRS URING_LIBRARIES)

View File

@@ -1,11 +1,11 @@
# - Find zstd
# Find the zstd compression library and includes
#
# ZSTD_INCLUDE_DIR - where to find zstd.h, etc.
# ZSTD_INCLUDE_DIRS - where to find zstd.h, etc.
# ZSTD_LIBRARIES - List of libraries when using zstd.
# ZSTD_FOUND - True if zstd found.
find_path(ZSTD_INCLUDE_DIR
find_path(ZSTD_INCLUDE_DIRS
NAMES zstd.h
HINTS ${ZSTD_ROOT_DIR}/include)
@@ -14,8 +14,8 @@ find_library(ZSTD_LIBRARIES
HINTS ${ZSTD_ROOT_DIR}/lib)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(ZSTD DEFAULT_MSG ZSTD_LIBRARIES ZSTD_INCLUDE_DIR)
find_package_handle_standard_args(ZSTD DEFAULT_MSG ZSTD_LIBRARIES ZSTD_INCLUDE_DIRS)
mark_as_advanced(
ZSTD_LIBRARIES
ZSTD_INCLUDE_DIR)
ZSTD_INCLUDE_DIRS)

View File

@@ -4,19 +4,27 @@ MACRO (SKIP_AWS_SDK MSG)
RETURN()
ENDMACRO()
FUNCTION (CHECK_AWS_SDK RETVAL REASON)
FUNCTION (CHECK_AWS_SDK COMPONENTS RETVAL REASON)
# AWS_SDK_EXTERNAL_PROJECT must be ON
IF(NOT AWS_SDK_EXTERNAL_PROJECT)
SKIP_AWS_SDK("AWS_SDK_EXTERNAL_PROJECT is not ON")
FOREACH(comp ${COMPONENTS})
FIND_PACKAGE(aws-cpp-sdk-${comp} CONFIG QUIET)
IF (NOT aws-cpp-sdk-${comp}_FOUND)
SKIP_AWS_SDK("AWS_SDK_EXTERNAL_PROJECT is not ON and aws-cpp-sdk-${comp} not found")
ENDIF()
ENDFOREACH()
SET(${RETVAL} ON PARENT_SCOPE)
ENDIF()
IF(NOT NOT_FOR_DISTRIBUTION)
SKIP_AWS_SDK("AWS SDK has Apache 2.0 License which is not compatible with GPLv2. Set -DNOT_FOR_DISTRIBUTION=ON if you need it")
ENDIF()
IF(CMAKE_VERSION VERSION_LESS "3.15")
SKIP_AWS_SDK("CMake too old")
ENDIF()
# Check compiler support
IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
EXECUTE_PROCESS(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
IF (GCC_VERSION VERSION_LESS 4.8)
SKIP_AWS_SDK("GCC VERSION too old (${GCC_VERSION}, required is 4.8 or later")
IF (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9)
SKIP_AWS_SDK("GCC VERSION too old (${GCC_VERSION}, required is 4.9 or later")
ENDIF()
ELSEIF (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
IF ((CMAKE_CXX_COMPILER_VERSION AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.3) OR
@@ -36,35 +44,27 @@ FUNCTION (CHECK_AWS_SDK RETVAL REASON)
SKIP_AWS_SDK("OS unsupported by AWS SDK")
ENDIF()
# Build from source, using ExternalProject_Add
# AWS C++ SDK requires cmake 2.8.12
IF(CMAKE_VERSION VERSION_LESS "2.8.12")
SKIP_AWS_SDK("CMake is too old")
ENDIF()
IF(UNIX)
# Check librairies required for building SDK
FIND_PACKAGE(CURL)
SET_PACKAGE_PROPERTIES(CURL PROPERTIES TYPE REQUIRED)
IF(NOT CURL_FOUND)
SKIP_AWS_SDK("AWS C++ SDK requires libcurl development package")
IF("${WITH_ZLIB}" STREQUAL "bundled")
# Breaks FIND_PACKAGE(ZLIB)
SKIP_AWS_SDK("Incompatible with WITH_ZLIB=bundled")
ENDIF()
FIND_PATH(UUID_INCLUDE_DIR uuid/uuid.h)
IF(NOT UUID_INCLUDE_DIR)
SKIP_AWS_SDK("AWS C++ SDK requires uuid development package")
ENDIF()
IF(NOT APPLE)
FIND_LIBRARY(UUID_LIBRARIES uuid)
SET_PACKAGE_PROPERTIES(UUID_LIBRARIES PROPERTIES TYPE REQUIRED)
IF(NOT UUID_LIBRARIES)
SKIP_AWS_SDK("AWS C++ SDK requires uuid development package")
# Check libraries required for building SDK
FOREACH(pkg CURL ZLIB OpenSSL)
FIND_PACKAGE(${pkg})
IF(NOT ${pkg}_FOUND)
SKIP_AWS_SDK("AWS C++ SDK requires ${pkg}")
ENDIF()
FIND_PACKAGE(OpenSSL)
SET_PACKAGE_PROPERTIES(OpenSSL PROPERTIES TYPE REQUIRED)
IF(NOT OPENSSL_FOUND)
SKIP_AWS_SDK("AWS C++ SDK requires openssl development package")
SET_PACKAGE_PROPERTIES(${pkg} PROPERTIES TYPE REQUIRED)
ENDFOREACH()
# Also check for required libraries explicitely - they might be
# missing, even if check above succeeds, e.g when using own copy
# of zlib
FOREACH(lib OpenSSL::Crypto ZLIB::ZLIB CURL::libcurl)
IF(NOT TARGET ${lib})
SKIP_AWS_SDK("AWS C++ SDK requires ${lib}")
ENDIF()
ENDIF()
ENDFOREACH()
ENDIF()
SET(${RETVAL} ON PARENT_SCOPE)
ENDFUNCTION()
@@ -85,14 +85,4 @@ FUNCTION(USE_AWS_SDK_LIBS)
SET_PROPERTY(GLOBAL PROPERTY AWS_SDK_LIBS ${comp} APPEND)
TARGET_LINK_LIBRARIES(${target} aws-cpp-sdk-${comp})
ENDFOREACH()
TARGET_LINK_LIBRARIES(${target} aws-cpp-sdk-core)
TARGET_INCLUDE_DIRECTORIES(${target} PRIVATE ${PROJECT_BINARY_DIR}/extra/aws_sdk/aws_sdk_cpp/include)
# Link OS libraries that AWS SDK depends on
IF(WIN32)
TARGET_LINK_LIBRARIES(${target} bcrypt winhttp wininet userenv version)
ELSE()
FIND_PACKAGE(CURL REQUIRED)
FIND_PACKAGE(OpenSSL REQUIRED)
TARGET_LINK_LIBRARIES(${target} ${OPENSSL_LIBRARIES} ${CURL_LIBRARIES} ${UUID_LIBRARIES})
ENDIF()
ENDFUNCTION()

View File

@@ -108,14 +108,10 @@ ELSEIF(RPM)
SET(WITH_PCRE system CACHE STRING "")
SET(CLIENT_PLUGIN_ZSTD OFF)
IF(RPM MATCHES "fedora|centos|rhel|rocky|alma")
SET(WITH_INNODB_BZIP2 OFF CACHE STRING "")
SET(WITH_INNODB_LZO OFF CACHE STRING "")
SET(WITH_ROCKSDB_BZip2 OFF CACHE STRING "")
ENDIF()
IF(RPM MATCHES "opensuse|sles|centos|rhel|rocky|alma")
SET(WITH_INNODB_LZ4 OFF CACHE STRING "")
SET(WITH_ROCKSDB_LZ4 OFF CACHE STRING "")
SET(GRN_WITH_LZ4 no CACHE STRING "")
ENDIF()
IF(RPM MATCHES "rhel8")
SET(WITH_READLINE ON CACHE BOOL "")
@@ -125,13 +121,13 @@ ELSEIF(DEB)
SET(WITH_ZLIB system CACHE STRING "")
SET(WITH_LIBWRAP ON)
SET(HAVE_EMBEDDED_PRIVILEGE_CONTROL ON)
SET(PLUGIN_AUTH_SOCKET YES CACHE STRING "")
# On Hurd systems (GNU) there is no auth socket implementation
IF(NOT CMAKE_SYSTEM_NAME STREQUAL "GNU")
SET(PLUGIN_AUTH_SOCKET YES CACHE STRING "")
ENDIF()
SET(WITH_EMBEDDED_SERVER ON CACHE BOOL "")
SET(WITH_PCRE system CACHE STRING "")
SET(CLIENT_PLUGIN_ZSTD OFF)
SET(WITH_INNODB_BZIP2 OFF CACHE STRING "")
SET(WITH_INNODB_LZMA OFF CACHE STRING "")
SET(WITH_INNODB_LZO OFF CACHE STRING "")
SET(WITH_ROCKSDB_BZip2 OFF CACHE STRING "")
ELSE()
SET(WITH_SSL bundled CACHE STRING "")
@@ -140,12 +136,8 @@ ELSE()
SET(WITH_JEMALLOC static CACHE STRING "")
SET(PLUGIN_AUTH_SOCKET STATIC CACHE STRING "")
SET(WITH_STRIPPED_CLIENT ON CACHE BOOL "Strip all client binaries")
SET(WITH_INNODB_BZIP2 OFF CACHE STRING "")
SET(WITH_INNODB_LZ4 OFF CACHE STRING "")
SET(WITH_INNODB_LZO OFF CACHE STRING "")
SET(WITH_ROCKSDB_BZip2 OFF CACHE STRING "")
SET(WITH_ROCKSDB_LZ4 OFF CACHE STRING "")
SET(GRN_WITH_LZ4 no CACHE STRING "")
ENDIF()
IF(NOT COMPILATION_COMMENT)
@@ -180,152 +172,3 @@ IF(UNIX)
ENDIF()
ENDIF()
ENDIF()
# Compiler options
IF(UNIX)
# Default GCC flags
IF(CMAKE_COMPILER_IS_GNUCC)
SET(COMMON_C_FLAGS "-g -fno-omit-frame-pointer -fno-strict-aliasing -Wno-uninitialized")
STRING(APPEND CMAKE_C_FLAGS_DEBUG " ${COMMON_C_FLAGS}")
STRING(APPEND CMAKE_C_FLAGS_RELEASE " ${COMMON_C_FLAGS}")
STRING(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " ${COMMON_C_FLAGS}")
# MariaDB uses -O3 for release builds
STRING(REGEX REPLACE "-O2" "-O3" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
STRING(REGEX REPLACE "-O2" "-O3" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
ENDIF()
IF(CMAKE_COMPILER_IS_GNUCXX)
SET(COMMON_CXX_FLAGS "-g -fno-omit-frame-pointer -fno-strict-aliasing -Wno-uninitialized")
STRING(APPEND CMAKE_CXX_FLAGS_DEBUG " ${COMMON_CXX_FLAGS}")
STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " ${COMMON_CXX_FLAGS}")
STRING(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " ${COMMON_CXX_FLAGS}")
# MariaDB uses -O3 for release builds
STRING(REGEX REPLACE "-O2" "-O3" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
STRING(REGEX REPLACE "-O2" "-O3" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
ENDIF()
# IBM Z flags
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "s390x")
IF(RPM MATCHES "(rhel|centos)6" OR RPM MATCHES "(suse|sles)11")
SET(z_flags "-funroll-loops -march=z9-109 -mtune=z10")
ELSEIF(RPM MATCHES "(rhel|centos)7" OR RPM MATCHES "(suse|sles)12")
SET(z_flags "-funroll-loops -march=z196 -mtune=zEC12")
ELSE()
SET(z_flags "")
ENDIF()
IF(CMAKE_COMPILER_IS_GNUCC)
STRING(APPEND CMAKE_C_FLAGS_RELEASE " ${z_flags}")
STRING(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " ${z_flags}")
ENDIF()
IF(CMAKE_COMPILER_IS_GNUCXX)
STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " ${z_flags}")
STRING(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " ${z_flags}")
ENDIF()
UNSET(z_flags)
ENDIF()
# HPUX flags
IF(CMAKE_SYSTEM_NAME MATCHES "HP-UX")
IF(CMAKE_C_COMPILER_ID MATCHES "HP")
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ia64")
SET(COMMON_C_FLAGS "+DSitanium2 -mt -AC99")
SET(COMMON_CXX_FLAGS "+DSitanium2 -mt -Aa")
STRING(APPEND CMAKE_C_FLAGS_DEBUG " +O0 -g ${COMMON_C_FLAGS}")
STRING(APPEND CMAKE_CXX_FLAGS_DEBUG " +O0 -g ${COMMON_CXX_FLAGS}")
STRING(APPEND CMAKE_C_FLAGS_RELEASE " +O0 -g ${COMMON_C_FLAGS}")
STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " +O0 -g ${COMMON_CXX_FLAGS}")
# We have seen compiler bugs with optimisation and -g, so disabled for now
STRING(APPEND CMAKE_C_FLAGS_RELEASE " +O2 ${COMMON_C_FLAGS}")
STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " +O2 ${COMMON_CXX_FLAGS}")
ENDIF()
ENDIF()
SET(WITH_SSL no)
ENDIF()
# Linux flags
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
IF(CMAKE_C_COMPILER_ID MATCHES "Intel")
SET(COMMON_C_FLAGS "-static-intel -static-libgcc -g -mp -restrict")
SET(COMMON_CXX_FLAGS "-static-intel -static-libgcc -g -mp -restrict -fno-exceptions")
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ia64")
SET(COMMON_C_FLAGS "${COMMON_C_FLAGS} -no-ftz -no-prefetch")
SET(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -no-ftz -no-prefetch")
ENDIF()
STRING(APPEND CMAKE_C_FLAGS_DEBUG " ${COMMON_C_FLAGS}")
STRING(APPEND CMAKE_CXX_FLAGS_DEBUG " ${COMMON_CXX_FLAGS}")
STRING(APPEND CMAKE_C_FLAGS_RELEASE " -unroll2 -ip ${COMMON_C_FLAGS}")
STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " -unroll2 -ip ${COMMON_CXX_FLAGS}")
STRING(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " -unroll2 -ip ${COMMON_C_FLAGS}")
STRING(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " -unroll2 -ip ${COMMON_CXX_FLAGS}")
# MariaDB uses -O3 for release builds.
STRING(REGEX REPLACE "-O2" "-O3" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
STRING(REGEX REPLACE "-O2" "-O3" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
STRING(REGEX REPLACE "-O2" "-O3" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
STRING(REGEX REPLACE "-O2" "-O3" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
SET(WITH_SSL no)
ENDIF()
ENDIF()
# Default Clang flags
IF(CMAKE_C_COMPILER_ID MATCHES "Clang")
SET(COMMON_C_FLAGS "-g -fno-omit-frame-pointer -fno-strict-aliasing -Wno-parentheses-equality -Wno-string-plus-int")
STRING(APPEND CMAKE_C_FLAGS_DEBUG " ${COMMON_C_FLAGS}")
STRING(APPEND CMAKE_C_FLAGS_RELEASE " ${COMMON_C_FLAGS}")
STRING(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " ${COMMON_C_FLAGS}")
# MariaDB uses -O3 for release builds.
STRING(REGEX REPLACE "-O2" "-O3" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
STRING(REGEX REPLACE "-O2" "-O3" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
ENDIF()
IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
SET(COMMON_CXX_FLAGS "-g -fno-omit-frame-pointer -fno-strict-aliasing -Wno-parentheses-equality -Wno-string-plus-int")
STRING(APPEND CMAKE_CXX_FLAGS_DEBUG " ${COMMON_CXX_FLAGS}")
STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " ${COMMON_CXX_FLAGS}")
STRING(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " ${COMMON_CXX_FLAGS}")
# MariaDB uses -O3 for release builds.
STRING(REGEX REPLACE "-O2" "-O3" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
STRING(REGEX REPLACE "-O2" "-O3" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
ENDIF()
# Solaris flags
IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
IF(CMAKE_SYSTEM_VERSION VERSION_GREATER "5.9")
# Link mysqld with mtmalloc on Solaris 10 and later
SET(WITH_MYSQLD_LDFLAGS "-lmtmalloc" CACHE STRING "")
ENDIF()
IF(CMAKE_C_COMPILER_ID MATCHES "SunPro")
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "i386")
SET(COMMON_C_FLAGS "-g -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -xlibmil -xlibmopt -xtarget=generic")
SET(COMMON_CXX_FLAGS "-g0 -mt -fsimple=1 -ftrap=%none -nofstore -xbuiltin=%all -features=no%except -xlibmil -xlibmopt -xtarget=generic")
STRING(APPEND CMAKE_C_FLAGS_DEBUG " -xO1 ${COMMON_C_FLAGS}")
STRING(APPEND CMAKE_CXX_FLAGS_DEBUG " -xO1 ${COMMON_CXX_FLAGS}")
IF(32BIT)
STRING(APPEND CMAKE_C_FLAGS_RELEASE " -xO2 ${COMMON_C_FLAGS}")
STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " -xO2 ${COMMON_CXX_FLAGS}")
STRING(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " -xO2 ${COMMON_C_FLAGS}")
STRING(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " -xO2 ${COMMON_CXX_FLAGS}")
ELSEIF(64BIT)
STRING(APPEND CMAKE_C_FLAGS_RELEASE " -xO3 ${COMMON_C_FLAGS}")
STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " -xO3 ${COMMON_CXX_FLAGS}")
STRING(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " -xO3 ${COMMON_C_FLAGS}")
STRING(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " -xO3 ${COMMON_CXX_FLAGS}")
ENDIF()
ELSE()
# Assume !x86 is SPARC
SET(COMMON_C_FLAGS "-g -Xa -xstrconst -mt")
SET(COMMON_CXX_FLAGS "-g0 -noex -mt")
IF(32BIT)
STRING(APPEND COMMON_C_FLAGS " -xarch=sparc")
STRING(APPEND COMMON_CXX_FLAGS " -xarch=sparc")
ENDIF()
STRING(APPEND CMAKE_C_FLAGS_DEBUG " ${COMMON_C_FLAGS}")
STRING(APPEND CMAKE_CXX_FLAGS_DEBUG " ${COMMON_CXX_FLAGS}")
STRING(APPEND CMAKE_C_FLAGS_RELEASE " -xO3 ${COMMON_C_FLAGS}")
STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " -xO3 ${COMMON_CXX_FLAGS}")
STRING(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " -xO3 ${COMMON_C_FLAGS}")
STRING(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " -xO3 ${COMMON_CXX_FLAGS}")
ENDIF()
ENDIF()
ENDIF()
ENDIF()

View File

@@ -32,7 +32,7 @@ IF(RPM)
GET_PROPERTY(T CACHE ${V} PROPERTY TYPE)
IF ((T STREQUAL FILEPATH OR V MATCHES "^CMAKE_COMMAND$") AND ${V} MATCHES "^/")
IF (RPM)
FIND_DEP(${V} rpm -q --qf "%{NAME}" -f ${${V}})
FIND_DEP(${V} rpm -q --qf "%{NAME} " -f ${${V}})
ELSE() # must be DEB
MESSAGE(FATAL_ERROR "Not implemented")
ENDIF ()

View File

@@ -2,6 +2,8 @@ IF(RPM)
MESSAGE(STATUS "CPackRPM building with RPM configuration: ${RPM}")
INCLUDE(check_linker_flag)
SET(CPACK_GENERATOR "RPM")
SET(CPACK_RPM_PACKAGE_DEBUG 1)
SET(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
@@ -52,6 +54,19 @@ SET(CPACK_PACKAGE_RELOCATABLE FALSE)
SET(CPACK_RPM_PACKAGE_GROUP "Applications/Databases")
SET(CPACK_RPM_PACKAGE_URL ${CPACK_PACKAGE_URL})
# The spec file depends on environment variables
SET(ENV{RPM_PACKAGE_NAME} ${CPACK_RPM_PACKAGE_NAME})
EXECUTE_PROCESS(COMMAND rpm --eval ${CPACK_RPM_PACKAGE_RELEASE} OUTPUT_VARIABLE RPM_PACKAGE_RELEASE_EXPANDED)
STRING(STRIP "${RPM_PACKAGE_RELEASE_EXPANDED}" RPM_PACKAGE_RELEASE_EXPANDED)
SET(ENV{RPM_PACKAGE_RELEASE} ${RPM_PACKAGE_RELEASE_EXPANDED})
SET(ENV{RPM_ARCH} ${CMAKE_SYSTEM_PROCESSOR})
SET(ENV{RPM_PACKAGE_VERSION} ${SERVER_VERSION})
MY_CHECK_AND_SET_LINKER_FLAG("-specs=/usr/lib/rpm/redhat/redhat-package-notes")
IF(HAVE_LINK_FLAG__specs_/usr/lib/rpm/redhat/redhat_package_notes)
SET(CMAKE_CXX_LINKER_LAUNCHER "env;RPM_PACKAGE_NAME=$ENV{RPM_PACKAGE_NAME};RPM_ARCH=$ENV{RPM_ARCH};RPM_PACKAGE_VERSION=$ENV{RPM_PACKAGE_VERSION};RPM_PACKAGE_RELEASE=$ENV{RPM_PACKAGE_RELEASE}")
SET(CMAKE_C_LINKER_LAUNCHER ${CMAKE_CXX_LINKER_LAUNCHER})
ENDIF()
SET(CPACK_RPM_shared_PACKAGE_VENDOR "MariaDB Corporation Ab")
SET(CPACK_RPM_shared_PACKAGE_LICENSE "LGPLv2.1")
@@ -61,7 +76,7 @@ SET(CPACK_RPM_PACKAGE_DESCRIPTION "MariaDB: a very fast and robust SQL database
It is GPL v2 licensed, which means you can use the it free of charge under the
conditions of the GNU General Public License Version 2 (http://www.gnu.org/licenses/).
MariaDB documentation can be found at https://mariadb.com/kb
MariaDB documentation can be found at https://mariadb.com/docs
MariaDB bug reports should be submitted through https://jira.mariadb.org")
# mariabackup
@@ -165,7 +180,7 @@ SET(ignored
SET(CPACK_RPM_server_USER_FILELIST
${ignored}
"%config(noreplace) ${INSTALL_SYSCONF2DIR}/*"
"%config(noreplace) ${INSTALL_SYSCONFDIR}/logrotate.d/mysql"
"%config(noreplace) ${INSTALL_SYSCONFDIR}/logrotate.d/mariadb"
)
SET(CPACK_RPM_common_USER_FILELIST ${ignored} "%config(noreplace) ${INSTALL_SYSCONFDIR}/my.cnf")
SET(CPACK_RPM_shared_USER_FILELIST ${ignored} "%config(noreplace) ${INSTALL_SYSCONF2DIR}/*")
@@ -195,6 +210,10 @@ SETA(CPACK_RPM_client_PACKAGE_CONFLICTS
SETA(CPACK_RPM_common_PACKAGE_CONFLICTS
"MariaDB-server < 10.6.1")
SETA(CPACK_RPM_common_PACKAGE_OBSOLETES
"mysql-common")
SETA(CPACK_RPM_common_PACKAGE_PROVIDES
"mysql-common")
SETA(CPACK_RPM_devel_PACKAGE_OBSOLETES
"MySQL-devel")
@@ -229,7 +248,7 @@ IF(WITH_WSREP)
SETA(CPACK_RPM_server_PACKAGE_REQUIRES
"galera-4" "rsync" "grep" "gawk" "iproute"
"coreutils" "findutils" "tar")
SETA(CPACK_RPM_server_PACKAGE_RECOMMENDS "lsof" "socat")
SETA(CPACK_RPM_server_PACKAGE_RECOMMENDS "lsof" "socat" "pv")
SETA(CPACK_RPM_test_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES}" "socat")
ENDIF()
@@ -307,6 +326,9 @@ IF(RPM MATCHES "fedora")
ALTERNATIVE_NAME("shared" "mariadb-connector-c" ${MARIADB_CONNECTOR_C_VERSION}-1)
ENDIF()
IF(RPM MATCHES "fedora|rhel|centos" AND NOT RPM MATCHES "rhel[78]")
SETA(CPACK_RPM_server_PACKAGE_REQUIRES "(mysql-selinux >= 1.0.14 if selinux-policy-targeted)")
ENDIF()
SET(PYTHON_SHEBANG "/usr/bin/python3" CACHE STRING "python shebang")
# If we want to build build MariaDB-shared-compat,

View File

@@ -13,7 +13,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA
IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND CMAKE_COMPILER_IS_GNUCXX
IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
AND CMAKE_SIZEOF_VOID_P EQUAL 4)
IF(NOT DEFINED BUGGY_GCC_NO_DTRACE_MODULES)
EXECUTE_PROCESS(

View File

@@ -140,7 +140,7 @@ FUNCTION(INSTALL_DOCUMENTATION)
IF(RPM)
SET(destination "${destination}/MariaDB-${group}-${VERSION}")
ELSEIF(DEB)
SET(destination "${destination}/mariadb-${group}-${MAJOR_VERSION}.${MINOR_VERSION}")
SET(destination "${destination}/mariadb-${group}")
ENDIF()
INSTALL(FILES ${files} DESTINATION ${destination} COMPONENT ${ARG_COMPONENT})

52
cmake/libfmt.cmake Normal file
View File

@@ -0,0 +1,52 @@
INCLUDE (CheckCXXSourceRuns)
INCLUDE (ExternalProject)
SET(WITH_LIBFMT "auto" CACHE STRING
"Which libfmt to use (possible values are 'bundled', 'system', or 'auto')")
MACRO(BUNDLE_LIBFMT)
SET(dir "${CMAKE_BINARY_DIR}/extra/libfmt")
SET(LIBFMT_INCLUDE_DIR "${dir}/src/libfmt/include")
IF(CMAKE_VERSION VERSION_GREATER "3.0")
SET(fmt_byproducts BUILD_BYPRODUCTS ${LIBFMT_INCLUDE_DIR}/fmt/format-inl.h)
ENDIF()
ExternalProject_Add(
libfmt
PREFIX "${dir}"
URL "https://github.com/fmtlib/fmt/releases/download/11.0.2/fmt-11.0.2.zip"
URL_MD5 c622dca45ec3fc95254c48370a9f7a1d
INSTALL_COMMAND ""
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
${fmt_byproducts}
)
ENDMACRO()
MACRO (CHECK_LIBFMT)
IF(WITH_LIBFMT STREQUAL "system" OR WITH_LIBFMT STREQUAL "auto")
SET(CMAKE_REQUIRED_INCLUDES ${LIBFMT_INCLUDE_DIR})
CHECK_CXX_SOURCE_RUNS(
"#define FMT_HEADER_ONLY 1
#include <fmt/args.h>
int main() {
using ArgStore= fmt::dynamic_format_arg_store<fmt::format_context>;
ArgStore arg_store;
int answer= 4321;
arg_store.push_back(answer);
return fmt::vformat(\"{}\", arg_store).compare(\"4321\");
}" HAVE_SYSTEM_LIBFMT)
SET(CMAKE_REQUIRED_INCLUDES)
ENDIF()
IF(NOT HAVE_SYSTEM_LIBFMT OR WITH_LIBFMT STREQUAL "bundled")
IF (WITH_LIBFMT STREQUAL "system")
MESSAGE(FATAL_ERROR "system libfmt library is not found or unusable")
ENDIF()
BUNDLE_LIBFMT()
ELSE()
FIND_FILE(Libfmt_core_h fmt/core.h) # for build_depends.cmake
ENDIF()
ENDMACRO()
MARK_AS_ADVANCED(LIBFMT_INCLUDE_DIR)

View File

@@ -63,10 +63,19 @@ ENDFOREACH()
SET(MY_ERROR_FLAGS -Werror -fno-operator-names)
IF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_C_COMPILER_VERSION VERSION_LESS "6.0.0")
IF(CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_LESS "6.0.0")
SET(MY_ERROR_FLAGS ${MY_ERROR_FLAGS} -Wno-error=maybe-uninitialized)
SET(MY_ERROR_FLAGS ${MY_ERROR_FLAGS} -Wno-error=non-virtual-dtor) # gcc bug 7302
ENDIF()
FOREACH(LANG C CXX)
IF(CMAKE_${LANG}_COMPILER_ID MATCHES "Clang")
MY_CHECK_AND_SET_COMPILER_FLAG(-Werror=uninitialized-explicit-init)
MY_CHECK_AND_SET_COMPILER_FLAG(-Werror=uninitialized-const-reference)
SET(CMAKE_${LANG}_FLAGS "${CMAKE_${LANG}_FLAGS} -Werror=uninitialized")
ENDIF()
ENDFOREACH()
IF(MYSQL_MAINTAINER_MODE MATCHES "OFF|WARN")
RETURN()
ELSEIF(MYSQL_MAINTAINER_MODE MATCHES "AUTO")

View File

@@ -46,30 +46,13 @@ IF(GIT_EXECUTABLE)
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE RESULT
)
IF(NOT RESULT EQUAL 0)
SET(GIT_EXECUTABLE)
IF(RESULT EQUAL 0)
EXECUTE_PROCESS(
COMMAND "${GIT_EXECUTABLE}" submodule foreach --recursive "${GIT_EXECUTABLE} checkout-index --all --prefix=${PACKAGE_DIR}/$displaypath/"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE RESULT
)
ENDIF()
EXECUTE_PROCESS(
COMMAND "${GIT_EXECUTABLE}" submodule foreach "${GIT_EXECUTABLE} checkout-index --all --prefix=${PACKAGE_DIR}/$path/"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE RESULT
)
IF(NOT RESULT EQUAL 0)
SET(GIT_EXECUTABLE)
ENDIF()
EXECUTE_PROCESS(
COMMAND "${GIT_EXECUTABLE}" submodule foreach "${GIT_EXECUTABLE} checkout-index --all --prefix=${PACKAGE_DIR}/wsrep-lib/$path/"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/wsrep-lib
RESULT_VARIABLE RESULT
)
IF(NOT RESULT EQUAL 0)
SET(GIT_EXECUTABLE)
ENDIF()
EXECUTE_PROCESS(
COMMAND "${GIT_EXECUTABLE}" submodule foreach "${GIT_EXECUTABLE} checkout-index --all --prefix=${PACKAGE_DIR}/storage/columnstore/columnstore/$path/"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/storage/columnstore/columnstore
RESULT_VARIABLE RESULT
)
IF(NOT RESULT EQUAL 0)
SET(GIT_EXECUTABLE)
ENDIF()

View File

@@ -97,7 +97,7 @@ SET_IF_UNSET(CPACK_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}
It is GPL v2 licensed, which means you can use the it free of charge under the
conditions of the GNU General Public License Version 2 (http://www.gnu.org/licenses/).
MariaDB documentation can be found at https://mariadb.com/kb
MariaDB documentation can be found at https://mariadb.com/docs
MariaDB bug reports should be submitted through https://jira.mariadb.org
")

View File

@@ -34,8 +34,5 @@ ELSE()
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -maix64 -pthread -mcmodel=large")
ENDIF()
# fcntl(fd, F_SETFL, O_DIRECT) is not supported; O_DIRECT is an open(2) flag
SET(HAVE_FCNTL_DIRECT 0 CACHE INTERNAL "")
# make it WARN by default, not AUTO (that implies -Werror)
SET(MYSQL_MAINTAINER_MODE "WARN" CACHE STRING "Enable MariaDB maintainer-specific warnings. One of: NO (warnings are disabled) WARN (warnings are enabled) ERR (warnings are errors) AUTO (warnings are errors in Debug only)")

View File

@@ -1,5 +1,4 @@
# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
# Copyright (C) 2024 MariaDB Foundation
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -16,15 +15,5 @@
# This file includes FreeBSD specific options and quirks, related to system checks
# Should not be needed any more, but kept for easy resurrection if needed
# #Legacy option, maybe not needed anymore , taken as is from autotools build
# ADD_DEFINITIONS(-DNET_RETRY_COUNT=1000000)
# Find libexecinfo (library that contains backtrace_symbols etc)
SET(EXECINFO_ROOT /usr/local CACHE INTERNAL "Where to find execinfo library and header")
INCLUDE_DIRECTORIES(${EXECINFO_ROOT}/include)
SET(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${EXECINFO_ROOT}/include)
SET(ENV{LIB} "$ENV{LIB}:${EXECINFO_ROOT}/lib")
# For all userspace dependencies
LINK_DIRECTORIES(/usr/local/lib)

View File

@@ -17,10 +17,6 @@ INCLUDE(CheckSymbolExists)
INCLUDE(CheckCSourceRuns)
INCLUDE(CheckCSourceCompiles)
# fcntl(fd, F_SETFL, O_DIRECT) is not supported,
# and directio(3C) would only work on UFS or NFS, not ZFS.
SET(HAVE_FCNTL_DIRECT 0 CACHE INTERNAL "")
# Enable 64 bit file offsets
SET(_FILE_OFFSET_BITS 64)
@@ -73,8 +69,8 @@ CHECK_C_SOURCE_RUNS(
# Check is special processor flag needs to be set on older GCC
#that defaults to v8 sparc . Code here is taken from my_rdtsc.h
IF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_SIZEOF_VOID_P EQUAL 4
# that defaults to v8 sparc . Code here is taken from my_rdtsc.h
IF(CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_SIZEOF_VOID_P EQUAL 4
AND CMAKE_SYSTEM_PROCESSOR MATCHES "sparc")
SET(SOURCE
"

View File

@@ -15,370 +15,210 @@
# This file includes Windows specific hacks, mostly around compiler flags
INCLUDE (CheckCSourceCompiles)
INCLUDE (CheckCXXSourceCompiles)
INCLUDE (CheckStructHasMember)
INCLUDE (CheckLibraryExists)
INCLUDE (CheckFunctionExists)
INCLUDE (CheckCSourceRuns)
INCLUDE (CheckSymbolExists)
INCLUDE (CheckTypeSize)
IF(MSVC)
IF(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL ARM64)
SET(MSVC_ARM64 1)
SET(MSVC_INTEL 0)
ELSE()
SET(MSVC_INTEL 1)
ENDIF()
ENDIF()
if(MSVC)
if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL ARM64)
set(MSVC_ARM64 1)
set(MSVC_INTEL 0)
else()
set(MSVC_INTEL 1)
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL Clang)
set(CLANG_CL TRUE)
endif()
endif()
# avoid running system checks by using pre-cached check results
# system checks are expensive on VS since every tiny program is to be compiled in
# a VC solution.
GET_FILENAME_COMPONENT(_SCRIPT_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
INCLUDE(${_SCRIPT_DIR}/WindowsCache.cmake)
get_filename_component(_SCRIPT_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
include(${_SCRIPT_DIR}/WindowsCache.cmake)
# OS display name (version_compile_os etc).
# Used by the test suite to ignore bugs on some platforms,
IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
SET(SYSTEM_TYPE "Win64")
ELSE()
SET(SYSTEM_TYPE "Win32")
ENDIF()
# Used by the test suite to ignore bugs on some platforms
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(SYSTEM_TYPE "Win64")
else()
set(SYSTEM_TYPE "Win32")
endif()
# Intel compiler is almost Visual C++
# (same compile flags etc). Set MSVC flag
IF(CMAKE_C_COMPILER MATCHES "icl")
SET(MSVC TRUE)
ENDIF()
function(find_asan_runtime result_list)
set(${result_list} "" PARENT_SCOPE)
if(CMAKE_C_COMPILER_VERSION)
set(CLANG_VERSION "${CMAKE_C_COMPILER_VERSION}")
else()
return()
endif()
IF(MSVC AND CMAKE_CXX_COMPILER_ID MATCHES Clang)
SET(CLANG_CL TRUE)
ENDIF()
get_filename_component(CLANG_BIN_DIR "${CMAKE_C_COMPILER}" DIRECTORY)
get_filename_component(LLVM_ROOT "${CLANG_BIN_DIR}" DIRECTORY)
ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE)
ADD_DEFINITIONS(-D_WIN32_WINNT=0x0A00)
# We do not want the windows.h macros min/max
ADD_DEFINITIONS(-DNOMINMAX)
# Speed up build process excluding unused header files
ADD_DEFINITIONS(-DWIN32_LEAN_AND_MEAN)
# Adjust compiler and linker flags
IF(MINGW AND CMAKE_SIZEOF_VOID_P EQUAL 4)
# mininal architecture flags, i486 enables GCC atomics
ADD_DEFINITIONS(-march=i486)
ENDIF()
MACRO(ENABLE_SANITIZERS)
IF(NOT MSVC)
MESSAGE(FATAL_ERROR "clang-cl or MSVC necessary to enable asan/ubsan")
ENDIF()
# currently, asan is broken with static CRT.
IF(CLANG_CL AND NOT(MSVC_CRT_TYPE STREQUAL "/MD"))
SET(MSVC_CRT_TYPE "/MD" CACHE INTERNAL "" FORCE)
ENDIF()
IF(CMAKE_SIZEOF_VOID_P EQUAL 4)
SET(ASAN_ARCH i386)
ELSE()
SET(ASAN_ARCH x86_64)
ENDIF()
# After installation, clang lib directory should be added to PATH
# (e.g C:/Program Files/LLVM/lib/clang/5.0.1/lib/windows)
SET(SANITIZER_LIBS)
SET(SANITIZER_LINK_LIBRARIES)
SET(SANITIZER_COMPILE_FLAGS)
IF(WITH_ASAN)
IF(CLANG_CL)
LIST(APPEND SANITIZER_LIBS
clang_rt.asan_dynamic-${ASAN_ARCH}.lib clang_rt.asan_dynamic_runtime_thunk-${ASAN_ARCH}.lib)
ENDIF()
STRING(APPEND SANITIZER_COMPILE_FLAGS " -fsanitize=address")
ENDIF()
IF(WITH_UBSAN)
STRING(APPEND SANITIZER_COMPILE_FLAGS " -fsanitize=undefined -fno-sanitize=alignment")
ENDIF()
FOREACH(lib ${SANITIZER_LIBS})
FIND_LIBRARY(${lib}_fullpath ${lib})
IF(NOT ${lib}_fullpath)
MESSAGE(FATAL_ERROR "Can't enable sanitizer : missing ${lib}")
ENDIF()
LIST(APPEND CMAKE_REQUIRED_LIBRARIES ${${lib}_fullpath})
STRING(APPEND CMAKE_C_STANDARD_LIBRARIES " \"${${lib}_fullpath}\" ")
STRING(APPEND CMAKE_CXX_STANDARD_LIBRARIES " \"${${lib}_fullpath}\" ")
ENDFOREACH()
STRING(APPEND CMAKE_C_FLAGS ${SANITIZER_COMPILE_FLAGS})
STRING(APPEND CMAKE_CXX_FLAGS ${SANITIZER_COMPILE_FLAGS})
ENDMACRO()
IF(MSVC)
IF(MSVC_VERSION LESS 1920)
MESSAGE(FATAL_ERROR "Visual Studio 2019 or later is required")
ENDIF()
# Disable mingw based pkg-config found in Strawberry perl
SET(PKG_CONFIG_EXECUTABLE 0 CACHE INTERNAL "")
SET(MSVC_CRT_TYPE /MT CACHE STRING
"Runtime library - specify runtime library for linking (/MT,/MTd,/MD,/MDd)"
# Determine target architecture
execute_process(
COMMAND "${CMAKE_C_COMPILER}" --version
OUTPUT_VARIABLE CLANG_VERSION_OUTPUT
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
SET(VALID_CRT_TYPES /MTd /MDd /MD /MT)
IF (NOT ";${VALID_CRT_TYPES};" MATCHES ";${MSVC_CRT_TYPE};")
MESSAGE(FATAL_ERROR "Invalid value ${MSVC_CRT_TYPE} for MSVC_CRT_TYPE, choose one of /MT,/MTd,/MD,/MDd ")
ENDIF()
# CMake version 3.15 and later uses CMAKE_MSVC_RUNTIME_LIBRARY
# variable for our MSVC_CRT_TYPE.
# Set CMAKE_MSVC_RUNTIME_LIBRARY and pass to external projects
# it is important to keep the same CRT type when linking
#
# Translation rules MSVC_CRT_TYPE -> CMAKE_MSVC_RUNTIME_LIBRARY
# /MT -> MultiThreaded
# /MTd -> MultiThreadedDebug
# /MD -> MultiThreadedDLL
# /MDd -> MultiThreadedDebugDLL
if(CLANG_VERSION_OUTPUT MATCHES "x86_64")
set(ARCH_SUFFIX "x86_64")
elseif(CLANG_VERSION_OUTPUT MATCHES "i686|i386")
set(ARCH_SUFFIX "i386")
elseif(CLANG_VERSION_OUTPUT MATCHES "aarch64")
set(ARCH_SUFFIX "aarch64")
else()
message(FATAL_ERROR "unknown arch")
endif()
SET(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreaded)
IF(MSVC_CRT_TYPE MATCHES "d$")
STRING(APPEND CMAKE_MSVC_RUNTIME_LIBRARY Debug)
ENDIF()
IF(MSVC_CRT_TYPE MATCHES "D")
STRING(APPEND CMAKE_MSVC_RUNTIME_LIBRARY DLL)
ENDIF()
string(REGEX MATCH "^[0-9]+" CLANG_MAJOR_VERSION "${CMAKE_C_COMPILER_VERSION}")
set(CLANG_VERSION_DIR "${LLVM_ROOT}/lib/clang/${CLANG_MAJOR_VERSION}")
IF(MSVC_CRT_TYPE MATCHES "/MD")
# Dynamic runtime (DLLs), need to install CRT libraries.
SET(CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT VCCRT)
SET(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS TRUE)
IF(MSVC_CRT_TYPE STREQUAL "/MDd")
SET (CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE)
ENDIF()
INCLUDE(InstallRequiredSystemLibraries)
ENDIF()
IF(WITH_ASAN AND (NOT CLANG_CL))
SET(DYNAMIC_UCRT_LINK_DEFAULT OFF)
ELSE()
SET(DYNAMIC_UCRT_LINK_DEFAULT ON)
ENDIF()
OPTION(DYNAMIC_UCRT_LINK "Link Universal CRT dynamically, if MSVC_CRT_TYPE=/MT" ${DYNAMIC_UCRT_LINK_DEFAULT})
SET(DYNAMIC_UCRT_LINKER_OPTION " /NODEFAULTLIB:libucrt.lib /DEFAULTLIB:ucrt.lib")
# Enable debug info also in Release build,
# and create PDB to be able to analyze crashes.
FOREACH(type EXE SHARED MODULE)
SET(CMAKE_${type}_LINKER_FLAGS_RELEASE
"${CMAKE_${type}_LINKER_FLAGS_RELEASE} /debug")
SET(CMAKE_${type}_LINKER_FLAGS_MINSIZEREL
"${CMAKE_${type}_LINKER_FLAGS_MINSIZEREL} /debug")
ENDFOREACH()
# Force runtime libraries
# Compile with /Zi to get debugging information
FOREACH(lang C CXX)
SET(CMAKE_${lang}_FLAGS_RELEASE "${CMAKE_${lang}_FLAGS_RELEASE} /Zi")
ENDFOREACH()
FOREACH(flag
CMAKE_C_FLAGS CMAKE_CXX_FLAGS
CMAKE_C_FLAGS_INIT CMAKE_CXX_FLAGS_INIT
CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_DEBUG_INIT
CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_DEBUG_INIT
CMAKE_C_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_MINSIZEREL
)
STRING(REGEX REPLACE "/M[TD][d]?" "${MSVC_CRT_TYPE}" "${flag}" "${${flag}}" )
STRING(REPLACE "/ZI " "/Zi " "${flag}" "${${flag}}")
IF((NOT "${${flag}}" MATCHES "/Zi") AND (NOT "${${flag}}" MATCHES "/Z7"))
STRING(APPEND ${flag} " /Zi")
ENDIF()
# Remove inlining flags, added by CMake, if any.
# Compiler default is fine.
STRING(REGEX REPLACE "/Ob[0-3]" "" "${flag}" "${${flag}}" )
ENDFOREACH()
# Allow to overwrite the inlining flag
SET(MSVC_INLINE "" CACHE STRING
"MSVC Inlining option, either empty, or one of /Ob0,/Ob1,/Ob2,/Ob3")
IF(MSVC_INLINE MATCHES "/Ob[0-3]")
ADD_COMPILE_OPTIONS(${MSVC_INLINE})
ELSEIF(NOT(MSVC_INLINE STREQUAL ""))
MESSAGE(FATAL_ERROR "Invalid option for MSVC_INLINE")
ENDIF()
IF(WITH_ASAN OR WITH_UBSAN)
# Workaround something Linux specific
SET(SECURITY_HARDENED 0 CACHE INTERNAL "" FORCE)
ENABLE_SANITIZERS()
ENDIF()
IF(CLANG_CL)
SET(CLANG_CL_FLAGS
"-Wno-unknown-warning-option -Wno-unused-private-field \
-Wno-unused-parameter -Wno-inconsistent-missing-override \
-Wno-unused-command-line-argument -Wno-pointer-sign \
-Wno-deprecated-register -Wno-missing-braces \
-Wno-unused-function -Wno-unused-local-typedef -msse4.2 "
)
IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
STRING(APPEND CLANG_CL_FLAGS "-mpclmul ")
set(out)
foreach(name clang_rt.asan_dynamic-${ARCH_SUFFIX}.lib
clang_rt.asan_dynamic_runtime_thunk-${ARCH_SUFFIX}.lib)
set(path "${CLANG_VERSION_DIR}/lib/windows/${name}")
if(EXISTS "${path}")
list(APPEND out ${path})
else()
message(FATAL_ERROR "expected library ${path} not found")
ENDIF()
STRING(APPEND CMAKE_C_FLAGS " ${CLANG_CL_FLAGS} ${MSVC_CRT_TYPE}")
STRING(APPEND CMAKE_CXX_FLAGS " ${CLANG_CL_FLAGS} ${MSVC_CRT_TYPE}")
ENDIF()
endforeach()
set(${result_list} ${out} PARENT_SCOPE)
endfunction()
FOREACH(type EXE SHARED MODULE)
STRING(REGEX REPLACE "/STACK:([^ ]+)" "" CMAKE_${type}_LINKER_FLAGS "${CMAKE_${type}_LINKER_FLAGS}")
IF(WITH_ASAN)
SET(build_types RELWITHDEBINFO DEBUG)
ELSE()
SET(build_types RELWITHDEBINFO)
ENDIF()
FOREACH(btype ${build_types})
STRING(REGEX REPLACE "/INCREMENTAL:([^ ]+)" "/INCREMENTAL:NO" CMAKE_${type}_LINKER_FLAGS_${btype} "${CMAKE_${type}_LINKER_FLAGS_${btype}}")
STRING(REGEX REPLACE "/INCREMENTAL$" "/INCREMENTAL:NO" CMAKE_${type}_LINKER_FLAGS_${btype} "${CMAKE_${type}_LINKER_FLAGS_${btype}}")
ENDFOREACH()
IF(NOT CLANG_CL)
STRING(APPEND CMAKE_${type}_LINKER_FLAGS_RELWITHDEBINFO " /release /OPT:REF,ICF")
ENDIF()
IF(DYNAMIC_UCRT_LINK AND (MSVC_CRT_TYPE STREQUAL "/MT"))
FOREACH(config RELEASE RELWITHDEBINFO DEBUG MINSIZEREL)
STRING(APPEND CMAKE_${type}_LINKER_FLAGS_${config} ${DYNAMIC_UCRT_LINKER_OPTION})
ENDFOREACH()
ENDIF()
ENDFOREACH()
macro(enable_sanitizers)
# Remove the runtime checks from the compiler flags
# ASAN does the same thing, in many cases better
foreach(lang C CXX)
foreach(suffix "_DEBUG" "_DEBUG_INIT")
string(REGEX REPLACE "/RTC[1su]" "" CMAKE_${lang}_FLAGS${suffix} "${CMAKE_${lang}_FLAGS${suffix}}")
endforeach()
endforeach()
if(WITH_ASAN)
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:/fsanitize=address>)
endif()
if(WITH_UBSAN)
include(CheckCCompilerFlag)
check_c_compiler_flag(/fsanitize=undefined HAVE_fsanitize_undefined)
if (HAVE_fsanitize_undefined)
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:/fsanitize=undefined>)
else()
message(FATAL_ERROR "UBSAN not supported by this compiler yet")
endif()
endif()
if(CLANG_CL)
find_asan_runtime(asan_libs)
foreach(lib ${asan_libs})
link_libraries(${lib})
string(APPEND CMAKE_C_STANDARD_LIBRARIES " \"${lib}\"")
string(APPEND CMAKE_CXX_STANDARD_LIBRARIES " \"${lib}\"")
endforeach()
else()
add_link_options(/INCREMENTAL:NO)
endif()
endmacro()
if(MSVC)
# Disable mingw based pkg-config found in Strawberry perl
set(PKG_CONFIG_EXECUTABLE 0 CACHE INTERNAL "")
if(NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY)
set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDLL)
endif()
if(CMAKE_MSVC_RUNTIME_LIBRARY MATCHES "DLL")
# Dynamic runtime (DLLs), need to install CRT libraries.
set(CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT VCCRT)
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS TRUE)
if(CMAKE_MSVC_RUNTIME_LIBRARY STREQUAL "MultiThreadedDebugDLL")
set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY TRUE)
endif()
include(InstallRequiredSystemLibraries)
endif()
# Compile with /Zi to get debugging information
if (NOT DEFINED CMAKE_MSVC_DEBUG_INFORMATION_FORMAT)
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "ProgramDatabase")
add_link_options(/DEBUG) # Ensure debugging info at link time
endif()
if(WITH_ASAN OR WITH_UBSAN)
# Workaround something Linux specific
set(SECURITY_HARDENED 0 CACHE INTERNAL "" FORCE)
enable_sanitizers()
endif()
add_compile_definitions(
_CRT_SECURE_NO_DEPRECATE
_CRT_NONSTDC_NO_WARNINGS
_WIN32_WINNT=0x0A00
# We do not want the windows.h , or winsvc.h macros min/max
NOMINMAX NOSERVICE
# Speed up build process excluding unused header files
WIN32_LEAN_AND_MEAN
)
if(CLANG_CL)
add_compile_options(
-Wno-unknown-warning-option
-Wno-unused-private-field
-Wno-unused-parameter
-Wno-inconsistent-missing-override
-Wno-unused-command-line-argument
-Wno-pointer-sign
-Wno-deprecated-register
-Wno-missing-braces
-Wno-unused-function
-Wno-unused-local-typedef
-Wno-microsoft-static-assert
-Wno-c++17-extensions
-msse4.2
)
if((CMAKE_SIZEOF_VOID_P MATCHES 8) AND MSVC_INTEL)
add_compile_options(-mpclmul)
endif()
endif()
# Mark 32 bit executables large address aware so they can
# use > 2GB address space
IF(CMAKE_SIZEOF_VOID_P MATCHES 4)
STRING(APPEND CMAKE_EXE_LINKER_FLAGS " /LARGEADDRESSAWARE")
ENDIF()
# Speed up multiprocessor build
IF (NOT CLANG_CL)
STRING(APPEND CMAKE_C_FLAGS " /MP")
STRING(APPEND CMAKE_CXX_FLAGS " /MP")
STRING(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO " /Gw")
STRING(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " /Gw")
ENDIF()
#TODO: update the code and remove the disabled warnings
STRING(APPEND CMAKE_C_FLAGS " /we4700 /we4311 /we4477 /we4302 /we4090")
STRING(APPEND CMAKE_CXX_FLAGS " /we4099 /we4700 /we4311 /we4477 /we4302 /we4090")
IF(MSVC_VERSION GREATER 1910 AND NOT CLANG_CL)
STRING(APPEND CMAKE_CXX_FLAGS " /permissive-")
STRING(APPEND CMAKE_C_FLAGS " /diagnostics:caret")
STRING(APPEND CMAKE_CXX_FLAGS " /diagnostics:caret")
ENDIF()
ADD_DEFINITIONS(-D_CRT_NONSTDC_NO_WARNINGS)
IF(MYSQL_MAINTAINER_MODE MATCHES "ERR")
STRING(APPEND CMAKE_C_FLAGS " /WX")
STRING(APPEND CMAKE_CXX_FLAGS " /WX")
FOREACH(type EXE SHARED MODULE)
FOREACH(cfg RELEASE DEBUG RELWITHDEBINFO)
SET(CMAKE_${type}_LINKER_FLAGS_${cfg} "${CMAKE_${type}_LINKER_FLAGS_${cfg}} /WX")
ENDFOREACH()
ENDFOREACH()
ENDIF()
if(CMAKE_SIZEOF_VOID_P MATCHES 4)
add_link_options(/LARGEADDRESSAWARE)
endif()
IF(FAST_BUILD)
STRING (REGEX REPLACE "/RTC(su|[1su])" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
ELSEIF (NOT CLANG_CL)
STRING(APPEND CMAKE_CXX_FLAGS_RELEASE " /d2OptimizeHugeFunctions")
STRING(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO " /d2OptimizeHugeFunctions")
ENDIF()
ENDIF()
# RelWithDebInfo is deoptimized wrt inlining.
# Fix it to default
foreach(lang C CXX)
foreach(suffix "_RELWITHDEBINFO" "_RELWITHDEBINFO_INIT")
string(REGEX REPLACE "/Ob[0-1]" "" CMAKE_${lang}_FLAGS${suffix} "${CMAKE_${lang}_FLAGS${suffix}}")
endforeach()
endforeach()
# Always link with socket/synchronization libraries
STRING(APPEND CMAKE_C_STANDARD_LIBRARIES " ws2_32.lib synchronization.lib")
STRING(APPEND CMAKE_CXX_STANDARD_LIBRARIES " ws2_32.lib synchronization.lib")
if(NOT CLANG_CL)
add_link_options("$<$<CONFIG:Release,RelWithDebInfo>:/INCREMENTAL:NO;/RELEASE;/OPT:REF,ICF>")
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:$<$<CONFIG:Release,RelWithDebInfo>:/Gw>>)
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:/MP>)
add_compile_options("$<$<COMPILE_LANGUAGE:C,CXX>:/we4099;/we4700;/we4311;/we4477;/we4302;/we4090>")
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:/permissive->)
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:/diagnostics:caret>)
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:/utf-8>)
if(NOT FAST_BUILD)
add_compile_options($<$<CONFIG:Release,RelWithDebInfo>:$<$<COMPILE_LANGUAGE:C,CXX>:/d2OptimizeHugeFunctions>>)
endif()
endif()
# System checks
SET(SIGNAL_WITH_VIO_CLOSE 1) # Something that runtime team needs
if(MYSQL_MAINTAINER_MODE MATCHES "ERR")
set(CMAKE_COMPILE_WARNING_AS_ERROR ON)
add_link_options(/WX)
endif()
endif()
# IPv6 constants appeared in Vista SDK first. We need to define them in any case if they are
# not in headers, to handle dual mode sockets correctly.
CHECK_SYMBOL_EXISTS(IPPROTO_IPV6 "winsock2.h" HAVE_IPPROTO_IPV6)
IF(NOT HAVE_IPPROTO_IPV6)
SET(HAVE_IPPROTO_IPV6 41)
ENDIF()
CHECK_SYMBOL_EXISTS(IPV6_V6ONLY "winsock2.h;ws2ipdef.h" HAVE_IPV6_V6ONLY)
IF(NOT HAVE_IPV6_V6ONLY)
SET(IPV6_V6ONLY 27)
ENDIF()
# avoid running system checks by using pre-cached check results
# system checks are expensive on VS generator
get_filename_component(_SCRIPT_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
include(${_SCRIPT_DIR}/WindowsCache.cmake)
# Some standard functions exist there under different
# names (e.g popen is _popen or strok_r is _strtok_s)
# If a replacement function exists, HAVE_FUNCTION is
# defined to 1. CMake variable <function_name> will also
# be defined to the replacement name.
# So for example, CHECK_FUNCTION_REPLACEMENT(popen _popen)
# will define HAVE_POPEN to 1 and set variable named popen
# to _popen. If the header template, one needs to have
# cmakedefine popen @popen@ which will expand to
# define popen _popen after CONFIGURE_FILE
MACRO(CHECK_FUNCTION_REPLACEMENT function replacement)
STRING(TOUPPER ${function} function_upper)
CHECK_FUNCTION_EXISTS(${function} HAVE_${function_upper})
IF(NOT HAVE_${function_upper})
CHECK_FUNCTION_EXISTS(${replacement} HAVE_${replacement})
IF(HAVE_${replacement})
SET(HAVE_${function_upper} 1 )
SET(${function} ${replacement})
ENDIF()
ENDIF()
ENDMACRO()
MACRO(CHECK_SYMBOL_REPLACEMENT symbol replacement header)
STRING(TOUPPER ${symbol} symbol_upper)
CHECK_SYMBOL_EXISTS(${symbol} ${header} HAVE_${symbol_upper})
IF(NOT HAVE_${symbol_upper})
CHECK_SYMBOL_EXISTS(${replacement} ${header} HAVE_${replacement})
IF(HAVE_${replacement})
SET(HAVE_${symbol_upper} 1)
SET(${symbol} ${replacement})
ENDIF()
ENDIF()
ENDMACRO()
CHECK_SYMBOL_REPLACEMENT(S_IROTH _S_IREAD sys/stat.h)
CHECK_SYMBOL_REPLACEMENT(S_IFIFO _S_IFIFO sys/stat.h)
CHECK_SYMBOL_REPLACEMENT(SIGQUIT SIGTERM signal.h)
CHECK_SYMBOL_REPLACEMENT(SIGPIPE SIGINT signal.h)
CHECK_FUNCTION_REPLACEMENT(popen _popen)
CHECK_FUNCTION_REPLACEMENT(pclose _pclose)
CHECK_FUNCTION_REPLACEMENT(access _access)
CHECK_FUNCTION_REPLACEMENT(strcasecmp _stricmp)
CHECK_FUNCTION_REPLACEMENT(strncasecmp _strnicmp)
CHECK_SYMBOL_REPLACEMENT(snprintf _snprintf stdio.h)
CHECK_FUNCTION_REPLACEMENT(strtok_r strtok_s)
CHECK_FUNCTION_REPLACEMENT(strtoll _strtoi64)
CHECK_FUNCTION_REPLACEMENT(strtoull _strtoui64)
CHECK_FUNCTION_REPLACEMENT(vsnprintf _vsnprintf)
CHECK_TYPE_SIZE(ssize_t SIZE_OF_SSIZE_T)
IF(NOT HAVE_SIZE_OF_SSIZE_T)
SET(ssize_t SSIZE_T)
ENDIF()
SET(FN_NO_CASE_SENSE 1)
SET(USE_SYMDIR 1)
# Force static C runtime for targets in current directory
# (useful to get rid of MFC dll's dependency, or in installer)
MACRO(FORCE_STATIC_CRT)
FOREACH(flag
CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_DEBUG_INIT
CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_DEBUG_INIT
CMAKE_C_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_MINSIZEREL
)
STRING(REGEX REPLACE "/MD[d]?" "/MT" "${flag}" "${${flag}}" )
STRING(REPLACE "${DYNAMIC_UCRT_LINKER_OPTION}" "" "${flag}" "${${flag}}")
ENDFOREACH()
ENDMACRO()
# this is out of place, not really a system check
set(FN_NO_CASE_SENSE 1)
set(USE_SYMDIR 1)

View File

@@ -44,7 +44,6 @@ SET(HAVE_EXECINFO_H CACHE INTERNAL "")
SET(HAVE_FCHMOD CACHE INTERNAL "")
SET(HAVE_FCNTL CACHE INTERNAL "")
SET(HAVE_FCNTL_H 1 CACHE INTERNAL "")
SET(HAVE_FCNTL_DIRECT 0 CACHE INTERNAL "")
SET(HAVE_FCNTL_NONBLOCK CACHE INTERNAL "")
SET(HAVE_FDATASYNC CACHE INTERNAL "")
SET(HAVE_DECL_FDATASYNC CACHE INTERNAL "")
@@ -62,7 +61,6 @@ SET(HAVE_GETIFADDRS CACHE INTERNAL "")
SET(HAVE_GETCWD 1 CACHE INTERNAL "")
SET(HAVE_GETHOSTBYADDR_R CACHE INTERNAL "")
SET(HAVE_GETHRTIME CACHE INTERNAL "")
SET(HAVE_GETPAGESIZE CACHE INTERNAL "")
SET(HAVE_GETPASS CACHE INTERNAL "")
SET(HAVE_GETMNTENT CACHE INTERNAL "")
SET(HAVE_GETMNTENT_IN_SYS_MNTAB CACHE INTERNAL "")
@@ -205,10 +203,10 @@ SET(HAVE_STRING_H 1 CACHE INTERNAL "")
SET(HAVE_STRNDUP CACHE INTERNAL "")
SET(HAVE_STRNLEN 1 CACHE INTERNAL "")
SET(HAVE_STRPBRK 1 CACHE INTERNAL "")
SET(HAVE_STRTOK_R CACHE INTERNAL "")
SET(HAVE_STRTOLL CACHE INTERNAL "")
SET(HAVE_STRTOK_R 1 CACHE INTERNAL "")
SET(HAVE_STRTOLL 1 CACHE INTERNAL "")
SET(HAVE_STRTOUL 1 CACHE INTERNAL "")
SET(HAVE_STRTOULL CACHE INTERNAL "")
SET(HAVE_STRTOULL 1 CACHE INTERNAL "")
SET(HAVE_SYNCH_H CACHE INTERNAL "")
SET(HAVE_SYSENT_H CACHE INTERNAL "")
SET(HAVE_SYS_DIR_H CACHE INTERNAL "")
@@ -296,6 +294,7 @@ SET(HAVE_EVENT_H CACHE INTERNAL "")
SET(HAVE_LINUX_UNISTD_H CACHE INTERNAL "")
SET(HAVE_SYS_UTSNAME_H CACHE INTERNAL "")
SET(HAVE_PTHREAD_ATTR_GETGUARDSIZE CACHE INTERNAL "")
SET(HAVE_PTHREAD_GETATTR_NP CACHE INTERNAL "")
SET(HAVE_SOCKPEERCRED CACHE INTERNAL "")
SET(HAVE_ABI_CXA_DEMANGLE CACHE INTERNAL "")
SET(HAVE_GCC_C11_ATOMICS CACHE INTERNAL "")
@@ -350,4 +349,17 @@ SET(HAVE_SYS_STATVFS_H CACHE INTERNAL "")
SET(HAVE_GETPAGESIZES CACHE INTERNAL "")
SET(HAVE_LINUX_LIMITS_H CACHE INTERNAL "")
SET(HAVE_FILE_UCONTEXT_H CACHE INTERNAL "")
SET(have_C__Werror CACHE INTERNAL "")
SET(HAVE_SIGNAL_H 1 CACHE INTERNAL "")
SET(HAVE_UINT CACHE INTERNAL "")
SET(HAVE_SOCKET_LEN_T CACHE INTERNAL "")
SET(HAVE_GETTHRID CACHE INTERNAL "")
SET(HAVE_THREAD_LOCAL 1 CACHE INTERNAL "")
SET(have_CXX__Wno_unused_but_set_variable CACHE INTERNAL "")
SET(HAVE_UNISTD_H CACHE INTERNAL "")
SET(HAVE_LINUX_UNISTD_H CACHE INTERNAL "")
SET(OFF64_T CACHE INTERNAL "")
SET(Z_HAVE_UNISTD_H CACHE INTERNAL "")
SET(HAVE_OFF64_T CACHE FALSE INTERNAL "")
SET(HAVE_AUXV_GETAUXVAL CACHE INTERNAL "")
ENDIF(MSVC)

View File

@@ -108,6 +108,17 @@ MACRO(MYSQL_ADD_PLUGIN)
MESSAGE(FATAL_ERROR "Invalid value for PLUGIN_${plugin}")
ENDIF()
# Validate that the requested build mode is compatible with what the
# plugin actually supports. STATIC_ONLY plugins cannot be built as
# dynamic modules, and MODULE_ONLY plugins cannot be linked statically.
IF(PLUGIN_${plugin} STREQUAL "DYNAMIC" AND ARG_STATIC_ONLY)
MESSAGE(FATAL_ERROR "Plugin ${plugin} is STATIC_ONLY and cannot be built"
" with -DPLUGIN_${plugin}=DYNAMIC. Remove this option or use STATIC.")
ELSEIF(PLUGIN_${plugin} STREQUAL "STATIC" AND ARG_MODULE_ONLY)
MESSAGE(FATAL_ERROR "Plugin ${plugin} is MODULE_ONLY and cannot be built"
" with -DPLUGIN_${plugin}=STATIC. Remove this option or use DYNAMIC.")
ENDIF()
IF(ARG_STORAGE_ENGINE)
SET(with_var "WITH_${plugin}_STORAGE_ENGINE" )
ELSE()
@@ -161,6 +172,9 @@ MACRO(MYSQL_ADD_PLUGIN)
PROPERTIES COMPILE_DEFINITIONS "EMBEDDED_LIBRARY${version_string}")
ENDIF()
ADD_DEPENDENCIES(${target}_embedded GenError ${ARG_DEPENDS})
IF(ARG_LINK_LIBRARIES)
TARGET_LINK_LIBRARIES (${target}_embedded ${ARG_LINK_LIBRARIES})
ENDIF()
ENDIF()
ENDIF()
@@ -214,6 +228,11 @@ MACRO(MYSQL_ADD_PLUGIN)
TARGET_LINK_LIBRARIES (${target} mysqlservices ${ARG_LINK_LIBRARIES})
IF(WIN32)
# A popular library, turns out many plugins need it for gethostname()
TARGET_LINK_LIBRARIES (${target} ws2_32)
ENDIF()
IF(CMAKE_SYSTEM_NAME MATCHES AIX)
TARGET_LINK_OPTIONS(${target} PRIVATE "-Wl,-bE:${CMAKE_SOURCE_DIR}/libservices/mysqlservices_aix.def")
ENDIF()
@@ -320,11 +339,13 @@ MACRO(CONFIGURE_PLUGINS)
GET_CMAKE_PROPERTY(ALL_VARS VARIABLES)
FOREACH (V ${ALL_VARS})
IF (V MATCHES "^PLUGIN_" AND ${V} MATCHES "YES")
STRING(SUBSTRING ${V} 7 -1 plugin)
STRING(TOLOWER ${plugin} target)
IF (NOT TARGET ${target})
MESSAGE(FATAL_ERROR "Plugin ${plugin} cannot be built")
IF (V MATCHES "^PLUGIN_")
IF (${V} STREQUAL "YES")
STRING(SUBSTRING ${V} 7 -1 plugin)
STRING(TOLOWER ${plugin} target)
IF (NOT TARGET ${target})
MESSAGE(FATAL_ERROR "Plugin ${plugin} cannot be built")
ENDIF()
ENDIF()
ENDIF()
ENDFOREACH()

View File

@@ -19,4 +19,10 @@
</application>
</compatibility>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<activeCodePage xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">UTF-8</activeCodePage>
<heapType xmlns="http://schemas.microsoft.com/SMI/2020/WindowsSettings">SegmentHeap</heapType>
</windowsSettings>
</application>
</asmv1:assembly>

View File

@@ -49,8 +49,6 @@ Then restart the build.
SET(WSREP_VERSION "${WSREP_API_VERSION}.${WSREP_PATCH_VERSION}"
CACHE INTERNAL "WSREP version")
SET(WSREP_PROC_INFO ${WITH_WSREP})
SET(WSREP_PATCH_VERSION "wsrep_${WSREP_VERSION}")
if (NOT WITH_WSREP_ALL)
SET(WSREP_LIB_WITH_UNIT_TESTS OFF CACHE BOOL

View File

@@ -21,6 +21,11 @@ MACRO (MYSQL_USE_BUNDLED_ZLIB)
SET(ZLIB_LIBRARY ${ZLIB_LIBRARIES})
SET(ZLIB_INCLUDE_DIR ${ZLIB_INCLUDE_DIRS})
SET(ZLIB_FOUND TRUE)
IF(VCPKG_INSTALLED_DIR)
# Avoid errors in vcpkg's FIND_PACKAGE
# for packages dependend on zlib
SET(CMAKE_DISABLE_FIND_PACKAGE_ZLIB 1)
ENDIF()
SET(WITH_ZLIB "bundled" CACHE STRING "Use bundled zlib")
ADD_SUBDIRECTORY(zlib)
ENDMACRO()

View File

@@ -30,7 +30,6 @@
#cmakedefine HAVE_DLFCN_H 1
#cmakedefine HAVE_EXECINFO_H 1
#cmakedefine HAVE_FCNTL_H 1
#cmakedefine HAVE_FCNTL_DIRECT 1
#cmakedefine HAVE_FENV_H 1
#cmakedefine HAVE_FLOAT_H 1
#cmakedefine HAVE_FNMATCH_H 1
@@ -152,7 +151,6 @@
#cmakedefine HAVE_GETCWD 1
#cmakedefine HAVE_GETHOSTBYADDR_R 1
#cmakedefine HAVE_GETHRTIME 1
#cmakedefine HAVE_GETPAGESIZE 1
#cmakedefine HAVE_GETPAGESIZES 1
#cmakedefine HAVE_GETPASS 1
#cmakedefine HAVE_GETPASSPHRASE 1
@@ -185,6 +183,7 @@
#cmakedefine HAVE_MLOCKALL 1
#cmakedefine HAVE_MMAP 1
#cmakedefine HAVE_MMAP64 1
#cmakedefine HAVE_MPROTECT 1
#cmakedefine HAVE_PERROR 1
#cmakedefine HAVE_POLL 1
#cmakedefine HAVE_POSIX_FALLOCATE 1
@@ -403,38 +402,27 @@
#cmakedefine SIGNAL_WITH_VIO_CLOSE 1
/* Windows stuff, mostly functions, that have Posix analogs but named differently */
#cmakedefine S_IROTH @S_IROTH@
#cmakedefine S_IFIFO @S_IFIFO@
#cmakedefine IPPROTO_IPV6 @IPPROTO_IPV6@
#cmakedefine IPV6_V6ONLY @IPV6_V6ONLY@
#cmakedefine sigset_t @sigset_t@
#cmakedefine mode_t @mode_t@
#cmakedefine SIGQUIT @SIGQUIT@
#cmakedefine SIGPIPE @SIGPIPE@
#cmakedefine popen @popen@
#cmakedefine pclose @pclose@
#cmakedefine ssize_t @ssize_t@
#cmakedefine strcasecmp @strcasecmp@
#cmakedefine strncasecmp @strncasecmp@
#cmakedefine snprintf @snprintf@
#cmakedefine strtok_r @strtok_r@
#cmakedefine strtoll @strtoll@
#cmakedefine strtoull @strtoull@
#cmakedefine vsnprintf @vsnprintf@
#if defined(_MSC_VER) && (_MSC_VER > 1800)
#ifdef _WIN32
#define S_IROTH _S_IREAD
#define S_IFIFO _S_IFIFO
#define SIGQUIT SIGTERM
#define SIGPIPE SIGINT
#define sigset_t int
#define mode_t int
#define popen _popen
#define pclose _pclose
#define ssize_t SSIZE_T
#define strcasecmp _stricmp
#define strncasecmp _strnicmp
#define strtok_r strtok_s
#define tzname _tzname
#define P_tmpdir "C:\\TEMP"
#endif
#if defined(_MSC_VER) && (_MSC_VER > 1310)
# define HAVE_SETENV
#define setenv(a,b,c) _putenv_s(a,b)
#endif
#define PSAPI_VERSION 1 /* for GetProcessMemoryInfo() */
/* We don't want the min/max macros */
#ifdef _WIN32
#define HAVE_SETENV
#define NOMINMAX 1
#endif
#define PSAPI_VERSION 2 /* for GetProcessMemoryInfo() */
#endif /* _WIN32 */
/*
MySQL features
@@ -556,7 +544,6 @@
#ifndef EMBEDDED_LIBRARY
#cmakedefine WSREP_INTERFACE_VERSION "@WSREP_INTERFACE_VERSION@"
#cmakedefine WITH_WSREP 1
#cmakedefine WSREP_PROC_INFO 1
#endif
#if !defined(__STDC_FORMAT_MACROS)

View File

@@ -368,6 +368,7 @@ CHECK_FUNCTION_EXISTS (mlock HAVE_MLOCK)
CHECK_FUNCTION_EXISTS (mlockall HAVE_MLOCKALL)
CHECK_FUNCTION_EXISTS (mmap HAVE_MMAP)
CHECK_FUNCTION_EXISTS (mmap64 HAVE_MMAP64)
CHECK_FUNCTION_EXISTS (mprotect HAVE_MPROTECT)
CHECK_FUNCTION_EXISTS (perror HAVE_PERROR)
CHECK_FUNCTION_EXISTS (poll HAVE_POLL)
CHECK_FUNCTION_EXISTS (posix_fallocate HAVE_POSIX_FALLOCATE)
@@ -463,7 +464,6 @@ CHECK_SYMBOL_EXISTS(madvise "sys/mman.h" HAVE_DECL_MADVISE)
CHECK_SYMBOL_EXISTS(getpagesizes "sys/mman.h" HAVE_GETPAGESIZES)
CHECK_SYMBOL_EXISTS(tzname "time.h" HAVE_TZNAME)
CHECK_SYMBOL_EXISTS(lrand48 "stdlib.h" HAVE_LRAND48)
CHECK_SYMBOL_EXISTS(getpagesize "unistd.h" HAVE_GETPAGESIZE)
CHECK_SYMBOL_EXISTS(TIOCGWINSZ "sys/ioctl.h" GWINSZ_IN_SYS_IOCTL)
CHECK_SYMBOL_EXISTS(FIONREAD "sys/ioctl.h" FIONREAD_IN_SYS_IOCTL)
CHECK_SYMBOL_EXISTS(TIOCSTAT "sys/ioctl.h" TIOCSTAT_IN_SYS_IOCTL)
@@ -701,7 +701,6 @@ CHECK_SYMBOL_EXISTS(O_NONBLOCK "unistd.h;fcntl.h" HAVE_FCNTL_NONBLOCK)
IF(NOT HAVE_FCNTL_NONBLOCK)
SET(NO_FCNTL_NONBLOCK 1)
ENDIF()
CHECK_SYMBOL_EXISTS(O_DIRECT "fcntl.h" HAVE_FCNTL_DIRECT)
#
# Test for how the C compiler does inline, if at all

View File

@@ -44,12 +44,10 @@ __DATA__
% ./tests -#d
func2: info: s=ok
=> execute
=> evaluate: ON
=> evaluate_if: OFF
main: explain: dbug explained: d
func2: info: s=ok
% ./tests d,ret3
=> evaluate: OFF
=> evaluate_if: OFF
#
## Testing negative lists
@@ -57,7 +55,6 @@ func2: info: s=ok
% ./tests d:-d,ret3
func2: info: s=ko
=> execute
=> evaluate: ON
=> evaluate_if: OFF
main: explain: dbug explained: d:-d,ret3
func2: info: s=ko
@@ -69,7 +66,6 @@ func2: info: s=ko
| | | <func3
| | <func2
| <func1
=> evaluate: OFF
=> evaluate_if: OFF
| >func2
| | >func3
@@ -85,7 +81,6 @@ func2: info: s=ko
| | | info: s=ko
| | <func2
| <func1
=> evaluate: OFF
=> evaluate_if: OFF
| >func2
| | >func3
@@ -99,19 +94,15 @@ func2: info: s=ko
| | | >func3
| | | <func3
| <func1
=> evaluate: OFF
=> evaluate_if: OFF
| | >func3
| | <func3
<main
% ./tests t:d,info:-d,ret3:-f,func2 d,evaluate
=> evaluate: ON
=> evaluate_if: OFF
% ./tests t:d,info:-d,ret3:-f,func2 d,evaluate_if
=> evaluate: OFF
=> evaluate_if: ON
% ./tests t:d:-d,ret3:-f,func2 d,evaluate_if
=> evaluate: OFF
=> evaluate_if: ON
% ./tests t:d:-d,ret3:-f,func2
>main
@@ -120,7 +111,6 @@ func2: info: s=ko
| | | <func3
| <func1
=> execute
=> evaluate: ON
=> evaluate_if: OFF
| explain: dbug explained: d:-d,ret3:f:-f,func2:t
| | >func3
@@ -135,7 +125,6 @@ func2: info: s=ko
| | | >func3
| | | <func3
| <func1
=> evaluate: OFF
=> evaluate_if: ON
| | >func3
| | <func3
@@ -152,7 +141,6 @@ func2: info: s=ko
| dump: Memory: 0x#### Bytes: (27)
64 2C 64 75 6D 70 3A 2D 64 2C 72 65 74 33 3A 66 3A 2D 66 2C 66 75 6E 63 32 3A
74
=> evaluate: OFF
=> evaluate_if: OFF
| | >func3
| | <func3
@@ -166,7 +154,6 @@ func2: info: s=ko
| dump: Memory: 0x#### Bytes: (27)
64 2C 64 75 6D 70 3A 2D 64 2C 72 65 74 33 3A 66 3A 2D 66 2C 66 75 6E 63 32 3A
74
=> evaluate: OFF
=> evaluate_if: OFF
| | >func3
| | <func3
@@ -180,7 +167,6 @@ func2: info: s=ko
| dump: Memory: 0x#### Bytes: (27)
64 2C 64 75 6D 70 3A 2D 64 2C 72 65 74 33 3A 66 3A 2D 66 2C 66 75 6E 63 32 3A
74
=> evaluate: OFF
=> evaluate_if: OFF
| | >func3
| | <func3
@@ -194,7 +180,6 @@ func2: info: s=ko
| dump: Memory: 0x#### Bytes: (35)
64 2C 64 75 6D 70 2C 65 78 70 6C 61 69 6E 3A 2D 64 2C 72 65 74 33 3A 66 3A 2D
66 2C 66 75 6E 63 32 3A 74
=> evaluate: OFF
=> evaluate_if: OFF
| explain: dbug explained: d,dump,explain:-d,ret3:f:-f,func2:t
| | >func3
@@ -209,7 +194,6 @@ dbug-tests: | <func1
dbug-tests: | dump: Memory: 0x#### Bytes: (37)
64 2C 64 75 6D 70 2C 65 78 70 6C 61 69 6E 3A 2D 64 2C 72 65 74 33 3A 66 3A 2D
66 2C 66 75 6E 63 32 3A 50 3A 74
=> evaluate: OFF
=> evaluate_if: OFF
dbug-tests: | explain: dbug explained: d,dump,explain:-d,ret3:f:-f,func2:P:t
dbug-tests: | | >func3
@@ -224,7 +208,6 @@ dbug-tests: tests.c: | <func1
dbug-tests: tests.c: | dump: Memory: 0x#### Bytes: (39)
64 2C 64 75 6D 70 2C 65 78 70 6C 61 69 6E 3A 2D 64 2C 72 65 74 33 3A 66 3A 2D
66 2C 66 75 6E 63 32 3A 46 3A 50 3A 74
=> evaluate: OFF
=> evaluate_if: OFF
dbug-tests: tests.c: | explain: dbug explained: d,dump,explain:-d,ret3:f:-f,func2:F:P:t
dbug-tests: tests.c: | | >func3
@@ -240,7 +223,6 @@ dbug-tests: tests.c: <main
| | | <func3
| <func1
=> execute
=> evaluate: ON
=> evaluate_if: OFF
| explain: dbug explained: d:-d,ret3:f:-f,func2:t
| | >func3
@@ -256,7 +238,6 @@ dbug-tests: tests.c: <main
| | <func2
| <func1
=> execute
=> evaluate: ON
=> evaluate_if: OFF
| explain: dbug explained: d:-d,ret3:t
| >func2
@@ -267,7 +248,6 @@ dbug-tests: tests.c: <main
<main
% ./tests d,info:-d,ret3:d,push
func2: info: s=ko
=> evaluate: OFF
=> evaluate_if: OFF
| >func2
| | >func3
@@ -277,7 +257,6 @@ func2: info: s=ko
<main
% ./tests d,info:-d,ret3:d,push,explain
func2: info: s=ko
=> evaluate: OFF
=> evaluate_if: OFF
| explain: dbug explained: d,info,push,explain:-d,ret3:t
| >func2
@@ -288,13 +267,11 @@ func2: info: s=ko
<main
% ./tests d,info:-d,ret3:d,explain
func2: info: s=ko
=> evaluate: OFF
=> evaluate_if: OFF
main: explain: dbug explained: d,info,explain:-d,ret3
func2: info: s=ko
% ./tests d,info:-d,ret3:d,explain,pop
func2: info: s=ko
=> evaluate: OFF
=> evaluate_if: OFF
% ./tests d,info:-d,ret3:d,explain t:d,pop
>main
@@ -304,7 +281,6 @@ func2: info: s=ko
| | | <func3
| | <func2
| <func1
=> evaluate: OFF
=> evaluate_if: OFF
main: explain: dbug explained: d,info,explain:-d,ret3
func2: info: s=ko
@@ -317,13 +293,11 @@ func2: info: s=ko
| | | info: s=ko
| | <func2
| <func1
=> evaluate: OFF
=> evaluate_if: OFF
main: explain: dbug explained: d,info,explain,pop:-d,ret3
func2: info: s=ko
% ./tests d,info:-d,ret3:d,explain,set
func2: info: s=ko
=> evaluate: OFF
=> evaluate_if: OFF
tests.c: main: explain: dbug explained: d,info,explain,set:-d,ret3:F
tests.c: func2: info: s=ko
@@ -336,7 +310,6 @@ func2: info: s=ko
| | | info: s=ko
| | <func2
| <func1
=> evaluate: OFF
=> evaluate_if: OFF
tests.c: | explain: dbug explained: d,info,explain,set:-d,ret3:F:t
tests.c: | >func2
@@ -354,7 +327,6 @@ func2: info: s=ko
| | | info: s=ko
| | <func2
| <func1
=> evaluate: OFF
=> evaluate_if: OFF
tests.c: | explain: dbug explained: d,info,explain,set:-d,ret3:F:t
tests.c: | >func2
@@ -365,7 +337,6 @@ func2: info: s=ko
tests.c: <main
% ./tests t d,info:-d,ret3:d,explain,set,pop
func2: info: s=ko
=> evaluate: OFF
=> evaluate_if: OFF
| >func2
| | >func3
@@ -375,7 +346,6 @@ func2: info: s=ko
% ./tests t:f,func2
| | >func2
| | <func2
=> evaluate: OFF
=> evaluate_if: OFF
| >func2
| <func2
@@ -387,7 +357,6 @@ func2: info: s=ko
| >func1
| <func1
=> execute
=> evaluate: ON
=> evaluate_if: OFF
| explain: dbug explained: d:f:-f,func2/:t
<main
@@ -399,7 +368,6 @@ func2: info: s=ko
| | | info: s=ok
| | <func2
| <func1
=> evaluate: OFF
=> evaluate_if: OFF
% ./tests t:f,main/:d,pop
>main
@@ -409,10 +377,8 @@ func2: info: s=ko
| | | <func3
| | <func2
| <func1
=> evaluate: OFF
=> evaluate_if: OFF
% ./tests f,main/:d,push
=> evaluate: OFF
=> evaluate_if: OFF
| >func2
| | >func3
@@ -431,7 +397,6 @@ func2: info: s=ko
| | | <func3
| | <func2
=> push1
=> evaluate: OFF
=> evaluate_if: OFF
| | >func3
| | <func3
@@ -440,7 +405,6 @@ func2: info: s=ko
>main
=> push1
| <func1
=> evaluate: OFF
=> evaluate_if: OFF
| >func2
| | >func3
@@ -453,7 +417,6 @@ func2: info: s=ko
| | | <func3
=> push1
| <func1
=> evaluate: OFF
=> evaluate_if: OFF
| >func2
| | >func3
@@ -469,7 +432,6 @@ func2: info: s=ko
| | | <func3
| | <func2
=> push1
=> evaluate: OFF
=> evaluate_if: OFF
# change the defaults
% ./tests t:f,func3 --push1=t
@@ -477,7 +439,6 @@ func2: info: s=ko
| | | <func3
=> push1
| <func1
=> evaluate: OFF
=> evaluate_if: OFF
| >func2
| | >func3
@@ -487,11 +448,9 @@ func2: info: s=ko
# repeated keyword
% ./tests d:-d,info,info
=> execute
=> evaluate: ON
=> evaluate_if: OFF
main: explain: dbug explained: d:-d,info
% ./tests d:-d,info/,info
=> execute
=> evaluate: ON
=> evaluate_if: OFF
main: explain: dbug explained: d:-d,info/

View File

@@ -16,7 +16,8 @@ char *push1=0;
const char *func3()
{
DBUG_ENTER("func3");
DBUG_RETURN(DBUG_EVALUATE("ret3", "ok", "ko"));
DBUG_EXECUTE("ret3", DBUG_RETURN("ok"););
DBUG_RETURN("ko");
}
void func2()
@@ -72,10 +73,8 @@ int main (int argc __attribute__((unused)),
DBUG_EXECUTE_IF("push", DBUG_PUSH("+t"); );
DBUG_EXECUTE("execute", fprintf(DBUG_FILE, "=> execute\n"); );
DBUG_EXECUTE_IF("set", DBUG_SET("+F"); );
fprintf(DBUG_FILE, "=> evaluate: %s\n",
DBUG_EVALUATE("evaluate", "ON", "OFF"));
fprintf(DBUG_FILE, "=> evaluate_if: %s\n",
DBUG_EVALUATE_IF("evaluate_if", "ON", "OFF"));
(DBUG_IF("evaluate_if") ? "ON": "OFF"));
DBUG_EXECUTE_IF("pop", DBUG_POP(); );
{
char s[1000] __attribute__((unused));

View File

@@ -771,32 +771,20 @@ artificial delay checking for race conditions.
.SP 1
EX:\ \fCDBUG_EXECUTE_IF\ ("crashme",\ DBUG_ABORT()\ ());\fR
.SP 1
.LI DBUG_EVALUATE\
The DBUG_EVALUATE macro is similar to DBUG_EXECUTE, but it can be used in
the expression context. The first argument is the debug keyword that is used to
choose whether the second (keyword is enabled) or the third (keyword is not
enabled) argument is evaluated. When
.I dbug
is compiled off, the third argument is evaluated.
.SP 1
EX:\fC
.br
printf("Info-debug is %s",
.br
DBUG_EVALUATE\ ("info", "ON", "OFF"));\fR
.SP 1
.LI DBUG_EVALUATE_IF\
Works like DBUG_EVALUATE macro, but the second argument is
.B not
evaluated, if the keyword is not explicitly listed in
the 'd' flag. Like DBUG_EXECUTE_IF this could be used to conditionally execute
.LI DBUG_IF\
Returns
.B 1
if the keyword is explicitly listed in
the 'd' flag. Otherwise returns
.B 0
Like DBUG_EXECUTE_IF this could be used to conditionally execute
"dangerous" actions.
.SP 1
EX:\fC
.br
if (prepare_transaction () ||
.br
DBUG_EVALUATE ("crashme", (DBUG_ABORT(), 0), 0) ||
(DBUG_IF("crashme") && (DBUG_ABORT(), 0)) ||
.br
commit_transaction () )\fR
.SP 1

View File

@@ -6,14 +6,19 @@
# Changes to this file will be preserved when updating the Debian package.
#
# shellcheck source=debian/additions/debian-start.inc.sh
source /usr/share/mysql/debian-start.inc.sh
# Read default/mysql first and then default/mariadb just like the init.d file does
if [ -f /etc/default/mysql ]; then
if [ -f /etc/default/mysql ]
then
# shellcheck source=/dev/null
. /etc/default/mysql
fi
if [ -f /etc/default/mariadb ]; then
if [ -f /etc/default/mariadb ]
then
# shellcheck source=/dev/null
. /etc/default/mariadb
fi
@@ -21,7 +26,6 @@ MARIADB="/usr/bin/mariadb --defaults-extra-file=/etc/mysql/debian.cnf"
MYADMIN="/usr/bin/mariadb-admin --defaults-extra-file=/etc/mysql/debian.cnf"
# Don't run full mariadb-upgrade on every server restart, use --version-check to do it only once
MYUPGRADE="/usr/bin/mariadb-upgrade --defaults-extra-file=/etc/mysql/debian.cnf --version-check --silent"
MYCHECK="/usr/bin/mariadb-check --defaults-extra-file=/etc/mysql/debian.cnf"
# The following commands should be run when the server is up but in background
# where they do not block the server start and in one shell instance so that

View File

@@ -10,13 +10,13 @@ function upgrade_system_tables_if_necessary() {
set -e
set -u
logger -p daemon.info -i -t"$0" "Upgrading MySQL tables if necessary."
logger -p daemon.info -i -t"$0" "Upgrading MariaDB tables if necessary."
# Filter all "duplicate column", "duplicate key" and "unknown column"
# errors as the script is designed to be idempotent.
LC_ALL=C $MYUPGRADE \
2>&1 \
| egrep -v '^(1|@had|ERROR (1051|1054|1060|1061|1146|1347|1348))' \
| grep -E -v '^(1|@had|ERROR (1051|1054|1060|1061|1146|1347|1348))' \
| logger -p daemon.warn -i -t"$0"
}
@@ -28,8 +28,15 @@ function check_root_accounts() {
logger -p daemon.info -i -t"$0" "Checking for insecure root accounts."
ret=$( echo "SELECT count(*) FROM mysql.user WHERE user='root' and password='' and plugin in ('', 'mysql_native_password', 'mysql_old_password');" | $MARIADB --skip-column-names )
if [ "$ret" -ne "0" ]; then
ret=$(echo "
SELECT count(*) FROM mysql.global_priv
WHERE user='root' AND
JSON_VALUE(priv, '$.plugin') in ('mysql_native_password', 'mysql_old_password', 'parsec') AND
JSON_VALUE(priv, '$.authentication_string') = '' AND
JSON_VALUE(priv, '$.password_last_changed') != 0
" | $MARIADB --skip-column-names)
if [ "$ret" -ne "0" ]
then
logger -p daemon.warn -i -t"$0" "WARNING: mysql.user contains $ret root accounts without password!"
fi
}

View File

@@ -13,7 +13,7 @@
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# If you are new to MariaDB, check out https://mariadb.com/kb/en/basic-mariadb-articles/
# If you are new to MariaDB, check out https://mariadb.com/docs/server/server-usage/basics
#
# This group is read both by the client and the server

View File

@@ -16,7 +16,7 @@
# SyslogLevel = err
# SyslogIdentifier = mysqld
#
# For more information, please read https://mariadb.com/kb/en/mariadb/systemd/
# For more information, please read https://mariadb.com/docs/server/server-management/starting-and-stopping-mariadb/systemd
[mysqld_safe]
# This will be passed to all mysql clients

View File

@@ -44,6 +44,11 @@ bind-address = 127.0.0.1
# * Logging and Replication
#
# Note: The configured log file or its directory need to be created
# and be writable by the mysql user, e.g.:
# $ sudo mkdir -m 2750 /var/log/mysql
# $ sudo chown mysql /var/log/mysql
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# Recommend only changing this at runtime for short testing periods if needed!
@@ -55,16 +60,18 @@ bind-address = 127.0.0.1
# /etc/mysql/conf.d/mariadb.conf.d/50-mysqld_safe.cnf
# Enable this if you want to have error logging into a separate file
#log_error = /var/log/mysql/error.log
# Enable the slow query log to see queries with especially long duration
#slow_query_log_file = /var/log/mysql/mariadb-slow.log
#long_query_time = 10
#log_slow_query_file = /var/log/mysql/mariadb-slow.log
#slow_query_log = 1
#log_slow_query_time = 10
#log_slow_verbosity = query_plan,explain
#log-queries-not-using-indexes
#min_examined_row_limit = 1000
#log_slow_min_examined_row_limit = 1000
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
# note: if you are setting up a replication slave, see README.Debian about other
# settings you may need to change.
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
@@ -75,7 +82,7 @@ expire_logs_days = 10
#
# For documentation, please read
# https://mariadb.com/kb/en/securing-connections-for-client-and-server/
# https://mariadb.com/docs/server/security/encryption/data-in-transit-encryption/securing-connections-for-client-and-server
#ssl-ca = /etc/mysql/cacert.pem
#ssl-cert = /etc/mysql/server-cert.pem
#ssl-key = /etc/mysql/server-key.pem
@@ -97,7 +104,7 @@ collation-server = utf8mb4_general_ci
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
# Most important is to give InnoDB 80 % of the system RAM for buffer use:
# https://mariadb.com/kb/en/innodb-system-variables/#innodb_buffer_pool_size
# https://mariadb.com/docs/server/server-usage/storage-engines/innodb/innodb-system-variables#innodb_buffer_pool_size
#innodb_buffer_pool_size = 8G
# this is only for embedded server
@@ -108,7 +115,7 @@ collation-server = utf8mb4_general_ci
# you can put MariaDB-only options here
[mariadb]
# This group is only read by MariaDB-10.6 servers.
# This group is only read by MariaDB-10.11 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
[mariadb-10.6]
[mariadb-10.11]

View File

@@ -2,7 +2,7 @@
# * Galera-related settings
#
# See the examples of server wsrep.cnf files in /usr/share/mysql
# and read more at https://mariadb.com/kb/en/galera-cluster/
# and read more at https://mariadb.com/docs/galera-cluster
[galera]
# Mandatory settings

View File

@@ -1,4 +1,4 @@
'''apport package hook for mariadb-10.6
'''apport package hook for mariadb
(c) 2009 Canonical Ltd.
Author: Mathias Gug <mathias.gug@canonical.com>
@@ -21,7 +21,7 @@ def _add_my_conf_files(report, filename):
continue
def add_info(report):
attach_conffiles(report, 'mariadb-server-10.6', conffiles=None)
attach_conffiles(report, 'mariadb-server', conffiles=None)
key = 'Logs' + path_to_key('/var/log/daemon.log')
report[key] = ""
for line in read_file('/var/log/daemon.log').split('\n'):

View File

@@ -28,21 +28,18 @@ then
# On Gitlab the output log must stay under 4MB so make the
# build less verbose
sed '/Add support for verbose builds/,/^$/d' -i debian/rules
elif [ -d storage/columnstore/columnstore/debian ]
elif grep -q "$architecture" storage/columnstore/columnstore/debian/control
then
if [ "${MYSQL_VERSION_MAJOR:-not10}" != "10" ] || [ "$architecture" = amd64 ]
then
# ColumnStore is explicitly disabled in the native Debian build. Enable it
# now when build is triggered by autobake-deb.sh (MariaDB.org) and when the
# build is not running on Gitlab-CI.
sed '/-DPLUGIN_COLUMNSTORE=NO/d' -i debian/rules
# Take the files and part of control from MCS directory
cp -v storage/columnstore/columnstore/debian/mariadb-plugin-columnstore.* debian/
# idempotent, except for the blank line, but that can be tolerated.
sed -e '/Package: mariadb-plugin-columnstore/,/^$/d' -i debian/control
echo >> debian/control
cat storage/columnstore/columnstore/debian/control >> debian/control
fi
# ColumnStore is explicitly disabled in the native Debian build. Enable it
# now when build is triggered by autobake-deb.sh (MariaDB.org) and when the
# build is not running on Gitlab-CI.
sed '/-DPLUGIN_COLUMNSTORE=NO/d' -i debian/rules
# Take the files and part of control from MCS directory
cp -v storage/columnstore/columnstore/debian/mariadb-plugin-columnstore.* debian/
# idempotent, except for the blank line, but that can be tolerated.
sed -e '/Package: mariadb-plugin-columnstore/,/^$/d' -i debian/control
echo >> debian/control
sed "s/-10.6//" <storage/columnstore/columnstore/debian/control >> debian/control
fi
# Look up distro-version specific stuff
@@ -61,11 +58,31 @@ remove_rocksdb_tools()
fi
}
replace_uring_with_aio()
add_lsb_base_depends()
{
sed 's/liburing-dev/libaio-dev/g' -i debian/control
sed -e '/-DIGNORE_AIO_CHECK=ON/d' \
-e '/-DWITH_URING=ON/d' -i debian/rules
# Make sure one can run this multiple times remove
# lines 'sysvinit-utils' and 'lsb-base'.
sed -e '/sysvinit-utils/d' -e '/lsb-base/d' -i debian/control
# Add back lsb-base before lsof
sed -e 's#lsof #lsb-base (>= 3.0-10),\n lsof #' -i debian/control
}
remove_uring()
{
sed -e '/liburing-dev/d' -i debian/control
sed -e '/-DWITH_URING=ON/d' -i debian/rules
}
disable_libfmt()
{
# 7.0+ required
sed '/libfmt-dev/d' -i debian/control
}
remove_package_notes()
{
# binutils >=2.39 + disto makefile /usr/share/debhelper/dh_package_notes/package-notes.mk
sed -e '/package.notes/d' -i debian/rules debian/control
}
# Parse release name and number from Linux standard base release
@@ -97,25 +114,41 @@ case "${LSBNAME}"
in
# Debian
"buster")
replace_uring_with_aio
disable_libfmt
remove_uring
;&
"bullseye"|"bookworm")
"bullseye")
add_lsb_base_depends
remove_package_notes
;&
"bookworm")
# mariadb-plugin-rocksdb in control is 4 arches covered by the distro rocksdb-tools
# so no removal is necessary.
if [[ ! "$architecture" =~ amd64|arm64|armel|armhf|i386|mips64el|mipsel|ppc64el|s390x ]]
then
replace_uring_with_aio
remove_uring
fi
;&
"sid")
"trixie"|"sid")
# The default packaging should always target Debian Sid, so in this case
# there is intentionally no customizations whatsoever.
;;
# Ubuntu
"focal")
replace_uring_with_aio
disable_libfmt
remove_uring
;&
"impish"|"jammy"|"kinetic")
"jammy"|"kinetic")
add_lsb_base_depends
remove_package_notes
;&
"lunar"|"mantic")
if [[ ! "$architecture" =~ amd64|arm64|armhf|ppc64el|s390x ]]
then
replace_uring_with_aio
fi
;&
"noble")
# mariadb-plugin-rocksdb s390x not supported by us (yet)
# ubuntu doesn't support mips64el yet, so keep this just
# in case something changes.
@@ -123,10 +156,6 @@ in
then
remove_rocksdb_tools
fi
if [[ ! "$architecture" =~ amd64|arm64|armhf|ppc64el|s390x ]]
then
replace_uring_with_aio
fi
;;
*)
echo "Error: Unknown release '$LSBNAME'" >&2
@@ -161,7 +190,7 @@ fi
# Use eatmydata is available to build faster with less I/O, skipping fsync()
# during the entire build process (safe because a build can always be restarted)
if which eatmydata > /dev/null
if command -v eatmydata > /dev/null
then
BUILDPACKAGE_DPKGCMD+=("eatmydata")
fi

4
debian/changelog vendored
View File

@@ -1,5 +1,5 @@
mariadb-10.6 (1:10.6.0) unstable; urgency=medium
mariadb (1:10.11.0) unstable; urgency=medium
* Initial Release
-- Otto Kekäläinen <otto@debian.org> Thu, 14 May 2020 18:00:57 +0300
-- Vicențiu Ciorbaru <vicentiu@mariadb.org> Thu, 18 Jun 2021 16:08:00 +0300

2
debian/compat vendored
View File

@@ -1 +1 @@
9
11

308
debian/control vendored
View File

@@ -1,12 +1,13 @@
Source: mariadb-10.6
Source: mariadb
Section: database
Priority: optional
Maintainer: MariaDB Developers <developers@lists.mariadb.org>
Build-Depends: bison,
cmake,
cracklib-runtime <!nocheck>,
debhelper (>= 10),
debhelper (>= 11),
dh-exec,
dh-package-notes,
flex [amd64],
gdb <!nocheck>,
libaio-dev [linux-any],
@@ -17,14 +18,18 @@ Build-Depends: bison,
libboost-filesystem-dev [amd64],
libboost-regex-dev [amd64],
libboost-thread-dev [amd64],
libbz2-dev,
libcrack2-dev (>= 2.9.0),
libcurl4-openssl-dev | libcurl4-dev,
libedit-dev,
libedit-dev:native,
libfmt-dev (>= 7.0.0),
libjemalloc-dev [linux-any],
libjudy-dev,
libkrb5-dev,
liblz4-dev,
liblzma-dev,
liblzo2-dev,
libncurses-dev,
libnuma-dev [linux-any],
libpam0g-dev,
@@ -35,7 +40,7 @@ Build-Depends: bison,
libsystemd-dev [linux-any],
liburing-dev [linux-any],
libxml2-dev,
libzstd-dev,
libzstd-dev (>= 1.1.3),
lsb-release,
perl:any,
po-debconf,
@@ -81,12 +86,12 @@ Description: MariaDB database development files
Package: libmariadb-dev-compat
Architecture: any
Multi-Arch: same
Section: libdevel
Depends: libmariadb-dev (= ${binary:Version}),
${misc:Depends}
Conflicts: libmariadb-client-lgpl-dev,
libmariadb-client-lgpl-dev-compat,
libmariadbclient-dev (<< ${source:Version}),
libmariadbclient-dev-compat,
libmysqlclient-dev,
libmysqlclient10-dev,
@@ -101,6 +106,7 @@ Breaks: libmariadb-dev (<< ${source:Version})
Replaces: libmariadb-client-lgpl-dev,
libmariadb-client-lgpl-dev-compat,
libmariadb-dev (<< ${source:Version}),
libmariadbclient-dev (<< ${source:Version}),
libmariadbclient-dev-compat,
libmysqlclient-dev
Description: MariaDB Connector/C, compatibility symlinks
@@ -199,6 +205,7 @@ Section: libs
Depends: ${misc:Depends},
${shlibs:Depends}
Breaks: libmariadbd-dev (<< ${source:Version})
Conflicts: libmariadbd19t64
Replaces: libmariadbd-dev (<< ${source:Version})
Multi-Arch: same
Description: MariaDB embedded database, shared library
@@ -229,7 +236,8 @@ Description: MariaDB embedded database, development files package
language in the world. The main goals of MariaDB are speed, robustness and
ease of use.
.
This package includes the MariaDB embedded server library development and header files.
This package includes the MariaDB embedded server library development
and header files.
Package: mysql-common
Architecture: all
@@ -256,7 +264,7 @@ Description: MariaDB database common files (e.g. /etc/mysql/mariadb.conf.d/)
.
This package includes configuration files common to all MariaDB programs.
Package: mariadb-client-core-10.6
Package: mariadb-client-core
Architecture: any
Depends: libmariadb3 (>= 10.5.4),
mariadb-common (>= ${source:Version}),
@@ -268,7 +276,9 @@ Conflicts: mariadb-client-10.0,
mariadb-client-10.3,
mariadb-client-10.4,
mariadb-client-10.5,
mariadb-client-10.6 (<< ${source:Version}),
mariadb-client-10.6,
mariadb-client-10.7,
mariadb-client-10.8,
mariadb-client-5.1,
mariadb-client-5.2,
mariadb-client-5.3,
@@ -279,6 +289,9 @@ Conflicts: mariadb-client-10.0,
mariadb-client-core-10.3,
mariadb-client-core-10.4,
mariadb-client-core-10.5,
mariadb-client-core-10.6,
mariadb-client-core-10.7,
mariadb-client-core-10.8,
mariadb-client-core-5.1,
mariadb-client-core-5.2,
mariadb-client-core-5.3,
@@ -293,15 +306,19 @@ Conflicts: mariadb-client-10.0,
mysql-client-core-5.7,
mysql-client-core-8.0,
virtual-mysql-client-core
Breaks: mariadb-server-10.0,
Breaks: mariadb-client (<< ${source:Version}),
mariadb-server-10.0,
mariadb-server-10.1,
mariadb-server-core (<< ${source:Version}),
mariadb-server-core-10.0,
mariadb-server-core-10.1,
mariadb-server-core-10.2,
mariadb-server-core-10.3,
mariadb-server-core-10.4,
mariadb-server-core-10.5,
mariadb-server-core-10.6 (<< ${source:Version}),
mariadb-server-core-10.6,
mariadb-server-core-10.7,
mariadb-server-core-10.8,
mysql-cluster-community-client-plugins,
mysql-server-core-5.5,
mysql-server-core-5.6,
@@ -313,13 +330,16 @@ Breaks: mariadb-server-10.0,
percona-xtradb-cluster-server-5.6,
percona-xtradb-cluster-server-5.7,
percona-xtradb-cluster-server-8.0
Replaces: mariadb-client-10.0,
Replaces: mariadb-client (<< ${source:Version}),
mariadb-client-10.0,
mariadb-client-10.1,
mariadb-client-10.2,
mariadb-client-10.3,
mariadb-client-10.4,
mariadb-client-10.5,
mariadb-client-10.6 (<< ${source:Version}),
mariadb-client-10.6,
mariadb-client-10.7,
mariadb-client-10.8,
mariadb-client-5.1,
mariadb-client-5.2,
mariadb-client-5.3,
@@ -330,19 +350,25 @@ Replaces: mariadb-client-10.0,
mariadb-client-core-10.3,
mariadb-client-core-10.4,
mariadb-client-core-10.5,
mariadb-client-core-10.6,
mariadb-client-core-10.7,
mariadb-client-core-10.8,
mariadb-client-core-5.1,
mariadb-client-core-5.2,
mariadb-client-core-5.3,
mariadb-client-core-5.5,
mariadb-server-10.0,
mariadb-server-10.1,
mariadb-server-core (<< ${source:Version}),
mariadb-server-core-10.0,
mariadb-server-core-10.1,
mariadb-server-core-10.2,
mariadb-server-core-10.3,
mariadb-server-core-10.4,
mariadb-server-core-10.5,
mariadb-server-core-10.6 (<< ${source:Version}),
mariadb-server-core-10.6,
mariadb-server-core-10.7,
mariadb-server-core-10.8,
mysql-client (<< 5.0.51),
mysql-client-5.0,
mysql-client-5.1,
@@ -374,22 +400,24 @@ Description: MariaDB database core client binaries
.
This package includes the core client files, as used by Akonadi.
Package: mariadb-client-10.6
Package: mariadb-client
Architecture: any
Depends: debianutils (>=1.6),
mariadb-client-core-10.6 (>= ${source:Version}),
libconfig-inifiles-perl,
mariadb-client-core (>= ${source:Version}),
mariadb-common,
${misc:Depends},
${perl:Depends},
${shlibs:Depends}
Conflicts: mariadb-client (<< ${source:Version}),
mariadb-client-10.0,
Conflicts: mariadb-client-10.0,
mariadb-client-10.1,
mariadb-client-10.2,
mariadb-client-10.3,
mariadb-client-10.4,
mariadb-client-10.5,
mariadb-client-10.6 (<< ${source:Version}),
mariadb-client-10.6,
mariadb-client-10.7,
mariadb-client-10.8,
mariadb-client-5.1,
mariadb-client-5.2,
mariadb-client-5.3,
@@ -409,27 +437,36 @@ Conflicts: mariadb-client (<< ${source:Version}),
mysql-client-core-8.0,
mytop,
virtual-mysql-client
Breaks: mariadb-client-core-10.0,
Breaks: mariadb-client-core (<< ${source:Version}),
mariadb-client-core-10.0,
mariadb-client-core-10.1,
mariadb-client-core-10.2,
mariadb-client-core-10.3,
mariadb-client-core-10.4,
mariadb-client-core-10.5,
mariadb-client-core-10.6 (<< ${source:Version}),
mariadb-client-core-10.6,
mariadb-client-core-10.7,
mariadb-client-core-10.8,
mariadb-server (<< ${source:Version}),
mariadb-server-10.0,
mariadb-server-10.1,
mariadb-server-10.2,
mariadb-server-10.3,
mariadb-server-10.4,
mariadb-server-10.5,
mariadb-server-10.6 (<< ${source:Version}),
mariadb-server-10.6,
mariadb-server-10.7,
mariadb-server-10.8,
mariadb-server-core (<< ${source:Version}),
mariadb-server-core-10.0,
mariadb-server-core-10.1,
mariadb-server-core-10.2,
mariadb-server-core-10.3,
mariadb-server-core-10.4,
mariadb-server-core-10.5,
mariadb-server-core-10.6 (<< ${source:Version}),
mariadb-server-core-10.6,
mariadb-server-core-10.7,
mariadb-server-core-10.8,
mysql-server-5.5,
mysql-server-5.6,
mysql-server-5.7,
@@ -441,38 +478,49 @@ Breaks: mariadb-client-core-10.0,
percona-server-server-5.6,
percona-xtradb-cluster-server-5.6,
percona-xtradb-cluster-server-5.7
Replaces: mariadb-client (<< ${source:Version}),
mariadb-client-10.0,
Replaces: mariadb-client-10.0,
mariadb-client-10.1,
mariadb-client-10.2,
mariadb-client-10.3,
mariadb-client-10.4,
mariadb-client-10.5,
mariadb-client-10.6,
mariadb-client-10.7,
mariadb-client-10.8,
mariadb-client-5.1,
mariadb-client-5.2,
mariadb-client-5.3,
mariadb-client-5.5,
mariadb-client-core (<< ${source:Version}),
mariadb-client-core-10.0,
mariadb-client-core-10.1,
mariadb-client-core-10.2,
mariadb-client-core-10.3,
mariadb-client-core-10.4,
mariadb-client-core-10.5,
mariadb-client-core-10.6 (<< ${source:Version}),
mariadb-client-core-10.6,
mariadb-client-core-10.7,
mariadb-client-core-10.8,
mariadb-server (<< ${source:Version}),
mariadb-server-10.0,
mariadb-server-10.1,
mariadb-server-10.2,
mariadb-server-10.3,
mariadb-server-10.4,
mariadb-server-10.5,
mariadb-server-10.6 (<< ${source:Version}),
mariadb-server-10.6,
mariadb-server-10.7,
mariadb-server-10.8,
mariadb-server-core (<< ${source:Version}),
mariadb-server-core-10.0,
mariadb-server-core-10.1,
mariadb-server-core-10.2,
mariadb-server-core-10.3,
mariadb-server-core-10.4,
mariadb-server-core-10.5,
mariadb-server-core-10.6 (<< ${source:Version}),
mariadb-server-core-10.6,
mariadb-server-core-10.7,
mariadb-server-core-10.8,
mysql-client (<< 5.0.51),
mysql-client-5.0,
mysql-client-5.1,
@@ -513,7 +561,7 @@ Description: MariaDB database client binaries
This package includes the client binaries and the additional tools
innotop and mariadb-report (mysqlreport).
Package: mariadb-server-core-10.6
Package: mariadb-server-core
Architecture: any
Depends: mariadb-common (>= ${source:Version}),
${misc:Depends},
@@ -524,6 +572,9 @@ Conflicts: mariadb-server-core-10.0,
mariadb-server-core-10.3,
mariadb-server-core-10.4,
mariadb-server-core-10.5,
mariadb-server-core-10.6,
mariadb-server-core-10.7,
mariadb-server-core-10.8,
mariadb-server-core-5.1,
mariadb-server-core-5.2,
mariadb-server-core-5.3,
@@ -536,20 +587,26 @@ Conflicts: mariadb-server-core-10.0,
mysql-server-core-5.7,
mysql-server-core-8.0,
virtual-mysql-server-core
Breaks: mariadb-client-10.0,
Breaks: mariadb-client (<< ${source:Version}),
mariadb-client-10.0,
mariadb-client-10.1,
mariadb-client-10.2,
mariadb-client-10.3,
mariadb-client-10.4,
mariadb-client-10.5,
mariadb-client-10.6 (<< ${source:Version}),
mariadb-client-10.6,
mariadb-client-10.7,
mariadb-client-10.8,
mariadb-server (<< ${source:Version}),
mariadb-server-10.0,
mariadb-server-10.1,
mariadb-server-10.2,
mariadb-server-10.3,
mariadb-server-10.4,
mariadb-server-10.5,
mariadb-server-10.6 (<< ${source:Version}),
mariadb-server-10.6,
mariadb-server-10.7,
mariadb-server-10.8,
mysql-client-5.5,
mysql-server-5.5,
mysql-server-5.6,
@@ -558,20 +615,26 @@ Breaks: mariadb-client-10.0,
percona-server-server-5.6,
percona-xtradb-cluster-server-5.6,
percona-xtradb-cluster-server-5.7
Replaces: mariadb-client-10.0,
Replaces: mariadb-client (<< ${source:Version}),
mariadb-client-10.0,
mariadb-client-10.1,
mariadb-client-10.2,
mariadb-client-10.3,
mariadb-client-10.4,
mariadb-client-10.5,
mariadb-client-10.6 (<< ${source:Version}),
mariadb-client-10.6,
mariadb-client-10.7,
mariadb-client-10.8,
mariadb-server (<< ${source:Version}),
mariadb-server-10.0,
mariadb-server-10.1,
mariadb-server-10.2,
mariadb-server-10.3,
mariadb-server-10.4,
mariadb-server-10.5,
mariadb-server-10.6 (<< ${source:Version}),
mariadb-server-10.6,
mariadb-server-10.7,
mariadb-server-10.8,
mariadb-server-core-10.0,
mariadb-server-core-10.1,
mariadb-server-core-10.2,
@@ -608,11 +671,12 @@ Description: MariaDB database core server files
.
This package includes the core server files, as used by Akonadi.
Package: mariadb-server-10.6
Package: mariadb-server
Architecture: any
Suggests: mariadb-test,
netcat-openbsd
Recommends: libhtml-template-perl
Recommends: libhtml-template-perl,
pv
Pre-Depends: adduser (>= 3.40),
debconf,
mariadb-common (>= ${source:Version})
@@ -620,10 +684,9 @@ Depends: galera-4 (>= 26.4),
gawk,
iproute2 [linux-any],
libdbi-perl,
lsb-base (>= 3.0-10),
lsof [linux-any],
mariadb-client-10.6 (>= ${source:Version}),
mariadb-server-core-10.6 (>= ${source:Version}),
mariadb-client (>= ${source:Version}),
mariadb-server-core (>= ${source:Version}),
passwd,
perl (>= 5.6),
procps,
@@ -633,13 +696,15 @@ Depends: galera-4 (>= 26.4),
${misc:Depends},
${perl:Depends},
${shlibs:Depends}
Conflicts: mariadb-server (<< ${source:Version}),
mariadb-server-10.0,
Conflicts: mariadb-server-10.0,
mariadb-server-10.1,
mariadb-server-10.2,
mariadb-server-10.3,
mariadb-server-10.4,
mariadb-server-10.5,
mariadb-server-10.6,
mariadb-server-10.7,
mariadb-server-10.8,
mariadb-server-5.1,
mariadb-server-5.2,
mariadb-server-5.3,
@@ -669,15 +734,20 @@ Breaks: handlersocket-mysql-5.5,
Replaces: handlersocket-mysql-5.5,
libmariadbclient-dev (<< 5.5.0),
libmariadbclient16,
mariadb-client (<< ${source:Version}),
mariadb-client-10.5,
mariadb-client-10.6 (<< ${source:Version}),
mariadb-server (<< ${source:Version}),
mariadb-client-10.6,
mariadb-client-10.7,
mariadb-client-10.8,
mariadb-server-10.0,
mariadb-server-10.1,
mariadb-server-10.2,
mariadb-server-10.3,
mariadb-server-10.4,
mariadb-server-10.5,
mariadb-server-10.6,
mariadb-server-10.7,
mariadb-server-10.8,
mariadb-server-5.1,
mariadb-server-5.2,
mariadb-server-5.3,
@@ -709,37 +779,6 @@ Description: MariaDB database server binaries
.
This package includes the server binaries.
Package: mariadb-server
Architecture: all
Depends: mariadb-server-10.6 (>= ${source:Version}),
${misc:Depends}
Description: MariaDB database server binaries (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of
mariadb-server (currently mariadb-server-10.6), as determined by the MariaDB
maintainers. Install this package if in doubt about which MariaDB
version you need. That will install the version recommended by the
package maintainers.
.
MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of MariaDB are speed, robustness and
ease of use.
Package: mariadb-client
Architecture: all
Depends: mariadb-client-10.6 (>= ${source:Version}),
${misc:Depends}
Description: MariaDB database client binaries (metapackage depending on the latest version)
This is an empty package that depends on the current "best" version of
mariadb-client (currently mariadb-client-10.6), as determined by the MariaDB
maintainers. Install this package if in doubt about which MariaDB version
you want, as this is the one considered to be in the best shape.
.
MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of MariaDB are speed, robustness and
ease of use.
Package: mariadb-backup
Architecture: any
Breaks: mariadb-backup-10.1,
@@ -750,20 +789,19 @@ Replaces: mariadb-backup-10.1,
mariadb-backup-10.2,
mariadb-backup-10.3,
mariadb-client-10.1
Depends: mariadb-client-core-10.6 (= ${binary:Version}),
Depends: mariadb-client-core (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends}
Description: Backup tool for MariaDB server
Based on Xtrabackup, but improved to work with MariaDB server.
This backup tool is guaranteed to be compatible with MariaDB server.
.
Please refer to the MariaDB Knowledge Base on more information on
Please refer to the MariaDB Documentation on more information on
how to use this tool.
Package: mariadb-plugin-connect
Architecture: any
Depends: libxml2,
mariadb-server-10.6 (= ${server:Version}),
Depends: mariadb-server (= ${server:Version}),
unixodbc,
${misc:Depends},
${shlibs:Depends}
@@ -790,8 +828,7 @@ Description: Connect storage engine for MariaDB server
Package: mariadb-plugin-s3
Architecture: any
Depends: libcurl4,
mariadb-server-10.6 (= ${server:Version}),
Depends: mariadb-server (= ${server:Version}),
${misc:Depends},
${shlibs:Depends}
Description: Amazon S3 archival storage engine for MariaDB
@@ -800,8 +837,8 @@ Description: Amazon S3 archival storage engine for MariaDB
them accessible in MariaDB in read-only mode.
Package: mariadb-plugin-rocksdb
Architecture: amd64 arm64 mips64el ppc64el
Depends: mariadb-server-10.6 (= ${server:Version}),
Architecture: amd64 arm64 mips64el ppc64el riscv64
Depends: mariadb-server (= ${server:Version}),
python3:any,
rocksdb-tools,
${misc:Depends},
@@ -820,8 +857,7 @@ Description: RocksDB storage engine for MariaDB server
Package: mariadb-plugin-oqgraph
Architecture: any
Depends: libjudydebian1,
mariadb-server-10.6 (= ${server:Version}),
Depends: mariadb-server (= ${server:Version}),
${misc:Depends},
${shlibs:Depends}
Breaks: mariadb-oqgraph-engine-10.0,
@@ -845,7 +881,7 @@ Description: OQGraph storage engine for MariaDB server
Package: mariadb-plugin-mroonga
Architecture: any-alpha any-amd64 any-arm any-arm64 any-i386 any-ia64 any-mips64el any-mips64r6el any-mipsel any-mipsr6el any-nios2 any-powerpcel any-ppc64el any-sh3 any-sh4 any-tilegx
Depends: mariadb-server-10.6 (= ${server:Version}),
Depends: mariadb-server (= ${server:Version}),
${misc:Depends},
${shlibs:Depends}
Breaks: mariadb-server-10.0,
@@ -865,7 +901,7 @@ Description: Mroonga storage engine for MariaDB server
Package: mariadb-plugin-spider
Architecture: any
Depends: mariadb-server-10.6 (= ${server:Version}),
Depends: mariadb-server (= ${server:Version}),
${misc:Depends},
${shlibs:Depends}
Breaks: mariadb-server-10.0,
@@ -886,8 +922,7 @@ Description: Spider storage engine for MariaDB server
Package: mariadb-plugin-gssapi-server
Architecture: any
Depends: libgssapi-krb5-2,
mariadb-server-10.6,
Depends: mariadb-server (= ${server:Version}),
${misc:Depends},
${shlibs:Depends}
Breaks: mariadb-gssapi-server-10.1,
@@ -910,9 +945,7 @@ Description: GSSAPI authentication plugin for MariaDB server
Package: mariadb-plugin-gssapi-client
Architecture: any
Multi-Arch: same
Depends: libgssapi-krb5-2,
mariadb-client-10.6 (= ${binary:Version}),
Depends: mariadb-client (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends}
Breaks: mariadb-gssapi-client-10.1,
@@ -931,20 +964,100 @@ Description: GSSAPI authentication plugin for MariaDB client
Package: mariadb-plugin-cracklib-password-check
Architecture: any
Depends: libcrack2 (>= 2.9.0),
mariadb-server-10.6,
Depends: mariadb-server,
${misc:Depends},
${shlibs:Depends}
Description: CrackLib Password Validation Plugin for MariaDB server
This password validation plugin uses cracklib to allow only
sufficiently secure (as defined by cracklib) user passwords in MariaDB server.
sufficiently secure (as defined by cracklib) user passwords in
MariaDB server.
.
Install and configure this to enforce stronger passwords for MariaDB server users.
Install and configure this to enforce stronger passwords for
MariaDB server users.
Package: mariadb-plugin-hashicorp-key-management
Architecture: any
Depends: mariadb-server,
${misc:Depends},
${shlibs:Depends}
Description: Hashicorp Key Management plugin for MariaDB
This encryption plugin uses Hashicorp Vault for storing encryption
keys for MariaDB Data-at-Rest encryption.
Package: mariadb-plugin-provider-bzip2
Architecture: any
Depends: mariadb-server,
${misc:Depends},
${shlibs:Depends}
Description: BZip2 compression support in the server and storage engines
The various MariaDB storage engines, such as InnoDB, RocksDB, Mroonga,
can use different compression libraries.
.
Plugin provides BZip2 (https://sourceware.org/bzip2/) compression
.
Note that these affect InnoDB and Mroonga only;
RocksDB still uses the compression algorithms from its own library
Package: mariadb-plugin-provider-lz4
Architecture: any
Depends: mariadb-server,
${misc:Depends},
${shlibs:Depends}
Description: LZ4 compression support in the server and storage engines
The various MariaDB storage engines, such as InnoDB, RocksDB, Mroonga,
can use different compression libraries.
.
Plugin provides LZ4 (http://lz4.github.io/lz4/) compression
.
Note that these affect InnoDB and Mroonga only;
RocksDB still uses the compression algorithms from its own library
Package: mariadb-plugin-provider-lzma
Architecture: any
Depends: mariadb-server,
${misc:Depends},
${shlibs:Depends}
Description: LZMA compression support in the server and storage engines
The various MariaDB storage engines, such as InnoDB, RocksDB, Mroonga,
can use different compression libraries.
.
Plugin provides LZMA (https://tukaani.org/lzma/) compression
.
Note that these affect InnoDB and Mroonga only;
RocksDB still uses the compression algorithms from its own library
Package: mariadb-plugin-provider-lzo
Architecture: any
Depends: mariadb-server,
${misc:Depends},
${shlibs:Depends}
Description: LZO compression support in the server and storage engines
The various MariaDB storage engines, such as InnoDB, RocksDB, Mroonga,
can use different compression libraries.
.
Plugin provides LZO (http://www.oberhumer.com/opensource/lzo/) compression
.
Note that these affect InnoDB and Mroonga only;
RocksDB still uses the compression algorithms from its own library
Package: mariadb-plugin-provider-snappy
Architecture: any
Depends: mariadb-server,
${misc:Depends},
${shlibs:Depends}
Description: Snappy compression support in the server and storage engines
The various MariaDB storage engines, such as InnoDB, RocksDB, Mroonga,
can use different compression libraries.
.
Plugin provides Snappy (https://github.com/google/snappy) compression
.
Note that these affect InnoDB and Mroonga only;
RocksDB still uses the compression algorithms from its own library
Package: mariadb-test
Architecture: any
Depends: mariadb-client-10.6 (= ${binary:Version}),
mariadb-server-10.6 (= ${server:Version}),
Depends: mariadb-client (= ${binary:Version}),
mariadb-server (= ${server:Version}),
mariadb-test-data (= ${source:Version}),
virtual-mysql-testsuite,
${misc:Depends},
@@ -953,8 +1066,7 @@ Depends: mariadb-client-10.6 (= ${binary:Version}),
Conflicts: mariadb-server-5.5,
mysql-server-5.7,
mysql-server-core-8.0
Breaks: mariadb-server-5.5,
mariadb-test-10.0,
Breaks: mariadb-test-10.0,
mariadb-test-10.1,
mariadb-test-10.2,
mariadb-test-10.3,

1
debian/copyright vendored
View File

@@ -1,4 +1,3 @@
== MariaDB ==
The Debian package of MySQL was first debianzed on 1997-04-12 by Christian

View File

@@ -0,0 +1,2 @@
# Needed conflict
conflicts-with-version libmariadbclient-dev (<< 1:10.11.8+maria~deb11)

View File

@@ -1,3 +1,4 @@
usr/bin/mariadb-config
usr/bin/mariadb_config
usr/include/mariadb/errmsg.h
usr/include/mariadb/ma_list.h
@@ -31,3 +32,4 @@ usr/lib/*/pkgconfig/libmariadb.pc
usr/share/aclocal/mysql.m4
usr/share/man/man1/mariadb_config.1
usr/share/man/man1/mysql_config.1
usr/share/man/man3/*.3

View File

@@ -1,2 +1 @@
usr/bin/mariadb_config usr/bin/mariadb-config
usr/share/man/man1/mariadb_config.1.gz usr/share/man/man1/mariadb-config.1.gz

View File

@@ -1,2 +1,774 @@
# This is how upstream does it, wont' fix
arch-dependent-file-not-in-arch-specific-directory usr/bin/mariadb_config
# Needed conflict
conflicts-with-version libmariadb-dev-compat (<< 3.0.0)
# This is intended one
repeated-path-segment mariadb [usr/include/mariadb/mariadb/]
# These are handled when groff messages are corrected
typo-in-manual-page handshak handshake [usr/share/man/man3/mariadb_get_infov.3.gz:173]
typo-in-manual-page occured occurred [usr/share/man/man3/mysql_ping.3.gz:39]
typo-in-manual-page occured occurred [usr/share/man/man3/mysql_set_character_set.3.gz:37]
typo-in-manual-page occured occurred [usr/share/man/man3/mysql_stmt_error.3.gz:30]
typo-in-manual-page occured occurred [usr/share/man/man3/mysql_stmt_reset.3.gz:27]
typo-in-manual-page occured occurred [usr/share/man/man3/mysql_store_result.3.gz:34]
typo-in-manual-page releated related [usr/share/man/man3/mariadb_get_infov.3.gz:8]
typo-in-manual-page reponse response [usr/share/man/man3/mysql_send_query.3.gz:8]
typo-in-manual-page seperated separated [usr/share/man/man3/mysql_real_connect.3.gz:144]
typo-in-manual-page seperated separated [usr/share/man/man3/mysql_real_connect.3.gz:148]
typo-in-manual-page sucess success [usr/share/man/man3/mariadb_reconnect.3.gz:25]
# Probably fixed in newer pandoc
# man pages should be regenerated
groff-message an.tmac:<standard input>:*: tbl preprocessor failed, or it or soelim was not run; table(s) likely not rendered (TE macro called with TW register undefined) [usr/share/man/man3/mysql_stmt_attr_set.3.gz:20]
groff-message an.tmac:<standard input>:*: tbl preprocessor failed, or it or soelim was not run; table(s) likely not rendered (TE macro called with TW register undefined) [usr/share/man/man3/mysql_real_connect.3.gz:18]
groff-message an.tmac:<standard input>:*: tbl preprocessor failed, or it or soelim was not run; table(s) likely not rendered (TE macro called with TW register undefined) [usr/share/man/man3/mysql_set_character_set.3.gz:5]
groff-message an.tmac:<standard input>:*: tbl preprocessor failed, or it or soelim was not run; table(s) likely not rendered (TE macro called with TW register undefined) [usr/share/man/man3/mysql_set_server_option.3.gz:4]
groff-message an.tmac:<standard input>:*: tbl preprocessor failed, or it or soelim was not run; table(s) likely not rendered (TE macro called with TW register undefined) [usr/share/man/man3/mariadb_rpl_get_optionsv.3.gz:4]
groff-message an.tmac:<standard input>:*: tbl preprocessor failed, or it or soelim was not run; table(s) likely not rendered (TE macro called with TW register undefined) [usr/share/man/man3/mariadb_rpl_optionsv.3.gz:4]
groff-message an.tmac:<standard input>:*: tbl preprocessor failed, or it or soelim was not run; table(s) likely not rendered (TE macro called with TW register undefined) [usr/share/man/man3/mysql_info.3.gz:10]
groff-message an.tmac:<standard input>:*: tbl preprocessor failed, or it or soelim was not run; table(s) likely not rendered (TE macro called with TW register undefined) [usr/share/man/man3/mysql_refresh.3.gz:13]
groff-message an.tmac:<standard input>:*: tbl preprocessor failed, or it or soelim was not run; table(s) likely not rendered (TE macro called with TW register undefined) [usr/share/man/man3/mysql_optionsv.3.gz:48]
groff-message an.tmac:<standard input>:*: tbl preprocessor failed, or it or soelim was not run; table(s) likely not rendered (TE macro called with TW register undefined) [usr/share/man/man3/mysql_stmt_attr_get.3.gz:20]
groff-message an.tmac:<standard input>:*: tbl preprocessor failed, or it or soelim was not run; table(s) likely not rendered (TE macro called with TW register undefined) [usr/share/man/man3/mariadb_get_infov.3.gz:43]
# Until man pages are regenerated they just pollute
# lintian output
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1043256
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1041809
# https://github.com/jgm/pandoc/issues/9020
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:45]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:16]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:51]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:46]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:17]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:52]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:21]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:22]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:47]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:53]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:54]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_cancel.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_check.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_column_cmp_named.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_column_count.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_exists_named.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_exists_num.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_free.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_list_named.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_list_num.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_unpack.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_reconnect.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_close.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_fetch.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_open.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_stmt_fetch_fields.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_autocommit.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_change_user.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_close.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_commit.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_data_seek.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_field_direct.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_fields.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_row.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_field_seek.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_field_tell.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_free_result.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_character_set_info.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_client_version.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_host_info.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_proto_info.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_server_info.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_server_version.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_ssl_cipher.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_hex_string.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_init.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_kill.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_more_results.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_next_result.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_num_fields.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_num_rows.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_query.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_read_query_result.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_query.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_reset_connection.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_rollback.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_row_seek.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_row_tell.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_select_db.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_server_end.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_server_init.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_shutdown.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_sqlstate.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_ssl_set.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stat.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_bind_param.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_bind_result.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_close.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_errno.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_execute.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_fetch.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_fetch_column.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_field_count.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_init.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_param_count.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_param_metadata.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_prepare.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_reset.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_row_seek.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_row_tell.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_send_long_data.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_store_result.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_thread_end.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_thread_id.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_thread_init.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_use_result.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_warning_count.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:48]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:55]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:49]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_connection.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_create_many_named.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_create_many_num.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_update_many_named.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_update_many_num.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_get_optionsv.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_optionsv.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_stmt_execute_direct.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_affected_rows.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_errno.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_error.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_field.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_lengths.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_field_count.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_client_info.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_socket.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_info.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_options.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_options4.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_ping.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_escape_string.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_refresh.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_send_query.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_first.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_next.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_set_character_set.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_set_server_option.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_affected_rows.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_data_seek.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_error.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_free_result.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_insert_id.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_more_results.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_next_result.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_num_rows.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_result_metadata.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_sqlstate.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_store_result.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_warning_count.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:56]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:57]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:50]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:58]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:51]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:59]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:60]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:52]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:61]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:62]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:63]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:64]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:53]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:19]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:20]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:65]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:54]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:66]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:55]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:67]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:56]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:68]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:57]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:69]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:58]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:70]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:59]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:71]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:60]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_reconnect.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_server_info.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_init.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:61]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:72]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_check.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_get_optionsv.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_optionsv.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_field_direct.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_lengths.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_row.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_info.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_insert_id.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:62]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:73]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:63]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:74]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_cancel.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_column_cmp_named.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_affected_rows.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_init.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_shutdown.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_param_count.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:64]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:75]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:65]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_cancel.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_exists_named.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_exists_num.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_free.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_free.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_close.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_fetch.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_open.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_affected_rows.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_affected_rows.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_affected_rows.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_close.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_field_direct.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_lengths.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_proto_info.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_server_info.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_server_version.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_hex_string.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_init.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_num_fields.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_num_rows.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_init.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_insert_id.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_reset.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_sqlstate.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_warning_count.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:76]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:66]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_connection.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_unpack.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_get_optionsv.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_optionsv.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_autocommit.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_commit.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_free_result.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_host_info.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_socket.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_ssl_cipher.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_more_results.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_read_query_result.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_rollback.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_first.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_next.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stat.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_errno.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_fetch.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_free_result.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_insert_id.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_param_metadata.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_thread_id.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_warning_count.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:67]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:77]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:68]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:78]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_cancel.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_column_cmp_named.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_column_count.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_column_count.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_exists_named.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_exists_num.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_field_direct.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_character_set_info.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_info.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_num_rows.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_options.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_row_seek.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_row_tell.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_select_db.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_set_server_option.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_bind_result.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_close.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_more_results.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_param_count.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_prepare.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_row_seek.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_row_tell.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:69]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:79]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:70]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_check.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_check.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_free.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_list_num.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_stmt_fetch_fields.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_data_seek.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_errno.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_error.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_field_seek.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_field_tell.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_hex_string.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_init.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_init.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_options4.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_query.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_refresh.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_server_end.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_bind_param.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_data_seek.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_error.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_execute.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_field_count.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_next_result.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:80]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:81]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:71]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:82]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:83]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_column_cmp_named.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_column_count.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_free.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_list_named.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_list_named.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_fetch.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_affected_rows.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_field.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_fields.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_lengths.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_row.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_client_version.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_next_result.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_num_rows.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_query.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_send_query.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_server_end.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_shutdown.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_affected_rows.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_fetch_column.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_num_rows.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_result_metadata.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_send_long_data.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_send_long_data.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_store_result.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:72]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:84]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:73]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:85]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_exists_named.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_exists_num.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_list_num.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_unpack.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_unpack.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_update_many_named.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_update_many_num.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_fetch.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_stmt_execute_direct.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_autocommit.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_hex_string.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_row_seek.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_first.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_next.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_set_character_set.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_bind_result.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_fetch.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_fetch.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_init.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_init.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_param_metadata.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_prepare.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_row_seek.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:74]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:86]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:75]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:87]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_cancel.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_check.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_create_many_named.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_create_many_num.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_exists_named.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_exists_num.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_reconnect.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_fetch.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_data_seek.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_lengths.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_field_count.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_field_seek.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_character_set_info.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_character_set_info.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_host_info.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_ssl_cipher.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_kill.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_select_db.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_set_server_option.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_bind_param.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_bind_param.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_data_seek.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_fetch.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_use_result.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:76]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:88]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_check.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_list_named.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_unpack.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_update_many_named.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_update_many_num.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_open.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_hex_string.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_init.3.gz:8]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_ping.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_escape_string.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_query.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_refresh.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_first.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_fetch_column.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_prepare.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_send_long_data.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_store_result.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_warning_count.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:89]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:77]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_column_cmp_named.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_column_count.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_create_many_named.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_create_many_num.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_list_num.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_stmt_execute_direct.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_errno.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_error.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_field_direct.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_field_direct.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_lengths.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_row.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_field_seek.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_field_seek.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_info.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_query.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_send_query.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_server_end.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_server_init.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_set_character_set.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_shutdown.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_affected_rows.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_reset.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_warning_count.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:90]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:91]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:78]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_column_cmp_named.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_list_named.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_update_many_named.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_update_many_num.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_reconnect.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_close.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_affected_rows.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_change_user.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_errno.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_error.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_row.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_server_info.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_query.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_next.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_shutdown.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_errno.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_fetch_column.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_init.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_warning_count.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:92]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_create_many_named.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_create_many_num.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_unpack.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_stmt_execute_direct.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_autocommit.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_refresh.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_select_db.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_send_query.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_affected_rows.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_errno.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_field_count.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_send_long_data.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_warning_count.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:93]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:94]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_column_count.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_unpack.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_update_many_named.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_update_many_num.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_row.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_field_count.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_init.3.gz:9]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_kill.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_more_results.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_escape_string.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_server_init.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_first.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_set_character_set.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_error.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_fetch_column.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:95]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_create_many_named.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_create_many_num.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_list_named.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_list_num.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_fields.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_init.3.gz:10]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_server_init.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_ssl_set.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_error.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:96]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_change_user.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_reset_connection.3.gz:2]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_next.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:97]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_cancel.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_create_many_named.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_create_many_named.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_create_many_num.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_create_many_num.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_unpack.3.gz:8]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_update_many_named.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_update_many_num.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_error.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_affected_rows.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_send_long_data.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:98]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_unpack.3.gz:9]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_affected_rows.3.gz:8]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_change_user.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_field.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_row.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_ssl_cipher.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_kill.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_ssl_set.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:99]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:100]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:101]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_list_named.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_list_num.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_list_num.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_ssl_cipher.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_escape_string.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_send_query.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_send_long_data.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:102]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:103]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:104]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:105]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:106]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_change_user.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_fetch_row.3.gz:8]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_ssl_cipher.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_kill.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_next.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_ssl_set.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:107]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:108]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_create_many_named.3.gz:8]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_create_many_num.3.gz:8]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_update_many_named.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_update_many_num.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:109]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_unpack.3.gz:10]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_autocommit.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_escape_string.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_escape_string.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_select_db.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_next.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_ssl_set.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_fetch.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_use_result.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_fetch.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:3]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_first.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_stmt_execute_direct.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_get_ssl_cipher.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_next.3.gz:8]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_ssl_set.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_unpack.3.gz:11]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_unpack.3.gz:12]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:8]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:4]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_refresh.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_send_long_data.3.gz:8]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_dyncol_unpack.3.gz:13]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:9]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_next.3.gz:9]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:10]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:8]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_first.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_ssl_set.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:11]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_info.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:12]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_next.3.gz:10]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:13]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:9]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_refresh.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_next.3.gz:11]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:14]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_first.3.gz:8]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:10]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:11]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_next.3.gz:12]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_next.3.gz:13]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_info.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:12]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:13]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_first.3.gz:9]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:15]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_change_user.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:14]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:15]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:8]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_refresh.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_first.3.gz:10]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_ssl_set.3.gz:8]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:16]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:17]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:16]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_select_db.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_first.3.gz:11]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:8]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:18]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_autocommit.3.gz:6]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_info.3.gz:7]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:9]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:17]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_next.3.gz:14]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:18]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_refresh.3.gz:8]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_first.3.gz:12]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:9]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:8]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:19]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_first.3.gz:13]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:10]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:9]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:20]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_info.3.gz:8]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:19]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_first.3.gz:14]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_first.3.gz:15]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:21]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:11]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:20]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:21]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_refresh.3.gz:9]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:12]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:10]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:22]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:23]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:11]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:22]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:24]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:25]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_info.3.gz:9]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:26]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:27]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:13]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:23]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:24]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:28]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:29]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:12]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:25]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:26]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:30]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:31]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_refresh.3.gz:10]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:14]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:27]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:28]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:32]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:33]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_session_track_get_first.3.gz:16]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:13]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:29]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:34]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:35]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:30]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:36]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:37]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:10]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:31]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_get_optionsv.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:38]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:39]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:32]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:40]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:41]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_refresh.3.gz:11]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:33]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_rpl_optionsv.3.gz:5]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:42]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:15]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:34]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:43]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:14]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:35]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:44]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:45]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:11]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:16]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:15]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_refresh.3.gz:12]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_init.3.gz:1]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:36]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:37]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:46]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:17]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:12]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:18]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:38]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:39]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:47]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_get.3.gz:19]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:16]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:40]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:13]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_refresh.3.gz:14]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:17]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:41]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:49]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:42]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:14]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:18]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_optionsv.3.gz:50]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_stmt_attr_set.3.gz:19]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mariadb_get_infov.3.gz:44]
groff-message troff:<standard input>:*: cannot select font 'C' [usr/share/man/man3/mysql_real_connect.3.gz:15]

2
debian/libmariadb3.lintian-overrides vendored Normal file
View File

@@ -0,0 +1,2 @@
# Needed conflict
conflicts-with-version libmariadbclient18 (<< 10.2.0)

342
debian/libmariadb3.symbols vendored Normal file
View File

@@ -0,0 +1,342 @@
libmariadb.so.3 libmariadb3 #MINVER#
* Build-Depends-Package: libmariadb-dev
libmariadb_3@libmariadb_3 3.0.0
libmariadb_3_3_5@libmariadb_3_3_5 3.3.5
libmariadbclient_18@libmariadbclient_18 3.0.0
libmysqlclient_18@libmysqlclient_18 3.0.0
ma_pvio_register_callback@libmariadb_3 3.0.0
mariadb_cancel@libmariadb_3 3.0.0
mariadb_connection@libmariadb_3 3.0.0
mariadb_convert_string@libmariadb_3 3.0.0
mariadb_deinitialize_ssl@libmariadb_3 3.0.0
mariadb_field_attr@libmariadb_3 3.3.1
mariadb_free_rpl_event@libmariadb_3 3.1.0
mariadb_get_charset_by_name@libmariadb_3 3.0.0
mariadb_get_charset_by_nr@libmariadb_3 3.0.0
mariadb_get_info@libmariadb_3 3.0.0
mariadb_get_infov@libmariadb_3 3.0.0
mariadb_reconnect@libmariadb_3 3.0.0
mariadb_rpl_close@libmariadb_3 3.1.0
mariadb_rpl_errno@libmariadb_3_3_5 3.3.2
mariadb_rpl_error@libmariadb_3_3_5 3.3.2
mariadb_rpl_extract_rows@libmariadb_3_3_5 3.3.2
mariadb_rpl_fetch@libmariadb_3 3.1.0
mariadb_rpl_get_optionsv@libmariadb_3 3.1.0
mariadb_rpl_init_ex@libmariadb_3 3.3.0
mariadb_rpl_open@libmariadb_3 3.1.0
mariadb_rpl_optionsv@libmariadb_3 3.1.0
mariadb_stmt_execute_direct@libmariadb_3 3.0.0
mariadb_stmt_fetch_fields@libmariadb_3 3.1.0
mysql_affected_rows@libmariadbclient_18 3.0.0
mysql_affected_rows@libmysqlclient_18 3.0.0
mysql_autocommit_cont@libmariadb_3 3.0.0
mysql_autocommit@libmariadbclient_18 3.0.0
mysql_autocommit@libmysqlclient_18 3.0.0
mysql_autocommit_start@libmariadb_3 3.0.0
mysql_change_user_cont@libmariadb_3 3.0.0
mysql_change_user@libmariadbclient_18 3.0.0
mysql_change_user@libmysqlclient_18 3.0.0
mysql_change_user_start@libmariadb_3 3.0.0
mysql_character_set_name@libmariadbclient_18 3.0.0
mysql_character_set_name@libmysqlclient_18 3.0.0
mysql_client_find_plugin@libmariadbclient_18 3.0.0
mysql_client_find_plugin@libmysqlclient_18 3.0.0
mysql_client_register_plugin@libmariadbclient_18 3.0.0
mysql_client_register_plugin@libmysqlclient_18 3.0.0
mysql_close_cont@libmariadb_3 3.0.0
mysql_close@libmariadbclient_18 3.0.0
mysql_close@libmysqlclient_18 3.0.0
mysql_close_start@libmariadb_3 3.0.0
mysql_commit_cont@libmariadb_3 3.0.0
mysql_commit@libmariadbclient_18 3.0.0
mysql_commit@libmysqlclient_18 3.0.0
mysql_commit_start@libmariadb_3 3.0.0
mysql_data_seek@libmariadbclient_18 3.0.0
mysql_data_seek@libmysqlclient_18 3.0.0
mysql_debug@libmariadbclient_18 3.0.0
mysql_debug@libmysqlclient_18 3.0.0
mysql_dump_debug_info_cont@libmariadb_3 3.0.0
mysql_dump_debug_info@libmariadbclient_18 3.0.0
mysql_dump_debug_info@libmysqlclient_18 3.0.0
mysql_dump_debug_info_start@libmariadb_3 3.0.0
mysql_embedded@libmariadbclient_18 3.0.0
mysql_embedded@libmysqlclient_18 3.0.0
mysql_eof@libmariadbclient_18 3.0.0
mysql_eof@libmysqlclient_18 3.0.0
mysql_errno@libmariadbclient_18 3.0.0
mysql_errno@libmysqlclient_18 3.0.0
mysql_error@libmariadbclient_18 3.0.0
mysql_error@libmysqlclient_18 3.0.0
mysql_escape_string@libmariadbclient_18 3.0.0
mysql_escape_string@libmysqlclient_18 3.0.0
mysql_fetch_field_direct@libmariadbclient_18 3.0.0
mysql_fetch_field_direct@libmysqlclient_18 3.0.0
mysql_fetch_field@libmariadbclient_18 3.0.0
mysql_fetch_field@libmysqlclient_18 3.0.0
mysql_fetch_fields@libmariadbclient_18 3.0.0
mysql_fetch_fields@libmysqlclient_18 3.0.0
mysql_fetch_lengths@libmariadbclient_18 3.0.0
mysql_fetch_lengths@libmysqlclient_18 3.0.0
mysql_fetch_row_cont@libmariadb_3 3.0.0
mysql_fetch_row@libmariadbclient_18 3.0.0
mysql_fetch_row@libmysqlclient_18 3.0.0
mysql_fetch_row_start@libmariadb_3 3.0.0
mysql_field_count@libmariadbclient_18 3.0.0
mysql_field_count@libmysqlclient_18 3.0.0
mysql_field_seek@libmariadbclient_18 3.0.0
mysql_field_seek@libmysqlclient_18 3.0.0
mysql_field_tell@libmariadbclient_18 3.0.0
mysql_field_tell@libmysqlclient_18 3.0.0
mysql_free_result_cont@libmariadb_3 3.0.0
mysql_free_result@libmariadbclient_18 3.0.0
mysql_free_result@libmysqlclient_18 3.0.0
mysql_free_result_start@libmariadb_3 3.0.0
mysql_get_character_set_info@libmariadbclient_18 3.0.0
mysql_get_character_set_info@libmysqlclient_18 3.0.0
mysql_get_charset_by_name@libmariadbclient_18 3.0.0
mysql_get_charset_by_name@libmysqlclient_18 3.0.0
mysql_get_charset_by_nr@libmariadbclient_18 3.0.0
mysql_get_charset_by_nr@libmysqlclient_18 3.0.0
mysql_get_client_info@libmariadbclient_18 3.0.0
mysql_get_client_info@libmysqlclient_18 3.0.0
mysql_get_client_version@libmariadbclient_18 3.0.0
mysql_get_client_version@libmysqlclient_18 3.0.0
mysql_get_host_info@libmariadbclient_18 3.0.0
mysql_get_host_info@libmysqlclient_18 3.0.0
mysql_get_option@libmariadbclient_18 3.0.0
mysql_get_option@libmysqlclient_18 3.0.0
mysql_get_optionv@libmariadbclient_18 3.0.0
mysql_get_optionv@libmysqlclient_18 3.0.0
mysql_get_parameters@libmariadbclient_18 3.0.0
mysql_get_parameters@libmysqlclient_18 3.0.0
mysql_get_proto_info@libmariadbclient_18 3.0.0
mysql_get_proto_info@libmysqlclient_18 3.0.0
mysql_get_server_info@libmariadbclient_18 3.0.0
mysql_get_server_info@libmysqlclient_18 3.0.0
mysql_get_server_name@libmariadbclient_18 3.0.0
mysql_get_server_name@libmysqlclient_18 3.0.0
mysql_get_server_version@libmariadbclient_18 3.0.0
mysql_get_server_version@libmysqlclient_18 3.0.0
mysql_get_socket@libmariadbclient_18 3.0.0
mysql_get_socket@libmysqlclient_18 3.0.0
mysql_get_ssl_cipher@libmariadbclient_18 3.0.0
mysql_get_ssl_cipher@libmysqlclient_18 3.0.0
mysql_get_timeout_value@libmariadb_3 3.0.19
mysql_get_timeout_value_ms@libmariadb_3 3.0.19
mysql_hex_string@libmariadbclient_18 3.0.0
mysql_hex_string@libmysqlclient_18 3.0.0
mysql_info@libmariadbclient_18 3.0.0
mysql_info@libmysqlclient_18 3.0.0
mysql_init@libmariadbclient_18 3.0.0
mysql_init@libmysqlclient_18 3.0.0
mysql_insert_id@libmariadbclient_18 3.0.0
mysql_insert_id@libmysqlclient_18 3.0.0
mysql_kill_cont@libmariadb_3 3.0.0
mysql_kill@libmariadbclient_18 3.0.0
mysql_kill@libmysqlclient_18 3.0.0
mysql_kill_start@libmariadb_3 3.0.0
mysql_list_dbs@libmariadbclient_18 3.0.0
mysql_list_dbs@libmysqlclient_18 3.0.0
mysql_list_fields_cont@libmariadb_3 3.0.0
mysql_list_fields@libmariadbclient_18 3.0.0
mysql_list_fields@libmysqlclient_18 3.0.0
mysql_list_fields_start@libmariadb_3 3.0.0
mysql_list_processes@libmariadbclient_18 3.0.0
mysql_list_processes@libmysqlclient_18 3.0.0
mysql_list_tables@libmariadbclient_18 3.0.0
mysql_list_tables@libmysqlclient_18 3.0.0
mysql_load_plugin@libmariadbclient_18 3.0.0
mysql_load_plugin@libmysqlclient_18 3.0.0
mysql_load_plugin_v@libmariadbclient_18 3.0.0
mysql_load_plugin_v@libmysqlclient_18 3.0.0
mysql_more_results@libmariadbclient_18 3.0.0
mysql_more_results@libmysqlclient_18 3.0.0
mysql_net_field_length@libmariadbclient_18 3.0.0
mysql_net_field_length@libmysqlclient_18 3.0.0
mysql_net_read_packet@libmariadbclient_18 3.0.0
mysql_net_read_packet@libmysqlclient_18 3.0.0
mysql_next_result_cont@libmariadb_3 3.0.0
mysql_next_result@libmariadbclient_18 3.0.0
mysql_next_result@libmysqlclient_18 3.0.0
mysql_next_result_start@libmariadb_3 3.0.0
mysql_num_fields@libmariadbclient_18 3.0.0
mysql_num_fields@libmysqlclient_18 3.0.0
mysql_num_rows@libmariadbclient_18 3.0.0
mysql_num_rows@libmysqlclient_18 3.0.0
mysql_options4@libmariadbclient_18 3.0.0
mysql_options4@libmysqlclient_18 3.0.0
mysql_options@libmariadbclient_18 3.0.0
mysql_options@libmysqlclient_18 3.0.0
mysql_optionsv@libmariadb_3 3.0.0
mysql_ping_cont@libmariadb_3 3.0.0
mysql_ping@libmariadbclient_18 3.0.0
mysql_ping@libmysqlclient_18 3.0.0
mysql_ping_start@libmariadb_3 3.0.0
mysql_ps_fetch_functions@libmariadb_3 3.0.0
mysql_query_cont@libmariadb_3 3.0.0
mysql_query@libmariadbclient_18 3.0.0
mysql_query@libmysqlclient_18 3.0.0
mysql_query_start@libmariadb_3 3.0.0
mysql_read_query_result_cont@libmariadb_3 3.0.0
mysql_read_query_result@libmariadbclient_18 3.0.0
mysql_read_query_result@libmysqlclient_18 3.0.0
mysql_read_query_result_start@libmariadb_3 3.0.0
mysql_real_connect_cont@libmariadb_3 3.0.0
mysql_real_connect@libmariadbclient_18 3.0.0
mysql_real_connect@libmysqlclient_18 3.0.0
mysql_real_connect_start@libmariadb_3 3.0.0
mysql_real_escape_string@libmariadbclient_18 3.0.0
mysql_real_escape_string@libmysqlclient_18 3.0.0
mysql_real_query_cont@libmariadb_3 3.0.0
mysql_real_query@libmariadbclient_18 3.0.0
mysql_real_query@libmysqlclient_18 3.0.0
mysql_real_query_start@libmariadb_3 3.0.0
mysql_refresh_cont@libmariadb_3 3.0.0
mysql_refresh@libmariadbclient_18 3.0.0
mysql_refresh@libmysqlclient_18 3.0.0
mysql_refresh_start@libmariadb_3 3.0.0
mysql_reset_connection_cont@libmariadb_3 3.0.0
mysql_reset_connection@libmariadbclient_18 3.0.0
mysql_reset_connection@libmysqlclient_18 3.0.0
mysql_reset_connection_start@libmariadb_3 3.0.0
mysql_rollback_cont@libmariadb_3 3.0.0
mysql_rollback@libmariadbclient_18 3.0.0
mysql_rollback@libmysqlclient_18 3.0.0
mysql_rollback_start@libmariadb_3 3.0.0
mysql_row_seek@libmariadbclient_18 3.0.0
mysql_row_seek@libmysqlclient_18 3.0.0
mysql_row_tell@libmariadbclient_18 3.0.0
mysql_row_tell@libmysqlclient_18 3.0.0
mysql_select_db_cont@libmariadb_3 3.0.0
mysql_select_db@libmariadbclient_18 3.0.0
mysql_select_db@libmysqlclient_18 3.0.0
mysql_select_db_start@libmariadb_3 3.0.0
mysql_send_query_cont@libmariadb_3 3.0.0
mysql_send_query@libmariadbclient_18 3.0.0
mysql_send_query@libmysqlclient_18 3.0.0
mysql_send_query_start@libmariadb_3 3.0.0
mysql_server_end@libmariadbclient_18 3.0.0
mysql_server_end@libmysqlclient_18 3.0.0
mysql_server_init@libmariadbclient_18 3.0.0
mysql_server_init@libmysqlclient_18 3.0.0
mysql_session_track_get_first@libmariadbclient_18 3.0.0
mysql_session_track_get_first@libmysqlclient_18 3.0.0
mysql_session_track_get_next@libmariadbclient_18 3.0.0
mysql_session_track_get_next@libmysqlclient_18 3.0.0
mysql_set_character_set_cont@libmariadb_3 3.0.0
mysql_set_character_set@libmariadbclient_18 3.0.0
mysql_set_character_set@libmysqlclient_18 3.0.0
mysql_set_character_set_start@libmariadb_3 3.0.0
mysql_set_local_infile_default@libmariadbclient_18 3.0.0
mysql_set_local_infile_default@libmysqlclient_18 3.0.0
mysql_set_local_infile_handler@libmariadbclient_18 3.0.0
mysql_set_local_infile_handler@libmysqlclient_18 3.0.0
mysql_set_server_option_cont@libmariadb_3 3.0.0
mysql_set_server_option@libmariadbclient_18 3.0.0
mysql_set_server_option@libmysqlclient_18 3.0.0
mysql_set_server_option_start@libmariadb_3 3.0.0
mysql_shutdown_cont@libmariadb_3 3.0.0
mysql_shutdown@libmariadbclient_18 3.0.0
mysql_shutdown@libmysqlclient_18 3.0.0
mysql_shutdown_start@libmariadb_3 3.0.0
mysql_sqlstate@libmariadbclient_18 3.0.0
mysql_sqlstate@libmysqlclient_18 3.0.0
mysql_ssl_set@libmariadbclient_18 3.0.0
mysql_ssl_set@libmysqlclient_18 3.0.0
mysql_stat_cont@libmariadb_3 3.0.0
mysql_stat@libmariadbclient_18 3.0.0
mysql_stat@libmysqlclient_18 3.0.0
mysql_stat_start@libmariadb_3 3.0.0
mysql_stmt_affected_rows@libmariadbclient_18 3.0.0
mysql_stmt_affected_rows@libmysqlclient_18 3.0.0
mysql_stmt_attr_get@libmariadbclient_18 3.0.0
mysql_stmt_attr_get@libmysqlclient_18 3.0.0
mysql_stmt_attr_set@libmariadbclient_18 3.0.0
mysql_stmt_attr_set@libmysqlclient_18 3.0.0
mysql_stmt_bind_param@libmariadbclient_18 3.0.0
mysql_stmt_bind_param@libmysqlclient_18 3.0.0
mysql_stmt_bind_result@libmariadbclient_18 3.0.0
mysql_stmt_bind_result@libmysqlclient_18 3.0.0
mysql_stmt_close_cont@libmariadb_3 3.0.0
mysql_stmt_close@libmariadbclient_18 3.0.0
mysql_stmt_close@libmysqlclient_18 3.0.0
mysql_stmt_close_start@libmariadb_3 3.0.0
mysql_stmt_data_seek@libmariadbclient_18 3.0.0
mysql_stmt_data_seek@libmysqlclient_18 3.0.0
mysql_stmt_errno@libmariadbclient_18 3.0.0
mysql_stmt_errno@libmysqlclient_18 3.0.0
mysql_stmt_error@libmariadbclient_18 3.0.0
mysql_stmt_error@libmysqlclient_18 3.0.0
mysql_stmt_execute_cont@libmariadb_3 3.0.0
mysql_stmt_execute@libmariadbclient_18 3.0.0
mysql_stmt_execute@libmysqlclient_18 3.0.0
mysql_stmt_execute_start@libmariadb_3 3.0.0
mysql_stmt_fetch_column@libmariadbclient_18 3.0.0
mysql_stmt_fetch_column@libmysqlclient_18 3.0.0
mysql_stmt_fetch_cont@libmariadb_3 3.0.0
mysql_stmt_fetch@libmariadbclient_18 3.0.0
mysql_stmt_fetch@libmysqlclient_18 3.0.0
mysql_stmt_fetch_start@libmariadb_3 3.0.0
mysql_stmt_field_count@libmariadbclient_18 3.0.0
mysql_stmt_field_count@libmysqlclient_18 3.0.0
mysql_stmt_free_result_cont@libmariadb_3 3.0.0
mysql_stmt_free_result@libmariadbclient_18 3.0.0
mysql_stmt_free_result@libmysqlclient_18 3.0.0
mysql_stmt_free_result_start@libmariadb_3 3.0.0
mysql_stmt_init@libmariadbclient_18 3.0.0
mysql_stmt_init@libmysqlclient_18 3.0.0
mysql_stmt_insert_id@libmariadbclient_18 3.0.0
mysql_stmt_insert_id@libmysqlclient_18 3.0.0
mysql_stmt_more_results@libmariadbclient_18 3.0.0
mysql_stmt_more_results@libmysqlclient_18 3.0.0
mysql_stmt_next_result_cont@libmariadb_3 3.0.0
mysql_stmt_next_result@libmariadbclient_18 3.0.0
mysql_stmt_next_result@libmysqlclient_18 3.0.0
mysql_stmt_next_result_start@libmariadb_3 3.0.0
mysql_stmt_num_rows@libmariadbclient_18 3.0.0
mysql_stmt_num_rows@libmysqlclient_18 3.0.0
mysql_stmt_param_count@libmariadbclient_18 3.0.0
mysql_stmt_param_count@libmysqlclient_18 3.0.0
mysql_stmt_param_metadata@libmariadbclient_18 3.0.0
mysql_stmt_param_metadata@libmysqlclient_18 3.0.0
mysql_stmt_prepare_cont@libmariadb_3 3.0.0
mysql_stmt_prepare@libmariadbclient_18 3.0.0
mysql_stmt_prepare@libmysqlclient_18 3.0.0
mysql_stmt_prepare_start@libmariadb_3 3.0.0
mysql_stmt_reset_cont@libmariadb_3 3.0.0
mysql_stmt_reset@libmariadbclient_18 3.0.0
mysql_stmt_reset@libmysqlclient_18 3.0.0
mysql_stmt_reset_start@libmariadb_3 3.0.0
mysql_stmt_result_metadata@libmariadbclient_18 3.0.0
mysql_stmt_result_metadata@libmysqlclient_18 3.0.0
mysql_stmt_row_seek@libmariadbclient_18 3.0.0
mysql_stmt_row_seek@libmysqlclient_18 3.0.0
mysql_stmt_row_tell@libmariadbclient_18 3.0.0
mysql_stmt_row_tell@libmysqlclient_18 3.0.0
mysql_stmt_send_long_data_cont@libmariadb_3 3.0.0
mysql_stmt_send_long_data@libmariadbclient_18 3.0.0
mysql_stmt_send_long_data@libmysqlclient_18 3.0.0
mysql_stmt_send_long_data_start@libmariadb_3 3.0.0
mysql_stmt_sqlstate@libmariadbclient_18 3.0.0
mysql_stmt_sqlstate@libmysqlclient_18 3.0.0
mysql_stmt_store_result_cont@libmariadb_3 3.0.0
mysql_stmt_store_result@libmariadbclient_18 3.0.0
mysql_stmt_store_result@libmysqlclient_18 3.0.0
mysql_stmt_store_result_start@libmariadb_3 3.0.0
mysql_stmt_warning_count@libmariadb_3 3.0.0
mysql_store_result_cont@libmariadb_3 3.0.0
mysql_store_result@libmariadbclient_18 3.0.0
mysql_store_result@libmysqlclient_18 3.0.0
mysql_store_result_start@libmariadb_3 3.0.0
mysql_thread_end@libmariadbclient_18 3.0.0
mysql_thread_end@libmysqlclient_18 3.0.0
mysql_thread_id@libmariadbclient_18 3.0.0
mysql_thread_id@libmysqlclient_18 3.0.0
mysql_thread_init@libmariadbclient_18 3.0.0
mysql_thread_init@libmysqlclient_18 3.0.0
mysql_thread_safe@libmariadbclient_18 3.0.0
mysql_thread_safe@libmysqlclient_18 3.0.0
mysql_use_result@libmariadbclient_18 3.0.0
mysql_use_result@libmysqlclient_18 3.0.0
mysql_warning_count@libmariadbclient_18 3.0.0
mysql_warning_count@libmysqlclient_18 3.0.0

42
debian/libmariadb3.symbols.README vendored Normal file
View File

@@ -0,0 +1,42 @@
The libmariadb3.symbols files is used to track the libmariadb3 ABI.
If a symbol is removed or changed, the Debian build will fail unless the same change has also explicitly been made in the libmariadb3.symbols file.
If a symbol is added, the Debian build will issue a warning like:
dh_makeshlibs -O--parallel
rm -f debian/libmariadb3/DEBIAN/shlibs
echo "libmariadb 3 libmariadb3" >> debian/libmariadb3/DEBIAN/shlibs
chmod 0644 -- debian/libmariadb3/DEBIAN/shlibs
chown 0:0 -- debian/libmariadb3/DEBIAN/shlibs
dpkg-gensymbols -plibmariadb3 -Idebian/libmariadb3.symbols -Pdebian/libmariadb3 -edebian/libmariadb3/usr/lib/x86_64-linux-gnu/libmariadb.so.3
dpkg-gensymbols: warning: some new symbols appeared in the symbols file: see diff output below
dpkg-gensymbols: warning: debian/libmariadb3/DEBIAN/symbols doesn't match completely debian/libmariadb3.symbols
--- debian/libmariadb3.symbols (libmariadb3_10.2.32+maria~sid_amd64)
+++ dpkg-gensymbolsUfTky5 2020-02-20 11:27:03.815551573 +0000
@@ -12,6 +12,7 @@
mariadb_get_charset_by_name@libmariadb_3 3.0.0
mariadb_get_charset_by_nr@libmariadb_3 3.0.0
mariadb_get_info@libmariadb_3 3.0.0
+ mariadb_get_infov@libmariadb_3 10.2.32+maria~sid
mariadb_reconnect@libmariadb_3 3.0.0
mariadb_rpl_close@libmariadb_3 3.1.0
mariadb_rpl_fetch@libmariadb_3 3.1.0
When this happens, please add the symbol to the libmariadb3.symbols file.
Unlike the automatic diff above, don't use the server version for the symbols.
Instead use the client library version, which can be viewed with:
$ grep 'SET(CPACK_PACKAGE_VERSION_' libmariadb/CMakeLists.txt
SET(CPACK_PACKAGE_VERSION_MAJOR 3)
SET(CPACK_PACKAGE_VERSION_MINOR 1)
SET(CPACK_PACKAGE_VERSION_PATCH 7)
In this example, the line to add would be:
mariadb_get_infov@libmariadb_3 3.1.7
Remember to not break the ABI in a stable release!

View File

@@ -3,4 +3,3 @@ usr/lib/*/libmariadbd.a
usr/lib/*/libmariadbd.so
usr/lib/*/libmysqld.a
usr/lib/*/libmysqld.so
usr/lib/*/pkgconfig/mariadb.pc

View File

@@ -0,0 +1,5 @@
# These are from stop word list
spelling-error-in-binary noone no one [usr/lib/x86_64-linux-gnu/libmariadbd.so.19]
spelling-error-in-binary thats that's [usr/lib/x86_64-linux-gnu/libmariadbd.so.19]
spelling-error-in-binary theres there's [usr/lib/x86_64-linux-gnu/libmariadbd.so.19]
spelling-error-in-binary yuR your [usr/lib/x86_64-linux-gnu/libmariadbd.so.19]

View File

@@ -1,3 +1,4 @@
usr/bin/mariabackup
usr/bin/mariadb-backup
usr/bin/mbstream
usr/share/man/man1/mariabackup.1

View File

@@ -1 +0,0 @@
usr/bin/mariadb-backup usr/bin/mariabackup

View File

@@ -0,0 +1,7 @@
# These are from stop word list
spelling-error-in-binary depricated deprecated [usr/bin/mariadb-backup]
spelling-error-in-binary explicite explicit [usr/bin/mariadb-backup]
spelling-error-in-binary noone no one [usr/bin/mariadb-backup]
spelling-error-in-binary thats that's [usr/bin/mariadb-backup]
spelling-error-in-binary theres there's [usr/bin/mariadb-backup]
spelling-error-in-binary yuR your [usr/bin/mariadb-backup]

View File

@@ -1 +0,0 @@
usr/bin/mariadb usr/bin/mysql

View File

@@ -1,6 +1,7 @@
usr/bin/mariadb
usr/bin/mariadb-check
usr/bin/my_print_defaults
usr/bin/mysql
usr/share/man/man1/mariadb-check.1
usr/share/man/man1/mariadb.1
usr/share/man/man1/my_print_defaults.1

View File

@@ -0,0 +1,2 @@
# Needed conflict
conflicts-with-version mysql-client (<< 5.0.51)

View File

@@ -22,6 +22,17 @@ usr/bin/mariadb-slap
usr/bin/mariadb-tzinfo-to-sql
usr/bin/mariadb-waitpid
usr/bin/msql2mysql
usr/bin/mysql_find_rows
usr/bin/mysql_fix_extensions
usr/bin/mysql_waitpid
usr/bin/mysqlaccess
usr/bin/mysqladmin
usr/bin/mysqlcheck
usr/bin/mysqldump
usr/bin/mysqldumpslow
usr/bin/mysqlimport
usr/bin/mysqlshow
usr/bin/mysqlslap
usr/bin/mytop
usr/bin/perror
usr/bin/replace

View File

@@ -1,5 +1,3 @@
usr/bin/mariadb-access usr/bin/mysqlaccess
usr/bin/mariadb-admin usr/bin/mysqladmin
usr/bin/mariadb-check usr/bin/mariadb-analyze
usr/bin/mariadb-check usr/bin/mariadb-optimize
usr/bin/mariadb-check usr/bin/mariadb-repair
@@ -8,15 +6,7 @@ usr/bin/mariadb-check usr/bin/mysqlanalyze
usr/bin/mariadb-check usr/bin/mysqlcheck
usr/bin/mariadb-check usr/bin/mysqloptimize
usr/bin/mariadb-check usr/bin/mysqlrepair
usr/bin/mariadb-dump usr/bin/mysqldump
usr/bin/mariadb-dumpslow usr/bin/mysqldumpslow
usr/bin/mariadb-find-rows usr/bin/mysql_find_rows
usr/bin/mariadb-fix-extensions usr/bin/mysql_fix_extensions
usr/bin/mariadb-import usr/bin/mysqlimport
usr/bin/mariadb-report usr/bin/mysqlreport
usr/bin/mariadb-show usr/bin/mysqlshow
usr/bin/mariadb-slap usr/bin/mysqlslap
usr/bin/mariadb-waitpid usr/bin/mysql_waitpid
usr/share/man/man1/mariadb-check.1.gz usr/share/man/man1/mariadb-analyze.1.gz
usr/share/man/man1/mariadb-check.1.gz usr/share/man/man1/mariadb-optimize.1.gz
usr/share/man/man1/mariadb-check.1.gz usr/share/man/man1/mariadb-repair.1.gz

View File

@@ -0,0 +1,8 @@
# Mainly for BSD family to make sure that perl is found
incorrect-path-for-interpreter /usr/bin/env perl != /usr/bin/perl [usr/bin/mytop]
# Used to determine which shell we have. False-positive situation
bash-term-in-posix-shell '`echo "testing\c"' [usr/bin/mariadb-secure-installation:191]
# Needed outside conflict
conflicts-with-version mysql-client (<< 5.0.51)

Some files were not shown because too many files have changed in this diff Show More