$14 GRAYBYTE WORDPRESS FILE MANAGER $32

SERVER : in-mum-web1330.main-hosting.eu #1 SMP Mon Feb 10 22:45:17 UTC 2025
SERVER IP : 88.222.222.20 | ADMIN IP 216.73.216.215
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/usr/include/mysql/server/private/

HOME
Current File : /usr/include/mysql/server/private//opt_subselect.h
/*
   Copyright (c) 2010, 2019, MariaDB

   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; version 2 of the License.

   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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */

/*
  Semi-join subquery optimization code definitions
*/

#ifdef USE_PRAGMA_INTERFACE
#pragma interface			/* gcc class implementation */
#endif

int check_and_do_in_subquery_rewrites(JOIN *join);
bool convert_join_subqueries_to_semijoins(JOIN *join);
int pull_out_semijoin_tables(JOIN *join);
bool optimize_semijoin_nests(JOIN *join, table_map all_table_map);
bool setup_degenerate_jtbm_semi_joins(JOIN *join,
                                      List<TABLE_LIST> *join_list,
                                      List<Item> &eq_list);
bool setup_jtbm_semi_joins(JOIN *join, List<TABLE_LIST> *join_list,
                           List<Item> &eq_list);
void cleanup_empty_jtbm_semi_joins(JOIN *join, List<TABLE_LIST> *join_list);

// used by Loose_scan_opt
ulonglong get_bound_sj_equalities(TABLE_LIST *sj_nest, 
                                  table_map remaining_tables);

/*
  This is a class for considering possible loose index scan optimizations.
  It's usage pattern is as follows:
    best_access_path()
    {
       Loose_scan_opt opt;

       opt.init()
       for each index we can do ref access with
       {
         opt.next_ref_key();
         for each keyuse 
           opt.add_keyuse();
         opt.check_ref_access();
       }

       if (some criteria for range scans)
         opt.check_range_access();
       
       opt.get_best_option();
    }
*/

class Loose_scan_opt
{
  /* All methods must check this before doing anything else */
  bool try_loosescan;

  /*
    If we consider (oe1, .. oeN) IN (SELECT ie1, .. ieN) then ieK=oeK is
    called sj-equality. If oeK depends only on preceding tables then such
    equality is called 'bound'.
  */
  ulonglong bound_sj_equalities;
 
  /* Accumulated properties of ref access we're now considering: */
  ulonglong handled_sj_equalities;
  key_part_map loose_scan_keyparts;
  uint max_loose_keypart;
  bool part1_conds_met;

  /*
    Use of quick select is a special case. Some of its properties:
  */
  uint quick_uses_applicable_index;
  uint quick_max_loose_keypart;
  
  /* Best loose scan method so far */
  uint   best_loose_scan_key;
  double best_loose_scan_cost;
  double best_loose_scan_records;
  KEYUSE *best_loose_scan_start_key;

  uint best_max_loose_keypart;
  table_map best_ref_depend_map;

public:
  Loose_scan_opt():
    try_loosescan(false),
    bound_sj_equalities(0),
    quick_uses_applicable_index(0),
    quick_max_loose_keypart(0),
    best_loose_scan_key(0),
    best_loose_scan_cost(0),
    best_loose_scan_records(0),
    best_loose_scan_start_key(NULL),
    best_max_loose_keypart(0),
    best_ref_depend_map(0)
  {
  }

  void init(JOIN *join, JOIN_TAB *s, table_map remaining_tables)
  {
    /*
      Discover the bound equalities. We need to do this if
        1. The next table is an SJ-inner table, and
        2. It is the first table from that semijoin, and
        3. We're not within a semi-join range (i.e. all semi-joins either have
           all or none of their tables in join_table_map), except
           s->emb_sj_nest (which we've just entered, see #2).
        4. All non-IN-equality correlation references from this sj-nest are 
           bound
        5. But some of the IN-equalities aren't (so this can't be handled by 
           FirstMatch strategy)
    */
    best_loose_scan_cost= DBL_MAX;
    if (!join->emb_sjm_nest && s->emb_sj_nest &&                        // (1)
        s->emb_sj_nest->sj_in_exprs < 64 && 
        ((remaining_tables & s->emb_sj_nest->sj_inner_tables) ==        // (2)
         s->emb_sj_nest->sj_inner_tables) &&                            // (2)
        join->cur_sj_inner_tables == 0 &&                               // (3)
        !(remaining_tables & 
          s->emb_sj_nest->nested_join->sj_corr_tables) &&               // (4)
        remaining_tables & s->emb_sj_nest->nested_join->sj_depends_on &&// (5)
        optimizer_flag(join->thd, OPTIMIZER_SWITCH_LOOSE_SCAN))
    {
      /* This table is an LooseScan scan candidate */
      bound_sj_equalities= get_bound_sj_equalities(s->emb_sj_nest, 
                                                   remaining_tables);
      try_loosescan= TRUE;
      DBUG_PRINT("info", ("Will try LooseScan scan, bound_map=%llx",
                          (longlong)bound_sj_equalities));
    }
  }

