/** * template method for LIMIT and OFFSET serialization * * @param metadata * @param context */ protected void serializeModifiers(QueryMetadata metadata, SQLSerializer context) { QueryModifiers mod = metadata.getModifiers(); if (mod.getLimit() != null) { context.handle(limitTemplate, mod.getLimit()); } else if (limitRequired) { context.handle(limitTemplate, Integer.MAX_VALUE); } if (mod.getOffset() != null) { context.handle(offsetTemplate, mod.getOffset()); } }
@Override protected void serializeModifiers(QueryMetadata metadata, SQLSerializer context) { QueryModifiers mod = metadata.getModifiers(); context.append(limitOffsetStart); if (!metadata.getOrderBy().isEmpty()) { context.handleOrderBy(metadata.getOrderBy()); } else { context.append("1"); } context.append(")"); if (mod.getLimit() == null) { context.handle(offsetTemplate, mod.getOffset()); } else if (mod.getOffset() == null) { context.handle(limitTemplate, mod.getLimit()); } else { context.handle(limitOffsetTemplate, mod.getOffset() + 1, mod.getOffset() + mod.getLimit()); } }
} else { handle(args.get(1));
@Override protected void serializeModifiers(QueryMetadata metadata, SQLSerializer context) { QueryModifiers mod = metadata.getModifiers(); if (mod.getLimit() == null) { context.handle(offsetTemplate, mod.getOffset()); } else if (mod.getOffset() == null) { context.handle(limitTemplate, mod.getLimit()); } else { context.handle(limitOffsetTemplate, mod.getLimit(), mod.getOffset()); } }
append(", "); handle(flag.getFlag()); handled = true; handle(union); serialize(Position.BEFORE_GROUP_BY, flags); append(templates.getGroupBy()).handle(COMMA, groupBy); if (hasFlags) { serialize(Position.AFTER_GROUP_BY, flags); serialize(Position.BEFORE_HAVING, flags); append(templates.getHaving()).handle(having); if (hasFlags) { serialize(Position.AFTER_HAVING, flags);
@Override protected void serializeModifiers(QueryMetadata metadata, SQLSerializer context) { if (!metadata.getOrderBy().isEmpty()) { QueryModifiers mod = metadata.getModifiers(); if (mod.getLimit() == null) { context.handle(offsetTemplate, mod.getOffset()); } else if (mod.getOffset() == null) { context.handle(limitOffsetTemplate, mod.getLimit(), 0); } else { context.handle(limitOffsetTemplate, mod.getLimit(), mod.getOffset()); } } }
handle(", ", withFlags); append("\n"); append("("); append(templates.getSelectDistinct()); handle(COMMA, columns); suffix = ") internal"; } else if (columns.size() == 1) { append(templates.getDistinctCountStart()); handle(columns.get(0)); append(templates.getDistinctCountEnd()); } else if (templates.isCountDistinctMultipleColumns()) { append(templates.getDistinctCountStart()); append("(").handle(COMMA, columns).append(")"); append(templates.getDistinctCountEnd()); } else { append("("); append(templates.getSelectDistinct()); handle(COMMA, columns); suffix = ") internal"; handle(COMMA, sqlSelect); append(templates.getWhere()).handle(where); if (hasFlags) { serialize(Position.AFTER_FILTERS, flags); append(templates.getGroupBy()).handle(COMMA, groupBy);
@Override protected void serializeModifiers(QueryMetadata metadata, SQLSerializer context) { QueryModifiers mod = metadata.getModifiers(); if (mod.getLimit() != null) { if (mod.getOffset() != null) { context.handle(offsetLimitTemplate, mod.getOffset(), mod.getLimit()); } else { context.handle(limitTemplate, mod.getLimit()); } } else if (mod.getOffset() != null) { context.handle(offsetLimitTemplate, mod.getOffset(), Integer.MAX_VALUE); } }
@Override protected void serializeModifiers(QueryMetadata metadata, SQLSerializer context) { QueryModifiers mod = metadata.getModifiers(); if (mod.isRestricting()) { if (mod.getLimit() != null) { if (mod.getOffset() != null) { context.handle(limitOffsetTemplate, mod.getOffset() + 1, mod.getOffset() + mod.getLimit()); } else { context.handle(limitTemplate, mod.getLimit()); } } else { context.handle(offsetTemplate, mod.getOffset() + 1); } } } }
if (os.getNullHandling() == OrderSpecifier.NullHandling.NullsFirst) { if (templates.getNullsFirst() != null) { handle(os.getTarget()); append(order); append(templates.getNullsFirst()); } else { append("(case when "); handle(os.getTarget()); append(" is null then 0 else 1 end), "); handle(os.getTarget()); append(order); handle(os.getTarget()); append(order); append(templates.getNullsLast()); } else { append("(case when "); handle(os.getTarget()); append(" is null then 1 else 0 end), "); handle(os.getTarget()); append(order); handle(os.getTarget()); append(order);
@Override public void serialize(QueryMetadata metadata, boolean forCountRow, SQLSerializer context) { if (!forCountRow && metadata.getModifiers().isRestricting() && !metadata.getJoins().isEmpty()) { QueryModifiers mod = metadata.getModifiers(); if (mod.getOffset() == null) { context.append(limitQueryStart); context.serializeForQuery(metadata, forCountRow); context.handle(limitQueryEnd, mod.getLimit()); } else { context.append(outerQueryStart); context.serializeForQuery(metadata, forCountRow); context.append(outerQueryEnd); if (mod.getLimit() == null) { context.handle(offsetTemplate, mod.getOffset()); } else { context.handle(limitOffsetTemplate, mod.getOffset(), mod.getLimit()); } } } else { context.serializeForQuery(metadata, forCountRow); } if (!metadata.getFlags().isEmpty()) { context.serialize(Position.END, metadata.getFlags()); } }
handle(entity); dmlWithSchema = false; append("\n"); append(COMMA); handle(update.getFirst()); append(" = "); if (!useLiterals && update.getSecond() instanceof Constant<?>) { constantPaths.add(update.getFirst()); handle(update.getSecond()); first = false; append(templates.getWhere()).handle(metadata.getWhere());
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()); } }
if (mod.getOffset() == null) { context.serializeForQuery(metadata, forCountRow); context.handle(limitTemplate, mod.getLimit()); } else { context.append(outerQueryStart); context.append(outerQueryEnd); if (mod.getLimit() == null) { context.handle(offsetTemplate, mod.getOffset()); } else { context.handle(limitOffsetTemplate, mod.getOffset(), mod.getLimit() + mod.getOffset());
protected void handleJoinTarget(JoinExpression je) { // type specifier if (je.getTarget() instanceof RelationalPath && templates.isSupportsAlias()) { final RelationalPath<?> pe = (RelationalPath<?>) je.getTarget(); if (pe.getMetadata().getParent() == null) { SchemaAndTable schemaAndTable = getSchemaAndTable(pe); boolean precededByDot; if (templates.isPrintSchema()) { appendSchemaName(schemaAndTable.getSchema()); append("."); precededByDot = true; } else { precededByDot = false; } appendTableName(schemaAndTable.getTable(), precededByDot); append(templates.getTableAlias()); } } inJoin = true; handle(je.getTarget()); inJoin = false; }