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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? javaaggregate.java

?? 非常棒的java數(shù)據(jù)庫
?? JAVA
字號(hào):
/*
 * 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.Connection;
import java.sql.SQLException;
import java.util.HashMap;

import org.h2.api.AggregateFunction;
import org.h2.command.Parser;
import org.h2.command.dml.Select;
import org.h2.constant.ErrorCode;
import org.h2.engine.Session;
import org.h2.engine.UserAggregate;
import org.h2.message.Message;
import org.h2.table.ColumnResolver;
import org.h2.table.TableFilter;
import org.h2.value.DataType;
import org.h2.value.Value;
import org.h2.value.ValueNull;

/**
 * This class wraps a user defined aggregate.
 */
public class JavaAggregate extends Expression {

    private final UserAggregate userAggregate;
    private final Select select;
    private AggregateFunction aggregate;
    private Expression[] args;
    private int[] argTypes;
    private int dataType;
    private Connection userConnection;

    public JavaAggregate(UserAggregate userAggregate, Expression[] args, Select select) throws SQLException {
        this.userAggregate = userAggregate;
        this.args = args;
        this.select = select;
    }

    public int getCost() {
        int cost = 5;
        for (int i = 0; i < args.length; i++) {
            cost += args[i].getCost();
        }
        return cost;
    }

    public long getPrecision() {
        return Integer.MAX_VALUE;
    }

    public int getDisplaySize() {
        return Integer.MAX_VALUE;
    }

    public int getScale() {
        return 0;
    }

    public String getSQL() {
        StringBuffer buff = new StringBuffer();
        buff.append(Parser.quoteIdentifier(userAggregate.getName()));
        buff.append('(');
        for (int i = 0; i < args.length; i++) {
            if (i > 0) {
                buff.append(", ");
            }
            Expression e = args[i];
            buff.append(e.getSQL());
        }
        buff.append(')');
        return buff.toString();
    }

    public int getType() {
        return dataType;
    }

    public boolean isEverything(ExpressionVisitor visitor) {
        switch(visitor.type) {
        case ExpressionVisitor.DETERMINISTIC:
            // TODO optimization: some functions are deterministic, but we don't
            // know (no setting for that)
            return false;
        case ExpressionVisitor.GET_DEPENDENCIES:
            visitor.addDependency(userAggregate);
            break;
        }
        for (int i = 0; i < args.length; i++) {
            Expression e = args[i];
            if (e != null && !e.isEverything(visitor)) {
                return false;
            }
        }
        return true;
    }

    public void mapColumns(ColumnResolver resolver, int level) throws SQLException {
        for (int i = 0; i < args.length; i++) {
            args[i].mapColumns(resolver, level);
        }
    }

    public Expression optimize(Session session) throws SQLException {
        userConnection = session.createConnection(false);
        argTypes = new int[args.length];
        for (int i = 0; i < args.length; i++) {
            Expression expr = args[i];
            args[i] = expr.optimize(session);
            argTypes[i] = expr.getType();
        }
        aggregate = getInstance();
        dataType = aggregate.getType(argTypes);
        return this;
    }

    public void setEvaluatable(TableFilter tableFilter, boolean b) {
        for (int i = 0; i < args.length; i++) {
            args[i].setEvaluatable(tableFilter, b);
        }
    }

    private AggregateFunction getInstance() throws SQLException {
        AggregateFunction agg = userAggregate.getInstance();
        agg.init(userConnection);
        return agg;
    }

    public Value getValue(Session session) throws SQLException {
        HashMap group = select.getCurrentGroup();
        if (group == null) {
            throw Message.getSQLException(ErrorCode.INVALID_USE_OF_AGGREGATE_FUNCTION_1, getSQL());
        }
        AggregateFunction agg = (AggregateFunction) group.get(this);
        if (agg == null) {
            agg = getInstance();
        }
        Object obj = agg.getResult();
        if (obj == null) {
            return ValueNull.INSTANCE;
        } else {
            return DataType.convertToValue(session, obj, dataType);
        }
    }

