mysql5/mysql-5.7.27/sql/ndb_tdc.cc

76 lines
2.4 KiB
C++

/*
Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "ndb_tdc.h"
#ifndef MYSQL_SERVER
#define MYSQL_SERVER
#endif
#include "table.h" // TABLE_LIST
#include "sql_base.h" // close_cached_tables()
/*
Close all tables in MySQL Server's table definition cache
which aren't in use by any thread
*/
bool ndb_tdc_close_cached_tables(void)
{
DBUG_ENTER("ndb_tdc_close_cached_tables");
const int res = close_cached_tables(NULL, // No need for thd pointer
NULL, // Close all tables
false, // Don't wait
0 // Timeout unused when not waiting
);
DBUG_RETURN(res);
}
/*
Close table in MySQL Server's table definition cache
which aren't in use by any thread
@param thd Thread handle
@param[in] dbname Name of database table is in
@param[in] tabname Name of table
*/
bool
ndb_tdc_close_cached_table(THD* thd, const char* dbname, const char* tabname)
{
DBUG_ENTER("ndb_tdc_close_cached_table");
DBUG_PRINT("enter", ("dbname: %s, tabname: %s", dbname, tabname));
// NOTE! initializes only the minimal part of TABLE_LIST
// required for calling close_cached_tables()
TABLE_LIST table_list;
memset(&table_list, 0, sizeof(table_list));
table_list.db= (char *)dbname;
table_list.alias= table_list.table_name= (char *)tabname;
const int res = close_cached_tables(thd,
&table_list,
false, // Don't wait
0 // Timeout unused when not waiting
);
DBUG_RETURN(res);
}