本文整理汇总了Java中org.apache.calcite.sql.SqlSelect.getFetch方法的典型用法代码示例。如果您正苦于以下问题:Java SqlSelect.getFetch方法的具体用法?Java SqlSelect.getFetch怎么用?Java SqlSelect.getFetch使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.apache.calcite.sql.SqlSelect
的用法示例。
在下文中一共展示了SqlSelect.getFetch方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: extractSelect
import org.apache.calcite.sql.SqlSelect; //导入方法依赖的package包/类
private VirtualDatasetState extractSelect(String sql, SqlNode node, final RelDataType relDataType) {
SqlSelect select = (SqlSelect)node;
// From table
FromNode from = extractFrom(select);
// Selected columns
List<Column> columns = extractColumns(relDataType, select, from);
SqlNode where = select.getWhere();
if (where != null) {
return fallback("where is not supported yet", where, sql);
}
SqlNodeList groupBy = select.getGroup();
if (groupBy != null) {
return fallback("group by is not supported yet", groupBy, sql);
}
SqlNode having = select.getHaving();
if (having != null) {
return fallback("having is not supported yet", having, sql);
}
SqlNodeList windowDecls = select.getWindowList();
if (windowDecls != null && !windowDecls.getList().isEmpty()) {
return fallback("window is not supported yet", windowDecls, sql);
}
List<Order> orders = extractOrders(select.getOrderList(), from);
SqlNode offset = select.getOffset();
if (offset != null) {
return fallback("offset is not supported yet", offset, sql);
}
SqlNode fetch = select.getFetch();
if (fetch != null) {
return fallback("fetch is not supported yet", fetch, sql);
}
FromTable fromTable = new FromTable(from.getTableToString());
if (from.alias != null) {
fromTable.setAlias(from.getAliasToString());
}
return new VirtualDatasetState(fromTable.wrap())
.setColumnsList(columns)
.setOrdersList(orders);
}
示例2: convertToSingleValueSubq
import org.apache.calcite.sql.SqlSelect; //导入方法依赖的package包/类
/**
* Converts the RelNode tree for a select statement to a select that
* produces a single value.
*
* @param query the query
* @param plan the original RelNode tree corresponding to the statement
* @return the converted RelNode tree
*/
public RelNode convertToSingleValueSubq(
SqlNode query,
RelNode plan) {
// Check whether query is guaranteed to produce a single value.
if (query instanceof SqlSelect) {
SqlSelect select = (SqlSelect) query;
SqlNodeList selectList = select.getSelectList();
SqlNodeList groupList = select.getGroup();
if ((selectList.size() == 1)
&& ((groupList == null) || (groupList.size() == 0))) {
SqlNode selectExpr = selectList.get(0);
if (selectExpr instanceof SqlCall) {
SqlCall selectExprCall = (SqlCall) selectExpr;
if (Util.isSingleValue(selectExprCall)) {
return plan;
}
}
// If there is a limit with 0 or 1,
// it is ensured to produce a single value
if (select.getFetch() != null
&& select.getFetch() instanceof SqlNumericLiteral) {
SqlNumericLiteral limitNum = (SqlNumericLiteral) select.getFetch();
if (((BigDecimal) limitNum.getValue()).intValue() < 2) {
return plan;
}
}
}
} else if (query instanceof SqlCall) {
// If the query is (values ...),
// it is necessary to look into the operands to determine
// whether SingleValueAgg is necessary
SqlCall exprCall = (SqlCall) query;
if (exprCall.getOperator()
instanceof SqlValuesOperator
&& Util.isSingleValue(exprCall)) {
return plan;
}
}
// If not, project SingleValueAgg
return RelOptUtil.createSingleValueAggRel(
cluster,
plan);
}
示例3: convertToSingleValueSubq
import org.apache.calcite.sql.SqlSelect; //导入方法依赖的package包/类
/**
* Converts the RelNode tree for a select statement to a select that
* produces a single value.
*
* @param query the query
* @param plan the original RelNode tree corresponding to the statement
* @return the converted RelNode tree
*/
public RelNode convertToSingleValueSubq(
SqlNode query,
RelNode plan) {
// Check whether query is guaranteed to produce a single value.
if (query instanceof SqlSelect) {
SqlSelect select = (SqlSelect) query;
SqlNodeList selectList = select.getSelectList();
SqlNodeList groupList = select.getGroup();
if ((selectList.size() == 1)
&& ((groupList == null) || (groupList.size() == 0))) {
SqlNode selectExpr = selectList.get(0);
if (selectExpr instanceof SqlCall) {
SqlCall selectExprCall = (SqlCall) selectExpr;
if (Util.isSingleValue(selectExprCall)) {
return plan;
}
}
// If there is a limit with 0 or 1,
// it is ensured to produce a single value
if (select.getFetch() != null
&& select.getFetch() instanceof SqlNumericLiteral) {
SqlNumericLiteral limitNum = (SqlNumericLiteral) select.getFetch();
if (((BigDecimal) limitNum.getValue()).intValue() < 2) {
return plan;
}
}
}
} else if (query instanceof SqlCall) {
// If the query is (values ...),
// it is necessary to look into the operands to determine
// whether SingleValueAgg is necessary
SqlCall exprCall = (SqlCall) query;
if (exprCall.getOperator()
instanceof SqlValuesOperator
&& Util.isSingleValue(exprCall)) {
return plan;
}
}
// If not, project SingleValueAgg
return RelOptUtil.createSingleValueAggRel(
cluster,
plan);
}