~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/memcached_query_cache/data_dictionary_schema.cc

  • Committer: Monty Taylor
  • Date: 2011-04-07 16:51:38 UTC
  • mfrom: (2263.6.2 remove_memcached_qc)
  • Revision ID: mordred@inaugust.com-20110407165138-4mbpizlwlwt5hbl1
Merge David: Remove memcached query cache

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* 
2
 
 * Copyright (C) 2010 Djellel Eddine Difallah
3
 
 * All rights reserved.
4
 
 *
5
 
 * Redistribution and use in source and binary forms, with or without
6
 
 * modification, are permitted provided that the following conditions are met:
7
 
 *
8
 
 *   * Redistributions of source code must retain the above copyright notice,
9
 
 *     this list of conditions and the following disclaimer.
10
 
 *   * Redistributions in binary form must reproduce the above copyright notice,
11
 
 *     this list of conditions and the following disclaimer in the documentation
12
 
 *     and/or other materials provided with the distribution.
13
 
 *   * Neither the name of Djellel Eddine Difallah nor the names of its contributors
14
 
 *     may be used to endorse or promote products derived from this software
15
 
 *     without specific prior written permission.
16
 
 *
17
 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
 
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
 
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
 
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21
 
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22
 
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
 
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
 
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
 
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
 
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
27
 
 * THE POSSIBILITY OF SUCH DAMAGE.
28
 
 */
29
 
 
30
 
 
31
 
/**
32
 
 * @file
33
 
 *
34
 
 * Implements the DATA_DICTIONARY views which allows querying the
35
 
 * state of the Query Cache
36
 
 *
37
 
 * CREATE TABLE DATA_DICTIONARY.QUERY_CACHE_ENTRIES (
38
 
 *   KEY VARCHAR NOT NULL
39
 
 * , SCHEMA VARCHAR NOT NULL
40
 
 * , SQL VARCHAR NOT NULL
41
 
 * );
42
 
 */
43
 
 
44
 
#include <config.h>
45
 
 
46
 
#include "query_cache_service.h"
47
 
#include "data_dictionary_schema.h"
48
 
 
49
 
#include <fcntl.h>
50
 
#include <sys/stat.h>
51
 
 
52
 
using namespace std;
53
 
using namespace drizzled;
54
 
 
55
 
/*
56
 
 *
57
 
 * Query_Cache_Meta_ENTRIES view
58
 
 *
59
 
 */
60
 
 
61
 
QueryCacheTool::QueryCacheTool() :
62
 
  plugin::TableFunction("DATA_DICTIONARY", "QUERY_CACHE_ENTRIES")
63
 
{
64
 
  add_field("key");
65
 
  add_field("schema");
66
 
  add_field("sql");
67
 
}
68
 
 
69
 
QueryCacheTool::Generator::Generator(Field **arg) :
70
 
  plugin::TableFunction::Generator(arg)
71
 
{
72
 
  it= QueryCacheService::cache.begin();
73
 
  end= QueryCacheService::cache.end(); 
74
 
}
75
 
 
76
 
bool QueryCacheTool::Generator::populate()
77
 
{
78
 
  if (it == end)
79
 
  { 
80
 
    return false;
81
 
  } 
82
 
 
83
 
  QueryCacheService::CacheEntry &entry= *it;
84
 
 
85
 
  push(entry.first);
86
 
  push(entry.second.schema());
87
 
  push(entry.second.sql());
88
 
 
89
 
  it++;
90
 
 
91
 
  return true;
92
 
}
93
 
 
94
 
/*
95
 
 *
96
 
 * Query_Cache_Cached_Tables view
97
 
 *
98
 
 */
99
 
 
100
 
CachedTables::CachedTables() :
101
 
  plugin::TableFunction("DATA_DICTIONARY", "QUERY_CACHED_TABLES")
102
 
{
103
 
  add_field("Table");
104
 
  add_field("Cache_Keys");
105
 
}
106
 
 
107
 
CachedTables::Generator::Generator(Field **arg) :
108
 
  plugin::TableFunction::Generator(arg)
109
 
{
110
 
  it= QueryCacheService::cachedTables.begin();
111
 
  end= QueryCacheService::cachedTables.end(); 
112
 
}
113
 
 
114
 
bool CachedTables::Generator::populate()
115
 
{
116
 
  if (it == end)
117
 
  { 
118
 
    return false;
119
 
  } 
120
 
 
121
 
  QueryCacheService::CachedTablesEntry &entry= *it;
122
 
 
123
 
  push(entry.first);
124
 
  string list_keys;
125
 
  vector<string>::iterator tmp;
126
 
  for(tmp= entry.second.begin(); tmp != entry.second.end(); tmp++)
127
 
  {
128
 
    list_keys+= "::"+ *tmp;
129
 
  }
130
 
  push(list_keys);
131
 
  it++;
132
 
  return true;
133
 
}