    public void updateAggregate(Session session) throws SQLException {
        HashMap group = select.getCurrentGroup();
        if (group == null) {
            // this is a different level (the enclosing query)
            return;
        }
        AggregateFunction agg = (AggregateFunction) group.get(this);
        if (agg == null) {
            agg = getInstance();
            group.put(this, agg);
        }
        Object[] argValues = new Object[args.length];
        Object arg = null;
        for (int i = 0; i < args.length; i++) {
            Value v = args[i].getValue(session);
            v = v.convertTo(argTypes[i]);
            arg = v.getObject();
            argValues[i] = arg;
        }
        if (args.length == 1) {
            agg.add(arg);
        } else {
            agg.add(argValues);
        }
    }

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产高清成人在线| 日韩精品高清不卡| www.亚洲激情.com| 中文字幕一区二区三区乱码在线| 成人美女在线视频| 亚洲日本在线观看| 欧美日韩国产精选| 加勒比av一区二区| 国产精品视频一二| 色婷婷久久久综合中文字幕| 亚洲大片一区二区三区| 欧美一级高清片| 成人免费毛片片v| 亚洲美女视频在线观看| 欧美老人xxxx18| 国产在线看一区| ㊣最新国产の精品bt伙计久久| 欧美网站一区二区| 九九**精品视频免费播放| 国产精品久久午夜夜伦鲁鲁| 欧洲一区在线观看| 狠狠色狠狠色综合| 亚洲女与黑人做爰| 欧美刺激脚交jootjob| 不卡在线视频中文字幕| 日韩激情一二三区| 中文子幕无线码一区tr| 欧美日韩欧美一区二区| 久久99精品久久久久久动态图| 国产精品久久久久影视| 欧美日韩国产精选| 成人午夜又粗又硬又大| 亚洲福利视频导航| 亚洲综合男人的天堂| 日韩欧美国产午夜精品| 99精品1区2区| 激情成人综合网| 亚洲h在线观看| 中文一区二区完整视频在线观看| 欧美日韩美女一区二区| 播五月开心婷婷综合| 久久精品噜噜噜成人av农村| 亚洲欧美电影一区二区| 久久久天堂av| 日韩一级在线观看| 91官网在线观看| 成人丝袜高跟foot| 韩国av一区二区三区四区| 亚洲综合色在线| 日韩理论片网站| 国产视频一区在线观看| 欧美成人vr18sexvr| 欧美视频第二页| 99视频精品免费视频| 国产福利91精品一区二区三区| 蜜桃在线一区二区三区| 亚洲一区二区三区在线| 亚洲色图视频网站| 国产精品青草久久| 国产日韩欧美麻豆| 久久这里只有精品首页| 日韩午夜在线观看视频| 欧美精品丝袜中出| 欧美日韩一区二区三区不卡| 91黄色在线观看| 一本色道久久综合狠狠躁的推荐| 福利一区福利二区| 国产成人午夜99999| 国产乱码一区二区三区| 久久99久久99| 欧美午夜精品一区二区蜜桃| 99国产精品国产精品毛片| 99久久久免费精品国产一区二区| 国产69精品一区二区亚洲孕妇| 国产麻豆成人精品| 国产精品中文有码| 国产aⅴ综合色| voyeur盗摄精品| 91麻豆精品在线观看| 色呦呦网站一区| 欧美在线视频日韩| 9191成人精品久久| 日韩欧美一区在线观看| 久久天天做天天爱综合色| 国产视频亚洲色图| 国产精品久久久久7777按摩| 中文字幕在线不卡国产视频| 1区2区3区国产精品| 夜夜嗨av一区二区三区网页| 亚洲成av人**亚洲成av**| 热久久一区二区| 国产最新精品免费| av男人天堂一区| 欧美吻胸吃奶大尺度电影| 91麻豆精品国产91久久久使用方法 | 欧美日韩一区二区在线观看| 精品视频色一区| 日韩欧美高清一区| 久久久久国产精品麻豆ai换脸 | 免费观看在线综合| 韩国一区二区在线观看| www.亚洲在线| 欧美日韩免费在线视频| 欧美精品一区二区三| 中文字幕二三区不卡| 亚洲资源中文字幕| 久久se精品一区二区| 99国产精品99久久久久久| 欧美日本一道本| 亚洲国产岛国毛片在线| 亚洲一区av在线| 国产剧情在线观看一区二区| 日本韩国欧美国产| 久久欧美一区二区| 亚洲一区二区三区四区五区中文 | 极品尤物av久久免费看| 成人av免费在线播放| 欧美日韩午夜在线视频| 久久九九久精品国产免费直播| 一区二区三区四区中文字幕| 国产真实乱子伦精品视频| 色视频欧美一区二区三区| 精品少妇一区二区三区日产乱码 | 色呦呦一区二区三区| 精品国产三级电影在线观看| 亚洲欧美经典视频| 国产福利91精品| 在线综合视频播放| 亚洲天天做日日做天天谢日日欢| 免费成人在线网站| 色欧美片视频在线观看| 26uuu欧美| 亚洲va国产va欧美va观看| 高清国产一区二区三区| 日韩欧美精品在线视频| 一区二区三区四区中文字幕| 国产精品自拍一区| 91精品综合久久久久久| 亚洲精品视频免费看| 国产一区 二区| 欧美精三区欧美精三区| 亚洲精选一二三| 国产精品乡下勾搭老头1| 欧美日韩国产综合视频在线观看| 欧美国产欧美亚州国产日韩mv天天看完整 | 欧美日韩综合色| 国产精品看片你懂得| 国产一区二区导航在线播放| 日韩精品中文字幕一区| 亚洲va国产天堂va久久en| 色婷婷综合久久久久中文一区二区 | 欧美老肥妇做.爰bbww视频| 国产精品电影院| 国产夫妻精品视频| 久久精品综合网| 国产一区二区三区综合| 亚洲精品一区二区三区99| 麻豆精品新av中文字幕| 日韩一区二区在线看| 日本麻豆一区二区三区视频| 欧美日韩精品福利| 亚洲成人av中文| 欧美日韩不卡视频| 亚洲成av人影院在线观看网| 欧美日韩一区二区不卡| 亚洲成精国产精品女| 欧美日韩亚洲高清一区二区| 亚洲成人一区二区在线观看| 欧美日韩高清一区二区不卡| 性欧美大战久久久久久久久| 欧美高清视频一二三区 | 亚洲午夜电影在线| 欧美性大战xxxxx久久久| 一区二区三区在线观看动漫| 欧美视频你懂的| 首页亚洲欧美制服丝腿| 51久久夜色精品国产麻豆| 蜜桃av一区二区三区电影| 精品日韩在线一区| 国产成人丝袜美腿| 亚洲男同性视频| 欧美日韩国产一二三| 美女脱光内衣内裤视频久久网站| 精品久久久久一区| 成人国产精品免费观看视频| 亚洲欧美国产毛片在线| 欧美视频一区在线| 久久精品国产一区二区三区免费看| 欧美精品一区二区在线播放| 国产91对白在线观看九色| 亚洲精品网站在线观看| 91精品国产黑色紧身裤美女| 激情综合色综合久久综合| 国产精品系列在线| 欧美视频在线不卡| 国产精品一卡二| 伊人开心综合网| 精品国产精品网麻豆系列| 成人av在线网| 日韩中文字幕区一区有砖一区|