summaryrefslogtreecommitdiff
path: root/sql/table.h
diff options
context:
space:
mode:
authorunknown <igor@rurik.mysql.com>2004-06-25 06:52:01 -0700
committerunknown <igor@rurik.mysql.com>2004-06-25 06:52:01 -0700
commit5ebdd3e765ecf712d98c0df46899cb0ec617393b (patch)
tree3decbedc2a2648c3c3e779e9f0673453df99f9f3 /sql/table.h
parentad9356432170889f412a7a413fd28c09d5eac0bf (diff)
downloadmariadb-git-5ebdd3e765ecf712d98c0df46899cb0ec617393b.tar.gz
After merge fix
Diffstat (limited to 'sql/table.h')
-rw-r--r--sql/table.h27
1 files changed, 22 insertions, 5 deletions
diff --git a/sql/table.h b/sql/table.h
index 4f4ab42f3e9..c59b5a03bc4 100644
--- a/sql/table.h
+++ b/sql/table.h
@@ -26,6 +26,7 @@ class st_select_lex_unit;
typedef struct st_order {
struct st_order *next;
Item **item; /* Point at item in select fields */
+ Item *item_ptr; /* Storage for initial item */
Item **item_copy; /* For SPs; the original item ptr */
bool asc; /* true if ascending */
bool free_me; /* true if item isn't shared */
@@ -66,7 +67,8 @@ 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 */
+ /* hash of field names (contains pointers to elements of field array) */
+ HASH name_hash;
byte *record[2]; /* Pointer to records */
byte *default_values; /* Default values for INSERT */
byte *insert_values; /* used by INSERT ... UPDATE */
@@ -97,8 +99,20 @@ struct st_table {
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 */
+
+ /*
+ These two members hold offset in record + 1 for TIMESTAMP field
+ with NOW() as default value or/and with ON UPDATE NOW() option.
+ If 0 then such field is absent in this table or auto-set for default
+ or/and on update should be temporaly disabled for some reason.
+ These values is setup to offset value for each statement in open_table()
+ and turned off in statement processing code (see mysql_update as example).
+ */
+ ulong timestamp_default_now;
+ ulong timestamp_on_update_now;
+ /* Index of auto-updated TIMESTAMP field in field array */
uint timestamp_field_offset;
+
uint next_number_index;
uint blob_ptr_size; /* 4 or 8 */
uint next_number_key_offset;
@@ -109,7 +123,7 @@ struct st_table {
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 key_read;
my_bool crypted;
my_bool db_low_byte_first; /* Portable row format */
my_bool locked_by_flush;
@@ -119,7 +133,7 @@ struct st_table {
my_bool is_view;
my_bool no_keyread, no_cache;
my_bool clear_query_id; /* To reset query_id for tables and cols */
- my_bool auto_increment_field_not_null;
+ 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;
@@ -170,7 +184,7 @@ typedef struct st_table_list
GRANT_INFO grant;
thr_lock_type lock_type;
uint outer_join; /* Which join type */
- uint shared; /* Used in union or in multi-upd */
+ uint shared; /* Used in multi-upd */
uint32 db_length, real_name_length;
bool straight; /* optimize with prev table */
bool updating; /* for replicate-do/ignore table */
@@ -181,6 +195,9 @@ typedef struct st_table_list
struct st_nested_join *nested_join; /* if the element is a nested join */
st_table_list *embedding; /* nested join containing the table */
List<struct st_table_list> *join_list;/* join list the table belongs to */
+ bool cacheable_table; /* stop PS caching */
+ /* used in multi-upd privelege check */
+ bool table_in_update_from_clause;
} TABLE_LIST;
typedef struct st_nested_join