~kentokushiba/spiderformysql/spider-2.0-src

« back to all changes in this revision

Viewing changes to spd_sys_table.cc

  • Committer: Kentoku SHIBA
  • Date: 2011-05-12 15:25:47 UTC
  • Revision ID: kentokushiba@gmail.com-20110512152547-6hb2cvwnbg7v6ax3
2.25

Show diffs side-by-side

added added

removed removed

Lines of Context:
242
242
  DBUG_RETURN(table->file->ha_index_end());
243
243
}
244
244
 
 
245
int spider_sys_rnd_init(
 
246
  TABLE *table,
 
247
  bool scan
 
248
) {
 
249
  DBUG_ENTER("spider_sys_rnd_init");
 
250
  DBUG_RETURN(table->file->ha_rnd_init(scan));
 
251
}
 
252
 
 
253
int spider_sys_rnd_end(
 
254
  TABLE *table
 
255
) {
 
256
  DBUG_ENTER("spider_sys_rnd_end");
 
257
  DBUG_RETURN(table->file->ha_rnd_end());
 
258
}
 
259
 
245
260
int spider_check_sys_table(
246
261
  TABLE *table,
247
262
  char *table_key
615
630
  DBUG_VOID_RETURN;
616
631
}
617
632
 
 
633
void spider_store_tables_link_idx_str(
 
634
  TABLE *table,
 
635
  const char *link_idx,
 
636
  const uint link_idx_length
 
637
) {
 
638
  DBUG_ENTER("spider_store_tables_link_idx_str");
 
639
  table->field[2]->store(
 
640
    link_idx,
 
641
    link_idx_length,
 
642
    system_charset_info);
 
643
  DBUG_PRINT("info",("spider field[2]->null_bit = %d",
 
644
    table->field[2]->null_bit));
 
645
  DBUG_VOID_RETURN;
 
646
}
 
647
 
618
648
void spider_store_tables_priority(
619
649
  TABLE *table,
620
650
  longlong priority
1727
1757
#else
1728
1758
  Open_tables_backup open_tables_backup;
1729
1759
#endif
1730
 
  DBUG_ENTER("spider_get_ping_table_tgt");
 
1760
  DBUG_ENTER("spider_sys_update_tables_link_status");
1731
1761
  if (
1732
1762
    !(table_tables = spider_open_sys_table(
1733
1763
      thd, SPIDER_SYS_TABLES_TABLE_NAME_STR,
1752
1782
  DBUG_RETURN(error_num);
1753
1783
}
1754
1784
 
 
1785
int spider_get_sys_link_mon_key(
 
1786
  TABLE *table,
 
1787
  SPIDER_MON_KEY *mon_key,
 
1788
  MEM_ROOT *mem_root,
 
1789
  int *same
 
1790
) {
 
1791
  char *db_name, *table_name, *link_id;
 
1792
  uint db_name_length, table_name_length, link_id_length;
 
1793
  DBUG_ENTER("spider_get_sys_link_mon_key");
 
1794
  if (
 
1795
    table->field[0]->is_null() ||
 
1796
    table->field[1]->is_null() ||
 
1797
    table->field[2]->is_null()
 
1798
  ) {
 
1799
    my_printf_error(ER_SPIDER_SYS_TABLE_VERSION_NUM,
 
1800
      ER_SPIDER_SYS_TABLE_VERSION_STR, MYF(0),
 
1801
      SPIDER_SYS_LINK_MON_TABLE_NAME_STR);
 
1802
    DBUG_RETURN(ER_SPIDER_SYS_TABLE_VERSION_NUM);
 
1803
  }
 
1804
 
 
1805
  if (
 
1806
    !(db_name = get_field(mem_root, table->field[0])) ||
 
1807
    !(table_name = get_field(mem_root, table->field[1])) ||
 
1808
    !(link_id = get_field(mem_root, table->field[2]))
 
1809
  )
 
1810
    DBUG_RETURN(HA_ERR_OUT_OF_MEM);
 
1811
 
 
1812
  db_name_length = strlen(db_name);
 
1813
  table_name_length = strlen(table_name);
 
1814
  link_id_length = strlen(link_id);
 
1815
 
 
1816
  if (
 
1817
    db_name_length > SPIDER_SYS_LINK_MON_TABLE_DB_NAME_SIZE ||
 
1818
    table_name_length > SPIDER_SYS_LINK_MON_TABLE_TABLE_NAME_SIZE ||
 
1819
    link_id_length > SPIDER_SYS_LINK_MON_TABLE_LINK_ID_SIZE
 
1820
  ) {
 
1821
    my_printf_error(ER_SPIDER_SYS_TABLE_VERSION_NUM,
 
1822
      ER_SPIDER_SYS_TABLE_VERSION_STR, MYF(0),
 
1823
      SPIDER_SYS_LINK_MON_TABLE_NAME_STR);
 
1824
    DBUG_RETURN(ER_SPIDER_SYS_TABLE_VERSION_NUM);
 
1825
  }
 
1826
 
 
1827
  if (
 
1828
    db_name_length == mon_key->db_name_length &&
 
1829
    table_name_length == mon_key->table_name_length &&
 
1830
    link_id_length == mon_key->link_id_length &&
 
1831
    !memcmp(db_name, mon_key->db_name, db_name_length) &&
 
1832
    !memcmp(table_name, mon_key->table_name, table_name_length) &&
 
1833
    !memcmp(link_id, mon_key->link_id, link_id_length)
 
1834
  ) {
 
1835
    /* same key */
 
1836
    *same = 1;
 
1837
    DBUG_RETURN(0);
 
1838
  }
 
1839
 
 
1840
  *same = 0;
 
1841
  mon_key->db_name_length = db_name_length;
 
1842
  memcpy(mon_key->db_name, db_name, db_name_length + 1);
 
1843
  mon_key->table_name_length = table_name_length;
 
1844
  memcpy(mon_key->table_name, table_name, table_name_length + 1);
 
1845
  mon_key->link_id_length = link_id_length;
 
1846
  memcpy(mon_key->link_id, link_id, link_id_length + 1);
 
1847
  DBUG_RETURN(0);
 
1848
}
 
1849
 
1755
1850
int spider_get_sys_link_mon_server_id(
1756
1851
  TABLE *table,
1757
1852
  uint32 *server_id,