[jOOQ/jOOQ#13220] SQLite's JSON operators don't retain boolean three-valued logic

This commit is contained in:
Lukas Eder 2022-03-07 11:29:19 +01:00
parent fc08adfabd
commit 4a06ec9a00

View File

@ -43,6 +43,7 @@ import static org.jooq.SQLDialect.MYSQL;
// ...
import static org.jooq.impl.AbstractRowAsField.forceMultisetContent;
import static org.jooq.impl.DSL.NULL;
import static org.jooq.impl.DSL.case_;
import static org.jooq.impl.DSL.coalesce;
import static org.jooq.impl.DSL.condition;
import static org.jooq.impl.DSL.field;
@ -209,7 +210,7 @@ final class JSONEntryImpl<T> extends AbstractQueryPart implements JSONEntry<T>,
case SQLITE:
if (isType(type, Boolean.class))
return function(N_JSON, SQLDataType.JSON, iif(condition((Field<Boolean>) field), inline("true"), inline("false")));
return function(N_JSON, SQLDataType.JSON, case_((Field<Boolean>) field).when(inline(true), inline("true")).when(inline(false), inline("false")));
break;