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

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

?? pgserver.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.server.pg;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

import org.h2.engine.Constants;
import org.h2.server.Service;
import org.h2.util.MathUtils;
import org.h2.util.NetUtils;

/**
 * This class implements a subset of the PostgreSQL protocol as described here:
 * http://developer.postgresql.org/pgdocs/postgres/protocol.html
 * The PostgreSQL catalog is described here:
 * http://www.postgresql.org/docs/7.4/static/catalogs.html
 */
public class PgServer implements Service {

    public static final int DEFAULT_PORT = 5435; // also in the docs

    private int port = PgServer.DEFAULT_PORT;
    private boolean stop;
    private boolean log;
    private ServerSocket serverSocket;
    private Set running = Collections.synchronizedSet(new HashSet());
    private String baseDir;
    private String url;
    private boolean allowOthers;
    private boolean ifExists;

    public void init(String[] args) throws Exception {
        port = DEFAULT_PORT;
        for (int i = 0; i < args.length; i++) {
            String a = args[i];
            if ("-log".equals(a)) {
                log = Boolean.valueOf(args[++i]).booleanValue();
            } else if ("-pgPort".equals(a)) {
                port = MathUtils.decodeInt(args[++i]);
            } else if ("-baseDir".equals(a)) {
                baseDir = args[++i];
            } else if ("-pgAllowOthers".equals(a)) {
                allowOthers = Boolean.valueOf(args[++i]).booleanValue();
            } else if ("-ifExists".equals(a)) {
                ifExists = Boolean.valueOf(args[++i]).booleanValue();
            }
        }
        org.h2.Driver.load();
        url = "pg://" + NetUtils.getLocalAddress() + ":" + port;

//        int testing;
//        log = true;
    }

    boolean getLog() {
        return log;
    }

    void log(String s) {
        if (log) {
            System.out.println(s);
        }
    }

    synchronized void remove(PgServerThread t) {
        running.remove(t);
    }

    void logError(Exception e) {
        if (log) {
            e.printStackTrace();
        }
    }

    public String getURL() {
        return url;
    }

    boolean allow(Socket socket) {
        if (allowOthers) {
            return true;
        }
        return NetUtils.isLoopbackAddress(socket);
    }

    public void start() throws SQLException {
        serverSocket = NetUtils.createServerSocket(port, false);
    }

    public void listen() {
        String threadName = Thread.currentThread().getName();
        try {
            while (!stop) {
                Socket s = serverSocket.accept();
                if (!allow(s)) {
                    log("Connection not allowed");
                    s.close();
                } else {
                    PgServerThread c = new PgServerThread(s, this);
                    running.add(c);
                    c.setProcessId(running.size());
                    Thread thread = new Thread(c);
                    thread.setName(threadName+" thread");
                    c.setThread(thread);
                    thread.start();
                }
            }
        } catch (Exception e) {
            if (!stop) {
                e.printStackTrace();
            }
        }
    }

    public void stop() {
        // TODO server: combine with tcp server
        if (!stop) {
            stop = true;
            if (serverSocket != null) {
                try {
                    serverSocket.close();
                } catch (IOException e) {
                    // TODO log exception
                    e.printStackTrace();
                }
                serverSocket = null;
            }
        }
        // TODO server: using a boolean 'now' argument? a timeout?
        ArrayList list = new ArrayList(running);
        for (int i = 0; i < list.size(); i++) {
            PgServerThread c = (PgServerThread) list.get(i);
            c.close();
            try {
                Thread t = c.getThread();
                if (t != null) {
                    t.join(100);
                }
            } catch (Exception e) {
                // TODO log exception
                e.printStackTrace();
            }
        }
    }

