MySQL 8.0.46
Source Code Documentation
myisammrg.h File Reference

This file should be included when using merge isam functions. More...

#include <sys/types.h>
#include "my_base.h"
#include "my_inttypes.h"
#include "my_list.h"
#include "my_macros.h"
#include "myisam.h"
#include "mysql/psi/mysql_mutex.h"
#include "storage/myisam/queues.h"
#include "typelib.h"

Go to the source code of this file.

Classes

struct  MYMERGE_INFO
 
struct  MYRG_TABLE
 
struct  MYRG_INFO
 

Macros

#define MYRG_NAME_EXT   ".MRG"
 
#define MERGE_INSERT_DISABLED   0
 
#define MERGE_INSERT_TO_FIRST   1
 
#define MERGE_INSERT_TO_LAST   2
 

Functions

int myrg_close (MYRG_INFO *file)
 
int myrg_delete (MYRG_INFO *file, const uchar *buff)
 
MYRG_INFO * myrg_open (const char *name, int mode, int wait_if_locked)
 
MYRG_INFO * myrg_parent_open (const char *parent_name, int(*callback)(void *, const char *), void *callback_param)
 Open parent table of a MyISAM MERGE table. More...
 
int myrg_attach_children (MYRG_INFO *m_info, int handle_locking, MI_INFO *(*callback)(void *), void *callback_param, bool *need_compat_check)
 Attach children to a MyISAM MERGE parent table. More...
 
int myrg_detach_children (MYRG_INFO *m_info)
 Detach children from a MyISAM MERGE parent table. More...
 
int myrg_panic (enum ha_panic_function function)
 
int myrg_rfirst (MYRG_INFO *file, uchar *buf, int inx)
 
int myrg_rlast (MYRG_INFO *file, uchar *buf, int inx)
 
int myrg_rnext (MYRG_INFO *file, uchar *buf, int inx)
 
int myrg_rprev (MYRG_INFO *file, uchar *buf, int inx)
 
int myrg_rnext_same (MYRG_INFO *file, uchar *buf)
 
int myrg_rkey (MYRG_INFO *info, uchar *buf, int inx, const uchar *key, key_part_map keypart_map, enum ha_rkey_function search_flag)
 
int myrg_rrnd (MYRG_INFO *file, uchar *buf, ulonglong pos)
 
int myrg_update (MYRG_INFO *file, const uchar *old, uchar *new_rec)
 
int myrg_write (MYRG_INFO *info, uchar *rec)
 
int myrg_status (MYRG_INFO *file, MYMERGE_INFO *x, int flag)
 
int myrg_lock_database (MYRG_INFO *file, int lock_type)
 
int myrg_create (const char *name, const char **table_names, uint insert_method, bool fix_names)
 
int myrg_extra (MYRG_INFO *file, enum ha_extra_function function, void *extra_arg)
 
int myrg_reset (MYRG_INFO *info)
 
ha_rows myrg_records_in_range (MYRG_INFO *info, int inx, key_range *min_key, key_range *max_key)
 
ha_rows myrg_records (MYRG_INFO *info)
 
ulonglong myrg_position (MYRG_INFO *info)
 

Variables

TYPELIB merge_insert_method
 

Detailed Description

This file should be included when using merge isam functions.

Macro Definition Documentation

◆ MERGE_INSERT_DISABLED

#define MERGE_INSERT_DISABLED   0

◆ MERGE_INSERT_TO_FIRST

#define MERGE_INSERT_TO_FIRST   1

◆ MERGE_INSERT_TO_LAST

#define MERGE_INSERT_TO_LAST   2

◆ MYRG_NAME_EXT

#define MYRG_NAME_EXT   ".MRG"

Function Documentation

◆ myrg_attach_children()

int myrg_attach_children ( MYRG_INFO *  m_info,
int  handle_locking,
MI_INFO *(*)(void *)  callback,
void *  callback_param,
bool *  need_compat_check 
)

Attach children to a MyISAM MERGE parent table.

Call a callback function for each child table. The callback returns the MyISAM table handle of the child table. Check table definition match.