  void next_ref_key()
  {
    handled_sj_equalities=0;
    loose_scan_keyparts= 0;
    max_loose_keypart= 0;
    part1_conds_met= FALSE;
  }
  
  void add_keyuse(table_map remaining_tables, KEYUSE *keyuse)
  {
    if (try_loosescan && keyuse->sj_pred_no != UINT_MAX &&
        (keyuse->table->file->index_flags(keyuse->key, 0, 1 ) & HA_READ_ORDER))

    {
      if (!(remaining_tables & keyuse->used_tables))
      {
        /* 
          This allows to use equality propagation to infer that some 
          sj-equalities are bound.
        */
        bound_sj_equalities |= 1ULL << keyuse->sj_pred_no;
      }
      else
      {
        handled_sj_equalities |= 1ULL << keyuse->sj_pred_no;
        loose_scan_keyparts |= ((key_part_map)1) << keyuse->keypart;
        set_if_bigger(max_loose_keypart, keyuse->keypart);
      }
    }
  }

  bool have_a_case() { return MY_TEST(handled_sj_equalities); }

  void check_ref_access_part1(JOIN_TAB *s, uint key, KEYUSE *start_key, 
                              table_map found_part)
  {
    /*
      Check if we can use LooseScan semi-join strategy. We can if
      1. This is the right table at right location
      2. All IN-equalities are either
         - "bound", ie. the outer_expr part refers to the preceding tables
         - "handled", ie. covered by the index we're considering
      3. Index order allows to enumerate subquery's duplicate groups in
         order. This happens when the index definition matches this
         pattern:

           (handled_col|bound_col)* (other_col|bound_col)

    */
    if (try_loosescan &&                                       // (1)
        (handled_sj_equalities | bound_sj_equalities) ==       // (2)
        PREV_BITS(ulonglong, s->emb_sj_nest->sj_in_exprs) &&   // (2)
        (PREV_BITS(key_part_map, max_loose_keypart+1) &        // (3)
         (found_part | loose_scan_keyparts)) ==                // (3)
        PREV_BITS(key_part_map, max_loose_keypart+1) &&        // (3)
        !key_uses_partial_cols(s->table->s, key))
    {
      if (s->quick && s->quick->index == key && 
          s->quick->get_type() == QUICK_SELECT_I::QS_TYPE_RANGE)
      {
        quick_uses_applicable_index= TRUE;
        quick_max_loose_keypart= max_loose_keypart;
      }
      DBUG_PRINT("info", ("Can use LooseScan scan"));

      if (found_part & 1)
      {
        /* Can use LooseScan on ref access if the first key part is bound */
        part1_conds_met= TRUE;
      }

      /* 
        Check if this is a special case where there are no usable bound
        IN-equalities, i.e. we have

          outer_expr IN (SELECT innertbl.key FROM ...) 
        
        and outer_expr cannot be evaluated yet, so it's actually full
        index scan and not a ref access.
        We can do full index scan if it uses index-only.
      */
      if (!(found_part & 1 ) && /* no usable ref access for 1st key part */
          s->table->covering_keys.is_set(key))
      {
        part1_conds_met= TRUE;
        DBUG_PRINT("info", ("Can use full index scan for LooseScan"));
        
        /* Calculate the cost of complete loose index scan.  */
        double records= rows2double(s->table->file->stats.records);

        /* The cost is entire index scan cost (divided by 2) */
        double read_time= s->table->file->keyread_time(key, 1,
                                                       (ha_rows) records);

        /*
          Now find out how many different keys we will get (for now we
          ignore the fact that we have "keypart_i=const" restriction for
          some key components, that may make us think think that loose
          scan will produce more distinct records than it actually will)
        */
        ulong rpc;
        if ((rpc= s->table->key_info[key].rec_per_key[max_loose_keypart]))
          records= records / rpc;

        // TODO: previous version also did /2
        if (read_time < best_loose_scan_cost)
        {
          best_loose_scan_key= key;
          best_loose_scan_cost= read_time;
          best_loose_scan_records= records;
          best_max_loose_keypart= max_loose_keypart;
          best_loose_scan_start_key= start_key;
          best_ref_depend_map= 0;
        }
      }
    }
  }
  
  void check_ref_access_part2(uint key, KEYUSE *start_key, double records, 
                              double read_time, table_map ref_depend_map_arg)
  {
    if (part1_conds_met && read_time < best_loose_scan_cost)
    {
      /* TODO use rec-per-key-based fanout calculations */
      best_loose_scan_key= key;
      best_loose_scan_cost= read_time;
      best_loose_scan_records= records;
      best_max_loose_keypart= max_loose_keypart;
      best_loose_scan_start_key= start_key;
      best_ref_depend_map= ref_depend_map_arg;
    }
  }