    public boolean isRunning() {
        if (serverSocket == null) {
            return false;
        }
        try {
            Socket s = NetUtils.createLoopbackSocket(serverSocket.getLocalPort(), false);
            s.close();
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    public String getBaseDir() {
        return baseDir;
    }

    public boolean getAllowOthers() {
        return allowOthers;
    }

    public String getType() {
        return "PG";
    }

    public String getName() {
        return "H2 PG Server";
    }

    public boolean getIfExists() {
        return ifExists;
    }

    /**
     * The Java implementation of the PostgreSQL function pg_get_indexdef. The
     * method is used to get CREATE INDEX command for an index, or the column
     * definition of one column in the index.
     * 
     * @param conn the connection
     * @param indexId the index id
     * @param ordinalPosition the ordinal position (null if the SQL statement
     *            should be returned)
     * @param pretty this flag is ignored
     * @return the SQL statement or the column name
     */
    public static String getIndexColumn(Connection conn, int indexId, Integer ordinalPosition, Boolean pretty)
            throws SQLException {
        if (ordinalPosition == null || ordinalPosition.intValue() == 0) {
            PreparedStatement prep = conn.prepareStatement("select sql from information_schema.indexes where id=?");
            prep.setInt(1, indexId);
            ResultSet rs = prep.executeQuery();
            if (rs.next()) {
                return rs.getString(1);
            }
            return null;
        } else {
            PreparedStatement prep = conn.prepareStatement("select column_name from information_schema.indexes where id=? and ordinal_position=?");
            prep.setInt(1, indexId);
            prep.setInt(2, ordinalPosition.intValue());
            ResultSet rs = prep.executeQuery();
            if (rs.next()) {
                return rs.getString(1);
            }
            return null;
        }
    }

    public static String getCurrentSchema(Connection conn) throws SQLException {
        ResultSet rs = conn.createStatement().executeQuery("call schema()");
        rs.next();
        return rs.getString(1);
    }

    public static String getEncodingName(int code) throws SQLException {
        switch (code) {
        case 0:
            return "SQL_ASCII";
        case 6:
            return "UTF8";
        case 8:
            return "LATIN1";
        default:
            return code < 40 ? "UTF8" : "";
        }
    }

    public static String getVersion() {
        return "PostgreSQL 8.1.4  server protocol using H2 " + Constants.getVersion();
    }

    public static Timestamp getStartTime() {
        return new Timestamp(System.currentTimeMillis());
    }

    public static String getUserById(Connection conn, int id) throws SQLException {
        PreparedStatement prep = conn.prepareStatement("SELECT NAME FROM INFORMATION_SCHEMA.USERS WHERE ID=?");
        prep.setInt(1, id);
        ResultSet rs = prep.executeQuery();
        if (rs.next()) {
            return rs.getString(1);
        }
        return null;
    }

    public static boolean hasDatabasePrivilege(int id, String privilege) {
        return true;
    }

    public static boolean hasTablePrivilege(String table, String privilege) {
        return true;
    }

    public static int getCurrentTid(String table, String id) {
        return 1;
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆精品在线视频| 欧美色老头old∨ideo| 99久久精品国产一区二区三区| 在线免费av一区| 国产三级精品在线| 丝袜美腿一区二区三区| 暴力调教一区二区三区| 7777精品伊人久久久大香线蕉的 | 日本中文字幕不卡| 99久久综合色| 欧美不卡123| 日一区二区三区| 在线观看精品一区| 国产精品久久一卡二卡| 国内久久婷婷综合| 日韩欧美国产综合| 日韩极品在线观看| 欧美视频一区二区三区四区 | 欧美老年两性高潮| 一二三区精品视频| 91老司机福利 在线| 国产精品伦理在线| 国产精品99久久久久| 久久综合九色综合欧美98| 欧美aaa在线| 欧美一区二区三区四区在线观看 | 亚洲午夜精品17c| 色域天天综合网| ㊣最新国产の精品bt伙计久久| 国产电影一区二区三区| 久久新电视剧免费观看| 国产老妇另类xxxxx| 久久久久久久综合日本| 国产呦萝稀缺另类资源| 日韩免费视频一区二区| 免费一级片91| 久久―日本道色综合久久| 国产福利91精品一区| 中国色在线观看另类| 99久久久免费精品国产一区二区| 欧美激情一区二区三区| 欧美日韩1234| 亚洲一区二区在线免费观看视频| 成人免费视频网站在线观看| 中文字幕av资源一区| av不卡免费在线观看| 日韩理论片中文av| 欧美系列日韩一区| 男男视频亚洲欧美| www激情久久| 99久久综合99久久综合网站| 亚洲精品免费视频| 91精品国产乱码久久蜜臀| 精品综合免费视频观看| 国产精品三级电影| 欧美三片在线视频观看 | 亚洲国产精品久久一线不卡| 欧美视频日韩视频在线观看| 日本免费在线视频不卡一不卡二| 久久亚洲欧美国产精品乐播| 成人永久免费视频| 亚洲成a人片综合在线| 精品欧美久久久| 99re这里只有精品视频首页| 亚洲成人先锋电影| 久久久久久久av麻豆果冻| 91影视在线播放| 免费在线视频一区| 1000部国产精品成人观看| 在线成人午夜影院| 国产成人在线视频网址| 亚洲影院在线观看| 久久久精品tv| 欧美日韩精品一区二区三区| 国产精品一区二区你懂的| 亚洲视频每日更新| 精品国产一区二区亚洲人成毛片| voyeur盗摄精品| 奇米一区二区三区| 一区二区欧美国产| 欧美精彩视频一区二区三区| 欧美亚洲尤物久久| 福利视频网站一区二区三区| 亚洲成人综合视频| 欧美一区二区三区播放老司机| 成人国产精品免费观看视频| 日韩国产在线观看一区| 中文字幕一区二区不卡 | 欧美国产一区视频在线观看| 欧美日韩在线播放一区| 丁香另类激情小说| 久久国产精品一区二区| 亚洲午夜电影网| 国产精品久久久久久福利一牛影视| 欧美精品一级二级| 欧美亚洲一区二区在线| 懂色av一区二区在线播放| 免费看欧美女人艹b| 亚洲图片欧美色图| 依依成人精品视频| 国产精品成人网| 国产精品日产欧美久久久久| 精品国产伦理网| 日韩欧美一级精品久久| 欧美日韩国产综合视频在线观看| 色综合天天性综合| 91视频在线观看| 91亚洲大成网污www| 成人黄色免费短视频| 国产成人亚洲综合a∨猫咪| 美女视频免费一区| 久久草av在线| 国内一区二区视频| 国产精品一区二区久激情瑜伽| 久久99精品久久久久久动态图 | 欧美日韩高清影院| 欧美日韩精品一区二区三区| 欧洲激情一区二区| 欧美色图免费看| 欧美精品欧美精品系列| 538在线一区二区精品国产| 欧美精品自拍偷拍| 日韩欧美自拍偷拍| 久久久久久夜精品精品免费| 国产午夜精品久久| 日韩一区在线播放| 一区二区国产视频| 日韩在线一区二区三区| 另类人妖一区二区av| 久久 天天综合| 成人性生交大片免费看中文| k8久久久一区二区三区| 在线影视一区二区三区| 欧美丰满少妇xxxxx高潮对白| 欧美一区二区成人| 久久天天做天天爱综合色| 中文字幕高清一区| 亚洲一区精品在线| 日本成人在线网站| 高清视频一区二区| 精品视频一区 二区 三区| 欧美一区二视频| 国产欧美一区二区三区在线老狼| 中文字幕一区二区三区不卡| 亚洲一区二区在线观看视频 | 老色鬼精品视频在线观看播放| 韩日av一区二区| 色婷婷综合五月| 日韩视频一区二区三区在线播放| 久久网站热最新地址| 樱桃视频在线观看一区| 久久不见久久见免费视频1| 成人白浆超碰人人人人| 欧美精品久久天天躁| 国产欧美日韩精品在线| 亚洲成在人线在线播放| 国产成人综合在线| 欧美人与性动xxxx| 中文字幕日本不卡| 久久丁香综合五月国产三级网站| 成人午夜免费视频| 日韩欧美电影一区| 一区二区三区四区精品在线视频| 九九精品视频在线看| 在线亚洲人成电影网站色www| 久久一区二区三区国产精品| 一区二区激情视频| 成人性色生活片免费看爆迷你毛片| 欧美日韩国产成人在线91| 国产日韩精品一区二区浪潮av| 婷婷亚洲久悠悠色悠在线播放| 国产99久久久久久免费看农村| 欧美老女人第四色| 亚洲与欧洲av电影| 99久久免费视频.com| 国产亚洲一区字幕| 美国av一区二区| 欧美日本乱大交xxxxx| 亚洲天天做日日做天天谢日日欢 | 成人黄色av电影| 久久婷婷国产综合精品青草| 日韩经典中文字幕一区| 欧美在线观看禁18| 亚洲精品成人悠悠色影视| 国产成人午夜精品影院观看视频| 欧美一区二区在线观看| 亚洲国产cao| 欧美在线视频日韩| 亚洲激情av在线| 91麻豆福利精品推荐| 国产精品久久久久久久久动漫 | 亚洲国产精品一区二区久久恐怖片 | 91精品国产乱码久久蜜臀| 一区二区三区四区中文字幕| 99麻豆久久久国产精品免费| 中文字幕va一区二区三区| 懂色av一区二区三区免费看| 精品免费视频一区二区| 精品一区二区三区在线播放| 日韩精品中文字幕一区|