[groonga-dev,04770] 結果サイズの大きいselectの実行結果が空になる

Back to archive index
Yutaro Shimamura yu****@irx*****
2019年 8月 9日 (金) 09:28:50 JST


島村です。

dumpではなくselectを使って大きなサイズになる結果を取得しようとすると、実行結果が空になってしまいます。

- 実行環境
debian 9.5
Groonga 8.0.7 [linux-gnu,x86_64,utf8,match-escalation-threshold=-1,nfkc,onigmo,epoll]
configure options: < '--with-match-escalation-threshold=-1'
'CFLAGS=-O3 -march=native' 'CXXFLAGS=-O3 -march=native'>

- 実行テーブル
> column_list tmptbl
[[0,1565308166.561116,0.004487514495849609],[[["id","UInt32"],["name","ShortText"],["path","ShortText"],["type","ShortText"],["flags","ShortText"],["domain","ShortText"],["range","ShortText"],["source","ShortText"]],[260,"_key","","","COLUMN_SCALAR","tmptbl","ShortText",[]],[261,"c_f","/data7/j7.grn.0000105","fix","COLUMN_SCALAR|PERSISTENT","tmptbl","UInt64",[]],[262,"c_r","/data7/j7.grn.0000106","fix","COLUMN_SCALAR|PERSISTENT","tmptbl","UInt64",[]],[263,"ctime","/data7/j7.grn.0000107","fix","COLUMN_SCAtLAR|PERSISTENT","tmptbl","Time",[]],[264,"domain","/data7/j7.grn.0000108","var","COLUMN_SCALAR|PERSISTENT","tmptbl","ShortText",[]],[265,"drl","/data7/j7.grn.0000109","fix","COLUMN_SCALAR|PERSISTENT","tmptbl","UInt8",[]],[266,"flags","/data7/j7.grn.000010A","fix","COLUMN_SCALAR|PERSISTENT","tmptbl","UInt64",[]],[267,"mtime","/data7/j7.grn.000010B","fix","COLUMN_SCALAR|PERSISTENT","tmptbl","Time",[]],[268,"path","/data7/j7.grn.000010C","var","COLUMN_SCALAR|PERSISTENT","tmptbl","ShortText",[]]]]


このtmptblのdomain, pathの一覧を取得するため、以下のコマンドを実行したところ実行結果が空になってしまいます。

# groonga /data7/j7.grn
> select tmptbl --output_columns "domain, path" --limit -1 --output_type tsv
> quit
[[0,1565308085.961933,5.53131103515625e-05],true]

何度か実行しましたが、ログにはgrn_init/grn_finのみで特にエラーは出ませんでした。
また、インタラクティブプロンプトによるコマンド実行だけでなく、標準出力リダイレクトやoutput-fd経由の出力でも結果は空でした。

この2カラムはデータファイル自体(/data7/j7.grn.0000108*
/data7/j7.grn.000010C*)15Gあり、レコード数も1.6億程度あります。
少ないlimitだと取得できるので、サイズの大きいselectだと取得結果がうまくいかないのかなと思っていますがどうでしょうか。

例えば、drlカラム(/data7/j7.grn.0000109* 4.0KB total)は0しか入っていないのですが、こちらは正常に出力されました。
> select tmptbl --output_columns "drl"  --limit -1 --output_type tsv
(結果省略/0がちゃんと出力されている)

尚、実行環境は32GBmem/うち28GB程度はgroongaが使用できる状態で、ulimitも-m unlimitedになっていました。

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 128569
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 262144
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 128569
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited


groonga-dev メーリングリストの案内
Back to archive index