From 36f0a4a56aef55e1f0fcc4ac50e672fe7f3ede64 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 9 Mar 2020 11:57:42 +0100 Subject: [PATCH] [jOOQ/jOOQ#9928] Added support for PostgreSQL --- jOOQ/src/main/java/org/jooq/JSONObjectNullStep.java | 5 +++-- jOOQ/src/main/java/org/jooq/impl/JSONObject.java | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/JSONObjectNullStep.java b/jOOQ/src/main/java/org/jooq/JSONObjectNullStep.java index a0d85bb29e..f78ea3d71e 100644 --- a/jOOQ/src/main/java/org/jooq/JSONObjectNullStep.java +++ b/jOOQ/src/main/java/org/jooq/JSONObjectNullStep.java @@ -38,6 +38,7 @@ package org.jooq; import static org.jooq.SQLDialect.H2; +import static org.jooq.SQLDialect.POSTGRES; import org.jooq.impl.DSL; @@ -53,12 +54,12 @@ public interface JSONObjectNullStep extends Field { /** * Include NULL values in output JSON. */ - @Support({ H2 }) + @Support({ H2, POSTGRES }) Field nullOnNull(); /** * Exclude NULL values in output JSON. */ - @Support({ H2 }) + @Support({ H2, POSTGRES }) Field absentOnNull(); } diff --git a/jOOQ/src/main/java/org/jooq/impl/JSONObject.java b/jOOQ/src/main/java/org/jooq/impl/JSONObject.java index 6e30cb9148..89c64be900 100644 --- a/jOOQ/src/main/java/org/jooq/impl/JSONObject.java +++ b/jOOQ/src/main/java/org/jooq/impl/JSONObject.java @@ -119,7 +119,14 @@ final class JSONObject extends AbstractField implements JSONObjectNullStep case POSTGRES: + if (nullClause == NullClause.ABSENT_ON_NULL) + ctx.visit(unquotedName("json_strip_nulls")).sql('('); + ctx.visit(unquotedName("json_build_object")).sql('(').visit(args).sql(')'); + + if (nullClause == NullClause.ABSENT_ON_NULL) + ctx.sql(')'); + break;