mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-04 04:46:15 +01:00 
			
		
		
		
	Find and fix missing virtual override markings. Updates cmake maintainer flags to include -Wsuggest-override and -Winconsistent-missing-override.
		
			
				
	
	
		
			168 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			168 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
 Copyright (c) 2020, MariaDB Corporation.
 | 
						|
 | 
						|
 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-1335  USA */
 | 
						|
 | 
						|
#include "mariadb.h"
 | 
						|
#include "sql_type.h"
 | 
						|
#include "sql_schema.h"
 | 
						|
#include "sql_class.h"
 | 
						|
 | 
						|
class Schema_oracle: public Schema
 | 
						|
{
 | 
						|
public:
 | 
						|
  Schema_oracle(const LEX_CSTRING &name)
 | 
						|
   :Schema(name)
 | 
						|
  { }
 | 
						|
  const Type_handler *map_data_type(THD *thd, const Type_handler *src)
 | 
						|
                                    const override
 | 
						|
  {
 | 
						|
    if (src == &type_handler_newdate)
 | 
						|
      return thd->type_handler_for_datetime();
 | 
						|
    return src;
 | 
						|
  }
 | 
						|
 | 
						|
  Create_func *find_native_function_builder(THD *thd, const LEX_CSTRING &name)
 | 
						|
                                                                         const override
 | 
						|
  {
 | 
						|
    return native_functions_hash_oracle.find(thd, name);
 | 
						|
  }
 | 
						|
 | 
						|
  Item *make_item_func_replace(THD *thd,
 | 
						|
                               Item *subj,
 | 
						|
                               Item *find,
 | 
						|
                               Item *replace) const override;
 | 
						|
  Item *make_item_func_substr(THD *thd,
 | 
						|
                              const Lex_substring_spec_st &spec) const override;
 | 
						|
  Item *make_item_func_trim(THD *thd, const Lex_trim_st &spec) const override;
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
class Schema_maxdb: public Schema
 | 
						|
{
 | 
						|
public:
 | 
						|
  Schema_maxdb(const LEX_CSTRING &name)
 | 
						|
   :Schema(name)
 | 
						|
  { }
 | 
						|
  const Type_handler *map_data_type(THD *thd, const Type_handler *src)
 | 
						|
                                    const override
 | 
						|
  {
 | 
						|
    if (src == &type_handler_timestamp ||
 | 
						|
        src == &type_handler_timestamp2)
 | 
						|
      return thd->type_handler_for_datetime();
 | 
						|
    return src;
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
Schema        mariadb_schema(Lex_cstring(STRING_WITH_LEN("mariadb_schema")));
 | 
						|
Schema_oracle oracle_schema(Lex_cstring(STRING_WITH_LEN("oracle_schema")));
 | 
						|
Schema_maxdb  maxdb_schema(Lex_cstring(STRING_WITH_LEN("maxdb_schema")));
 | 
						|
 | 
						|
const Schema &oracle_schema_ref= oracle_schema;
 | 
						|
 | 
						|
Schema *Schema::find_by_name(const LEX_CSTRING &name)
 | 
						|
{
 | 
						|
  DBUG_ASSERT(name.str);
 | 
						|
  if (mariadb_schema.eq_name(name))
 | 
						|
    return &mariadb_schema;
 | 
						|
  if (oracle_schema.eq_name(name))
 | 
						|
    return &oracle_schema;
 | 
						|
  if (maxdb_schema.eq_name(name))
 | 
						|
    return &maxdb_schema;
 | 
						|
  return NULL;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
Schema *Schema::find_implied(THD *thd)
 | 
						|
{
 | 
						|
  if (thd->variables.sql_mode & MODE_ORACLE)
 | 
						|
    return &oracle_schema;
 | 
						|
  if (thd->variables.sql_mode & MODE_MAXDB)
 | 
						|
    return &maxdb_schema;
 | 
						|
  return &mariadb_schema;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
Create_func *
 | 
						|
Schema::find_native_function_builder(THD *thd, const LEX_CSTRING &name) const
 | 
						|
{
 | 
						|
  return native_functions_hash.find(thd, name);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
Item *Schema::make_item_func_call_native(THD *thd,
 | 
						|
                                         const Lex_ident_sys &name,
 | 
						|
                                         List<Item> *args) const
 | 
						|
{
 | 
						|
  Create_func *builder= find_native_function_builder(thd, name);
 | 
						|
  if (builder)
 | 
						|
    return builder->create_func(thd, &name, args);
 | 
						|
  my_error(ER_FUNCTION_NOT_DEFINED, MYF(0), name.str);
 | 
						|
  return NULL;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
Item *Schema::make_item_func_replace(THD *thd,
 | 
						|
                                     Item *subj,
 | 
						|
                                     Item *find,
 | 
						|
                                     Item *replace) const
 | 
						|
{
 | 
						|
  return new (thd->mem_root) Item_func_replace(thd, subj, find, replace);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
Item *Schema::make_item_func_substr(THD *thd,
 | 
						|
                                    const Lex_substring_spec_st &spec) const
 | 
						|
{
 | 
						|
  return spec.m_for ?
 | 
						|
    new (thd->mem_root) Item_func_substr(thd, spec.m_subject, spec.m_from,
 | 
						|
                                              spec.m_for) :
 | 
						|
    new (thd->mem_root) Item_func_substr(thd, spec.m_subject, spec.m_from);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
Item *Schema::make_item_func_trim(THD *thd, const Lex_trim_st &spec) const
 | 
						|
{
 | 
						|
  return spec.make_item_func_trim_std(thd);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
Item *Schema_oracle::make_item_func_replace(THD *thd,
 | 
						|
                                            Item *subj,
 | 
						|
                                            Item *find,
 | 
						|
                                            Item *replace) const
 | 
						|
{
 | 
						|
  return new (thd->mem_root) Item_func_replace_oracle(thd, subj, find, replace);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
Item *Schema_oracle::make_item_func_substr(THD *thd,
 | 
						|
                                    const Lex_substring_spec_st &spec) const
 | 
						|
{
 | 
						|
  return spec.m_for ?
 | 
						|
    new (thd->mem_root) Item_func_substr_oracle(thd, spec.m_subject,
 | 
						|
                                                     spec.m_from,
 | 
						|
                                                     spec.m_for) :
 | 
						|
    new (thd->mem_root) Item_func_substr_oracle(thd, spec.m_subject,
 | 
						|
                                                     spec.m_from);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
Item *Schema_oracle::make_item_func_trim(THD *thd,
 | 
						|
                                         const Lex_trim_st &spec) const
 | 
						|
{
 | 
						|
  return spec.make_item_func_trim_oracle(thd);
 | 
						|
}
 |