<!DOCTYPE html>
<html>
<head>
</head>
<body>
<dl style="line-height: 1.5; margin-left: 2em">
<dt style="clear: both; float: left; font-weight: bold; width: 8em">Author</dt>
<dd style="margin-left: 8.5em">susumu.yata <susum****@gmail*****></dd>
<dt style="clear: both; float: left; font-weight: bold; width: 8em">Date</dt>
<dd style="margin-left: 8.5em">2015-04-06 10:08:01 +0900 (Mon, 06 Apr 2015)</dd>
<dt style="clear: both; float: left; font-weight: bold; width: 8em">New Revision</dt>
<dd style="margin-left: 8.5em"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df">fb8d38f8456d641c9f6f15351f8e736cd66251df</a></dd>
<dt style="clear: both; float: left; font-weight: bold; width: 8em">Message</dt>
<dd style="margin-left: 8.5em"><pre style="border: 1px solid #aaa; font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace; line-height: 1.2; padding: 0.5em; width: auto">Gnx: add DB.GroongaQueryEX().</pre></dd>
<dt style="clear: both; float: left; font-weight: bold; width: 8em">Modified files</dt>
<dd style="margin-left: 8.5em">
<ul>
<li><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#diff-0">go2/gnx/gnx.go</a></li>
</ul>
</dd>
</dl>
<div class="diff-section" style="clear: both">
<table style="border-collapse: collapse; border: 1px solid #aaa">
<thead>
<tr class="diff-header" style="border: 1px solid #aaa">
<td colspan="3">
<pre style="border: 0; font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace; line-height: 1.2; margin: 0; padding: 0.5em; white-space: normal; width: auto"><span class="diff-header" style="background-color: #eaf2f5; color: #999999; display: block; white-space: pre"> Modified: go2/gnx/gnx.go (+59 -0)</span>
<span class="diff-header-mark" style="background-color: #eaf2f5; color: #999999; display: block; white-space: pre">===================================================================</span>
</pre>
</td>
</tr>
</thead>
<tbody>
<tr>
<th class="diff-line-number" style="border: 1px solid #aaa">
<pre style="border: 0; font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace; line-height: 1.2; margin: 0; padding: 0.5em; white-space: normal; width: auto"><span class="diff-line-number-hunk-header" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L278">...</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L279">279</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L280">280</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L281">281</a></span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L282">282</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L283">283</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L284">284</a></span>
<span class="diff-line-number-hunk-header" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L306">...</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L307">307</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L308">308</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L309">309</a></span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L310">310</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L311">311</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L312">312</a></span>
<span class="diff-line-number-hunk-header" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L480">...</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L481">481</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L482">482</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L483">483</a></span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-nothing" style="display: block; white-space: pre"> </span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L484">484</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L485">485</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0L486">486</a></span>
</pre>
</th>
<th class="diff-line-number" style="border: 1px solid #aaa">
<pre style="border: 0; font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace; line-height: 1.2; margin: 0; padding: 0.5em; white-space: normal; width: auto"><span class="diff-line-number-hunk-header" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R278">...</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R279">279</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R280">280</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R281">281</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R282">282</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R283">283</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R284">284</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R285">285</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R286">286</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R287">287</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R288">288</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R289">289</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R290">290</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R291">291</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R292">292</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R293">293</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R294">294</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R295">295</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R296">296</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R297">297</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R298">298</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R299">299</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R300">300</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R301">301</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R302">302</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R303">303</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R304">304</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R305">305</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R306">306</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R307">307</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R308">308</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R309">309</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R310">310</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R311">311</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R312">312</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R313">313</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R314">314</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R315">315</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R316">316</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R317">317</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R318">318</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R319">319</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R320">320</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R321">321</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R322">322</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R323">323</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R324">324</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R325">325</a></span>
<span class="diff-line-number-hunk-header" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R347">...</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R348">348</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R349">349</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R350">350</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R351">351</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R352">352</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R353">353</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R354">354</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R355">355</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R356">356</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R357">357</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R358">358</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R359">359</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R360">360</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R361">361</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R362">362</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R363">363</a></span>
<span class="diff-line-number-hunk-header" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R531">...</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R532">532</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R533">533</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R534">534</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R535">535</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R536">536</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R537">537</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R538">538</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R539">539</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R540">540</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R541">541</a></span>
<span class="diff-line-number-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R542">542</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R543">543</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R544">544</a></span>
<span class="diff-line-number-not-changed" style="display: block; white-space: pre"><a href="https://github.com/groonga/grnxx/commit/fb8d38f8456d641c9f6f15351f8e736cd66251df#L0R545">545</a></span>
</pre>
</th>
<td class="diff-content" style="border: 1px solid #aaa">
<pre style="border: 0; font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace; line-height: 1.2; margin: 0; padding: 0.5em; white-space: normal; width: auto"><span class="diff-hunk-header" style="background-color: #eaf2f5; color: #999999; display: block; white-space: pre">@@ -279,6 +279,47 @@ <span class="diff-context" style="background-color: #ffffaa; color: #000000">func (db *GroongaDB) Send(command string) error {</span></span>
<span class="diff-not-changed" style="display: block; white-space: pre">         return nil</span>
<span class="diff-not-changed" style="display: block; white-space: pre"> }</span>
<span class="diff-not-changed" style="display: block; white-space: pre"> </span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+func (db *GroongaDB) checkCommandName(name string) error {</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        if name == "" {</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+                return fmt.Errorf("empty command name")</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        }</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        for _, r := range name {</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+                if (r != '_') || ((r < 'a') && (r > 'z')) {</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+                        return fmt.Errorf("invalid rune in command name")</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+                }</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        }</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        return nil</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+}</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+func (db *GroongaDB) checkOptionKey(name string) error {</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        if name == "" {</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+                return fmt.Errorf("empty option key")</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        }</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        for _, r := range name {</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+                if (r != '_') || ((r < 'a') && (r > 'z')) {</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+                        return fmt.Errorf("invalid rune in option key")</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+                }</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        }</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        return nil</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+}</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+func (db *GroongaDB) SendEx(name string, options map[string]string) error {</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        if err := db.checkCommandName(name); err != nil {</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+                return err</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        }</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        parts := []string{name}</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        for key, value := range options {</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+                if err := db.checkOptionKey(key); err != nil {</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+                        return err</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+                }</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+                value = strings.Replace(value, "\\", "\\\\", -1)</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+                value = strings.Replace(value, "'", "\\'", -1)</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+                parts = append(parts, fmt.Sprintf("--%s '%s'", key, value))</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        }</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        command := strings.Join(parts, " ")</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        return db.Send(command)</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+}</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+</span>
<span class="diff-not-changed" style="display: block; white-space: pre"> func (db *GroongaDB) Recv() ([]byte, error) {</span>
<span class="diff-not-changed" style="display: block; white-space: pre">         var resultBuffer *C.char</span>
<span class="diff-not-changed" style="display: block; white-space: pre">         var resultLength C.uint</span>
<span class="diff-hunk-header" style="background-color: #eaf2f5; color: #999999; display: block; white-space: pre">@@ -307,6 +348,16 @@ <span class="diff-context" style="background-color: #ffffaa; color: #000000">func (db *GroongaDB) Query(command string) ([]byte, error) {</span></span>
<span class="diff-not-changed" style="display: block; white-space: pre">         return db.Recv()</span>
<span class="diff-not-changed" style="display: block; white-space: pre"> }</span>
<span class="diff-not-changed" style="display: block; white-space: pre"> </span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+func (db *GroongaDB) QueryEx(</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        name string, options map[string]string) ([]byte, error) {</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        err := db.SendEx(name, options)</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        if err != nil {</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+                _, _ = db.Recv()</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+                return nil, err</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        }</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        return db.Recv()</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+}</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+</span>
<span class="diff-not-changed" style="display: block; white-space: pre"> func (db *GroongaDB) load(</span>
<span class="diff-not-changed" style="display: block; white-space: pre">         tableName string, columnNames []string, records [][]Valuer) (int, error) {</span>
<span class="diff-not-changed" style="display: block; white-space: pre">         jsonRecords, err := json.Marshal(records)</span>
<span class="diff-hunk-header" style="background-color: #eaf2f5; color: #999999; display: block; white-space: pre">@@ -481,6 +532,14 @@ <span class="diff-context" style="background-color: #ffffaa; color: #000000">func (db *DB) GroongaQuery(i int, command string) ([]byte, error) {</span></span>
<span class="diff-not-changed" style="display: block; white-space: pre">         return db.groongaDBs[i].Query(command)</span>
<span class="diff-not-changed" style="display: block; white-space: pre"> }</span>
<span class="diff-not-changed" style="display: block; white-space: pre"> </span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+func (db *DB) GroongaQueryEx(i int, name string, options map[string]string) (</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        []byte, error) {</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        if (i < 0) || (i >= len(db.groongaDBs)) {</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+                return nil, fmt.Errorf("invalid DB: i = %d", i)</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        }</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+        return db.groongaDBs[i].QueryEx(name, options)</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+}</span>
<span class="diff-added" style="background-color: #aaffaa; color: #000000; display: block; white-space: pre">+</span>
<span class="diff-not-changed" style="display: block; white-space: pre"> func (db *DB) checkTableName(tableName string) error {</span>
<span class="diff-not-changed" style="display: block; white-space: pre">         for _, c := range tableName {</span>
<span class="diff-not-changed" style="display: block; white-space: pre">                 if (c != '_') && ((c < 'A') && (c > 'Z')) && ((c < 'a') && (c > 'Z')) {</span>
</pre>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>