From cb7addce1dfc0e8fa662fd262e45118daedfe3a0 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 20 Feb 2023 20:00:47 +0100 Subject: [PATCH] [jOOQ/jOOQ#14653] Better handle the null/undefined difference in JSON_ARRAY --- jOOQ/src/main/java/org/jooq/impl/JSONArray.java | 4 ++++ .../main/java/org/jooq/impl/JSONEntryImpl.java | 17 +++++++++++++++++ jOOQ/src/main/java/org/jooq/impl/Names.java | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/JSONArray.java b/jOOQ/src/main/java/org/jooq/impl/JSONArray.java index a789f35962..9c7c3a19c6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/JSONArray.java +++ b/jOOQ/src/main/java/org/jooq/impl/JSONArray.java @@ -193,6 +193,10 @@ implements + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/JSONEntryImpl.java b/jOOQ/src/main/java/org/jooq/impl/JSONEntryImpl.java index 3d8841fe72..72264ce712 100644 --- a/jOOQ/src/main/java/org/jooq/impl/JSONEntryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/JSONEntryImpl.java @@ -62,7 +62,9 @@ import static org.jooq.impl.Names.N_JSON_EXTRACT; import static org.jooq.impl.Names.N_JSON_MERGE; import static org.jooq.impl.Names.N_JSON_MERGE_PRESERVE; import static org.jooq.impl.Names.N_JSON_QUERY; +import static org.jooq.impl.Names.N_PARSE_JSON; import static org.jooq.impl.Names.N_RAWTOHEX; +import static org.jooq.impl.Names.N_TO_VARIANT; import static org.jooq.impl.SQLDataType.BIT; import static org.jooq.impl.SQLDataType.BOOLEAN; import static org.jooq.impl.SQLDataType.JSON; @@ -78,9 +80,11 @@ import java.util.function.Function; import org.jooq.Context; import org.jooq.DataType; import org.jooq.Field; +import org.jooq.JSON; import org.jooq.JSONEntry; import org.jooq.JSONEntryValueStep; import org.jooq.Param; +// ... import org.jooq.QueryPart; import org.jooq.Record1; // ... @@ -292,6 +296,19 @@ final class JSONEntryImpl extends AbstractQueryPart implements JSONEntry, return field; } + + + + + + + + + + + + + @SuppressWarnings("unchecked") private static Field booleanCase(Field field) { return case_((Field) field).when(inline(true), inline("true")).when(inline(false), inline("false")); diff --git a/jOOQ/src/main/java/org/jooq/impl/Names.java b/jOOQ/src/main/java/org/jooq/impl/Names.java index fe99da5016..eda0386a00 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Names.java +++ b/jOOQ/src/main/java/org/jooq/impl/Names.java @@ -131,7 +131,6 @@ final class Names { static final Name N_GENERATOR = systemName("generator"); static final Name N_GEN_ID = systemName("gen_id"); static final Name N_GEN_UUID = systemName("gen_uuid"); - static final Name N_GET = systemName("get"); static final Name N_GETDATE = systemName("getdate"); static final Name N_GREATEST = systemName("greatest"); static final Name N_GROUPING_SETS = systemName("grouping sets"); @@ -276,6 +275,7 @@ final class Names { static final Name N_TIMESTAMP_SUB = systemName("timestamp_sub"); static final Name N_TO_CLOB = systemName("to_clob"); static final Name N_TO_NUMBER = systemName("to_number"); + static final Name N_TO_VARIANT = systemName("to_variant"); static final Name N_TRUNCATE = systemName("truncate"); static final Name N_TRUNCNUM = systemName("truncnum"); static final Name N_UNNEST = systemName("unnest");