~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/archive/ha_archive.cc

  • Committer: Brian Aker
  • Date: 2009-11-18 06:11:12 UTC
  • mfrom: (1220.1.10 staging)
  • Revision ID: brian@gaz-20091118061112-tyf4qrfr5v7i946b
Monty + Brian Merge.

Show diffs side-by-side

added added

removed removed

Lines of Context:
145
145
    table_definition_ext= ARZ;
146
146
  }
147
147
 
 
148
  uint64_t table_flags() const
 
149
  {
 
150
    return (HA_NO_TRANSACTIONS |
 
151
            HA_STATS_RECORDS_IS_EXACT |
 
152
            HA_HAS_RECORDS);
 
153
  }
 
154
 
148
155
  virtual Cursor *create(TableShare &table,
149
156
                          MEM_ROOT *mem_root)
150
157
  {
230
237
                                        drizzled::message::Table *table_proto)
231
238
{
232
239
  struct stat stat_info;
233
 
  int error= 0;
 
240
  int error= ENOENT;
234
241
  string proto_path;
235
242
 
236
243
  proto_path.reserve(FN_REFLEN);
240
247
 
241
248
  if (stat(proto_path.c_str(),&stat_info))
242
249
    return errno;
 
250
  else
 
251
    error= EEXIST;
243
252
 
244
253
  if (table_proto)
245
254
  {
246
255
    azio_stream proto_stream;
247
256
    char* proto_string;
248
 
    if(azopen(&proto_stream, proto_path.c_str(), O_RDONLY, AZ_METHOD_BLOCK) == 0)
 
257
    if (azopen(&proto_stream, proto_path.c_str(), O_RDONLY, AZ_METHOD_BLOCK) == 0)
249
258
      return HA_ERR_CRASHED_ON_USAGE;
250
259
 
251
260
    proto_string= (char*)malloc(sizeof(char) * proto_stream.frm_length);
257
266
 
258
267
    azread_frm(&proto_stream, proto_string);
259
268
 
260
 
    if(table_proto->ParseFromArray(proto_string, proto_stream.frm_length) == false)
 
269
    if (table_proto->ParseFromArray(proto_string, proto_stream.frm_length) == false)
261
270
      error= HA_ERR_CRASHED_ON_USAGE;
262
271
 
263
272
    azclose(&proto_stream);
264
273
    free(proto_string);
265
274
  }
266
275
 
267
 
  return EEXIST;
 
276
  return error;
268
277
}
269
278
 
270
279
static ArchiveEngine *archive_engine= NULL;
1042
1051
 
1043
1052
 
1044
1053
/*
1045
 
  Thanks to the table flag HA_REC_NOT_IN_SEQ this will be called after
 
1054
  Thanks to the table bool is_ordered this will be called after
1046
1055
  each call to ha_archive::rnd_next() if an ordering of the rows is
1047
1056
  needed.
1048
1057
*/
1436
1445
  NULL
1437
1446
};
1438
1447
 
1439
 
drizzle_declare_plugin(archive)
 
1448
drizzle_declare_plugin
1440
1449
{
1441
1450
  "ARCHIVE",
1442
1451
  "3.5",