private final void toSQLInsert(RenderContext context) { context .start(INSERT_INSERT_INTO) .keyword("insert") .sql(" ") // [#1295] MySQL natively supports the IGNORE keyword .keyword( (onDuplicateKeyIgnore && asList(MARIADB, MYSQL).contains(context.configuration().dialect())) ? "ignore " : "") .keyword("into") .sql(" ") .visit(getInto()); // [#1506] with DEFAULT VALUES, we might not have any columns to render if (insertMaps.isExecutable()) { context.sql(" "); insertMaps.insertMaps.get(0).toSQLReferenceKeys(context); } context.end(INSERT_INSERT_INTO); if (defaultValues) { switch (context.configuration().dialect().family()) { /* [pro] xx xxxx xxxxxxx xxxx xxxx xxxx xxxxxxx xx [/pro] */ case DERBY: case MARIADB: case MYSQL: context.sql(" ").keyword("values").sql("("); int count = getInto().fields().length; String separator = ""; for (int i = 0; i < count; i++) { context.sql(separator); context.keyword("default"); separator = ", "; } context.sql(")"); break; default: context.sql(" ").keyword("default values"); break; } } else { context.visit(insertMaps); } }
@Override public final boolean isExecutable() { return insertMaps.isExecutable() || defaultValues; }