Re: Extension to rewrite queries before execution
От | Tatsuo Ishii |
---|---|
Тема | Re: Extension to rewrite queries before execution |
Дата | |
Msg-id | 20150814.153440.954701125421678736.t-ishii@sraoss.co.jp обсуждение исходный текст |
Ответ на | Extension to rewrite queries before execution (Jeff Janes <jeff.janes@gmail.com>) |
Список | pgsql-general |
> I am looking for an extension or a technique that will allow me to > intercept a query by the exact query text, and replace that query with a > different one. > > The context is running a third-party app which issues queries I have no > control over. I'd like to intercept a specific query (which has no bind > parameters) and either replace the query text with a different text which, > for example, swaps out an "in list" clause to instead be an "exists > (subquery)". > > Or just wrap the query in a "set enable_* =off;" or "set work_mem=*;" > before and a reset of it after. > > Is there anything out there like this? This would be for 9.4. > > I'm willing to put the query text, and its replacement, directly into the > extension source code and compile it, but of course something more flexible > would be ideal. I don't know if you are interested in using other than extensions, but you could do it by hacking pgpool-II. It has built-in raw parser with some functions to walk through the tree such as raw_expression_tree_walker(). Also you could do the rewriting only for particular applications (of course only if the application set application name). Best regards, -- Tatsuo Ishii SRA OSS, Inc. Japan English: http://www.sraoss.co.jp/index_en.php Japanese:http://www.sraoss.co.jp
В списке pgsql-general по дате отправления: