Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
1916bf2a
Commit
1916bf2a
authored
May 11, 2023
by
Marko Mäkelä
Browse files
Options
Browse Files
Download
Plain Diff
Merge 10.10 into 10.11
parents
45a879f6
616ced88
Changes
15
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
343 additions
and
178 deletions
+343
-178
debian/mariadb-common.postinst
debian/mariadb-common.postinst
+1
-1
debian/mariadb-common.postrm
debian/mariadb-common.postrm
+1
-1
debian/mariadb-server.postinst
debian/mariadb-server.postinst
+87
-52
debian/mariadb-server.postrm
debian/mariadb-server.postrm
+41
-27
debian/mariadb-server.preinst
debian/mariadb-server.preinst
+61
-46
debian/mariadb-server.prerm
debian/mariadb-server.prerm
+7
-5
mysql-test/main/func_sformat.result
mysql-test/main/func_sformat.result
+24
-1
mysql-test/main/func_sformat.test
mysql-test/main/func_sformat.test
+21
-0
mysql-test/suite/innodb_zip/r/page_size,4k.rdiff
mysql-test/suite/innodb_zip/r/page_size,4k.rdiff
+9
-9
mysql-test/suite/innodb_zip/r/page_size,8k.rdiff
mysql-test/suite/innodb_zip/r/page_size,8k.rdiff
+9
-9
mysql-test/suite/innodb_zip/r/page_size.result
mysql-test/suite/innodb_zip/r/page_size.result
+21
-0
mysql-test/suite/innodb_zip/t/page_size.test
mysql-test/suite/innodb_zip/t/page_size.test
+24
-0
sql/item_strfunc.cc
sql/item_strfunc.cc
+1
-1
sql/sql_select.cc
sql/sql_select.cc
+18
-17
storage/innobase/btr/btr0cur.cc
storage/innobase/btr/btr0cur.cc
+18
-9
No files found.
debian/mariadb-common.postinst
View file @
1916bf2a
debian/mariadb-common.postrm
View file @
1916bf2a
debian/mariadb-server.postinst
View file @
1916bf2a
#!/bin/bash
#!/bin/bash
set
-e
set
-e
# shellcheck source=/dev/null
.
/usr/share/debconf/confmodule
.
/usr/share/debconf/confmodule
if
[
-n
"
$DEBIAN_SCRIPT_DEBUG
"
]
;
then
set
-v
-x
;
DEBIAN_SCRIPT_TRACE
=
1
;
fi
if
[
-n
"
$DEBIAN_SCRIPT_DEBUG
"
]
then
set
-v
-x
DEBIAN_SCRIPT_TRACE
=
1
fi
${
DEBIAN_SCRIPT_TRACE
:+
echo
"#42#DEBUG# RUNNING
$0
$*
"
1>&2
}
${
DEBIAN_SCRIPT_TRACE
:+
echo
"#42#DEBUG# RUNNING
$0
$*
"
1>&2
}
export
PATH
=
$PATH
:/sbin:/usr/sbin:/bin:/usr/bin
export
PATH
=
$PATH
:/sbin:/usr/sbin:/bin:/usr/bin
...
@@ -21,7 +27,9 @@ case "$1" in
...
@@ -21,7 +27,9 @@ case "$1" in
# and because changed configuration options should take effect immediately.
# and because changed configuration options should take effect immediately.
# In case the server wasn't running at all it should be ok if the stop
# In case the server wasn't running at all it should be ok if the stop
# script fails. I can't tell at this point because of the cleaned /run.
# script fails. I can't tell at this point because of the cleaned /run.
set
+e
;
invoke-rc.d mariadb stop
;
set
-e
set
+e
invoke-rc.d mariadb stop
set
-e
# An existing /etc/init.d/mysql might be on the system if there was a
# An existing /etc/init.d/mysql might be on the system if there was a
# previous MySQL or MariaDB installation, since /etc/init.d files are
# previous MySQL or MariaDB installation, since /etc/init.d files are
...
@@ -61,21 +69,26 @@ case "$1" in
...
@@ -61,21 +69,26 @@ case "$1" in
# If the following symlink exists, it is a preserved copy the old data dir
# If the following symlink exists, it is a preserved copy the old data dir
# created by the preinst script during a upgrade that would have otherwise
# created by the preinst script during a upgrade that would have otherwise
# been replaced by an empty mysql dir. This should restore it.
# been replaced by an empty mysql dir. This should restore it.
for
dir
in
DATADIR LOGDIR
;
do
for
dir
in
DATADIR LOGDIR
do
if
[
"
$dir
"
=
"DATADIR"
]
;
then
if
[
"
$dir
"
=
"DATADIR"
]
then
targetdir
=
$mysql_datadir
targetdir
=
$mysql_datadir
else
else
targetdir
=
$mysql_logdir
targetdir
=
$mysql_logdir
fi
fi
savelink
=
"
$mysql_upgradedir
/
$dir
.link"
savelink
=
"
$mysql_upgradedir
/
$dir
.link"
if
[
-L
"
$savelink
"
]
;
then
if
[
-L
"
$savelink
"
]
then
# If the targetdir was a symlink before we upgraded it is supposed
# If the targetdir was a symlink before we upgraded it is supposed
# to be either still be present or not existing anymore now.
# to be either still be present or not existing anymore now.
if
[
-L
"
$targetdir
"
]
;
then
if
[
-L
"
$targetdir
"
]
then
rm
"
$savelink
"
rm
"
$savelink
"
elif
[
!
-d
"
$targetdir
"
]
;
then
elif
[
!
-d
"
$targetdir
"
]
then
mv
"
$savelink
"
"
$targetdir
"
mv
"
$savelink
"
"
$targetdir
"
else
else
# this should never even happen, but just in case...
# this should never even happen, but just in case...
...
@@ -109,17 +122,29 @@ EOF
...
@@ -109,17 +122,29 @@ EOF
# This direct update is needed to enable an authentication mechanism to
# This direct update is needed to enable an authentication mechanism to
# perform mariadb-upgrade, (MDEV-22678). To keep the impact minimal, we
# perform mariadb-upgrade, (MDEV-22678). To keep the impact minimal, we
# skip innodb and set key-buffer-size to 0 as it isn't reused.
# skip innodb and set key-buffer-size to 0 as it isn't reused.
if
[
-f
"
$mysql_datadir
"
/auto.cnf
]
&&
[
-f
"
$mysql_datadir
"
/mysql/user.MYD
]
&&
if
[
-f
"
$mysql_datadir
/auto.cnf"
]
&&
[
!
lsof
-nt
"
$mysql_datadir
"
/mysql/user.MYD
>
/dev/null
]
&&
[
!
-f
"
$mysql_datadir
"
/undo_001
]
;
then
[
-f
"
$mysql_datadir
/mysql/user.MYD"
]
&&
!
lsof
-nt
"
$mysql_datadir
"
/mysql/user.MYD
>
/dev/null
&&
[
!
-f
"
$mysql_datadir
/undo_001"
]
then
echo
"UPDATE mysql.user SET plugin='unix_socket' WHERE plugin='auth_socket';"
|
echo
"UPDATE mysql.user SET plugin='unix_socket' WHERE plugin='auth_socket';"
|
mariadbd
--skip-innodb
--key_buffer_size
=
0
--default-storage-engine
=
MyISAM
--bootstrap
2> /dev/null
mariadbd
--skip-innodb
--key_buffer_size
=
0
--default-storage-engine
=
MyISAM
--bootstrap
2> /dev/null
fi
fi
# Ensure the existence and right permissions for the database and
# Ensure the existence and right permissions for the database and
# log files. Use mkdir option 'Z' to create with correct SELinux context.
# log files. Use mkdir option 'Z' to create with correct SELinux context.
if
[
!
-d
"
$mysql_statedir
"
]
&&
[
!
-L
"
$mysql_statedir
"
]
;
then
mkdir
-Z
"
$mysql_statedir
"
;
fi
if
[
!
-d
"
$mysql_statedir
"
]
&&
[
!
-L
"
$mysql_statedir
"
]
if
[
!
-d
"
$mysql_datadir
"
]
&&
[
!
-L
"
$mysql_datadir
"
]
;
then
mkdir
-Z
"
$mysql_datadir
"
;
fi
then
if
[
!
-d
"
$mysql_logdir
"
]
&&
[
!
-L
"
$mysql_logdir
"
]
;
then
mkdir
-Z
"
$mysql_logdir
"
;
fi
mkdir
-Z
"
$mysql_statedir
"
fi
if
[
!
-d
"
$mysql_datadir
"
]
&&
[
!
-L
"
$mysql_datadir
"
]
then
mkdir
-Z
"
$mysql_datadir
"
fi
if
[
!
-d
"
$mysql_logdir
"
]
&&
[
!
-L
"
$mysql_logdir
"
]
then
mkdir
-Z
"
$mysql_logdir
"
fi
# When creating an ext3 jounal on an already mounted filesystem like e.g.
# When creating an ext3 jounal on an already mounted filesystem like e.g.
# /var/lib/mysql, you get a .journal file that is not modifiable by chown.
# /var/lib/mysql, you get a .journal file that is not modifiable by chown.
# The mysql_statedir must not be writable by the mysql user under any
# The mysql_statedir must not be writable by the mysql user under any
...
@@ -180,26 +205,30 @@ EOF
...
@@ -180,26 +205,30 @@ EOF
# --defaults-file option for tools (for the sake of upgrades)
# --defaults-file option for tools (for the sake of upgrades)
# and thus need /etc/mysql/debian.cnf to exist, even if it's empty.
# and thus need /etc/mysql/debian.cnf to exist, even if it's empty.
# In the long run the goal is to obsolete this file.
# In the long run the goal is to obsolete this file.
dc
=
$mysql_cfgdir
/debian.cnf
;
dc
=
"
$mysql_cfgdir
/debian.cnf"
if
[
!
-d
"
$mysql_cfgdir
"
]
;
then
if
[
!
-d
"
$mysql_cfgdir
"
]
then
install
-o
0
-g
0
-m
0755
-d
$mysql_cfgdir
install
-o
0
-g
0
-m
0755
-d
$mysql_cfgdir
fi
fi
if
[
!
-e
"
$dc
"
]
;
then
if
[
!
-e
"
$dc
"
]
then
cat
/dev/null
>
$dc
cat
/dev/null
>
$dc
echo
"# THIS FILE IS OBSOLETE. STOP USING IT IF POSSIBLE."
>>
$dc
{
echo
"# This file exists only for backwards compatibility for"
>>
$dc
echo
"# THIS FILE IS OBSOLETE. STOP USING IT IF POSSIBLE."
;
echo
"# tools that run '--defaults-file=/etc/mysql/debian.cnf'"
>>
$dc
echo
"# This file exists only for backwards compatibility for"
;
echo
"# and have root level access to the local filesystem."
>>
$dc
echo
"# tools that run '--defaults-file=/etc/mysql/debian.cnf'"
;
echo
"# With those permissions one can run 'mariadb' directly"
>>
$dc
echo
"# and have root level access to the local filesystem."
;
echo
"# anyway thanks to unix socket authentication and hence"
>>
$dc
echo
"# With those permissions one can run 'mariadb' directly"
;
echo
"# this file is useless. See package README for more info."
>>
$dc
echo
"# anyway thanks to unix socket authentication and hence"
;
echo
"[client]"
>>
$dc
echo
"# this file is useless. See package README for more info."
;
echo
"host = localhost"
>>
$dc
echo
"[client]"
;
echo
"user = root"
>>
$dc
echo
"host = localhost"
;
echo
"[mysql_upgrade]"
>>
$dc
echo
"user = root"
;
echo
"host = localhost"
>>
$dc
echo
"[mysql_upgrade]"
;
echo
"user = root"
>>
$dc
echo
"host = localhost"
;
echo
"# THIS FILE WILL BE REMOVED IN A FUTURE DEBIAN RELEASE."
>>
$dc
echo
"user = root"
;
echo
"# THIS FILE WILL BE REMOVED IN A FUTURE DEBIAN RELEASE."
;
}
>>
$dc
fi
fi
# Keep it only root-readable, as it always was
# Keep it only root-readable, as it always was
chown
0:0
$dc
chown
0:0
$dc
...
@@ -212,8 +241,10 @@ EOF
...
@@ -212,8 +241,10 @@ EOF
# on by default) to work both to disable a default profile, and to keep
# on by default) to work both to disable a default profile, and to keep
# any profile installed and maintained by users themselves.
# any profile installed and maintained by users themselves.
profile
=
"/etc/apparmor.d/usr.sbin.mariadbd"
profile
=
"/etc/apparmor.d/usr.sbin.mariadbd"
if
[
-f
"
$profile
"
]
&&
aa-status
--enabled
2>/dev/null
;
then
if
[
-f
"
$profile
"
]
&&
aa-status
--enabled
2>/dev/null
if
grep
-q
/usr/sbin/mariadbd
"
$profile
"
2>/dev/null
;
then
then
if
grep
-q
/usr/sbin/mariadbd
"
$profile
"
2>/dev/null
then
apparmor_parser
-r
"
$profile
"
||
true
apparmor_parser
-r
"
$profile
"
||
true
else
else
echo
"/usr/sbin/mariadbd { }"
| apparmor_parser
--remove
2>/dev/null
||
true
echo
"/usr/sbin/mariadbd { }"
| apparmor_parser
--remove
2>/dev/null
||
true
...
@@ -232,14 +263,14 @@ EOF
...
@@ -232,14 +263,14 @@ EOF
# Note that file cannot be empty, otherwise systemd version in Ubuntu Bionic
# Note that file cannot be empty, otherwise systemd version in Ubuntu Bionic
# will think the service is masked
# will think the service is masked
echo
"# empty placeholder"
>
/etc/systemd/system/mariadb.service.d/migrated-from-my.cnf-settings.conf
echo
"# empty placeholder"
>
/etc/systemd/system/mariadb.service.d/migrated-from-my.cnf-settings.conf
;;
;;
abort-upgrade|abort-remove|abort-configure
)
abort-upgrade|abort-remove|abort-configure
)
;;
;;
triggered
)
triggered
)
if
[
-d
/run/systemd/system
]
;
then
if
[
-d
/run/systemd/system
]
then
systemctl
--system
daemon-reload
systemctl
--system
daemon-reload
else
else
invoke-rc.d mariadb restart
invoke-rc.d mariadb restart
...
@@ -259,19 +290,23 @@ db_stop # in case invoke fails
...
@@ -259,19 +290,23 @@ db_stop # in case invoke fails
# systemctl. If we upgrade from MySQL mysql.service may be masked, which also
# systemctl. If we upgrade from MySQL mysql.service may be masked, which also
# means init.d script is disabled. Unmask mysql service explicitly.
# means init.d script is disabled. Unmask mysql service explicitly.
# Check first that the command exists, to avoid emitting any warning messages.
# Check first that the command exists, to avoid emitting any warning messages.
if
[
-x
"
$(
command
-v
deb-systemd-helper
)
"
]
;
then
if
[
-x
"
$(
command
-v
deb-systemd-helper
)
"
]
then
deb-systemd-helper unmask mysql.service
>
/dev/null
deb-systemd-helper unmask mysql.service
>
/dev/null
fi
fi
#DEBHELPER#
#DEBHELPER#
# Modified dh_systemd_start snippet that's not added automatically
# Modified dh_systemd_start snippet that's not added automatically
if
[
-d
/run/systemd/system
]
;
then
if
[
-d
/run/systemd/system
]
then
systemctl
--system
daemon-reload
>
/dev/null
||
true
systemctl
--system
daemon-reload
>
/dev/null
||
true
deb-systemd-invoke start mariadb.service
>
/dev/null
||
true
deb-systemd-invoke start mariadb.service
>
/dev/null
||
true
# Modified dh_installinit snippet to only run with sysvinit
# Modified dh_installinit snippet to only run with sysvinit
elif
[
-x
"/etc/init.d/mariadb"
]
;
then
elif
[
-x
"/etc/init.d/mariadb"
]
if
[
"
$1
"
=
"configure"
]
||
[
"
$1
"
=
"abort-upgrade"
]
;
then
then
if
[
"
$1
"
=
"configure"
]
||
[
"
$1
"
=
"abort-upgrade"
]
then
invoke-rc.d mariadb start
||
exit
$?
invoke-rc.d mariadb start
||
exit
$?
fi
fi
fi
fi
debian/mariadb-server.postrm
View file @
1916bf2a
#!/bin/bash
#!/bin/bash
set
-e
set
-e
# shellcheck source=/dev/null
.
/usr/share/debconf/confmodule
.
/usr/share/debconf/confmodule
if
[
-n
"
$DEBIAN_SCRIPT_DEBUG
"
]
;
then
set
-v
-x
;
DEBIAN_SCRIPT_TRACE
=
1
;
fi
if
[
-n
"
$DEBIAN_SCRIPT_DEBUG
"
]
then
set
-v
-x
DEBIAN_SCRIPT_TRACE
=
1
fi
${
DEBIAN_SCRIPT_TRACE
:+
echo
"#42#DEBUG# RUNNING
$0
$*
"
1>&2
}
${
DEBIAN_SCRIPT_TRACE
:+
echo
"#42#DEBUG# RUNNING
$0
$*
"
1>&2
}
MYADMIN
=
"/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
MYADMIN
=
"/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
...
@@ -14,7 +20,10 @@ MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
...
@@ -14,7 +20,10 @@ MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
stop_server
()
{
stop_server
()
{
# Return immediately if there are no mysqld processes running
# Return immediately if there are no mysqld processes running
# as there is no point in trying to shutdown in that case.
# as there is no point in trying to shutdown in that case.
if
!
pgrep
-x
--nslist
pid
--ns
$$
"mysqld|mariadbd"
>
/dev/null
;
then return
;
fi
if
!
pgrep
-x
--nslist
pid
--ns
$$
"mysqld|mariadbd"
>
/dev/null
then
return
fi
set
+e
set
+e
invoke-rc.d mariadb stop
invoke-rc.d mariadb stop
...
@@ -23,7 +32,8 @@ stop_server() {
...
@@ -23,7 +32,8 @@ stop_server() {
set
-e
set
-e
# systemctl could emit exit code 100=no init script (fresh install)
# systemctl could emit exit code 100=no init script (fresh install)
if
[
"
$errno
"
!=
0
-a
"
$errno
"
!=
100
]
;
then
if
[
"
$errno
"
!=
0
]
&&
[
"
$errno
"
!=
100
]
then
echo
"Attempt to stop MariaDB/MySQL server returned exitcode
$errno
"
1>&2
echo
"Attempt to stop MariaDB/MySQL server returned exitcode
$errno
"
1>&2
echo
"There is a MariaDB/MySQL server running, but we failed in our attempts to stop it."
1>&2
echo
"There is a MariaDB/MySQL server running, but we failed in our attempts to stop it."
1>&2
echo
"Stop it yourself and try again!"
1>&2
echo
"Stop it yourself and try again!"
1>&2
...
@@ -35,7 +45,8 @@ stop_server() {
...
@@ -35,7 +45,8 @@ stop_server() {
case
"
$1
"
in
case
"
$1
"
in
purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear
)
purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear
)
if
[
-n
"
`
$MYADMIN
ping 2>/dev/null
`
"
]
;
then
if
[
-n
"
$(
$MYADMIN
ping 2>/dev/null
)
"
]
then
stop_server
stop_server
sleep
2
sleep
2
fi
fi
...
@@ -51,7 +62,8 @@ esac
...
@@ -51,7 +62,8 @@ esac
# - Remove the mysql user only after all his owned files are purged.
# - Remove the mysql user only after all his owned files are purged.
# - Cleanup the initscripts only if this was the last provider of them
# - Cleanup the initscripts only if this was the last provider of them
#
#
if
[
"
$1
"
=
"purge"
]
&&
[
-f
"/var/lib/mysql/debian-__MARIADB_MAJOR_VER__.flag"
]
;
then
if
[
"
$1
"
=
"purge"
]
&&
[
-f
"/var/lib/mysql/debian-__MARIADB_MAJOR_VER__.flag"
]
then
# we remove the mysql user only after all his owned files are purged
# we remove the mysql user only after all his owned files are purged
rm
-f
/var/log/mysql.
{
log,err
}{
,.0,.[1234567].gz
}
rm
-f
/var/log/mysql.
{
log,err
}{
,.0,.[1234567].gz
}
rm
-rf
/var/log/mysql
rm
-rf
/var/log/mysql
...
@@ -59,7 +71,8 @@ if [ "$1" = "purge" ] && [ -f "/var/lib/mysql/debian-__MARIADB_MAJOR_VER__.flag"
...
@@ -59,7 +71,8 @@ if [ "$1" = "purge" ] && [ -f "/var/lib/mysql/debian-__MARIADB_MAJOR_VER__.flag"
db_input high
"mariadb-server/postrm_remove_databases"
||
true
db_input high
"mariadb-server/postrm_remove_databases"
||
true
db_go
||
true
db_go
||
true
db_get
"mariadb-server/postrm_remove_databases"
||
true
db_get
"mariadb-server/postrm_remove_databases"
||
true
if
[
"
$RET
"
=
"true"
]
;
then
if
[
"
$RET
"
=
"true"
]
then
# never remove the debian.cnf when the databases are still existing
# never remove the debian.cnf when the databases are still existing
# else we ran into big trouble on the next install!
# else we ran into big trouble on the next install!
rm
-f
/etc/mysql/debian.cnf
rm
-f
/etc/mysql/debian.cnf
...
@@ -89,6 +102,7 @@ fi
...
@@ -89,6 +102,7 @@ fi
#DEBHELPER#
#DEBHELPER#
# Modified dh_systemd_start snippet that's not added automatically
# Modified dh_systemd_start snippet that's not added automatically
if
[
-d
/run/systemd/system
]
;
then
if
[
-d
/run/systemd/system
]
then
systemctl
--system
daemon-reload
>
/dev/null
||
true
systemctl
--system
daemon-reload
>
/dev/null
||
true
fi
fi
debian/mariadb-server.preinst
View file @
1916bf2a
...
@@ -7,14 +7,20 @@
...
@@ -7,14 +7,20 @@
# * <old-preinst> abort-upgrade <new-version>
# * <old-preinst> abort-upgrade <new-version>
#
#
# shellcheck source=/dev/null
.
/usr/share/debconf/confmodule
.
/usr/share/debconf/confmodule
# Just kill the invalid insserv.conf.d directory without fallback
# Just kill the invalid insserv.conf.d directory without fallback
if
[
-d
"/etc/insserv.conf.d/mariadb/"
]
;
then
if
[
-d
"/etc/insserv.conf.d/mariadb/"
]
then
rm
-rf
"/etc/insserv.conf.d/mariadb/"
rm
-rf
"/etc/insserv.conf.d/mariadb/"
fi
fi
if
[
-n
"
$DEBIAN_SCRIPT_DEBUG
"
]
;
then
set
-v
-x
;
DEBIAN_SCRIPT_TRACE
=
1
;
fi
if
[
-n
"
$DEBIAN_SCRIPT_DEBUG
"
]
then
set
-v
-x
DEBIAN_SCRIPT_TRACE
=
1
fi
${
DEBIAN_SCRIPT_TRACE
:+
echo
"#42#DEBUG# RUNNING
$0
$*
"
1>&2
}
${
DEBIAN_SCRIPT_TRACE
:+
echo
"#42#DEBUG# RUNNING
$0
$*
"
1>&2
}
export
PATH
=
$PATH
:/sbin:/usr/sbin:/bin:/usr/bin
export
PATH
=
$PATH
:/sbin:/usr/sbin:/bin:/usr/bin
...
@@ -28,7 +34,10 @@ stop_server() {
...
@@ -28,7 +34,10 @@ stop_server() {
# Return immediately if there are no mysqld processes running on a host
# Return immediately if there are no mysqld processes running on a host
# (leave containerized processes with the same name in other namespaces)
# (leave containerized processes with the same name in other namespaces)
# as there is no point in trying to shutdown in that case.
# as there is no point in trying to shutdown in that case.
if
!
pgrep
-x
--nslist
pid
--ns
$$
"mysqld|mariadbd"
>
/dev/null
;
then return
;
fi
if
!
pgrep
-x
--nslist
pid
--ns
$$
"mysqld|mariadbd"
>
/dev/null
then
return
fi
set
+e
set
+e
invoke-rc.d mariadb stop
invoke-rc.d mariadb stop
...
@@ -37,7 +46,8 @@ stop_server() {
...
@@ -37,7 +46,8 @@ stop_server() {
set
-e
set
-e
# systemctl could emit exit code 100=no init script (fresh install)
# systemctl could emit exit code 100=no init script (fresh install)
if
[
"
$errno
"
!=
0
-a
"
$errno
"
!=
100
]
;
then
if
[
"
$errno
"
!=
0
]
&&
[
"
$errno
"
!=
100
]
then
echo
"Attempt to stop MariaDB/MySQL server returned exitcode
$errno
"
1>&2
echo
"Attempt to stop MariaDB/MySQL server returned exitcode
$errno
"
1>&2
echo
"There is a MariaDB/MySQL server running, but we failed in our attempts to stop it."
1>&2
echo
"There is a MariaDB/MySQL server running, but we failed in our attempts to stop it."
1>&2
echo
"Stop it yourself and try again!"
1>&2
echo
"Stop it yourself and try again!"
1>&2
...
@@ -56,7 +66,7 @@ max_upgradeable_version=5.7
...
@@ -56,7 +66,7 @@ max_upgradeable_version=5.7
# Check if a flag file is found that indicates a previous MariaDB or MySQL
# Check if a flag file is found that indicates a previous MariaDB or MySQL
# version was installed. If multiple flags are found, check which one was
# version was installed. If multiple flags are found, check which one was
# the biggest version number.
# the biggest version number.
for
flag
in
$mysql_datadir
/debian-
*
.flag
for
flag
in
"
$mysql_datadir
"
/debian-
*
.flag
do
do
# The for loop leaves $flag as the query string if there are no results,
# The for loop leaves $flag as the query string if there are no results,
...
@@ -91,7 +101,7 @@ done
...
@@ -91,7 +101,7 @@ done
# Downgrade is detected if the flag version is bigger than $this_version
# Downgrade is detected if the flag version is bigger than $this_version
# (e.g. 10.1 > 10.0) or the flag version is smaller than 10.0 but bigger
# (e.g. 10.1 > 10.0) or the flag version is smaller than 10.0 but bigger
# than $max_upgradeable_version.
# than $max_upgradeable_version.
if
[
!
-z
"
$found_version
"
]
if
[
-n
"
$found_version
"
]
then
then
# MySQL 8.0 in Ubuntu has a bug in packaging and the file is name wrongly
# MySQL 8.0 in Ubuntu has a bug in packaging and the file is name wrongly
...
@@ -133,7 +143,7 @@ fi
...
@@ -133,7 +143,7 @@ fi
# Don't abort dpkg if downgrade is detected (as was done previously).
# Don't abort dpkg if downgrade is detected (as was done previously).
# Instead simply move the old datadir and create a new for this_version.
# Instead simply move the old datadir and create a new for this_version.
if
[
!
-z
"
$downgrade_detected
"
]
if
[
-n
"
$downgrade_detected
"
]
then
then
db_input critical
"mariadb-server/old_data_directory_saved"
||
true
db_input critical
"mariadb-server/old_data_directory_saved"
||
true
db_go
db_go
...
@@ -154,7 +164,8 @@ stop_server
...
@@ -154,7 +164,8 @@ stop_server
# If we use NIS then errors should be tolerated. It's up to the
# If we use NIS then errors should be tolerated. It's up to the
# user to ensure that the mysql user is correctly setup.
# user to ensure that the mysql user is correctly setup.
# Beware that there are two ypwhich one of them needs the 2>/dev/null!
# Beware that there are two ypwhich one of them needs the 2>/dev/null!
if
test
-n
"
$(
which ypwhich 2>/dev/null
)
"
&&
ypwhich
>
/dev/null 2>&1
;
then
if
test
-n
"
$(
which ypwhich 2>/dev/null
)
"
&&
ypwhich
>
/dev/null 2>&1
then
set
+e
set
+e
fi
fi
...
@@ -169,13 +180,15 @@ fi
...
@@ -169,13 +180,15 @@ fi
#
#
# creating mysql group if he isn't already there
# creating mysql group if he isn't already there
if
!
getent group mysql
>
/dev/null
;
then
if
!
getent group mysql
>
/dev/null
then
# Adding system group: mysql.
# Adding system group: mysql.
addgroup
--system
mysql
>
/dev/null
addgroup
--system
mysql
>
/dev/null
fi
fi
# creating mysql user if he isn't already there
# creating mysql user if he isn't already there
if
!
getent passwd mysql
>
/dev/null
;
then
if
!
getent passwd mysql
>
/dev/null
then
# Adding system user: mysql.
# Adding system user: mysql.
adduser
\
adduser
\
--system
\
--system
\
...
@@ -193,7 +206,8 @@ set -e
...
@@ -193,7 +206,8 @@ set -e
# if there's a symlink, let's store where it's pointing, because otherwise
# if there's a symlink, let's store where it's pointing, because otherwise
# it's going to be lost in some situations
# it's going to be lost in some situations
for
dir
in
DATADIR LOGDIR
;
do
for
dir
in
DATADIR LOGDIR
do
checkdir
=
$(
eval echo
"$"
$dir
)
checkdir
=
$(
eval echo
"$"
$dir
)
if
[
-L
"
$checkdir
"
]
;
then
if
[
-L
"
$checkdir
"
]
;
then
# Use mkdir option 'Z' to create with correct SELinux context.
# Use mkdir option 'Z' to create with correct SELinux context.
...
@@ -203,7 +217,8 @@ for dir in DATADIR LOGDIR; do
...
@@ -203,7 +217,8 @@ for dir in DATADIR LOGDIR; do
done
done
# creating mysql home directory
# creating mysql home directory
if
[
!
-d
$mysql_datadir
]
&&
[
!
-L
$mysql_datadir
]
;
then
if
[
!
-d
$mysql_datadir
]
&&
[
!
-L
$mysql_datadir
]
then
# Use mkdir option 'Z' to create with correct SELinux context.
# Use mkdir option 'Z' to create with correct SELinux context.
mkdir
-Z
$mysql_datadir
mkdir
-Z
$mysql_datadir
fi
fi
...
@@ -211,7 +226,8 @@ fi
...
@@ -211,7 +226,8 @@ fi
# As preset blocksize of GNU df is 1024 then available bytes is $df_available_blocks * 1024
# As preset blocksize of GNU df is 1024 then available bytes is $df_available_blocks * 1024
# 4096 blocks is then lower than 4 MB
# 4096 blocks is then lower than 4 MB
df_available_blocks
=
`
LC_ALL
=
C
BLOCKSIZE
=
df
--output
=
avail
"
$datadir
"
|
tail
-n
1
`
df_available_blocks
=
`
LC_ALL
=
C
BLOCKSIZE
=
df
--output
=
avail
"
$datadir
"
|
tail
-n
1
`
if
[
"
$df_available_blocks
"
-lt
"4096"
]
;
then
if
[
"
$df_available_blocks
"
-lt
"4096"
]
then
echo
"ERROR: There's not enough space in
$mysql_datadir
/"
1>&2
echo
"ERROR: There's not enough space in
$mysql_datadir
/"
1>&2
db_stop
db_stop
exit
1
exit
1
...
@@ -230,7 +246,6 @@ find $mysql_datadir -follow -not -group mysql -print0 2>/dev/null \
...
@@ -230,7 +246,6 @@ find $mysql_datadir -follow -not -group mysql -print0 2>/dev/null \
| xargs
-0
--no-run-if-empty
chgrp
mysql
| xargs
-0
--no-run-if-empty
chgrp
mysql
set
-e
set
-e
db_stop
db_stop
#DEBHELPER#
#DEBHELPER#
debian/mariadb-server.prerm
View file @
1916bf2a
...
@@ -4,9 +4,11 @@ set -e
...
@@ -4,9 +4,11 @@ set -e
#DEBHELPER#
#DEBHELPER#
# Modified dh_systemd_start snippet that's not added automatically
# Modified dh_systemd_start snippet that's not added automatically
if
[
-d
/run/systemd/system
]
;
then
if
[
-d
/run/systemd/system
]
then
deb-systemd-invoke stop mariadb.service
>
/dev/null
deb-systemd-invoke stop mariadb.service
>
/dev/null
# Modified dh_installinit snippet to only run with sysvinit
# Modified dh_installinit snippet to only run with sysvinit
elif
[
-x
"/etc/init.d/mariadb"
]
;
then
elif
[
-x
"/etc/init.d/mariadb"
]
then
invoke-rc.d mariadb stop
||
exit
$?
invoke-rc.d mariadb stop
||
exit
$?
fi
fi
mysql-test/main/func_sformat.result
View file @
1916bf2a
...
@@ -434,7 +434,7 @@ create table t1 as select sformat(_ucs2 x'003D007B007D003D', _ucs2 x'04420435044
...
@@ -434,7 +434,7 @@ create table t1 as select sformat(_ucs2 x'003D007B007D003D', _ucs2 x'04420435044
show create table t1;
show create table t1;
Table Create Table
Table Create Table
t1 CREATE TABLE `t1` (
t1 CREATE TABLE `t1` (
`x`
varchar(8)
CHARACTER SET ucs2 COLLATE ucs2_general_ci DEFAULT NULL
`x`
longtext
CHARACTER SET ucs2 COLLATE ucs2_general_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
drop table t1;
drop table t1;
set names latin1;
set names latin1;
...
@@ -468,3 +468,26 @@ set names latin1;
...
@@ -468,3 +468,26 @@ set names latin1;
#
#
# End of 10.7 tests
# End of 10.7 tests
#
#
#
# Start of 10.8 tests
#
#
# MDEV-29646 sformat('Num [{:20}]', 42) gives incorrect result in view
#
create view v1 as select sformat('Num [{:20}]', 42);
select * from v1;
sformat('Num [{:20}]', 42)
Num [ 42]
drop view v1;
create view v1 as SELECT sformat('Square root of [{:d}] is [{:.20}]', 2, sqrt(2));
select * from v1;
sformat('Square root of [{:d}] is [{:.20}]', 2, sqrt(2))
Square root of [2] is [1.4142135623730951455]
drop view v1;
create table t1 (a text, b int, c text);
insert t1 values ('[{} -> {}]', 10, '{}'), ('[{:20} <- {}]', 1, '{:30}');
select sformat(a,b,c) from t1;
sformat(a,b,c)
[10 -> {}]
[ 1 <- {:30}]
drop table t1;
mysql-test/main/func_sformat.test
View file @
1916bf2a
...
@@ -253,3 +253,24 @@ set names latin1;
...
@@ -253,3 +253,24 @@ set names latin1;
echo
#;
echo
#;
echo
# End of 10.7 tests;
echo
# End of 10.7 tests;
echo
#;
echo
#;
echo
#;
echo
# Start of 10.8 tests;
echo
#;
echo
#;
echo
# MDEV-29646 sformat('Num [{:20}]', 42) gives incorrect result in view;
echo
#;
create
view
v1
as
select
sformat
(
'Num [{:20}]'
,
42
);
select
*
from
v1
;
drop
view
v1
;
create
view
v1
as
SELECT
sformat
(
'Square root of [{:d}] is [{:.20}]'
,
2
,
sqrt
(
2
));
select
*
from
v1
;
drop
view
v1
;
create
table
t1
(
a
text
,
b
int
,
c
text
);
insert
t1
values
(
'[{} -> {}]'
,
10
,
'{}'
),
(
'[{:20} <- {}]'
,
1
,
'{:30}'
);
select
sformat
(
a
,
b
,
c
)
from
t1
;
drop
table
t1
;
mysql-test/suite/innodb_zip/r/page_size,4k.rdiff
View file @
1916bf2a
...
@@ -21,9 +21,9 @@
...
@@ -21,9 +21,9 @@
-test/t3 DEFAULT 8192 MYSQLD_DATADIR/test/t3.ibd
-test/t3 DEFAULT 8192 MYSQLD_DATADIR/test/t3.ibd
+test/t3 DEFAULT 2048 MYSQLD_DATADIR/test/t3.ibd
+test/t3 DEFAULT 2048 MYSQLD_DATADIR/test/t3.ibd
test/t4 DEFAULT DEFAULT MYSQLD_DATADIR/test/t4.ibd
test/t4 DEFAULT DEFAULT MYSQLD_DATADIR/test/t4.ibd
innodb_temporary DEFAULT DEFAULT MYSQLD_DATADIR/ibtmp1
DROP TABLE t1, t2, t3, t4;
DROP TABLE t1, t2, t3, t4;
# Test 4) The maximum row size is dependent upon the page size.
@@ -52,141 +52,90 @@
@@ -51,141 +51,90 @@
SET SESSION innodb_strict_mode = ON;
SET SESSION innodb_strict_mode = ON;
CREATE TABLE t1 (
CREATE TABLE t1 (
c01 char(200), c02 char(200), c03 char(200), c04 char(200), c05 char(200),
c01 char(200), c02 char(200), c03 char(200), c04 char(200), c05 char(200),
...
@@ -211,7 +211,7 @@
...
@@ -211,7 +211,7 @@
ALTER TABLE t1 KEY_BLOCK_SIZE=4;
ALTER TABLE t1 KEY_BLOCK_SIZE=4;
SHOW WARNINGS;
SHOW WARNINGS;
Level Code Message
Level Code Message
@@ -21
7,15 +166
,21 @@
@@ -21
8,15 +167
,21 @@
DROP TABLE t1;
DROP TABLE t1;
SET SESSION innodb_strict_mode = OFF;
SET SESSION innodb_strict_mode = OFF;
CREATE TABLE t1 (i int) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=16;
CREATE TABLE t1 (i int) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=16;
...
@@ -233,7 +233,7 @@
...
@@ -233,7 +233,7 @@
SELECT table_name, row_format, create_options
SELECT table_name, row_format, create_options
FROM information_schema.tables WHERE table_name = 't1';
FROM information_schema.tables WHERE table_name = 't1';
table_name row_format create_options
table_name row_format create_options
@@ -2
69,6 +224
,7 @@
@@ -2
70,6 +225
,7 @@
ERROR HY000: Can't create table `test`.`t4` (errno: 140 "Wrong create options")
ERROR HY000: Can't create table `test`.`t4` (errno: 140 "Wrong create options")
SHOW WARNINGS;
SHOW WARNINGS;
Level Code Message
Level Code Message
...
@@ -241,7 +241,7 @@
...
@@ -241,7 +241,7 @@
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
Error 1005 Can't create table `test`.`t4` (errno: 140 "Wrong create options")
Error 1005 Can't create table `test`.`t4` (errno: 140 "Wrong create options")
Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
@@ -27
6,105 +232
,11 @@
@@ -27
7,105 +233
,11 @@
ERROR HY000: Can't create table `test`.`t5` (errno: 140 "Wrong create options")
ERROR HY000: Can't create table `test`.`t5` (errno: 140 "Wrong create options")
SHOW WARNINGS;
SHOW WARNINGS;
Level Code Message
Level Code Message
...
@@ -348,7 +348,7 @@
...
@@ -348,7 +348,7 @@
# Test 8) Test creating a table that could lead to undo log overflow.
# Test 8) Test creating a table that could lead to undo log overflow.
CREATE TABLE t1(a blob,b blob,c blob,d blob,e blob,f blob,g blob,
CREATE TABLE t1(a blob,b blob,c blob,d blob,e blob,f blob,g blob,
h blob,i blob,j blob,k blob,l blob,m blob,n blob,
h blob,i blob,j blob,k blob,l blob,m blob,n blob,
@@ -3
89,10 +251
,6 @@
@@ -3
90,10 +252
,6 @@
UPDATE t1 SET a=@b,b=@b,c=@b,d=@b,e=@b,f=@b,g=@b,h=@b,i=@b,j=@b,
UPDATE t1 SET a=@b,b=@b,c=@b,d=@b,e=@b,f=@b,g=@b,h=@b,i=@b,j=@b,
k=@b,l=@b,m=@b,n=@b,o=@b,p=@b,q=@b,r=@b,s=@b,t=@b,u=@b;
k=@b,l=@b,m=@b,n=@b,o=@b,p=@b,q=@b,r=@b,s=@b,t=@b,u=@b;
CREATE INDEX t1a ON t1 (a(767));
CREATE INDEX t1a ON t1 (a(767));
...
@@ -359,7 +359,7 @@
...
@@ -359,7 +359,7 @@
UPDATE t1 SET a=@c,b=@c,c=@c,d=@c,e=@c,f=@c,g=@c,h=@c,i=@c,j=@c,
UPDATE t1 SET a=@c,b=@c,c=@c,d=@c,e=@c,f=@c,g=@c,h=@c,i=@c,j=@c,
k=@c,l=@c,m=@c,n=@c,o=@c,p=@c,q=@c,r=@c,s=@c,t=@c,u=@c;
k=@c,l=@c,m=@c,n=@c,o=@c,p=@c,q=@c,r=@c,s=@c,t=@c,u=@c;
CREATE INDEX t1f ON t1 (f(767));
CREATE INDEX t1f ON t1 (f(767));
@@ -40
7,37 +265
,15 @@
@@ -40
8,37 +266
,15 @@
COMMIT;
COMMIT;
CREATE INDEX t1g ON t1 (g(767));
CREATE INDEX t1g ON t1 (g(767));
UPDATE t1 SET g=@e;
UPDATE t1 SET g=@e;
...
@@ -401,7 +401,7 @@
...
@@ -401,7 +401,7 @@
SHOW CREATE TABLE t1;
SHOW CREATE TABLE t1;
Table Create Table
Table Create Table
t1 CREATE TABLE `t1` (
t1 CREATE TABLE `t1` (
@@ -46
3,28 +299
,12 @@
@@ -46
4,28 +300
,12 @@
`t` blob DEFAULT NULL,
`t` blob DEFAULT NULL,
`u` blob DEFAULT NULL,
`u` blob DEFAULT NULL,
KEY `t1a` (`a`(767)),
KEY `t1a` (`a`(767)),
...
@@ -432,7 +432,7 @@
...
@@ -432,7 +432,7 @@
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci ROW_FORMAT=DYNAMIC
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci ROW_FORMAT=DYNAMIC
DROP TABLE t1;
DROP TABLE t1;
# Bug#12547647 UPDATE LOGGING COULD EXCEED LOG PAGE SIZE
# Bug#12547647 UPDATE LOGGING COULD EXCEED LOG PAGE SIZE
@@ -5
69,27 +389
,25 @@
@@ -5
70,27 +390
,25 @@
DROP TABLE t1;
DROP TABLE t1;
CREATE TABLE t1(
CREATE TABLE t1(
c text NOT NULL, d text NOT NULL,
c text NOT NULL, d text NOT NULL,
...
...
mysql-test/suite/innodb_zip/r/page_size,8k.rdiff
View file @
1916bf2a
...
@@ -21,9 +21,9 @@
...
@@ -21,9 +21,9 @@
-test/t3 DEFAULT 8192 MYSQLD_DATADIR/test/t3.ibd
-test/t3 DEFAULT 8192 MYSQLD_DATADIR/test/t3.ibd
+test/t3 DEFAULT 4096 MYSQLD_DATADIR/test/t3.ibd
+test/t3 DEFAULT 4096 MYSQLD_DATADIR/test/t3.ibd
test/t4 DEFAULT DEFAULT MYSQLD_DATADIR/test/t4.ibd
test/t4 DEFAULT DEFAULT MYSQLD_DATADIR/test/t4.ibd
innodb_temporary DEFAULT DEFAULT MYSQLD_DATADIR/ibtmp1
DROP TABLE t1, t2, t3, t4;
DROP TABLE t1, t2, t3, t4;
# Test 4) The maximum row size is dependent upon the page size.
@@ -54,133 +54,97 @@
@@ -53,133 +53,97 @@
c01 char(200), c02 char(200), c03 char(200), c04 char(200), c05 char(200),
c01 char(200), c02 char(200), c03 char(200), c04 char(200), c05 char(200),
c06 char(200), c07 char(200), c08 char(200), c09 char(200), c10 char(200),
c06 char(200), c07 char(200), c08 char(200), c09 char(200), c10 char(200),
c11 char(200), c12 char(200), c13 char(200), c14 char(200), c15 char(200),
c11 char(200), c12 char(200), c13 char(200), c14 char(200), c15 char(200),
...
@@ -199,7 +199,7 @@
...
@@ -199,7 +199,7 @@
SHOW WARNINGS;
SHOW WARNINGS;
Level Code Message
Level Code Message
SELECT table_name, row_format, create_options
SELECT table_name, row_format, create_options
@@ -21
7,8 +181
,11 @@
@@ -21
8,8 +182
,11 @@
DROP TABLE t1;
DROP TABLE t1;
SET SESSION innodb_strict_mode = OFF;
SET SESSION innodb_strict_mode = OFF;
CREATE TABLE t1 (i int) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=16;
CREATE TABLE t1 (i int) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=16;
...
@@ -211,7 +211,7 @@
...
@@ -211,7 +211,7 @@
SELECT table_name, row_format, create_options
SELECT table_name, row_format, create_options
FROM information_schema.tables WHERE table_name = 't1';
FROM information_schema.tables WHERE table_name = 't1';
table_name row_format create_options
table_name row_format create_options
@@ -27
6,105 +243
,11 @@
@@ -27
7,105 +244
,11 @@
ERROR HY000: Can't create table `test`.`t5` (errno: 140 "Wrong create options")
ERROR HY000: Can't create table `test`.`t5` (errno: 140 "Wrong create options")
SHOW WARNINGS;
SHOW WARNINGS;
Level Code Message
Level Code Message
...
@@ -318,7 +318,7 @@
...
@@ -318,7 +318,7 @@
# Test 8) Test creating a table that could lead to undo log overflow.
# Test 8) Test creating a table that could lead to undo log overflow.
CREATE TABLE t1(a blob,b blob,c blob,d blob,e blob,f blob,g blob,
CREATE TABLE t1(a blob,b blob,c blob,d blob,e blob,f blob,g blob,
h blob,i blob,j blob,k blob,l blob,m blob,n blob,
h blob,i blob,j blob,k blob,l blob,m blob,n blob,
@@ -3
89,10 +262
,6 @@
@@ -3
90,10 +263
,6 @@
UPDATE t1 SET a=@b,b=@b,c=@b,d=@b,e=@b,f=@b,g=@b,h=@b,i=@b,j=@b,
UPDATE t1 SET a=@b,b=@b,c=@b,d=@b,e=@b,f=@b,g=@b,h=@b,i=@b,j=@b,
k=@b,l=@b,m=@b,n=@b,o=@b,p=@b,q=@b,r=@b,s=@b,t=@b,u=@b;
k=@b,l=@b,m=@b,n=@b,o=@b,p=@b,q=@b,r=@b,s=@b,t=@b,u=@b;
CREATE INDEX t1a ON t1 (a(767));
CREATE INDEX t1a ON t1 (a(767));
...
@@ -329,7 +329,7 @@
...
@@ -329,7 +329,7 @@
UPDATE t1 SET a=@c,b=@c,c=@c,d=@c,e=@c,f=@c,g=@c,h=@c,i=@c,j=@c,
UPDATE t1 SET a=@c,b=@c,c=@c,d=@c,e=@c,f=@c,g=@c,h=@c,i=@c,j=@c,
k=@c,l=@c,m=@c,n=@c,o=@c,p=@c,q=@c,r=@c,s=@c,t=@c,u=@c;
k=@c,l=@c,m=@c,n=@c,o=@c,p=@c,q=@c,r=@c,s=@c,t=@c,u=@c;
CREATE INDEX t1f ON t1 (f(767));
CREATE INDEX t1f ON t1 (f(767));
@@ -40
7,30 +276
,6 @@
@@ -40
8,30 +277
,6 @@
COMMIT;
COMMIT;
CREATE INDEX t1g ON t1 (g(767));
CREATE INDEX t1g ON t1 (g(767));
UPDATE t1 SET g=@e;
UPDATE t1 SET g=@e;
...
@@ -360,7 +360,7 @@
...
@@ -360,7 +360,7 @@
CREATE INDEX t1t ON t1 (t(767));
CREATE INDEX t1t ON t1 (t(767));
BEGIN;
BEGIN;
UPDATE t1 SET t=@e;
UPDATE t1 SET t=@e;
@@ -46
3,24 +308
,8 @@
@@ -46
4,24 +309
,8 @@
`t` blob DEFAULT NULL,
`t` blob DEFAULT NULL,
`u` blob DEFAULT NULL,
`u` blob DEFAULT NULL,
KEY `t1a` (`a`(767)),
KEY `t1a` (`a`(767)),
...
@@ -385,7 +385,7 @@
...
@@ -385,7 +385,7 @@
KEY `t1t` (`t`(767)),
KEY `t1t` (`t`(767)),
KEY `t1u` (`u`(767)),
KEY `t1u` (`u`(767)),
KEY `t1ut` (`u`(767),`t`(767)),
KEY `t1ut` (`u`(767),`t`(767)),
@@ -57
2,14 +401
,14 @@
@@ -57
3,14 +402
,14 @@
PRIMARY KEY (c(767),d(767)))
PRIMARY KEY (c(767),d(767)))
ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1 CHARSET=ASCII;
ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1 CHARSET=ASCII;
Warnings:
Warnings:
...
@@ -402,7 +402,7 @@
...
@@ -402,7 +402,7 @@
DROP TABLE t1;
DROP TABLE t1;
CREATE TABLE t1(
CREATE TABLE t1(
c text NOT NULL, d text NOT NULL,
c text NOT NULL, d text NOT NULL,
@@ -5
89,7 +418
,7 @@
@@ -5
90,7 +419
,7 @@
CREATE TABLE t1(c text, PRIMARY KEY (c(440)))
CREATE TABLE t1(c text, PRIMARY KEY (c(440)))
ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1 CHARSET=ASCII;
ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1 CHARSET=ASCII;
Warnings:
Warnings:
...
...
mysql-test/suite/innodb_zip/r/page_size.result
View file @
1916bf2a
...
@@ -608,4 +608,25 @@ SET GLOBAL innodb_compression_level=0;
...
@@ -608,4 +608,25 @@ SET GLOBAL innodb_compression_level=0;
INSERT INTO t1 VALUES ('');
INSERT INTO t1 VALUES ('');
SET GLOBAL innodb_compression_level= @save_innodb_compression_level;
SET GLOBAL innodb_compression_level= @save_innodb_compression_level;
DROP TABLE t1;
DROP TABLE t1;
#
# MDEV-31158 Assertion ...MTR_MEMO_X_LOCKED in btr_attach_half_pages()
#
SET @save_compression_level=@@GLOBAL.innodb_compression_level;
SET GLOBAL innodb_compression_level=0;
CREATE TEMPORARY TABLE t(a SERIAL, prefix VARBINARY(4), pad INT);
INSERT INTO t(prefix, pad) VALUES
(_binary 0xff,160),('',19),(_binary 0x0001,253),(_binary 0x0b11,169),
(_binary 0x0b010001,23),(_binary 0x0b100001,251),(_binary 0x0d,163),
(_binary 0xb3,254),(_binary 0x96,254),(_binary 0xeb,61),
(_binary 0xf231,253),(_binary 0x1db0,253),(_binary 0x0005,101),
(_binary 0x6370,253),(_binary 0x0b12,112),(_binary 0x0b010002,23),
(_binary 0x0b100002,80),(_binary 0x181984,163),(_binary 0x181926,168),
(_binary 0xe1,176),(_binary 0xe2,187),(_binary 0xe6,254),(_binary 0xbb,51),
(_binary 0x1c,248),(_binary 0x8a,94),(_binary 0x14,254);
CREATE TABLE u(a SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
b VARBINARY(255), KEY(b)) ENGINE=InnoDB
KEY_BLOCK_SIZE=1 ROW_FORMAT=COMPRESSED;
INSERT INTO u SELECT a,CONCAT(prefix,REPEAT(chr(0),pad)) FROM t;
DROP TABLE u, t;
SET GLOBAL innodb_compression_level=@save_compression_level;
# End of 10.6 tests
# End of 10.6 tests
mysql-test/suite/innodb_zip/t/page_size.test
View file @
1916bf2a
...
@@ -888,4 +888,28 @@ INSERT INTO t1 VALUES ('');
...
@@ -888,4 +888,28 @@ INSERT INTO t1 VALUES ('');
SET
GLOBAL
innodb_compression_level
=
@
save_innodb_compression_level
;
SET
GLOBAL
innodb_compression_level
=
@
save_innodb_compression_level
;
DROP
TABLE
t1
;
DROP
TABLE
t1
;
--
echo
#
--
echo
# MDEV-31158 Assertion ...MTR_MEMO_X_LOCKED in btr_attach_half_pages()
--
echo
#
--
source
include
/
have_innodb
.
inc
SET
@
save_compression_level
=@@
GLOBAL
.
innodb_compression_level
;
SET
GLOBAL
innodb_compression_level
=
0
;
CREATE
TEMPORARY
TABLE
t
(
a
SERIAL
,
prefix
VARBINARY
(
4
),
pad
INT
);
INSERT
INTO
t
(
prefix
,
pad
)
VALUES
(
_binary
0xff
,
160
),(
''
,
19
),(
_binary
0x0001
,
253
),(
_binary
0x0b11
,
169
),
(
_binary
0x0b010001
,
23
),(
_binary
0x0b100001
,
251
),(
_binary
0x0d
,
163
),
(
_binary
0xb3
,
254
),(
_binary
0x96
,
254
),(
_binary
0xeb
,
61
),
(
_binary
0xf231
,
253
),(
_binary
0x1db0
,
253
),(
_binary
0x0005
,
101
),
(
_binary
0x6370
,
253
),(
_binary
0x0b12
,
112
),(
_binary
0x0b010002
,
23
),
(
_binary
0x0b100002
,
80
),(
_binary
0x181984
,
163
),(
_binary
0x181926
,
168
),
(
_binary
0xe1
,
176
),(
_binary
0xe2
,
187
),(
_binary
0xe6
,
254
),(
_binary
0xbb
,
51
),
(
_binary
0x1c
,
248
),(
_binary
0x8a
,
94
),(
_binary
0x14
,
254
);
CREATE
TABLE
u
(
a
SMALLINT
UNSIGNED
PRIMARY
KEY
AUTO_INCREMENT
,
b
VARBINARY
(
255
),
KEY
(
b
))
ENGINE
=
InnoDB
KEY_BLOCK_SIZE
=
1
ROW_FORMAT
=
COMPRESSED
;
INSERT
INTO
u
SELECT
a
,
CONCAT
(
prefix
,
REPEAT
(
chr
(
0
),
pad
))
FROM
t
;
DROP
TABLE
u
,
t
;
SET
GLOBAL
innodb_compression_level
=@
save_compression_level
;
--
echo
# End of 10.6 tests
--
echo
# End of 10.6 tests
sql/item_strfunc.cc
View file @
1916bf2a
...
@@ -1373,13 +1373,13 @@ bool Item_func_sformat::fix_length_and_dec(THD *thd)
...
@@ -1373,13 +1373,13 @@ bool Item_func_sformat::fix_length_and_dec(THD *thd)
for
(
uint
i
=
0
;
i
<
arg_count
;
i
++
)
for
(
uint
i
=
0
;
i
<
arg_count
;
i
++
)
{
{
char_length
+=
args
[
i
]
->
max_char_length
();
if
(
args
[
i
]
->
result_type
()
==
STRING_RESULT
&&
if
(
args
[
i
]
->
result_type
()
==
STRING_RESULT
&&
Type_std_attributes
::
agg_item_set_converter
(
c
,
func_name_cstring
(),
Type_std_attributes
::
agg_item_set_converter
(
c
,
func_name_cstring
(),
args
+
i
,
1
,
flags
,
1
))
args
+
i
,
1
,
flags
,
1
))
return
TRUE
;
return
TRUE
;
}
}
char_length
=
MAX_BLOB_WIDTH
;
fix_char_length_ulonglong
(
char_length
);
fix_char_length_ulonglong
(
char_length
);
return
FALSE
;
return
FALSE
;
}
}
...
...
sql/sql_select.cc
View file @
1916bf2a
...
@@ -8646,9 +8646,10 @@ best_access_path(JOIN *join,
...
@@ -8646,9 +8646,10 @@ best_access_path(JOIN *join,
fanout= hash_join_fanout(join, s, remaining_tables, rnd_records,
fanout= hash_join_fanout(join, s, remaining_tables, rnd_records,
hj_start_key, &stats_found);
hj_start_key, &stats_found);
join_sel= 1.0; // Don't do the "10% heuristic"
join_sel= 1.0; // Don't do the "10% heuristic"
if (stats_found)
goto fanout_computed;
}
}
if (!stats_found)
{
/*
/*
No OPTIMIZER_SWITCH_HASH_JOIN_CARDINALITY or no field statistics
No OPTIMIZER_SWITCH_HASH_JOIN_CARDINALITY or no field statistics
found.
found.
...
@@ -8663,8 +8664,8 @@ best_access_path(JOIN *join,
...
@@ -8663,8 +8664,8 @@ best_access_path(JOIN *join,
rnd_records= use_found_constraint(rnd_records);
rnd_records= use_found_constraint(rnd_records);
fanout= rnd_records;
fanout= rnd_records;
join_sel= 0.1;
join_sel= 0.1;
}
fanout_computed:
tmp= s->quick ? s->quick->read_time : s->scan_time();
tmp= s->quick ? s->quick->read_time : s->scan_time();
double cmp_time= (s->records - rnd_records)/TIME_FOR_COMPARE;
double cmp_time= (s->records - rnd_records)/TIME_FOR_COMPARE;
tmp= COST_ADD(tmp, cmp_time);
tmp= COST_ADD(tmp, cmp_time);
storage/innobase/btr/btr0cur.cc
View file @
1916bf2a
...
@@ -748,18 +748,24 @@ btr_cur_will_modify_tree(
...
@@ -748,18 +748,24 @@ btr_cur_will_modify_tree(
/** Detects whether the modifying record might need a opposite modification
/** Detects whether the modifying record might need a opposite modification
to the intention.
to the intention.
@param page page
@param bpage buffer pool page
@param is_clust whether this is a clustered index
@param lock_intention lock intention for the tree operation
@param lock_intention lock intention for the tree operation
@param node_ptr_max_size the maximum size of a node pointer
@param node_ptr_max_size the maximum size of a node pointer
@param compress_limit BTR_CUR_PAGE_COMPRESS_LIMIT(index)
@param compress_limit BTR_CUR_PAGE_COMPRESS_LIMIT(index)
@param rec record (current node_ptr)
@param rec record (current node_ptr)
@return true if tree modification is needed */
@return true if tree modification is needed */
static
bool
btr_cur_need_opposite_intention
(
const
page_t
*
page
,
static
bool
btr_cur_need_opposite_intention
(
const
buf_page_t
&
bpage
,
bool
is_clust
,
btr_intention_t
lock_intention
,
btr_intention_t
lock_intention
,
ulint
node_ptr_max_size
,
ulint
node_ptr_max_size
,
ulint
compress_limit
,
ulint
compress_limit
,
const
rec_t
*
rec
)
const
rec_t
*
rec
)
{
{
if
(
UNIV_LIKELY_NULL
(
bpage
.
zip
.
data
)
&&
!
page_zip_available
(
&
bpage
.
zip
,
is_clust
,
node_ptr_max_size
,
1
))
return
true
;
const
page_t
*
const
page
=
bpage
.
frame
;
if
(
lock_intention
!=
BTR_INTENTION_INSERT
)
if
(
lock_intention
!=
BTR_INTENTION_INSERT
)
{
{
/* We compensate also for btr_cur_compress_recommendation() */
/* We compensate also for btr_cur_compress_recommendation() */
...
@@ -1343,7 +1349,8 @@ dberr_t btr_cur_t::search_leaf(const dtuple_t *tuple, page_cur_mode_t mode,
...
@@ -1343,7 +1349,8 @@ dberr_t btr_cur_t::search_leaf(const dtuple_t *tuple, page_cur_mode_t mode,
!
btr_block_get
(
*
index
(),
btr_page_get_next
(
block
->
page
.
frame
),
!
btr_block_get
(
*
index
(),
btr_page_get_next
(
block
->
page
.
frame
),
RW_X_LATCH
,
false
,
mtr
,
&
err
))
RW_X_LATCH
,
false
,
mtr
,
&
err
))
goto
func_exit
;
goto
func_exit
;
if
(
btr_cur_need_opposite_intention
(
block
->
page
.
frame
,
lock_intention
,
if
(
btr_cur_need_opposite_intention
(
block
->
page
,
index
()
->
is_clust
(),
lock_intention
,
node_ptr_max_size
,
compress_limit
,
node_ptr_max_size
,
compress_limit
,
page_cur
.
rec
))
page_cur
.
rec
))
goto
need_opposite_intention
;
goto
need_opposite_intention
;
...
@@ -1399,7 +1406,8 @@ dberr_t btr_cur_t::search_leaf(const dtuple_t *tuple, page_cur_mode_t mode,
...
@@ -1399,7 +1406,8 @@ dberr_t btr_cur_t::search_leaf(const dtuple_t *tuple, page_cur_mode_t mode,
default:
default:
break
;
break
;
case
BTR_MODIFY_TREE
:
case
BTR_MODIFY_TREE
:
if
(
btr_cur_need_opposite_intention
(
block
->
page
.
frame
,
lock_intention
,
if
(
btr_cur_need_opposite_intention
(
block
->
page
,
index
()
->
is_clust
(),
lock_intention
,
node_ptr_max_size
,
compress_limit
,
node_ptr_max_size
,
compress_limit
,
page_cur
.
rec
))
page_cur
.
rec
))
/* If the rec is the first or last in the page for pessimistic
/* If the rec is the first or last in the page for pessimistic
...
@@ -1949,7 +1957,7 @@ dberr_t btr_cur_t::open_leaf(bool first, dict_index_t *index,
...
@@ -1949,7 +1957,7 @@ dberr_t btr_cur_t::open_leaf(bool first, dict_index_t *index,
break
;
break
;
if
(
!
index
->
lock
.
have_x
()
&&
if
(
!
index
->
lock
.
have_x
()
&&
btr_cur_need_opposite_intention
(
block
->
page
.
frame
,
btr_cur_need_opposite_intention
(
block
->
page
,
index
->
is_clust
()
,
lock_intention
,
lock_intention
,
node_ptr_max_size
,
node_ptr_max_size
,
compress_limit
,
page_cur
.
rec
))
compress_limit
,
page_cur
.
rec
))
...
@@ -1996,7 +2004,8 @@ dberr_t btr_cur_t::open_leaf(bool first, dict_index_t *index,
...
@@ -1996,7 +2004,8 @@ dberr_t btr_cur_t::open_leaf(bool first, dict_index_t *index,
ut_ad
(
latch_mode
!=
BTR_MODIFY_TREE
||
upper_rw_latch
==
RW_X_LATCH
);
ut_ad
(
latch_mode
!=
BTR_MODIFY_TREE
||
upper_rw_latch
==
RW_X_LATCH
);
if
(
latch_mode
!=
BTR_MODIFY_TREE
);
if
(
latch_mode
!=
BTR_MODIFY_TREE
);
else
if
(
btr_cur_need_opposite_intention
(
block
->
page
.
frame
,
lock_intention
,
else
if
(
btr_cur_need_opposite_intention
(
block
->
page
,
index
->
is_clust
(),
lock_intention
,
node_ptr_max_size
,
compress_limit
,
node_ptr_max_size
,
compress_limit
,
page_cur
.
rec
))
page_cur
.
rec
))
{
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment