UnparseUtil keyword(String... keywords) { for (String k : keywords) { writer.keyword(k); } return this; }
@Override public void unparse( SqlWriter writer, SqlCall call, int leftPrec, int rightPrec) { List<SqlNode> opList = call.getOperandList(); assert (opList.size() >= 1); SqlNode sqlNode = opList.get(0); sqlNode.unparse(writer, leftPrec, getLeftPrec()); writer.sep("IN"); Frame frame = writer.startList(FrameTypeEnum.SETOP, "(", ")"); for (SqlNode op : opList.subList(1, opList.size())) { writer.sep(","); op.unparse(writer, 0, 0); } writer.endList(frame); } }
/** Unparses offset/fetch using "LIMIT fetch OFFSET offset" syntax. */ protected final void unparseFetchUsingLimit(SqlWriter writer, SqlNode offset, SqlNode fetch) { Preconditions.checkArgument(fetch != null || offset != null); if (fetch != null) { writer.newlineAndIndent(); final SqlWriter.Frame fetchFrame = writer.startList(SqlWriter.FrameTypeEnum.FETCH); writer.keyword("LIMIT"); fetch.unparse(writer, -1, -1); writer.endList(fetchFrame); } if (offset != null) { writer.newlineAndIndent(); final SqlWriter.Frame offsetFrame = writer.startList(SqlWriter.FrameTypeEnum.OFFSET); writer.keyword("OFFSET"); offset.unparse(writer, -1, -1); writer.endList(offsetFrame); } }
public void unparse( SqlWriter writer, SqlCall call, int leftPrec, int rightPrec) { writer.print("{fn "); writer.print(jdbcName); final SqlWriter.Frame frame = writer.startList("(", ")"); for (SqlNode operand : call.getOperandList()) { writer.sep(","); operand.unparse(writer, leftPrec, rightPrec); } writer.endList(frame); writer.print("}"); }
@Override public void unparse(SqlWriter writer, SqlCall call, int leftPrec, int rightPrec) { writer.keyword("PERMUTE"); SqlWriter.Frame frame = writer.startList("(", ")"); for (int i = 0; i < call.getOperandList().size(); i++) { SqlNode pattern = call.getOperandList().get(i); pattern.unparse(writer, 0, 0); if (i != call.getOperandList().size() - 1) { writer.print(","); } } writer.endList(frame); } };
final SqlWriter.Frame mrFrame = writer.startFunCall("MATCH_RECOGNIZE"); writer.newlineAndIndent(); writer.sep("PARTITION BY"); final SqlWriter.Frame partitionFrame = writer.startList("", ""); pattern.partitionList.unparse(writer, 0, 0); writer.endList(partitionFrame); writer.newlineAndIndent(); writer.sep("ORDER BY"); final SqlWriter.Frame orderFrame = writer.startList(SqlWriter.FrameTypeEnum.ORDER_BY_LIST); unparseListClause(writer, pattern.orderList); writer.endList(orderFrame); writer.newlineAndIndent(); writer.sep("MEASURES"); final SqlWriter.Frame measureFrame = writer.startList("", ""); pattern.measureList.unparse(writer, 0, 0); writer.endList(measureFrame); writer.newlineAndIndent(); pattern.rowsPerMatch.unparse(writer, 0, 0); writer.newlineAndIndent(); writer.sep("AFTER MATCH"); pattern.after.unparse(writer, 0, 0); writer.newlineAndIndent();
int leftPrec, int rightPrec) { final SqlWriter.Frame frame = writer.startList("", ""); SqlCollation collation = null; for (Ord<SqlNode> operand : Ord.zip(call.getOperandList())) { writer.newlineAndIndent(); writer.literal(nls.asSql(true, false)); } else { writer.literal(nls.asSql(false, false)); writer.literal("'" + bs.toHexString() + "'"); } else { writer.literal("'" + rand.toValue() + "'"); collation.unparse(writer, 0, 0); writer.endList(frame);
/** Converts an interval literal to a SQL string. The default implementation * returns strings such as * <code>INTERVAL '1 2:3:4' DAY(4) TO SECOND(4)</code>. */ public void unparseSqlIntervalLiteral(SqlWriter writer, SqlIntervalLiteral literal, int leftPrec, int rightPrec) { SqlIntervalLiteral.IntervalValue interval = (SqlIntervalLiteral.IntervalValue) literal.getValue(); writer.keyword("INTERVAL"); if (interval.getSign() == -1) { writer.print("-"); } writer.literal("'" + literal.getValue().toString() + "'"); unparseSqlIntervalQualifier(writer, interval.getIntervalQualifier(), RelDataTypeSystem.DEFAULT); }
@Override public void unparse(SqlWriter writer, SqlCall call, int leftPrec, int rightPrec) { final SqlWriter.Frame frame = writer.startFunCall("TRANSLATE"); for (SqlNode sqlNode : call.getOperandList()) { writer.sep(","); sqlNode.unparse(writer, leftPrec, rightPrec); } writer.endFunCall(frame); }
@Override public void unparse(SqlWriter writer, int leftPrec, int rightPrec) { writer.startList(SqlWriter.FrameTypeEnum.SELECT); writer.sep(isUpsert() ? "UPSERT INTO" : "INSERT INTO"); final int opLeft = getOperator().getLeftPrec(); final int opRight = getOperator().getRightPrec(); targetTable.unparse(writer, opLeft, opRight); if (columnList != null) { columnList.unparse(writer, opLeft, opRight); } writer.newlineAndIndent(); source.unparse(writer, 0, 0); }
private void unparseFloorWithUnit(SqlWriter writer, SqlCall call, int charLen, String offset) { writer.print("CONVERT"); SqlWriter.Frame frame = writer.startList("(", ")"); writer.print("DATETIME, CONVERT(VARCHAR(" + charLen + "), "); call.operand(0).unparse(writer, 0, 0); writer.print(", 126)"); if (offset.length() > 0) { writer.print("+'" + offset + "'"); } writer.endList(frame); } }
private void unparseSqlIntervalLiteralMssql( SqlWriter writer, SqlIntervalLiteral literal, int sign) { SqlIntervalLiteral.IntervalValue interval = (SqlIntervalLiteral.IntervalValue) literal.getValue(); unparseSqlIntervalQualifier(writer, interval.getIntervalQualifier(), RelDataTypeSystem.DEFAULT); writer.sep(",", true); if (interval.getSign() * sign == -1) { writer.print("-"); } writer.literal(literal.getValue().toString()); }
@Override public void unparse(SqlWriter writer, int leftPrec, int rightPrec) { writer.keyword("EXPLAIN PLAN"); switch (getDetailLevel()) { case NO_ATTRIBUTES: writer.keyword("EXCLUDING ATTRIBUTES"); break; case EXPPLAN_ATTRIBUTES: writer.keyword("INCLUDING ATTRIBUTES"); break; case ALL_ATTRIBUTES: writer.keyword("INCLUDING ALL ATTRIBUTES"); break; writer.keyword("WITH TYPE"); break; case LOGICAL: writer.keyword("WITHOUT IMPLEMENTATION"); break; case PHYSICAL: writer.keyword("WITH IMPLEMENTATION"); break; default: writer.keyword("AS XML"); break; case JSON: writer.keyword("AS JSON"); break; default:
private void printIndent(SqlWriter writer) { writer.sep(",", false); writer.newlineAndIndent(); writer.print(" "); }
public void unparse( SqlWriter writer, int leftPrec, int rightPrec) { writer.keyword("COLLATE"); writer.identifier(collationName); }
@Override public void unparse(SqlWriter writer, SqlCall call, int leftPrec, int rightPrec) { assert call.operandCount() == 2; final SqlWriter.Frame frame = writer.startFunCall("JSON_OBJECTAGG"); writer.keyword("KEY"); call.operand(0).unparse(writer, leftPrec, rightPrec); writer.keyword("VALUE"); call.operand(1).unparse(writer, leftPrec, rightPrec); writer.keyword(nullClause.sql); writer.endFunCall(frame); }