Commit 9e460e7a authored by monty@mysql.com's avatar monty@mysql.com

Fixed wrong free in sql_view.cc

mysql-test-run now fails in case of warnings
parent ae83d682
...@@ -157,6 +157,7 @@ sub mtr_report_stats ($) { ...@@ -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 ($) { ...@@ -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 ($) { ...@@ -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 ...@@ -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 () { ...@@ -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 ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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: ...@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment