Java Code Examples for org.apache.calcite.sql.SqlSetOperator

The following examples show how to use org.apache.calcite.sql.SqlSetOperator. These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source Project: Bats   Source File: SqlImplementor.java    License: Apache License 2.0 5 votes vote down vote up
public Result setOpToSql(SqlSetOperator operator, RelNode rel) {
    SqlNode node = null;
    for (Ord<RelNode> input : Ord.zip(rel.getInputs())) {
        final Result result = visitChild(input.i, input.e);
        if (node == null) {
            node = result.asSelect();
        } else {
            node = operator.createCall(POS, node, result.asSelect());
        }
    }
    final List<Clause> clauses = FluentListUtils.list(Clause.SET_OP);
    return result(node, clauses, rel, null);
}
 
Example 2
Source Project: Bats   Source File: BigQuerySqlDialect.java    License: Apache License 2.0 5 votes vote down vote up
@Override public void unparseCall(final SqlWriter writer, final SqlCall call, final int leftPrec,
    final int rightPrec) {
  switch (call.getKind()) {
  case POSITION:
    final SqlWriter.Frame frame = writer.startFunCall("STRPOS");
    writer.sep(",");
    call.operand(1).unparse(writer, leftPrec, rightPrec);
    writer.sep(",");
    call.operand(0).unparse(writer, leftPrec, rightPrec);
    if (3 == call.operandCount()) {
      throw new RuntimeException("3rd operand Not Supported for Function STRPOS in Big Query");
    }
    writer.endFunCall(frame);
    break;
  case UNION:
    if (!((SqlSetOperator) call.getOperator()).isAll()) {
      SqlSyntax.BINARY.unparse(writer, UNION_DISTINCT, call, leftPrec, rightPrec);
    }
    break;
  case EXCEPT:
    if (!((SqlSetOperator) call.getOperator()).isAll()) {
      SqlSyntax.BINARY.unparse(writer, EXCEPT_DISTINCT, call, leftPrec, rightPrec);
    }
    break;
  case INTERSECT:
    if (!((SqlSetOperator) call.getOperator()).isAll()) {
      SqlSyntax.BINARY.unparse(writer, INTERSECT_DISTINCT, call, leftPrec, rightPrec);
    }
    break;
  default:
    super.unparseCall(writer, call, leftPrec, rightPrec);
  }
}
 
Example 3
Source Project: dremio-oss   Source File: SqlImplementor.java    License: Apache License 2.0 5 votes vote down vote up
public Result setOpToSql(SqlSetOperator operator, RelNode rel) {
  SqlNode node = null;
  for (Ord<RelNode> input : Ord.zip(rel.getInputs())) {
    final Result result = visitChild(input.i, input.e);
    if (node == null) {
      node = result.asSelect();
    } else {
      node = operator.createCall(POS, node, result.asSelect());
    }
  }
  final List<Clause> clauses =
    Expressions.list(Clause.SET_OP);
  return result(node, clauses, rel, null);
}
 
Example 4
Source Project: quark   Source File: RelToSqlConverter.java    License: Apache License 2.0 5 votes vote down vote up
private Result setOpToSql(SqlSetOperator operator, RelNode rel) {
  List<SqlNode> list = Expressions.list();
  for (Ord<RelNode> input : Ord.zip(rel.getInputs())) {
    final Result result = this.visitChild(input.i, input.e);
    list.add(result.asSelect());
  }
  final SqlCall node = operator.createCall(new SqlNodeList(list, POS));
  final List<Clause> clauses =
      Expressions.list(Clause.SET_OP);
  return result(node, clauses, rel);
}
 
Example 5
Source Project: quark   Source File: RelToSqlConverter.java    License: Apache License 2.0 5 votes vote down vote up
/**
 * Converts a non-query node into a SELECT node. Set operators (UNION,
 * INTERSECT, EXCEPT) remain as is.
 */
public SqlNode asQuery() {
  if (node instanceof SqlCall
      && ((SqlCall) node).getOperator() instanceof SqlSetOperator) {
    return node;
  }
  return asSelect();
}
 
Example 6
Source Project: calcite   Source File: SqlImplementor.java    License: Apache License 2.0 5 votes vote down vote up
public Result setOpToSql(SqlSetOperator operator, RelNode rel) {
  SqlNode node = null;
  for (Ord<RelNode> input : Ord.zip(rel.getInputs())) {
    final Result result = visitChild(input.i, input.e);
    if (node == null) {
      node = result.asSelect();
    } else {
      node = operator.createCall(POS, node, result.asSelect());
    }
  }
  final List<Clause> clauses =
      Expressions.list(Clause.SET_OP);
  return result(node, clauses, rel, null);
}
 
Example 7
Source Project: quark   Source File: RelToSqlConverter.java    License: Apache License 2.0 4 votes vote down vote up
public Result visitUnion(Union e) {
  final SqlSetOperator operator = e.all
      ? SqlStdOperatorTable.UNION_ALL
      : SqlStdOperatorTable.UNION;
  return setOpToSql(operator, e);
}
 
Example 8
Source Project: calcite   Source File: BigQuerySqlDialect.java    License: Apache License 2.0 4 votes vote down vote up
@Override public void unparseCall(final SqlWriter writer, final SqlCall call, final int leftPrec,
    final int rightPrec) {
  switch (call.getKind()) {
  case POSITION:
    final SqlWriter.Frame frame = writer.startFunCall("STRPOS");
    writer.sep(",");
    call.operand(1).unparse(writer, leftPrec, rightPrec);
    writer.sep(",");
    call.operand(0).unparse(writer, leftPrec, rightPrec);
    if (3 == call.operandCount()) {
      throw new RuntimeException("3rd operand Not Supported for Function STRPOS in Big Query");
    }
    writer.endFunCall(frame);
    break;
  case UNION:
    if (((SqlSetOperator) call.getOperator()).isAll()) {
      super.unparseCall(writer, call, leftPrec, rightPrec);
    } else {
      SqlSyntax.BINARY.unparse(writer, UNION_DISTINCT, call, leftPrec,
          rightPrec);
    }
    break;
  case EXCEPT:
    if (((SqlSetOperator) call.getOperator()).isAll()) {
      throw new RuntimeException("BigQuery does not support EXCEPT ALL");
    }
    SqlSyntax.BINARY.unparse(writer, EXCEPT_DISTINCT, call, leftPrec,
        rightPrec);
    break;
  case INTERSECT:
    if (((SqlSetOperator) call.getOperator()).isAll()) {
      throw new RuntimeException("BigQuery does not support INTERSECT ALL");
    }
    SqlSyntax.BINARY.unparse(writer, INTERSECT_DISTINCT, call, leftPrec,
        rightPrec);
    break;
  case TRIM:
    unparseTrim(writer, call, leftPrec, rightPrec);
    break;
  default:
    super.unparseCall(writer, call, leftPrec, rightPrec);
  }
}