diff options
author | unknown <malff/marcsql@weblab.(none)> | 2006-08-17 16:08:51 -0700 |
---|---|---|
committer | unknown <malff/marcsql@weblab.(none)> | 2006-08-17 16:08:51 -0700 |
commit | dec9116f4eec68cc15c4e543d1ad372762d20653 (patch) | |
tree | 9494137031e44102ca4470248d644c2d05c6f868 | |
parent | b747f9732b008efc3dfefb4e0344cfa1b9e14e56 (diff) | |
download | mariadb-git-dec9116f4eec68cc15c4e543d1ad372762d20653.tar.gz |
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.
configure.in:
WL#3432 (Compile the Parser with a --debug --verbose option)
New Automake condition : MYSQL_CONF_DEBUG
sql/Makefile.am:
WL#3432 (Compile the Parser with a --debug --verbose option)
In Debug mode, compile sql_yacc.yy with --debug --verbose
sql/sql_parse.cc:
WL#3432 (Compile the Parser with a --debug --verbose option)
Conditionally turn the bison parser debug on at runtime.
-rw-r--r-- | configure.in | 1 | ||||
-rw-r--r-- | sql/Makefile.am | 7 | ||||
-rw-r--r-- | sql/sql_parse.cc | 23 |
3 files changed, 30 insertions, 1 deletions
diff --git a/configure.in b/configure.in index b49dffcb59f..00a13253166 100644 --- a/configure.in +++ b/configure.in @@ -1667,6 +1667,7 @@ else CFLAGS="$OPTIMIZE_CFLAGS -DDBUG_OFF $CFLAGS" CXXFLAGS="$OPTIMIZE_CXXFLAGS -DDBUG_OFF $CXXFLAGS" fi +AM_CONDITIONAL(MYSQL_CONF_DEBUG, test "x$with_debug" != "xno") # Force static compilation to avoid linking problems/get more speed AC_ARG_WITH(mysqld-ldflags, diff --git a/sql/Makefile.am b/sql/Makefile.am index 8428d6401b5..251fbaa1c9a 100644 --- a/sql/Makefile.am +++ b/sql/Makefile.am @@ -117,9 +117,14 @@ DEFS = -DMYSQL_SERVER \ BUILT_SOURCES = sql_yacc.cc sql_yacc.h lex_hash.h EXTRA_DIST = $(BUILT_SOURCES) -DISTCLEANFILES = lex_hash.h +DISTCLEANFILES = lex_hash.h sql_yacc.output + AM_YFLAGS = -d +if MYSQL_CONF_DEBUG +AM_YFLAGS += --debug --verbose +endif + mysql_tzinfo_to_sql.cc: rm -f mysql_tzinfo_to_sql.cc @LN_CP_F@ $(srcdir)/tztime.cc mysql_tzinfo_to_sql.cc diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 72098fb83e4..ceda7507d23 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -5776,6 +5776,26 @@ void mysql_init_multi_delete(LEX *lex) 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 @@ -5785,6 +5805,9 @@ void mysql_init_multi_delete(LEX *lex) void mysql_parse(THD *thd, char *inBuf, uint length) { DBUG_ENTER("mysql_parse"); + + DBUG_EXECUTE_IF("parser_debug", turn_parser_debug_on();); + mysql_init_query(thd, (uchar*) inBuf, length); if (query_cache_send_result_to_client(thd, inBuf, length) <= 0) { |