Package com.alibaba.wasp.plan.parser

Examples of com.alibaba.wasp.plan.parser.AggregateInfo


      LOG.debug("SELECT SQL TableSource " + sqlSelectQueryBlock.getFrom());
      // check if table exists and get Table info(WTable)
      FTable table = metaEventOperation.checkAndGetTable(fTableName, false);

      LinkedHashSet<String> selectItem = null;
      AggregateInfo aggregateInfo = parseAggregateClause(sqlSelectQueryBlock.getSelectList(), table);
      if(aggregateInfo == null) {
        // Parse The SELECT clause
        if (sqlSelectQueryBlock.getSelectList().size() == 1
            && sqlSelectQueryBlock.getSelectList().get(0).getExpr() instanceof SQLAllColumnExpr) {
          // This is SELECT * clause
          selectItem = parseFTable(table);
        } else {
          selectItem = parseSelectClause(sqlSelectQueryBlock.getSelectList());
        }
      } else {
        selectItem = new LinkedHashSet<String>();
        if(aggregateInfo.getField() == null) {
          //TODO
        }
        if(!aggregateInfo.getField().getName().equals("*")) {
          selectItem.add(aggregateInfo.getField().getName());
        }
      }
      LOG.debug("SELECT SQL:Select columns "
          + sqlSelectQueryBlock.getSelectList());
      // check if table has this columns
View Full Code Here


        if(method.equalsIgnoreCase("count")
            //&& (columnName.equals("*") || columnName.equals("1"))
            ) {
          field = table.getEntityGroupKey();
        }
        return new AggregateInfo(AggregateInfo.getAggregateTypeByMethod(method), field);
      }
    }
    return null;
  }
View Full Code Here

        throws ServiceException {
      queryResultProtos.clear();
      nameDataTypePairs.clear();
      ScanAction action = plan.getAction();
      List<ColumnStruct> columnStructs = action.getNotIndexConditionColumns();
      AggregateInfo info = plan.getQueryInfo().getAggregateInfo();
      Scan scan = new Scan();

      scan.addColumn(Bytes.toBytes(info.getField().getFamily()),
          Bytes.toBytes(info.getField().getName()));

      for (ColumnStruct col : columnStructs) {
        if(info.getField().getFamily().equals(col.getFamilyName())
            && info.getField().getName().equals(col.getColumnName())) {
          continue;
        }
        scan.addColumn(Bytes.toBytes(col.getFamilyName()),
            Bytes.toBytes(col.getColumnName()));
      }

      FilterList filters = new FilterList();
      // Filter columnNotNullFilter = new SingleColumnValueFilter(
      // Bytes.toBytes(info.getField().getFamily()),
      // Bytes.toBytes(info.getField().getName()),
      // CompareFilter.CompareOp.NOT_EQUAL,
      // HConstants.EMPTY_BYTE_ARRAY
      // );
      for (ColumnStruct columnStruct : columnStructs) {
        SingleColumnValueFilter filter = new SingleColumnValueFilter(
            Bytes.toBytes(columnStruct.getFamilyName()),
            Bytes.toBytes(columnStruct.getColumnName()),
            ParserUtils.convertIntValueToCompareOp(columnStruct.getCompareOp()),
            columnStruct.getValue());
        filters.addFilter(filter);
      }
      scan.setFilter(filters);

      String tableName =  StorageTableNameBuilder.buildEntityTableName(plan.getTableDesc().getTableName());

      AggregateType type = info.getAggregateType();

      byte[] value = null;
      DataType resultDataType = DataType.STRING;

      try {
        switch (type) {
          case COUNT: {
            long count = aggregationClient.count(Bytes.toBytes(tableName),
                null, scan);
            value = Bytes.toBytes(count);
            resultDataType = DataType.INT64;
            break;
          }
          case SUM: {
            value = getSumValue(tableName, info.getField(), scan);
            resultDataType = info.getField().getType();
            break;
          }
        }
      } catch (Throwable throwable) {
        throw new ServiceException(throwable);
      }

      ClientProtos.QueryResultProto.Builder builder = ClientProtos.QueryResultProto.newBuilder();
            builder.addResult(ProtobufUtil.toStringBytesPair(new KeyValue(Bytes.toBytes(type.getMethodName()),
                Bytes.toBytes(info.getField().getFamily()), Bytes.toBytes(type.getMethodName()), value)));
            queryResultProtos.add(builder.build());

      MetaProtos.DataTypeProtos dataTypeProtos = DataType.convertDataTypeToDataTypeProtos(resultDataType) ;
            ClientProtos.StringDataTypePair.Builder stringDataTypePairBuilder = ClientProtos.StringDataTypePair
              .newBuilder();
View Full Code Here

TOP

Related Classes of com.alibaba.wasp.plan.parser.AggregateInfo

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.