public T addFlag(QueryFlag queryFlag) { metadata.addFlag(queryFlag); return self; }
/** * Add the given String literal at the given position as a query flag * * @param position * @param flag * @return */ public SQLInsertClause addFlag(Position position, String flag) { metadata.addFlag(new QueryFlag(position, flag)); return this; }
/** * Add the given String literal at the given position as a query flag * * @param position * @param flag * @return */ public SQLMergeClause addFlag(Position position, String flag) { metadata.addFlag(new QueryFlag(position, flag)); return this; }
/** * Add the given String literal at the given position as a query flag * * @param position * @param flag * @return */ public SQLUpdateClause addFlag(Position position, String flag) { metadata.addFlag(new QueryFlag(position, flag)); return this; }
/** * Add the given Expression at the given position as a query flag * * @param position * @param flag * @return */ public SQLInsertClause addFlag(Position position, Expression<?> flag) { metadata.addFlag(new QueryFlag(position, flag)); return this; }
/** * Add the given Expression at the given position as a query flag * * @param position * @param flag * @return */ public SQLUpdateClause addFlag(Position position, Expression<?> flag) { metadata.addFlag(new QueryFlag(position, flag)); return this; }
/** * Add the given Expression at the given position as a query flag * * @param position * @param flag * @return */ public SQLMergeClause addFlag(Position position, Expression<?> flag) { metadata.addFlag(new QueryFlag(position, flag)); return this; }
@Override public void serializeDelete(QueryMetadata metadata, RelationalPath<?> entity, SQLSerializer context) { // limit QueryModifiers mod = metadata.getModifiers(); if (mod.isRestricting()) { metadata = metadata.clone(); metadata.addFlag(new QueryFlag(QueryFlag.Position.AFTER_SELECT, Expressions.template(Integer.class, topTemplate, mod.getLimit()))); } context.serializeForDelete(metadata, entity); if (!metadata.getFlags().isEmpty()) { context.serialize(Position.END, metadata.getFlags()); } }
@Override public void serialize(QueryMetadata metadata, boolean forCountRow, SQLSerializer context) { if (!forCountRow && metadata.getModifiers().isRestricting() && metadata.getOrderBy().isEmpty() && !metadata.getJoins().isEmpty()) { QueryModifiers mod = metadata.getModifiers(); // use top if order by is empty if (mod.getOffset() == null) { // select top ... metadata = metadata.clone(); metadata.addFlag(new QueryFlag(QueryFlag.Position.AFTER_SELECT, Expressions.template(Integer.class, topTemplate, mod.getLimit()))); context.serializeForQuery(metadata, forCountRow); } else { throw new IllegalStateException("offset not supported without order by"); } } else { context.serializeForQuery(metadata, forCountRow); } if (!metadata.getFlags().isEmpty()) { context.serialize(Position.END, metadata.getFlags()); } }
@Override public void serializeUpdate(QueryMetadata metadata, RelationalPath<?> entity, List<Pair<Path<?>, Expression<?>>> updates, SQLSerializer context) { // limit QueryModifiers mod = metadata.getModifiers(); if (mod.isRestricting()) { metadata = metadata.clone(); metadata.addFlag(new QueryFlag(QueryFlag.Position.AFTER_SELECT, Expressions.template(Integer.class, topTemplate, mod.getLimit()))); } context.serializeForUpdate(metadata, entity, updates); if (!metadata.getFlags().isEmpty()) { context.serialize(Position.END, metadata.getFlags()); } }
@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) { // select top ... metadata = metadata.clone(); metadata.addFlag(new QueryFlag(QueryFlag.Position.AFTER_SELECT, Expressions.template(Integer.class, topTemplate, mod.getLimit()))); context.serializeForQuery(metadata, forCountRow); } else { throw new IllegalStateException("offset not supported"); } } else { context.serializeForQuery(metadata, forCountRow); } if (!metadata.getFlags().isEmpty()) { context.serialize(Position.END, metadata.getFlags()); } }
metadata.addFlag(new QueryFlag(QueryFlag.Position.AFTER_SELECT, Expressions.template(Integer.class, topTemplate, mod.getLimit()))); context.serializeForQuery(metadata, forCountRow);
md.setUnique(expr.getMetadata().isUnique()); for (QueryFlag flag : expr.getMetadata().getFlags()) { md.addFlag(new QueryFlag(flag.getPosition(), flag.getFlag().accept(this, null)));