mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
Merge 5.3 -> 5.5
This commit is contained in:
commit
d7463f8e59
6 changed files with 82 additions and 4 deletions
|
@ -2490,6 +2490,13 @@ sub environment_setup {
|
|||
"$path_client_bindir/perror");
|
||||
$ENV{'MY_PERROR'}= native_path($exe_perror);
|
||||
|
||||
# ----------------------------------------------------
|
||||
# mysql_tzinfo_to_sql
|
||||
# ----------------------------------------------------
|
||||
my $exe_mysql_tzinfo_to_sql= mtr_exe_exists("$basedir/sql$opt_vs_config/mysql_tzinfo_to_sql",
|
||||
"$path_client_bindir/mysql_tzinfo_to_sql");
|
||||
$ENV{'MYSQL_TZINFO_TO_SQL'}= native_path($exe_mysql_tzinfo_to_sql);
|
||||
|
||||
# Create an environment variable to make it possible
|
||||
# to detect that valgrind is being used from test cases
|
||||
$ENV{'VALGRIND_TEST'}= $opt_valgrind;
|
||||
|
|
22
mysql-test/r/mysql_tzinfo_to_sql_symlink.result
Normal file
22
mysql-test/r/mysql_tzinfo_to_sql_symlink.result
Normal file
|
@ -0,0 +1,22 @@
|
|||
#
|
||||
# MDEV-5226 mysql_tzinfo_to_sql errors with tzdata 2013f and above
|
||||
#
|
||||
TRUNCATE TABLE time_zone;
|
||||
TRUNCATE TABLE time_zone_name;
|
||||
TRUNCATE TABLE time_zone_transition;
|
||||
TRUNCATE TABLE time_zone_transition_type;
|
||||
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
|
||||
SET @time_zone_id= LAST_INSERT_ID();
|
||||
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('GMT', @time_zone_id);
|
||||
INSERT INTO time_zone_transition_type (Time_zone_id, Transition_type_id, Offset, Is_DST, Abbreviation) VALUES
|
||||
(@time_zone_id, 0, 0, 0, 'GMT')
|
||||
;
|
||||
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
|
||||
SET @time_zone_id= LAST_INSERT_ID();
|
||||
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('posix/GMT', @time_zone_id);
|
||||
INSERT INTO time_zone_transition_type (Time_zone_id, Transition_type_id, Offset, Is_DST, Abbreviation) VALUES
|
||||
(@time_zone_id, 0, 0, 0, 'GMT')
|
||||
;
|
||||
Warning: Skipping directory 'MYSQLTEST_VARDIR/zoneinfo/posix/posix': to avoid infinite symlink recursion.
|
||||
ALTER TABLE time_zone_transition ORDER BY Time_zone_id, Transition_time;
|
||||
ALTER TABLE time_zone_transition_type ORDER BY Time_zone_id, Transition_type_id;
|
BIN
mysql-test/std_data/zoneinfo/GMT
Normal file
BIN
mysql-test/std_data/zoneinfo/GMT
Normal file
Binary file not shown.
15
mysql-test/t/mysql_tzinfo_to_sql_symlink.test
Normal file
15
mysql-test/t/mysql_tzinfo_to_sql_symlink.test
Normal file
|
@ -0,0 +1,15 @@
|
|||
--source include/have_symlink.inc
|
||||
--source include/not_windows.inc
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-5226 mysql_tzinfo_to_sql errors with tzdata 2013f and above
|
||||
--echo #
|
||||
|
||||
--exec mkdir $MYSQLTEST_VARDIR/zoneinfo
|
||||
--exec ln -s $MYSQLTEST_VARDIR/zoneinfo $MYSQLTEST_VARDIR/zoneinfo/posix
|
||||
--copy_file std_data/zoneinfo/GMT $MYSQLTEST_VARDIR/zoneinfo/GMT
|
||||
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
--exec $MYSQL_TZINFO_TO_SQL $MYSQLTEST_VARDIR/zoneinfo 2>&1
|
||||
|
||||
--exec rm -rf $MYSQLTEST_VARDIR/zoneinfo
|
|
@ -1307,7 +1307,6 @@ static bool replace_where_subcondition(JOIN *join, Item **expr,
|
|||
}
|
||||
else if (item->type() == Item::COND_ITEM)
|
||||
{
|
||||
DBUG_ASSERT(!do_fix_fields || !(*expr)->fixed);
|
||||
replace_where_subcondition(join, li.ref(),
|
||||
old_cond, new_cond,
|
||||
do_fix_fields);
|
||||
|
|
|
@ -2494,7 +2494,7 @@ char *root_name_end;
|
|||
|
||||
*/
|
||||
my_bool
|
||||
scan_tz_dir(char * name_end)
|
||||
scan_tz_dir(char * name_end, uint symlink_recursion_level)
|
||||
{
|
||||
MY_DIR *cur_dir;
|
||||
char *name_end_tmp;
|
||||
|
@ -2514,7 +2514,32 @@ scan_tz_dir(char * name_end)
|
|||
|
||||
if (MY_S_ISDIR(cur_dir->dir_entry[i].mystat->st_mode))
|
||||
{
|
||||
if (scan_tz_dir(name_end_tmp))
|
||||
my_bool is_symlink;
|
||||
if ((is_symlink= my_is_symlink(fullname)) &&
|
||||
symlink_recursion_level > 0)
|
||||
{
|
||||
/*
|
||||
The timezone definition data in some Linux distributions
|
||||
(e.g. the "timezone-data-2013f" package in Gentoo)
|
||||
may have synlimks like:
|
||||
/usr/share/zoneinfo/posix/ -> /usr/share/zoneinfo/,
|
||||
so the same timezone files are available under two names
|
||||
(e.g. "CET" and "posix/CET").
|
||||
|
||||
We allow one level of symlink recursion for backward
|
||||
compatibility with earlier timezone data packages that have
|
||||
duplicate copies of the same timezone files inside the root
|
||||
directory and the "posix" subdirectory (instead of symlinking).
|
||||
This makes "posix/CET" still available, but helps to avoid
|
||||
following such symlinks infinitely:
|
||||
/usr/share/zoneinfo/posix/posix/posix/.../posix/
|
||||
*/
|
||||
fflush(stdout);
|
||||
fprintf(stderr, "Warning: Skipping directory '%s': "
|
||||
"to avoid infinite symlink recursion.\n", fullname);
|
||||
continue;
|
||||
}
|
||||
if (scan_tz_dir(name_end_tmp, symlink_recursion_level + is_symlink))
|
||||
{
|
||||
my_dirend(cur_dir);
|
||||
return 1;
|
||||
|
@ -2526,14 +2551,20 @@ scan_tz_dir(char * name_end)
|
|||
if (!tz_load(fullname, &tz_info, &tz_storage))
|
||||
print_tz_as_sql(root_name_end + 1, &tz_info);
|
||||
else
|
||||
{
|
||||
fflush(stdout);
|
||||
fprintf(stderr,
|
||||
"Warning: Unable to load '%s' as time zone. Skipping it.\n",
|
||||
fullname);
|
||||
}
|
||||
free_root(&tz_storage, MYF(0));
|
||||
}
|
||||
else
|
||||
{
|
||||
fflush(stdout);
|
||||
fprintf(stderr, "Warning: '%s' is not regular file or directory\n",
|
||||
fullname);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2566,8 +2597,9 @@ main(int argc, char **argv)
|
|||
printf("TRUNCATE TABLE time_zone_transition;\n");
|
||||
printf("TRUNCATE TABLE time_zone_transition_type;\n");
|
||||
|
||||
if (scan_tz_dir(root_name_end))
|
||||
if (scan_tz_dir(root_name_end, 0))
|
||||
{
|
||||
fflush(stdout);
|
||||
fprintf(stderr, "There were fatal errors during processing "
|
||||
"of zoneinfo directory\n");
|
||||
return 1;
|
||||
|
@ -2586,6 +2618,7 @@ main(int argc, char **argv)
|
|||
{
|
||||
if (tz_load(argv[2], &tz_info, &tz_storage))
|
||||
{
|
||||
fflush(stdout);
|
||||
fprintf(stderr, "Problems with zoneinfo file '%s'\n", argv[2]);
|
||||
return 1;
|
||||
}
|
||||
|
@ -2595,6 +2628,7 @@ main(int argc, char **argv)
|
|||
{
|
||||
if (tz_load(argv[1], &tz_info, &tz_storage))
|
||||
{
|
||||
fflush(stdout);
|
||||
fprintf(stderr, "Problems with zoneinfo file '%s'\n", argv[2]);
|
||||
return 1;
|
||||
}
|
||||
|
@ -2604,6 +2638,7 @@ main(int argc, char **argv)
|
|||
free_root(&tz_storage, MYF(0));
|
||||
}
|
||||
|
||||
my_end(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue