From f96928fde90697bd6eeda85a89225e31c0b5a16d Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Fri, 4 Apr 2008 16:57:21 +0000 Subject: [PATCH] Implement current_query(), that shows the currently executing query. At the same time remove dblink/dblink_current_query() as it is no longer necessary *BACKWARD COMPATIBILITY ISSUE* for dblink Tomas Doran --- contrib/dblink/dblink.c | 19 +----------- contrib/dblink/dblink.h | 3 +- contrib/dblink/dblink.sql.in | 7 +---- contrib/dblink/expected/dblink.out | 7 ----- contrib/dblink/sql/dblink.sql | 3 -- contrib/dblink/uninstall_dblink.sql | 4 +-- doc/src/sgml/dblink.sgml | 45 +---------------------------- doc/src/sgml/func.sgml | 8 ++++- src/backend/utils/adt/misc.c | 16 +++++++++- src/include/catalog/pg_proc.h | 4 ++- src/include/utils/builtins.h | 3 +- 11 files changed, 32 insertions(+), 87 deletions(-) diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c index f0d3d23a6e..06a205599c 100644 --- a/contrib/dblink/dblink.c +++ b/contrib/dblink/dblink.c @@ -8,7 +8,7 @@ * Darko Prenosil * Shridhar Daithankar * - * $PostgreSQL: pgsql/contrib/dblink/dblink.c,v 1.71 2008/03/26 21:10:36 alvherre Exp $ + * $PostgreSQL: pgsql/contrib/dblink/dblink.c,v 1.72 2008/04/04 16:57:21 momjian Exp $ * Copyright (c) 2001-2008, PostgreSQL Global Development Group * ALL RIGHTS RESERVED; * @@ -1631,23 +1631,6 @@ dblink_build_sql_update(PG_FUNCTION_ARGS) PG_RETURN_TEXT_P(cstring_to_text(sql)); } -/* - * dblink_current_query - * return the current query string - * to allow its use in (among other things) - * rewrite rules - */ -PG_FUNCTION_INFO_V1(dblink_current_query); -Datum -dblink_current_query(PG_FUNCTION_ARGS) -{ - if (debug_query_string) - PG_RETURN_TEXT_P(cstring_to_text(debug_query_string)); - else - PG_RETURN_NULL(); -} - - /************************************************************* * internal functions */ diff --git a/contrib/dblink/dblink.h b/contrib/dblink/dblink.h index 7c9fbb9dc6..560eb72f79 100644 --- a/contrib/dblink/dblink.h +++ b/contrib/dblink/dblink.h @@ -8,7 +8,7 @@ * Darko Prenosil * Shridhar Daithankar * - * $PostgreSQL: pgsql/contrib/dblink/dblink.h,v 1.19 2008/01/01 19:45:45 momjian Exp $ + * $PostgreSQL: pgsql/contrib/dblink/dblink.h,v 1.20 2008/04/04 16:57:21 momjian Exp $ * Copyright (c) 2001-2008, PostgreSQL Global Development Group * ALL RIGHTS RESERVED; * @@ -56,6 +56,5 @@ extern Datum dblink_get_pkey(PG_FUNCTION_ARGS); extern Datum dblink_build_sql_insert(PG_FUNCTION_ARGS); extern Datum dblink_build_sql_delete(PG_FUNCTION_ARGS); extern Datum dblink_build_sql_update(PG_FUNCTION_ARGS); -extern Datum dblink_current_query(PG_FUNCTION_ARGS); #endif /* DBLINK_H */ diff --git a/contrib/dblink/dblink.sql.in b/contrib/dblink/dblink.sql.in index ee7e385b75..a73b630c5d 100644 --- a/contrib/dblink/dblink.sql.in +++ b/contrib/dblink/dblink.sql.in @@ -1,4 +1,4 @@ -/* $PostgreSQL: pgsql/contrib/dblink/dblink.sql.in,v 1.14 2007/11/13 04:24:27 momjian Exp $ */ +/* $PostgreSQL: pgsql/contrib/dblink/dblink.sql.in,v 1.15 2008/04/04 16:57:21 momjian Exp $ */ -- Adjust this setting to control where the objects get created. SET search_path = public; @@ -163,11 +163,6 @@ RETURNS text AS 'MODULE_PATHNAME','dblink_build_sql_update' LANGUAGE C STRICT; -CREATE OR REPLACE FUNCTION dblink_current_query () -RETURNS text -AS 'MODULE_PATHNAME','dblink_current_query' -LANGUAGE C; - CREATE OR REPLACE FUNCTION dblink_send_query(text, text) RETURNS int4 AS 'MODULE_PATHNAME', 'dblink_send_query' diff --git a/contrib/dblink/expected/dblink.out b/contrib/dblink/expected/dblink.out index fd35d76af9..ec5284daf4 100644 --- a/contrib/dblink/expected/dblink.out +++ b/contrib/dblink/expected/dblink.out @@ -22,13 +22,6 @@ INSERT INTO foo VALUES (7,'h','{"a7","b7","c7"}'); INSERT INTO foo VALUES (8,'i','{"a8","b8","c8"}'); INSERT INTO foo VALUES (9,'j','{"a9","b9","c9"}'); -- misc utilities --- show the currently executing query -SELECT 'hello' AS hello, dblink_current_query() AS query; - hello | query --------+----------------------------------------------------------- - hello | SELECT 'hello' AS hello, dblink_current_query() AS query; -(1 row) - -- list the primary key fields SELECT * FROM dblink_get_pkey('foo'); diff --git a/contrib/dblink/sql/dblink.sql b/contrib/dblink/sql/dblink.sql index 48e1daca54..1d5f962db8 100644 --- a/contrib/dblink/sql/dblink.sql +++ b/contrib/dblink/sql/dblink.sql @@ -27,9 +27,6 @@ INSERT INTO foo VALUES (9,'j','{"a9","b9","c9"}'); -- misc utilities --- show the currently executing query -SELECT 'hello' AS hello, dblink_current_query() AS query; - -- list the primary key fields SELECT * FROM dblink_get_pkey('foo'); diff --git a/contrib/dblink/uninstall_dblink.sql b/contrib/dblink/uninstall_dblink.sql index da5116e7f1..bcaea9ae9f 100644 --- a/contrib/dblink/uninstall_dblink.sql +++ b/contrib/dblink/uninstall_dblink.sql @@ -1,10 +1,8 @@ -/* $PostgreSQL: pgsql/contrib/dblink/uninstall_dblink.sql,v 1.5 2007/11/13 04:24:27 momjian Exp $ */ +/* $PostgreSQL: pgsql/contrib/dblink/uninstall_dblink.sql,v 1.6 2008/04/04 16:57:21 momjian Exp $ */ -- Adjust this setting to control where the objects get dropped. SET search_path = public; -DROP FUNCTION dblink_current_query (); - DROP FUNCTION dblink_build_sql_update (text, int2vector, int4, _text, _text); DROP FUNCTION dblink_build_sql_delete (text, int2vector, int4, _text); diff --git a/doc/src/sgml/dblink.sgml b/doc/src/sgml/dblink.sgml index b7195c683d..dd0ea3ca2b 100644 --- a/doc/src/sgml/dblink.sgml +++ b/doc/src/sgml/dblink.sgml @@ -1,4 +1,4 @@ - + dblink @@ -1346,49 +1346,6 @@ SELECT * - - - dblink_current_query - returns the current query string - - - - - dblink_current_query() returns text - - - - - Description - - - Returns the currently executing interactive command string of the - local database session, or NULL if it can't be determined. Note - that this function is not really related to dblink's - other functionality. It is provided since it is sometimes useful - in generating queries to be forwarded to remote databases. - - - - - Return Value - - Returns a copy of the currently executing query string. - - - - Example - - -test=# select dblink_current_query(); - dblink_current_query --------------------------------- - select dblink_current_query(); -(1 row) - - - - dblink_get_pkey diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index 499faa0c92..1fa0fc6c2a 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -1,4 +1,4 @@ - + Functions and Operators @@ -10724,6 +10724,12 @@ select current_date + s.a as dates from generate_series(0,14,7) as s(a); user name of current execution context + + current_query + text + text of the currently executing query (might contain more than one statement) + + inet_client_addr() inet diff --git a/src/backend/utils/adt/misc.c b/src/backend/utils/adt/misc.c index 63d7c4ff58..f7aaec12f0 100644 --- a/src/backend/utils/adt/misc.c +++ b/src/backend/utils/adt/misc.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/misc.c,v 1.58 2008/01/01 19:45:52 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/misc.c,v 1.59 2008/04/04 16:57:21 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -29,6 +29,7 @@ #include "storage/pmsignal.h" #include "storage/procarray.h" #include "utils/builtins.h" +#include "tcop/tcopprot.h" #define atooid(x) ((Oid) strtoul((x), NULL, 10)) @@ -71,6 +72,19 @@ current_database(PG_FUNCTION_ARGS) } +/* + * current_query() + * Expose the current query to the user (useful in stored procedures) + */ +Datum +current_query(PG_FUNCTION_ARGS) +{ + if (debug_query_string) + PG_RETURN_TEXT_P(cstring_to_text(debug_query_string)); + else + PG_RETURN_NULL(); +} + /* * Functions to send signals to other backends. */ diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h index d4d7cb5b91..fba36a018d 100644 --- a/src/include/catalog/pg_proc.h +++ b/src/include/catalog/pg_proc.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.485 2008/03/27 03:57:34 tgl Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.486 2008/04/04 16:57:21 momjian Exp $ * * NOTES * The script catalog/genbki.sh reads this file and generates .bki @@ -1117,6 +1117,8 @@ DESCR("convert char to char()"); DATA(insert OID = 861 ( current_database PGNSP PGUID 12 1 0 f f t f i 0 19 "" _null_ _null_ _null_ current_database - _null_ _null_ )); DESCR("returns the current database"); +DATA(insert OID = 817 ( current_query PGNSP PGUID 12 1 0 f f f f v 0 25 "" _null_ _null_ _null_ current_query - _null_ _null_ )); +DESCR("returns the currently executing query"); DATA(insert OID = 862 ( int4_mul_cash PGNSP PGUID 12 1 0 f f t f i 2 790 "23 790" _null_ _null_ _null_ int4_mul_cash - _null_ _null_ )); DESCR("multiply"); diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h index f719b492c1..f80802f9bf 100644 --- a/src/include/utils/builtins.h +++ b/src/include/utils/builtins.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/utils/builtins.h,v 1.310 2008/03/25 22:42:45 tgl Exp $ + * $PostgreSQL: pgsql/src/include/utils/builtins.h,v 1.311 2008/04/04 16:57:21 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -414,6 +414,7 @@ extern Datum pg_ls_dir(PG_FUNCTION_ARGS); extern Datum nullvalue(PG_FUNCTION_ARGS); extern Datum nonnullvalue(PG_FUNCTION_ARGS); extern Datum current_database(PG_FUNCTION_ARGS); +extern Datum current_query(PG_FUNCTION_ARGS); extern Datum pg_cancel_backend(PG_FUNCTION_ARGS); extern Datum pg_reload_conf(PG_FUNCTION_ARGS); extern Datum pg_tablespace_databases(PG_FUNCTION_ARGS); -- GitLab