Fixed wrong free in sql_view.cc
mysql-test-run now fails in case of warnings mysql-test/lib/mtr_report.pl: Fail if find warnings mysql-test/mysql-test-run.sh: Fail if find warnings sql/sql_lex.cc: Initalize st_lex properly sql/sql_view.cc: Fixed problem with unaligned memory (wrong free)
This commit is contained in:
parent
94964da31f
commit
afe4715242
@ -157,6 +157,7 @@ sub mtr_report_stats ($) {
|
|||||||
my $tot_passed= 0;
|
my $tot_passed= 0;
|
||||||
my $tot_failed= 0;
|
my $tot_failed= 0;
|
||||||
my $tot_tests= 0;
|
my $tot_tests= 0;
|
||||||
|
my $found_problems= 0; # Some warnings are errors...
|
||||||
|
|
||||||
foreach my $tinfo (@$tests)
|
foreach my $tinfo (@$tests)
|
||||||
{
|
{
|
||||||
@ -214,8 +215,6 @@ sub mtr_report_stats ($) {
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
my $found_problems= 0; # Some warnings are errors...
|
|
||||||
|
|
||||||
# We report different types of problems in order
|
# We report different types of problems in order
|
||||||
foreach my $pattern ( "^Warning:", "^Error:", "^==.* at 0x" )
|
foreach my $pattern ( "^Warning:", "^Error:", "^==.* at 0x" )
|
||||||
{
|
{
|
||||||
@ -266,6 +265,9 @@ sub mtr_report_stats ($) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
print "\n";
|
print "\n";
|
||||||
|
}
|
||||||
|
if ( $tot_failed != 0 || $found_problems)
|
||||||
|
{
|
||||||
mtr_error("there where failing test cases");
|
mtr_error("there where failing test cases");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -199,6 +199,7 @@ TOT_SKIP=0
|
|||||||
TOT_PASS=0
|
TOT_PASS=0
|
||||||
TOT_FAIL=0
|
TOT_FAIL=0
|
||||||
TOT_TEST=0
|
TOT_TEST=0
|
||||||
|
GOT_WARNINGS=0
|
||||||
USERT=0
|
USERT=0
|
||||||
SYST=0
|
SYST=0
|
||||||
REALT=0
|
REALT=0
|
||||||
@ -1023,17 +1024,16 @@ report_stats () {
|
|||||||
| $SED -e 's!Warning: Table:.* on rename!!g' \
|
| $SED -e 's!Warning: Table:.* on rename!!g' \
|
||||||
> $MY_LOG_DIR/warnings.tmp
|
> $MY_LOG_DIR/warnings.tmp
|
||||||
|
|
||||||
found_error=0
|
|
||||||
# Find errors
|
# Find errors
|
||||||
for i in "^Warning:" "^Error:" "^==.* at 0x" "InnoDB: Warning"
|
for i in "^Warning:" "^Error:" "^==.* at 0x" "InnoDB: Warning"
|
||||||
do
|
do
|
||||||
if $GREP "$i" $MY_LOG_DIR/warnings.tmp >> $MY_LOG_DIR/warnings
|
if $GREP "$i" $MY_LOG_DIR/warnings.tmp >> $MY_LOG_DIR/warnings
|
||||||
then
|
then
|
||||||
found_error=1
|
GOT_WARNINGS=1
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
$RM -f $MY_LOG_DIR/warnings.tmp
|
$RM -f $MY_LOG_DIR/warnings.tmp
|
||||||
if [ $found_error = "1" ]
|
if [ $GOT_WARNINGS = "1" ]
|
||||||
then
|
then
|
||||||
echo "WARNING: Got errors/warnings while running tests. Please examine"
|
echo "WARNING: Got errors/warnings while running tests. Please examine"
|
||||||
echo "$MY_LOG_DIR/warnings for details."
|
echo "$MY_LOG_DIR/warnings for details."
|
||||||
@ -2217,6 +2217,8 @@ if [ $TOT_FAIL -ne 0 ]; then
|
|||||||
$ECHO "mysql-test-run in $TEST_MODE mode: *** Failing the test(s):$FAILED_CASES"
|
$ECHO "mysql-test-run in $TEST_MODE mode: *** Failing the test(s):$FAILED_CASES"
|
||||||
$ECHO
|
$ECHO
|
||||||
exit 1
|
exit 1
|
||||||
else
|
|
||||||
exit 0
|
|
||||||
fi
|
fi
|
||||||
|
if [ $GOT_WARNINGS -ne 0 ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
@ -191,8 +191,11 @@ void lex_start(THD *thd, uchar *buf,uint length)
|
|||||||
|
|
||||||
void lex_end(LEX *lex)
|
void lex_end(LEX *lex)
|
||||||
{
|
{
|
||||||
|
DBUG_ENTER("lex_end");
|
||||||
|
DBUG_PRINT("enter", ("lex: 0x%lx", (long) lex));
|
||||||
x_free(lex->yacc_yyss);
|
x_free(lex->yacc_yyss);
|
||||||
x_free(lex->yacc_yyvs);
|
x_free(lex->yacc_yyvs);
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1626,7 +1629,8 @@ void st_select_lex::print_limit(THD *thd, String *str)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
st_lex::st_lex()
|
st_lex::st_lex()
|
||||||
:result(0), sql_command(SQLCOM_END), query_tables_own_last(0)
|
:result(0), yacc_yyss(0), yacc_yyvs(0),
|
||||||
|
sql_command(SQLCOM_END), query_tables_own_last(0)
|
||||||
{
|
{
|
||||||
hash_init(&sroutines, system_charset_info, 0, 0, 0, sp_sroutine_key, 0, 0);
|
hash_init(&sroutines, system_charset_info, 0, 0, 0, sp_sroutine_key, 0, 0);
|
||||||
sroutines_list.empty();
|
sroutines_list.empty();
|
||||||
|
@ -941,7 +941,6 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table)
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!(table->view_tables=
|
if (!(table->view_tables=
|
||||||
(List<TABLE_LIST>*) new(thd->mem_root) List<TABLE_LIST>))
|
(List<TABLE_LIST>*) new(thd->mem_root) List<TABLE_LIST>))
|
||||||
goto err;
|
goto err;
|
||||||
@ -1192,14 +1191,16 @@ ok2:
|
|||||||
old_lex->time_zone_tables_used= thd->lex->time_zone_tables_used;
|
old_lex->time_zone_tables_used= thd->lex->time_zone_tables_used;
|
||||||
result= !table->prelocking_placeholder && table->prepare_security(thd);
|
result= !table->prelocking_placeholder && table->prepare_security(thd);
|
||||||
|
|
||||||
|
lex_end(thd->lex);
|
||||||
end:
|
end:
|
||||||
if (arena)
|
if (arena)
|
||||||
thd->restore_active_arena(arena, &backup);
|
thd->restore_active_arena(arena, &backup);
|
||||||
lex_end(thd->lex);
|
|
||||||
thd->lex= old_lex;
|
thd->lex= old_lex;
|
||||||
DBUG_RETURN(result);
|
DBUG_RETURN(result);
|
||||||
|
|
||||||
err:
|
err:
|
||||||
|
DBUG_ASSERT(thd->lex == table->view);
|
||||||
|
lex_end(thd->lex);
|
||||||
delete table->view;
|
delete table->view;
|
||||||
table->view= 0; // now it is not VIEW placeholder
|
table->view= 0; // now it is not VIEW placeholder
|
||||||
result= 1;
|
result= 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user