当前位置: 首页>>代码示例>>Java>>正文


Java Util.isSingleValue方法代码示例

本文整理汇总了Java中org.apache.calcite.util.Util.isSingleValue方法的典型用法代码示例。如果您正苦于以下问题:Java Util.isSingleValue方法的具体用法?Java Util.isSingleValue怎么用?Java Util.isSingleValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.calcite.util.Util的用法示例。


在下文中一共展示了Util.isSingleValue方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: convertToSingleValueSubq

import org.apache.calcite.util.Util; //导入方法依赖的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);
}
 
开发者ID:axbaretto,项目名称:flink,代码行数:55,代码来源:SqlToRelConverter.java

示例2: convertToSingleValueSubq

import org.apache.calcite.util.Util; //导入方法依赖的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);
}
 
开发者ID:apache,项目名称:kylin,代码行数:55,代码来源:SqlToRelConverter.java


注:本文中的org.apache.calcite.util.Util.isSingleValue方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。