1
0
mirror of https://github.com/MariaDB/server.git synced 2025-11-18 07:48:43 +03:00
Files
mariadb/sql/table.h
unknown e72124c4cc CLIENT_MULTI_QUERIES -> CLIENT_MULTI_STATEMENTS
New multi-key-cache handling. This was needed becasue the old one didn't work reliable with MERGE tables.
ALTER TABLE table_name ... CHARACTER SET  ... now changes all char/varchar/text columns to the given character set
(One must use ALTER TABLE ... DEFAULT CHARACTER SET ... to change the default character set)
Fixed that have_compress is detected properly (fixes problems with func_compress.test on platforms without zlib)
New syntax for CACHE INDEX ('keys' is optional if no index name is given and one mentions the key cache name only ones)
Removed compiler warnings
Added mysql_set_server_option() to allow clients like PHP to easaily set/reset the multi-statement flag.


BUILD/compile-pentium-valgrind-max:
  Add test of isam
client/mysql.cc:
  CLIENT_MULTI_QUERIES -> CLIENT_MULTI_STATEMENTS
include/my_base.h:
  Remove HA_EXTRA_SET_KEY_CACHE
include/my_no_pthread.h:
  Add defines to ignore rw-locks when running without threads
include/my_sys.h:
  Added function for multi-key-caches
include/myisam.h:
  Added function to handle multi-key-caches
include/mysql.h:
  Added mysql_set_server_option
include/mysql_com.h:
  CLIENT_MULTI_QUERIES -> CLIENT_MULTI_STATEMENTS
  Added enum_mysql_set_option
include/mysqld_error.h:
  Added error message for unknown key cache
innobase/srv/srv0start.c:
  Removed warning that is confused for MySQL users
libmysql/libmysql.c:
  Added mysql_set_server_option()
libmysql/libmysql.def:
  Added mysql_set_server_option()
myisam/ft_nlq_search.c:
  Removed compiler warning
myisam/ft_static.c:
  Removed compiler warning and fixed wrong return value
myisam/mi_check.c:
  Clean up multi-key-cache usage
myisam/mi_checksum.c:
  Removed not used variable
myisam/mi_close.c:
  keycache -> key_cache
myisam/mi_delete_all.c:
  keycache -> key_cache
myisam/mi_extra.c:
  keycache -> key_cache
  Removed HA_EXTRA_SET_KEY_CACHE
myisam/mi_keycache.c:
  Changed logic so that it's MyISAM that is responsible for assign tables to different key caches instead of the upper level
myisam/mi_locking.c:
  Don't change key cache on unlock (must be done before)
myisam/mi_open.c:
  Fetch key cache to use from multi_key_cache_search()
myisam/mi_page.c:
  keycache -> key_cache
myisam/mi_panic.c:
  keycache -> key_cache
myisam/mi_preload.c:
  keycache -> key_cache
myisam/mi_test1.c:
  Use KEY_CACHE_BLOCK_SIZE
myisam/mi_test2.c:
  Always test resize_key_cache()
myisam/mi_test3.c:
  Use KEY_CACHE_BLOCK_SIZE instead of 512
myisam/myisamchk.c:
  update for multiple key caches
myisam/myisamdef.h:
  Remove reg_keycache
  Add unique_name_length for storing length of unique_file_name
myisam/myisamlog.c:
  Change how end_key_cache() is called
mysql-test/mysql-test-run.sh:
  Fixed web link
  Added name of failed test to abort row.
mysql-test/r/alter_table.result:
  Testing of ALTER TABLE ... [DEFAULT] CHARACTER SET
mysql-test/r/case.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/cast.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/create.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/ctype_collate.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/ctype_latin1_de.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/ctype_many.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/ctype_mb.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/ctype_recoding.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/ctype_ucs.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/derived.result:
  Use STRAIGHT_JOIN to make join order predictable
mysql-test/r/fulltext.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/func_str.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/func_system.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/gis-rtree.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/innodb.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/key_cache.result:
  Update test for new key cache syntax.
  Added more tests
mysql-test/r/merge.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/preload.result:
  New syntax
