亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? expressioncolumn.java

?? 非常棒的java數據庫
?? JAVA
字號:
/*
 * Copyright 2004-2008 H2 Group. Licensed under the H2 License, Version 1.0
 * (http://h2database.com/html/license.html).
 * Initial Developer: H2 Group
 */
package org.h2.expression;

import java.sql.SQLException;
import java.util.HashMap;

import org.h2.command.Parser;
import org.h2.command.dml.Select;
import org.h2.constant.ErrorCode;
import org.h2.engine.Database;
import org.h2.engine.Session;
import org.h2.index.IndexCondition;
import org.h2.message.Message;
import org.h2.schema.Constant;
import org.h2.schema.Schema;
import org.h2.table.Column;
import org.h2.table.ColumnResolver;
import org.h2.table.Table;
import org.h2.table.TableFilter;
import org.h2.value.Value;
import org.h2.value.ValueBoolean;

/**
 * A expression that represents a column of a table or view.
 */
public class ExpressionColumn extends Expression {
    private Database database;
    private String schemaName;
    private String tableAlias;
    private String columnName;
    private ColumnResolver resolver;
    private int queryLevel;
    private Column column;
    private boolean evaluatable;

    public ExpressionColumn(Database database, Column column) {
        this.database = database;
        this.column = column;
    }

    public ExpressionColumn(Database database, String schemaName, String tableAlias, String columnName) {
        this.database = database;
        this.schemaName = schemaName;
        this.tableAlias = tableAlias;
        this.columnName = columnName;
    }

    public String getSQL() {
        String sql;
        if (column != null) {
            sql = column.getSQL();
        } else {
            sql = columnName;
        }
        if (tableAlias != null) {
            sql = Parser.quoteIdentifier(tableAlias) + "." + sql;
        }
        if (schemaName != null) {
            sql = Parser.quoteIdentifier(schemaName) + "." + sql;
        }
        return sql;
    }

    public TableFilter getTableFilter() {
        return resolver == null ? null : resolver.getTableFilter();
    }

    public void mapColumns(ColumnResolver resolver, int level) throws SQLException {
        if (tableAlias != null && !tableAlias.equals(resolver.getTableAlias())) {
            return;
        }
        if (schemaName != null && !schemaName.equals(resolver.getSchemaName())) {
            return;
        }
        Column[] columns = resolver.getColumns();
        for (int i = 0; i < columns.length; i++) {
            Column col = columns[i];
            if (columnName.equals(col.getName())) {
                mapColumn(resolver, col, level);
                return;
            }
        }
        columns = resolver.getSystemColumns();
        for (int i = 0; columns != null && i < columns.length; i++) {
            Column col = columns[i];
            if (columnName.equals(col.getName())) {
                mapColumn(resolver, col, level);
                return;
            }
        }
    }

    private void mapColumn(ColumnResolver resolver, Column col, int level) throws SQLException {
        if (this.resolver == null) {
            queryLevel = level;
            column = col;
            this.resolver = resolver;
        } else if (queryLevel == level && this.resolver != resolver) {
            throw Message.getSQLException(ErrorCode.AMBIGUOUS_COLUMN_NAME_1, columnName);
        }
    }

    public Expression optimize(Session session) throws SQLException {
        if (resolver == null) {
            Schema schema = session.getDatabase().findSchema(
                    tableAlias == null ? session.getCurrentSchemaName() : tableAlias);
            if (schema != null) {
                Constant constant = schema.findConstant(columnName);
                if (constant != null) {
                    return constant.getValue();
                }
            }
            String name = columnName;
            if (tableAlias != null) {
                name = tableAlias + "." + name;
                if (schemaName != null) {
                    name = schemaName + "." + name;
                }
            }
            throw Message.getSQLException(ErrorCode.COLUMN_NOT_FOUND_1, name);
        }
        return this;
    }

    public void updateAggregate(Session session) throws SQLException {
        Value now = resolver.getValue(column);
        Select select = resolver.getSelect();
        if (select == null) {
            throw Message.getSQLException(ErrorCode.MUST_GROUP_BY_COLUMN_1, getSQL());
        }
        HashMap values = select.getCurrentGroup();
        if (values == null) {
            // this is a different level (the enclosing query)
            return;
        }
        Value v = (Value) values.get(this);
        if (v == null) {
            values.put(this, now);
        } else {
            if (!database.areEqual(now, v)) {
                throw Message.getSQLException(ErrorCode.MUST_GROUP_BY_COLUMN_1, getSQL());
            }
        }
    }

    public Value getValue(Session session) throws SQLException {
        // TODO refactor: simplify check if really part of an aggregated value /
        // detection of
        // usage of non-grouped by columns without aggregate function
        Select select = resolver.getSelect();
        if (select != null) {
            HashMap values = select.getCurrentGroup();
            if (values != null) {
                Value v = (Value) values.get(this);
                if (v != null) {
                    return v;
                }
            }
        }
        Value value = resolver.getValue(column);
        if (value == null) {
            throw Message.getSQLException(ErrorCode.MUST_GROUP_BY_COLUMN_1, getSQL());
        }
        return value;
    }

