summaryrefslogtreecommitdiff
path: root/sql/table.h
diff options
context:
space:
mode:
authorunknown <igor@rurik.mysql.com>2003-08-02 02:43:18 -0700
committerunknown <igor@rurik.mysql.com>2003-08-02 02:43:18 -0700
commitb6d27e20e19e1998b745a438dbde635261ebc5d4 (patch)
treeadd5cbee3049a38799b03ee640b5ae06fbc34ef1 /sql/table.h
parent4f6f7f7ded18764b8aa382c3a84261657fea66f8 (diff)
downloadmariadb-git-b6d27e20e19e1998b745a438dbde635261ebc5d4.tar.gz
Many files:
Added key cache assignment mi_locking.c: Added key cache assignment: correction my_sys.h: Added key cache variable structure include/my_sys.h: Added key cache variable structure include/my_base.h: Added key cache assignment include/myisam.h: Added key cache assignment include/my_global.h: Added key cache assignment isam/_page.c: Added key cache assignment isam/close.c: Added key cache assignment isam/isamchk.c: Added key cache assignment isam/isamlog.c: Added key cache assignment isam/panic.c: Added key cache assignment isam/_locking.c: Added key cache assignment isam/test2.c: Added key cache assignment isam/test3.c: Added key cache assignment myisam/myisamdef.h: Added key cache assignment myisam/mi_check.c: Added key cache assignment myisam/mi_close.c: Added key cache assignment myisam/mi_extra.c: Added key cache assignment myisam/mi_page.c: Added key cache assignment myisam/mi_panic.c: Added key cache assignment myisam/mi_preload.c: Added key cache assignment myisam/mi_test1.c: Added key cache assignment myisam/mi_test2.c: Added key cache assignment myisam/mi_test3.c: Added key cache assignment myisam/myisamchk.c: Added key cache assignment myisam/myisamlog.c: Added key cache assignment myisam/mi_delete_all.c: Added key cache assignment myisam/mi_locking.c: Added key cache assignment: correction myisam/mi_keycache.c: Added key cache assignment sql/handler.h: Added key cache assignment sql/mysql_priv.h: Added key cache assignment sql/set_var.h: Added key cache assignment sql/table.h: Added key cache assignment sql/ha_myisam.cc: Added key cache assignment sql/ha_myisammrg.cc: Added key cache assignment sql/handler.cc: Added key cache assignment sql/mysqld.cc: Added key cache assignment sql/set_var.cc: Added key cache assignment sql/sql_base.cc: Added key cache assignment sql/sql_table.cc: Added key cache assignment sql/sql_test.cc: Added key cache assignment sql/sql_yacc.yy: Added key cache assignment mysys/mf_keycache.c: Added key cache assignment mysql-test/t/key_cache.test: Added key cache assignment mysql-test/r/key_cache.result: Added key cache assignment
Diffstat (limited to 'sql/table.h')
-rw-r--r--sql/table.h34
1 files changed, 32 insertions, 2 deletions
diff --git a/sql/table.h b/sql/table.h
index 3132e72fb2f..ad5908ae5c2 100644
--- a/sql/table.h
+++ b/sql/table.h
@@ -55,6 +55,31 @@ typedef struct st_filesort_info
ha_rows found_records; /* How many records in sort */
} FILESORT_INFO;
+
+/* Table key cache assignment descriptor */
+/*
+ In future the similar structure is to be used for
+ an assignment of an index to a key cache: the index name will be added.
+ The name of the database catalog will be added as well.
+ The descriptors for the current assignments are put in the
+ assignment cache: assign_cache. If a table is not found in the cache
+ it is considered assigned to the default key cache.
+*/
+typedef struct st_key_cache_asmt
+{
+ char *db_name; /* db the table belongs to */
+ char *table_name; /* the name of the table */
+ char *table_key; /* key for the assignment cache */
+ uint key_length; /* the length of this key */
+ struct st_key_cache_var *key_cache; /* reference to the key cache */
+ struct st_key_cache_asmt **prev; /* links in the chain all assignments */
+ struct st_key_cache_asmt *next; /* to this cache */
+ struct st_my_thread_var *queue; /* queue of requests for assignment */
+ uint requests; /* number of current requests */
+ bool to_reassign; /* marked when reassigning all cache */
+ bool triggered; /* marked when assignment is triggered*/
+} KEY_CACHE_ASMT;
+
/* Table cache entry struct */
class Field_timestamp;
@@ -62,11 +87,13 @@ class Field_blob;
struct st_table {
handler *file;
- Field **field; /* Pointer to fields */
+ KEY_CACHE_VAR *key_cache; /* Ref to the key cache the table assigned to*/
+ KEY_CACHE_ASMT *key_cache_asmt;/* Only when opened for key cache assignment */
+ 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; /* record with default values for INSERT */
+ byte *default_values; /* Record with default values for INSERT */
byte *insert_values; /* used by INSERT ... UPDATE */
uint fields; /* field count */
uint reclength; /* Recordlength */
@@ -159,6 +186,7 @@ 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 */
@@ -197,3 +225,5 @@ typedef struct st_open_table_list
char *db,*table;
uint32 in_use,locked;
} OPEN_TABLE_LIST;
+
+