~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/serialize/table_reader.cc

  • Committer: Brian Aker
  • Date: 2008-11-16 02:03:36 UTC
  • mfrom: (584.2.8 drizzle-nofrm)
  • Revision ID: brian@tangent.org-20081116020336-89horp2vrgqoqv0f
Merge stewert

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
#include "table.pb.h"
5
5
using namespace std;
6
6
 
7
 
/* 
 
7
/*
8
8
  Written from Google proto example
9
9
*/
10
10
 
11
 
void print_field(const drizzle::Table::Field *field) 
 
11
void print_field(const drizzle::Table::Field *field)
12
12
{
13
13
  using namespace drizzle;
14
14
  cout << "\t`" << field->name() << "`";
42
42
      cout << ") ";
43
43
      break;
44
44
    }
45
 
  case Table::Field::SET:
46
 
    cout << " SET ";
47
 
    break;
48
45
  case Table::Field::TINYINT:
49
46
    cout << " TINYINT ";
50
47
    break;
51
 
  case Table::Field::SMALLINT:
52
 
    cout << " SMALLINT ";
53
 
    break;
54
48
  case Table::Field::INTEGER:
55
 
    cout << " INTEGER ";
 
49
    cout << " INT" ;
56
50
    break;
57
51
  case Table::Field::BIGINT:
58
52
    cout << " BIGINT ";
60
54
  case Table::Field::DECIMAL:
61
55
    cout << " DECIMAL(" << field->numeric_options().precision() << "," << field->numeric_options().scale() << ") ";
62
56
    break;
63
 
  case Table::Field::VARBINARY:
64
 
    cout << " VARBINARY(" << field->string_options().length() << ") ";
65
 
    break;
66
57
  case Table::Field::DATE:
67
58
    cout << " DATE ";
68
59
    break;
79
70
 
80
71
  if (field->type() == Table::Field::INTEGER
81
72
      || field->type() == Table::Field::BIGINT
82
 
      || field->type() == Table::Field::SMALLINT
83
 
      || field->type() == Table::Field::TINYINT) {
 
73
      || field->type() == Table::Field::TINYINT)
 
74
  {
84
75
    if (field->has_constraints()
85
76
        && field->constraints().has_is_unsigned())
86
77
      if (field->constraints().is_unsigned())
96
87
    cout << " NOT NULL ";
97
88
 
98
89
  if (field->type() == Table::Field::TEXT
99
 
      || field->type() == Table::Field::VARCHAR) {
100
 
    if (field->string_options().has_charset())
101
 
      cout << " CHARACTER SET " << field->string_options().charset();
102
 
 
 
90
      || field->type() == Table::Field::VARCHAR)
 
91
  {
103
92
    if (field->string_options().has_collation())
104
93
      cout << " COLLATE " << field->string_options().collation();
105
94
  }
116
105
    cout << " COMMENT `" << field->comment() << "` ";
117
106
}
118
107
 
119
 
void print_engine(const drizzle::Table::StorageEngine *engine) {
 
108
void print_engine(const drizzle::Table::StorageEngine *engine)
 
109
{
120
110
  using namespace drizzle;
121
111
  uint32_t x;
122
112
 
128
118
  }
129
119
}
130
120
 
131
 
void print_index(const drizzle::Table::Index *index) {
 
121
void print_index(const drizzle::Table::Index *index)
 
122
{
132
123
  using namespace drizzle;
133
124
  uint32_t x;
134
125
 
135
126
  if (index->is_primary())
136
 
    cout << " PRIMARY"; 
 
127
    cout << " PRIMARY";
137
128
  else if (index->is_unique())
138
 
    cout << " UNIQUE"; 
 
129
    cout << " UNIQUE";
139
130
  cout << " KEY `" << index->name() << "` (";
140
131
  {
141
132
    int x;
155
146
  cout << "\t";
156
147
}
157
148
 
158
 
void print_table(const drizzle::Table *table) 
 
149
void print_table_stats(const drizzle::Table::TableStats *stats)
 
150
{
 
151
 
 
152
}
 
153
 
 
154
void print_table_options(const drizzle::Table::TableOptions *options)
 
155
{
 
156
  if (options->has_comment())
 
157
    cout << " COMMENT = '" << options->comment() << "' " << endl;
 
158
 
 
159
  if (options->has_collation())
 
160
    cout << " COLLATE = '" << options->collation() << "' " << endl;
 
161
}
 
162
 
 
163
 
 
164
void print_table(const drizzle::Table *table)
159
165
{
160
166
  using namespace drizzle;
161
167
  uint32_t x;
166
172
    cout << "TEMPORARY ";
167
173
 
168
174
  cout << "TABLE `" << table->name() << "` (" << endl;
169
 
  
 
175
 
170
176
  for (x= 0; x < table->field_size() ; x++)
171
177
  {
172
178
    const Table::Field field = table->field(x);
190
196
  cout << endl;
191
197
 
192
198
  cout << ") " << endl;
193
 
  
 
199
 
194
200
  print_engine(&table->engine());
195
201
 
196
 
  /*
197
202
  if (table->has_options())
198
203
    print_table_options(&table->options());
 
204
  /*
199
205
  if (table->has_stats())
200
206
    print_table_stats(&table->stats());
201
207
  */
202
 
  if (table->has_comment())
203
 
    cout << " COMMENT = `" << table->comment() << "` " << endl;
204
 
}
205
 
 
206
 
void print_table_stats(const drizzle::Table::TableStats *stats) {
207
 
  
208
 
}
209
 
 
210
 
void print_table_options(const drizzle::Table::TableOptions *options) {
211
 
  if (options->has_collation())
212
 
    cout << " COLLATE = `" << options->collation() << "` " << endl;
213
 
  if (options->has_charset())
214
 
    cout << " CHARACTER SET = `" << options->charset() << "` " << endl;
215
 
}
216
 
 
217
 
int main(int argc, char* argv[]) 
 
208
}
 
209
 
 
210
int main(int argc, char* argv[])
218
211
{
219
212
  GOOGLE_PROTOBUF_VERIFY_VERSION;
220
213
 
228
221
  {
229
222
    // Read the existing address book.
230
223
    fstream input(argv[1], ios::in | ios::binary);
231
 
    if (!table.ParseFromIstream(&input)) 
 
224
    if (!table.ParseFromIstream(&input))
232
225
    {
233
226
      cerr << "Failed to parse table." << endl;
234
227
      return -1;