@Override protected SQLTemplates build(char escape, boolean quote) { return new OracleTemplates(escape, quote); } };
public OracleTemplates(char escape, boolean quote) { super("\"", escape, quote); setParameterMetadataAvailable(false); setBatchCountViaGetUpdateCount(true); setWithRecursive("with "); setCountViaAnalytics(true); setListMaxSize(1000); setPrecedence(Precedence.COMPARISON, Ops.EQ, Ops.EQ_IGNORE_CASE, Ops.NE); setPrecedence(Precedence.COMPARISON + 1, Ops.IS_NULL, Ops.IS_NOT_NULL, Ops.LIKE, Ops.LIKE_ESCAPE, Ops.BETWEEN, Ops.IN, Ops.NOT_IN, Ops.EXISTS); setPrecedence(Precedence.COMPARISON + 1, OTHER_LIKE_CASES); add(Ops.ALIAS, "{0} {1}"); add(SQLOps.NEXTVAL, "{0s}.nextval"); add(Ops.INDEX_OF, "instrb({0},{1})-1", Precedence.ARITH_LOW); add(Ops.INDEX_OF_2ARGS, "instrb({0},{1},{2}+1)-1", Precedence.ARITH_LOW); add(Ops.MATCHES, "regexp_like({0},{1})", -1); add(Ops.StringOps.LOCATE, "instr({1},{0})"); add(Ops.StringOps.LOCATE2, "instr({1},{0},{2s})"); add(Ops.StringOps.LEFT, "substr({0},1,{1})"); add(Ops.StringOps.RIGHT, "substr({0},-{1s},length({0}))"); add(Ops.MathOps.CEIL, "ceil({0})"); add(Ops.MathOps.RANDOM, "dbms_random.value"); add(Ops.MathOps.LN, "ln({0})"); add(Ops.MathOps.LOG, "log({1},{0})"); add(Ops.MathOps.COT, "(cos({0}) / sin({0}))");
sqlTemplate = MySQLTemplates.builder(); } else if (SQLTemplatesConstants.DB_PRODUCT_NAME_ORACLE.equals(dbType)) { sqlTemplate = OracleTemplates.builder(); } else if (SQLTemplatesConstants.DB_PRODUCT_NAME_CUBRID.equals(dbType)) { sqlTemplate = CUBRIDTemplates.builder();
@Override public void serializeUpdate(QueryMetadata metadata, RelationalPath<?> entity, List<Pair<Path<?>, Expression<?>>> updates, SQLSerializer context) { context.serializeForUpdate(metadata, entity, updates); // limit if (metadata.getModifiers().isRestricting()) { serializeModifiersForDML(metadata, context); } if (!metadata.getFlags().isEmpty()) { context.serialize(Position.END, metadata.getFlags()); } }
private void serializeModifiersForDML(QueryMetadata metadata, SQLSerializer context) { if (metadata.getWhere() != null) { context.append(" and "); } else { context.append(getWhere()); } context.append("rownum <= "); context.visitConstant(metadata.getModifiers().getLimit()); }
return OracleTemplates.builder();
@Override public void serializeDelete(QueryMetadata metadata, RelationalPath<?> entity, SQLSerializer context) { context.serializeForDelete(metadata, entity); // limit if (metadata.getModifiers().isRestricting()) { serializeModifiersForDML(metadata, context); } if (!metadata.getFlags().isEmpty()) { context.serialize(Position.END, metadata.getFlags()); } }
public static Builder builder() { return new Builder() { @Override protected SQLTemplates build(char escape, boolean quote) { return new OracleTemplates(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 OracleQueryFactory(Provider<Connection> connection) { this(new Configuration(new OracleTemplates()), connection); }
public OracleQuery(Connection conn) { this(conn, new OracleTemplates(), new DefaultQueryMetadata()); }
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); }