Contents
Release Notes
2.0.0
Release date: 2025-05-22
This is a major release of rdf_fdw
featuring substantial new features, improved standards compliance, and important infrastructure enhancements. Backward compatibility is preserved, but users are encouraged to review the new features and updated behavior.
Enhancements
-
PostgreSQL 9.5 and 18 (in beta1 as of this release) support.
-
SPARQL
DESCRIBE
query support via the newsparql.describe()
support function. -
New
rdfnode
data type, enabling:- Representation of RDF literals and IRIs with full lexical fidelity.
- Precise round-tripping of SPARQL values within SQL.
- Equality and order comparisons with native PostgreSQL types (e.g.,
int
,float
,text
,date
).
-
SPARQL 1.1 Built-in Function Support via SQL queries.
- Functional Forms:
bound
,COALESCE
andsameTerm
.
- Functions on RDF Terms:
isIRI
,isBlank
,isLiteral
,isNumeric
,str
,lang
,datatype
,IRI
,BNODE
,STRDT
,STRLANG
,UUID
, andSTRUUID
.
- Functions on Strings:
STRLEN
,SUBSTR
,UCASE
,LCASE
,STRSTARTS
,STRENDS
,CONTAINS
,STRBEFORE
,STRAFTER
,ENCODE_FOR_URI
,CONCAT
,langMatches
,REGEX
, andREPLACE
.
- Functions on Numerics:
abs
,round
,ceil
,floor
, andRAND
.
- Functions on Dates and Times:
year
,month
,day
,hours
,minutes
,seconds
,timezone
, andtz
.
- Hash Functions:
md5
.
These functions are translated to their SPARQL equivalents when pushed down to the foreign data wrapper.
- Functional Forms:
Minor Changes
-
The
FOREIGN TABLE
optionlog_sparql
is now set totrue
, if omitted. If you don’t want to log the SPARQL query, consider usingALTER FOREIGN TABLE
to disable this option manually, e.g.ALTER FOREIGN TABLE myrdftable OPTIONS (ADD log_sparql 'false');
Bug Fixes
-
Query cancellation support:
Added
CHECK_FOR_INTERRUPTS()
in key execution points to allow PostgreSQL backends to detect user-initiated query cancellations (e.g., Ctrl+C), improving long-running query handling.
External Libraries
- Added a new dependency: Redland RDF Library (
librdf
) — used for parsing and serializing RDF data, and supportingDESCRIBE
queries.
1.3.0
Release date: 2024-09-30
Enhancements
- Support for PostgreSQL 9.6, 10, and 17: This adds support for the long EOL’d PostgreSQL versions 9.6 and 10. It is definitely discouraged to use these unsupported versions, but in case you’re for whatever reason unable to perform an upgrade you can now use the
rdf_fdw
.
1.2.0
Release date: 2024-05-22
Enhancements
-
Pushdown support for Math, String and Date/Time functions:
abs
,ceil
,floor
,round
length
,upper
,lower
,starts_with
,substring
,md5
extract(year from x)
,extract(month from x)
,extract(year from x)
,extract(hour from x)
,extract(minute from x)
,extract(second from x)
date_part(year, x)
,date_part('month',x)
,date_part('year', x)
,date_part('hour', x)
,date_part('minute', x)
,date_part('second', x)
When used in the
WHERE
clause these functions will be translated to their correspondent SPARQLFILTER
expressions.
Bug Fixes
- Bug fix for WHERE conditions with “inverted” arguments - that is, value in the left side (T_Const) and column in the right side (T_Var): This fixes a bug that led the pushdown of
WHERE
condiditions containing “inverted” arguments to fail, e.g"foo" = column
,42 > column
. Now the order of T_Const and T_Var in the arguments is irrelevant.
1.1.0
Release date: 2024-04-10
Enhancements
-
USER MAPPING
support: This feature defines a mapping of a PostgreSQL user to an user in the target triplestore -user
andpassword
, so that the user can be authenticated. Requested by Matt Goldberg. -
Pushdown suuport for
pattern matching operators
LIKE
andILIKE
: these operators are now translated into SPARQLFILTER
expressions asREGEX
and pushed down. -
Enables usage of non-pushable data types in
FOREIGN TABLE
columns: This disables a check that raised an excepetion when data types that cannot be pushed down were used. This includes non-standard data types, such asgeometry
orgeography
from PostGIS.
Bug Fixes
-
Empty SPARQL
SELECT
clause: This fixes a bug that led some SPARQL queries to be created without any variable in theSELECT
clause. We now useSELECT *
in case the planner cannot identify which nodes should be retrieved, which can be a bit inefficent if we’re dealing with many columns, but it is much better than an error message. -
Missing schema from foreign tables in
rdf_fdw_clone_table
calls: This fixes a bug that led therdf_fdw_clone_table
procedure to always look for the givenFOREIGN TABLE
in thepublic
schema. -
xmlDoc* memory leak: The xml document containing the resulst sets from the SPARQL queries wasn’t beeing freed after the query was complete. This led to a memory leak that could potentially cause a system crash once all available memory was consumed by the orphan documents - which is an issue for rather modest server settings that execute mutliple queries in the same session. Reported by Filipe Pessoa.
1.0.0
Release date: 2024-03-15
Initial release.
Support for PostgreSQL 11, 12, 13, 14, 15 and 16.
Main Features
- Pushdown:
LIMIT
,ORDER BY
,DISTINCT
,WHERE
with several data types and operators - Table copy: This introduces the procedure
rdf_fdw_clone_table()
, that is designed to copy data from aFOREIGN TABLE
into an ordinaryTABLE
. It provides the possibility to retrieve the data set in batches. - Proxy Support for
SERVER
: quite handy feature in case the PostgreSQL and SPARQL endpoint servers are in different networks and can only communicate through a proxy.