  void check_range_access(JOIN *join, uint idx, QUICK_SELECT_I *quick)
  {
    /* TODO: this the right part restriction: */
    if (quick_uses_applicable_index && idx == join->const_tables && 
        quick->read_time < best_loose_scan_cost)
    {
      best_loose_scan_key= quick->index;
      best_loose_scan_cost= quick->read_time;
      /* this is ok because idx == join->const_tables */
      best_loose_scan_records= rows2double(quick->records);
      best_max_loose_keypart= quick_max_loose_keypart;
      best_loose_scan_start_key= NULL;
      best_ref_depend_map= 0;
    }
  }

  void save_to_position(JOIN_TAB *tab, POSITION *pos)
  {
    pos->read_time=       best_loose_scan_cost;
    if (best_loose_scan_cost != DBL_MAX)
    {
      pos->records_read=    best_loose_scan_records;
      pos->key=             best_loose_scan_start_key;
      pos->cond_selectivity= 1.0;
      pos->loosescan_picker.loosescan_key=   best_loose_scan_key;
      pos->loosescan_picker.loosescan_parts= best_max_loose_keypart + 1;
      pos->use_join_buffer= FALSE;
      pos->table=           tab;
      pos->range_rowid_filter_info= tab->range_rowid_filter_info;
      pos->ref_depend_map=  best_ref_depend_map;
      DBUG_PRINT("info", ("Produced a LooseScan plan, key %s, %s",
                          tab->table->key_info[best_loose_scan_key].name.str,
                          best_loose_scan_start_key? "(ref access)":
                                                     "(range/index access)"));
    }
  }
};


void optimize_semi_joins(JOIN *join, table_map remaining_tables, uint idx,
                         double *current_record_count,
                         double *current_read_time, POSITION *loose_scan_pos);
void update_sj_state(JOIN *join, const JOIN_TAB *new_tab,
                     uint idx, table_map remaining_tables);
void restore_prev_sj_state(const table_map remaining_tables, 
                                  const JOIN_TAB *tab, uint idx);

void fix_semijoin_strategies_for_picked_join_order(JOIN *join);

bool setup_sj_materialization_part1(JOIN_TAB *sjm_tab);
bool setup_sj_materialization_part2(JOIN_TAB *sjm_tab);
uint get_number_of_tables_at_top_level(JOIN *join);


/*
  Temporary table used by semi-join DuplicateElimination strategy

  This consists of the temptable itself and data needed to put records
  into it. The table's DDL is as follows:

    CREATE TABLE tmptable (col VARCHAR(n) BINARY, PRIMARY KEY(col));

  where the primary key can be replaced with unique constraint if n exceeds
  the limit (as it is always done for query execution-time temptables).

  The record value is a concatenation of rowids of tables from the join we're
  executing. If a join table is on the inner side of the outer join, we
  assume that its rowid can be NULL and provide means to store this rowid in
  the tuple.
*/

class SJ_TMP_TABLE : public Sql_alloc
{
public:
  /*
    Array of pointers to tables whose rowids compose the temporary table
    record.
  */
  class TAB
  {
  public:
    JOIN_TAB *join_tab;
    uint rowid_offset;
    ushort null_byte;
    uchar null_bit;
  };
  TAB *tabs;
  TAB *tabs_end;
  
  /* 
    is_degenerate==TRUE means this is a special case where the temptable record
    has zero length (and presence of a unique key means that the temptable can
    have either 0 or 1 records). 
    In this case we don't create the physical temptable but instead record
    its state in SJ_TMP_TABLE::have_degenerate_row.
  */
  bool is_degenerate;

  /* 
    When is_degenerate==TRUE: the contents of the table (whether it has the
    record or not).
  */
  bool have_degenerate_row;
  
  /* table record parameters */
  uint null_bits;
  uint null_bytes;
  uint rowid_len;

  /* The temporary table itself (NULL means not created yet) */
  TABLE *tmp_table;
  
  /*
    These are the members we got from temptable creation code. We'll need
    them if we'll need to convert table from HEAP to MyISAM/Maria.
  */
  TMP_ENGINE_COLUMNDEF *start_recinfo;
  TMP_ENGINE_COLUMNDEF *recinfo;

  SJ_TMP_TABLE *next_flush_table; 

  int sj_weedout_delete_rows();
  int sj_weedout_check_row(THD *thd);
  bool create_sj_weedout_tmp_table(THD *thd);
};

int setup_semijoin_loosescan(JOIN *join);
int setup_semijoin_dups_elimination(JOIN *join, ulonglong options, 
                                    uint no_jbuf_after);