mysql-test/r/show_check.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/sql_mode.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/subselect.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/type_blob.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/type_enum.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/type_nchar.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/type_set.result:
  Update result for DEFAULT CHARSET...
mysql-test/r/union.result:
  Use STRAIGHT_JOIN to make join order predictable
mysql-test/t/alter_table.test:
  Testing of ALTER TABLE ... [DEFAULT] CHARACTER SET
mysql-test/t/ctype_many.test:
  Update result for DEFAULT CHARSET...
mysql-test/t/derived.test:
  Use STRAIGHT_JOIN to make join order predictable
mysql-test/t/isam.test:
  Use disable warnings for test loop
mysql-test/t/join.test:
  Update test now when we only support 61 tables in join
mysql-test/t/key_cache.test:
  Update test for new key cache syntax.
  Added more tests
mysql-test/t/preload.test:
  Update for new syntax
mysql-test/t/union.test:
  Use STRAIGHT_JOIN to make join order predictable
mysys/Makefile.am:
  Added mf_keycaches.c
mysys/hash.c:
  TRUE -> 1
mysys/mf_keycache.c:
  Removed compiler warnings
  Striped end space
  Fixed indentation and improved function comments
  TRUE -> 1
  Changed parameters to end_key_cache() to make it easer to use
  Fixed bug when using key blocks size > 1024 bytes (First part of index file could be overwritten with wrong data)
  Split function flush_key_blocks into two functions to not get mutex used twice when called from flush_all_key_blocks()
mysys/my_bitmap.c:
  More debugging
  Safe bitmap_free()
  Fixed indentation
mysys/my_getopt.c:
  Ensure that we initialize option->value, option->max_value and value from GET_ASK_ADDR
mysys/my_thr_init.c:
  Remove not used mutex THR_LOCK_keycache
mysys/typelib.c:
  Fixed function comments
sql-common/client.c:
  CLIENT_MULTI_QUERIES -> CLIENT_MULTI_STATEMENTS
  Fixed the multi_result flag is set also on SELECT;s
sql/ha_myisam.cc:
  Fixed multiple key_cache handling
  (Now done on MyISAM level)
sql/ha_myisammrg.cc:
  Fixed multiple key_cache handling
  (Now done on MyISAM level)
sql/handler.cc:
  New multi key cache handling
sql/handler.h:
  New multi key cache handling
  Added support for default character set
sql/item.h:
  Added function cleanup() (Needed for prepared statements / cursors)
sql/item_cmpfunc.h:
  Added cleanup function
sql/item_func.cc:
  Indentation cleanup
sql/mysql_priv.h:
  New multi-key-cache functions
  Removed LOCK_assign
sql/mysqld.cc:
  New multi-key-cache handling
  Fixed that variable have_compress is set correctly
sql/protocol.cc:
  SELECT didn't work reliable in multi-statements
sql/set_var.cc:
  Support for new key cache variables
sql/set_var.h:
  Support for new key cache variables
sql/share/czech/errmsg.txt:
  New error messages
sql/share/danish/errmsg.txt:
  New error messages
sql/share/dutch/errmsg.txt:
  New error messages
sql/share/english/errmsg.txt:
  New error messages
sql/share/estonian/errmsg.txt:
  New error messages
sql/share/french/errmsg.txt:
  New error messages
sql/share/german/errmsg.txt:
  New error messages
sql/share/greek/errmsg.txt:
  New error messages
sql/share/hungarian/errmsg.txt:
  New error messages
sql/share/italian/errmsg.txt:
  New error messages
sql/share/japanese/errmsg.txt:
  New error messages
sql/share/korean/errmsg.txt:
  New error messages
sql/share/norwegian-ny/errmsg.txt:
  New error messages
sql/share/norwegian/errmsg.txt:
  New error messages
sql/share/polish/errmsg.txt:
  New error messages
sql/share/portuguese/errmsg.txt:
  New error messages
sql/share/romanian/errmsg.txt:
  New error messages
sql/share/russian/errmsg.txt:
  New error messages
sql/share/serbian/errmsg.txt:
  New error messages
