naoki86star

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

VoltDBのadhocなSQLのpythonスクリプトはこう書くべきだった

VoltDBのpythonインタフェース(voltdbclient.py)を使うときに任意SQLをprocedureとしていったん登録してから起動していると以前書いてました。

VoltDBのSqlCmdでの任意SQLの実行は@AdHocというシステムプロシージャ*1を起動している、という事実をようやく覚えて、結局書き方は簡単にできる、ということを知りました。*2

#!usr/bin/env python
# -*- coding:utf-8 -*-
import sys
import traceback

from voltdbclient import *


SQLSTRING="select * from sample where column='something'"

def mainloop(client):
    proc = VoltProcedure( client,"@AdHoc", [FastSerializer.VOLTTYPE_STRING])
    response = proc.call( [ SQLSTRING ] )
    return response

try:

    client = FastSerializer("localhost", 21212)

    response = mainloop(client)

except:
    traceback.print_exc()
    pass

finally:
    close()

# end of file

*1:結構優れていると感じていて、マルチパーティションテーブルのときパラレルで検索処理して結果を結合するような動作をしてるっぽい

*2:@AdHocの例もひとつ加えておいてくれればよかったのに