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 RenderContext renderContext() { return delegate.renderContext(); }
double time = timer.stop("SQL: Update"); java.util.function.Supplier<String> sqlSupplier = () -> context .renderContext() .paramType(ParamType.INLINED) .render(query);
/** * Creates an instance that can translate the given {@code query} * with the given {@code database}. */ public SqlQuery(AbstractSqlDatabase database, Query<?> query, String aliasPrefix) { this.database = database; this.query = query; this.aliasPrefix = aliasPrefix; dslContext = DSL.using(database.getDialect()); tableRenderContext = dslContext.renderContext().paramType(ParamType.INLINED).declareTables(true); renderContext = dslContext.renderContext().paramType(ParamType.INLINED); recordTableAlias = aliasPrefix + "r"; recordTable = DSL.table(DSL.name(database.recordTable.getName())).as(recordTableAlias); recordIdField = DSL.field(DSL.name(recordTableAlias, database.recordIdField.getName()), database.uuidType()); recordTypeIdField = DSL.field(DSL.name(recordTableAlias, database.recordTypeIdField.getName()), database.uuidType()); mappedKeys = query.mapEmbeddedKeys(database.getEnvironment()); selectedIndexes = new HashMap<>(); for (Map.Entry<String, Query.MappedKey> entry : mappedKeys.entrySet()) { selectIndex(entry.getKey(), entry.getValue()); } }
String replaced = configuration .dsl() .renderContext() .declareTables(true) .sql('(')
@SuppressWarnings("deprecation") DiagnosticsConnection(Configuration configuration) { super(configuration.connectionProvider().acquire()); this.configuration = configuration; this.normalisingRenderer = configuration.derive( SettingsTools.clone(configuration.settings()) // Forcing all inline parameters to be indexed helps find opportunities to use bind variables .withParamType(FORCE_INDEXED) // Padding IN lists shows duplicates that arise from arbitrary-length dynamic IN lists .withInListPadding(true) .withInListPadBase(16) ).dsl().renderContext(); this.parser = configuration.dsl().parser(); this.listeners = DiagnosticsListeners.get(configuration); }