問題は、TCP を介してサーバーを実行し、クラスの時間枠用にエイリアス関数 SLIDEWINDOW を作成した後、エイリアスの slidewindow を呼び出すことです。しかし、この関数内から、テーブル (任意のテーブル) にクエリを実行して、必要な情報を取得する必要があります。再度接続すると、サーバーとアプリケーションがハングします。
コード:
public class TimeFrame {
public static void main(String... args) throws Exception {
Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection("jdbc:h2:tcp://MYIP:9092/~/test", "sa", "");
Statement stat = conn.createStatement();
//Setup Table
stat.execute("DROP TABLE IF EXISTS timeframe");
stat.execute("CREATE TABLE timeframe (last_updated TIMESTAMP, ip int");
stat.execute("CREATE ALIAS IF NOT EXISTS SLIDEWINDOW FOR \"h2TimeFrame.TimeFrame.slidewindow\" ");
}
}
SLIDEWINDOW 関数からテーブルの読み取りにアクセスしたい場合はどうすればよいですか?
public static void slideWindow(String ip){
...
Connection conn = DriverManager.getConnection ("jdbc:h2:tcp://MYIP:9092/~/test", "sa", "");
Statement stat = conn.createStatement();
res = stat.executeQuery("SELECT * FROM timeframe where ip = '" + ips + "' limit 1 ");
...
}
Q1. エイリアスからそれを行うことはできますか?
Q2. H2 サーバー Web コンソールまたは Java アプリケーションからエイリアス「SELECT SLIDEWINDOW('127.0.0.1')」を呼び出すと、アプリケーションがハングしますか?