public static Builder builder() { return new Builder() { @Override protected SQLTemplates build(char escape, boolean quote) { return new H2Templates(escape, quote); } }; }
public H2Templates(char escape, boolean quote) { super("\"", escape, quote); setNativeMerge(true); setLimitRequired(true); setCountDistinctMultipleColumns(true); setPrecedence(Precedence.ARITH_LOW + 1, Ops.CONCAT); setPrecedence(Precedence.COMPARISON, Ops.EQ, Ops.EQ_IGNORE_CASE, Ops.NE); add(Ops.MOD, "{0} % {1}", Precedence.ARITH_HIGH); add(Ops.MathOps.ROUND, "round({0},0)"); add(Ops.TRIM, "trim(both from {0})"); add(Ops.DateTimeOps.DAY_OF_WEEK, "day_of_week({0})"); add(Ops.MathOps.LN, "log({0})"); add(Ops.MathOps.LOG, "(log({0}) / log({1}))"); add(Ops.MathOps.COTH, "(cosh({0}) / sinh({0}))"); add(Ops.DateTimeOps.DATE, "convert({0}, date)"); addTypeNameToCode("result_set", -10); addTypeNameToCode("identity", Types.BIGINT); addTypeNameToCode("uuid", Types.BINARY); addTypeNameToCode("serial", Types.INTEGER); addTypeNameToCode("varchar_ignorecase", Types.VARCHAR); add(Ops.DateTimeOps.TRUNC_YEAR, "parsedatetime(formatdatetime({0},'yyyy'),'yyyy')"); add(Ops.DateTimeOps.TRUNC_MONTH, "parsedatetime(formatdatetime({0},'yyyy-MM'),'yyyy-MM')"); add(Ops.DateTimeOps.TRUNC_WEEK, "parsedatetime(formatdatetime({0},'YYYY-ww'),'YYYY-ww')"); add(Ops.DateTimeOps.TRUNC_DAY, "parsedatetime(formatdatetime({0},'yyyy-MM-dd'),'yyyy-MM-dd')"); add(Ops.DateTimeOps.TRUNC_HOUR, "parsedatetime(formatdatetime({0},'yyyy-MM-dd HH'),'yyyy-MM-dd HH')"); add(Ops.DateTimeOps.TRUNC_MINUTE, "parsedatetime(formatdatetime({0},'yyyy-MM-dd HH:mm'),'yyyy-MM-dd HH:mm')"); add(Ops.DateTimeOps.TRUNC_SECOND, "parsedatetime(formatdatetime({0},'yyyy-MM-dd HH:mm:ss'),'yyyy-MM-dd HH:mm:ss')"); }
sqlTemplate = PostgresTemplates.builder(); } else if (SQLTemplatesConstants.DB_PRODUCT_NAME_H2.equals(dbType)) { sqlTemplate = H2Templates.builder(); } else if (SQLTemplatesConstants.DB_PRODUCT_NAME_MYSQL.equals(dbType)) { sqlTemplate = MySQLTemplates.builder();
return H2Templates.builder();
@Override protected SQLTemplates build(char escape, boolean quote) { return new H2Templates(escape, quote); } };
private static SQLTemplates.Builder findDialectBuilder(final DatabaseConfig databaseConfig) { if (databaseConfig.isMySql()) { return MySQLTemplates.builder(); } if (databaseConfig.isPostgres()) { return PostgresTemplates.builder(); } if (databaseConfig.isOracle()) { return OracleTemplates.builder(); } if (databaseConfig.isSqlServer()) { return SQLServerTemplates.builder(); } if (databaseConfig.isH2()) { return H2Templates.builder(); } // should be removed in 8.0; only required during migration of 6.x HSQL installation to 7.x H2 if (databaseConfig.isHSql()) { return HSQLDBTemplates.builder(); } throw new IllegalStateException("Unrecognised database dialect '" + databaseConfig.getDatabaseType() + "'."); }
public static SQLTemplates getSQLTemplates() { switch (target.get()) { case CUBRID:return new CUBRIDTemplates(); case DERBY: return new DerbyTemplates(); case H2: return new H2Templates(); case HSQLDB:return new HSQLDBTemplates(); case SQLSERVER: return new SQLServerTemplates(); case MYSQL: return new MySQLTemplates(); case ORACLE:return new OracleTemplates(); case POSTGRES: return new PostgresTemplates(); case SQLITE:return new SQLiteTemplates(); case TERADATA: return new TeradataTemplates(); } throw new IllegalStateException("Unknown mode " + mode); }