~posulliv/drizzle/optimizer-style-cleanup

« back to all changes in this revision

Viewing changes to plugin/collation_dictionary/character_sets.cc

  • Committer: Padraig O'Sullivan
  • Date: 2010-03-15 14:05:26 UTC
  • mfrom: (1237.9.99 staging)
  • Revision ID: osullivan.padraig@gmail.com-20100315140526-opbgwdwn6tfecdkq
MergeĀ fromĀ trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
34
34
}
35
35
 
36
36
CharacterSetsTool::Generator::Generator(Field **arg) :
37
 
  plugin::TableFunction::Generator(arg)
38
 
{
39
 
  cs= all_charsets;
 
37
  plugin::TableFunction::Generator(arg),
 
38
  is_char_primed(false)
 
39
{
 
40
}
 
41
 
 
42
bool CharacterSetsTool::Generator::checkCharacterSet()
 
43
{
 
44
  if (character_set() && (character_set()->state & MY_CS_PRIMARY) &&
 
45
      (character_set()->state & MY_CS_AVAILABLE) && not (character_set()->state & MY_CS_HIDDEN))
 
46
  {
 
47
    return false;
 
48
  }
 
49
 
 
50
  return true;
 
51
}
 
52
 
 
53
bool CharacterSetsTool::Generator::nextCharacterSetCore()
 
54
{
 
55
  if (is_char_primed)
 
56
  {
 
57
    character_set_iter++;
 
58
  }
 
59
  else
 
60
  {
 
61
    character_set_iter= all_charsets;
 
62
    is_char_primed= true;
 
63
  }
 
64
 
 
65
  if (character_set_iter == all_charsets+255)
 
66
    return false;
 
67
 
 
68
  if (checkCharacterSet())
 
69
      return false;
 
70
 
 
71
  return true;
 
72
}
 
73
 
 
74
bool CharacterSetsTool::Generator::nextCharacterSet()
 
75
{
 
76
  while (not nextCharacterSetCore())
 
77
  {
 
78
    if (character_set_iter == all_charsets+255)
 
79
      return false;
 
80
  }
 
81
 
 
82
  return true;
40
83
}
41
84
 
42
85
bool CharacterSetsTool::Generator::populate()
43
86
{
44
 
  for (; cs < all_charsets+255 ; cs++)
 
87
  if (nextCharacterSet())
45
88
  {
46
 
    const CHARSET_INFO * const tmp_cs= cs[0];
47
 
 
48
 
    if (tmp_cs && (tmp_cs->state & MY_CS_PRIMARY) &&
49
 
        (tmp_cs->state & MY_CS_AVAILABLE) &&
50
 
        ! (tmp_cs->state & MY_CS_HIDDEN))
51
 
    {
52
 
      /* CHARACTER_SET_NAME */
53
 
      push(tmp_cs->csname);
54
 
 
55
 
      /* DEFAULT_COLLATE_NAME */
56
 
      push(tmp_cs->name);
57
 
 
58
 
      /* DESCRIPTION */
59
 
      push(tmp_cs->comment);
60
 
 
61
 
      /* MAXLEN */
62
 
      push((int64_t) tmp_cs->mbmaxlen);
63
 
 
64
 
      cs++;
65
 
 
66
 
      return true;
67
 
    }
 
89
    fill();
 
90
    return true;
68
91
  }
69
92
 
70
93
  return false;
71
94
}
 
95
 
 
96
void CharacterSetsTool::Generator::fill()
 
97
{
 
98
  const CHARSET_INFO * const tmp_cs= character_set_iter[0];
 
99
 
 
100
  /* CHARACTER_SET_NAME */
 
101
  push(tmp_cs->csname);
 
102
 
 
103
  /* DEFAULT_COLLATE_NAME */
 
104
  push(tmp_cs->name);
 
105
 
 
106
  /* DESCRIPTION */
 
107
  push(tmp_cs->comment);
 
108
 
 
109
  /* MAXLEN */
 
110
  push(static_cast<int64_t>(tmp_cs->mbmaxlen));
 
111
}