This commit is contained in:
Lukas Eder 2020-12-15 09:52:38 +01:00
parent ed0ada98f4
commit d0ea8f0e82
2 changed files with 71 additions and 36 deletions

View File

@ -16972,6 +16972,24 @@ public class DSL {
return new Xmlcomment(comment);
}
/**
* The <code>XMLFOREST</code> function.
*/
@NotNull
@Support({ POSTGRES })
public static Field<XML> xmlforest(Field<?>... fields) {
return new Xmlforest(Arrays.asList(fields));
}
/**
* The <code>XMLFOREST</code> function.
*/
@NotNull
@Support({ POSTGRES })
public static Field<XML> xmlforest(Collection<? extends Field<?>> fields) {
return new Xmlforest(fields);
}
/**
@ -20925,24 +20943,6 @@ public class DSL {
return new XMLPI(target, content);
}
/**
* The XML forest constructor.
*/
@NotNull
@Support({ POSTGRES })
public static Field<XML> xmlforest(Field<?>... fields) {
return xmlforest(asList(fields));
}
/**
* The XML forest constructor.
*/
@NotNull
@Support({ POSTGRES })
public static Field<XML> xmlforest(Collection<? extends Field<?>> fields) {
return new XMLForest(fields);
}
/**
* The XML aggregate function.
*/

View File

@ -37,42 +37,77 @@
*/
package org.jooq.impl;
import static org.jooq.impl.Names.N_XMLFOREST;
import static org.jooq.impl.Tools.BooleanDataKey.DATA_AS_REQUIRED;
import static org.jooq.impl.DSL.*;
import static org.jooq.impl.Internal.*;
import static org.jooq.impl.Keywords.*;
import static org.jooq.impl.Names.*;
import static org.jooq.impl.SQLDataType.*;
import static org.jooq.impl.Tools.*;
import static org.jooq.impl.Tools.BooleanDataKey.*;
import static org.jooq.SQLDialect.*;
import java.util.Collection;
import org.jooq.*;
import org.jooq.impl.*;
import org.jooq.tools.*;
import java.util.*;
import org.jooq.Context;
import org.jooq.Field;
import org.jooq.XML;
/**
* @author Lukas Eder
* The <code>XMLFOREST</code> statement.
*/
final class XMLForest extends AbstractField<XML> {
@SuppressWarnings({ "rawtypes", "unused" })
final class Xmlforest
extends
AbstractField<XML>
{
/**
* Generated UID
*/
private static final long serialVersionUID = 4505809303211506197L;
private final SelectFieldList<Field<?>> args;
private static final long serialVersionUID = 1L;
XMLForest(Collection<? extends Field<?>> args) {
super(N_XMLFOREST, SQLDataType.XML);
private final Collection<? extends Field<?>> fields;
this.args = new SelectFieldList<>(args);
Xmlforest(
Collection<? extends Field<?>> fields
) {
super(N_XMLFOREST, allNotNull(XML));
this.fields = fields;
}
// -------------------------------------------------------------------------
// XXX: QueryPart API
// -------------------------------------------------------------------------
@Override
public final void accept(Context<?> ctx) {
boolean declareFields = ctx.declareFields();
Object previous = ctx.data(DATA_AS_REQUIRED, true);
ctx.visit(N_XMLFOREST).sql('(')
.declareFields(true)
.visit(args)
.visit(new SelectFieldList<>(fields))
.declareFields(declareFields)
.sql(')');
ctx.data(DATA_AS_REQUIRED, previous);
}
// -------------------------------------------------------------------------
// The Object API
// -------------------------------------------------------------------------
@Override
public boolean equals(Object that) {
if (that instanceof Xmlforest) {
return
StringUtils.equals(fields, ((Xmlforest) that).fields)
;
}
else
return super.equals(that);
}
}