    public int getType() {
        return column.getType();
    }

    public void setEvaluatable(TableFilter tableFilter, boolean b) {
        if (resolver != null && tableFilter == resolver.getTableFilter()) {
            evaluatable = b;
        }
    }

    public Column getColumn() {
        return column;
    }

    public int getScale() {
        return column.getScale();
    }

    public long getPrecision() {
        return column.getPrecision();
    }

    public int getDisplaySize() {
        return column.getDisplaySize();
    }

    public String getOriginalColumnName() {
        return columnName;
    }

    public String getOriginalAliasName() {
        return tableAlias;
    }

    public String getColumnName() {
        return columnName != null ? columnName : column.getName();
    }

    public String getSchemaName() {
        Table table = column.getTable();
        return table == null ? null : table.getSchema().getName();
    }

    public String getTableName() {
        Table table = column.getTable();
        return table == null ? null : table.getName();
    }

    public String getAlias() {
        return column.getName();
    }

    public boolean isAutoIncrement() {
        return column.getSequence() != null;
    }

    public int getNullable() {
        return column.getNullable() ? Column.NULLABLE : Column.NOT_NULLABLE;
    }

    public boolean isEverything(ExpressionVisitor visitor) {
        switch (visitor.type) {
        case ExpressionVisitor.OPTIMIZABLE_MIN_MAX_COUNT_ALL:
            return false;
        case ExpressionVisitor.READONLY:
        case ExpressionVisitor.DETERMINISTIC:
            return true;
        case ExpressionVisitor.INDEPENDENT:
            return this.queryLevel < visitor.queryLevel;
        case ExpressionVisitor.EVALUATABLE:
            // if the current value is known (evaluatable set)
            // or if this columns belongs to a 'higher level' query and is
            // therefore just a parameter
            return evaluatable || visitor.queryLevel < this.queryLevel;
        case ExpressionVisitor.SET_MAX_DATA_MODIFICATION_ID:
            visitor.addDataModificationId(column.getTable().getMaxDataModificationId());
            return true;
        case ExpressionVisitor.NOT_FROM_RESOLVER:
            return resolver != visitor.getResolver();
        case ExpressionVisitor.GET_DEPENDENCIES:
            visitor.addDependency(column.getTable());
            return true;
        default:
            throw Message.getInternalError("type=" + visitor.type);
        }
    }

    public int getCost() {
        return 2;
    }

    public void createIndexConditions(Session session, TableFilter filter) {
        TableFilter tf = getTableFilter();
        if (filter == tf && column.getType() == Value.BOOLEAN) {
            IndexCondition cond = new IndexCondition(Comparison.EQUAL, this, ValueExpression
                    .get(ValueBoolean.get(true)));
            filter.addIndexCondition(cond);
        }
    }

