@Override public final void toSQL(RenderContext context) { // Some databases need extra parentheses around the RHS boolean extraParentheses = asList().contains(context.configuration().dialect().family()); boolean subquery = context.subquery(); context.visit(left) .sql(" ") .keyword(comparator.toSQL()) .sql(" (") .sql(extraParentheses ? "(" : ""); context.data(DATA_ROW_VALUE_EXPRESSION_PREDICATE_SUBQUERY, true); context.subquery(true) .visit(right) .subquery(subquery); context.data(DATA_ROW_VALUE_EXPRESSION_PREDICATE_SUBQUERY, null); context.sql(extraParentheses ? ")" : "") .sql(")"); }
DefaultRenderContext(RenderContext context) { this(context.configuration()); paramType(context.paramType()); qualify(context.qualify()); castMode(context.castMode()); declareFields(context.declareFields()); declareTables(context.declareTables()); data().putAll(context.data()); }
private final String getSQL0(ExecuteContext ctx) { if (executePreparedStatements(configuration().settings())) { try { RenderContext render = new DefaultRenderContext(configuration); render.data(DATA_COUNT_BIND_VALUES, true); return render.render(this); } catch (DefaultRenderContext.ForceInlineSignal e) { ctx.data(DATA_FORCE_STATIC_STATEMENT, true); return getSQL(INLINED); } } else { return getSQL(INLINED); } }
DefaultRenderContext(RenderContext context) { this(context.configuration()); paramType(context.paramType()); qualifyCatalog(context.qualifyCatalog()); qualifySchema(context.qualifySchema()); quote(context.quote()); castMode(context.castMode()); data().putAll(context.data()); declareCTE = context.declareCTE(); declareWindows = context.declareWindows(); declareFields = context.declareFields(); declareTables = context.declareTables(); declareAliases = context.declareAliases(); }
if (context.subquery() && dialect == H2 && context.data(DATA_ROW_VALUE_EXPRESSION_PREDICATE_SUBQUERY) != null) { Object data = context.data(DATA_ROW_VALUE_EXPRESSION_PREDICATE_SUBQUERY); context.data(DATA_ROW_VALUE_EXPRESSION_PREDICATE_SUBQUERY, null); context.sql("(") .visit(getSelect1()) context.data(DATA_ROW_VALUE_EXPRESSION_PREDICATE_SUBQUERY, data); boolean hasFrom = (context.data(DATA_RENDERING_DB2_FINAL_TABLE_CLAUSE) != null);