[jOOQ/jOOQ#12044] Correctly emulate XMLAGG(...) FILTER (WHERE ...) in Db2, Oracle, Teradata
This commit is contained in:
parent
c1431efdd5
commit
339ce915c5
@ -37,6 +37,7 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
// ...
|
||||
import static org.jooq.impl.Names.N_XMLAGG;
|
||||
|
||||
import org.jooq.Context;
|
||||
@ -46,8 +47,6 @@ import org.jooq.XMLAggOrderByStep;
|
||||
|
||||
|
||||
/**
|
||||
* The JSON array constructor.
|
||||
*
|
||||
* @author Lukas Eder
|
||||
*/
|
||||
final class XMLAgg extends AbstractAggregateFunction<XML> implements XMLAggOrderByStep<XML> {
|
||||
@ -58,7 +57,19 @@ final class XMLAgg extends AbstractAggregateFunction<XML> implements XMLAggOrder
|
||||
|
||||
@Override
|
||||
public void accept(Context<?> ctx) {
|
||||
ctx.visit(N_XMLAGG).sql('(').visit(arguments);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ctx.visit(N_XMLAGG).sql('(');
|
||||
acceptArguments0(ctx);
|
||||
acceptOrderBy(ctx);
|
||||
ctx.sql(')');
|
||||
|
||||
|
||||
@ -37,6 +37,7 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
// ...
|
||||
import static org.jooq.impl.Names.N_XMLATTRIBUTES;
|
||||
import static org.jooq.impl.Tools.BooleanDataKey.DATA_AS_REQUIRED;
|
||||
|
||||
@ -59,6 +60,13 @@ final class XMLAttributesImpl extends AbstractQueryPart implements XMLAttributes
|
||||
|
||||
@Override
|
||||
public final void accept(Context<?> ctx) {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
boolean format = attributes.size() > 1;
|
||||
|
||||
ctx.data(DATA_AS_REQUIRED, true, c -> {
|
||||
|
||||
@ -87,6 +87,11 @@ extends
|
||||
|
||||
@Override
|
||||
public final void accept(Context<?> ctx) {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ctx.visit(N_XMLCOMMENT).sql('(').visit(comment).sql(')');
|
||||
}
|
||||
|
||||
|
||||
@ -37,6 +37,7 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
// ...
|
||||
import static org.jooq.impl.Names.N_XMLCONCAT;
|
||||
|
||||
import java.util.Collection;
|
||||
@ -59,6 +60,13 @@ final class XMLConcat extends AbstractField<XML> {
|
||||
|
||||
@Override
|
||||
public final void accept(Context<?> ctx) {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ctx.visit(N_XMLCONCAT).sql('(').visit(args).sql(')');
|
||||
}
|
||||
}
|
||||
|
||||
@ -37,6 +37,7 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
// ...
|
||||
import static org.jooq.impl.Names.N_XMLDOCUMENT;
|
||||
|
||||
import org.jooq.Context;
|
||||
@ -58,6 +59,13 @@ final class XMLDocument extends AbstractField<XML> {
|
||||
|
||||
@Override
|
||||
public final void accept(Context<?> ctx) {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ctx.visit(N_XMLDOCUMENT).sql('(').visit(content).sql(')');
|
||||
}
|
||||
}
|
||||
|
||||
@ -37,6 +37,7 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
// ...
|
||||
import static org.jooq.impl.Keywords.K_NAME;
|
||||
import static org.jooq.impl.Names.N_XMLCONCAT;
|
||||
import static org.jooq.impl.Names.N_XMLELEMENT;
|
||||
@ -69,6 +70,21 @@ final class XMLElement extends AbstractField<XML> {
|
||||
|
||||
@Override
|
||||
public final void accept(Context<?> ctx) {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
boolean hasAttributes = attributes != null && !((XMLAttributesImpl) attributes).attributes.isEmpty();
|
||||
boolean hasContent = !content.isEmpty();
|
||||
boolean format = hasAttributes || hasContent;
|
||||
|
||||
@ -87,6 +87,11 @@ extends
|
||||
|
||||
@Override
|
||||
public final void accept(Context<?> ctx) {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ctx.data(DATA_AS_REQUIRED, true,
|
||||
c -> c.visit(N_XMLFOREST).sql('(')
|
||||
.declareFields(true, x -> x.visit(new SelectFieldList<>(fields)))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user