1
0
Files
2022-09-29 17:59:04 +03:00

150 lines
4.8 KiB
C++

/* Copyright (C) 1979-1996 TcX AB & Monty Program KB & Detron HB
This software is distributed with NO WARRANTY OF ANY KIND. No author or
distributor accepts any responsibility for the consequences of using it, or
for whether it serves any particular purpose or works at all, unless he or
she says so in writing. Refer to the Free Public License (the "License")
for full details.
Every copy of this file must include a copy of the License, normally in a
plain ASCII text file named PUBLIC. The License grants you the right to
copy, modify and redistribute this file, but only under certain conditions
described in the License. Among other things, the License requires that
the copyright notice and this notice be preserved on all copies. */
/* 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;
union un_ref {
uint32 lastpos;
byte refpos[MAX_REFLENGTH]; /* When long is not enough */
};
typedef struct st_keyfile_info { /* used with ha_info() */
union un_ref ref; /* Position for last used record */
uint ref_length; /* Length of ref (4 or 6) */
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 */
int errkey,sortkey; /* Last errorkey and sorted by */
long create_time; /* When table was created */
long check_time;
long update_time;
ulong mean_rec_length; /* physical reclength */
ulong *rec_per_key;
} KEYFILE_INFO;
typedef struct st_key_part_info { /* Info about a key part */
Field *field;
uint length; /* Length of key_part */
uint16 offset; /* offset in record (from 0) */
uint16 key_type;
uint16 fieldnr; /* F{ltnummer i standarformul{r */
uint8 key_part_flag; /* 0 or HA_REVERSE_SORT */
} KEY_PART_INFO ;
typedef struct st_key {
uint key_length; /* Tot length of key */
uint dupp_key; /* != 0 om dupp. f}r f|rekomma */
uint key_parts; /* How many key_parts */
uint usable_key_parts; /* Should normally be = key_parts */
KEY_PART_INFO *key_part;
char *name; /* Name of key */
} KEY;
enum reginfo_type { RI_NORMAL,RI_SYSTEM,RI_REPEAT,RI_REF,RI_CONST,RI_PROG };
typedef struct st_ref_field { /* Used as indexfield to key */
char *ptr;
uint length;
Field *field;
} REF_FIELD;
typedef struct st_reginfo { /* Extra info about reg */
REF_FIELD ref_field[MAX_REF_PARTS]; /* Fields used as key */
uint ref_fields;
table_map reg_used; /* a bit set for all ref_regs */
int ref_key,user_key; /* Keynr to use */
uint ref_length,key_length,user_keylength; /* Length of key used */
byte *key_buff; /* Last used key */
enum thr_lock_type lock_type; /* How database is used */
} REGINFO;
struct st_read_record; /* For referense later */
class SQL_SELECT;
typedef struct st_read_record { /* Parameter to read_record */
struct st_table *form; /* Head-form */
struct st_table **forms; /* head and ref forms */
int (*read_record)(struct st_read_record *);
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;
} READ_RECORD;
typedef struct st_time {
uint year,month,day,hour,minute,second;
bool neg;
} TIME;
typedef struct {
long year,month,day,hour,minute,second;
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};
struct show_var_st {
char *name,*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 */