00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <config.h>
00025 #include <drizzled/plugin/query_rewrite.h>
00026 #include <drizzled/gettext.h>
00027
00028 #include <algorithm>
00029 #include <vector>
00030
00031 namespace drizzled
00032 {
00033
00034 namespace plugin
00035 {
00036
00037 std::vector<plugin::QueryRewriter *> all_rewriters;
00038
00039
00040 bool QueryRewriter::addPlugin(QueryRewriter *in_rewriter)
00041 {
00042 if (in_rewriter != NULL)
00043 {
00044 all_rewriters.push_back(in_rewriter);
00045 }
00046 return false;
00047 }
00048
00049
00050 void QueryRewriter::removePlugin(QueryRewriter *in_rewriter)
00051 {
00052 if (in_rewriter != NULL)
00053 {
00054 all_rewriters.erase(std::find(all_rewriters.begin(),
00055 all_rewriters.end(),
00056 in_rewriter));
00057 }
00058 }
00059
00060
00061
00062
00063
00064
00065 void QueryRewriter::rewriteQuery(const std::string &schema, std::string &to_rewrite)
00066 {
00067 for (std::vector<plugin::QueryRewriter *>::iterator iter= all_rewriters.begin();
00068 iter != all_rewriters.end();
00069 ++iter)
00070 {
00071 (*iter)->rewrite(schema, to_rewrite);
00072 }
00073 }
00074
00075 }
00076
00077 }