polardbxengine/mysql-test/include/dd_schema_dd_properties.inc

78 lines
2.3 KiB
PHP

#
# Extract the contents of mysql.dd_propeties and format it in a
# human readable way. This contains various DD related information,
# such as version numbers (removed in the test output to be
# version agnostic), DD table definitions (to be used for opening
# DD tables during upgrade), and SE private data for the DD tables
# (to be used when DD tables are opened on server restart).
#
# Expects the variable $file to be set to indicate the output
# destination. Optionally accepts a filter to be applied.
#
--source include/have_debug.inc
if (!$file)
{
die;
}
# Get hold of the unformatted dd properties.
set debug='+d,skip_dd_table_access_check';
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
eval SELECT * FROM mysql.dd_properties INTO OUTFILE '$file';
set debug='-d,skip_dd_table_access_check';
# Provide variables that we can use in the perl snippets.
--let ENV_FILTER = $filter
--let ENV_FILE = $file
# Break up the contents in pieces that are easier to read. Must
# be done in a couple of passes since we insert newlines. Also
# note that we must use -i.bak to allow inplace editing on win.
exec perl -p -i.bak -e
"s/;/\n/g; s/\\\\*//g;
s/SYSTEM_TABLES\=/SYSTEM_TABLES\=\n/g;
s/\=col0/\=\n col0/g;
s/\=fields/\=\n fields/g;
s/\=elem0/\=\n elem0/g"
$file;
--remove_file $file.bak
exec perl -p -i.bak -e
"s/^elem/ elem/g;
s/^col/ col/g; s/^data/ data/g; s/^version/ version/g;
s/^def/ def/g; s/^indexes/ indexes/g;
s/^foreign_keys/ foreign_keys/g; s/^name/ name/g;
s/^options/ options/g; s/^id/ id/g;
s/^lbl/ lbl/g; s/^pos/ pos/g;
s/^idx/ idx/g; s/^space_id/ space_id/g;
s/^root/ root/g; s/^table_id/ table_id/g;
s/^trx_id/ trx_id/g"
$file;
--remove_file $file.bak
# Remove empty lines, and apply an optional filter to remove lines
# from the contents.
perl;
use strict;
use warnings;
my $file = $ENV{'ENV_FILE'} or die;
my $filter = $ENV{'ENV_FILTER'};
open my $fh, '<', $file or die "unable to open file '$file' : $!";
my @all_lines = grep(/./, <$fh>);
close $fh;
if (length $filter) {
@all_lines = grep(!/$filter/, @all_lines);
}
open $fh, '>', $file or die "unable to open file '$file' : $!";
print $fh @all_lines;
close $fh;
EOF