sql/share/slovak/errmsg.txt:
  New error messages
sql/share/spanish/errmsg.txt:
  New error messages
sql/share/swedish/errmsg.txt:
  New error messages
sql/share/ukrainian/errmsg.txt:
  New error messages
sql/sql_base.cc:
  Removed all key_cache handling (this is now done on MyISAM level)
  Change table_charset -> default_table_charset
sql/sql_db.cc:
  table_charset -> default_table_charset
sql/sql_delete.cc:
  table_charset -> default_table_charset
sql/sql_lex.cc:
  CLIENT_MULTI_QUERIES -> CLIENT_MULTI_STATEMENTS
sql/sql_lex.h:
  New option to store a name and length
sql/sql_parse.cc:
  Support for mysql_set_server_option()
  Reset "default" keycache status variables in 'FLUSH STATUS' (Need to be improved later)
sql/sql_show.cc:
  Add DEFAULT before CHARSET (for table character sets)
  Fetch key cache variables from 'sql_key_cache'
sql/sql_table.cc:
  table_charset -> default_table_charset
  New multi-key-cache handling
sql/sql_test.cc:
  Write information from all key caches
sql/sql_yacc.yy:
  Changed syntax for CACHE INDEX ...
  Force user to use DEFAULT before database/table level character sets
sql/structs.h:
  Added SHOW_KEY_CACHE_LONG (to get values from sql_key_cache)
sql/table.cc:
  table_charset -> default_table_charset
sql/table.h:
  New key cache handling (this is now done in mysys/mf_keycaches.c)
sql/unireg.h:
  A
2003-11-18 13:47:27 +02:00

199 lines
7.0 KiB
C++

