Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package pgsql-ogr-fdw for openSUSE:Factory checked in at 2026-07-20 09:58:46 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pgsql-ogr-fdw (Old) and /work/SRC/openSUSE:Factory/.pgsql-ogr-fdw.new.24530 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pgsql-ogr-fdw" Mon Jul 20 09:58:46 2026 rev:13 rq:1366578 version:1.1.9 Changes: -------- --- /work/SRC/openSUSE:Factory/pgsql-ogr-fdw/pgsql-ogr-fdw.changes 2026-05-08 16:47:05.841482223 +0200 +++ /work/SRC/openSUSE:Factory/.pgsql-ogr-fdw.new.24530/pgsql-ogr-fdw.changes 2026-07-20 10:00:52.515229950 +0200 @@ -1,0 +2,16 @@ +Sun Jul 19 06:17:51 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to version 1.1.9: + * Fix the build failure with GDAL 3.13 + (gh#pramsey/pgsql-ogr-fdw#273) + * Add PostgreSQL 19 support and fix compilation warnings under + PG19 + * Use PG_MODULE_MAGIC_EXT and pass the version from the control + file + * Use strncpy in ogr_fdw_info +- Package the LLVM JIT bitcode through a generated file list + instead of a fixed glob: Leap 16.0 still emits per-extension + bitcode while current Tumbleweed emits none, and the old + bitcode/* glob failed on whichever product did not match. + +------------------------------------------------------------------- Old: ---- pgsql-ogr-fdw-1.1.7.tar.gz New: ---- pgsql-ogr-fdw-1.1.9.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pgsql-ogr-fdw.spec ++++++ --- /var/tmp/diff_new_pack.6UVzDx/_old 2026-07-20 10:00:53.207253239 +0200 +++ /var/tmp/diff_new_pack.6UVzDx/_new 2026-07-20 10:00:53.211253374 +0200 @@ -21,7 +21,7 @@ %{pg_version_from_name} Name: %{pg_name}-%{ext_name} -Version: 1.1.7 +Version: 1.1.9 Release: 0 Summary: PostgreSQL OGR Foreign Data Wrapper License: MIT @@ -60,21 +60,23 @@ mkdir -p %{buildroot}/%{pg_config_bindir} make V=1 USE_PGXS=1 install DESTDIR=%{buildroot} +# PGXS emits LLVM JIT bitcode only where the PostgreSQL server itself was built +# with LLVM (e.g. Leap 16.0); current Tumbleweed produces none. Record whatever +# landed under the bitcode directory so the file list is valid on every product. +( cd %{buildroot} && find ".%{pg_config_pkglibdir}/bitcode" -mindepth 1 -maxdepth 1 2>/dev/null | sed -e 's,^\.,,' ) > bitcode.files + %post %{_datadir}/postgresql/install-alternatives %pg_version %postun %{_datadir}/postgresql/install-alternatives %pg_version -%files +%files -f bitcode.files %defattr(-, root, root) %license LICENSE.md %doc README.md FAQ.md %{pg_config_bindir}/ogr_fdw_info %{pg_config_pkglibdir}/ogr_fdw.so -%if %{postgresql_has_llvm} -%{pg_config_pkglibdir}/bitcode/* -%endif %dir %{pg_config_sharedir}/extension/ %{pg_config_sharedir}/extension/ogr_fdw--1.0--1.1.sql %{pg_config_sharedir}/extension/ogr_fdw--1.1.sql ++++++ pgsql-ogr-fdw-1.1.7.tar.gz -> pgsql-ogr-fdw-1.1.9.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgsql-ogr-fdw-1.1.7/.github/workflows/ci.yml new/pgsql-ogr-fdw-1.1.9/.github/workflows/ci.yml --- old/pgsql-ogr-fdw-1.1.7/.github/workflows/ci.yml 2025-05-20 19:06:38.000000000 +0200 +++ new/pgsql-ogr-fdw-1.1.9/.github/workflows/ci.yml 2026-07-09 19:16:02.000000000 +0200 @@ -1,74 +1,42 @@ -# GitHub Actions for OGR-FDW +# GitHub Actions for pgSQL OGR-FDW # # Paul Ramsey <pramsey at cleverelephant dot ca> name: "CI" -on: - push: -# branches-ignore: -# - 'master' - pull_request: ~ +on: [push, pull_request] jobs: linux: - name: "CI" + name: PG ${{ matrix.pg }} + runs-on: ubuntu-latest + container: + image: pgxn/pgxn-tools strategy: - fail-fast: false - matrix: - ci: - - { PGVER: 11 } - - { PGVER: 12 } - - { PGVER: 13 } - - { PGVER: 14 } - - { PGVER: 15 } - - { PGVER: 16 } - - { PGVER: 17 } + fail-fast: false + matrix: + pg: [15, 16, 17, 18, 19] - runs-on: ubuntu-latest steps: - name: 'Check Out' - uses: actions/checkout@v4 + uses: actions/checkout@v6 - - name: 'Raise Priority for apt.postgresql.org' - run: | - cat << EOF >> ./pgdg.pref - Package: * - Pin: release o=apt.postgresql.org - Pin-Priority: 600 - EOF - sudo mv ./pgdg.pref /etc/apt/preferences.d/ - sudo apt update + - name: 'Start PostgreSQL ${{ matrix.pg }}' + run: pg-start ${{ matrix.pg }} - name: 'Install GDAL' run: | - sudo apt-get install libgdal-dev + apt-get update + apt-get -y install libgdal-dev - - name: 'Install PostgreSQL' - run: | - sudo apt-get purge postgresql-* - sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg-snapshot main ${{ matrix.ci.PGVER }}" > /etc/apt/sources.list.d/pgdg.list' - curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg >/dev/null - sudo apt-get update - sudo apt-get -y install postgresql-${{ matrix.ci.PGVER }} postgresql-server-dev-${{ matrix.ci.PGVER }} - - name: 'Start PostgreSQL' + - name: 'Build & Install' run: | - export PGVER=${{ matrix.ci.PGVER }} - export PGDATA=/var/lib/postgresql/$PGVER/main - export PGETC=/etc/postgresql/$PGVER/main - export PGBIN=/usr/lib/postgresql/$PGVER/bin - export RUNNER_USER=`whoami` - # make sure postgres user can access data files - sudo chmod -R 755 /home/${RUNNER_USER} - sudo cp ./ci/pg_hba.conf $PGETC/pg_hba.conf - sudo systemctl stop postgresql - sudo pg_ctlcluster $PGVER main start - sudo pg_lsclusters + export PG_CFLAGS=-Werror + make && make install + + - name: 'Test' + run: PGUSER=postgres make installcheck || (cat regression.diffs && false) + + - - name: 'Build & Test' - run: | - export PATH=/usr/lib/postgresql/${{ matrix.ci.PGVER }}/bin/:$PATH - PG_CFLAGS=-Werror make - sudo make install - PGUSER=postgres make installcheck || (cat regression.diffs && /bin/false) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgsql-ogr-fdw-1.1.7/Makefile new/pgsql-ogr-fdw-1.1.9/Makefile --- old/pgsql-ogr-fdw-1.1.7/Makefile 2025-05-20 19:06:38.000000000 +0200 +++ new/pgsql-ogr-fdw-1.1.9/Makefile 2026-07-09 19:16:02.000000000 +0200 @@ -14,6 +14,9 @@ ogr_fdw--1.0--1.1.sql \ ogr_fdw--1.1.sql +EXTVERSION = $(shell grep default_version $(EXTENSION).control | \ + cut -f2 -d= | tr -d "'" | tr -d " ") + REGRESS = ogr_fdw EXTRA_CLEAN = sql/*.sql expected/*.out @@ -28,6 +31,8 @@ PG_CONFIG = pg_config REGRESS_OPTS = --encoding=UTF8 +PG_CFLAGS += -D OGR_FDW_VERSION=\"$(EXTVERSION)\" + PG_CPPFLAGS += $(GDAL_CFLAGS) LIBS += $(GDAL_LIBS) SHLIB_LINK := $(LIBS) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgsql-ogr-fdw-1.1.7/ogr_fdw.c new/pgsql-ogr-fdw-1.1.9/ogr_fdw.c --- old/pgsql-ogr-fdw-1.1.7/ogr_fdw.c 2025-05-20 19:06:38.000000000 +0200 +++ new/pgsql-ogr-fdw-1.1.9/ogr_fdw.c 2026-07-09 19:16:02.000000000 +0200 @@ -40,7 +40,18 @@ #include "ogr_fdw.h" +/* + * Set up as a PgSQL module + */ +#ifdef PG_MODULE_MAGIC_EXT +PG_MODULE_MAGIC_EXT( + .name = "ogr_fdw", + .version = OGR_FDW_VERSION +); +#else PG_MODULE_MAGIC; +#endif + /* * Describes the valid options for objects that use this wrapper. @@ -1451,7 +1462,7 @@ { char* fldname = pstrdup(OGR_Fld_GetNameRef(OGR_FD_GetFieldDefn(dfn, i))); char* fldname_laundered = palloc(STR_MAX_LEN); - strncpy(fldname_laundered, fldname, STR_MAX_LEN); + strlcpy(fldname_laundered, fldname, STR_MAX_LEN); ogrStringLaunder(fldname_laundered); ogr_fields[2 * i].fldname = fldname; ogr_fields[2 * i].fldnum = i; @@ -1790,7 +1801,7 @@ if (cstr != cstr_decoded) pfree(cstr_decoded); - is_null = false; + *is_null = false; return value; } @@ -2064,7 +2075,7 @@ { #if (GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3,7,0)) const char* tsstr = OGR_F_GetFieldAsISO8601DateTime(feat, ogrfldnum, NULL); - strncpy(cstr, tsstr, CSTR_SZ); + strlcpy(cstr, tsstr, CSTR_SZ); #else snprintf(cstr, CSTR_SZ, "%d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second); #endif @@ -2439,9 +2450,10 @@ case BYTEAOID: { - bytea* varlena = PG_DETOAST_DATUM(values[i]); - size_t varsize = VARSIZE_ANY_EXHDR(varlena); - OGR_F_SetFieldBinary(feat, ogrfldnum, varsize, (GByte*)VARDATA_ANY(varlena)); + struct varlena *detoasted_dat = (struct varlena *) PG_DETOAST_DATUM(values[i]); + size_t varsize = VARSIZE_ANY_EXHDR(detoasted_dat); + OGR_F_SetFieldBinary(feat, ogrfldnum, varsize, (GByte*)VARDATA_ANY(detoasted_dat)); + break; } @@ -3259,13 +3271,13 @@ } /* Layer name is never laundered, since it's the link back to OGR */ - strncpy(layer_name, OGR_L_GetName(ogr_lyr), STR_MAX_LEN); + strlcpy(layer_name, OGR_L_GetName(ogr_lyr), STR_MAX_LEN); /* * We need to compare against created table names * because PgSQL does an extra check on CREATE FOREIGN TABLE */ - strncpy(table_name, layer_name, STR_MAX_LEN); + strlcpy(table_name, layer_name, STR_MAX_LEN); if (launder_table_names) { ogrStringLaunder(table_name); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgsql-ogr-fdw-1.1.7/ogr_fdw.h new/pgsql-ogr-fdw-1.1.9/ogr_fdw.h --- old/pgsql-ogr-fdw-1.1.7/ogr_fdw.h 2025-05-20 19:06:38.000000000 +0200 +++ new/pgsql-ogr-fdw-1.1.9/ogr_fdw.h 2026-07-09 19:16:02.000000000 +0200 @@ -8,10 +8,7 @@ *------------------------------------------------------------------------- */ -#ifndef _OGR_FDW_H -#define _OGR_FDW_H 1 - -#define OGR_FDW_RELEASE_NAME "1.1" +#pragma once /* * PostgreSQL @@ -79,6 +76,7 @@ #include "ogr_fdw_common.h" /* Local configuration defines */ +#define OGR_FDW_VERSION "1.1" /* Use hexwkb input by default, but have option to use */ /* the binary recv input instead. Binary input is strict */ @@ -216,4 +214,3 @@ Oid ogrGetGeometryOid(void); OGRErr pgDatumToOgrGeometry (Datum pg_geometry, Oid pgsendfunc, OGRGeometryH* ogr_geometry); -#endif /* _OGR_FDW_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgsql-ogr-fdw-1.1.7/ogr_fdw_common.h new/pgsql-ogr-fdw-1.1.9/ogr_fdw_common.h --- old/pgsql-ogr-fdw-1.1.7/ogr_fdw_common.h 2025-05-20 19:06:38.000000000 +0200 +++ new/pgsql-ogr-fdw-1.1.9/ogr_fdw_common.h 2026-07-09 19:16:02.000000000 +0200 @@ -8,8 +8,7 @@ *------------------------------------------------------------------------- */ -#ifndef _OGR_FDW_COMMON_H -#define _OGR_FDW_COMMON_H 1 +#pragma once #include <string.h> #include <ctype.h> @@ -26,8 +25,7 @@ void ogrStringLaunder(char *str); OGRErr ogrLayerToSQL (const OGRLayerH ogr_lyr, const char *fwd_server, - int launder_table_names, int launder_column_names, - const char *fdw_table_name, - int use_postgis_geometry, stringbuffer_t *buf); + int launder_table_names, int launder_column_names, + const char *fdw_table_name, + int use_postgis_geometry, stringbuffer_t *buf); -#endif /* _OGR_FDW_COMMON_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgsql-ogr-fdw-1.1.7/ogr_fdw_deparse.c new/pgsql-ogr-fdw-1.1.9/ogr_fdw_deparse.c --- old/pgsql-ogr-fdw-1.1.7/ogr_fdw_deparse.c 2025-05-20 19:06:38.000000000 +0200 +++ new/pgsql-ogr-fdw-1.1.9/ogr_fdw_deparse.c 2026-07-09 19:16:02.000000000 +0200 @@ -176,7 +176,7 @@ OGR_G_CreateFromWkb((unsigned char*)wkb, NULL, &ogrgeom, wkb_size); OGR_G_ExportToWkt(ogrgeom, &wkt); elog(DEBUG1, "ogrDeparseConst got a geometry: %s", wkt); - free(wkt); + CPLFree(wkt); OGR_G_DestroyGeometry(ogrgeom); /* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgsql-ogr-fdw-1.1.7/ogr_fdw_func.c new/pgsql-ogr-fdw-1.1.9/ogr_fdw_func.c --- old/pgsql-ogr-fdw-1.1.7/ogr_fdw_func.c 2025-05-20 19:06:38.000000000 +0200 +++ new/pgsql-ogr-fdw-1.1.9/ogr_fdw_func.c 2026-07-09 19:16:02.000000000 +0200 @@ -79,7 +79,7 @@ Datum ogr_fdw_version(PG_FUNCTION_ARGS) { const char *gdal_ver = GDAL_RELEASE_NAME; - const char *ogr_fdw_ver = OGR_FDW_RELEASE_NAME; + const char *ogr_fdw_ver = OGR_FDW_VERSION; char ver_str[256]; snprintf(ver_str, sizeof(ver_str), "OGR_FDW=\"%s\" GDAL=\"%s\"", ogr_fdw_ver, gdal_ver); PG_RETURN_TEXT_P(cstring_to_text(ver_str)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgsql-ogr-fdw-1.1.7/ogr_fdw_gdal.h new/pgsql-ogr-fdw-1.1.9/ogr_fdw_gdal.h --- old/pgsql-ogr-fdw-1.1.7/ogr_fdw_gdal.h 2025-05-20 19:06:38.000000000 +0200 +++ new/pgsql-ogr-fdw-1.1.9/ogr_fdw_gdal.h 2026-07-09 19:16:02.000000000 +0200 @@ -1,6 +1,5 @@ -#ifndef _OGR_FDW_GDAL_H -#define _OGR_FDW_GDAL_H 1 +#pragma once /* * Quiet warnings due to double use of @@ -67,4 +66,3 @@ #endif /* GDAL 1 support */ -#endif /* _OGR_FDW_GDAL_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgsql-ogr-fdw-1.1.7/ogr_fdw_info.c new/pgsql-ogr-fdw-1.1.9/ogr_fdw_info.c --- old/pgsql-ogr-fdw-1.1.7/ogr_fdw_info.c 2025-05-20 19:06:38.000000000 +0200 +++ new/pgsql-ogr-fdw-1.1.9/ogr_fdw_info.c 2026-07-09 19:16:02.000000000 +0200 @@ -21,7 +21,7 @@ #include "ogr_fdw_gdal.h" #include "ogr_fdw_common.h" -static void usage(); +static void usage(void); static OGRErr ogrListLayers(const char* source); static OGRErr ogrFindLayer(const char* source, int layerno, const char** layer); static OGRErr ogrGenerateSQL(const char* server, const char* layer, const char* table, const char* source, const char* options); @@ -64,15 +64,19 @@ const char* quote_identifier(const char* ident) { +#if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 13, 0) + int len = (int)CPL_MIN(strlen(ident), NAMEDATALEN - 1); +#else int len = (int)MIN(strlen(ident), NAMEDATALEN - 1); +#endif if (reserved_word(ident)) { - sprintf(identifier,"\"%*s\"", len, ident); + snprintf(identifier, sizeof(identifier), "\"%.*s\"", len, ident); } else { - sprintf(identifier,"%*s", len, ident); + snprintf(identifier, sizeof(identifier), "%.*s", len, ident); } return identifier; } @@ -81,7 +85,7 @@ static void -formats() +formats(void) { int i; @@ -125,7 +129,7 @@ } static void -usage() +usage(void) { printf( "usage: ogr_fdw_info -s <ogr datasource> -l <ogr layer name> -i <ogr layer index (numeric)> -t <output table name> -n <output server name> -o <config options>\n" @@ -294,7 +298,7 @@ if (! ogr_dr) ogr_dr = GDALGetDatasetDriver(ogr_ds); - strcpy(server_name, server == NULL ? "myserver" : server); + strncpy(server_name, server == NULL ? "myserver" : server, sizeof(server_name)); if (options != NULL) { char *p; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgsql-ogr-fdw-1.1.7/stringbuffer.h new/pgsql-ogr-fdw-1.1.9/stringbuffer.h --- old/pgsql-ogr-fdw-1.1.7/stringbuffer.h 2025-05-20 19:06:38.000000000 +0200 +++ new/pgsql-ogr-fdw-1.1.9/stringbuffer.h 2026-07-09 19:16:02.000000000 +0200 @@ -9,8 +9,7 @@ *------------------------------------------------------------------------- */ -#ifndef _STRINGBUFFER_H -#define _STRINGBUFFER_H 1 +#pragma once #include <stdlib.h> #include <stdarg.h> @@ -45,4 +44,3 @@ extern int stringbuffer_trim_trailing_white(stringbuffer_t *s); extern int stringbuffer_trim_trailing_zeroes(stringbuffer_t *s); -#endif /* _STRINGBUFFER_H */
