[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/pq 03c4dbf3f9 04/63: Add pq:getrow.
From: |
ELPA Syncer |
Subject: |
[elpa] externals/pq 03c4dbf3f9 04/63: Add pq:getrow. |
Date: |
Mon, 14 Feb 2022 23:24:18 -0500 (EST) |
branch: externals/pq
commit 03c4dbf3f988c0d27c0765e4faa35007d6b53f09
Author: Andreas Seltenreich <andreas+git@ansel.ydns.eu>
Commit: Andreas Seltenreich <andreas+git@ansel.ydns.eu>
Add pq:getrow.
---
pq.c | 47 +++++++++++++++++++++++++----------------------
test.el | 3 +++
2 files changed, 28 insertions(+), 22 deletions(-)
diff --git a/pq.c b/pq.c
index 0418bb3944..a6eb78824c 100644
--- a/pq.c
+++ b/pq.c
@@ -256,7 +256,9 @@ pq_getvalue_internal(emacs_env *env, PGresult *res, int
row, int column)
switch(PQftype(res, column)) {
case INT2OID:
case INT4OID:
+ case OIDOID:
return env->make_integer(env, atol(result));
+ case INT8OID:
case FLOAT4OID:
case FLOAT8OID:
case NUMERICOID:
@@ -280,22 +282,23 @@ Fpq_getvalue(emacs_env *env, int nargs, emacs_value
args[], void *data)
return pq_getvalue_internal(env, arg0->p.res, row, column);
}
-/* static emacs_value */
-/* Fpq_getrow(emacs_env *env, int nargs, emacs_value args[], void *data) */
-/* { */
-/* struct pq_pointer *arg0 = env->get_user_ptr(env, args[0]); */
-/* int row = env->extract_integer(env, args[1]); */
-/* assert(type_res == arg0->type); */
-/* int nfields = PQnfields(arg0->p.res); */
-/* emacs_value *values = malloc(nfields*sizeof(emacs_value)); */
+static emacs_value
+Fpq_getrow(emacs_env *env, int nargs, emacs_value args[], void *data)
+{
+ struct pq_pointer *arg0 = env->get_user_ptr(env, args[0]);
+ int row = env->extract_integer(env, args[1]);
+ assert(type_res == arg0->type);
+ int nfields = PQnfields(arg0->p.res);
+ emacs_value *values = malloc((nfields + 1)*sizeof(emacs_value));
-/* for (int i = 0; i < nfields; i++) { */
-/* values[i] = pq_getvalue_internal(env, arg0->p.res, row, i); */
-/* } */
+ for (int i = 0; i < nfields; i++) {
+ values[i] = pq_getvalue_internal(env, arg0->p.res, row, i);
+ }
+ values[nfields] = Qnil;
-/* emacs_value Qvector = env->intern (env, "vector"); */
-/* return env->funcall (env, Qvector, nfields, values); */
-/* } */
+ emacs_value Qvector = env->intern (env, "vector");
+ return env->funcall (env, Qvector, nfields, values);
+}
static emacs_value
Fpq_escape (emacs_env *env, int nargs, emacs_value args[], void *data)
@@ -449,14 +452,14 @@ emacs_module_init (struct emacs_runtime *init_ert)
);
bind_function("pq:escapeIdentifier", fun11);
-/* emacs_value fun12 = env->make_function (env, */
-/* 2, /\* min. number of arguments *\/ */
-/* 2, /\* max. number of arguments *\/ */
-/* Fpq_getrow, /\* actual function pointer *\/ */
-/* "Fetch ROW from RESULT as a vector.", /\* docstring
*\/ */
-/* PQescapeIdentifier /\* user pointer of your choice (data
param in Fmymod_test) *\/ */
-/* ); */
-/* bind_function("pq:getrow", fun12); */
+ emacs_value fun12 = env->make_function (env,
+ 2, /* min. number of arguments */
+ 2, /* max. number of arguments */
+ Fpq_getrow, /* actual function pointer */
+ "Fetch ROW from RESULT as a vector.", /* docstring */
+ PQescapeIdentifier /* user pointer of your choice (data param
in Fmymod_test) */
+ );
+ bind_function("pq:getrow", fun12);
Qnil = env->intern (env, "nil");
Qt = env->intern (env, "t");
diff --git a/test.el b/test.el
index 4f3c08387b..a9637f64c9 100644
--- a/test.el
+++ b/test.el
@@ -9,5 +9,8 @@
(pq:getvalue (pq:execParams con "select 'Hello, ' || $1::text"
(user-login-name)) 0 0)
(pq:escapeLiteral con "moo'oo")
(pq:exec con (concat "set application_name to " (pq:escapeLiteral con
(emacs-version))))
+(setq result (pq:exec con "select version()"))
+(setq result (pq:exec con "select * from pg_stat_activity"))
+(pq:getrow result 0)
(setq con nil)
(garbage-collect)
- [elpa] branch externals/pq created (now 04c91e8374), ELPA Syncer, 2022/02/14
- [elpa] externals/pq 03c4dbf3f9 04/63: Add pq:getrow.,
ELPA Syncer <=
- [elpa] externals/pq f743c450ac 09/63: Set application_name., ELPA Syncer, 2022/02/14
- [elpa] externals/pq 8cbe2e24fc 36/63: Make test notice-receiver more robust., ELPA Syncer, 2022/02/14
- [elpa] externals/pq 5fcaa751f2 13/63: Cleanup prototype definitions., ELPA Syncer, 2022/02/14
- [elpa] externals/pq d6e3746c80 40/63: Skip encoding test unless supported by server., ELPA Syncer, 2022/02/14
- [elpa] externals/pq 69d6fba048 06/63: Make argument to pq:connectdb optional., ELPA Syncer, 2022/02/14
- [elpa] externals/pq 37e21db4c2 41/63: Shuffle tests, make gc test emit more info on failure., ELPA Syncer, 2022/02/14
- [elpa] externals/pq cdc04b0b61 27/63: Add missing PQclear calls, ELPA Syncer, 2022/02/14
- [elpa] externals/pq 6f6d8728e5 38/63: Test expected error on invalid encoding., ELPA Syncer, 2022/02/14
- [elpa] externals/pq 527e544165 46/63: Improve error handling on connection failure., ELPA Syncer, 2022/02/14
- [elpa] externals/pq 7a15153e8d 58/63: Protect against NULL SQLSTATE., ELPA Syncer, 2022/02/14