Drizzled Public API Documentation

schemas.cc
1 /* - mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2  * vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3  *
4  * Copyright (C) 2010 Sun Microsystems, Inc.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #include <config.h>
22 #include <plugin/schema_dictionary/dictionary.h>
23 
24 using namespace std;
25 using namespace drizzled;
26 
27 SchemasTool::SchemasTool() :
28  DataDictionary("SCHEMAS")
29 {
30  add_field("SCHEMA_NAME");
31  add_field("DEFAULT_COLLATION_NAME");
32  add_field("SCHEMA_CREATION_TIME");
33  add_field("SCHEMA_UPDATE_TIME");
34  add_field("SCHEMA_UUID", plugin::TableFunction::STRING, 36, true);
35  add_field("SCHEMA_VERSION", plugin::TableFunction::NUMBER, 0, true);
36  add_field("SCHEMA_USE_COUNT", plugin::TableFunction::NUMBER, 0, true);
37  add_field("IS_REPLICATED", plugin::TableFunction::BOOLEAN, 0, false);
38  add_field("SCHEMA_DEFINER", plugin::TableFunction::STRING, 64, true);
39 }
40 
41 SchemasTool::Generator::Generator(drizzled::Field **arg) :
42  DataDictionary::Generator(arg),
43  schema_generator(getSession())
44 {
45 }
46 
47 bool SchemasTool::Generator::populate()
48 {
49  drizzled::message::schema::shared_ptr schema_ptr;
50  while ((schema_ptr= schema_generator))
51  {
52  /* SCHEMA_NAME */
53  push(schema_ptr->name());
54 
55  /* DEFAULT_COLLATION_NAME */
56  push(schema_ptr->collation());
57 
58  /* SCHEMA_CREATION_TIME */
59  time_t time_arg= schema_ptr->creation_timestamp();
60  char buffer[40];
61  struct tm tm_buffer;
62 
63  localtime_r(&time_arg, &tm_buffer);
64  strftime(buffer, sizeof(buffer), "%a %b %d %H:%M:%S %Y", &tm_buffer);
65  push(buffer);
66 
67  /* SCHEMA_UPDATE_TIME */
68  time_arg= schema_ptr->update_timestamp();
69  localtime_r(&time_arg, &tm_buffer);
70  strftime(buffer, sizeof(buffer), "%a %b %d %H:%M:%S %Y", &tm_buffer);
71  push(buffer);
72 
73  /* SCHEMA_UUID */
74  push(schema_ptr->uuid());
75 
76  /* SCHEMA_VERSION */
77  push(schema_ptr->version());
78 
79  /* SCHEMA_USE_COUNT */
80  push(schema_ptr->version());
81 
82  /* IS_REPLICATED */
83  push(message::is_replicated(*schema_ptr));
84 
85  /* _DEFINER */
86  if (message::has_definer(*schema_ptr))
87  {
88  push(message::definer(*schema_ptr));
89  }
90  else
91  {
92  push();
93  }
94 
95  return true;
96  }
97 
98  return false;
99 }
TODO: Rename this file - func.h is stupid.