[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/pq ae8f1a33ac 45/63: Make PQreset available as pq:reset
From: |
ELPA Syncer |
Subject: |
[elpa] externals/pq ae8f1a33ac 45/63: Make PQreset available as pq:reset. |
Date: |
Mon, 14 Feb 2022 23:24:26 -0500 (EST) |
branch: externals/pq
commit ae8f1a33acfbcc1ccda9361c24a638826285eeb3
Author: Andreas Seltenreich <seltenreich@gmx.de>
Commit: Andreas Seltenreich <seltenreich@gmx.de>
Make PQreset available as pq:reset.
---
pq.c | 25 +++++++++++++++++++++++++
test.el | 14 ++++++++++++--
2 files changed, 37 insertions(+), 2 deletions(-)
diff --git a/pq.c b/pq.c
index 9694ec1994..ed4c2fc108 100644
--- a/pq.c
+++ b/pq.c
@@ -233,6 +233,27 @@ Fpq_escape (emacs_env *env, ptrdiff_t nargs, emacs_value
args[], void *data)
return result;
}
+static emacs_value
+Fpq_reset (emacs_env *env, ptrdiff_t nargs, emacs_value args[], void *data)
+{
+ if (!env->is_not_nil(env, args[0]))
+ return Qnil;
+ PGconn *conn = env->get_user_ptr(env, args[0]);
+
+ PQreset(conn);
+
+ if (PQstatus(conn) != CONNECTION_OK) {
+ const char *errmsg = PQerrorMessage(conn);
+ emacs_value errstring = env->make_string(env, errmsg, strlen(errmsg));
+ emacs_value Qpq_error = env->intern (env, "error");
+
+ env->non_local_exit_signal(env, Qpq_error, errstring);
+ return Qnil;
+ }
+
+ return Qt;
+}
+
/* Bind NAME to FUN. */
static void
bind_function (emacs_env *env, const char *name, emacs_value Sfun)
@@ -288,6 +309,10 @@ emacs_module_init (struct emacs_runtime *ert)
"Perform identifier value quoting on STRING for CONN.",
PQescapeIdentifier);
+ DEFUN("pq:reset", Fpq_reset, 1, 1,
+ "Resets the communication channel to the server behind CONN.",
+ NULL);
+
#undef DEFUN
Qnil = env->intern (env, "nil");
diff --git a/test.el b/test.el
index eea673faa6..6be47b4d2f 100644
--- a/test.el
+++ b/test.el
@@ -38,8 +38,9 @@
(ert-deftest pq-garbage-collect-test ()
(let ((conn (pq:connectdb *conninfo*)))
(garbage-collect)
- (sleep-for 0.1)
+ (sleep-for 0.2)
(setq conn (pq:connectdb *conninfo*)
+ conn (pq:connectdb *conninfo*)
conn (pq:connectdb *conninfo*)
conn (pq:connectdb *conninfo*)
conn (pq:connectdb *conninfo*)
@@ -53,7 +54,7 @@
conn
"select count(1) from pg_stat_activity where application_name =
'emacs'"))))
(garbage-collect)
- (sleep-for 0.1)
+ (sleep-for 0.2)
(should
(<
(car
@@ -70,6 +71,15 @@
(should-error (pq:query conn "select * from"))
(should-error (pq:query conn "select $1::text"))))
+(ert-deftest pq-reset-connection-test ()
+ (let ((testconn (pq:connectdb *conninfo*))
+ (ctlconn (pq:connectdb *conninfo*)))
+ (let ((victim (car (pq:query testconn "select pg_backend_pid()"))))
+ (pq:query ctlconn "select pg_terminate_backend($1)" victim))
+ (should-error (pq:query testconn "select 1"))
+ (pq:reset testconn)
+ (pq:query testconn "select 1")))
+
(ert-deftest pq-notice-receiver-test ()
(let ((conn (pq:connectdb *conninfo*)))
(pq:query conn "set client_min_messages to notice")
- [elpa] externals/pq 5566645359 56/63: Fix ERROR-DATA not being a list., (continued)
- [elpa] externals/pq 5566645359 56/63: Fix ERROR-DATA not being a list., ELPA Syncer, 2022/02/14
- [elpa] externals/pq d4c53f6461 55/63: Update README., ELPA Syncer, 2022/02/14
- [elpa] externals/pq 0501c66e6a 51/63: Add testcase for crash reported by "717g301github"., ELPA Syncer, 2022/02/14
- [elpa] externals/pq bc939f732e 30/63: Setup emacs ert tests, ELPA Syncer, 2022/02/14
- [elpa] externals/pq 555791fef3 18/63: Add GPLv3 license., ELPA Syncer, 2022/02/14
- [elpa] externals/pq d8bca4bbd0 33/63: test: Add case that garbage-collects user-pointers., ELPA Syncer, 2022/02/14
- [elpa] externals/pq e3e74a950a 39/63: Make garbage-collection test more robust., ELPA Syncer, 2022/02/14
- [elpa] externals/pq 8c03aeb2ec 15/63: Fix nargs compatible pointer type, ELPA Syncer, 2022/02/14
- [elpa] externals/pq cbdff81a90 47/63: Make docstring punctuation consistent., ELPA Syncer, 2022/02/14
- [elpa] externals/pq 5486071191 50/63: travis-ci: Also test with Emacs 26., ELPA Syncer, 2022/02/14
- [elpa] externals/pq ae8f1a33ac 45/63: Make PQreset available as pq:reset.,
ELPA Syncer <=
- [elpa] externals/pq fbc92e891d 59/63: README: Fix typo., ELPA Syncer, 2022/02/14
- [elpa] externals/pq c653a8b1ee 54/63: Remove unused macro., ELPA Syncer, 2022/02/14