/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
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; either version 2 of the License, or
(at your option) any later version.
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/* Structs that defines the TABLE */
class Item; /* Needed by ORDER */
class GRANT_TABLE;
class st_select_lex_unit;
/* Order clause list element */
typedef struct st_order {
struct st_order *next;
Item **item; /* Point at item in select fields */
bool asc; /* true if ascending */
bool free_me; /* true if item isn't shared */
bool in_field_list; /* true if in select field list */
Field *field; /* If tmp-table group */
char *buff; /* If tmp-table group */
table_map used,depend_map;
} ORDER;
typedef struct st_grant_info
{
GRANT_TABLE *grant_table;
uint version;
ulong privilege;
ulong want_privilege;
} GRANT_INFO;
enum tmp_table_type {NO_TMP_TABLE=0, TMP_TABLE=1, TRANSACTIONAL_TMP_TABLE=2};
typedef struct st_filesort_info
{
IO_CACHE *io_cache; /* If sorted through filebyte */
byte *addon_buf; /* Pointer to a buffer if sorted with fields */
uint addon_length; /* Length of the buffer */
struct st_sort_addon_field *addon_field; /* Pointer to the fields info */
void (*unpack)(struct st_sort_addon_field *, byte *); /* To unpack back */
byte *record_pointers; /* If sorted in memory */
ha_rows found_records; /* How many records in sort */
} FILESORT_INFO;
/* Table cache entry struct */
class Field_timestamp;
class Field_blob;
struct st_table {
handler *file;
Field **field; /* Pointer to fields */
Field_blob **blob_field; /* Pointer to blob fields */
HASH name_hash; /* hash of field names */
byte *record[2]; /* Pointer to records */
byte *default_values; /* Default values for INSERT */
byte *insert_values; /* used by INSERT ... UPDATE */
uint fields; /* field count */
uint reclength; /* Recordlength */
uint rec_buff_length;
uint keys,key_parts,primary_key,max_key_length,max_unique_length;
uint total_key_length;
uint uniques;
uint null_fields; /* number of null fields */
uint blob_fields; /* number of blob fields */
key_map keys_in_use, keys_for_keyread, read_only_keys;
key_map quick_keys, used_keys, keys_in_use_for_query;
KEY *key_info; /* data of keys in database */
TYPELIB keynames; /* Pointers to keynames */
ha_rows max_rows; /* create information */
ha_rows min_rows; /* create information */
ulong avg_row_length; /* create information */
ulong raid_chunksize;
TYPELIB fieldnames; /* Pointer to fieldnames */
TYPELIB *intervals; /* pointer to interval info */
enum db_type db_type; /* table_type for handler */
enum row_type row_type; /* How rows are stored */
uint db_create_options; /* Create options from database */
uint db_options_in_use; /* Options in use */
uint db_record_offset; /* if HA_REC_IN_SEQ */
uint db_stat; /* mode of file as in handler.h */
uint raid_type,raid_chunks;
uint status; /* Used by postfix.. */
uint system; /* Set if system record */
ulong time_stamp; /* Set to offset+1 of record */
uint timestamp_field_offset;
uint next_number_index;
uint blob_ptr_size; /* 4 or 8 */
uint next_number_key_offset;
int current_lock; /* Type of lock on table */
enum tmp_table_type tmp_table;
my_bool copy_blobs; /* copy_blobs when storing */
my_bool null_row; /* All columns are null */
my_bool maybe_null,outer_join; /* Used with OUTER JOIN */
my_bool force_index;
my_bool distinct,const_table,no_rows;
my_bool key_read, bulk_insert;
my_bool crypted;
my_bool db_low_byte_first; /* Portable row format */
my_bool locked_by_flush;
my_bool locked_by_name;
my_bool fulltext_searched;
my_bool crashed;
my_bool is_view;
my_bool no_keyread;
my_bool clear_query_id; /* To reset query_id for tables and cols */
my_bool auto_increment_field_not_null;
Field *next_number_field, /* Set if next_number is activated */
*found_next_number_field, /* Set on open */
*rowid_field;
Field_timestamp *timestamp_field;
my_string comment; /* Comment about table */
CHARSET_INFO *table_charset; /* Default charset of string fields */
REGINFO reginfo; /* field connections */
MEM_ROOT mem_root;
GRANT_INFO grant;
char *table_cache_key;
char *table_name,*real_name,*path;
uint key_length; /* Length of key */
uint tablenr,used_fields,null_bytes;
table_map map; /* ID bit of table (1,2,4,8,16...) */
ulong version,flush_version;
uchar *null_flags;
FILESORT_INFO sort;
ORDER *group;
ha_rows quick_rows[MAX_KEY];
uint quick_key_parts[MAX_KEY];
key_part_map const_key_parts[MAX_KEY];
ulong query_id;
union /* Temporary variables */
{
uint temp_pool_slot; /* Used by intern temp tables */
struct st_table_list *pos_in_table_list;
};
/* number of select if it is derived table */
uint derived_select_number;
THD *in_use; /* Which thread uses this */
struct st_table *next,*prev;
};
#define JOIN_TYPE_LEFT 1
#define JOIN_TYPE_RIGHT 2
typedef struct st_table_list
{
struct st_table_list *next;
char *db, *alias, *real_name;
char *option; /* Used by cache index */
Item *on_expr; /* Used with outer join */
struct st_table_list *natural_join; /* natural join on this table*/
/* ... join ... USE INDEX ... IGNORE INDEX */
List<String> *use_index, *ignore_index;
TABLE *table; /* opened table */
st_table_list *table_list; /* pointer to node of list of all tables */
class st_select_lex_unit *derived; /* SELECT_LEX_UNIT of derived table */
GRANT_INFO grant;
thr_lock_type lock_type;
uint outer_join; /* Which join type */
uint shared; /* Used in union or in multi-upd */
uint32 db_length, real_name_length;
bool straight; /* optimize with prev table */
bool updating; /* for replicate-do/ignore table */
bool force_index; /* Prefer index over table scan */
bool ignore_leaves; /* Preload only non-leaf nodes */
} TABLE_LIST;
typedef struct st_changed_table_list
{
struct st_changed_table_list *next;
char *key;
uint32 key_length;
} CHANGED_TABLE_LIST;
typedef struct st_open_table_list
{
struct st_open_table_list *next;
char *db,*table;
uint32 in_use,locked;
} OPEN_TABLE_LIST;