From 6b46eadd2d0df15bdf5aa2709133279bcde48aee Mon Sep 17 00:00:00 2001 From: Jim Jones Date: Thu, 21 Mar 2024 13:12:17 +0100 Subject: [PATCH] Bugfix in the SQL SELECT parser This fixes a bug that led some SPARQL queries to be created without any variable in the SELECT clause. We now use * 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 better than an error message. --- rdf_fdw.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rdf_fdw.c b/rdf_fdw.c index 5a2e7e2..0e7b21d 100644 --- a/rdf_fdw.c +++ b/rdf_fdw.c @@ -2714,7 +2714,7 @@ static void CreateSPARQL(RDFfdwState *state, PlannerInfo *root) elog(DEBUG1, " %s: SPARQL is valid and contains a DISTINCT modifier > pushing down DISTINCT", __func__); appendStringInfo(&sparql,"%s\nSELECT DISTINCT %s\n%s%s", state->sparql_prefixes, - state->sparql_select, + strlen(state->sparql_select) == 0 ? " * " : state->sparql_select, state->sparql_from, where_graph.data); } @@ -2728,7 +2728,7 @@ static void CreateSPARQL(RDFfdwState *state, PlannerInfo *root) elog(DEBUG1, " %s: SPARQL is valid and contains a REDUCED modifier > pushing down REDUCED", __func__); appendStringInfo(&sparql,"%s\nSELECT REDUCED %s\n%s%s", state->sparql_prefixes, - state->sparql_select, + strlen(state->sparql_select) == 0 ? " * " : state->sparql_select, state->sparql_from, where_graph.data); } @@ -2744,7 +2744,7 @@ static void CreateSPARQL(RDFfdwState *state, PlannerInfo *root) { appendStringInfo(&sparql,"%s\nSELECT DISTINCT %s\n%s%s", state->sparql_prefixes, - state->sparql_select, + strlen(state->sparql_select) == 0 ? " * " : state->sparql_select, state->sparql_from, where_graph.data); } @@ -2752,7 +2752,7 @@ static void CreateSPARQL(RDFfdwState *state, PlannerInfo *root) { appendStringInfo(&sparql,"%s\nSELECT %s\n%s%s", state->sparql_prefixes, - state->sparql_select, + strlen(state->sparql_select) == 0 ? " * " : state->sparql_select, state->sparql_from, where_graph.data); }