~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/identifier/schema.cc

  • Committer: Mark Atwood
  • Date: 2011-08-12 04:08:33 UTC
  • mfrom: (2385.2.17 refactor5)
  • Revision ID: me@mark.atwood.name-20110812040833-u6j85nc6ahuc0dtz
mergeĀ lp:~olafvdspek/drizzle/refactor5

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
 */
20
20
 
21
21
#include <config.h>
22
 
 
23
 
#include <assert.h>
24
 
 
 
22
#include <cassert>
 
23
#include <drizzled/errmsg_print.h>
 
24
#include <drizzled/gettext.h>
25
25
#include <drizzled/identifier.h>
26
26
#include <drizzled/session.h>
27
27
#include <drizzled/internal/my_sys.h>
28
 
 
 
28
#include <drizzled/catalog/local.h>
29
29
#include <drizzled/util/tablename_to_filename.h>
30
30
#include <drizzled/util/backtrace.h>
 
31
#include <drizzled/charset.h>
31
32
 
32
33
#include <algorithm>
33
34
#include <sstream>
37
38
 
38
39
using namespace std;
39
40
 
40
 
namespace drizzled
41
 
{
42
 
 
43
 
namespace identifier
44
 
{
45
 
 
46
 
extern string drizzle_tmpdir;
47
 
 
48
 
static size_t build_schema_filename(string &path, const string &db)
49
 
{
50
 
  path.append("");
51
 
  bool conversion_error= false;
52
 
 
53
 
  conversion_error= util::tablename_to_filename(db, path);
54
 
  if (conversion_error)
55
 
  {
56
 
    errmsg_printf(error::ERROR,
57
 
                  _("Schema name cannot be encoded and fit within filesystem "
58
 
                    "name length restrictions."));
59
 
    return 0;
60
 
  }
61
 
 
62
 
  return path.length();
63
 
}
 
41
namespace drizzled {
 
42
namespace identifier {
64
43
 
65
44
Schema::Schema(const std::string &db_arg) :
66
 
  db(db_arg),
67
 
  db_path("")
 
45
  db(db_arg)
68
46
69
47
#if 0
70
48
  string::size_type lastPos= db.find_first_of('/', 0);
78
56
 
79
57
  if (not db_arg.empty())
80
58
  {
81
 
    build_schema_filename(db_path, db);
 
59
    db_path += util::tablename_to_filename(db);
82
60
    assert(db_path.length()); // TODO throw exception, this is a possibility
83
61
  }
84
62
}
85
63
 
86
 
void Schema::getSQLPath(std::string &arg) const
87
 
{
88
 
  arg= db;
89
 
}
90
 
 
91
64
const std::string &Schema::getPath() const
92
65
{
93
66
  return db_path;
98
71
  return boost::iequals(arg, db);
99
72
}
100
73
 
101
 
bool Schema::compare(Schema::const_reference arg) const
 
74
bool Schema::compare(const Schema& arg) const
102
75
{
103
76
  return boost::iequals(arg.getSchemaName(), db);
104
77
}
134
107
    }
135
108
 
136
109
    {
137
 
      const CHARSET_INFO * const cs= &my_charset_utf8mb4_general_ci;
 
110
      const charset_info_st * const cs= &my_charset_utf8mb4_general_ci;
138
111
 
139
112
      int well_formed_error;
140
113
      uint32_t res= cs->cset->well_formed_len(cs, db.c_str(), db.c_str() + db.length(),
164
137
 
165
138
std::ostream& operator<<(std::ostream& output, const Schema&identifier)
166
139
{
167
 
  output << "identifier::Schema:(";
168
 
  output <<  catalog::local_identifier();
169
 
  output << ", ";
170
 
  output <<  identifier.getSchemaName().c_str();
171
 
  output << ", ";
172
 
  output << identifier.getPath().c_str();
173
 
  output << ")";
174
 
 
175
 
  return output;  // for multiple << operators.
 
140
  return output << "identifier::Schema:(" <<  drizzled::catalog::local_identifier() << ", " <<  identifier.getSchemaName() << ", " << identifier.getPath() << ")";
176
141
}
177
142
 
178
143
} /* namespace identifier */