protected void addTypeNameToCode(String type, int code) { addTypeNameToCode(type, code, false); }
case Types.NVARCHAR: case Types.VARCHAR: return "'" + escapeLiteral(literal) + "'"; case Types.BIGINT: case Types.BIT:
@Override public String getCastTypeNameForCode(int code) { if (code == Types.VARCHAR) { return "varchar(10)"; } else { return super.getCastTypeNameForCode(code); } }
append(templates.getWithRecursive()); } else { append(templates.getWith()); stage = Stage.SELECT; if (forCountRow) { append(templates.getSelect()); if (hasFlags) { serialize(Position.AFTER_SELECT, flags); append(templates.getCountStar()); if (!groupBy.isEmpty()) { append(templates.getFrom()); append("("); append(templates.getSelect()); append("1 as one "); suffix = ") internal"; List<? extends Expression<?>> columns; if (sqlSelect.isEmpty()) { columns = getIdentifierColumns(joins, !templates.isCountDistinctMultipleColumns()); } else { columns = sqlSelect; append(templates.getCountStar()); append(templates.getFrom()); append("("); append(templates.getSelectDistinct()); handle(COMMA, columns);
for (Type<?> customType : templates.getCustomTypes()) { javaTypeMapping.register(customType); for (Map.Entry<SchemaAndTable, SchemaAndTable> entry : templates.getTableOverrides().entrySet()) { schemaTables.put(entry.getKey(), entry.getValue()); if (templates.isArraysSupported()) { for (Class<?> cl : classes) { int code = jdbcTypeMapping.get(cl); String name = templates.getTypeNameForCode(code); Class<?> arrType = Array.newInstance(cl, 0).getClass(); javaTypeMapping.register(new ArrayType(arrType, name));
append(COMMA); String order = os.getOrder() == Order.ASC ? templates.getAsc() : templates.getDesc(); if (os.getNullHandling() == OrderSpecifier.NullHandling.NullsFirst) { if (templates.getNullsFirst() != null) { handle(os.getTarget()); append(order); append(templates.getNullsFirst()); } else { append("(case when "); if (templates.getNullsLast() != null) { handle(os.getTarget()); append(order); append(templates.getNullsLast()); } else { append("(case when ");
append(templates.getInsertInto()); append(templates.getValues()); append("("); handle(COMMA, values); append(")"); } else { append(templates.getDefaultValues());
add(SQLOps.ALL, "{0}.*"); add(SQLOps.WITH_ALIAS, "{0} as {1}", 0); add(SQLOps.WITH_COLUMNS, "{0} {1}", 0); add(SQLOps.FOR_UPDATE, "\nfor update"); add(SQLOps.FOR_SHARE, "\nfor share"); add(SQLOps.NO_WAIT, " nowait"); add(SQLOps.QUALIFY, "\nqualify {0}"); add(Ops.AND, "{0} and {1}"); add(Ops.NOT, "not {0}", Precedence.NOT); add(Ops.OR, "{0} or {1}"); add(Ops.MathOps.RANDOM, "rand()"); add(Ops.MathOps.RANDOM2, "rand({0})"); add(Ops.MathOps.CEIL, "ceiling({0})"); add(Ops.MathOps.POWER, "power({0},{1})"); add(Ops.MOD, "mod({0},{1})", Precedence.HIGHEST); add(Ops.DateTimeOps.CURRENT_DATE, "current_date"); add(Ops.DateTimeOps.CURRENT_TIME, "current_time"); add(Ops.DateTimeOps.CURRENT_TIMESTAMP, "current_timestamp"); add(Ops.DateTimeOps.MILLISECOND, "0"); add(Ops.DateTimeOps.SECOND, "extract(second from {0})"); add(Ops.DateTimeOps.MINUTE, "extract(minute from {0})"); add(Ops.DateTimeOps.HOUR, "extract(hour from {0})"); add(Ops.DateTimeOps.WEEK, "extract(week from {0})"); add(Ops.DateTimeOps.MONTH, "extract(month from {0})");
void serializeForDelete(QueryMetadata metadata, RelationalPath<?> entity) { serialize(Position.START, metadata.getFlags()); if (!serialize(Position.START_OVERRIDE, metadata.getFlags())) { append(templates.getDelete()); } serialize(Position.AFTER_SELECT, metadata.getFlags()); append("from "); dmlWithSchema = true; handle(entity); dmlWithSchema = false; if (metadata.getWhere() != null) { append(templates.getWhere()).handle(metadata.getWhere()); } }
Integer sqlComponentType = templates.getCodeForTypeName(typeName); if (sqlComponentType == null) { logger.warn("Found no JDBC type for " + typeName + " using OTHER instead");
@Override public String getCastTypeNameForCode(int code) { switch (code) { case Types.VARCHAR: return "varchar(4000)"; default: return super.getCastTypeNameForCode(code); } }
@Override public String escapeLiteral(String str) { StringBuilder builder = new StringBuilder(); for (char ch : super.escapeLiteral(str).toCharArray()) { if (ch == '\\') { builder.append("\\"); } builder.append(ch); } return builder.toString(); }
@Override public String getCastTypeNameForCode(int code) { if (code == Types.VARCHAR) { return "varchar(256)"; } else { return super.getCastTypeNameForCode(code); } }
@Override public String toString() { if (queryString == null) { StringBuilder builder = new StringBuilder(); for (Map.Entry<String, String> entry : values.entrySet()) { builder.append(entry.getKey()).append("=").append(entry.getValue()); builder.append(";"); } if (configuration.getUseLiterals() || forSession) { queryString = "set query_band='" + configuration.getTemplates().escapeLiteral(builder.toString()) + (forSession ? "' for session" : "' for transaction"); parameter = null; } else { queryString = "set query_band=?" + (forSession ? " for session" : " for transaction"); parameter = builder.toString(); } } return queryString; }
@Override public String getCastTypeNameForCode(int code) { switch (code) { case Types.DOUBLE: return "double precision"; case Types.VARCHAR: return "varchar(4000 char)"; default: return super.getCastTypeNameForCode(code); } }
@Override public String getCastTypeNameForCode(int code) { switch (code) { case Types.VARCHAR: return "varchar(4000)"; default: return super.getCastTypeNameForCode(code); } }
@Override public String getCastTypeNameForCode(int code) { switch (code) { case Types.TINYINT: case Types.SMALLINT: case Types.INTEGER: case Types.BIGINT: return "signed"; case Types.FLOAT: case Types.DOUBLE: case Types.REAL: case Types.DECIMAL: return "decimal"; case Types.VARCHAR: return "char"; default: return super.getCastTypeNameForCode(code); } }
/** * * @param type * @return */ public String getTypeNameForCast(Class<?> type) { Integer jdbcType = jdbcTypeMapping.get(type); if (jdbcType == null) { jdbcType = javaTypeMapping.getType(type).getSQLTypes()[0]; } return templates.getCastTypeNameForCode(jdbcType); }