void destroy_sj_tmp_tables(JOIN *join);
int clear_sj_tmp_tables(JOIN *join);
int rewrite_to_index_subquery_engine(JOIN *join);


void get_delayed_table_estimates(TABLE *table,
                                 ha_rows *out_rows, 
                                 double *scan_time,
                                 double *startup_cost);

enum_nested_loop_state join_tab_execution_startup(JOIN_TAB *tab);


Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
4 Jul 2024 10.38 PM
root / root
0755
atomic
--
4 Jul 2024 10.38 PM
root / root
0755
providers
--
4 Jul 2024 10.38 PM
root / root
0755
aligned.h
1.109 KB
5 Jun 2024 5.31 PM
root / root
0644
aria_backup.h
1.511 KB
5 Jun 2024 5.31 PM
root / root
0644
assume_aligned.h
2.295 KB
5 Jun 2024 5.31 PM
root / root
0644
authors.h
9.903 KB
5 Jun 2024 5.31 PM
root / root
0644
backup.h
1.663 KB
5 Jun 2024 5.31 PM
root / root
0644
bounded_queue.h
6.674 KB
5 Jun 2024 5.31 PM
root / root
0644
client_settings.h
1.89 KB
5 Jun 2024 5.31 PM
root / root
0644
compat56.h
2.227 KB
5 Jun 2024 5.31 PM
root / root
0644
config.h
14.195 KB
5 Jun 2024 5.31 PM
root / root
0644
contributors.h
2.915 KB
5 Jun 2024 5.31 PM
root / root
0644
create_options.h
3.936 KB
5 Jun 2024 5.31 PM
root / root
0644
create_tmp_table.h
2.742 KB
5 Jun 2024 5.31 PM
root / root
0644
custom_conf.h
1.057 KB
5 Jun 2024 5.31 PM
root / root
0644
datadict.h
1.66 KB
5 Jun 2024 5.31 PM
root / root
0644
ddl_log.h
12.507 KB
5 Jun 2024 5.31 PM
root / root
0644
debug.h
1.205 KB
5 Jun 2024 5.31 PM
root / root
0644
debug_sync.h
1.998 KB
5 Jun 2024 5.31 PM
root / root
0644
derived_handler.h
2.323 KB
5 Jun 2024 5.31 PM
root / root
0644
derror.h
0.957 KB
5 Jun 2024 5.31 PM
root / root
0644
des_key_file.h
1.207 KB
5 Jun 2024 5.31 PM
root / root
0644
discover.h
1.533 KB
5 Jun 2024 5.31 PM
root / root
0644
dur_prop.h
1.057 KB
5 Jun 2024 5.31 PM
root / root
0644
embedded_priv.h
1.692 KB
5 Jun 2024 5.31 PM
root / root
0644
event_data_objects.h
4.063 KB
5 Jun 2024 5.31 PM
root / root
0644
event_db_repository.h
3.563 KB
5 Jun 2024 5.31 PM
root / root
0644
event_parse_data.h
2.831 KB
5 Jun 2024 5.31 PM
root / root
0644
event_queue.h
3.357 KB
5 Jun 2024 5.31 PM
root / root
0644
event_scheduler.h
3.213 KB
5 Jun 2024 5.31 PM
root / root
0644
events.h
4.594 KB
5 Jun 2024 5.31 PM
root / root
0644
field.h
216.232 KB
5 Jun 2024 5.31 PM
root / root
0644
field_comp.h
1.146 KB
5 Jun 2024 5.31 PM
root / root
0644
filesort.h
7.112 KB
5 Jun 2024 5.31 PM
root / root
0644
filesort_utils.h
8.002 KB
5 Jun 2024 5.31 PM
root / root
0644
ft_global.h
3.04 KB
5 Jun 2024 5.31 PM
root / root
0644
gcalc_slicescan.h
16.867 KB
5 Jun 2024 5.31 PM
root / root
0644
gcalc_tools.h
11.533 KB
5 Jun 2024 5.31 PM
root / root
0644
grant.h
2.693 KB
5 Jun 2024 5.31 PM
root / root
0644
group_by_handler.h
3.251 KB
5 Jun 2024 5.31 PM
root / root
0644
gstream.h
2.38 KB
5 Jun 2024 5.31 PM
root / root
0644
ha_handler_stats.h
1.854 KB
5 Jun 2024 5.31 PM
root / root
0644
ha_partition.h
62.804 KB
5 Jun 2024 5.31 PM
root / root
0644
ha_sequence.h
5.527 KB
5 Jun 2024 5.31 PM
root / root
0644
handle_connections_win.h
0.863 KB
5 Jun 2024 5.31 PM
root / root
0644
handler.h
194.121 KB
5 Jun 2024 5.31 PM
root / root
0644
hash.h
4.34 KB
5 Jun 2024 5.31 PM
root / root
0644
hash_filo.h
5.555 KB
5 Jun 2024 5.31 PM
root / root
0644
heap.h
9.201 KB
5 Jun 2024 5.31 PM
root / root
0644
hostname.h
5.292 KB
5 Jun 2024 5.31 PM
root / root
0644
ilist.h
6.982 KB
5 Jun 2024 5.31 PM
root / root
0644
init.h
0.832 KB
5 Jun 2024 5.31 PM
root / root
0644
innodb_priv.h
1.288 KB
5 Jun 2024 5.31 PM
root / root
0644
item.h
262.38 KB
5 Jun 2024 5.31 PM
root / root
0644
item_cmpfunc.h
129.832 KB
5 Jun 2024 5.31 PM
root / root
0644
item_create.h
11.23 KB
5 Jun 2024 5.31 PM
root / root
0644
item_func.h
132.077 KB
5 Jun 2024 5.31 PM
root / root
0644
item_geofunc.h
37.625 KB
5 Jun 2024 5.31 PM
root / root
0644
item_jsonfunc.h
24.113 KB
5 Jun 2024 5.31 PM
root / root
0644
item_row.h
5.081 KB
5 Jun 2024 5.31 PM
root / root
0644
item_strfunc.h
69.857 KB
5 Jun 2024 5.31 PM
root / root
0644
item_subselect.h
53.218 KB
5 Jun 2024 5.31 PM
root / root
0644
item_sum.h
70.147 KB
5 Jun 2024 5.31 PM
root / root
0644
item_timefunc.h
62.581 KB
5 Jun 2024 5.31 PM
root / root
0644
item_vers.h
4.278 KB
5 Jun 2024 5.31 PM
root / root
0644
item_windowfunc.h
33.435 KB
5 Jun 2024 5.31 PM
root / root
0644
item_xmlfunc.h
4.489 KB
5 Jun 2024 5.31 PM
root / root
0644
json_table.h
9.528 KB
5 Jun 2024 5.31 PM
root / root
0644
key.h
2.003 KB
5 Jun 2024 5.31 PM
root / root
0644
keycaches.h
1.948 KB
5 Jun 2024 5.31 PM
root / root
0644
lex.h
29.393 KB
5 Jun 2024 5.31 PM
root / root
0644
lex_charset.h
23.604 KB
5 Jun 2024 5.31 PM
root / root
0644
lex_string.h
3.973 KB
5 Jun 2024 5.31 PM
root / root
0644
lex_symbol.h
1.292 KB
5 Jun 2024 5.31 PM
root / root
0644
lf.h
6.311 KB
5 Jun 2024 5.31 PM
root / root
0644
lock.h
2.168 KB
5 Jun 2024 5.31 PM
root / root
0644
log.h
44.928 KB
5 Jun 2024 5.31 PM
root / root
0644
log_event.h
182.278 KB
5 Jun 2024 5.31 PM
root / root
0644
log_event_old.h
19.24 KB
5 Jun 2024 5.31 PM
root / root
0644
log_slow.h
2.385 KB
5 Jun 2024 5.31 PM
root / root
0644
maria.h
5.734 KB
5 Jun 2024 5.31 PM
root / root
0644
mariadb.h
1.247 KB
5 Jun 2024 5.31 PM
root / root
0644
mdl.h
37.564 KB
5 Jun 2024 5.31 PM
root / root
0644
mem_root_array.h
6.939 KB
5 Jun 2024 5.31 PM
root / root
0644
message.h
1.167 KB
5 Jun 2024 5.31 PM
root / root
0644
multi_range_read.h
22.453 KB
5 Jun 2024 5.31 PM
root / root
0644
my_alarm.h
2.372 KB
5 Jun 2024 5.31 PM
root / root
0644
my_apc.h
4.636 KB
5 Jun 2024 5.31 PM
root / root
0644
my_atomic.h
7.11 KB
5 Jun 2024 5.31 PM
root / root
0644
my_atomic_wrapper.h
2.979 KB
5 Jun 2024 5.31 PM
root / root
0644
my_base.h
26.533 KB
5 Jun 2024 5.31 PM
root / root
0644
my_bit.h
5.979 KB
5 Jun 2024 5.31 PM
root / root
0644
my_bitmap.h
5.373 KB
5 Jun 2024 5.31 PM
root / root
0644
my_check_opt.h
2.557 KB
5 Jun 2024 5.31 PM
root / root
0644
my_compare.h
10.932 KB
5 Jun 2024 5.31 PM
root / root
0644
my_counter.h
1.681 KB
5 Jun 2024 5.31 PM
root / root
0644
my_cpu.h
4.035 KB
5 Jun 2024 5.31 PM
root / root
0644
my_crypt.h
0.883 KB
5 Jun 2024 5.31 PM
root / root
0644
my_decimal.h
14.149 KB
5 Jun 2024 5.31 PM
root / root
0644
my_default.h
1.836 KB
5 Jun 2024 5.31 PM
root / root
0644
my_handler_errors.h
4.738 KB
5 Jun 2024 5.31 PM
root / root
0644
my_json_writer.h
18.138 KB
5 Jun 2024 5.31 PM
root / root
0644
my_libwrap.h
1.155 KB
5 Jun 2024 5.31 PM
root / root
0644
my_md5.h
1.451 KB
5 Jun 2024 5.31 PM
root / root
0644
my_minidump.h
0.828 KB
5 Jun 2024 5.31 PM
root / root
0644
my_nosys.h
1.404 KB
5 Jun 2024 5.31 PM
root / root
0644
my_rdtsc.h
9.475 KB
5 Jun 2024 5.31 PM
root / root
0644
my_rnd.h
0.99 KB
5 Jun 2024 5.31 PM
root / root
0644
my_service_manager.h
2.002 KB
5 Jun 2024 5.31 PM
root / root
0644
my_stack_alloc.h
3.762 KB
5 Jun 2024 5.31 PM
root / root
0644
my_stacktrace.h
3.14 KB
5 Jun 2024 5.31 PM
root / root
0644
my_time.h
10.221 KB
5 Jun 2024 5.31 PM
root / root
0644
my_tree.h
3.897 KB
5 Jun 2024 5.31 PM
root / root
0644
my_uctype.h
67.898 KB
5 Jun 2024 5.31 PM
root / root
0644
my_user.h
1.1 KB
5 Jun 2024 5.31 PM
root / root
0644
myisam.h
17.114 KB
5 Jun 2024 5.31 PM
root / root
0644
myisamchk.h
4.605 KB
5 Jun 2024 5.31 PM
root / root
0644
myisammrg.h
4.782 KB
5 Jun 2024 5.31 PM
root / root
0644
myisampack.h
14.579 KB
5 Jun 2024 5.31 PM
root / root
0644
mysqld.h
40.282 KB
5 Jun 2024 5.31 PM
root / root
0644
mysqld_default_groups.h
0.199 KB
5 Jun 2024 5.31 PM
root / root
0644
mysqld_suffix.h
1.173 KB
5 Jun 2024 5.31 PM
root / root
0644
mysys_err.h
2.951 KB
5 Jun 2024 5.31 PM
root / root
0644
opt_histogram_json.h
4.529 KB
5 Jun 2024 5.31 PM
root / root
0644
opt_range.h
62.536 KB
5 Jun 2024 5.31 PM
root / root
0644
opt_subselect.h
14.21 KB
5 Jun 2024 5.31 PM
root / root
0644
opt_trace.h
8.295 KB
5 Jun 2024 5.31 PM
root / root
0644
opt_trace_context.h
3.214 KB
5 Jun 2024 5.31 PM
root / root
0644
parse_file.h
4.291 KB
5 Jun 2024 5.31 PM
root / root
0644
partition_element.h
5.301 KB
5 Jun 2024 5.31 PM
root / root
0644
partition_info.h
19.398 KB
5 Jun 2024 5.31 PM
root / root
0644
password.h
1.143 KB
5 Jun 2024 5.31 PM
root / root
0644
pfs_file_provider.h
3.079 KB
5 Jun 2024 5.31 PM
root / root
0644
pfs_idle_provider.h
1.353 KB
5 Jun 2024 5.31 PM
root / root
0644
pfs_memory_provider.h
1.588 KB
5 Jun 2024 5.31 PM
root / root
0644
pfs_metadata_provider.h
1.854 KB
5 Jun 2024 5.31 PM
root / root
0644
pfs_socket_provider.h
2.205 KB
5 Jun 2024 5.31 PM
root / root
0644
pfs_stage_provider.h
1.52 KB
5 Jun 2024 5.31 PM
root / root
0644
pfs_statement_provider.h
4.245 KB
5 Jun 2024 5.31 PM
root / root
0644
pfs_table_provider.h
2.563 KB
5 Jun 2024 5.31 PM
root / root
0644
pfs_thread_provider.h
5.43 KB
5 Jun 2024 5.31 PM
root / root
0644
pfs_transaction_provider.h
2.779 KB
5 Jun 2024 5.31 PM
root / root
0644
privilege.h
28.212 KB
5 Jun 2024 5.31 PM
root / root
0644
probes_mysql.h
0.95 KB
5 Jun 2024 5.31 PM
root / root
0644
probes_mysql_dtrace.h
32.231 KB
5 Jun 2024 5.31 PM
root / root
0644
probes_mysql_nodtrace.h
4.888 KB
5 Jun 2024 5.31 PM
root / root
0644
procedure.h
6.356 KB
5 Jun 2024 5.31 PM
root / root
0644
protocol.h
12.243 KB
5 Jun 2024 5.31 PM
root / root
0644
proxy_protocol.h
0.535 KB
5 Jun 2024 5.31 PM
root / root
0644
queues.h
3.456 KB
5 Jun 2024 5.31 PM
root / root
0644
records.h
3.073 KB
5 Jun 2024 5.31 PM
root / root
0644
repl_failsafe.h
1.548 KB
5 Jun 2024 5.31 PM
root / root
0644
replication.h
15.752 KB
5 Jun 2024 5.31 PM
root / root
0644
rijndael.h
1.671 KB
5 Jun 2024 5.31 PM
root / root
0644
rowid_filter.h
15.125 KB
5 Jun 2024 5.31 PM
root / root
0644
rpl_constants.h
3.278 KB
5 Jun 2024 5.31 PM
root / root
0644
rpl_filter.h
4.641 KB
5 Jun 2024 5.31 PM
root / root
0644
rpl_gtid.h
28.483 KB
5 Jun 2024 5.31 PM
root / root
0644
rpl_injector.h
9.434 KB
5 Jun 2024 5.31 PM
root / root
0644
rpl_mi.h
15.785 KB
5 Jun 2024 5.31 PM
root / root
0644
rpl_parallel.h
17.85 KB
5 Jun 2024 5.31 PM
root / root
0644
rpl_record.h
1.548 KB
5 Jun 2024 5.31 PM
root / root
0644
rpl_record_old.h
1.374 KB
5 Jun 2024 5.31 PM
root / root
0644
rpl_reporting.h
3.626 KB
5 Jun 2024 5.31 PM
root / root
0644
rpl_rli.h
33.413 KB
5 Jun 2024 5.31 PM
root / root
0644
rpl_tblmap.h
3.103 KB
5 Jun 2024 5.31 PM
root / root
0644
rpl_utility.h
9.404 KB
5 Jun 2024 5.31 PM
root / root
0644
scheduler.h
3.124 KB
5 Jun 2024 5.31 PM
root / root
0644
scope.h
1.761 KB
5 Jun 2024 5.31 PM
root / root
0644
select_handler.h
2.176 KB
5 Jun 2024 5.31 PM
root / root
0644
semisync.h
2.233 KB
5 Jun 2024 5.31 PM
root / root
0644
semisync_master.h
25 KB
5 Jun 2024 5.31 PM
root / root
0644
semisync_master_ack_receiver.h
8.505 KB
5 Jun 2024 5.31 PM
root / root
0644
semisync_slave.h
3.646 KB
5 Jun 2024 5.31 PM
root / root
0644
service_versions.h
2.231 KB
5 Jun 2024 5.31 PM
root / root
0644
session_tracker.h
13.869 KB
5 Jun 2024 5.31 PM
root / root
0644
set_var.h
15.972 KB
5 Jun 2024 5.31 PM
root / root
0644
slave.h
11.987 KB
5 Jun 2024 5.31 PM
root / root
0644
source_revision.h
0.065 KB
5 Jun 2024 5.31 PM
root / root
0644
sp.h
21.632 KB
5 Jun 2024 5.31 PM
root / root
0644
sp_cache.h
1.997 KB
5 Jun 2024 5.31 PM
root / root
0644
sp_head.h
63.442 KB
5 Jun 2024 5.31 PM
root / root
0644
sp_pcontext.h
24.313 KB
5 Jun 2024 5.31 PM
root / root
0644
sp_rcontext.h
14.103 KB
5 Jun 2024 5.31 PM
root / root
0644
span.h
3.839 KB
5 Jun 2024 5.31 PM
root / root
0644
spatial.h
20.859 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_acl.h
13.801 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_admin.h
2.808 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_alloc.h
1.691 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_alter.h
14.954 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_analyse.h
10.917 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_analyze_stmt.h
12.386 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_array.h
6.659 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_audit.h
13.616 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_base.h
25.266 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_basic_types.h
9.305 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_binlog.h
0.874 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_bitmap.h
7.661 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_bootstrap.h
1.77 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_cache.h
21.152 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_callback.h
1.506 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_class.h
259.688 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_cmd.h
9.066 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_connect.h
3.983 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_const.h
10.721 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_crypt.h
1.403 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_cte.h
16.146 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_cursor.h
2.262 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_db.h
2.383 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_debug.h
5.514 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_delete.h
1.312 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_derived.h
1.259 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_digest.h
3.729 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_digest_stream.h
1.53 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_do.h
0.932 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_error.h
38.833 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_explain.h
28.636 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_expression_cache.h
4.228 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_get_diagnostics.h
7.679 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_handler.h
2.842 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_help.h
0.972 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_hset.h
3.335 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_i_s.h
8.288 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_insert.h
2.431 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_join_cache.h
47.124 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_lex.h
168.039 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_lifo_buffer.h
9.256 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_limit.h
3.112 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_list.h
21.912 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_load.h
1.246 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_locale.h
2.638 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_manager.h
0.938 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_mode.h
6.577 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_parse.h
8.272 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_partition.h
12.377 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_partition_admin.h
5.726 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_plist.h
7.551 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_plugin.h
7.39 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_plugin_compat.h
2.185 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_prepare.h
11.142 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_priv.h
17.663 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_profile.h
7.633 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_reload.h
1.012 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_rename.h
0.959 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_repl.h
2.974 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_schema.h
3.226 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_select.h
86.962 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_sequence.h
5.059 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_servers.h
1.735 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_show.h
9.6 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_signal.h
3.279 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_sort.h
21.496 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_statistics.h
16.105 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_string.h
38.744 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_table.h
9.415 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_test.h
1.552 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_time.h
8.178 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_trigger.h
11.853 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_truncate.h
2.021 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_tvc.h
2.361 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_type.h
287.722 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_type_fixedbin.h
62.761 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_type_fixedbin_storage.h
5.339 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_type_geom.h
18.593 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_type_int.h
9.767 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_type_json.h
6.011 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_type_real.h
1.228 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_type_string.h
1.591 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_udf.h
4.74 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_union.h
1.043 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_update.h
1.878 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_view.h
2.412 KB
5 Jun 2024 5.31 PM
root / root
0644
sql_window.h
6.646 KB
5 Jun 2024 5.31 PM
root / root
0644
ssl_compat.h
3.073 KB
5 Jun 2024 5.31 PM
root / root
0644
strfunc.h
2.222 KB
5 Jun 2024 5.31 PM
root / root
0644
structs.h
28.817 KB
5 Jun 2024 5.31 PM
root / root
0644
sys_vars_shared.h
2.612 KB
5 Jun 2024 5.31 PM
root / root
0644
t_ctype.h
5.507 KB
5 Jun 2024 5.31 PM
root / root
0644
table.h
112.589 KB
5 Jun 2024 5.31 PM
root / root
0644
table_cache.h
4.133 KB
5 Jun 2024 5.31 PM
root / root
0644
thr_alarm.h
2.863 KB
5 Jun 2024 5.31 PM
root / root
0644
thr_lock.h
7.178 KB
5 Jun 2024 5.31 PM
root / root
0644
thr_malloc.h
1.174 KB
5 Jun 2024 5.31 PM
root / root
0644
thr_timer.h
1.526 KB
5 Jun 2024 5.31 PM
root / root
0644
thread_cache.h
5.767 KB
5 Jun 2024 5.31 PM
root / root
0644
threadpool.h
4.668 KB
5 Jun 2024 5.31 PM
root / root
0644
threadpool_generic.h
3.876 KB
5 Jun 2024 5.31 PM
root / root
0644
threadpool_winsockets.h
2.236 KB
5 Jun 2024 5.31 PM
root / root
0644
transaction.h
1.432 KB
5 Jun 2024 5.31 PM
root / root
0644
tzfile.h
4.896 KB
5 Jun 2024 5.31 PM
root / root
0644
tztime.h
3.317 KB
5 Jun 2024 5.31 PM
root / root
0644
uniques.h
4.104 KB
5 Jun 2024 5.31 PM
root / root
0644
unireg.h
7.541 KB
5 Jun 2024 5.31 PM
root / root
0644
vers_string.h
2.475 KB
5 Jun 2024 5.31 PM
root / root
0644
violite.h
9.85 KB
5 Jun 2024 5.31 PM
root / root
0644
waiting_threads.h
4.426 KB
5 Jun 2024 5.31 PM
root / root
0644
welcome_copyright_notice.h
1.189 KB
5 Jun 2024 5.31 PM
root / root
0644
win_tzname_data.h
6.354 KB
5 Jun 2024 5.31 PM
root / root
0644
winservice.h
5.878 KB
5 Jun 2024 5.31 PM
root / root
0644
wqueue.h
1.528 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep.h
3.23 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_allowlist_service.h
1.011 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_applier.h
1.888 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_binlog.h
3.36 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_client_service.h
2.307 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_client_state.h
1.529 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_condition_variable.h
1.423 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_high_priority_service.h
4.568 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_mutex.h
1.184 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_mysqld.h
20.615 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_mysqld_c.h
1.198 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_on.h
1.678 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_priv.h
1.596 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_schema.h
5.231 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_server_service.h
3.253 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_server_state.h
2.433 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_sst.h
3.858 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_status.h
1.773 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_storage_service.h
1.688 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_thd.h
10.385 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_trans_observer.h
17.866 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_types.h
1.084 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_utils.h
9.577 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_var.h
4.274 KB
5 Jun 2024 5.31 PM
root / root
0644
wsrep_xid.h
1.415 KB
5 Jun 2024 5.31 PM
root / root
0644
xa.h
1.774 KB
5 Jun 2024 5.31 PM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF