mirror of
https://github.com/MariaDB/server.git
synced 2025-11-02 11:56:13 +01:00
This is needed to make it easy for users to automatically ignore long char and varchars when using ANALYZE TABLE PERSISTENT. These fields can cause problems as they will consume 'CHARACTERS * MAX_CHARACTER_LENGTH * 2 * number_of_rows' space on disk during analyze, which can easily be much bigger than the analyzed table. This commit adds a new user variable, analyze_max_length, default value 4G. Any field that is bigger than this in bytes, will be ignored by ANALYZE TABLE PERSISTENT unless it is specified in FOR COLUMNS(). While doing this patch, I noticed that we do not skip GEOMETRY columns from ANALYZE TABLE, like we do with BLOB. This should be fixed when merging to the 'main' branch. At the same time we should add a resonable default value for analyze_max_length, probably 1024, like we have for max_sort_length.
74 lines
3 KiB
Text
74 lines
3 KiB
Text
#
|
|
# mysqld --help
|
|
#
|
|
--source include/not_embedded.inc
|
|
--source include/not_asan.inc
|
|
--source include/not_ubsan.inc
|
|
--source include/have_perfschema.inc
|
|
--source include/have_profiling.inc
|
|
--source include/platform.inc
|
|
|
|
#
|
|
# force lower-case-table-names=1 (linux/macosx have different defaults)
|
|
# force symbolic-links=0 (valgrind build has a different default)
|
|
#
|
|
|
|
exec $MYSQLD_BOOTSTRAP_CMD --symbolic-links=0 --log-bin=foo --lower-case-table-names=1 --help --verbose > $MYSQL_TMP_DIR/mysqld--help.txt 2>&1;
|
|
|
|
# The inline perl code below will copy $MYSQL_TMP_DIR/mysqld--help.txt
|
|
# to output, but filter away some variable stuff (e.g. paths).
|
|
|
|
perl;
|
|
# Variables which we don't want to display in the result file since
|
|
# their paths may vary or they may use a default of 4294967295 :
|
|
@skipvars=qw/basedir open-files-limit general-log-file log plugin-dir plugin-maturity
|
|
log-slow-queries pid-file slow-query-log-file log-basename
|
|
datadir slave-load-tmpdir tmpdir socket thread-pool-size
|
|
large-files-support lower-case-file-system system-time-zone
|
|
collation-server character-set-server log-tc-size table-cache
|
|
table-open-cache table-open-cache-instances max-connections
|
|
server-uid tls-version version.* analyze-max-length/;
|
|
|
|
# Plugins which may or may not be there:
|
|
@plugins=qw/innodb archive blackhole federated partition s3
|
|
feedback debug temp-pool ssl des-key-file xtradb sequence
|
|
thread-concurrency super-large-pages mutex-deadlock-detector
|
|
connect null-audit aria oqgraph sphinx thread-handling
|
|
test-sql-discovery query-cache-info
|
|
query-response-time metadata-lock-info locales unix-socket
|
|
wsrep file-key-management cracklib-password-check user-variables
|
|
thread-pool-groups thread-pool-queues thread-pool-stats thread-pool-waits/;
|
|
|
|
# And substitute the content some environment variables with their
|
|
# names:
|
|
@env=qw/MYSQLTEST_VARDIR MYSQL_TEST_DIR MYSQL_CHARSETSDIR MYSQL_SHAREDIR/;
|
|
|
|
$re1=join('|', @skipvars, @plugins);
|
|
$re2=join('|', @plugins);
|
|
$skip=0;
|
|
open(F, '<', "$ENV{MYSQL_TMP_DIR}/mysqld--help.txt") or die;
|
|
print "Windows bug: new line disappears when it is exactly at the right offset.\n";
|
|
while (<F>) {
|
|
next if 1../The following groups are read/;
|
|
# formatting, skip line consisting entirely of dashes and blanks
|
|
next if /^[\- ]+\s?$/;
|
|
next if /Value \(after reading options\)/; # skip table header
|
|
next if /^($re1) /;
|
|
next if /^($re2)-/;
|
|
$skip=0 if /^ -/ or /^$/;
|
|
$skip=1 if / --($re2)\b/;
|
|
y!\\!/!;
|
|
s/[ ]+/ /; # squeeze spaces to remove table formatting
|
|
# fixes for 32-bit
|
|
s/\b4294967295\b/18446744073709551615/;
|
|
s/\b2146435072\b/9223372036853727232/;
|
|
s/\b392192\b/299008/;
|
|
s/\b4294963200\b/18446744073709547520/;
|
|
foreach $var (@env) { s/\Q$ENV{$var}\E/$var/ }
|
|
next if /use --skip-(use-)?symbolic-links to disable/; # for valgrind, again
|
|
next if $skip;
|
|
print;
|
|
}
|
|
close F;
|
|
EOF
|
|
|