TableLike<?> values(DSLContext ctx, RowN[] rows, String tableName, String... fieldNames) { switch (sqlDialect.family()) { case H2: List<SelectField<?>> fields = Lists.newArrayListWithCapacity(fieldNames.length); for (int i = 1; i <= fieldNames.length; i++) { fields.add(DSL.field("C" + i).as(fieldNames[i-1])); } RenderContext context = ctx.renderContext(); context.start(TABLE_VALUES) .keyword("values") .formatIndentLockStart(); boolean firstRow = true; for (Row row : rows) { if (!firstRow) { context.sql(',').formatSeparator(); } context.sql(row.toString()); firstRow = false; } context.formatIndentLockEnd() .end(TABLE_VALUES); String valuesClause = context.render(); return ctx.select(fields).from(valuesClause).asTable(tableName); default: return DSL.values(rows).as(tableName, fieldNames); } }
@Override public String render(QueryPart part) { return renderContext().render(part); }
@Override public String render(QueryPart part) { return renderContext().visit(part).render(); }
@Override public final String render(QueryPart part) { return new DefaultRenderContext(this).visit(part).render(); }
@Override public String renderInlined(QueryPart part) { return renderContext().paramType(INLINED).render(part); }
@Override public String renderNamedParams(QueryPart part) { return renderContext().paramType(NAMED).render(part); }
@Override public String renderNamedOrInlinedParams(QueryPart part) { return renderContext().paramType(NAMED_OR_INLINED).visit(part).render(); }
@Override public String renderInlined(QueryPart part) { return renderContext().paramType(INLINED).visit(part).render(); }
@Override public final String render(QueryPart part) { RenderContext local = new DefaultRenderContext(this).visit(part); /* [pro] xx xx xxxxxxx xx xx xxxxxx xx xxx xxxxxx xx xxxxxxxxxx xxx xxxxx xxxxx xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx xxxx xxxxxxxxx xxx xxxxxxx xx x xxxxxxxx xxxxxxxx xxxx xxx xxx xxxxx xx x xxxxxxxxxx xxxxxxx xx xxxx xxxx x xxxx xx xxxx xxxxx xxxxxxxx xx xx xx xxx xxxx xx xxxxxx xxx xxxxxx xxxxxxxxx xxxx xxxxxxxx xxxxxxx xx xxxxxxxxxxxxx xxx xx xxx xxxx xx xxxxxx xxx xxxxx xxxxxxx xxxxxxxx xx xxxxxxxxxx x xxxxxxx xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xx xxxxx xxxxxxxxxx xxxxxxx x xx xx xxxxx xx xxxxxx xx xxxxxx xxxxxx xxxxxx xxx xxx xxxxxxxx xx xxxxxxx xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x x xxxx xx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x xxxxxxxxxxx xx xxx xxxxxxxx xxxx x xxxx xxxxx xxxxxxx xx xxxx x x xxxxxxxxxxxxxxxxxxxxxx x x xxxxx x xxxx x xxxxxxxxxxx xx xxx xxxxxxxx xxxx x xxxx xxxxx xxxxxxx xx xxxx x x xxxxxxxxxxxxxxxxxxxxxxxx x x xx xxxxxxxx xx xx [/pro] */ return local.render(); }
@Override public String renderNamedParams(QueryPart part) { return renderContext().paramType(NAMED).visit(part).render(); }
.renderContext() .paramType(ParamType.INLINED) .render(query);
/** * Returns an SQL statement that can be used to get a count * of all rows matching the query. */ public String countStatement() { Table<?> table = initialize(recordTable); return tableRenderContext.render(dslContext .select(needsDistinct ? recordIdField.countDistinct() : recordIdField.count()) .from(table) .where(whereCondition)); }
return tableRenderContext.render(dslContext .select(selectFields) .from(table)
.formatNewLine() .sql(')') .render();
final String parse(String sql) { Queries queries; String normalised; try { queries = parser.parse(sql); normalised = normalisingRenderer.render(queries); } catch (ParserException ignore) { normalised = sql; } Set<String> duplicates; synchronized (DUPLICATE_SQL) { duplicates = duplicates(DUPLICATE_SQL, sql, normalised); } if (duplicates != null) listeners.duplicateStatements(new DefaultDiagnosticsContext(sql, normalised, duplicates, null)); List<String> repetitions = repetitions(repeatedSQL, sql, normalised); if (repetitions != null) listeners.repeatedStatements(new DefaultDiagnosticsContext(sql, normalised, null, repetitions)); return sql; }
private final String getSQL0(ExecuteContext ctx) { if (executePreparedStatements(configuration().settings())) { try { RenderContext render = new DefaultRenderContext(configuration); render.data(DATA_COUNT_BIND_VALUES, true); return render.render(this); } catch (DefaultRenderContext.ForceInlineSignal e) { ctx.data(DATA_FORCE_STATIC_STATEMENT, true); return getSQL(INLINED); } } else { return getSQL(INLINED); } }
private final Rendered getSQL0(ExecuteContext ctx) { Rendered result; // [#3542] [#4977] Some dialects do not support bind values in DDL statements // [#6474] [#6929] Can this be communicated in a leaner way? if (ctx.type() == DDL) { ctx.data(DATA_FORCE_STATIC_STATEMENT, true); DefaultRenderContext render = new DefaultRenderContext(configuration); result = new Rendered(render.paramType(INLINED).visit(this).render(), null, render.peekSkipUpdateCounts()); } else if (executePreparedStatements(configuration().settings())) { try { DefaultRenderContext render = new DefaultRenderContext(configuration); render.data(DATA_COUNT_BIND_VALUES, true); result = new Rendered(render.visit(this).render(), render.bindValues(), render.peekSkipUpdateCounts()); } catch (DefaultRenderContext.ForceInlineSignal e) { ctx.data(DATA_FORCE_STATIC_STATEMENT, true); DefaultRenderContext render = new DefaultRenderContext(configuration); result = new Rendered(render.paramType(INLINED).visit(this).render(), null, render.peekSkipUpdateCounts()); } } else { DefaultRenderContext render = new DefaultRenderContext(configuration); result = new Rendered(render.paramType(INLINED).visit(this).render(), null, render.peekSkipUpdateCounts()); } return result; }
return tableRenderContext.render(select);
/** * Returns an SQL statement that can be used to get when the rows * matching the query were last updated. */ public String lastUpdateStatement() { Table<?> table = initialize(DSL.table(DSL.name(database.recordUpdateTable.getName())).as(recordTableAlias)); return tableRenderContext.render(dslContext .select(DSL.field(DSL.name(recordTableAlias, database.recordUpdateDateField.getName())).max()) .from(table) .where(whereCondition)); }