Ejemplo n.º 1
0
  @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());
    }
  }
Ejemplo n.º 2
0
 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());
 }