EMMA Coverage Report (generated Sun Mar 01 22:06:14 CET 2015)
[all classes][org.h2.command.dml]

COVERAGE SUMMARY FOR SOURCE FILE [SelectListColumnResolver.java]

nameclass, %method, %block, %line, %
SelectListColumnResolver.java100% (1/1)50%  (5/10)86%  (67/78)77%  (17/22)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class SelectListColumnResolver100% (1/1)50%  (5/10)86%  (67/78)77%  (17/22)
getRowIdColumn (): Column 0%   (0/1)0%   (0/2)0%   (0/1)
getSchemaName (): String 0%   (0/1)0%   (0/2)0%   (0/1)
getSelect (): Select 0%   (0/1)0%   (0/3)0%   (0/1)
getTableFilter (): TableFilter 0%   (0/1)0%   (0/2)0%   (0/1)
getValue (Column): Value 0%   (0/1)0%   (0/2)0%   (0/1)
SelectListColumnResolver (Select): void 100% (1/1)100% (54/54)100% (13/13)
getColumns (): Column [] 100% (1/1)100% (3/3)100% (1/1)
getSystemColumns (): Column [] 100% (1/1)100% (2/2)100% (1/1)
getTableAlias (): String 100% (1/1)100% (2/2)100% (1/1)
optimize (ExpressionColumn, Column): Expression 100% (1/1)100% (6/6)100% (1/1)

1/*
2 * Copyright 2004-2014 H2 Group. Multiple-Licensed under the MPL 2.0,
3 * and the EPL 1.0 (http://h2database.com/html/license.html).
4 * Initial Developer: H2 Group
5 */
6package org.h2.command.dml;
7 
8import java.util.ArrayList;
9import org.h2.expression.Expression;
10import org.h2.expression.ExpressionColumn;
11import org.h2.table.Column;
12import org.h2.table.ColumnResolver;
13import org.h2.table.TableFilter;
14import org.h2.value.Value;
15 
16/**
17 * This class represents a column resolver for the column list of a SELECT
18 * statement. It is used to resolve select column aliases in the HAVING clause.
19 * Example:
20 * <p>
21 * SELECT X/3 AS A, COUNT(*) FROM SYSTEM_RANGE(1, 10) GROUP BY A HAVING A>2;
22 * </p>
23 *
24 * @author Thomas Mueller
25 */
26public class SelectListColumnResolver implements ColumnResolver {
27 
28    private final Select select;
29    private final Expression[] expressions;
30    private final Column[] columns;
31 
32    SelectListColumnResolver(Select select) {
33        this.select = select;
34        int columnCount = select.getColumnCount();
35        columns = new Column[columnCount];
36        expressions = new Expression[columnCount];
37        ArrayList<Expression> columnList = select.getExpressions();
38        for (int i = 0; i < columnCount; i++) {
39            Expression expr = columnList.get(i);
40            Column column = new Column(expr.getAlias(), Value.NULL);
41            column.setTable(null, i);
42            columns[i] = column;
43            expressions[i] = expr.getNonAliasExpression();
44        }
45    }
46 
47    @Override
48    public Column[] getColumns() {
49        return columns;
50    }
51 
52    @Override
53    public String getSchemaName() {
54        return null;
55    }
56 
57    @Override
58    public Select getSelect() {
59        return select;
60    }
61 
62    @Override
63    public Column[] getSystemColumns() {
64        return null;
65    }
66 
67    @Override
68    public Column getRowIdColumn() {
69        return null;
70    }
71 
72    @Override
73    public String getTableAlias() {
74        return null;
75    }
76 
77    @Override
78    public TableFilter getTableFilter() {
79        return null;
80    }
81 
82    @Override
83    public Value getValue(Column column) {
84        return null;
85    }
86 
87    @Override
88    public Expression optimize(ExpressionColumn expressionColumn, Column column) {
89        return expressions[column.getColumnId()];
90    }
91 
92}

[all classes][org.h2.command.dml]
EMMA 2.0.5312 (C) Vladimir Roubtsov