    public Expression getNotIfPossible(Session session) {
        return new Comparison(session, Comparison.EQUAL, this, ValueExpression.get(ValueBoolean.get(false)));
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜国产精品影院在线观看| 91在线播放网址| 丁香激情综合国产| 欧美性受xxxx| 国产女人18水真多18精品一级做| 亚洲欧洲色图综合| 久久精品久久99精品久久| 日本丰满少妇一区二区三区| 久久伊人蜜桃av一区二区| 亚洲成人一区二区| 成人av在线资源网| 久久久精品国产免费观看同学| 性做久久久久久免费观看 | 丝袜美腿亚洲色图| av电影天堂一区二区在线观看| 欧美一二三四区在线| 亚洲最大成人网4388xx| 东方aⅴ免费观看久久av| 中文欧美字幕免费| 国产suv精品一区二区6| 精品久久久久久久久久久院品网| 亚洲国产一二三| 91官网在线观看| 亚洲视频网在线直播| 国产成人亚洲综合色影视| 精品免费视频.| 全部av―极品视觉盛宴亚洲| 欧美午夜理伦三级在线观看| 一区二区激情视频| 色噜噜狠狠一区二区三区果冻| 中文字幕不卡在线| 成人a免费在线看| 亚洲国产高清不卡| 波多野结衣中文字幕一区二区三区| 欧美精品一区二区高清在线观看| 免费三级欧美电影| 精品少妇一区二区三区日产乱码 | 在线观看不卡一区| 亚洲一区二区在线免费观看视频| 色婷婷久久99综合精品jk白丝| 国产精品美女一区二区三区| 99久久精品99国产精品| 国产精品国产三级国产普通话三级 | 久久嫩草精品久久久精品| 国产一区二区不卡老阿姨| 久久男人中文字幕资源站| 国产91丝袜在线18| 亚洲精品一二三区| 91麻豆精品国产综合久久久久久| 日本aⅴ精品一区二区三区| 日韩一级免费观看| 国产精品一区二区在线观看网站| 中文字幕欧美激情| 色老汉av一区二区三区| 亚洲免费观看高清| 91精品国产高清一区二区三区蜜臀| 免费在线观看视频一区| 久久久噜噜噜久噜久久综合| 成人av资源下载| 亚欧色一区w666天堂| 久久亚洲私人国产精品va媚药| 国产精品系列在线观看| 一区二区三区在线播放| 日韩久久免费av| 91香蕉视频污| 久久成人av少妇免费| 国产精品久久久久影视| 欧美欧美欧美欧美| 国产成人自拍在线| 亚洲国产精品天堂| 久久久精品黄色| 欧美亚洲综合久久| 国产成人自拍网| 奇米影视7777精品一区二区| 国产精品剧情在线亚洲| 欧美电影免费观看高清完整版| 99精品视频中文字幕| 美国十次综合导航| 亚洲主播在线播放| 亚洲成人自拍偷拍| 欧美激情在线观看视频免费| 欧美日韩国产精品成人| 成人av资源下载| 精品一区二区免费看| 亚洲永久免费视频| 欧美激情一区二区在线| 欧美老女人第四色| 91精品1区2区| 岛国一区二区三区| 国产在线看一区| 三级在线观看一区二区| 亚洲女人****多毛耸耸8| 久久免费视频一区| 欧美xxxxx裸体时装秀| 欧美日韩国产免费| 欧美亚洲一区二区在线观看| 成人激情开心网| 国产伦精品一区二区三区视频青涩 | av高清不卡在线| 国精产品一区一区三区mba桃花 | 99视频有精品| 国产不卡在线播放| 久久99精品网久久| 日韩激情在线观看| 首页国产欧美久久| 亚洲第一综合色| 一级中文字幕一区二区| 国产精品久久久久久久久免费桃花 | 久久精品久久精品| 天堂va蜜桃一区二区三区漫画版| 亚洲黄网站在线观看| 综合久久综合久久| 1024成人网| 亚洲人吸女人奶水| 亚洲欧美色图小说| 亚洲欧美激情小说另类| 亚洲三级小视频| 亚洲免费看黄网站| 亚洲综合色丁香婷婷六月图片| 国产精品国产三级国产aⅴ无密码| 国产欧美精品国产国产专区 | 欧美在线观看你懂的| 欧美日韩精品免费| 777xxx欧美| 欧美美女喷水视频| 欧美精品国产精品| 久久免费视频色| 在线欧美一区二区| 色菇凉天天综合网| 欧美浪妇xxxx高跟鞋交| 欧美在线不卡视频| 亚洲一区欧美一区| 免费成人在线影院| 久久精品久久精品| 国产精品综合久久| 日韩激情一二三区| 亚洲福利视频三区| 亚洲免费观看视频| 樱桃国产成人精品视频| 中文字幕视频一区二区三区久| 国产伦精一区二区三区| **欧美大码日韩| 欧美另类videos死尸| 国产成人av一区| 色妹子一区二区| 欧美精品v国产精品v日韩精品| 91精品国产综合久久精品| 精品国产乱码久久久久久老虎| 久久久久久久久久久久久久久99 | 91精品国产综合久久精品性色| 日韩一区二区视频在线观看| 久久久噜噜噜久噜久久综合| 亚洲女与黑人做爰| 免费成人在线视频观看| 成人免费看的视频| 欧美日韩黄色一区二区| 久久久夜色精品亚洲| 夜夜爽夜夜爽精品视频| 久久精品国产亚洲aⅴ| 不卡欧美aaaaa| 日韩午夜在线观看| 免费成人小视频| av在线不卡电影| 日韩一区二区视频在线观看| 国产女人18毛片水真多成人如厕| 亚洲福利国产精品| 福利视频网站一区二区三区| 欧美精品高清视频| 亚洲人成精品久久久久久| 精品一区在线看| 欧美三级日韩三级国产三级| 国产欧美精品一区aⅴ影院| 日韩av在线发布| 99久久久久久| 久久婷婷色综合| 日韩av网站在线观看| 91极品美女在线| 国产精品久久久久婷婷| 九色|91porny| 欧美一区二区三区免费观看视频 | 久久久三级国产网站| 亚洲成av人影院| 色域天天综合网| 国产女主播在线一区二区| 狂野欧美性猛交blacked| 欧美最猛黑人xxxxx猛交| 欧美高清在线一区二区| 国内精品自线一区二区三区视频| 欧美日韩aaaaaa| 一区二区三区视频在线观看| 成人的网站免费观看| 亚洲精品在线观| 精品中文字幕一区二区小辣椒 | 欧美日韩精品免费| 一二三区精品福利视频| 91美女片黄在线观看91美女| 国产精品久久久久天堂| 国产91精品一区二区麻豆亚洲| 国产亚洲精品资源在线26u| 国产一区二区视频在线播放|