summaryrefslogtreecommitdiff
path: root/sql/structs.h
diff options
context:
space:
mode:
Diffstat (limited to 'sql/structs.h')
-rw-r--r--sql/structs.h160
1 files changed, 160 insertions, 0 deletions
diff --git a/sql/structs.h b/sql/structs.h
new file mode 100644
index 00000000000..b32f957da25
--- /dev/null
+++ b/sql/structs.h
@@ -0,0 +1,160 @@
+/* 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 */
+
+
+/* The old structures from unireg */
+
+struct st_table;
+class Field;
+
+typedef struct st_date_format { /* How to print date */
+ uint pos[6]; /* Positions to YY.MM.DD HH:MM:SS */
+} DATE_FORMAT;
+
+
+typedef struct st_keyfile_info { /* used with ha_info() */
+ byte ref[MAX_REFLENGTH]; /* Pointer to current row */
+ byte dupp_ref[MAX_REFLENGTH]; /* Pointer to dupp row */
+ uint ref_length; /* Length of ref (1-8) */
+ uint block_size; /* index block size */
+ File filenr; /* (uniq) filenr for table */
+ ha_rows records; /* Records i datafilen */
+ ha_rows deleted; /* Deleted records */
+ ulonglong data_file_length; /* Length off data file */
+ ulonglong max_data_file_length; /* Length off data file */
+ ulonglong index_file_length;
+ ulonglong max_index_file_length;
+ ulonglong delete_length; /* Free bytes */
+ ulonglong auto_increment_value;
+ int errkey,sortkey; /* Last errorkey and sorted by */
+ time_t create_time; /* When table was created */
+ time_t check_time;
+ time_t update_time;
+ ulong mean_rec_length; /* physical reclength */
+} KEYFILE_INFO;
+
+
+typedef struct st_key_part_info { /* Info about a key part */
+ Field *field;
+ uint offset; /* offset in record (from 0) */
+ uint null_offset; // Offset to null_bit in record
+ uint16 length; /* Length of key_part */
+ uint16 store_length;
+ uint16 key_type;
+ uint16 fieldnr; /* Fieldnum in UNIREG */
+ uint8 key_part_flag; /* 0 or HA_REVERSE_SORT */
+ uint8 type;
+ uint8 null_bit; // Position to null_bit
+} KEY_PART_INFO ;
+
+
+typedef struct st_key {
+ uint key_length; /* Tot length of key */
+ uint flags; /* dupp key and pack flags */
+ uint key_parts; /* How many key_parts */
+ uint extra_length;
+ uint usable_key_parts; /* Should normally be = key_parts */
+ KEY_PART_INFO *key_part;
+ char *name; /* Name of key */
+ ulong *rec_per_key; /* Key part distribution */
+} KEY;
+
+
+struct st_join_table;
+
+typedef struct st_reginfo { /* Extra info about reg */
+ struct st_join_table *join_tab; /* Used by SELECT() */
+ enum thr_lock_type lock_type; /* How database is used */
+ bool not_exists_optimize;
+ bool impossible_range;
+} REGINFO;
+
+
+struct st_read_record; /* For referense later */
+class SQL_SELECT;
+class THD;
+class handler;
+
+typedef struct st_read_record { /* Parameter to read_record */
+ struct st_table *table; /* Head-form */
+ handler *file;
+ struct st_table **forms; /* head and ref forms */
+ int (*read_record)(struct st_read_record *);
+ THD *thd;
+ SQL_SELECT *select;
+ uint cache_records;
+ uint ref_length,struct_length,reclength,rec_cache_size,error_offset;
+ uint index;
+ byte *ref_pos; /* pointer to form->refpos */
+ byte *record;
+ byte *cache,*cache_pos,*cache_end,*read_positions;
+ IO_CACHE *io_cache;
+ bool print_error;
+} READ_RECORD;
+
+enum timestamp_type { TIMESTAMP_NONE, TIMESTAMP_DATE, TIMESTAMP_FULL,
+ TIMESTAMP_TIME };
+
+typedef struct st_time {
+ uint year,month,day,hour,minute,second,second_part;
+ bool neg;
+ timestamp_type time_type;
+} TIME;
+
+typedef struct {
+ long year,month,day,hour,minute,second,second_part;
+ bool neg;
+} INTERVAL;
+
+
+enum SHOW_TYPE { SHOW_LONG,SHOW_CHAR,SHOW_INT,SHOW_CHAR_PTR,SHOW_BOOL,
+ SHOW_MY_BOOL,SHOW_OPENTABLES,SHOW_STARTTIME,SHOW_QUESTION,
+ SHOW_LONG_CONST, SHOW_INT_CONST};
+
+struct show_var_st {
+ const char *name;
+ char *value;
+ SHOW_TYPE type;
+};
+
+typedef struct lex_string {
+ char *str;
+ uint length;
+} LEX_STRING;
+
+typedef struct st_lex_user {
+ LEX_STRING user, host, password;
+} LEX_USER;
+
+ /* Bits in form->update */
+#define REG_MAKE_DUPP 1 /* Make a copy of record when read */
+#define REG_NEW_RECORD 2 /* Write a new record if not found */
+#define REG_UPDATE 4 /* Uppdate record */
+#define REG_DELETE 8 /* Delete found record */
+#define REG_PROG 16 /* User is updateing database */
+#define REG_CLEAR_AFTER_WRITE 32
+#define REG_MAY_BE_UPDATED 64
+#define REG_AUTO_UPDATE 64 /* Used in D-forms for scroll-tables */
+#define REG_OVERWRITE 128
+#define REG_SKIPP_DUPP 256
+
+ /* Bits in form->status */
+#define STATUS_NO_RECORD (1+2) /* Record isn't usably */
+#define STATUS_GARBAGE 1
+#define STATUS_NOT_FOUND 2 /* No record in database when neaded */
+#define STATUS_NO_PARENT 4 /* Parent record wasn't found */
+#define STATUS_NOT_READ 8 /* Record isn't read */
+#define STATUS_UPDATED 16 /* Record is updated by formula */