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;