昨日の続き
とりあえずデータソースのサイズを2GBとったらロードに成功した。ちなみにVM自体の物理(?)メモリが2GBなのでkswapd0が唸りを上げてベンチマークどころじゃない感じだけどそれはそれ。そもそもVMベンチマークは取らない。
ロード処理はOracle DB用のスクリプトを元にプライマリキーの作り方だけ変えた(create tableの方に移した)ら、そのまま動いた。ただキーを先に作ったのが拙かったかスワップが激しいのが拙いのかデータ一式挿入して作るのに30分位掛かった。
だがしかし。
本編は動かすが速いか忽ちエラー終了。

                var rs01 = fetchAsArray("SELECT /* D-01 */ n1.no_o_id "
                               + "FROM new_orders n1 "
                               + "WHERE n1.no_w_id = $int AND n1.no_d_id = $int "
                               + "AND n1.no_o_id = ("
                                   + "SELECT MIN(n2.no_o_id) "
                                   + "FROM new_orders n2 "
                                   + "WHERE n2.no_w_id = $int AND n2.no_d_id = $int"
                               + ") "
                               + "FOR UPDATE",
                               w_id, d_id, w_id, d_id);

がエラーに。エラー番号1110。TimesTenはFOR UPDATE中で集計関数使っちゃ駄目だそうな。どうしようかねー。先にSELECT MINだけやってJavaScript側の変数に入れれば良いのかも。しかしJavaScriptはよく判らぬ。SQLはもっと判らない。select * from dualより難しいのは無理。
ちなみに同じSQLをttisqlからやったら、このエラーは実はWARNINGで値は返ってきてるんだよな。ループの中でなければException見分けて握りつぶす所だけど。