]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
v4: Fixes for PostgreSQL 14 in CI (#4250)
authorNick Porter <nick@portercomputing.co.uk>
Thu, 7 Oct 2021 12:01:02 +0000 (13:01 +0100)
committerGitHub <noreply@github.com>
Thu, 7 Oct 2021 12:01:02 +0000 (07:01 -0500)
* Handle PGRES_PIPELINE_SYNC and PGRES PIPELINE_ABORTED

* CI is now running PostgreSQL 14

.github/workflows/ci.yml
src/modules/rlm_sql/drivers/rlm_sql_postgresql/config.h.in
src/modules/rlm_sql/drivers/rlm_sql_postgresql/configure
src/modules/rlm_sql/drivers/rlm_sql_postgresql/rlm_sql_postgresql.c

index 7af22b0353e1b5fd8136eb5ccd8e739ec98a76e2..22c386f0cf4393188b308967df0c18af954ad702 100644 (file)
@@ -273,7 +273,7 @@ jobs:
         sudo systemctl stop dovecot exim4 slapd openresty
         sudo aa-complain /usr/sbin/slapd
 
-        export PG_VER=13
+        export PG_VER=14
         sudo sh -c "echo host  all all 127.0.0.1/32 trust >  /etc/postgresql/$PG_VER/main/pg_hba.conf"
         sudo sh -c "echo local all all              trust >> /etc/postgresql/$PG_VER/main/pg_hba.conf"
 
index f2f2b46e3e9f11fa885d435a6dafb26a4e21f17f..066224d429492841f57e9aa0b3868a4c49a7c7a4 100644 (file)
@@ -6,6 +6,9 @@
 /* Whether the PGRES_SINGLE_TUPLE constant is defined */
 #undef HAVE_PGRES_SINGLE_TUPLE
 
+/* Whether the PGRES_PIPELINE_SYNC constant is defined */
+#undef HAVE_PGRES_PIPELINE_SYNC
+
 /* Define to 1 if you have the `PQinitOpenSSL' function. */
 #undef HAVE_PQINITOPENSSL
 
index 0680092b8ef04221aed50833e9596c2a7d604f00..f54a376a7c185fa28f273b36c56dd4f87a0c9453 100755 (executable)
@@ -2985,6 +2985,36 @@ else
                    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 
+fi
+               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PGRES_PIPELINE_SYNC" >&5
+$as_echo_n "checking for PGRES_PIPELINE_SYNC... " >&6; }
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <libpq-fe.h>
+int
+main ()
+{
+
+                   if (PGRES_PIPELINE_SYNC) return 0;
+                   return 1;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+
+$as_echo "#define HAVE_PGRES_PIPELINE_SYNC 1" >>confdefs.h
+
+                   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+
+                   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
        fi
index c90127faa69f65ac7695be7fcdb3f4851dd3d653..9d597feeff7ebd753e1b7364002319539a0aceff 100644 (file)
@@ -178,6 +178,13 @@ static sql_rcode_t sql_classify_error(rlm_sql_postgres_t *inst, ExecStatusType s
                        error_code = "42000";
                        break;
 
+       #ifdef HAVE_PGRES_PIPELINE_SYNC
+               case PGRES_PIPELINE_SYNC:
+               case PGRES_PIPELINE_ABORTED:
+                       ERROR("libpq reported aborted pipeline");
+                       return RLM_SQL_ERROR;
+       #endif
+
                case PGRES_BAD_RESPONSE:
                case PGRES_NONFATAL_ERROR:
                case PGRES_FATAL_ERROR:
@@ -383,6 +390,10 @@ static CC_HINT(nonnull) sql_rcode_t sql_query(rlm_sql_handle_t *handle, rlm_sql_
        case PGRES_BAD_RESPONSE:        /* The server's response was not understood */
        case PGRES_NONFATAL_ERROR:
        case PGRES_FATAL_ERROR:
+#ifdef HAVE_PGRES_PIPELINE_SYNC
+       case PGRES_PIPELINE_SYNC:
+       case PGRES_PIPELINE_ABORTED:
+#endif
                break;
        }