@Override public final void toSQL(RenderContext ctx) { // In the WINDOW clause, always declare window definitions if (ctx.declareWindows()) { ctx.visit(name) .sql(" ") .keyword("as") .sql(" (") .visit(window) .sql(")"); } // Outside the WINDOW clause, only few dialects actually support // referencing WINDOW definitions else if (asList(ctx.configuration().dialect()).contains(POSTGRES)) { ctx.visit(name); } // When emulating, just repeat the window specification else { ctx.visit(window); } }
DefaultRenderContext(RenderContext context) { this(context.configuration()); paramType(context.paramType()); qualifyCatalog(context.qualifyCatalog()); qualifySchema(context.qualifySchema()); quote(context.quote()); castMode(context.castMode()); data().putAll(context.data()); declareCTE = context.declareCTE(); declareWindows = context.declareWindows(); declareFields = context.declareFields(); declareTables = context.declareTables(); declareAliases = context.declareAliases(); }
.keyword("window") .sql(" ") .declareWindows(true) .visit(getWindow()) .declareWindows(false);