WL#3432 (Compile the Parser with a --debug --verbose option)

Changed the automake build process :
- ./configure.in
- ./sql/Makefile.am
to compile an instrumented parser for debug=yes or debug=full builds

Changed the (primary) runtime invocation of the parser :
- sql/sql_parse.cc
to generate bison traces in stderr when the DBUG "parser_debug" flag is set.
parent 472279ce
...@@ -1667,6 +1667,7 @@ else ...@@ -1667,6 +1667,7 @@ else
CFLAGS="$OPTIMIZE_CFLAGS -DDBUG_OFF $CFLAGS" CFLAGS="$OPTIMIZE_CFLAGS -DDBUG_OFF $CFLAGS"
CXXFLAGS="$OPTIMIZE_CXXFLAGS -DDBUG_OFF $CXXFLAGS" CXXFLAGS="$OPTIMIZE_CXXFLAGS -DDBUG_OFF $CXXFLAGS"
fi fi
AM_CONDITIONAL(MYSQL_CONF_DEBUG, test "x$with_debug" != "xno")
# Force static compilation to avoid linking problems/get more speed # Force static compilation to avoid linking problems/get more speed
AC_ARG_WITH(mysqld-ldflags, AC_ARG_WITH(mysqld-ldflags,
......
...@@ -117,9 +117,14 @@ DEFS = -DMYSQL_SERVER \ ...@@ -117,9 +117,14 @@ DEFS = -DMYSQL_SERVER \
BUILT_SOURCES = sql_yacc.cc sql_yacc.h lex_hash.h BUILT_SOURCES = sql_yacc.cc sql_yacc.h lex_hash.h
EXTRA_DIST = $(BUILT_SOURCES) EXTRA_DIST = $(BUILT_SOURCES)
DISTCLEANFILES = lex_hash.h DISTCLEANFILES = lex_hash.h sql_yacc.output
AM_YFLAGS = -d AM_YFLAGS = -d
if MYSQL_CONF_DEBUG
AM_YFLAGS += --debug --verbose
endif
mysql_tzinfo_to_sql.cc: mysql_tzinfo_to_sql.cc:
rm -f mysql_tzinfo_to_sql.cc rm -f mysql_tzinfo_to_sql.cc
@LN_CP_F@ $(srcdir)/tztime.cc mysql_tzinfo_to_sql.cc @LN_CP_F@ $(srcdir)/tztime.cc mysql_tzinfo_to_sql.cc
......
...@@ -5776,6 +5776,26 @@ void mysql_init_multi_delete(LEX *lex) ...@@ -5776,6 +5776,26 @@ void mysql_init_multi_delete(LEX *lex)
lex->query_tables_last= &lex->query_tables; lex->query_tables_last= &lex->query_tables;
} }
#ifndef DBUG_OFF
static void turn_parser_debug_on()
{
/*
MYSQLdebug is in sql/sql_yacc.cc, in bison generated code.
Turning this option on is **VERY** verbose, and should be
used when investigating a syntax error problem only.
The syntax to run with bison traces is as follows :
- Starting a server manually :
mysqld --debug="d,parser_debug" ...
- Running a test :
mysql-test-run.pl --mysqld="--debug=d,parser_debug" ...
The result will be in the process stderr (var/log/master.err)
*/
extern int MYSQLdebug;
MYSQLdebug= 1;
}
#endif
/* /*
When you modify mysql_parse(), you may need to mofify When you modify mysql_parse(), you may need to mofify
...@@ -5785,6 +5805,9 @@ void mysql_init_multi_delete(LEX *lex) ...@@ -5785,6 +5805,9 @@ void mysql_init_multi_delete(LEX *lex)
void mysql_parse(THD *thd, char *inBuf, uint length) void mysql_parse(THD *thd, char *inBuf, uint length)
{ {
DBUG_ENTER("mysql_parse"); DBUG_ENTER("mysql_parse");
DBUG_EXECUTE_IF("parser_debug", turn_parser_debug_on(););
mysql_init_query(thd, (uchar*) inBuf, length); mysql_init_query(thd, (uchar*) inBuf, length);
if (query_cache_send_result_to_client(thd, inBuf, length) <= 0) if (query_cache_send_result_to_client(thd, inBuf, length) <= 0)
{ {
......
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