本文整理汇总了Java中org.apache.calcite.sql.SqlSelect.getGroup方法的典型用法代码示例。如果您正苦于以下问题:Java SqlSelect.getGroup方法的具体用法?Java SqlSelect.getGroup怎么用?Java SqlSelect.getGroup使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.apache.calcite.sql.SqlSelect
的用法示例。
在下文中一共展示了SqlSelect.getGroup方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: parseGroupBy
import org.apache.calcite.sql.SqlSelect; //导入方法依赖的package包/类
private GroupBy parseGroupBy(SqlSelect sqlSelect) {
GroupBy groupBy = null;
SqlNodeList sqlGroupBy = sqlSelect.getGroup();
if (sqlGroupBy != null) {
ExpressionGenerator exprGenerator = new ExpressionGenerator(streams, catalogUdfs);
ExpressionList exprList = (ExpressionList) sqlGroupBy.accept(exprGenerator);
groupBy = new GroupBy(exprList.getExpressions());
referredUdfs.addAll(exprGenerator.getReferredUdfs());
}
LOG.debug("GroupBy {}", groupBy);
return groupBy;
}
示例2: getAggregate
import org.apache.calcite.sql.SqlSelect; //导入方法依赖的package包/类
/** Returns the parse tree node (GROUP BY, HAVING, or an aggregate function
* call) that causes {@code select} to be an aggregate query, or null if it
* is not an aggregate query.
*
* <p>The node is useful context for error messages,
* but you cannot assume that the node is the only aggregate function. */
protected SqlNode getAggregate(SqlSelect select) {
SqlNode node = select.getGroup();
if (node != null) {
return node;
}
node = select.getHaving();
if (node != null) {
return node;
}
return getAgg(select);
}
示例3: checkRollUpInGroupBy
import org.apache.calcite.sql.SqlSelect; //导入方法依赖的package包/类
private void checkRollUpInGroupBy(SqlSelect select) {
SqlNodeList group = select.getGroup();
if (group != null) {
for (SqlNode node : group) {
checkRollUp(null, select, node, getGroupScope(select), "GROUP BY");
}
}
}
示例4: 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);
}
示例5: 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);
}
示例6: 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);
}