summaryrefslogtreecommitdiff
path: root/sql/sql_class.cc
diff options
context:
space:
mode:
authorunknown <malff/marcsql@weblab.(none)>2007-03-06 10:33:10 -0700
committerunknown <malff/marcsql@weblab.(none)>2007-03-06 10:33:10 -0700
commit0708859ba8a7490cf3f4ba73c667105d2a6edbd7 (patch)
tree89e46d1e53cc7db75cbfc56e2cadc40161bebc1e /sql/sql_class.cc
parentc155c66da65e3d19b2baec7d141648dfd9b55f52 (diff)
parent266a7fff520eb2253226158df236865f2ad16ffe (diff)
downloadmariadb-git-0708859ba8a7490cf3f4ba73c667105d2a6edbd7.tar.gz
Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-8407_b
into weblab.(none):/home/marcsql/TREE/mysql-5.1-8407-merge mysql-test/r/information_schema_db.result: Auto merged mysql-test/r/view.result: Auto merged mysql-test/t/sp.test: Auto merged sql/lock.cc: Auto merged sql/mysqld.cc: Auto merged sql/sp_head.cc: Auto merged sql/sp_head.h: Auto merged sql/sql_base.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_update.cc: Auto merged sql/table.cc: Auto merged sql/table.h: Auto merged
Diffstat (limited to 'sql/sql_class.cc')
-rw-r--r--sql/sql_class.cc32
1 files changed, 32 insertions, 0 deletions
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 6673ed1ddf0..cdb75e763b6 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -309,6 +309,38 @@ THD::THD()
substitute_null_with_insert_id = FALSE;
thr_lock_info_init(&lock_info); /* safety: will be reset after start */
thr_lock_owner_init(&main_lock_id, &lock_info);
+
+ m_internal_handler= NULL;
+}
+
+
+void THD::push_internal_handler(Internal_error_handler *handler)
+{
+ /*
+ TODO: The current implementation is limited to 1 handler at a time only.
+ THD and sp_rcontext need to be modified to use a common handler stack.
+ */
+ DBUG_ASSERT(m_internal_handler == NULL);
+ m_internal_handler= handler;
+}
+
+
+bool THD::handle_error(uint sql_errno,
+ MYSQL_ERROR::enum_warning_level level)
+{
+ if (m_internal_handler)
+ {
+ return m_internal_handler->handle_error(sql_errno, level, this);
+ }
+
+ return FALSE; // 'FALSE', as per coding style
+}
+
+
+void THD::pop_internal_handler()
+{
+ DBUG_ASSERT(m_internal_handler != NULL);
+ m_internal_handler= NULL;
}