Parameters
[in]m_infoMERGE parent table structure
[in]handle_lockingif contains HA_OPEN_FOR_REPAIR, warn about incompatible child tables, but continue
[in]callbackfunction to call for each child table
[in]callback_paramdata pointer to give to the callback
[in]need_compat_checkpointer to ha_myisammrg::need_compat_check (we need this one to decide if previously allocated buffers can be reused).
Returns
status
Return values
0OK
!=0 Error
Note
: Currently there is some code duplication between myrg_open() and myrg_parent_open() + myrg_attach_children(). Please duplicate changes in these functions or make common sub-functions.

◆ myrg_close()

int myrg_close ( MYRG_INFO *  file)

◆ myrg_create()

int myrg_create ( const char *  name,
const char **  table_names,
uint  insert_method,
bool  fix_names 
)

◆ myrg_delete()

int myrg_delete ( MYRG_INFO *  file,
const uchar *  buff 
)

◆ myrg_detach_children()

int myrg_detach_children ( MYRG_INFO *  m_info)

Detach children from a MyISAM MERGE parent table.

Parameters
[in]m_infoMERGE parent table structure
Note
Detach must not touch the children in any way. They may have been closed at this point already. All references to the children should be removed.
Returns
status
Return values
0OK

◆ myrg_extra()

int myrg_extra ( MYRG_INFO *  file,
enum ha_extra_function  function,
void *  extra_arg 
)

◆ myrg_lock_database()

int myrg_lock_database ( MYRG_INFO *  file,
int  lock_type 
)

◆ myrg_open()

MYRG_INFO * myrg_open ( const char *  name,
int  mode,
int  wait_if_locked 
)

◆ myrg_panic()

int myrg_panic ( enum ha_panic_function  function)

◆ myrg_parent_open()

MYRG_INFO * myrg_parent_open ( const char *  parent_name,
int(*)(void *, const char *)  callback,
void *  callback_param 
)

Open parent table of a MyISAM MERGE table.

Open MERGE meta file to get the table name paths for the child tables. Count the children. Allocate and initialize MYRG_INFO structure. Call a callback function for each child table.

Parameters
[in]parent_namemerge table name path as "database/table"
[in]callbackfunction to call for each child table
[in]callback_paramdata pointer to give to the callback
Returns
MYRG_INFO pointer
Return values
!=NULL OK
NULLError
Note
Currently there is some code duplication between myrg_open() and myrg_parent_open() + myrg_attach_children(). Please duplicate changes in these functions or make common sub-functions.

◆ myrg_position()

ulonglong myrg_position ( MYRG_INFO *  info)

◆ myrg_records()

ha_rows myrg_records ( MYRG_INFO *  info)

◆ myrg_records_in_range()

ha_rows myrg_records_in_range ( MYRG_INFO *  info,
int  inx,
key_range *  min_key,
key_range *  max_key 
)

◆ myrg_reset()

int myrg_reset ( MYRG_INFO *  info)

◆ myrg_rfirst()

int myrg_rfirst ( MYRG_INFO *  file,
uchar *  buf,
int  inx 
)

◆ myrg_rkey()

int myrg_rkey ( MYRG_INFO *  info,
uchar *  buf,
int  inx,
const uchar *  key,
key_part_map  keypart_map,
enum ha_rkey_function  search_flag 
)

◆ myrg_rlast()

int myrg_rlast ( MYRG_INFO *  file,
uchar *  buf,
int  inx 
)

◆ myrg_rnext()

int myrg_rnext ( MYRG_INFO *  file,
uchar *  buf,
int  inx 
)

◆ myrg_rnext_same()

int myrg_rnext_same ( MYRG_INFO *  file,
uchar *  buf 
)

◆ myrg_rprev()

int myrg_rprev ( MYRG_INFO *  file,
uchar *  buf,
int  inx 
)

◆ myrg_rrnd()

int myrg_rrnd ( MYRG_INFO *  file,
uchar *  buf,
ulonglong  pos 
)

◆ myrg_status()

int myrg_status ( MYRG_INFO *  file,
MYMERGE_INFO *  x,
int  flag 
)

◆ myrg_update()

int myrg_update ( MYRG_INFO *  file,
const uchar *  old,
uchar *  new_rec 
)

◆ myrg_write()

int myrg_write ( MYRG_INFO *  info,
uchar *  rec 
)

Variable Documentation

◆ merge_insert_method

TYPELIB merge_insert_method
extern