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