1
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
2
* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
4
* Copyright (C) 2009 Sun Microsystems, Inc.
4
* Copyright (C) 2009 Sun Microsystems
6
6
* This program is free software; you can redistribute it and/or modify
7
7
* it under the terms of the GNU General Public License as published by
18
18
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
#include <drizzled/server_includes.h>
23
22
#include <drizzled/show.h>
24
23
#include <drizzled/session.h>
25
24
#include <drizzled/lock.h>
26
25
#include <drizzled/statement/flush.h>
27
#include "drizzled/sql_table.h"
28
#include "drizzled/plugin/logging.h"
29
#include "drizzled/plugin/storage_engine.h"
46
42
* Presumably, RESET and binlog writing doesn't require synchronization
48
write_bin_log(getSession(), *getSession()->getQueryString());
49
getSession()->my_ok();
44
write_bin_log(session, session->query, session->query_length);
55
51
bool statement::Flush::reloadCache()
57
53
bool result= false;
58
TableList *tables= (TableList *) getSession()->lex->select_lex.table_list.first;
54
ulong options= session->lex->type;
55
TableList *tables= (TableList *) session->lex->select_lex.table_list.first;
57
if (options & REFRESH_LOG)
62
59
if (plugin::StorageEngine::flushLogs(NULL))
68
65
Note that if REFRESH_READ_LOCK bit is set then REFRESH_TABLES is set too
71
if (flush_tables || flush_tables_with_read_lock)
68
if (options & (REFRESH_TABLES | REFRESH_READ_LOCK))
73
if (getSession() && flush_tables_with_read_lock)
70
if ((options & REFRESH_READ_LOCK) && session)
75
if (getSession()->lockGlobalReadLock())
72
if (lock_global_read_lock(session))
77
74
return true; /* Killed */
79
result= getSession()->close_cached_tables(tables, true, true);
81
if (getSession()->makeGlobalReadLockBlockCommit()) /* Killed */
76
result= session->close_cached_tables(tables,
77
(options & REFRESH_FAST) ? false : true,
79
if (make_global_read_lock_block_commit(session)) /* Killed */
83
81
/* Don't leave things in a half-locked state */
84
getSession()->unlockGlobalReadLock();
82
unlock_global_read_lock(session);
90
result= getSession()->close_cached_tables(tables, true, false);
88
result= session->close_cached_tables(tables,
89
(options & REFRESH_FAST) ? false : true,
94
if (getSession() && flush_status)
96
getSession()->refresh_status();
99
if (getSession() && flush_global_status)
101
memset(¤t_global_counters, 0, sizeof(current_global_counters));
102
plugin::Logging::resetStats(getSession());
103
getSession()->refresh_status();
94
if (session && (options & REFRESH_STATUS))
96
session->refresh_status();