naoki86star

インターネットの片隅でなにかしら書いてみる

VoltDBでのDual表ぽいもの

VoltDB/sqlcmdで例えば、Oracle風に

select inet_aton('x.x.x.x') from dual;

とかしたいと、打ってみたら、とりあえずだめ
MySQL風に

select inet_aton('x.x.x.x');

としてもだめ。

stackoverflowさまによると、なんでもいいから実在表を指定すればよい、とのこと。*1

select inet_aton('x.x.x.x') from flow limit 1;

これでうまくいった*2
limit 1つけてるのは、このテーブルの行数が常に非常におおきいから。というか2行以上だと重複で出力されるだけ。例にこのテーブル使ったのはいつもつかっているから。テーブルが空だと結果が戻ってこない。

つまり、oracleぽくするなら、これ用にdualテーブルを作っておいて、一行だけダミーで入れておけばいいということです。


Oracleの場合そういえば、インストールの最初にカタログとかいってがばがばいろんな表を作っていたが、そのなかにdualというテーブル作って一行なにかいれていたんだと思われる。*3

*1:VoltDBのSQLエンジンはHSQLDBが元

*2:まだ正式でないのでこれはmy branch版

*3:というか今のバージョンはしらない。Oracle7しかしらない人。