~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/identifier/schema.cc

  • Committer: Olaf van der Spek
  • Date: 2011-10-18 13:52:19 UTC
  • mto: This revision was merged to the branch mainline in revision 2443.
  • Revision ID: olafvdspek@gmail.com-20111018135219-vn5xhy8pvumotthk
Refactor

Show diffs side-by-side

added added

removed removed

Lines of Context:
41
41
namespace drizzled {
42
42
namespace identifier {
43
43
 
44
 
Schema::Schema(const std::string &db_arg) :
45
 
  db(db_arg)
 
44
Schema::Schema(str_ref db_arg) :
 
45
  db(db_arg.data(), db_arg.size())
46
46
47
47
#if 0
48
48
  string::size_type lastPos= db.find_first_of('/', 0);
78
78
 
79
79
bool Schema::isValid() const
80
80
{
81
 
  bool error= false;
82
 
 
83
 
  do
84
 
  {
85
 
    if (db.empty())
86
 
    {
87
 
      error= true;
88
 
      break;
89
 
    }
90
 
 
91
 
    if (db.size() > NAME_LEN)
92
 
    {
93
 
      error= true;
94
 
      break;
95
 
    }
96
 
 
97
 
    if (db.at(db.length() -1) == ' ')
98
 
    {
99
 
      error= true;
100
 
      break;
101
 
    }
102
 
 
103
 
    if (db.at(0) == '.')
104
 
    {
105
 
      error= true;
106
 
      break;
107
 
    }
108
 
 
109
 
    {
110
 
      const charset_info_st * const cs= &my_charset_utf8mb4_general_ci;
111
 
 
112
 
      int well_formed_error;
113
 
      uint32_t res= cs->cset->well_formed_len(cs, db.c_str(), db.c_str() + db.length(),
114
 
                                              NAME_CHAR_LEN, &well_formed_error);
115
 
      if (well_formed_error or db.length() != res)
116
 
      {
117
 
        error= true;
118
 
        break;
119
 
      }
120
 
    }
121
 
  } while (0);
122
 
 
123
 
  if (error)
124
 
  {
125
 
    my_error(ER_WRONG_DB_NAME, *this);
126
 
 
127
 
    return false;
 
81
  const charset_info_st& cs= my_charset_utf8mb4_general_ci;
 
82
  int well_formed_error;
 
83
  if (not db.empty()
 
84
    && db.size() <= NAME_LEN
 
85
    && db.at(0) != '.'
 
86
    && db.at(db.size() - 1) != ' '
 
87
    && db.size() == cs.cset->well_formed_len(&cs, db.c_str(), db.c_str() + db.length(), NAME_CHAR_LEN, &well_formed_error))
 
88
  {
 
89
    if (not well_formed_error)
 
90
      return true;
128
91
  }
129
 
 
130
 
  return true;
 
92
  my_error(ER_WRONG_DB_NAME, *this);
 
93
  return false;
131
94
}
132
95
 
133
96
const std::string &Schema::getCatalogName() const