Search in sources :

Example 1 with Style

use of io.crate.expression.symbol.format.Style in project crate by crate.

the class WindowFunction method toString.

@Override
public String toString(Style style) {
    var builder = new StringBuilder(super.toString(style));
    if (ignoreNulls != null) {
        if (ignoreNulls) {
            builder.append(" IGNORE NULLS");
        } else {
            builder.append(" RESPECT NULLS");
        }
    }
    builder.append(" OVER (");
    var partitions = windowDefinition.partitions();
    if (!partitions.isEmpty()) {
        builder.append("PARTITION BY ");
        builder.append(Lists2.joinOn(", ", partitions, x -> x.toString(style)));
    }
    var orderBy = windowDefinition.orderBy();
    if (orderBy != null) {
        if (!partitions.isEmpty()) {
            builder.append(" ");
        }
        builder.append("ORDER BY ");
        OrderBy.explainRepresentation(builder, orderBy.orderBySymbols(), orderBy.reverseFlags(), orderBy.nullsFirst(), x -> x.toString(style));
    }
    WindowFrameDefinition frameDefinition = windowDefinition.windowFrameDefinition();
    if (frameDefinition != WindowDefinition.RANGE_UNBOUNDED_PRECEDING_CURRENT_ROW) {
        builder.append(" ");
        builder.append(frameDefinition.mode().name());
        builder.append(" BETWEEN ");
        appendFrameBound(builder, style, frameDefinition.start());
        builder.append(" AND ");
        appendFrameBound(builder, style, frameDefinition.end());
    }
    builder.append(")");
    return builder.toString();
}
Also used : StreamOutput(org.elasticsearch.common.io.stream.StreamOutput) AGGREGATE(io.crate.metadata.FunctionType.AGGREGATE) DataType(io.crate.types.DataType) IOException(java.io.IOException) Signature(io.crate.metadata.functions.Signature) FrameBoundDefinition(io.crate.analyze.FrameBoundDefinition) Style(io.crate.expression.symbol.format.Style) WINDOW(io.crate.metadata.FunctionType.WINDOW) Lists2(io.crate.common.collections.Lists2) Objects(java.util.Objects) List(java.util.List) OrderBy(io.crate.analyze.OrderBy) Version(org.elasticsearch.Version) WindowDefinition(io.crate.analyze.WindowDefinition) StreamInput(org.elasticsearch.common.io.stream.StreamInput) WindowFrameDefinition(io.crate.analyze.WindowFrameDefinition) Nullable(javax.annotation.Nullable) WindowFrameDefinition(io.crate.analyze.WindowFrameDefinition)

Aggregations

FrameBoundDefinition (io.crate.analyze.FrameBoundDefinition)1 OrderBy (io.crate.analyze.OrderBy)1 WindowDefinition (io.crate.analyze.WindowDefinition)1 WindowFrameDefinition (io.crate.analyze.WindowFrameDefinition)1 Lists2 (io.crate.common.collections.Lists2)1 Style (io.crate.expression.symbol.format.Style)1 AGGREGATE (io.crate.metadata.FunctionType.AGGREGATE)1 WINDOW (io.crate.metadata.FunctionType.WINDOW)1 Signature (io.crate.metadata.functions.Signature)1 DataType (io.crate.types.DataType)1 IOException (java.io.IOException)1 List (java.util.List)1 Objects (java.util.Objects)1 Nullable (javax.annotation.Nullable)1 Version (org.elasticsearch.Version)1 StreamInput (org.elasticsearch.common.io.stream.StreamInput)1 StreamOutput (org.elasticsearch.common.io.stream.StreamOutput)1