[Groonga-commit] pgroonga/pgroonga at 16fdff3 [master] test: add compatibility tests for pgroonga.XXX

Back to archive index

Kouhei Sutou null+****@clear*****
Thu Aug 10 14:49:35 JST 2017


Kouhei Sutou	2017-08-10 14:49:35 +0900 (Thu, 10 Aug 2017)

  New Revision: 16fdff35c0a16e6d9fcc7ed6f10834cf8f8dd033
  https://github.com/pgroonga/pgroonga/commit/16fdff35c0a16e6d9fcc7ed6f10834cf8f8dd033

  Message:
    test: add compatibility tests for pgroonga.XXX

  Added files:
    expected/compatibility/schema/column-name/japanese.out
    expected/compatibility/schema/compare/integer/multiple/greater-than-equal/multiple.out
    expected/compatibility/schema/compare/integer/order-by-limit/asc.out
    expected/compatibility/schema/compare/integer/order-by-limit/desc.out
    expected/compatibility/schema/compare/integer/single/between/bitmapscan.out
    expected/compatibility/schema/compare/integer/single/between/indexscan.out
    expected/compatibility/schema/compare/integer/single/greater-than-equal/multiple.out
    expected/compatibility/schema/compare/integer/single/in/bitmapscan.out
    expected/compatibility/schema/compare/integer/single/in/indexscan.out
    expected/compatibility/schema/compare/integer/single/less-than-equal/bitmapscan.out
    expected/compatibility/schema/compare/integer/single/less-than-equal/indexscan.out
    expected/compatibility/schema/compare/integer/single/less-than-equal/multiple.out
    expected/compatibility/schema/compare/timestamp-with-time-zone/single/between/bitmapscan.out
    expected/compatibility/schema/compare/timestamp-with-time-zone/single/between/indexscan.out
    expected/compatibility/schema/compare/timestamp/single/between/bitmapscan.out
    expected/compatibility/schema/compare/timestamp/single/between/indexscan.out
    expected/compatibility/schema/compare/varchar/single/equal/bitmapscan.out
    expected/compatibility/schema/compare/varchar/single/equal/indexscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v1/match-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v1/match-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v1/match-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2-question/bitmapscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2-question/indexscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2-question/seqscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v2/match-v1/bitmapscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v2/match-v1/indexscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v2/match-v1/seqscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2-greater/bitmapscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2-greater/indexscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2-greater/seqscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v1/bitmapscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v1/indexscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v1/seqscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v2/similar-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v2/similar-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text-array/compatibility/v2/similar-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text-array/match-in-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text-array/match-in-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text-array/match-in-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text-array/match-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text-array/match-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text-array/match-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text-array/match/bitmapscan.out
    expected/compatibility/schema/full-text-search/text-array/match/indexscan.out
    expected/compatibility/schema/full-text-search/text-array/match/seqscan.out
    expected/compatibility/schema/full-text-search/text-array/query-in-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text-array/query-in-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text-array/query-in-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text-array/query-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text-array/query-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text-array/query-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text-array/query/bitmapscan.out
    expected/compatibility/schema/full-text-search/text-array/query/indexscan.out
    expected/compatibility/schema/full-text-search/text-array/query/seqscan.out
    expected/compatibility/schema/full-text-search/text-array/script-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text-array/script-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text-array/script-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text-array/similar-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text-array/similar-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text-array/similar-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text/multiple/match/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/multiple/match/indexscan.out
    expected/compatibility/schema/full-text-search/text/multiple/match/seqscan.out
    expected/compatibility/schema/full-text-search/text/multiple/update.out
    expected/compatibility/schema/full-text-search/text/single/and/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/and/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/and/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v1/match-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v1/match-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v1/match-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2-question/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2-question/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2-question/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/match-in-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/match-in-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/match-in-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/match-v1/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/match-v1/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/match-v1/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2-greater/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2-greater/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2-greater/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v1/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v1/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v1/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/similar-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/similar-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/compatibility/v2/similar-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike-v2/begin-of-text/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike-v2/begin-of-text/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike-v2/begin-of-text/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike-v2/end-of-text/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike-v2/end-of-text/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike-v2/end-of-text/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike-v2/partial/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike-v2/partial/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike-v2/partial/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike-v2/underscore/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike-v2/underscore/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike-v2/underscore/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike/begin-of-text/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike/begin-of-text/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike/begin-of-text/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike/end-of-text/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike/end-of-text/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike/end-of-text/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike/partial/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike/partial/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike/partial/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike/underscore/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike/underscore/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/ilike/underscore/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/like-v2/begin-of-text/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/like-v2/begin-of-text/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/like-v2/begin-of-text/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/like-v2/end-of-text/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/like-v2/end-of-text/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/like-v2/end-of-text/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/like-v2/partial/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/like-v2/partial/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/like-v2/partial/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/like-v2/underscore/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/like-v2/underscore/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/like-v2/underscore/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/like/begin-of-text/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/like/begin-of-text/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/like/begin-of-text/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/like/end-of-text/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/like/end-of-text/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/like/end-of-text/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/like/partial/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/like/partial/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/like/partial/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/like/underscore/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/like/underscore/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/like/underscore/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/match-in-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/match-in-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/match-in-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/match-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/match-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/match-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/match/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/match/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/match/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/query-in-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/query-in-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/query-in-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/query-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/query-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/query-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/query/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/query/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/query/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/script-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/script-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/script-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/similar-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/text/single/similar-v2/indexscan.out
    expected/compatibility/schema/full-text-search/text/single/similar-v2/seqscan.out
    expected/compatibility/schema/full-text-search/text/single/truncate.out
    expected/compatibility/schema/full-text-search/text/single/update.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v1/match-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v1/match-v2/indexscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v1/match-v2/seqscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2-question/bitmapscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2-question/indexscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2-question/seqscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2/indexscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2/seqscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v2/match-v1/bitmapscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v2/match-v1/indexscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v2/match-v1/seqscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2-greater/bitmapscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2-greater/indexscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2-greater/seqscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2/indexscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2/seqscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v1/bitmapscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v1/indexscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v1/seqscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v2/indexscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v2/seqscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v2/similar-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v2/similar-v2/indexscan.out
    expected/compatibility/schema/full-text-search/varchar/compatibility/v2/similar-v2/seqscan.out
    expected/compatibility/schema/full-text-search/varchar/match-in-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/varchar/match-in-v2/indexscan.out
    expected/compatibility/schema/full-text-search/varchar/match-in-v2/seqscan.out
    expected/compatibility/schema/full-text-search/varchar/match-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/varchar/match-v2/indexscan.out
    expected/compatibility/schema/full-text-search/varchar/match-v2/seqscan.out
    expected/compatibility/schema/full-text-search/varchar/query-in-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/varchar/query-in-v2/indexscan.out
    expected/compatibility/schema/full-text-search/varchar/query-in-v2/seqscan.out
    expected/compatibility/schema/full-text-search/varchar/query-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/varchar/query-v2/indexscan.out
    expected/compatibility/schema/full-text-search/varchar/query-v2/seqscan.out
    expected/compatibility/schema/full-text-search/varchar/script-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/varchar/script-v2/indexscan.out
    expected/compatibility/schema/full-text-search/varchar/script-v2/seqscan.out
    expected/compatibility/schema/full-text-search/varchar/similar-v2/bitmapscan.out
    expected/compatibility/schema/full-text-search/varchar/similar-v2/indexscan.out
    expected/compatibility/schema/full-text-search/varchar/similar-v2/seqscan.out
    expected/compatibility/schema/function/command/after-truncate.out
    expected/compatibility/schema/function/command/arguments.out
    expected/compatibility/schema/function/command/select.out
    expected/compatibility/schema/function/flush/jsonb.out
    expected/compatibility/schema/function/flush/multiple.out
    expected/compatibility/schema/function/flush/nonexistent.out
    expected/compatibility/schema/function/flush/single.out
    expected/compatibility/schema/function/query-expand/existent.out
    expected/compatibility/schema/function/query-expand/hash-index.out
    expected/compatibility/schema/function/query-expand/mix.out
    expected/compatibility/schema/function/query-expand/multiple-terms.out
    expected/compatibility/schema/function/query-expand/no-index.out
    expected/compatibility/schema/function/query-expand/nonexistent.out
    expected/compatibility/schema/function/query-expand/normal-index.out
    expected/compatibility/schema/function/query-expand/normalize-with-primary-key.out
    expected/compatibility/schema/function/query-expand/normalize.out
    expected/compatibility/schema/function/query-expand/not-text-array-synonyms.out
    expected/compatibility/schema/function/score/and.out
    expected/compatibility/schema/function/score/composite-primary-key/like.out
    expected/compatibility/schema/function/score/composite-primary-key/match.out
    expected/compatibility/schema/function/score/hot-updated.out
    expected/compatibility/schema/function/score/or.out
    expected/compatibility/schema/function/score/primary-key/not-head.out
    expected/compatibility/schema/function/score/primary-key/text.out
    expected/compatibility/schema/function/score/updated.out
    expected/compatibility/schema/groonga-function/tuple-is-alive/and.out
    expected/compatibility/schema/groonga-function/tuple-is-alive/or.out
    expected/compatibility/schema/index-scan/kill-prior-tuple.out
    expected/compatibility/schema/jsonb/compatibility/v1/match-v2/element/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/match-v2/element/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/match-v2/element/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/match-v2/value/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/match-v2/value/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/match-v2/value/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/query-v2-question/element/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/query-v2-question/element/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/query-v2-question/element/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/query-v2-question/value/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/query-v2-question/value/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/query-v2-question/value/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/query-v2/element/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/query-v2/element/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/query-v2/element/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/query-v2/value/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/query-v2/value/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/query-v2/value/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/delete/multiple-values.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/boolean/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/boolean/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/boolean/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/number/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/number/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/number/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/string/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/string/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/string/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/full-text-search/default.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/full-text-search/disable.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/object/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/object/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/object/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/boolean/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/boolean/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/boolean/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/number/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/number/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/number/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/string/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/string/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/string/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/query-v2/element/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/query-v2/element/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/query-v2/element/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/query-v2/value/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/query-v2/value/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/query-v2/value/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/delete/multiple-values.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/boolean/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/boolean/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/boolean/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/number/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/number/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/number/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/string/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/string/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/string/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/full-text-search/default.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/full-text-search/disable.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/object/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/object/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/object/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/boolean/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/boolean/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/boolean/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/number/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/number/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/number/seqscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/string/bitmapscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/string/indexscan.out
    expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/string/seqscan.out
    expected/compatibility/schema/jsonb/contain-v2/array/empty.out
    expected/compatibility/schema/jsonb/contain-v2/array/multiple-elements.out
    expected/compatibility/schema/jsonb/contain-v2/object/empty.out
    expected/compatibility/schema/jsonb/contain/array/empty.out
    expected/compatibility/schema/jsonb/contain/array/multiple-elements.out
    expected/compatibility/schema/jsonb/contain/object/empty.out
    expected/compatibility/schema/jsonb/invalid/multicolumn-index.out
    expected/compatibility/schema/jsonb/match-v2/element/bitmapscan.out
    expected/compatibility/schema/jsonb/match-v2/element/indexscan.out
    expected/compatibility/schema/jsonb/match-v2/element/seqscan.out
    expected/compatibility/schema/jsonb/match-v2/value/bitmapscan.out
    expected/compatibility/schema/jsonb/match-v2/value/indexscan.out
    expected/compatibility/schema/jsonb/match-v2/value/seqscan.out
    expected/compatibility/schema/jsonb/null/insert.out
    expected/compatibility/schema/jsonb/null/select.out
    expected/compatibility/schema/jsonb/query-v2/element/bitmapscan.out
    expected/compatibility/schema/jsonb/query-v2/element/indexscan.out
    expected/compatibility/schema/jsonb/query-v2/element/seqscan.out
    expected/compatibility/schema/jsonb/query-v2/value/bitmapscan.out
    expected/compatibility/schema/jsonb/query-v2/value/indexscan.out
    expected/compatibility/schema/jsonb/query-v2/value/seqscan.out
    expected/compatibility/schema/jsonb/script-v2/delete/multiple-values.out
    expected/compatibility/schema/jsonb/script-v2/element/boolean/bitmapscan.out
    expected/compatibility/schema/jsonb/script-v2/element/boolean/indexscan.out
    expected/compatibility/schema/jsonb/script-v2/element/boolean/seqscan.out
    expected/compatibility/schema/jsonb/script-v2/element/number/bitmapscan.out
    expected/compatibility/schema/jsonb/script-v2/element/number/indexscan.out
    expected/compatibility/schema/jsonb/script-v2/element/number/seqscan.out
    expected/compatibility/schema/jsonb/script-v2/element/string/bitmapscan.out
    expected/compatibility/schema/jsonb/script-v2/element/string/indexscan.out
    expected/compatibility/schema/jsonb/script-v2/element/string/seqscan.out
    expected/compatibility/schema/jsonb/script-v2/full-text-search/default.out
    expected/compatibility/schema/jsonb/script-v2/full-text-search/disable.out
    expected/compatibility/schema/jsonb/script-v2/object/bitmapscan.out
    expected/compatibility/schema/jsonb/script-v2/object/indexscan.out
    expected/compatibility/schema/jsonb/script-v2/object/seqscan.out
    expected/compatibility/schema/jsonb/script-v2/value/boolean/bitmapscan.out
    expected/compatibility/schema/jsonb/script-v2/value/boolean/indexscan.out
    expected/compatibility/schema/jsonb/script-v2/value/boolean/seqscan.out
    expected/compatibility/schema/jsonb/script-v2/value/number/bitmapscan.out
    expected/compatibility/schema/jsonb/script-v2/value/number/indexscan.out
    expected/compatibility/schema/jsonb/script-v2/value/number/seqscan.out
    expected/compatibility/schema/jsonb/script-v2/value/string/bitmapscan.out
    expected/compatibility/schema/jsonb/script-v2/value/string/indexscan.out
    expected/compatibility/schema/jsonb/script-v2/value/string/seqscan.out
    expected/compatibility/schema/jsonb/script/delete/multiple-values.out
    expected/compatibility/schema/jsonb/script/element/boolean/bitmapscan.out
    expected/compatibility/schema/jsonb/script/element/boolean/indexscan.out
    expected/compatibility/schema/jsonb/script/element/boolean/seqscan.out
    expected/compatibility/schema/jsonb/script/element/number/bitmapscan.out
    expected/compatibility/schema/jsonb/script/element/number/indexscan.out
    expected/compatibility/schema/jsonb/script/element/number/seqscan.out
    expected/compatibility/schema/jsonb/script/element/string/bitmapscan.out
    expected/compatibility/schema/jsonb/script/element/string/indexscan.out
    expected/compatibility/schema/jsonb/script/element/string/seqscan.out
    expected/compatibility/schema/jsonb/script/full-text-search/default.out
    expected/compatibility/schema/jsonb/script/full-text-search/disable.out
    expected/compatibility/schema/jsonb/script/object/bitmapscan.out
    expected/compatibility/schema/jsonb/script/object/indexscan.out
    expected/compatibility/schema/jsonb/script/object/seqscan.out
    expected/compatibility/schema/jsonb/script/value/boolean/bitmapscan.out
    expected/compatibility/schema/jsonb/script/value/boolean/indexscan.out
    expected/compatibility/schema/jsonb/script/value/boolean/seqscan.out
    expected/compatibility/schema/jsonb/script/value/number/bitmapscan.out
    expected/compatibility/schema/jsonb/script/value/number/indexscan.out
    expected/compatibility/schema/jsonb/script/value/number/seqscan.out
    expected/compatibility/schema/jsonb/script/value/string/bitmapscan.out
    expected/compatibility/schema/jsonb/script/value/string/indexscan.out
    expected/compatibility/schema/jsonb/script/value/string/seqscan.out
    expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/begin-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/begin-of-text/indexscan.out
    expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/begin-of-text/seqscan.out
    expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/dot/bitmapscan.out
    expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/dot/indexscan.out
    expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/dot/seqscan.out
    expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/end-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/end-of-text/indexscan.out
    expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/end-of-text/seqscan.out
    expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/exact/bitmapscan.out
    expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/exact/indexscan.out
    expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/exact/seqscan.out
    expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/partial/bitmapscan.out
    expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/partial/indexscan.out
    expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/partial/seqscan.out
    expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/begin-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/begin-of-text/indexscan.out
    expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/begin-of-text/seqscan.out
    expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/dot/bitmapscan.out
    expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/dot/indexscan.out
    expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/dot/seqscan.out
    expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/end-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/end-of-text/indexscan.out
    expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/end-of-text/seqscan.out
    expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/exact/bitmapscan.out
    expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/exact/indexscan.out
    expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/exact/seqscan.out
    expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/partial/bitmapscan.out
    expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/partial/indexscan.out
    expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/partial/seqscan.out
    expected/compatibility/schema/regexp/text/ilike-v2/begin-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/text/ilike-v2/begin-of-text/indexscan.out
    expected/compatibility/schema/regexp/text/ilike-v2/begin-of-text/seqscan.out
    expected/compatibility/schema/regexp/text/ilike-v2/end-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/text/ilike-v2/end-of-text/indexscan.out
    expected/compatibility/schema/regexp/text/ilike-v2/end-of-text/seqscan.out
    expected/compatibility/schema/regexp/text/ilike-v2/exact/bitmapscan.out
    expected/compatibility/schema/regexp/text/ilike-v2/exact/indexscan.out
    expected/compatibility/schema/regexp/text/ilike-v2/exact/seqscan.out
    expected/compatibility/schema/regexp/text/ilike-v2/partial/bitmapscan.out
    expected/compatibility/schema/regexp/text/ilike-v2/partial/indexscan.out
    expected/compatibility/schema/regexp/text/ilike-v2/partial/seqscan.out
    expected/compatibility/schema/regexp/text/ilike/begin-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/text/ilike/begin-of-text/indexscan.out
    expected/compatibility/schema/regexp/text/ilike/begin-of-text/seqscan.out
    expected/compatibility/schema/regexp/text/ilike/end-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/text/ilike/end-of-text/indexscan.out
    expected/compatibility/schema/regexp/text/ilike/end-of-text/seqscan.out
    expected/compatibility/schema/regexp/text/ilike/exact/bitmapscan.out
    expected/compatibility/schema/regexp/text/ilike/exact/indexscan.out
    expected/compatibility/schema/regexp/text/ilike/exact/seqscan.out
    expected/compatibility/schema/regexp/text/ilike/partial/bitmapscan.out
    expected/compatibility/schema/regexp/text/ilike/partial/indexscan.out
    expected/compatibility/schema/regexp/text/ilike/partial/seqscan.out
    expected/compatibility/schema/regexp/text/like-v2/begin-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/text/like-v2/begin-of-text/indexscan.out
    expected/compatibility/schema/regexp/text/like-v2/begin-of-text/seqscan.out
    expected/compatibility/schema/regexp/text/like-v2/end-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/text/like-v2/end-of-text/indexscan.out
    expected/compatibility/schema/regexp/text/like-v2/end-of-text/seqscan.out
    expected/compatibility/schema/regexp/text/like-v2/exact/bitmapscan.out
    expected/compatibility/schema/regexp/text/like-v2/exact/indexscan.out
    expected/compatibility/schema/regexp/text/like-v2/exact/seqscan.out
    expected/compatibility/schema/regexp/text/like-v2/partial/bitmapscan.out
    expected/compatibility/schema/regexp/text/like-v2/partial/indexscan.out
    expected/compatibility/schema/regexp/text/like-v2/partial/seqscan.out
    expected/compatibility/schema/regexp/text/like/begin-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/text/like/begin-of-text/indexscan.out
    expected/compatibility/schema/regexp/text/like/begin-of-text/seqscan.out
    expected/compatibility/schema/regexp/text/like/end-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/text/like/end-of-text/indexscan.out
    expected/compatibility/schema/regexp/text/like/end-of-text/seqscan.out
    expected/compatibility/schema/regexp/text/like/exact/bitmapscan.out
    expected/compatibility/schema/regexp/text/like/exact/indexscan.out
    expected/compatibility/schema/regexp/text/like/exact/seqscan.out
    expected/compatibility/schema/regexp/text/like/partial/bitmapscan.out
    expected/compatibility/schema/regexp/text/like/partial/indexscan.out
    expected/compatibility/schema/regexp/text/like/partial/seqscan.out
    expected/compatibility/schema/regexp/text/regexp-v2/begin-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/text/regexp-v2/begin-of-text/indexscan.out
    expected/compatibility/schema/regexp/text/regexp-v2/begin-of-text/seqscan.out
    expected/compatibility/schema/regexp/text/regexp-v2/dot/bitmapscan.out
    expected/compatibility/schema/regexp/text/regexp-v2/dot/indexscan.out
    expected/compatibility/schema/regexp/text/regexp-v2/dot/seqscan.out
    expected/compatibility/schema/regexp/text/regexp-v2/end-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/text/regexp-v2/end-of-text/indexscan.out
    expected/compatibility/schema/regexp/text/regexp-v2/end-of-text/seqscan.out
    expected/compatibility/schema/regexp/text/regexp-v2/exact/bitmapscan.out
    expected/compatibility/schema/regexp/text/regexp-v2/exact/indexscan.out
    expected/compatibility/schema/regexp/text/regexp-v2/exact/seqscan.out
    expected/compatibility/schema/regexp/text/regexp-v2/partial/bitmapscan.out
    expected/compatibility/schema/regexp/text/regexp-v2/partial/indexscan.out
    expected/compatibility/schema/regexp/text/regexp-v2/partial/seqscan.out
    expected/compatibility/schema/regexp/text/regexp/begin-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/text/regexp/begin-of-text/indexscan.out
    expected/compatibility/schema/regexp/text/regexp/begin-of-text/seqscan.out
    expected/compatibility/schema/regexp/text/regexp/dot/bitmapscan.out
    expected/compatibility/schema/regexp/text/regexp/dot/indexscan.out
    expected/compatibility/schema/regexp/text/regexp/dot/seqscan.out
    expected/compatibility/schema/regexp/text/regexp/end-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/text/regexp/end-of-text/indexscan.out
    expected/compatibility/schema/regexp/text/regexp/end-of-text/seqscan.out
    expected/compatibility/schema/regexp/text/regexp/exact/bitmapscan.out
    expected/compatibility/schema/regexp/text/regexp/exact/indexscan.out
    expected/compatibility/schema/regexp/text/regexp/exact/seqscan.out
    expected/compatibility/schema/regexp/text/regexp/partial/bitmapscan.out
    expected/compatibility/schema/regexp/text/regexp/partial/indexscan.out
    expected/compatibility/schema/regexp/text/regexp/partial/seqscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/begin-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/begin-of-text/indexscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/begin-of-text/seqscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/dot/bitmapscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/dot/indexscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/dot/seqscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/end-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/end-of-text/indexscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/end-of-text/seqscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/exact/bitmapscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/exact/indexscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/exact/seqscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/partial/bitmapscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/partial/indexscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/partial/seqscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/begin-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/begin-of-text/indexscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/begin-of-text/seqscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/dot/bitmapscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/dot/indexscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/dot/seqscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/end-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/end-of-text/indexscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/end-of-text/seqscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/exact/bitmapscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/exact/indexscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/exact/seqscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/partial/bitmapscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/partial/indexscan.out
    expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/partial/seqscan.out
    expected/compatibility/schema/regexp/varchar/regexp-v2/begin-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/varchar/regexp-v2/begin-of-text/indexscan.out
    expected/compatibility/schema/regexp/varchar/regexp-v2/begin-of-text/seqscan.out
    expected/compatibility/schema/regexp/varchar/regexp-v2/dot/bitmapscan.out
    expected/compatibility/schema/regexp/varchar/regexp-v2/dot/indexscan.out
    expected/compatibility/schema/regexp/varchar/regexp-v2/dot/seqscan.out
    expected/compatibility/schema/regexp/varchar/regexp-v2/end-of-text/bitmapscan.out
    expected/compatibility/schema/regexp/varchar/regexp-v2/end-of-text/indexscan.out
    expected/compatibility/schema/regexp/varchar/regexp-v2/end-of-text/seqscan.out
    expected/compatibility/schema/regexp/varchar/regexp-v2/exact/bitmapscan.out
    expected/compatibility/schema/regexp/varchar/regexp-v2/exact/indexscan.out
    expected/compatibility/schema/regexp/varchar/regexp-v2/exact/seqscan.out
    expected/compatibility/schema/regexp/varchar/regexp-v2/partial/bitmapscan.out
    expected/compatibility/schema/regexp/varchar/regexp-v2/partial/indexscan.out
    expected/compatibility/schema/regexp/varchar/regexp-v2/partial/seqscan.out
    expected/compatibility/schema/reindex/analyze.out
    expected/compatibility/schema/term-search/text-array/combined/bitmapscan.out
    expected/compatibility/schema/term-search/text-array/combined/seqscan.out
    expected/compatibility/schema/term-search/text-array/compatibility/v2/prefix-rk/bitmapscan.out
    expected/compatibility/schema/term-search/text-array/compatibility/v2/prefix-rk/indexscan.out
    expected/compatibility/schema/term-search/text-array/compatibility/v2/prefix-rk/seqscan.out
    expected/compatibility/schema/term-search/text-array/compatibility/v2/prefix/bitmapscan.out
    expected/compatibility/schema/term-search/text-array/compatibility/v2/prefix/indexscan.out
    expected/compatibility/schema/term-search/text-array/compatibility/v2/prefix/seqscan.out
    expected/compatibility/schema/term-search/text-array/prefix-in/bitmapscan.out
    expected/compatibility/schema/term-search/text-array/prefix-in/indexscan.out
    expected/compatibility/schema/term-search/text-array/prefix-in/seqscan-empty-array.out
    expected/compatibility/schema/term-search/text-array/prefix-in/seqscan.out
    expected/compatibility/schema/term-search/text-array/prefix-rk-in/bitmapscan.out
    expected/compatibility/schema/term-search/text-array/prefix-rk-in/indexscan.out
    expected/compatibility/schema/term-search/text-array/prefix-rk-in/seqscan.out
    expected/compatibility/schema/term-search/text-array/prefix-rk/bitmapscan.out
    expected/compatibility/schema/term-search/text-array/prefix-rk/indexscan.out
    expected/compatibility/schema/term-search/text-array/prefix-rk/seqscan.out
    expected/compatibility/schema/term-search/text-array/prefix/bitmapscan.out
    expected/compatibility/schema/term-search/text-array/prefix/indexscan.out
    expected/compatibility/schema/term-search/text-array/prefix/seqscan.out
    expected/compatibility/schema/term-search/text/combined/bitmapscan.out
    expected/compatibility/schema/term-search/text/combined/indexscan.out
    expected/compatibility/schema/term-search/text/combined/seqscan.out
    expected/compatibility/schema/term-search/text/options/tokenizer/ignored.out
    expected/compatibility/schema/term-search/text/prefix-in/bitmapscan.out
    expected/compatibility/schema/term-search/text/prefix-in/indexscan.out
    expected/compatibility/schema/term-search/text/prefix-in/seqscan.out
    expected/compatibility/schema/term-search/text/prefix-rk-in/bitmapscan.out
    expected/compatibility/schema/term-search/text/prefix-rk-in/indexscan.out
    expected/compatibility/schema/term-search/text/prefix-rk-in/seqscan.out
    expected/compatibility/schema/term-search/text/prefix-rk/bitmapscan.out
    expected/compatibility/schema/term-search/text/prefix-rk/indexscan.out
    expected/compatibility/schema/term-search/text/prefix-rk/seqscan.out
    expected/compatibility/schema/term-search/text/prefix/bitmapscan.out
    expected/compatibility/schema/term-search/text/prefix/indexscan.out
    expected/compatibility/schema/term-search/text/prefix/seqscan.out
    expected/compatibility/schema/term-search/varchar-array/compatibility/v1/contain-v2/bitmapscan.out
    expected/compatibility/schema/term-search/varchar-array/compatibility/v1/contain-v2/indexscan.out
    expected/compatibility/schema/term-search/varchar-array/compatibility/v1/contain-v2/seqscan.out
    expected/compatibility/schema/term-search/varchar-array/compatibility/v2/contain-v1/bitmapscan.out
    expected/compatibility/schema/term-search/varchar-array/compatibility/v2/contain-v1/indexscan.out
    expected/compatibility/schema/term-search/varchar-array/compatibility/v2/contain-v1/seqscan.out
    expected/compatibility/schema/term-search/varchar-array/contain-v2/bitmapscan.out
    expected/compatibility/schema/term-search/varchar-array/contain-v2/indexscan.out
    expected/compatibility/schema/term-search/varchar-array/contain-v2/seqscan.out
    expected/compatibility/schema/term-search/varchar-array/contain/bitmapscan.out
    expected/compatibility/schema/term-search/varchar-array/contain/indexscan.out
    expected/compatibility/schema/term-search/varchar-array/contain/seqscan.out
    expected/compatibility/schema/vacuum/tablespace.out.in
    sql/compatibility/schema/column-name/japanese.sql
    sql/compatibility/schema/compare/integer/multiple/greater-than-equal/multiple.sql
    sql/compatibility/schema/compare/integer/order-by-limit/asc.sql
    sql/compatibility/schema/compare/integer/order-by-limit/desc.sql
    sql/compatibility/schema/compare/integer/single/between/bitmapscan.sql
    sql/compatibility/schema/compare/integer/single/between/indexscan.sql
    sql/compatibility/schema/compare/integer/single/greater-than-equal/multiple.sql
    sql/compatibility/schema/compare/integer/single/in/bitmapscan.sql
    sql/compatibility/schema/compare/integer/single/in/indexscan.sql
    sql/compatibility/schema/compare/integer/single/less-than-equal/bitmapscan.sql
    sql/compatibility/schema/compare/integer/single/less-than-equal/indexscan.sql
    sql/compatibility/schema/compare/integer/single/less-than-equal/multiple.sql
    sql/compatibility/schema/compare/timestamp-with-time-zone/single/between/bitmapscan.sql
    sql/compatibility/schema/compare/timestamp-with-time-zone/single/between/indexscan.sql
    sql/compatibility/schema/compare/timestamp/single/between/bitmapscan.sql
    sql/compatibility/schema/compare/timestamp/single/between/indexscan.sql
    sql/compatibility/schema/compare/varchar/single/equal/bitmapscan.sql
    sql/compatibility/schema/compare/varchar/single/equal/indexscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v1/match-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v1/match-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v1/match-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2-question/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2-question/indexscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2-question/seqscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v2/match-v1/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v2/match-v1/indexscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v2/match-v1/seqscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v1/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v1/indexscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v1/seqscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v2/similar-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v2/similar-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text-array/compatibility/v2/similar-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text-array/match-in-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text-array/match-in-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text-array/match-in-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text-array/match-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text-array/match-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text-array/match-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text-array/match/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text-array/match/indexscan.sql
    sql/compatibility/schema/full-text-search/text-array/match/seqscan.sql
    sql/compatibility/schema/full-text-search/text-array/query-in-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text-array/query-in-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text-array/query-in-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text-array/query-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text-array/query-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text-array/query-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text-array/query/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text-array/query/indexscan.sql
    sql/compatibility/schema/full-text-search/text-array/query/seqscan.sql
    sql/compatibility/schema/full-text-search/text-array/script-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text-array/script-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text-array/script-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text-array/similar-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text-array/similar-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text-array/similar-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text/multiple/match/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/multiple/match/indexscan.sql
    sql/compatibility/schema/full-text-search/text/multiple/update.sql
    sql/compatibility/schema/full-text-search/text/single/and/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/and/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v1/match-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v1/match-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v1/match-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2-question/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2-question/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2-question/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/match-in-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/match-in-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/match-in-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/match-v1/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/match-v1/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/match-v1/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2-greater/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2-greater/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2-greater/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v1/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v1/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v1/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/similar-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/similar-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/compatibility/v2/similar-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike-v2/begin-of-text/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike-v2/begin-of-text/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike-v2/begin-of-text/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike-v2/end-of-text/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike-v2/end-of-text/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike-v2/end-of-text/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike-v2/partial/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike-v2/partial/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike-v2/partial/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike-v2/underscore/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike-v2/underscore/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike-v2/underscore/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike/begin-of-text/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike/begin-of-text/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike/end-of-text/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike/end-of-text/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike/partial/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike/partial/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike/underscore/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/ilike/underscore/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/like-v2/begin-of-text/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/like-v2/begin-of-text/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/like-v2/begin-of-text/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/like-v2/end-of-text/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/like-v2/end-of-text/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/like-v2/end-of-text/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/like-v2/partial/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/like-v2/partial/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/like-v2/partial/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/like-v2/underscore/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/like-v2/underscore/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/like-v2/underscore/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/like/begin-of-text/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/like/begin-of-text/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/like/end-of-text/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/like/end-of-text/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/like/partial/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/like/partial/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/like/underscore/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/like/underscore/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/match-in-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/match-in-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/match-in-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/match-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/match-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/match-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/match/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/match/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/query-in-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/query-in-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/query-in-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/query-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/query-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/query-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/query/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/query/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/script-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/script-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/script-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/similar-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/text/single/similar-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/text/single/similar-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/text/single/truncate.sql
    sql/compatibility/schema/full-text-search/text/single/update.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v1/match-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v1/match-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v1/match-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2-question/bitmapscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2-question/indexscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2-question/seqscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v2/match-v1/bitmapscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v2/match-v1/indexscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v2/match-v1/seqscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v1/bitmapscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v1/indexscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v1/seqscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v2/similar-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v2/similar-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/varchar/compatibility/v2/similar-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/varchar/match-in-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/varchar/match-in-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/varchar/match-in-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/varchar/match-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/varchar/match-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/varchar/match-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/varchar/query-in-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/varchar/query-in-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/varchar/query-in-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/varchar/query-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/varchar/query-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/varchar/query-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/varchar/script-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/varchar/script-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/varchar/script-v2/seqscan.sql
    sql/compatibility/schema/full-text-search/varchar/similar-v2/bitmapscan.sql
    sql/compatibility/schema/full-text-search/varchar/similar-v2/indexscan.sql
    sql/compatibility/schema/full-text-search/varchar/similar-v2/seqscan.sql
    sql/compatibility/schema/function/command/after-truncate.sql
    sql/compatibility/schema/function/command/arguments.sql
    sql/compatibility/schema/function/command/select.sql
    sql/compatibility/schema/function/flush/jsonb.sql
    sql/compatibility/schema/function/flush/multiple.sql
    sql/compatibility/schema/function/flush/single.sql
    sql/compatibility/schema/function/query-expand/normalize-with-primary-key.sql
    sql/compatibility/schema/function/query-expand/normalize.sql
    sql/compatibility/schema/function/score/and.sql
    sql/compatibility/schema/function/score/composite-primary-key/like.sql
    sql/compatibility/schema/function/score/composite-primary-key/match.sql
    sql/compatibility/schema/function/score/hot-updated.sql
    sql/compatibility/schema/function/score/or.sql
    sql/compatibility/schema/function/score/primary-key/not-head.sql
    sql/compatibility/schema/function/score/primary-key/text.sql
    sql/compatibility/schema/function/score/updated.sql
    sql/compatibility/schema/groonga-function/tuple-is-alive/and.sql
    sql/compatibility/schema/groonga-function/tuple-is-alive/or.sql
    sql/compatibility/schema/index-scan/kill-prior-tuple.sql
    sql/compatibility/schema/jsonb/compatibility/v1/match-v2/element/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/match-v2/element/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/match-v2/element/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/match-v2/value/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/match-v2/value/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/match-v2/value/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/query-v2-question/element/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/query-v2-question/element/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/query-v2-question/element/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/query-v2-question/value/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/query-v2-question/value/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/query-v2-question/value/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/query-v2/element/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/query-v2/element/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/query-v2/element/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/query-v2/value/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/query-v2/value/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/query-v2/value/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/delete/multiple-values.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/element/boolean/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/element/boolean/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/element/boolean/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/element/number/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/element/number/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/element/number/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/element/string/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/element/string/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/element/string/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/full-text-search/#default.sql#
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/full-text-search/default.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/full-text-search/disable.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/object/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/object/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/object/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/value/boolean/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/value/boolean/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/value/boolean/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/value/number/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/value/number/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/value/number/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/value/string/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/value/string/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v1/script-v2/value/string/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/query-v2/element/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/query-v2/element/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/query-v2/element/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/query-v2/value/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/query-v2/value/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/query-v2/value/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/delete/multiple-values.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/element/boolean/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/element/boolean/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/element/boolean/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/element/number/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/element/number/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/element/number/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/element/string/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/element/string/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/element/string/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/full-text-search/default.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/full-text-search/disable.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/object/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/object/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/object/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/value/boolean/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/value/boolean/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/value/boolean/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/value/number/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/value/number/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/value/number/seqscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/value/string/bitmapscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/value/string/indexscan.sql
    sql/compatibility/schema/jsonb/compatibility/v2/script-v1/value/string/seqscan.sql
    sql/compatibility/schema/jsonb/contain-v2/array/empty.sql
    sql/compatibility/schema/jsonb/contain-v2/array/multiple-elements.sql
    sql/compatibility/schema/jsonb/contain-v2/object/empty.sql
    sql/compatibility/schema/jsonb/contain/array/empty.sql
    sql/compatibility/schema/jsonb/contain/array/multiple-elements.sql
    sql/compatibility/schema/jsonb/contain/object/empty.sql
    sql/compatibility/schema/jsonb/invalid/multicolumn-index.sql
    sql/compatibility/schema/jsonb/match-v2/element/bitmapscan.sql
    sql/compatibility/schema/jsonb/match-v2/element/indexscan.sql
    sql/compatibility/schema/jsonb/match-v2/element/seqscan.sql
    sql/compatibility/schema/jsonb/match-v2/value/bitmapscan.sql
    sql/compatibility/schema/jsonb/match-v2/value/indexscan.sql
    sql/compatibility/schema/jsonb/match-v2/value/seqscan.sql
    sql/compatibility/schema/jsonb/null/insert.sql
    sql/compatibility/schema/jsonb/null/select.sql
    sql/compatibility/schema/jsonb/query-v2/element/bitmapscan.sql
    sql/compatibility/schema/jsonb/query-v2/element/indexscan.sql
    sql/compatibility/schema/jsonb/query-v2/element/seqscan.sql
    sql/compatibility/schema/jsonb/query-v2/value/bitmapscan.sql
    sql/compatibility/schema/jsonb/query-v2/value/indexscan.sql
    sql/compatibility/schema/jsonb/query-v2/value/seqscan.sql
    sql/compatibility/schema/jsonb/script-v2/delete/multiple-values.sql
    sql/compatibility/schema/jsonb/script-v2/element/boolean/bitmapscan.sql
    sql/compatibility/schema/jsonb/script-v2/element/boolean/indexscan.sql
    sql/compatibility/schema/jsonb/script-v2/element/boolean/seqscan.sql
    sql/compatibility/schema/jsonb/script-v2/element/number/bitmapscan.sql
    sql/compatibility/schema/jsonb/script-v2/element/number/indexscan.sql
    sql/compatibility/schema/jsonb/script-v2/element/number/seqscan.sql
    sql/compatibility/schema/jsonb/script-v2/element/string/bitmapscan.sql
    sql/compatibility/schema/jsonb/script-v2/element/string/indexscan.sql
    sql/compatibility/schema/jsonb/script-v2/element/string/seqscan.sql
    sql/compatibility/schema/jsonb/script-v2/full-text-search/default.sql
    sql/compatibility/schema/jsonb/script-v2/full-text-search/disable.sql
    sql/compatibility/schema/jsonb/script-v2/object/bitmapscan.sql
    sql/compatibility/schema/jsonb/script-v2/object/indexscan.sql
    sql/compatibility/schema/jsonb/script-v2/object/seqscan.sql
    sql/compatibility/schema/jsonb/script-v2/value/boolean/bitmapscan.sql
    sql/compatibility/schema/jsonb/script-v2/value/boolean/indexscan.sql
    sql/compatibility/schema/jsonb/script-v2/value/boolean/seqscan.sql
    sql/compatibility/schema/jsonb/script-v2/value/number/bitmapscan.sql
    sql/compatibility/schema/jsonb/script-v2/value/number/indexscan.sql
    sql/compatibility/schema/jsonb/script-v2/value/number/seqscan.sql
    sql/compatibility/schema/jsonb/script-v2/value/string/bitmapscan.sql
    sql/compatibility/schema/jsonb/script-v2/value/string/indexscan.sql
    sql/compatibility/schema/jsonb/script-v2/value/string/seqscan.sql
    sql/compatibility/schema/jsonb/script/delete/multiple-values.sql
    sql/compatibility/schema/jsonb/script/element/boolean/bitmapscan.sql
    sql/compatibility/schema/jsonb/script/element/boolean/indexscan.sql
    sql/compatibility/schema/jsonb/script/element/boolean/seqscan.sql
    sql/compatibility/schema/jsonb/script/element/number/bitmapscan.sql
    sql/compatibility/schema/jsonb/script/element/number/indexscan.sql
    sql/compatibility/schema/jsonb/script/element/number/seqscan.sql
    sql/compatibility/schema/jsonb/script/element/string/bitmapscan.sql
    sql/compatibility/schema/jsonb/script/element/string/indexscan.sql
    sql/compatibility/schema/jsonb/script/element/string/seqscan.sql
    sql/compatibility/schema/jsonb/script/full-text-search/default.sql
    sql/compatibility/schema/jsonb/script/full-text-search/disable.sql
    sql/compatibility/schema/jsonb/script/object/bitmapscan.sql
    sql/compatibility/schema/jsonb/script/object/indexscan.sql
    sql/compatibility/schema/jsonb/script/object/seqscan.sql
    sql/compatibility/schema/jsonb/script/value/boolean/bitmapscan.sql
    sql/compatibility/schema/jsonb/script/value/boolean/indexscan.sql
    sql/compatibility/schema/jsonb/script/value/boolean/seqscan.sql
    sql/compatibility/schema/jsonb/script/value/number/bitmapscan.sql
    sql/compatibility/schema/jsonb/script/value/number/indexscan.sql
    sql/compatibility/schema/jsonb/script/value/number/seqscan.sql
    sql/compatibility/schema/jsonb/script/value/string/bitmapscan.sql
    sql/compatibility/schema/jsonb/script/value/string/indexscan.sql
    sql/compatibility/schema/jsonb/script/value/string/seqscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/begin-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/begin-of-text/indexscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/begin-of-text/seqscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/dot/bitmapscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/dot/indexscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/dot/seqscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/end-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/end-of-text/indexscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/end-of-text/seqscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/exact/bitmapscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/exact/indexscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/exact/seqscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/partial/bitmapscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/partial/indexscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/partial/seqscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/begin-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/begin-of-text/indexscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/begin-of-text/seqscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/dot/bitmapscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/dot/indexscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/dot/seqscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/end-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/end-of-text/indexscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/end-of-text/seqscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/exact/bitmapscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/exact/indexscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/exact/seqscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/partial/bitmapscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/partial/indexscan.sql
    sql/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/partial/seqscan.sql
    sql/compatibility/schema/regexp/text/ilike-v2/begin-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/text/ilike-v2/begin-of-text/indexscan.sql
    sql/compatibility/schema/regexp/text/ilike-v2/begin-of-text/seqscan.sql
    sql/compatibility/schema/regexp/text/ilike-v2/end-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/text/ilike-v2/end-of-text/indexscan.sql
    sql/compatibility/schema/regexp/text/ilike-v2/end-of-text/seqscan.sql
    sql/compatibility/schema/regexp/text/ilike-v2/exact/bitmapscan.sql
    sql/compatibility/schema/regexp/text/ilike-v2/exact/indexscan.sql
    sql/compatibility/schema/regexp/text/ilike-v2/exact/seqscan.sql
    sql/compatibility/schema/regexp/text/ilike-v2/partial/bitmapscan.sql
    sql/compatibility/schema/regexp/text/ilike-v2/partial/indexscan.sql
    sql/compatibility/schema/regexp/text/ilike-v2/partial/seqscan.sql
    sql/compatibility/schema/regexp/text/ilike/begin-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/text/ilike/begin-of-text/indexscan.sql
    sql/compatibility/schema/regexp/text/ilike/begin-of-text/seqscan.sql
    sql/compatibility/schema/regexp/text/ilike/end-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/text/ilike/end-of-text/indexscan.sql
    sql/compatibility/schema/regexp/text/ilike/end-of-text/seqscan.sql
    sql/compatibility/schema/regexp/text/ilike/exact/bitmapscan.sql
    sql/compatibility/schema/regexp/text/ilike/exact/indexscan.sql
    sql/compatibility/schema/regexp/text/ilike/exact/seqscan.sql
    sql/compatibility/schema/regexp/text/ilike/partial/bitmapscan.sql
    sql/compatibility/schema/regexp/text/ilike/partial/indexscan.sql
    sql/compatibility/schema/regexp/text/ilike/partial/seqscan.sql
    sql/compatibility/schema/regexp/text/like-v2/begin-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/text/like-v2/begin-of-text/indexscan.sql
    sql/compatibility/schema/regexp/text/like-v2/begin-of-text/seqscan.sql
    sql/compatibility/schema/regexp/text/like-v2/end-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/text/like-v2/end-of-text/indexscan.sql
    sql/compatibility/schema/regexp/text/like-v2/end-of-text/seqscan.sql
    sql/compatibility/schema/regexp/text/like-v2/exact/bitmapscan.sql
    sql/compatibility/schema/regexp/text/like-v2/exact/indexscan.sql
    sql/compatibility/schema/regexp/text/like-v2/exact/seqscan.sql
    sql/compatibility/schema/regexp/text/like-v2/partial/bitmapscan.sql
    sql/compatibility/schema/regexp/text/like-v2/partial/indexscan.sql
    sql/compatibility/schema/regexp/text/like-v2/partial/seqscan.sql
    sql/compatibility/schema/regexp/text/like/begin-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/text/like/begin-of-text/indexscan.sql
    sql/compatibility/schema/regexp/text/like/begin-of-text/seqscan.sql
    sql/compatibility/schema/regexp/text/like/end-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/text/like/end-of-text/indexscan.sql
    sql/compatibility/schema/regexp/text/like/end-of-text/seqscan.sql
    sql/compatibility/schema/regexp/text/like/exact/bitmapscan.sql
    sql/compatibility/schema/regexp/text/like/exact/indexscan.sql
    sql/compatibility/schema/regexp/text/like/exact/seqscan.sql
    sql/compatibility/schema/regexp/text/like/partial/bitmapscan.sql
    sql/compatibility/schema/regexp/text/like/partial/indexscan.sql
    sql/compatibility/schema/regexp/text/like/partial/seqscan.sql
    sql/compatibility/schema/regexp/text/regexp-v2/begin-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/text/regexp-v2/begin-of-text/indexscan.sql
    sql/compatibility/schema/regexp/text/regexp-v2/begin-of-text/seqscan.sql
    sql/compatibility/schema/regexp/text/regexp-v2/dot/bitmapscan.sql
    sql/compatibility/schema/regexp/text/regexp-v2/dot/indexscan.sql
    sql/compatibility/schema/regexp/text/regexp-v2/dot/seqscan.sql
    sql/compatibility/schema/regexp/text/regexp-v2/end-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/text/regexp-v2/end-of-text/indexscan.sql
    sql/compatibility/schema/regexp/text/regexp-v2/end-of-text/seqscan.sql
    sql/compatibility/schema/regexp/text/regexp-v2/exact/bitmapscan.sql
    sql/compatibility/schema/regexp/text/regexp-v2/exact/indexscan.sql
    sql/compatibility/schema/regexp/text/regexp-v2/exact/seqscan.sql
    sql/compatibility/schema/regexp/text/regexp-v2/partial/bitmapscan.sql
    sql/compatibility/schema/regexp/text/regexp-v2/partial/indexscan.sql
    sql/compatibility/schema/regexp/text/regexp-v2/partial/seqscan.sql
    sql/compatibility/schema/regexp/text/regexp/begin-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/text/regexp/begin-of-text/indexscan.sql
    sql/compatibility/schema/regexp/text/regexp/begin-of-text/seqscan.sql
    sql/compatibility/schema/regexp/text/regexp/dot/bitmapscan.sql
    sql/compatibility/schema/regexp/text/regexp/dot/indexscan.sql
    sql/compatibility/schema/regexp/text/regexp/dot/seqscan.sql
    sql/compatibility/schema/regexp/text/regexp/end-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/text/regexp/end-of-text/indexscan.sql
    sql/compatibility/schema/regexp/text/regexp/end-of-text/seqscan.sql
    sql/compatibility/schema/regexp/text/regexp/exact/bitmapscan.sql
    sql/compatibility/schema/regexp/text/regexp/exact/indexscan.sql
    sql/compatibility/schema/regexp/text/regexp/exact/seqscan.sql
    sql/compatibility/schema/regexp/text/regexp/partial/bitmapscan.sql
    sql/compatibility/schema/regexp/text/regexp/partial/indexscan.sql
    sql/compatibility/schema/regexp/text/regexp/partial/seqscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/begin-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/begin-of-text/indexscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/begin-of-text/seqscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/dot/bitmapscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/dot/indexscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/dot/seqscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/end-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/end-of-text/indexscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/end-of-text/seqscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/exact/bitmapscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/exact/indexscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/exact/seqscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/partial/bitmapscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/partial/indexscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/partial/seqscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/begin-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/begin-of-text/indexscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/begin-of-text/seqscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/dot/bitmapscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/dot/indexscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/dot/seqscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/end-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/end-of-text/indexscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/end-of-text/seqscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/exact/bitmapscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/exact/indexscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/exact/seqscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/partial/bitmapscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/partial/indexscan.sql
    sql/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/partial/seqscan.sql
    sql/compatibility/schema/regexp/varchar/regexp-v2/begin-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/varchar/regexp-v2/begin-of-text/indexscan.sql
    sql/compatibility/schema/regexp/varchar/regexp-v2/begin-of-text/seqscan.sql
    sql/compatibility/schema/regexp/varchar/regexp-v2/dot/bitmapscan.sql
    sql/compatibility/schema/regexp/varchar/regexp-v2/dot/indexscan.sql
    sql/compatibility/schema/regexp/varchar/regexp-v2/dot/seqscan.sql
    sql/compatibility/schema/regexp/varchar/regexp-v2/end-of-text/bitmapscan.sql
    sql/compatibility/schema/regexp/varchar/regexp-v2/end-of-text/indexscan.sql
    sql/compatibility/schema/regexp/varchar/regexp-v2/end-of-text/seqscan.sql
    sql/compatibility/schema/regexp/varchar/regexp-v2/exact/bitmapscan.sql
    sql/compatibility/schema/regexp/varchar/regexp-v2/exact/indexscan.sql
    sql/compatibility/schema/regexp/varchar/regexp-v2/exact/seqscan.sql
    sql/compatibility/schema/regexp/varchar/regexp-v2/partial/bitmapscan.sql
    sql/compatibility/schema/regexp/varchar/regexp-v2/partial/indexscan.sql
    sql/compatibility/schema/regexp/varchar/regexp-v2/partial/seqscan.sql
    sql/compatibility/schema/reindex/analyze.sql
    sql/compatibility/schema/term-search/text-array/combined/bitmapscan.sql
    sql/compatibility/schema/term-search/text-array/compatibility/v2/prefix-rk/bitmapscan.sql
    sql/compatibility/schema/term-search/text-array/compatibility/v2/prefix-rk/indexscan.sql
    sql/compatibility/schema/term-search/text-array/compatibility/v2/prefix/bitmapscan.sql
    sql/compatibility/schema/term-search/text-array/compatibility/v2/prefix/indexscan.sql
    sql/compatibility/schema/term-search/text-array/prefix-in/bitmapscan.sql
    sql/compatibility/schema/term-search/text-array/prefix-in/indexscan.sql
    sql/compatibility/schema/term-search/text-array/prefix-rk-in/bitmapscan.sql
    sql/compatibility/schema/term-search/text-array/prefix-rk-in/indexscan.sql
    sql/compatibility/schema/term-search/text-array/prefix-rk/bitmapscan.sql
    sql/compatibility/schema/term-search/text-array/prefix-rk/indexscan.sql
    sql/compatibility/schema/term-search/text-array/prefix/bitmapscan.sql
    sql/compatibility/schema/term-search/text-array/prefix/indexscan.sql
    sql/compatibility/schema/term-search/text/combined/bitmapscan.sql
    sql/compatibility/schema/term-search/text/combined/indexscan.sql
    sql/compatibility/schema/term-search/text/options/tokenizer/ignored.sql
    sql/compatibility/schema/term-search/text/prefix-in/bitmapscan.sql
    sql/compatibility/schema/term-search/text/prefix-in/indexscan.sql
    sql/compatibility/schema/term-search/text/prefix-rk-in/bitmapscan.sql
    sql/compatibility/schema/term-search/text/prefix-rk-in/indexscan.sql
    sql/compatibility/schema/term-search/text/prefix-rk/bitmapscan.sql
    sql/compatibility/schema/term-search/text/prefix-rk/indexscan.sql
    sql/compatibility/schema/term-search/text/prefix/bitmapscan.sql
    sql/compatibility/schema/term-search/text/prefix/indexscan.sql
    sql/compatibility/schema/term-search/varchar-array/compatibility/v1/contain-v2/bitmapscan.sql
    sql/compatibility/schema/term-search/varchar-array/compatibility/v1/contain-v2/indexscan.sql
    sql/compatibility/schema/term-search/varchar-array/compatibility/v2/contain-v1/bitmapscan.sql
    sql/compatibility/schema/term-search/varchar-array/compatibility/v2/contain-v1/indexscan.sql
    sql/compatibility/schema/term-search/varchar-array/contain-v2/bitmapscan.sql
    sql/compatibility/schema/term-search/varchar-array/contain-v2/indexscan.sql
    sql/compatibility/schema/term-search/varchar-array/contain-v2/seqscan.sql
    sql/compatibility/schema/term-search/varchar-array/contain/bitmapscan.sql
    sql/compatibility/schema/term-search/varchar-array/contain/indexscan.sql
    sql/compatibility/schema/vacuum/tablespace.sql.in
  Modified files:
    pgroonga.mk

  Added: expected/compatibility/schema/column-name/japanese.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/column-name/japanese.out    2017-08-10 14:49:35 +0900 (7a3827a)
@@ -0,0 +1,21 @@
+CREATE TABLE メモ (
+  id integer,
+  コンテンツ text
+);
+INSERT INTO メモ VALUES (1, 'PostgreSQLはRDBMSです。');
+INSERT INTO メモ VALUES (2, 'Groongaは高速な全文検索エンジンです。');
+INSERT INTO メモ VALUES (3, 'PGroongaはGroongaを使うPostgreSQLの拡張機能です。');
+CREATE INDEX 全文検索索引 ON メモ
+  USING pgroonga (コンテンツ pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, コンテンツ
+  FROM メモ
+ WHERE コンテンツ %% '全文検索';
+ id |              コンテンツ               
+----+---------------------------------------
+  2 | Groongaは高速な全文検索エンジンです。
+(1 row)
+
+DROP TABLE メモ;

  Added: expected/compatibility/schema/compare/integer/multiple/greater-than-equal/multiple.out (+35 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/compare/integer/multiple/greater-than-equal/multiple.out    2017-08-10 14:49:35 +0900 (ed35c76)
@@ -0,0 +1,35 @@
+CREATE TABLE numbers (
+  number1 integer,
+  number2 integer
+);
+INSERT INTO numbers VALUES (2,  20);
+INSERT INTO numbers VALUES (7,  70);
+INSERT INTO numbers VALUES (6,  60);
+INSERT INTO numbers VALUES (4,  40);
+INSERT INTO numbers VALUES (5,  50);
+INSERT INTO numbers VALUES (8,  80);
+INSERT INTO numbers VALUES (1,  10);
+INSERT INTO numbers VALUES (10, 100);
+INSERT INTO numbers VALUES (3,  30);
+INSERT INTO numbers VALUES (9,  90);
+CREATE INDEX grnindex ON numbers
+  USING pgroonga (number1 pgroonga.int4_ops,
+                  number2 pgroonga.int4_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT number1, number2
+  FROM numbers
+ WHERE number1 >= 3 AND number2 >= 50
+ ORDER BY number1 ASC;
+ number1 | number2 
+---------+---------
+       5 |      50
+       6 |      60
+       7 |      70
+       8 |      80
+       9 |      90
+      10 |     100
+(6 rows)
+
+DROP TABLE numbers;

  Added: expected/compatibility/schema/compare/integer/order-by-limit/asc.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/compare/integer/order-by-limit/asc.out    2017-08-10 14:49:35 +0900 (f354c1c)
@@ -0,0 +1,31 @@
+CREATE TABLE ids (
+  id integer
+);
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (7);
+INSERT INTO ids VALUES (6);
+INSERT INTO ids VALUES (4);
+INSERT INTO ids VALUES (5);
+INSERT INTO ids VALUES (8);
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (10);
+INSERT INTO ids VALUES (3);
+INSERT INTO ids VALUES (9);
+CREATE INDEX grnindex ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SELECT id
+  FROM ids
+  ORDER BY id ASC
+  LIMIT 5;
+ id 
+----
+  1
+  2
+  3
+  4
+  5
+(5 rows)
+
+DROP TABLE ids;

  Added: expected/compatibility/schema/compare/integer/order-by-limit/desc.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/compare/integer/order-by-limit/desc.out    2017-08-10 14:49:35 +0900 (dd5af12)
@@ -0,0 +1,31 @@
+CREATE TABLE ids (
+  id integer
+);
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (7);
+INSERT INTO ids VALUES (6);
+INSERT INTO ids VALUES (4);
+INSERT INTO ids VALUES (5);
+INSERT INTO ids VALUES (8);
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (10);
+INSERT INTO ids VALUES (3);
+INSERT INTO ids VALUES (9);
+CREATE INDEX grnindex ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SELECT id
+  FROM ids
+  ORDER BY id DESC
+  LIMIT 5;
+ id 
+----
+ 10
+  9
+  8
+  7
+  6
+(5 rows)
+
+DROP TABLE ids;

  Added: expected/compatibility/schema/compare/integer/single/between/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/compare/integer/single/between/bitmapscan.out    2017-08-10 14:49:35 +0900 (ca973c3)
@@ -0,0 +1,34 @@
+CREATE TABLE ids (
+  id integer
+);
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (7);
+INSERT INTO ids VALUES (6);
+INSERT INTO ids VALUES (4);
+INSERT INTO ids VALUES (5);
+INSERT INTO ids VALUES (8);
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (10);
+INSERT INTO ids VALUES (3);
+INSERT INTO ids VALUES (9);
+CREATE INDEX grnindex ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id
+  FROM ids
+ WHERE id BETWEEN 3 AND 9
+ ORDER BY id ASC;
+ id 
+----
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+(7 rows)
+
+DROP TABLE ids;

  Added: expected/compatibility/schema/compare/integer/single/between/indexscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/compare/integer/single/between/indexscan.out    2017-08-10 14:49:35 +0900 (8e3d28e)
@@ -0,0 +1,34 @@
+CREATE TABLE ids (
+  id integer
+);
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (7);
+INSERT INTO ids VALUES (6);
+INSERT INTO ids VALUES (4);
+INSERT INTO ids VALUES (5);
+INSERT INTO ids VALUES (8);
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (10);
+INSERT INTO ids VALUES (3);
+INSERT INTO ids VALUES (9);
+CREATE INDEX grnindex ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id
+  FROM ids
+ WHERE id BETWEEN 3 AND 9
+ ORDER BY id ASC;
+ id 
+----
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+(7 rows)
+
+DROP TABLE ids;

  Added: expected/compatibility/schema/compare/integer/single/greater-than-equal/multiple.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/compare/integer/single/greater-than-equal/multiple.out    2017-08-10 14:49:35 +0900 (0e06050)
@@ -0,0 +1,33 @@
+CREATE TABLE ids (
+  id integer
+);
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (7);
+INSERT INTO ids VALUES (6);
+INSERT INTO ids VALUES (4);
+INSERT INTO ids VALUES (5);
+INSERT INTO ids VALUES (8);
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (10);
+INSERT INTO ids VALUES (3);
+INSERT INTO ids VALUES (9);
+CREATE INDEX grnindex ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id
+  FROM ids
+ WHERE id >= 3 AND id >= 5
+ ORDER BY id ASC;
+ id 
+----
+  5
+  6
+  7
+  8
+  9
+ 10
+(6 rows)
+
+DROP TABLE ids;

  Added: expected/compatibility/schema/compare/integer/single/in/bitmapscan.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/compare/integer/single/in/bitmapscan.out    2017-08-10 14:49:35 +0900 (4b4ef0b)
@@ -0,0 +1,30 @@
+CREATE TABLE ids (
+  id integer
+);
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (7);
+INSERT INTO ids VALUES (6);
+INSERT INTO ids VALUES (4);
+INSERT INTO ids VALUES (5);
+INSERT INTO ids VALUES (8);
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (10);
+INSERT INTO ids VALUES (3);
+INSERT INTO ids VALUES (9);
+CREATE INDEX pgroonga_index ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id
+  FROM ids
+ WHERE id IN (6, 1, 7)
+ ORDER BY id ASC;
+ id 
+----
+  1
+  6
+  7
+(3 rows)
+
+DROP TABLE ids;

  Added: expected/compatibility/schema/compare/integer/single/in/indexscan.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/compare/integer/single/in/indexscan.out    2017-08-10 14:49:35 +0900 (bd5bb3f)
@@ -0,0 +1,30 @@
+CREATE TABLE ids (
+  id integer
+);
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (7);
+INSERT INTO ids VALUES (6);
+INSERT INTO ids VALUES (4);
+INSERT INTO ids VALUES (5);
+INSERT INTO ids VALUES (8);
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (10);
+INSERT INTO ids VALUES (3);
+INSERT INTO ids VALUES (9);
+CREATE INDEX pgroonga_index ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id
+  FROM ids
+ WHERE id IN (6, 1, 7)
+ ORDER BY id ASC;
+ id 
+----
+  1
+  6
+  7
+(3 rows)
+
+DROP TABLE ids;

  Added: expected/compatibility/schema/compare/integer/single/less-than-equal/bitmapscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/compare/integer/single/less-than-equal/bitmapscan.out    2017-08-10 14:49:35 +0900 (2f75ef1)
@@ -0,0 +1,21 @@
+CREATE TABLE ids (
+  id integer
+);
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (3);
+CREATE INDEX grnindex ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id
+  FROM ids
+ WHERE id <= 2;
+ id 
+----
+  1
+  2
+(2 rows)
+
+DROP TABLE ids;

  Added: expected/compatibility/schema/compare/integer/single/less-than-equal/indexscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/compare/integer/single/less-than-equal/indexscan.out    2017-08-10 14:49:35 +0900 (0090946)
@@ -0,0 +1,21 @@
+CREATE TABLE ids (
+  id integer
+);
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (3);
+CREATE INDEX grnindex ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id
+  FROM ids
+ WHERE id <= 2;
+ id 
+----
+  1
+  2
+(2 rows)
+
+DROP TABLE ids;

  Added: expected/compatibility/schema/compare/integer/single/less-than-equal/multiple.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/compare/integer/single/less-than-equal/multiple.out    2017-08-10 14:49:35 +0900 (8c4cbed)
@@ -0,0 +1,30 @@
+CREATE TABLE ids (
+  id integer
+);
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (7);
+INSERT INTO ids VALUES (6);
+INSERT INTO ids VALUES (4);
+INSERT INTO ids VALUES (5);
+INSERT INTO ids VALUES (8);
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (10);
+INSERT INTO ids VALUES (3);
+INSERT INTO ids VALUES (9);
+CREATE INDEX grnindex ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id
+  FROM ids
+ WHERE id <= 5 AND id <= 3
+ ORDER BY id ASC;
+ id 
+----
+  1
+  2
+  3
+(3 rows)
+
+DROP TABLE ids;

  Added: expected/compatibility/schema/compare/timestamp-with-time-zone/single/between/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/compare/timestamp-with-time-zone/single/between/bitmapscan.out    2017-08-10 14:49:35 +0900 (6e2f2f7)
@@ -0,0 +1,34 @@
+CREATE TABLE logs (
+  created_at timestamp with time zone
+);
+INSERT INTO logs VALUES ('2015-02-14 10:44:10+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:09+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:02+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:04+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:01+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:05+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:07+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:06+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:03+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:08+09:00');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (created_at pgroonga.timestamptz_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT created_at
+  FROM logs
+ WHERE created_at BETWEEN '2015-02-14 10:44:03+09:00' AND '2015-02-14 10:44:09+09:00'
+ ORDER BY created_at ASC;
+          created_at          
+------------------------------
+ Fri Feb 13 17:44:03 2015 PST
+ Fri Feb 13 17:44:04 2015 PST
+ Fri Feb 13 17:44:05 2015 PST
+ Fri Feb 13 17:44:06 2015 PST
+ Fri Feb 13 17:44:07 2015 PST
+ Fri Feb 13 17:44:08 2015 PST
+ Fri Feb 13 17:44:09 2015 PST
+(7 rows)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/compare/timestamp-with-time-zone/single/between/indexscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/compare/timestamp-with-time-zone/single/between/indexscan.out    2017-08-10 14:49:35 +0900 (39e0789)
@@ -0,0 +1,34 @@
+CREATE TABLE logs (
+  created_at timestamp with time zone
+);
+INSERT INTO logs VALUES ('2015-02-14 10:44:10+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:09+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:02+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:04+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:01+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:05+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:07+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:06+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:03+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:08+09:00');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (created_at pgroonga.timestamptz_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT created_at
+  FROM logs
+ WHERE created_at BETWEEN '2015-02-14 10:44:03+09:00' AND '2015-02-14 10:44:09+09:00'
+ ORDER BY created_at ASC;
+          created_at          
+------------------------------
+ Fri Feb 13 17:44:03 2015 PST
+ Fri Feb 13 17:44:04 2015 PST
+ Fri Feb 13 17:44:05 2015 PST
+ Fri Feb 13 17:44:06 2015 PST
+ Fri Feb 13 17:44:07 2015 PST
+ Fri Feb 13 17:44:08 2015 PST
+ Fri Feb 13 17:44:09 2015 PST
+(7 rows)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/compare/timestamp/single/between/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/compare/timestamp/single/between/bitmapscan.out    2017-08-10 14:49:35 +0900 (711e09f)
@@ -0,0 +1,34 @@
+CREATE TABLE logs (
+  created_at timestamp
+);
+INSERT INTO logs VALUES ('2015-02-14 10:44:10');
+INSERT INTO logs VALUES ('2015-02-14 10:44:09');
+INSERT INTO logs VALUES ('2015-02-14 10:44:02');
+INSERT INTO logs VALUES ('2015-02-14 10:44:04');
+INSERT INTO logs VALUES ('2015-02-14 10:44:01');
+INSERT INTO logs VALUES ('2015-02-14 10:44:05');
+INSERT INTO logs VALUES ('2015-02-14 10:44:07');
+INSERT INTO logs VALUES ('2015-02-14 10:44:06');
+INSERT INTO logs VALUES ('2015-02-14 10:44:03');
+INSERT INTO logs VALUES ('2015-02-14 10:44:08');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (created_at pgroonga.timestamp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT created_at
+  FROM logs
+ WHERE created_at BETWEEN '2015-02-14 10:44:03' AND '2015-02-14 10:44:09'
+ ORDER BY created_at ASC;
+        created_at        
+--------------------------
+ Sat Feb 14 10:44:03 2015
+ Sat Feb 14 10:44:04 2015
+ Sat Feb 14 10:44:05 2015
+ Sat Feb 14 10:44:06 2015
+ Sat Feb 14 10:44:07 2015
+ Sat Feb 14 10:44:08 2015
+ Sat Feb 14 10:44:09 2015
+(7 rows)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/compare/timestamp/single/between/indexscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/compare/timestamp/single/between/indexscan.out    2017-08-10 14:49:35 +0900 (e60d7e0)
@@ -0,0 +1,34 @@
+CREATE TABLE logs (
+  created_at timestamp
+);
+INSERT INTO logs VALUES ('2015-02-14 10:44:10');
+INSERT INTO logs VALUES ('2015-02-14 10:44:09');
+INSERT INTO logs VALUES ('2015-02-14 10:44:02');
+INSERT INTO logs VALUES ('2015-02-14 10:44:04');
+INSERT INTO logs VALUES ('2015-02-14 10:44:01');
+INSERT INTO logs VALUES ('2015-02-14 10:44:05');
+INSERT INTO logs VALUES ('2015-02-14 10:44:07');
+INSERT INTO logs VALUES ('2015-02-14 10:44:06');
+INSERT INTO logs VALUES ('2015-02-14 10:44:03');
+INSERT INTO logs VALUES ('2015-02-14 10:44:08');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (created_at pgroonga.timestamp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT created_at
+  FROM logs
+ WHERE created_at BETWEEN '2015-02-14 10:44:03' AND '2015-02-14 10:44:09'
+ ORDER BY created_at ASC;
+        created_at        
+--------------------------
+ Sat Feb 14 10:44:03 2015
+ Sat Feb 14 10:44:04 2015
+ Sat Feb 14 10:44:05 2015
+ Sat Feb 14 10:44:06 2015
+ Sat Feb 14 10:44:07 2015
+ Sat Feb 14 10:44:08 2015
+ Sat Feb 14 10:44:09 2015
+(7 rows)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/compare/varchar/single/equal/bitmapscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/compare/varchar/single/equal/bitmapscan.out    2017-08-10 14:49:35 +0900 (8f0d861)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  title varchar(1023)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (title pgroonga.varchar_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, title
+  FROM memos
+ WHERE title = 'Groonga';
+ id |  title  
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/compare/varchar/single/equal/indexscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/compare/varchar/single/equal/indexscan.out    2017-08-10 14:49:35 +0900 (356c649)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  title varchar(1023)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (title pgroonga.varchar_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, title
+  FROM memos
+ WHERE title = 'Groonga';
+ id |  title  
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v1/match-v2/bitmapscan.out (+42 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v1/match-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (e343ff6)
@@ -0,0 +1,42 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+                    QUERY PLAN                     
+---------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (contents &@ 'Groonga'::text)
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (contents &@ 'Groonga'::text)
+(4 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+  title   |                                                         contents                                                         
+----------+--------------------------------------------------------------------------------------------------------------------------
+ Groonga  | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PGroonga | {"PGroonga is an OSS PostgreSQL extension","PGroonga adds full full-text search support based on Groonga to PostgreSQL"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v1/match-v2/indexscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v1/match-v2/indexscan.out    2017-08-10 14:49:35 +0900 (e28afb5)
@@ -0,0 +1,40 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+                   QUERY PLAN                   
+------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (contents &@ 'Groonga'::text)
+(2 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+  title   |                                                         contents                                                         
+----------+--------------------------------------------------------------------------------------------------------------------------
+ Groonga  | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PGroonga | {"PGroonga is an OSS PostgreSQL extension","PGroonga adds full full-text search support based on Groonga to PostgreSQL"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v1/match-v2/seqscan.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v1/match-v2/seqscan.out    2017-08-10 14:49:35 +0900 (091842b)
@@ -0,0 +1,30 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+  title   |                                                         contents                                                         
+----------+--------------------------------------------------------------------------------------------------------------------------
+ Groonga  | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PGroonga | {"PGroonga is an OSS PostgreSQL extension","PGroonga adds full full-text search support based on Groonga to PostgreSQL"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2-question/bitmapscan.out (+42 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2-question/bitmapscan.out    2017-08-10 14:49:35 +0900 (fa3b330)
@@ -0,0 +1,42 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+                        QUERY PLAN                         
+-----------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (contents &? 'rdbms OR engine'::text)
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (contents &? 'rdbms OR engine'::text)
+(4 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2-question/indexscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2-question/indexscan.out    2017-08-10 14:49:35 +0900 (fe3f85e)
@@ -0,0 +1,40 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+                     QUERY PLAN                      
+-----------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (contents &? 'rdbms OR engine'::text)
+(2 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2-question/seqscan.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2-question/seqscan.out    2017-08-10 14:49:35 +0900 (56921aa)
@@ -0,0 +1,30 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2/bitmapscan.out (+42 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (09bde68)
@@ -0,0 +1,42 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+                         QUERY PLAN                         
+------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (contents &@~ 'rdbms OR engine'::text)
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (contents &@~ 'rdbms OR engine'::text)
+(4 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2/indexscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2/indexscan.out    2017-08-10 14:49:35 +0900 (22bc38e)
@@ -0,0 +1,40 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+                      QUERY PLAN                      
+------------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (contents &@~ 'rdbms OR engine'::text)
+(2 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2/seqscan.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2/seqscan.out    2017-08-10 14:49:35 +0900 (6a27e4d)
@@ -0,0 +1,30 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v2/match-v1/bitmapscan.out (+42 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v2/match-v1/bitmapscan.out    2017-08-10 14:49:35 +0900 (fa58bba)
@@ -0,0 +1,42 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents %% 'Groonga';
+                    QUERY PLAN                     
+---------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (contents %% 'Groonga'::text)
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (contents %% 'Groonga'::text)
+(4 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents %% 'Groonga';
+  title   |                                                         contents                                                         
+----------+--------------------------------------------------------------------------------------------------------------------------
+ Groonga  | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PGroonga | {"PGroonga is an OSS PostgreSQL extension","PGroonga adds full full-text search support based on Groonga to PostgreSQL"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v2/match-v1/indexscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v2/match-v1/indexscan.out    2017-08-10 14:49:35 +0900 (92b10ee)
@@ -0,0 +1,40 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents %% 'Groonga';
+                   QUERY PLAN                   
+------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (contents %% 'Groonga'::text)
+(2 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents %% 'Groonga';
+  title   |                                                         contents                                                         
+----------+--------------------------------------------------------------------------------------------------------------------------
+ Groonga  | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PGroonga | {"PGroonga is an OSS PostgreSQL extension","PGroonga adds full full-text search support based on Groonga to PostgreSQL"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v2/match-v1/seqscan.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v2/match-v1/seqscan.out    2017-08-10 14:49:35 +0900 (ac1c217)
@@ -0,0 +1,30 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, contents
+  FROM memos
+ WHERE contents %% 'Groonga';
+  title   |                                                         contents                                                         
+----------+--------------------------------------------------------------------------------------------------------------------------
+ Groonga  | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PGroonga | {"PGroonga is an OSS PostgreSQL extension","PGroonga adds full full-text search support based on Groonga to PostgreSQL"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2-greater/bitmapscan.out (+42 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2-greater/bitmapscan.out    2017-08-10 14:49:35 +0900 (265bf72)
@@ -0,0 +1,42 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &?> Array['rdbms', 'groonga engine'];
+                              QUERY PLAN                               
+-----------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (contents &?> '{rdbms,"groonga engine"}'::text[])
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (contents &?> '{rdbms,"groonga engine"}'::text[])
+(4 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &?> Array['rdbms', 'groonga engine'];
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2-greater/indexscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2-greater/indexscan.out    2017-08-10 14:49:35 +0900 (8ab3fd5)
@@ -0,0 +1,40 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &?> Array['rdbms', 'groonga engine'];
+                           QUERY PLAN                            
+-----------------------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (contents &?> '{rdbms,"groonga engine"}'::text[])
+(2 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &?> Array['rdbms', 'groonga engine'];
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2-greater/seqscan.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2-greater/seqscan.out    2017-08-10 14:49:35 +0900 (454cb2f)
@@ -0,0 +1,30 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, contents
+  FROM memos
+ WHERE contents &?> Array['rdbms', 'groonga engine'];
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2/bitmapscan.out (+42 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (e7ab7df)
@@ -0,0 +1,42 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
+                              QUERY PLAN                               
+-----------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (contents &?| '{rdbms,"groonga engine"}'::text[])
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (contents &?| '{rdbms,"groonga engine"}'::text[])
+(4 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2/indexscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2/indexscan.out    2017-08-10 14:49:35 +0900 (f8d58e0)
@@ -0,0 +1,40 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
+                           QUERY PLAN                            
+-----------------------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (contents &?| '{rdbms,"groonga engine"}'::text[])
+(2 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2/seqscan.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2/seqscan.out    2017-08-10 14:49:35 +0900 (f476857)
@@ -0,0 +1,30 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, contents
+  FROM memos
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v1/bitmapscan.out (+42 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v1/bitmapscan.out    2017-08-10 14:49:35 +0900 (2d9d4e6)
@@ -0,0 +1,42 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents @@ 'rdbms OR engine';
+                        QUERY PLAN                         
+-----------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (contents @@ 'rdbms OR engine'::text)
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (contents @@ 'rdbms OR engine'::text)
+(4 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents @@ 'rdbms OR engine';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v1/indexscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v1/indexscan.out    2017-08-10 14:49:35 +0900 (6cd86ab)
@@ -0,0 +1,40 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents @@ 'rdbms OR engine';
+                     QUERY PLAN                      
+-----------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (contents @@ 'rdbms OR engine'::text)
+(2 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents @@ 'rdbms OR engine';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v1/seqscan.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v1/seqscan.out    2017-08-10 14:49:35 +0900 (4fec269)
@@ -0,0 +1,30 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, contents
+  FROM memos
+ WHERE contents @@ 'rdbms OR engine';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v2/bitmapscan.out (+42 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (99b16c7)
@@ -0,0 +1,42 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+                        QUERY PLAN                         
+-----------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (contents &? 'rdbms OR engine'::text)
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (contents &? 'rdbms OR engine'::text)
+(4 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v2/indexscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v2/indexscan.out    2017-08-10 14:49:35 +0900 (cc9f907)
@@ -0,0 +1,40 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+                     QUERY PLAN                      
+-----------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (contents &? 'rdbms OR engine'::text)
+(2 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v2/seqscan.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v2/seqscan.out    2017-08-10 14:49:35 +0900 (b5881a8)
@@ -0,0 +1,30 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v2/similar-v2/bitmapscan.out (+42 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v2/similar-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (fb4c2d8)
@@ -0,0 +1,42 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &~? 'Mroonga: A MySQL plugin that uses Groonga';
+                                      QUERY PLAN                                      
+--------------------------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (contents &~? 'Mroonga: A MySQL plugin that uses Groonga'::text)
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (contents &~? 'Mroonga: A MySQL plugin that uses Groonga'::text)
+(4 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &~? 'Mroonga: A MySQL plugin that uses Groonga';
+  title   |                                                         contents                                                         
+----------+--------------------------------------------------------------------------------------------------------------------------
+ Groonga  | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PGroonga | {"PGroonga is an OSS PostgreSQL extension","PGroonga adds full full-text search support based on Groonga to PostgreSQL"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v2/similar-v2/indexscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v2/similar-v2/indexscan.out    2017-08-10 14:49:35 +0900 (1c17544)
@@ -0,0 +1,40 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &~? 'Mroonga: A MySQL plugin that uses Groonga';
+                                   QUERY PLAN                                   
+--------------------------------------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (contents &~? 'Mroonga: A MySQL plugin that uses Groonga'::text)
+(2 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &~? 'Mroonga: A MySQL plugin that uses Groonga';
+  title   |                                                         contents                                                         
+----------+--------------------------------------------------------------------------------------------------------------------------
+ Groonga  | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PGroonga | {"PGroonga is an OSS PostgreSQL extension","PGroonga adds full full-text search support based on Groonga to PostgreSQL"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/compatibility/v2/similar-v2/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/compatibility/v2/similar-v2/seqscan.out    2017-08-10 14:49:35 +0900 (0f1b9a6)
@@ -0,0 +1,23 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, contents
+  FROM memos
+ WHERE contents &~? 'Mroonga: A MySQL plugin that uses Groonga';
+ERROR:  pgroonga: similar search is available only in index scan
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/match-in-v2/bitmapscan.out (+42 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/match-in-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (4665ca3)
@@ -0,0 +1,42 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@| Array['rdbms', 'engine'];
+                         QUERY PLAN                          
+-------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (contents &@| '{rdbms,engine}'::text[])
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (contents &@| '{rdbms,engine}'::text[])
+(4 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@| Array['rdbms', 'engine'];
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/match-in-v2/indexscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/match-in-v2/indexscan.out    2017-08-10 14:49:35 +0900 (fe9ccad)
@@ -0,0 +1,40 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@| Array['rdbms', 'engine'];
+                      QUERY PLAN                       
+-------------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (contents &@| '{rdbms,engine}'::text[])
+(2 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@| Array['rdbms', 'engine'];
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/match-in-v2/seqscan.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/match-in-v2/seqscan.out    2017-08-10 14:49:35 +0900 (1eb62c2)
@@ -0,0 +1,30 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, contents
+  FROM memos
+ WHERE contents &@| Array['rdbms', 'engine'];
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/match-v2/bitmapscan.out (+45 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/match-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (af8dd7e)
@@ -0,0 +1,45 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+INSERT INTO memos
+    VALUES ('empty',
+            ARRAY[]::text[]);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+                    QUERY PLAN                     
+---------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (contents &@ 'Groonga'::text)
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (contents &@ 'Groonga'::text)
+(4 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+  title   |                                                         contents                                                         
+----------+--------------------------------------------------------------------------------------------------------------------------
+ Groonga  | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PGroonga | {"PGroonga is an OSS PostgreSQL extension","PGroonga adds full full-text search support based on Groonga to PostgreSQL"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/match-v2/indexscan.out (+43 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/match-v2/indexscan.out    2017-08-10 14:49:35 +0900 (79f1bbe)
@@ -0,0 +1,43 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+INSERT INTO memos
+    VALUES ('empty',
+            ARRAY[]::text[]);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+                   QUERY PLAN                   
+------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (contents &@ 'Groonga'::text)
+(2 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+  title   |                                                         contents                                                         
+----------+--------------------------------------------------------------------------------------------------------------------------
+ Groonga  | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PGroonga | {"PGroonga is an OSS PostgreSQL extension","PGroonga adds full full-text search support based on Groonga to PostgreSQL"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/match-v2/seqscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/match-v2/seqscan.out    2017-08-10 14:49:35 +0900 (6b4fd29)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+INSERT INTO memos
+    VALUES ('empty',
+            ARRAY[]::text[]);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+  title   |                                                         contents                                                         
+----------+--------------------------------------------------------------------------------------------------------------------------
+ Groonga  | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PGroonga | {"PGroonga is an OSS PostgreSQL extension","PGroonga adds full full-text search support based on Groonga to PostgreSQL"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/match/bitmapscan.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/match/bitmapscan.out    2017-08-10 14:49:35 +0900 (4cfbc8a)
@@ -0,0 +1,30 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT title, contents
+  FROM memos
+ WHERE contents %% 'Groonga';
+  title   |                                                         contents                                                         
+----------+--------------------------------------------------------------------------------------------------------------------------
+ Groonga  | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PGroonga | {"PGroonga is an OSS PostgreSQL extension","PGroonga adds full full-text search support based on Groonga to PostgreSQL"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/match/indexscan.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/match/indexscan.out    2017-08-10 14:49:35 +0900 (554414e)
@@ -0,0 +1,30 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT title, contents
+  FROM memos
+ WHERE contents %% 'Groonga';
+  title   |                                                         contents                                                         
+----------+--------------------------------------------------------------------------------------------------------------------------
+ Groonga  | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PGroonga | {"PGroonga is an OSS PostgreSQL extension","PGroonga adds full full-text search support based on Groonga to PostgreSQL"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/match/seqscan.out (+28 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/match/seqscan.out    2017-08-10 14:49:35 +0900 (8e438d7)
@@ -0,0 +1,28 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, contents
+  FROM memos
+ WHERE contents %% 'Groonga';
+  title   |                                                         contents                                                         
+----------+--------------------------------------------------------------------------------------------------------------------------
+ Groonga  | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PGroonga | {"PGroonga is an OSS PostgreSQL extension","PGroonga adds full full-text search support based on Groonga to PostgreSQL"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/query-in-v2/bitmapscan.out (+42 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/query-in-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (eec7cd5)
@@ -0,0 +1,42 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~| Array['rdbms', 'groonga engine'];
+                               QUERY PLAN                               
+------------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (contents &@~| '{rdbms,"groonga engine"}'::text[])
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (contents &@~| '{rdbms,"groonga engine"}'::text[])
+(4 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~| Array['rdbms', 'groonga engine'];
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/query-in-v2/indexscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/query-in-v2/indexscan.out    2017-08-10 14:49:35 +0900 (80a1fae)
@@ -0,0 +1,40 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~| Array['rdbms', 'groonga engine'];
+                            QUERY PLAN                            
+------------------------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (contents &@~| '{rdbms,"groonga engine"}'::text[])
+(2 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~| Array['rdbms', 'groonga engine'];
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/query-in-v2/seqscan.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/query-in-v2/seqscan.out    2017-08-10 14:49:35 +0900 (eba2186)
@@ -0,0 +1,30 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~| Array['rdbms', 'groonga engine'];
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/query-v2/bitmapscan.out (+42 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/query-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (0dfd075)
@@ -0,0 +1,42 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+                         QUERY PLAN                         
+------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (contents &@~ 'rdbms OR engine'::text)
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (contents &@~ 'rdbms OR engine'::text)
+(4 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/query-v2/indexscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/query-v2/indexscan.out    2017-08-10 14:49:35 +0900 (4cdc470)
@@ -0,0 +1,40 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+                      QUERY PLAN                      
+------------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (contents &@~ 'rdbms OR engine'::text)
+(2 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/query-v2/seqscan.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/query-v2/seqscan.out    2017-08-10 14:49:35 +0900 (8dd6e77)
@@ -0,0 +1,30 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/query/bitmapscan.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/query/bitmapscan.out    2017-08-10 14:49:35 +0900 (58799e8)
@@ -0,0 +1,30 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT title, contents
+  FROM memos
+ WHERE contents @@ 'rdbms OR engine';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/query/indexscan.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/query/indexscan.out    2017-08-10 14:49:35 +0900 (7ce2056)
@@ -0,0 +1,30 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT title, contents
+  FROM memos
+ WHERE contents @@ 'rdbms OR engine';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/query/seqscan.out (+28 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/query/seqscan.out    2017-08-10 14:49:35 +0900 (d075647)
@@ -0,0 +1,28 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, contents
+  FROM memos
+ WHERE contents @@ 'rdbms OR engine';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/script-v2/bitmapscan.out (+42 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/script-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (03ba3fd)
@@ -0,0 +1,42 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &` 'contents @ "rdbms" || contents @ "engine"';
+                                     QUERY PLAN                                      
+-------------------------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (contents &` 'contents @ "rdbms" || contents @ "engine"'::text)
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (contents &` 'contents @ "rdbms" || contents @ "engine"'::text)
+(4 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &` 'contents @ "rdbms" || contents @ "engine"';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/script-v2/indexscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/script-v2/indexscan.out    2017-08-10 14:49:35 +0900 (8451781)
@@ -0,0 +1,40 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &` 'contents @ "rdbms" || contents @ "engine"';
+                                  QUERY PLAN                                   
+-------------------------------------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (contents &` 'contents @ "rdbms" || contents @ "engine"'::text)
+(2 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &` 'contents @ "rdbms" || contents @ "engine"';
+   title    |                                         contents                                          
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/script-v2/seqscan.out (+30 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/script-v2/seqscan.out    2017-08-10 14:49:35 +0900 (68d89c9)
@@ -0,0 +1,30 @@
+CREATE TABLE memos (
+  title text,
+  text text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (text pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, text
+  FROM memos
+ WHERE text &` 'text @ "rdbms" || text @ "engine"';
+   title    |                                           text                                            
+------------+-------------------------------------------------------------------------------------------
+ PostgreSQL | {"PostgreSQL is an OSS RDBMS","PostgreSQL has partial full-text search support"}
+ Groonga    | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/similar-v2/bitmapscan.out (+42 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/similar-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (ae76c33)
@@ -0,0 +1,42 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@* 'Mroonga: A MySQL plugin that uses Groonga';
+                                      QUERY PLAN                                      
+--------------------------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (contents &@* 'Mroonga: A MySQL plugin that uses Groonga'::text)
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (contents &@* 'Mroonga: A MySQL plugin that uses Groonga'::text)
+(4 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@* 'Mroonga: A MySQL plugin that uses Groonga';
+  title   |                                                         contents                                                         
+----------+--------------------------------------------------------------------------------------------------------------------------
+ Groonga  | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PGroonga | {"PGroonga is an OSS PostgreSQL extension","PGroonga adds full full-text search support based on Groonga to PostgreSQL"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/similar-v2/indexscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/similar-v2/indexscan.out    2017-08-10 14:49:35 +0900 (1632a15)
@@ -0,0 +1,40 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@* 'Mroonga: A MySQL plugin that uses Groonga';
+                                   QUERY PLAN                                   
+--------------------------------------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (contents &@* 'Mroonga: A MySQL plugin that uses Groonga'::text)
+(2 rows)
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@* 'Mroonga: A MySQL plugin that uses Groonga';
+  title   |                                                         contents                                                         
+----------+--------------------------------------------------------------------------------------------------------------------------
+ Groonga  | {"Groonga is an OSS full-text search engine","Groonga has full full-text search support"}
+ PGroonga | {"PGroonga is an OSS PostgreSQL extension","PGroonga adds full full-text search support based on Groonga to PostgreSQL"}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text-array/similar-v2/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text-array/similar-v2/seqscan.out    2017-08-10 14:49:35 +0900 (7ee3b85)
@@ -0,0 +1,23 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, contents
+  FROM memos
+ WHERE contents &@* 'Mroonga: A MySQL plugin that uses Groonga';
+ERROR:  pgroonga: similar search is available only in index scan
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/multiple/match/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/multiple/match/bitmapscan.out    2017-08-10 14:49:35 +0900 (33b1c8b)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  title text,
+  content text
+);
+INSERT INTO memos
+     VALUES (1, 'PostgreSQL', 'is a RDBMS.');
+INSERT INTO memos
+     VALUES (2, 'Groonga', 'is fast full text search engine.');
+INSERT INTO memos
+     VALUES (3, 'PGroonga', 'is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (title pgroonga.text_full_text_search_ops_v2,
+                  content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, title, content
+  FROM memos
+ WHERE title %% 'Groonga';
+ id |  title  |             content              
+----+---------+----------------------------------
+  2 | Groonga | is fast full text search engine.
+(1 row)
+
+SELECT id, title, content
+  FROM memos
+ WHERE content %% 'Groonga';
+ id |  title   |                   content                    
+----+----------+----------------------------------------------
+  3 | PGroonga | is a PostgreSQL extension that uses Groonga.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/multiple/match/indexscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/multiple/match/indexscan.out    2017-08-10 14:49:35 +0900 (d100641)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  title text,
+  content text
+);
+INSERT INTO memos
+     VALUES (1, 'PostgreSQL', 'is a RDBMS.');
+INSERT INTO memos
+     VALUES (2, 'Groonga', 'is fast full text search engine.');
+INSERT INTO memos
+     VALUES (3, 'PGroonga', 'is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (title pgroonga.text_full_text_search_ops_v2,
+                  content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, title, content
+  FROM memos
+ WHERE title %% 'Groonga';
+ id |  title  |             content              
+----+---------+----------------------------------
+  2 | Groonga | is fast full text search engine.
+(1 row)
+
+SELECT id, title, content
+  FROM memos
+ WHERE content %% 'Groonga';
+ id |  title   |                   content                    
+----+----------+----------------------------------------------
+  3 | PGroonga | is a PostgreSQL extension that uses Groonga.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/multiple/match/seqscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/multiple/match/seqscan.out    2017-08-10 14:49:35 +0900 (dc6da9e)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  title text,
+  content text
+);
+INSERT INTO memos
+     VALUES (1, 'PostgreSQL', 'is a RDBMS.');
+INSERT INTO memos
+     VALUES (2, 'Groonga', 'is fast full text search engine.');
+INSERT INTO memos
+     VALUES (3, 'PGroonga', 'is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos USING pgroonga (title, content);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, title, content
+  FROM memos
+ WHERE title %% 'Groonga';
+ id |  title   |                   content                    
+----+----------+----------------------------------------------
+  2 | Groonga  | is fast full text search engine.
+  3 | PGroonga | is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+SELECT id, title, content
+  FROM memos
+ WHERE content %% 'Groonga';
+ id |  title   |                   content                    
+----+----------+----------------------------------------------
+  3 | PGroonga | is a PostgreSQL extension that uses Groonga.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/multiple/update.out (+46 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/multiple/update.out    2017-08-10 14:49:35 +0900 (9079dda)
@@ -0,0 +1,46 @@
+CREATE TABLE memos (
+  id integer,
+  title text,
+  content text
+);
+INSERT INTO memos
+     VALUES (1, 'PostgreSQL', 'is a RDBMS.');
+INSERT INTO memos
+     VALUES (2, 'Groonga', 'is fast full text search engine.');
+INSERT INTO memos
+     VALUES (3, 'PGroonga', 'is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (title pgroonga.text_full_text_search_ops_v2,
+                  content pgroonga.text_full_text_search_ops_v2);
+UPDATE memos
+   SET title = 'Mroonga',
+       content = 'is a MySQL plugin that uses Groonga.'
+ WHERE id = 3;
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, title, content
+  FROM memos
+ WHERE content %% 'Groonga';
+ id |  title  |               content                
+----+---------+--------------------------------------
+  3 | Mroonga | is a MySQL plugin that uses Groonga.
+(1 row)
+
+SELECT id, title, content
+  FROM memos
+ WHERE title %% 'Mroonga';
+ id |  title  |               content                
+----+---------+--------------------------------------
+  3 | Mroonga | is a MySQL plugin that uses Groonga.
+(1 row)
+
+SELECT id, title, content
+  FROM memos
+ WHERE content %% 'MySQL';
+ id |  title  |               content                
+----+---------+--------------------------------------
+  3 | Mroonga | is a MySQL plugin that uses Groonga.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/and/bitmapscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/and/bitmapscan.out    2017-08-10 14:49:35 +0900 (0584a2a)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content %% 'PGroonga' AND content %% 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/and/indexscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/and/indexscan.out    2017-08-10 14:49:35 +0900 (4dbe64c)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content %% 'PGroonga' AND content %% 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/and/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/and/seqscan.out    2017-08-10 14:49:35 +0900 (945b133)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos USING pgroonga (content);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content %% 'PGroonga' AND content %% 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v1/match-v2/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v1/match-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (5d0944c)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+                    QUERY PLAN                    
+--------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &@ 'Groonga'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &@ 'Groonga'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v1/match-v2/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v1/match-v2/indexscan.out    2017-08-10 14:49:35 +0900 (6de8fd4)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+                 QUERY PLAN                 
+--------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &@ 'Groonga'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v1/match-v2/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v1/match-v2/seqscan.out    2017-08-10 14:49:35 +0900 (de19034)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2-question/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2-question/bitmapscan.out    2017-08-10 14:49:35 +0900 (09d1a76)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+                        QUERY PLAN                        
+----------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &? 'rdbms OR engine'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &? 'rdbms OR engine'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2-question/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2-question/indexscan.out    2017-08-10 14:49:35 +0900 (ac40d2c)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+                     QUERY PLAN                     
+----------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &? 'rdbms OR engine'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2-question/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2-question/seqscan.out    2017-08-10 14:49:35 +0900 (552025e)
@@ -0,0 +1,23 @@
+SET search_path = "$user",public,pgroonga,pg_catalog;
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (8dc4fc2)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+                        QUERY PLAN                         
+-----------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &@~ 'rdbms OR engine'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &@~ 'rdbms OR engine'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2/indexscan.out    2017-08-10 14:49:35 +0900 (61e3553)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+                     QUERY PLAN                      
+-----------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &@~ 'rdbms OR engine'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2/seqscan.out    2017-08-10 14:49:35 +0900 (e6cd259)
@@ -0,0 +1,23 @@
+SET search_path = "$user",public,pgroonga,pg_catalog;
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/match-in-v2/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/match-in-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (17f3783)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@> Array['rdbms', 'engine'];
+                         QUERY PLAN                         
+------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &@> '{rdbms,engine}'::text[])
+   ->  Bitmap Index Scan on pgrn_index
+         Index Cond: (content &@> '{rdbms,engine}'::text[])
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@> Array['rdbms', 'engine'];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/match-in-v2/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/match-in-v2/indexscan.out    2017-08-10 14:49:35 +0900 (c5ebcc1)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@> Array['rdbms', 'engine'];
+                      QUERY PLAN                      
+------------------------------------------------------
+ Index Scan using pgrn_index on memos
+   Index Cond: (content &@> '{rdbms,engine}'::text[])
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@> Array['rdbms', 'engine'];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/match-in-v2/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/match-in-v2/seqscan.out    2017-08-10 14:49:35 +0900 (d830ff5)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &@> Array['rdbms', 'engine'];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/match-v1/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/match-v1/bitmapscan.out    2017-08-10 14:49:35 +0900 (8a1f03e)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+                    QUERY PLAN                    
+--------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content %% 'Groonga'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content %% 'Groonga'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/match-v1/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/match-v1/indexscan.out    2017-08-10 14:49:35 +0900 (8c606e9)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+                 QUERY PLAN                 
+--------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content %% 'Groonga'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/match-v1/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/match-v1/seqscan.out    2017-08-10 14:49:35 +0900 (24c78d3)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2-greater/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2-greater/bitmapscan.out    2017-08-10 14:49:35 +0900 (e96c2d4)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &?> Array['rdbms', 'groonga engine'];
+                              QUERY PLAN                              
+----------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &?> '{rdbms,"groonga engine"}'::text[])
+   ->  Bitmap Index Scan on pgrn_index
+         Index Cond: (content &?> '{rdbms,"groonga engine"}'::text[])
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &?> Array['rdbms', 'groonga engine'];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2-greater/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2-greater/indexscan.out    2017-08-10 14:49:35 +0900 (245ae2c)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &?> Array['rdbms', 'groonga engine'];
+                           QUERY PLAN                           
+----------------------------------------------------------------
+ Index Scan using pgrn_index on memos
+   Index Cond: (content &?> '{rdbms,"groonga engine"}'::text[])
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &?> Array['rdbms', 'groonga engine'];
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+  1 | PostgreSQL is a RDBMS.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2-greater/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2-greater/seqscan.out    2017-08-10 14:49:35 +0900 (071b37e)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &?> Array['rdbms', 'groonga engine'];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (4a7734f)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &?| Array['rdbms', 'groonga engine'];
+                              QUERY PLAN                              
+----------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &?| '{rdbms,"groonga engine"}'::text[])
+   ->  Bitmap Index Scan on pgrn_index
+         Index Cond: (content &?| '{rdbms,"groonga engine"}'::text[])
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &?| Array['rdbms', 'groonga engine'];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2/indexscan.out    2017-08-10 14:49:35 +0900 (dddc69e)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &?| Array['rdbms', 'groonga engine'];
+                           QUERY PLAN                           
+----------------------------------------------------------------
+ Index Scan using pgrn_index on memos
+   Index Cond: (content &?| '{rdbms,"groonga engine"}'::text[])
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &?| Array['rdbms', 'groonga engine'];
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+  1 | PostgreSQL is a RDBMS.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2/seqscan.out    2017-08-10 14:49:35 +0900 (8906877)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &?| Array['rdbms', 'groonga engine'];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v1/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v1/bitmapscan.out    2017-08-10 14:49:35 +0900 (a11a233)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+                        QUERY PLAN                        
+----------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content @@ 'rdbms OR engine'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content @@ 'rdbms OR engine'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v1/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v1/indexscan.out    2017-08-10 14:49:35 +0900 (97931ca)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+                     QUERY PLAN                     
+----------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content @@ 'rdbms OR engine'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v1/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v1/seqscan.out    2017-08-10 14:49:35 +0900 (b8578bf)
@@ -0,0 +1,23 @@
+SET search_path = "$user",public,pgroonga,pg_catalog;
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v2/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (fe45e47)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v2/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v2/indexscan.out    2017-08-10 14:49:35 +0900 (6caf0ef)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v2/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v2/seqscan.out    2017-08-10 14:49:35 +0900 (6ccbba1)
@@ -0,0 +1,23 @@
+SET search_path = "$user",public,pgroonga,pg_catalog;
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/similar-v2/bitmapscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/similar-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (c55ff11)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content &~? 'Mroonga is a MySQL plugin that uses Groonga.';
+ id |                        content                        
+----+-------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/similar-v2/indexscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/similar-v2/indexscan.out    2017-08-10 14:49:35 +0900 (f594dd5)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~? 'Mroonga is a MySQL plugin that uses Groonga.';
+ id |                        content                        
+----+-------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/compatibility/v2/similar-v2/seqscan.out (+17 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/compatibility/v2/similar-v2/seqscan.out    2017-08-10 14:49:35 +0900 (3186fc7)
@@ -0,0 +1,17 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~? 'Mroonga is a MySQL plugin that uses Groonga.';
+ERROR:  pgroonga: similar search available only in index scan
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike-v2/begin-of-text/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike-v2/begin-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (43378a5)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'POSTGRESQL%';
+ id |        content         
+----+------------------------
+  1 | PostgreSQL is a RDBMS.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike-v2/begin-of-text/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike-v2/begin-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (e713a6c)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'POSTGRESQL%';
+ id |        content         
+----+------------------------
+  1 | PostgreSQL is a RDBMS.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike-v2/begin-of-text/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike-v2/begin-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (e47b92a)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'POSTGRESQL%';
+ id |        content         
+----+------------------------
+  1 | PostgreSQL is a RDBMS.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike-v2/end-of-text/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike-v2/end-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (792acfb)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike-v2/end-of-text/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike-v2/end-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (8e34918)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike-v2/end-of-text/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike-v2/end-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (7dccd81)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike-v2/partial/bitmapscan.out (+24 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike-v2/partial/bitmapscan.out    2017-08-10 14:49:35 +0900 (fe04e8e)
@@ -0,0 +1,24 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+  4 | groonga command is provided.
+(3 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike-v2/partial/indexscan.out (+24 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike-v2/partial/indexscan.out    2017-08-10 14:49:35 +0900 (c70f6e5)
@@ -0,0 +1,24 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+  4 | groonga command is provided.
+(3 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike-v2/partial/seqscan.out (+24 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike-v2/partial/seqscan.out    2017-08-10 14:49:35 +0900 (77d80b9)
@@ -0,0 +1,24 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+  4 | groonga command is provided.
+(3 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike-v2/underscore/bitmapscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike-v2/underscore/bitmapscan.out    2017-08-10 14:49:35 +0900 (1dd8060)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '_';
+ id | content 
+----+---------
+  2 | a
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike-v2/underscore/indexscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike-v2/underscore/indexscan.out    2017-08-10 14:49:35 +0900 (15d9f46)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '_';
+ id | content 
+----+---------
+  2 | a
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike-v2/underscore/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike-v2/underscore/seqscan.out    2017-08-10 14:49:35 +0900 (52c99ec)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '_';
+ id | content 
+----+---------
+  2 | a
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike/begin-of-text/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike/begin-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (5e12d60)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'POSTGRESQL%';
+ id |        content         
+----+------------------------
+  1 | PostgreSQL is a RDBMS.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike/begin-of-text/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike/begin-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (0217de7)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'POSTGRESQL%';
+ id |        content         
+----+------------------------
+  1 | PostgreSQL is a RDBMS.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike/begin-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike/begin-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (7d03065)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos USING pgroonga (content);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'POSTGRESQL%';
+ id |        content         
+----+------------------------
+  1 | PostgreSQL is a RDBMS.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike/end-of-text/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike/end-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (12f6113)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike/end-of-text/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike/end-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (3330f95)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike/end-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike/end-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (976cc37)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos USING pgroonga (content);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike/partial/bitmapscan.out (+24 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike/partial/bitmapscan.out    2017-08-10 14:49:35 +0900 (ea4db72)
@@ -0,0 +1,24 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+  4 | groonga command is provided.
+(3 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike/partial/indexscan.out (+24 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike/partial/indexscan.out    2017-08-10 14:49:35 +0900 (2a95a1f)
@@ -0,0 +1,24 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+  4 | groonga command is provided.
+(3 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike/partial/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike/partial/seqscan.out    2017-08-10 14:49:35 +0900 (0962ba7)
@@ -0,0 +1,23 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos USING pgroonga (content);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+  4 | groonga command is provided.
+(3 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike/underscore/bitmapscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike/underscore/bitmapscan.out    2017-08-10 14:49:35 +0900 (502ab25)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '_';
+ id | content 
+----+---------
+  2 | a
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike/underscore/indexscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike/underscore/indexscan.out    2017-08-10 14:49:35 +0900 (3ebd584)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '_';
+ id | content 
+----+---------
+  2 | a
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/ilike/underscore/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/ilike/underscore/seqscan.out    2017-08-10 14:49:35 +0900 (839b4c5)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+CREATE INDEX grnindex ON memos USING pgroonga (content);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '_';
+ id | content 
+----+---------
+  2 | a
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like-v2/begin-of-text/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like-v2/begin-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (4536ff8)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'PostgreSQL%';
+ id |        content         
+----+------------------------
+  1 | PostgreSQL is a RDBMS.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like-v2/begin-of-text/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like-v2/begin-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (c4dbfc1)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'PostgreSQL%';
+ id |        content         
+----+------------------------
+  1 | PostgreSQL is a RDBMS.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like-v2/begin-of-text/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like-v2/begin-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (9c97110)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'PostgreSQL%';
+ id |        content         
+----+------------------------
+  1 | PostgreSQL is a RDBMS.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like-v2/end-of-text/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like-v2/end-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (9b95fed)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like-v2/end-of-text/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like-v2/end-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (cd86fae)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like-v2/end-of-text/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like-v2/end-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (8a80828)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like-v2/partial/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like-v2/partial/bitmapscan.out    2017-08-10 14:49:35 +0900 (2274cfe)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%groonga%';
+ id |           content            
+----+------------------------------
+  4 | groonga command is provided.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like-v2/partial/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like-v2/partial/indexscan.out    2017-08-10 14:49:35 +0900 (71dd58a)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%groonga%';
+ id |           content            
+----+------------------------------
+  4 | groonga command is provided.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like-v2/partial/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like-v2/partial/seqscan.out    2017-08-10 14:49:35 +0900 (c79b982)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%groonga%';
+ id |           content            
+----+------------------------------
+  4 | groonga command is provided.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like-v2/underscore/bitmapscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like-v2/underscore/bitmapscan.out    2017-08-10 14:49:35 +0900 (f225bb8)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '_';
+ id | content 
+----+---------
+  2 | a
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like-v2/underscore/indexscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like-v2/underscore/indexscan.out    2017-08-10 14:49:35 +0900 (a8b2b05)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '_';
+ id | content 
+----+---------
+  2 | a
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like-v2/underscore/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like-v2/underscore/seqscan.out    2017-08-10 14:49:35 +0900 (3ad6ffe)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '_';
+ id | content 
+----+---------
+  2 | a
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like/begin-of-text/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like/begin-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (6db050c)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'PostgreSQL%';
+ id |        content         
+----+------------------------
+  1 | PostgreSQL is a RDBMS.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like/begin-of-text/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like/begin-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (6e215af)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'PostgreSQL%';
+ id |        content         
+----+------------------------
+  1 | PostgreSQL is a RDBMS.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like/begin-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like/begin-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (06b7347)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos USING pgroonga (content);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'PostgreSQL%';
+ id |        content         
+----+------------------------
+  1 | PostgreSQL is a RDBMS.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like/end-of-text/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like/end-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (ae885b4)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like/end-of-text/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like/end-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (d79cb5a)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like/end-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like/end-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (335d867)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos USING pgroonga (content);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like/partial/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like/partial/bitmapscan.out    2017-08-10 14:49:35 +0900 (2236742)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%groonga%';
+ id |           content            
+----+------------------------------
+  4 | groonga command is provided.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like/partial/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like/partial/indexscan.out    2017-08-10 14:49:35 +0900 (504b6e5)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%groonga%';
+ id |           content            
+----+------------------------------
+  4 | groonga command is provided.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like/partial/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like/partial/seqscan.out    2017-08-10 14:49:35 +0900 (df93bba)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos USING pgroonga (content);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%groonga%';
+ id |           content            
+----+------------------------------
+  4 | groonga command is provided.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like/underscore/bitmapscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like/underscore/bitmapscan.out    2017-08-10 14:49:35 +0900 (1d53f52)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '_';
+ id | content 
+----+---------
+  2 | a
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like/underscore/indexscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like/underscore/indexscan.out    2017-08-10 14:49:35 +0900 (3c40637)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '_';
+ id | content 
+----+---------
+  2 | a
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/like/underscore/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/like/underscore/seqscan.out    2017-08-10 14:49:35 +0900 (19b151c)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+CREATE INDEX grnindex ON memos USING pgroonga (content);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '_';
+ id | content 
+----+---------
+  2 | a
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/match-in-v2/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/match-in-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (25e3720)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@| Array['rdbms', 'engine'];
+                         QUERY PLAN                         
+------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &@| '{rdbms,engine}'::text[])
+   ->  Bitmap Index Scan on pgrn_index
+         Index Cond: (content &@| '{rdbms,engine}'::text[])
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@| Array['rdbms', 'engine'];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/match-in-v2/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/match-in-v2/indexscan.out    2017-08-10 14:49:35 +0900 (72010d4)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@| Array['rdbms', 'engine'];
+                      QUERY PLAN                      
+------------------------------------------------------
+ Index Scan using pgrn_index on memos
+   Index Cond: (content &@| '{rdbms,engine}'::text[])
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@| Array['rdbms', 'engine'];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/match-in-v2/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/match-in-v2/seqscan.out    2017-08-10 14:49:35 +0900 (c1bbe31)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &@| Array['rdbms', 'engine'];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/match-v2/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/match-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (c9feae5)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/match-v2/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/match-v2/indexscan.out    2017-08-10 14:49:35 +0900 (ffdc2c9)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/match-v2/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/match-v2/seqscan.out    2017-08-10 14:49:35 +0900 (b14508d)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/match/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/match/bitmapscan.out    2017-08-10 14:49:35 +0900 (30642c4)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/match/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/match/indexscan.out    2017-08-10 14:49:35 +0900 (f0e922a)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/match/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/match/seqscan.out    2017-08-10 14:49:35 +0900 (bcdef3b)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos USING pgroonga (content);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/query-in-v2/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/query-in-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (e3f90e3)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@~| Array['rdbms', 'groonga engine'];
+                              QUERY PLAN                               
+-----------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &@~| '{rdbms,"groonga engine"}'::text[])
+   ->  Bitmap Index Scan on pgrn_index
+         Index Cond: (content &@~| '{rdbms,"groonga engine"}'::text[])
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~| Array['rdbms', 'groonga engine'];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/query-in-v2/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/query-in-v2/indexscan.out    2017-08-10 14:49:35 +0900 (d868603)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@~| Array['rdbms', 'groonga engine'];
+                           QUERY PLAN                            
+-----------------------------------------------------------------
+ Index Scan using pgrn_index on memos
+   Index Cond: (content &@~| '{rdbms,"groonga engine"}'::text[])
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~| Array['rdbms', 'groonga engine'];
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+  1 | PostgreSQL is a RDBMS.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/query-in-v2/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/query-in-v2/seqscan.out    2017-08-10 14:49:35 +0900 (1699172)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &@~| Array['rdbms', 'groonga engine'];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/query-v2/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/query-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (9b9364c)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+                        QUERY PLAN                         
+-----------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &@~ 'rdbms OR engine'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &@~ 'rdbms OR engine'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/query-v2/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/query-v2/indexscan.out    2017-08-10 14:49:35 +0900 (dbd130d)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+                     QUERY PLAN                      
+-----------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &@~ 'rdbms OR engine'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/query-v2/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/query-v2/seqscan.out    2017-08-10 14:49:35 +0900 (1d0708b)
@@ -0,0 +1,23 @@
+SET search_path = "$user",public,pgroonga,pg_catalog;
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/query/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/query/bitmapscan.out    2017-08-10 14:49:35 +0900 (cbe061a)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/query/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/query/indexscan.out    2017-08-10 14:49:35 +0900 (f92d081)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/query/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/query/seqscan.out    2017-08-10 14:49:35 +0900 (559018e)
@@ -0,0 +1,22 @@
+SET search_path = "$user",public,pgroonga,pg_catalog;
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos USING pgroonga (content);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/script-v2/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/script-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (6594e30)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content &` 'content @ "rdbms" || content @ "engine"';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/script-v2/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/script-v2/indexscan.out    2017-08-10 14:49:35 +0900 (cd0d49f)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &` 'content @ "rdbms" || content @ "engine"';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/script-v2/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/script-v2/seqscan.out    2017-08-10 14:49:35 +0900 (3012904)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  text text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, text
+  FROM memos
+ WHERE text &` 'text @ "rdbms" || text @ "engine"';
+ id |                   text                   
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/similar-v2/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/similar-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (4e389eb)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@* 'Mroonga is a MySQL plugin that uses Groonga.';
+                                       QUERY PLAN                                       
+----------------------------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &@* 'Mroonga is a MySQL plugin that uses Groonga.'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &@* 'Mroonga is a MySQL plugin that uses Groonga.'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@* 'Mroonga is a MySQL plugin that uses Groonga.';
+ id |                        content                        
+----+-------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/similar-v2/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/similar-v2/indexscan.out    2017-08-10 14:49:35 +0900 (d0a3b79)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@* 'Mroonga is a MySQL plugin that uses Groonga.';
+                                    QUERY PLAN                                    
+----------------------------------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &@* 'Mroonga is a MySQL plugin that uses Groonga.'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@* 'Mroonga is a MySQL plugin that uses Groonga.';
+ id |                        content                        
+----+-------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/similar-v2/seqscan.out (+17 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/similar-v2/seqscan.out    2017-08-10 14:49:35 +0900 (626a097)
@@ -0,0 +1,17 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &@* 'Mroonga is a MySQL plugin that uses Groonga.';
+ERROR:  pgroonga: similar search available only in index scan
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/truncate.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/truncate.out    2017-08-10 14:49:35 +0900 (c35b088)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+TRUNCATE memos;
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content %% 'PostgreSQL';
+ id |                        content                        
+----+-------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/text/single/update.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/text/single/update.out    2017-08-10 14:49:35 +0900 (494a402)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+UPDATE memos SET content = 'Mroonga is a MySQL plugin that uses Groonga.'
+ WHERE id = 3;
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content %% 'PostgreSQL';
+ id |        content         
+----+------------------------
+  1 | PostgreSQL is a RDBMS.
+(1 row)
+
+SELECT id, content
+  FROM memos
+ WHERE content %% 'MySQL';
+ id |                   content                    
+----+----------------------------------------------
+  3 | Mroonga is a MySQL plugin that uses Groonga.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v1/match-v2/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v1/match-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (1cb84af)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v1/match-v2/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v1/match-v2/indexscan.out    2017-08-10 14:49:35 +0900 (4722483)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v1/match-v2/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v1/match-v2/seqscan.out    2017-08-10 14:49:35 +0900 (8a36dee)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2-question/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2-question/bitmapscan.out    2017-08-10 14:49:35 +0900 (ab95025)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2-question/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2-question/indexscan.out    2017-08-10 14:49:35 +0900 (8516491)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2-question/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2-question/seqscan.out    2017-08-10 14:49:35 +0900 (831c77e)
@@ -0,0 +1,23 @@
+SET search_path = "$user",public,pgroonga,pg_catalog;
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (28eddad)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+                               QUERY PLAN                               
+------------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &@~ 'rdbms OR engine'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &@~ 'rdbms OR engine'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2/indexscan.out    2017-08-10 14:49:35 +0900 (57bf988)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+                            QUERY PLAN                            
+------------------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &@~ 'rdbms OR engine'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v1/query-v2/seqscan.out    2017-08-10 14:49:35 +0900 (e741e75)
@@ -0,0 +1,23 @@
+SET search_path = "$user",public,pgroonga,pg_catalog;
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v2/match-v1/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v2/match-v1/bitmapscan.out    2017-08-10 14:49:35 +0900 (55fa165)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+                          QUERY PLAN                           
+---------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content %% 'Groonga'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content %% 'Groonga'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v2/match-v1/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v2/match-v1/indexscan.out    2017-08-10 14:49:35 +0900 (d9e40c6)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+                       QUERY PLAN                        
+---------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content %% 'Groonga'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v2/match-v1/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v2/match-v1/seqscan.out    2017-08-10 14:49:35 +0900 (c68d33b)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2-greater/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2-greater/bitmapscan.out    2017-08-10 14:49:35 +0900 (46b5716)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &?> Array['rdbms', 'groonga engine']::varchar[];
+                                    QUERY PLAN                                     
+-----------------------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &?> '{rdbms,"groonga engine"}'::character varying[])
+   ->  Bitmap Index Scan on pgrn_index
+         Index Cond: (content &?> '{rdbms,"groonga engine"}'::character varying[])
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &?> Array['rdbms', 'groonga engine']::varchar[];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2-greater/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2-greater/indexscan.out    2017-08-10 14:49:35 +0900 (9bcc3d6)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &?> Array['rdbms', 'groonga engine']::varchar[];
+                                 QUERY PLAN                                  
+-----------------------------------------------------------------------------
+ Index Scan using pgrn_index on memos
+   Index Cond: (content &?> '{rdbms,"groonga engine"}'::character varying[])
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &?> Array['rdbms', 'groonga engine']::varchar[];
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+  1 | PostgreSQL is a RDBMS.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2-greater/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2-greater/seqscan.out    2017-08-10 14:49:35 +0900 (0e3cbf3)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &?> Array['rdbms', 'groonga engine']::varchar[];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (e778d1c)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &?| Array['rdbms', 'groonga engine']::varchar[];
+                                    QUERY PLAN                                     
+-----------------------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &?| '{rdbms,"groonga engine"}'::character varying[])
+   ->  Bitmap Index Scan on pgrn_index
+         Index Cond: (content &?| '{rdbms,"groonga engine"}'::character varying[])
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &?| Array['rdbms', 'groonga engine']::varchar[];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2/indexscan.out    2017-08-10 14:49:35 +0900 (8d28603)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &?| Array['rdbms', 'groonga engine']::varchar[];
+                                 QUERY PLAN                                  
+-----------------------------------------------------------------------------
+ Index Scan using pgrn_index on memos
+   Index Cond: (content &?| '{rdbms,"groonga engine"}'::character varying[])
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &?| Array['rdbms', 'groonga engine']::varchar[];
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+  1 | PostgreSQL is a RDBMS.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-in-v2/seqscan.out    2017-08-10 14:49:35 +0900 (77b80a3)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &?| Array['rdbms', 'groonga engine']::varchar[];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v1/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v1/bitmapscan.out    2017-08-10 14:49:35 +0900 (e2db945)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+                              QUERY PLAN                               
+-----------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content @@ 'rdbms OR engine'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content @@ 'rdbms OR engine'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v1/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v1/indexscan.out    2017-08-10 14:49:35 +0900 (a087ee6)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+                           QUERY PLAN                            
+-----------------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content @@ 'rdbms OR engine'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v1/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v1/seqscan.out    2017-08-10 14:49:35 +0900 (52d938b)
@@ -0,0 +1,23 @@
+SET search_path = "$user",public,pgroonga,pg_catalog;
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v2/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (d262b24)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+                              QUERY PLAN                               
+-----------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &? 'rdbms OR engine'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &? 'rdbms OR engine'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v2/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v2/indexscan.out    2017-08-10 14:49:35 +0900 (3772066)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+                           QUERY PLAN                            
+-----------------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &? 'rdbms OR engine'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v2/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v2/query-v2/seqscan.out    2017-08-10 14:49:35 +0900 (280d1ab)
@@ -0,0 +1,23 @@
+SET search_path = "$user",public,pgroonga,pg_catalog;
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v2/similar-v2/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v2/similar-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (f509319)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~? 'Mroonga is a MySQL plugin that uses Groonga.';
+                                             QUERY PLAN                                              
+-----------------------------------------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~? 'Mroonga is a MySQL plugin that uses Groonga.'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~? 'Mroonga is a MySQL plugin that uses Groonga.'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~? 'Mroonga is a MySQL plugin that uses Groonga.';
+ id |                        content                        
+----+-------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v2/similar-v2/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v2/similar-v2/indexscan.out    2017-08-10 14:49:35 +0900 (acc9eb1)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~? 'Mroonga is a MySQL plugin that uses Groonga.';
+                                          QUERY PLAN                                           
+-----------------------------------------------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~? 'Mroonga is a MySQL plugin that uses Groonga.'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~? 'Mroonga is a MySQL plugin that uses Groonga.';
+ id |                        content                        
+----+-------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/compatibility/v2/similar-v2/seqscan.out (+17 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/compatibility/v2/similar-v2/seqscan.out    2017-08-10 14:49:35 +0900 (07c98a6)
@@ -0,0 +1,17 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~? 'Mroonga is a MySQL plugin that uses Groonga.';
+ERROR:  pgroonga: similar search is available only in index scan
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/match-in-v2/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/match-in-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (954762d)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@| Array['rdbms', 'engine']::varchar[];
+                               QUERY PLAN                                
+-------------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &@| '{rdbms,engine}'::character varying[])
+   ->  Bitmap Index Scan on pgrn_index
+         Index Cond: (content &@| '{rdbms,engine}'::character varying[])
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@| Array['rdbms', 'engine']::varchar[];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/match-in-v2/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/match-in-v2/indexscan.out    2017-08-10 14:49:35 +0900 (834f358)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@| Array['rdbms', 'engine']::varchar[];
+                            QUERY PLAN                             
+-------------------------------------------------------------------
+ Index Scan using pgrn_index on memos
+   Index Cond: (content &@| '{rdbms,engine}'::character varying[])
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@| Array['rdbms', 'engine']::varchar[];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/match-in-v2/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/match-in-v2/seqscan.out    2017-08-10 14:49:35 +0900 (2d7a247)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &@| Array['rdbms', 'engine']::varchar[];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/match-v2/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/match-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (cc03b18)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/match-v2/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/match-v2/indexscan.out    2017-08-10 14:49:35 +0900 (f150ee9)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/match-v2/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/match-v2/seqscan.out    2017-08-10 14:49:35 +0900 (2b60aaf)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/query-in-v2/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/query-in-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (a94de91)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@~| Array['rdbms', 'groonga engine']::varchar[];
+                                     QUERY PLAN                                     
+------------------------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &@~| '{rdbms,"groonga engine"}'::character varying[])
+   ->  Bitmap Index Scan on pgrn_index
+         Index Cond: (content &@~| '{rdbms,"groonga engine"}'::character varying[])
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~| Array['rdbms', 'groonga engine']::varchar[];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/query-in-v2/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/query-in-v2/indexscan.out    2017-08-10 14:49:35 +0900 (804ab96)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@~| Array['rdbms', 'groonga engine']::varchar[];
+                                  QUERY PLAN                                  
+------------------------------------------------------------------------------
+ Index Scan using pgrn_index on memos
+   Index Cond: (content &@~| '{rdbms,"groonga engine"}'::character varying[])
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~| Array['rdbms', 'groonga engine']::varchar[];
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+  1 | PostgreSQL is a RDBMS.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/query-in-v2/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/query-in-v2/seqscan.out    2017-08-10 14:49:35 +0900 (7438e10)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &@~| Array['rdbms', 'groonga engine']::varchar[];
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/query-v2/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/query-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (eea8239)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+                               QUERY PLAN                               
+------------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &@~ 'rdbms OR engine'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &@~ 'rdbms OR engine'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/query-v2/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/query-v2/indexscan.out    2017-08-10 14:49:35 +0900 (6880745)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+                            QUERY PLAN                            
+------------------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &@~ 'rdbms OR engine'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/query-v2/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/query-v2/seqscan.out    2017-08-10 14:49:35 +0900 (2f125b9)
@@ -0,0 +1,23 @@
+SET search_path = "$user",public,pgroonga,pg_catalog;
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/script-v2/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/script-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (da678b4)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content &` 'content @ "rdbms" || content @ "engine"';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/script-v2/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/script-v2/indexscan.out    2017-08-10 14:49:35 +0900 (780a0e4)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &` 'content @ "rdbms" || content @ "engine"';
+ id |                 content                  
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/script-v2/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/script-v2/seqscan.out    2017-08-10 14:49:35 +0900 (afa0d48)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  text varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, text
+  FROM memos
+ WHERE text &` 'text @ "rdbms" || text @ "engine"';
+ id |                   text                   
+----+------------------------------------------
+  1 | PostgreSQL is a RDBMS.
+  2 | Groonga is fast full text search engine.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/similar-v2/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/similar-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (9f016a6)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@* 'Mroonga is a MySQL plugin that uses Groonga.';
+                                             QUERY PLAN                                              
+-----------------------------------------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &@* 'Mroonga is a MySQL plugin that uses Groonga.'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &@* 'Mroonga is a MySQL plugin that uses Groonga.'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@* 'Mroonga is a MySQL plugin that uses Groonga.';
+ id |                        content                        
+----+-------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/similar-v2/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/similar-v2/indexscan.out    2017-08-10 14:49:35 +0900 (977c971)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@* 'Mroonga is a MySQL plugin that uses Groonga.';
+                                          QUERY PLAN                                           
+-----------------------------------------------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &@* 'Mroonga is a MySQL plugin that uses Groonga.'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &@* 'Mroonga is a MySQL plugin that uses Groonga.';
+ id |                        content                        
+----+-------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/full-text-search/varchar/similar-v2/seqscan.out (+17 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/full-text-search/varchar/similar-v2/seqscan.out    2017-08-10 14:49:35 +0900 (d9b7da6)
@@ -0,0 +1,17 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.varchar_full_text_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &@* 'Mroonga is a MySQL plugin that uses Groonga.';
+ERROR:  pgroonga: similar search is available only in index scan
+DROP TABLE memos;

  Added: expected/compatibility/schema/function/command/after-truncate.out (+19 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/command/after-truncate.out    2017-08-10 14:49:35 +0900 (ae624cf)
@@ -0,0 +1,19 @@
+CREATE TABLE memos (
+  content text
+);
+CREATE INDEX pgroonga_index ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+TRUNCATE memos;
+INSERT INTO memos VALUES ('PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES ('Groonga is fast full text search engine.');
+INSERT INTO memos VALUES ('PGroonga is a PostgreSQL extension that uses Groonga.');
+SELECT pgroonga.command('select ' ||
+                        pgroonga.table_name('pgroonga_index') ||
+                        ' --output_columns content')::json->>1
+    AS body;
+                                                                                body                                                                                
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ [[[3],[["content","LongText"]],["PostgreSQL is a RDBMS."],["Groonga is fast full text search engine."],["PGroonga is a PostgreSQL extension that uses Groonga."]]]
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/function/command/arguments.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/command/arguments.out    2017-08-10 14:49:35 +0900 (cbc082f)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  content text
+);
+INSERT INTO memos VALUES ('PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES ('Groonga is fast full text search engine.');
+INSERT INTO memos VALUES ('PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgroonga_index ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SELECT pgroonga.command('select',
+                        ARRAY[
+                          'table',
+                          pgroonga.table_name('pgroonga_index'),
+                          'output_columns',
+                          '_id, content'
+                        ])::json->>1
+    AS body;
+                                                                                           body                                                                                            
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ [[[3],[["_id","UInt32"],["content","LongText"]],[1,"PostgreSQL is a RDBMS."],[2,"Groonga is fast full text search engine."],[3,"PGroonga is a PostgreSQL extension that uses Groonga."]]]
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/function/command/select.out (+18 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/command/select.out    2017-08-10 14:49:35 +0900 (e963720)
@@ -0,0 +1,18 @@
+CREATE TABLE memos (
+  content text
+);
+INSERT INTO memos VALUES ('PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES ('Groonga is fast full text search engine.');
+INSERT INTO memos VALUES ('PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgroonga_index ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SELECT pgroonga.command('select ' ||
+                        pgroonga.table_name('pgroonga_index') ||
+                        ' --output_columns content')::json->>1
+    AS body;
+                                                                                body                                                                                
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ [[[3],[["content","LongText"]],["PostgreSQL is a RDBMS."],["Groonga is fast full text search engine."],["PGroonga is a PostgreSQL extension that uses Groonga."]]]
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/function/flush/jsonb.out (+16 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/flush/jsonb.out    2017-08-10 14:49:35 +0900 (1eab26f)
@@ -0,0 +1,16 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": "Hello World"}');
+INSERT INTO logs VALUES (2, '{"message": "This is a pen"}');
+INSERT INTO logs VALUES (3, '{"message": "Good-by World"}');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops);
+SELECT pgroonga.flush('pgroonga_index');
+ flush 
+-------
+ t
+(1 row)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/function/flush/multiple.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/flush/multiple.out    2017-08-10 14:49:35 +0900 (ae1dd28)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  title text,
+  content text
+);
+INSERT INTO memos
+     VALUES (1, 'PostgreSQL', 'is a RDBMS.');
+INSERT INTO memos
+     VALUES (2, 'Groonga', 'is fast full text search engine.');
+INSERT INTO memos
+     VALUES (3, 'PGroonga', 'is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgroonga_index ON memos
+  USING pgroonga (title pgroonga.text_full_text_search_ops,
+                  content pgroonga.text_full_text_search_ops);
+SELECT pgroonga.flush('pgroonga_index');
+ flush 
+-------
+ t
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/function/flush/nonexistent.out (+2 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/flush/nonexistent.out    2017-08-10 14:49:35 +0900 (a08efbe)
@@ -0,0 +1,2 @@
+SELECT pgroonga.flush('pgroonga_index');
+ERROR:  relation "pgroonga_index" does not exist

  Added: expected/compatibility/schema/function/flush/single.out (+16 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/flush/single.out    2017-08-10 14:49:35 +0900 (1d582da)
@@ -0,0 +1,16 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgroonga_index ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SELECT pgroonga.flush('pgroonga_index');
+ flush 
+-------
+ t
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/function/query-expand/existent.out (+12 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/query-expand/existent.out    2017-08-10 14:49:35 +0900 (3e85506)
@@ -0,0 +1,12 @@
+CREATE TABLE synonyms (
+  term text PRIMARY KEY,
+  synonyms text[]
+);
+INSERT INTO synonyms VALUES ('Groonga', ARRAY['Groonga', 'Senna']);
+SELECT pgroonga.query_expand('synonyms', 'term', 'synonyms', 'Groonga');
+      query_expand      
+------------------------
+ ((Groonga) OR (Senna))
+(1 row)
+
+DROP TABLE synonyms;

  Added: expected/compatibility/schema/function/query-expand/hash-index.out (+13 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/query-expand/hash-index.out    2017-08-10 14:49:35 +0900 (05696a5)
@@ -0,0 +1,13 @@
+CREATE UNLOGGED TABLE synonyms (
+  term text,
+  synonyms text[]
+);
+CREATE INDEX synonyms_term_index ON synonyms USING hash (term);
+INSERT INTO synonyms VALUES ('Groonga', ARRAY['Groonga', 'Senna']);
+SELECT pgroonga.query_expand('synonyms', 'term', 'synonyms', 'Groonga');
+      query_expand      
+------------------------
+ ((Groonga) OR (Senna))
+(1 row)
+
+DROP TABLE synonyms;

  Added: expected/compatibility/schema/function/query-expand/mix.out (+14 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/query-expand/mix.out    2017-08-10 14:49:35 +0900 (ec0f4b6)
@@ -0,0 +1,14 @@
+CREATE TABLE synonyms (
+  term text PRIMARY KEY,
+  synonyms text[]
+);
+INSERT INTO synonyms VALUES ('Mroonga', ARRAY['Mroonga', 'Groonga MySQL']);
+INSERT INTO synonyms VALUES ('PGroonga', ARRAY['PGroonga', 'Groonga PostgreSQL']);
+SELECT pgroonga.query_expand('synonyms', 'term', 'synonyms',
+                             'Ruby (Mroonga OR PGroonga)');
+                                 query_expand                                  
+-------------------------------------------------------------------------------
+ Ruby (((Mroonga) OR (Groonga MySQL)) OR ((PGroonga) OR (Groonga PostgreSQL)))
+(1 row)
+
+DROP TABLE synonyms;

  Added: expected/compatibility/schema/function/query-expand/multiple-terms.out (+14 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/query-expand/multiple-terms.out    2017-08-10 14:49:35 +0900 (150413e)
@@ -0,0 +1,14 @@
+CREATE TABLE synonyms (
+  term text,
+  synonyms text[]
+);
+CREATE INDEX synonyms_term_index ON synonyms (term);
+INSERT INTO synonyms VALUES ('Groonga', ARRAY['Groonga', 'Senna']);
+INSERT INTO synonyms VALUES ('Groonga', ARRAY['Mroonga', 'PGroonga', 'Rroonga']);
+SELECT pgroonga.query_expand('synonyms', 'term', 'synonyms', 'Groonga');
+                          query_expand                          
+----------------------------------------------------------------
+ ((Mroonga) OR (PGroonga) OR (Rroonga) OR (Groonga) OR (Senna))
+(1 row)
+
+DROP TABLE synonyms;

  Added: expected/compatibility/schema/function/query-expand/no-index.out (+12 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/query-expand/no-index.out    2017-08-10 14:49:35 +0900 (71175ba)
@@ -0,0 +1,12 @@
+CREATE TABLE synonyms (
+  term text,
+  synonyms text[]
+);
+INSERT INTO synonyms VALUES ('Groonga', ARRAY['Groonga', 'Senna']);
+SELECT pgroonga.query_expand('synonyms', 'term', 'synonyms', 'Groonga');
+      query_expand      
+------------------------
+ ((Groonga) OR (Senna))
+(1 row)
+
+DROP TABLE synonyms;

  Added: expected/compatibility/schema/function/query-expand/nonexistent.out (+11 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/query-expand/nonexistent.out    2017-08-10 14:49:35 +0900 (b1719e9)
@@ -0,0 +1,11 @@
+CREATE TABLE synonyms (
+  term text PRIMARY KEY,
+  synonyms text[]
+);
+SELECT pgroonga.query_expand('synonyms', 'term', 'synonyms', 'Groonga');
+ query_expand 
+--------------
+ Groonga
+(1 row)
+
+DROP TABLE synonyms;

  Added: expected/compatibility/schema/function/query-expand/normal-index.out (+13 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/query-expand/normal-index.out    2017-08-10 14:49:35 +0900 (7411537)
@@ -0,0 +1,13 @@
+CREATE TABLE synonyms (
+  term text,
+  synonyms text[]
+);
+CREATE INDEX synonyms_term_index ON synonyms (term);
+INSERT INTO synonyms VALUES ('Groonga', ARRAY['Groonga', 'Senna']);
+SELECT pgroonga.query_expand('synonyms', 'term', 'synonyms', 'Groonga');
+      query_expand      
+------------------------
+ ((Groonga) OR (Senna))
+(1 row)
+
+DROP TABLE synonyms;

  Added: expected/compatibility/schema/function/query-expand/normalize-with-primary-key.out (+15 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/query-expand/normalize-with-primary-key.out    2017-08-10 14:49:35 +0900 (682c383)
@@ -0,0 +1,15 @@
+CREATE TABLE synonyms (
+  term text PRIMARY KEY,
+  synonyms text[]
+);
+CREATE INDEX synonyms_term_index ON synonyms
+  USING pgroonga (term pgroonga.text_term_search_ops_v2);
+INSERT INTO synonyms VALUES ('Groonga', ARRAY['Groonga', 'Senna']);
+INSERT INTO synonyms VALUES ('GROONGA', ARRAY['"Full text search"']);
+SELECT pgroonga.query_expand('synonyms', 'term', 'synonyms', 'groonga');
+                  query_expand                  
+------------------------------------------------
+ ((Groonga) OR (Senna) OR ("Full text search"))
+(1 row)
+
+DROP TABLE synonyms;

  Added: expected/compatibility/schema/function/query-expand/normalize.out (+15 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/query-expand/normalize.out    2017-08-10 14:49:35 +0900 (57c5d47)
@@ -0,0 +1,15 @@
+CREATE TABLE synonyms (
+  term text,
+  synonyms text[]
+);
+CREATE INDEX synonyms_term_index ON synonyms
+  USING pgroonga (term pgroonga.text_term_search_ops_v2);
+INSERT INTO synonyms VALUES ('Groonga', ARRAY['Groonga', 'Senna']);
+INSERT INTO synonyms VALUES ('GROONGA', ARRAY['"Full text search"']);
+SELECT pgroonga.query_expand('synonyms', 'term', 'synonyms', 'groonga');
+                  query_expand                  
+------------------------------------------------
+ ((Groonga) OR (Senna) OR ("Full text search"))
+(1 row)
+
+DROP TABLE synonyms;

  Added: expected/compatibility/schema/function/query-expand/not-text-array-synonyms.out (+7 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/query-expand/not-text-array-synonyms.out    2017-08-10 14:49:35 +0900 (4699062)
@@ -0,0 +1,7 @@
+CREATE TABLE synonyms (
+  term text PRIMARY KEY,
+  synonym text
+);
+SELECT pgroonga.query_expand('synonyms', 'term', 'synonym', 'Groonga');
+ERROR:  pgroonga: query_expand: synonyms column isn't text[] type: <synonyms>.<synonym>
+DROP TABLE synonyms;

  Added: expected/compatibility/schema/function/score/and.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/score/and.out    2017-08-10 14:49:35 +0900 (2fce89b)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer PRIMARY KEY,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (id pgroonga.int4_ops,
+                  content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content, pgroonga.score(memos)
+  FROM memos
+ WHERE content %% 'PGroonga' AND content %% 'Groonga';
+ id |                        content                        | score 
+----+-------------------------------------------------------+-------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga. |     2
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/function/score/composite-primary-key/like.out (+29 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/score/composite-primary-key/like.out    2017-08-10 14:49:35 +0900 (8f49a35)
@@ -0,0 +1,29 @@
+CREATE TABLE memos (
+  created_date varchar(10),
+  slug varchar(100),
+  content text,
+  PRIMARY KEY (created_date, slug)
+);
+INSERT INTO memos VALUES
+  ('2015-11-19', 'postgresql', 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES
+  ('2015-11-19', 'groonga', 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES
+  ('2015-11-19', 'pgroonga', 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (created_date pgroonga.varchar_ops,
+                  slug pgroonga.varchar_ops,
+                  content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT created_date, slug, content, pgroonga.score(memos)
+  FROM memos
+ WHERE content LIKE '%Groonga%';
+ created_date |   slug   |                        content                        | score 
+--------------+----------+-------------------------------------------------------+-------
+ 2015-11-19   | groonga  | Groonga is fast full text search engine.              |     1
+ 2015-11-19   | pgroonga | PGroonga is a PostgreSQL extension that uses Groonga. |     1
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/function/score/composite-primary-key/match.out (+29 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/score/composite-primary-key/match.out    2017-08-10 14:49:35 +0900 (5bd4305)
@@ -0,0 +1,29 @@
+CREATE TABLE memos (
+  created_date varchar(10),
+  slug varchar(100),
+  content text,
+  PRIMARY KEY (created_date, slug)
+);
+INSERT INTO memos VALUES
+  ('2015-11-19', 'postgresql', 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES
+  ('2015-11-19', 'groonga', 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES
+  ('2015-11-19', 'pgroonga', 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (created_date pgroonga.varchar_ops,
+                  slug pgroonga.varchar_ops,
+                  content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT created_date, slug, content, pgroonga.score(memos)
+  FROM memos
+ WHERE content %% 'Groonga';
+ created_date |   slug   |                        content                        | score 
+--------------+----------+-------------------------------------------------------+-------
+ 2015-11-19   | groonga  | Groonga is fast full text search engine.              |     1
+ 2015-11-19   | pgroonga | PGroonga is a PostgreSQL extension that uses Groonga. |     1
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/function/score/hot-updated.out (+26 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/score/hot-updated.out    2017-08-10 14:49:35 +0900 (0f365e4)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer PRIMARY KEY,
+  tag varchar(256),
+  content text
+);
+CREATE INDEX grnindex ON memos
+  USING pgroonga (id pgroonga.int4_ops,
+                  content pgroonga.text_full_text_search_ops);
+INSERT INTO memos VALUES (1, 'pgsql', 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'groonga', 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'pgsql', 'PGroonga is a PostgreSQL extension that uses Groonga.');
+UPDATE memos SET tag = 'groonga'
+ WHERE id = 3;
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content, pgroonga.score(memos)
+  FROM memos
+ WHERE content @@ 'PGroonga OR Groonga';
+ id |                        content                        | score 
+----+-------------------------------------------------------+-------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga. |     2
+  2 | Groonga is fast full text search engine.              |     1
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/function/score/or.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/score/or.out    2017-08-10 14:49:35 +0900 (cb0f536)
@@ -0,0 +1,23 @@
+CREATE TABLE memos (
+  id integer PRIMARY KEY,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (id pgroonga.int4_ops,
+                  content pgroonga.text_full_text_search_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content, pgroonga.score(memos)
+  FROM memos
+ WHERE content %% 'PGroonga' OR content %% 'Groonga';
+ id |                        content                        | score 
+----+-------------------------------------------------------+-------
+  2 | Groonga is fast full text search engine.              |     1
+  3 | PGroonga is a PostgreSQL extension that uses Groonga. |     2
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/function/score/primary-key/not-head.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/score/primary-key/not-head.out    2017-08-10 14:49:35 +0900 (58a51f7)
@@ -0,0 +1,23 @@
+CREATE TABLE memos (
+  content text,
+  id int PRIMARY KEY
+);
+CREATE INDEX pgroonga_index ON memos
+  USING pgroonga (id pgroonga.int4_ops,
+                  content pgroonga.text_full_text_search_ops);
+INSERT INTO memos (id, content) VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos (id, content) VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos (id, content) VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content, pgroonga.score(memos)
+  FROM memos
+ WHERE content &@~ 'PGroonga OR Groonga';
+ id |                        content                        | score 
+----+-------------------------------------------------------+-------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga. |     2
+  2 | Groonga is fast full text search engine.              |     1
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/function/score/primary-key/text.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/score/primary-key/text.out    2017-08-10 14:49:35 +0900 (28fa944)
@@ -0,0 +1,23 @@
+CREATE TABLE memos (
+  id text PRIMARY KEY,
+  content text
+);
+CREATE INDEX pgroonga_index ON memos
+ USING pgroonga (id pgroonga.text_term_search_ops_v2,
+                 content pgroonga.text_full_text_search_ops);
+INSERT INTO memos VALUES ('a', 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES ('b', 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES ('c', 'PGroonga is a PostgreSQL extension that uses Groonga.');
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content, pgroonga.score(memos)
+  FROM memos
+ WHERE content &@~ 'PGroonga OR Groonga';
+ id |                        content                        | score 
+----+-------------------------------------------------------+-------
+ c  | PGroonga is a PostgreSQL extension that uses Groonga. |     2
+ b  | Groonga is fast full text search engine.              |     1
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/function/score/updated.out (+25 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/function/score/updated.out    2017-08-10 14:49:35 +0900 (d3fcbd4)
@@ -0,0 +1,25 @@
+CREATE TABLE memos (
+  id integer PRIMARY KEY,
+  content text
+);
+CREATE INDEX grnindex ON memos
+  USING pgroonga (id pgroonga.int4_ops,
+                  content pgroonga.text_full_text_search_ops);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+UPDATE memos SET content = 'Mroonga is a MySQL plugin that uses Groonga.'
+ WHERE id = 3;
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content, pgroonga.score(memos)
+  FROM memos
+ WHERE content @@ 'PGroonga OR Mroonga OR Groonga';
+ id |                   content                    | score 
+----+----------------------------------------------+-------
+  3 | Mroonga is a MySQL plugin that uses Groonga. |     2
+  2 | Groonga is fast full text search engine.     |     1
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/groonga-function/tuple-is-alive/and.out (+25 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/groonga-function/tuple-is-alive/and.out    2017-08-10 14:49:35 +0900 (91e3e6f)
@@ -0,0 +1,25 @@
+CREATE TABLE memos (
+  id int PRIMARY KEY,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgroonga_index ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+UPDATE memos
+ SET content = 'Mroonga is a MySQL storage engine that uses Groonga.'
+ WHERE id = 3;
+SELECT pgroonga.command('select ' ||
+                        pgroonga.table_name('pgroonga_index') ||
+                        ' --match_columns content'
+                        ' --query Groonga'
+                        ' --filter "pgroonga_tuple_is_alive(ctid)"'
+                        ' --output_columns content')::json->>1
+    AS body;
+                                                                  body                                                                  
+----------------------------------------------------------------------------------------------------------------------------------------
+ [[[2],[["content","LongText"]],["Groonga is fast full text search engine."],["Mroonga is a MySQL storage engine that uses Groonga."]]]
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/groonga-function/tuple-is-alive/or.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/groonga-function/tuple-is-alive/or.out    2017-08-10 14:49:35 +0900 (ae08bc8)
@@ -0,0 +1,23 @@
+CREATE TABLE memos (
+  id int PRIMARY KEY,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgroonga_index ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+UPDATE memos
+ SET content = 'Mroonga is a MySQL storage engine that uses Groonga.'
+ WHERE id = 3;
+SELECT pgroonga.command('select ' ||
+                        pgroonga.table_name('pgroonga_index') ||
+                        ' --filter "pgroonga_tuple_is_alive(ctid)"'
+                        ' --output_columns content')::json->>1
+    AS body;
+                                                                               body                                                                                
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ [[[3],[["content","LongText"]],["PostgreSQL is a RDBMS."],["Groonga is fast full text search engine."],["Mroonga is a MySQL storage engine that uses Groonga."]]]
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/index-scan/kill-prior-tuple.out (+55 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/index-scan/kill-prior-tuple.out    2017-08-10 14:49:35 +0900 (d8fbd72)
@@ -0,0 +1,55 @@
+CREATE TABLE ids (
+  id integer,
+  memo text
+);
+CREATE INDEX pgroonga_index ON ids
+  USING pgroonga (id pgroonga.int4_ops,
+                  memo pgroonga.text_full_text_search_ops);
+INSERT INTO ids VALUES (2, 'a');
+INSERT INTO ids VALUES (7, 'a');
+INSERT INTO ids VALUES (6, 'a');
+INSERT INTO ids VALUES (4, 'a');
+INSERT INTO ids VALUES (5, 'a');
+INSERT INTO ids VALUES (8, 'a');
+INSERT INTO ids VALUES (1, 'a');
+INSERT INTO ids VALUES (10, 'a');
+INSERT INTO ids VALUES (3, 'a');
+INSERT INTO ids VALUES (9, 'a');
+INSERT INTO ids VALUES (12, 'a');
+INSERT INTO ids VALUES (17, 'a');
+INSERT INTO ids VALUES (16, 'a');
+INSERT INTO ids VALUES (14, 'a');
+INSERT INTO ids VALUES (15, 'a');
+INSERT INTO ids VALUES (18, 'a');
+INSERT INTO ids VALUES (11, 'a');
+INSERT INTO ids VALUES (110, 'a');
+INSERT INTO ids VALUES (13, 'a');
+INSERT INTO ids VALUES (19, 'a');
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+UPDATE ids SET memo = 'b' WHERE id = 10;
+UPDATE ids SET memo = 'b' WHERE id = 5;
+UPDATE ids SET memo = 'b' WHERE id = 6;
+SELECT * FROM ids WHERE 2 <= id and memo @@ 'a';
+ id  | memo 
+-----+------
+   2 | a
+   3 | a
+   4 | a
+   7 | a
+   8 | a
+   9 | a
+  11 | a
+  12 | a
+  13 | a
+  14 | a
+  15 | a
+  16 | a
+  17 | a
+  18 | a
+  19 | a
+ 110 | a
+(16 rows)
+
+DROP TABLE ids;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/match-v2/element/bitmapscan.out (+38 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/match-v2/element/bitmapscan.out    2017-08-10 14:49:35 +0900 (ab6bff1)
@@ -0,0 +1,38 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+                    QUERY PLAN                    
+--------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on fruits
+         Recheck Cond: (items &@ 'app'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (items &@ 'app'::text)
+(6 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  1 | ["apple"]
+  2 | ["banana", "apple"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/match-v2/element/indexscan.out (+36 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/match-v2/element/indexscan.out    2017-08-10 14:49:35 +0900 (9452e44)
@@ -0,0 +1,36 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+                   QUERY PLAN                    
+-------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on fruits
+         Index Cond: (items &@ 'app'::text)
+(4 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  1 | ["apple"]
+  2 | ["banana", "apple"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/match-v2/element/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/match-v2/element/seqscan.out    2017-08-10 14:49:35 +0900 (df4164a)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  1 | ["apple"]
+  2 | ["banana", "apple"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/match-v2/value/bitmapscan.out (+38 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/match-v2/value/bitmapscan.out    2017-08-10 14:49:35 +0900 (f9dd126)
@@ -0,0 +1,38 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+                    QUERY PLAN                    
+--------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on fruits
+         Recheck Cond: (items &@ 'app'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (items &@ 'app'::text)
+(6 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+ id |       items       
+----+-------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/match-v2/value/indexscan.out (+36 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/match-v2/value/indexscan.out    2017-08-10 14:49:35 +0900 (609271a)
@@ -0,0 +1,36 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+                   QUERY PLAN                    
+-------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on fruits
+         Index Cond: (items &@ 'app'::text)
+(4 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+ id |       items       
+----+-------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/match-v2/value/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/match-v2/value/seqscan.out    2017-08-10 14:49:35 +0900 (24c85e8)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+ id |       items       
+----+-------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/query-v2-question/element/bitmapscan.out (+38 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/query-v2-question/element/bitmapscan.out    2017-08-10 14:49:35 +0900 (b558489)
@@ -0,0 +1,38 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'banana OR peach'
+ ORDER BY id;
+                          QUERY PLAN                          
+--------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on fruits
+         Recheck Cond: (items &? 'banana OR peach'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (items &? 'banana OR peach'::text)
+(6 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'banana OR peach'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  2 | ["banana", "apple"]
+  3 | ["peach"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/query-v2-question/element/indexscan.out (+36 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/query-v2-question/element/indexscan.out    2017-08-10 14:49:35 +0900 (ac29df1)
@@ -0,0 +1,36 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'banana OR peach'
+ ORDER BY id;
+                       QUERY PLAN                       
+--------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on fruits
+         Index Cond: (items &? 'banana OR peach'::text)
+(4 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'banana OR peach'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  2 | ["banana", "apple"]
+  3 | ["peach"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/query-v2-question/element/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/query-v2-question/element/seqscan.out    2017-08-10 14:49:35 +0900 (da01d1d)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'banana OR peach'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  2 | ["banana", "apple"]
+  3 | ["peach"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/query-v2-question/value/bitmapscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/query-v2-question/value/bitmapscan.out    2017-08-10 14:49:35 +0900 (267a508)
@@ -0,0 +1,40 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+INSERT INTO fruits VALUES (4, '{"like": "banana"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'apple OR banana'
+ ORDER BY id;
+                          QUERY PLAN                          
+--------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on fruits
+         Recheck Cond: (items &? 'apple OR banana'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (items &? 'apple OR banana'::text)
+(6 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'apple OR banana'
+ ORDER BY id;
+ id |       items        
+----+--------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+  4 | {"like": "banana"}
+(3 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/query-v2-question/value/indexscan.out (+38 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/query-v2-question/value/indexscan.out    2017-08-10 14:49:35 +0900 (5777897)
@@ -0,0 +1,38 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+INSERT INTO fruits VALUES (4, '{"like": "banana"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'apple OR banana'
+ ORDER BY id;
+                       QUERY PLAN                       
+--------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on fruits
+         Index Cond: (items &? 'apple OR banana'::text)
+(4 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'apple OR banana'
+ ORDER BY id;
+ id |       items        
+----+--------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+  4 | {"like": "banana"}
+(3 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/query-v2-question/value/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/query-v2-question/value/seqscan.out    2017-08-10 14:49:35 +0900 (2cab725)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+INSERT INTO fruits VALUES (4, '{"like": "banana"}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'apple OR banana'
+ ORDER BY id;
+ id |       items        
+----+--------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+  4 | {"like": "banana"}
+(3 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/query-v2/element/bitmapscan.out (+38 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/query-v2/element/bitmapscan.out    2017-08-10 14:49:35 +0900 (61ca850)
@@ -0,0 +1,38 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'banana OR peach'
+ ORDER BY id;
+                          QUERY PLAN                           
+---------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on fruits
+         Recheck Cond: (items &@~ 'banana OR peach'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (items &@~ 'banana OR peach'::text)
+(6 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'banana OR peach'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  2 | ["banana", "apple"]
+  3 | ["peach"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/query-v2/element/indexscan.out (+36 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/query-v2/element/indexscan.out    2017-08-10 14:49:35 +0900 (01a0041)
@@ -0,0 +1,36 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'banana OR peach'
+ ORDER BY id;
+                       QUERY PLAN                        
+---------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on fruits
+         Index Cond: (items &@~ 'banana OR peach'::text)
+(4 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'banana OR peach'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  2 | ["banana", "apple"]
+  3 | ["peach"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/query-v2/element/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/query-v2/element/seqscan.out    2017-08-10 14:49:35 +0900 (0ff7fbb)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'banana OR peach'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  2 | ["banana", "apple"]
+  3 | ["peach"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/query-v2/value/bitmapscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/query-v2/value/bitmapscan.out    2017-08-10 14:49:35 +0900 (bef1c16)
@@ -0,0 +1,40 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+INSERT INTO fruits VALUES (4, '{"like": "banana"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'apple OR banana'
+ ORDER BY id;
+                          QUERY PLAN                           
+---------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on fruits
+         Recheck Cond: (items &@~ 'apple OR banana'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (items &@~ 'apple OR banana'::text)
+(6 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'apple OR banana'
+ ORDER BY id;
+ id |       items        
+----+--------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+  4 | {"like": "banana"}
+(3 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/query-v2/value/indexscan.out (+38 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/query-v2/value/indexscan.out    2017-08-10 14:49:35 +0900 (835886e)
@@ -0,0 +1,38 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+INSERT INTO fruits VALUES (4, '{"like": "banana"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'apple OR banana'
+ ORDER BY id;
+                       QUERY PLAN                        
+---------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on fruits
+         Index Cond: (items &@~ 'apple OR banana'::text)
+(4 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'apple OR banana'
+ ORDER BY id;
+ id |       items        
+----+--------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+  4 | {"like": "banana"}
+(3 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/query-v2/value/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/query-v2/value/seqscan.out    2017-08-10 14:49:35 +0900 (3920467)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+INSERT INTO fruits VALUES (4, '{"like": "banana"}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'apple OR banana'
+ ORDER BY id;
+ id |       items        
+----+--------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+  4 | {"like": "banana"}
+(3 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/delete/multiple-values.out (+24 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/delete/multiple-values.out    2017-08-10 14:49:35 +0900 (d55a23e)
@@ -0,0 +1,24 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+DELETE FROM fruits WHERE id = 1;
+VACUUM;
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'string == "apple"'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  2 | ["banana", "apple"]
+(1 row)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/boolean/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/boolean/bitmapscan.out    2017-08-10 14:49:35 +0900 (51060a4)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[true]');
+INSERT INTO fruits VALUES (2, '[false]');
+INSERT INTO fruits VALUES (3, '[true]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'boolean == true'
+ ORDER BY id;
+ id | items  
+----+--------
+  1 | [true]
+  3 | [true]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/boolean/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/boolean/indexscan.out    2017-08-10 14:49:35 +0900 (54977a8)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[true]');
+INSERT INTO fruits VALUES (2, '[false]');
+INSERT INTO fruits VALUES (3, '[true]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'boolean == true'
+ ORDER BY id;
+ id | items  
+----+--------
+  1 | [true]
+  3 | [true]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/boolean/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/boolean/seqscan.out    2017-08-10 14:49:35 +0900 (483805a)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[true]');
+INSERT INTO fruits VALUES (2, '[false]');
+INSERT INTO fruits VALUES (3, '[true]');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'boolean == true'
+ ORDER BY id;
+ id | items  
+----+--------
+  1 | [true]
+  3 | [true]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/number/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/number/bitmapscan.out    2017-08-10 14:49:35 +0900 (a4fa3ed)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[100]');
+INSERT INTO fruits VALUES (2, '[200, 30]');
+INSERT INTO fruits VALUES (3, '[150]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |   items   
+----+-----------
+  1 | [100]
+  2 | [200, 30]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/number/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/number/indexscan.out    2017-08-10 14:49:35 +0900 (74aeb0e)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[100]');
+INSERT INTO fruits VALUES (2, '[200, 30]');
+INSERT INTO fruits VALUES (3, '[150]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |   items   
+----+-----------
+  1 | [100]
+  2 | [200, 30]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/number/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/number/seqscan.out    2017-08-10 14:49:35 +0900 (2adcbf3)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[100]');
+INSERT INTO fruits VALUES (2, '[200, 30]');
+INSERT INTO fruits VALUES (3, '[150]');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |   items   
+----+-----------
+  1 | [100]
+  2 | [200, 30]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/string/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/string/bitmapscan.out    2017-08-10 14:49:35 +0900 (08bd1ce)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'string == "apple"'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  1 | ["apple"]
+  2 | ["banana", "apple"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/string/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/string/indexscan.out    2017-08-10 14:49:35 +0900 (3e6da99)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'string == "apple"'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  1 | ["apple"]
+  2 | ["banana", "apple"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/string/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/element/string/seqscan.out    2017-08-10 14:49:35 +0900 (5aedbca)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'string == "apple"'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  1 | ["apple"]
+  2 | ["banana", "apple"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/full-text-search/default.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/full-text-search/default.out    2017-08-10 14:49:35 +0900 (b84a1ab)
@@ -0,0 +1,23 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": "Hello World"}');
+INSERT INTO logs VALUES (2, '{"message": "This is a pen"}');
+INSERT INTO logs VALUES (3, '{"message": "Good-by World"}');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, record
+  FROM logs
+ WHERE record &` 'string @ "world"'
+ ORDER BY id;
+ id |            record            
+----+------------------------------
+  1 | {"message": "Hello World"}
+  3 | {"message": "Good-by World"}
+(2 rows)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/full-text-search/disable.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/full-text-search/disable.out    2017-08-10 14:49:35 +0900 (f8da67a)
@@ -0,0 +1,31 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": "Hello World"}');
+INSERT INTO logs VALUES (2, '{"message": "This is a pen"}');
+INSERT INTO logs VALUES (3, '{"message": "Good-by World"}');
+CREATE INDEX pgroonga_index ON logs
+ USING pgroonga (record pgroonga.jsonb_ops)
+  WITH (tokenizer = '');
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, record
+  FROM logs
+ WHERE record &` 'string @ "world"'
+ ORDER BY id;
+ id | record 
+----+--------
+(0 rows)
+
+SELECT id, record
+  FROM logs
+ WHERE record &` 'string == "Hello World"'
+ ORDER BY id;
+ id |           record           
+----+----------------------------
+  1 | {"message": "Hello World"}
+(1 row)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/object/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/object/bitmapscan.out    2017-08-10 14:49:35 +0900 (ba295d5)
@@ -0,0 +1,22 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": {"code": 100, "content": "hello"}}');
+INSERT INTO logs VALUES (1, '{"message": "hello"}');
+INSERT INTO logs VALUES (1, '{"message": ["hello", "world"]}');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, record
+  FROM logs
+ WHERE record &` 'paths @ ".message" && type == "object"'
+ ORDER BY id;
+ id |                     record                     
+----+------------------------------------------------
+  1 | {"message": {"code": 100, "content": "hello"}}
+(1 row)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/object/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/object/indexscan.out    2017-08-10 14:49:35 +0900 (c25a2bb)
@@ -0,0 +1,22 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": {"code": 100, "content": "hello"}}');
+INSERT INTO logs VALUES (1, '{"message": "hello"}');
+INSERT INTO logs VALUES (1, '{"message": ["hello", "world"]}');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, record
+  FROM logs
+ WHERE record &` 'paths @ ".message" && type == "object"'
+ ORDER BY id;
+ id |                     record                     
+----+------------------------------------------------
+  1 | {"message": {"code": 100, "content": "hello"}}
+(1 row)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/object/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/object/seqscan.out    2017-08-10 14:49:35 +0900 (6743d1a)
@@ -0,0 +1,20 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": {"code": 100, "content": "hello"}}');
+INSERT INTO logs VALUES (1, '{"message": "hello"}');
+INSERT INTO logs VALUES (1, '{"message": ["hello", "world"]}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, record
+  FROM logs
+ WHERE record &` 'paths @ ".message" && type == "object"'
+ ORDER BY id;
+ id |                     record                     
+----+------------------------------------------------
+  1 | {"message": {"code": 100, "content": "hello"}}
+(1 row)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/boolean/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/boolean/bitmapscan.out    2017-08-10 14:49:35 +0900 (47ccd31)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  true}');
+INSERT INTO fruits VALUES (2, '{"banana": false}');
+INSERT INTO fruits VALUES (3, '{"peach":  true}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'boolean == true'
+ ORDER BY id;
+ id |      items      
+----+-----------------
+  1 | {"apple": true}
+  3 | {"peach": true}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/boolean/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/boolean/indexscan.out    2017-08-10 14:49:35 +0900 (2cda322)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  true}');
+INSERT INTO fruits VALUES (2, '{"banana": false}');
+INSERT INTO fruits VALUES (3, '{"peach":  true}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'boolean == true'
+ ORDER BY id;
+ id |      items      
+----+-----------------
+  1 | {"apple": true}
+  3 | {"peach": true}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/boolean/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/boolean/seqscan.out    2017-08-10 14:49:35 +0900 (e28b27d)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  true}');
+INSERT INTO fruits VALUES (2, '{"banana": false}');
+INSERT INTO fruits VALUES (3, '{"peach":  true}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'boolean == true'
+ ORDER BY id;
+ id |      items      
+----+-----------------
+  1 | {"apple": true}
+  3 | {"peach": true}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/number/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/number/bitmapscan.out    2017-08-10 14:49:35 +0900 (62f4256)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  100}');
+INSERT INTO fruits VALUES (2, '{"banana":  30}');
+INSERT INTO fruits VALUES (3, '{"peach":  150}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |     items      
+----+----------------
+  1 | {"apple": 100}
+  2 | {"banana": 30}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/number/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/number/indexscan.out    2017-08-10 14:49:35 +0900 (2ee5f9c)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  100}');
+INSERT INTO fruits VALUES (2, '{"banana":  30}');
+INSERT INTO fruits VALUES (3, '{"peach":  150}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |     items      
+----+----------------
+  1 | {"apple": 100}
+  2 | {"banana": 30}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/number/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/number/seqscan.out    2017-08-10 14:49:35 +0900 (bd79b2e)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  100}');
+INSERT INTO fruits VALUES (2, '{"banana":  30}');
+INSERT INTO fruits VALUES (3, '{"peach":  150}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |     items      
+----+----------------
+  1 | {"apple": 100}
+  2 | {"banana": 30}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/string/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/string/bitmapscan.out    2017-08-10 14:49:35 +0900 (fae084c)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'string == "apple"'
+ ORDER BY id;
+ id |       items       
+----+-------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/string/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/string/indexscan.out    2017-08-10 14:49:35 +0900 (9352c79)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'string == "apple"'
+ ORDER BY id;
+ id |       items       
+----+-------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/string/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v1/script-v2/value/string/seqscan.out    2017-08-10 14:49:35 +0900 (5d2de45)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'string == "apple"'
+ ORDER BY id;
+ id |       items       
+----+-------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/query-v2/element/bitmapscan.out (+38 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/query-v2/element/bitmapscan.out    2017-08-10 14:49:35 +0900 (943df62)
@@ -0,0 +1,38 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'banana OR peach'
+ ORDER BY id;
+                          QUERY PLAN                          
+--------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on fruits
+         Recheck Cond: (items &? 'banana OR peach'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (items &? 'banana OR peach'::text)
+(6 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'banana OR peach'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  2 | ["banana", "apple"]
+  3 | ["peach"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/query-v2/element/indexscan.out (+36 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/query-v2/element/indexscan.out    2017-08-10 14:49:35 +0900 (6f3ddac)
@@ -0,0 +1,36 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'banana OR peach'
+ ORDER BY id;
+                       QUERY PLAN                       
+--------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on fruits
+         Index Cond: (items &? 'banana OR peach'::text)
+(4 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'banana OR peach'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  2 | ["banana", "apple"]
+  3 | ["peach"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/query-v2/element/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/query-v2/element/seqscan.out    2017-08-10 14:49:35 +0900 (da01d1d)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'banana OR peach'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  2 | ["banana", "apple"]
+  3 | ["peach"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/query-v2/value/bitmapscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/query-v2/value/bitmapscan.out    2017-08-10 14:49:35 +0900 (0bd4889)
@@ -0,0 +1,40 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+INSERT INTO fruits VALUES (4, '{"like": "banana"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'apple OR banana'
+ ORDER BY id;
+                          QUERY PLAN                          
+--------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on fruits
+         Recheck Cond: (items &? 'apple OR banana'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (items &? 'apple OR banana'::text)
+(6 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'apple OR banana'
+ ORDER BY id;
+ id |       items        
+----+--------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+  4 | {"like": "banana"}
+(3 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/query-v2/value/indexscan.out (+38 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/query-v2/value/indexscan.out    2017-08-10 14:49:35 +0900 (1a6ec71)
@@ -0,0 +1,38 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+INSERT INTO fruits VALUES (4, '{"like": "banana"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'apple OR banana'
+ ORDER BY id;
+                       QUERY PLAN                       
+--------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on fruits
+         Index Cond: (items &? 'apple OR banana'::text)
+(4 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'apple OR banana'
+ ORDER BY id;
+ id |       items        
+----+--------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+  4 | {"like": "banana"}
+(3 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/query-v2/value/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/query-v2/value/seqscan.out    2017-08-10 14:49:35 +0900 (2cab725)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+INSERT INTO fruits VALUES (4, '{"like": "banana"}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &? 'apple OR banana'
+ ORDER BY id;
+ id |       items        
+----+--------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+  4 | {"like": "banana"}
+(3 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/delete/multiple-values.out (+24 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/delete/multiple-values.out    2017-08-10 14:49:35 +0900 (0e2d967)
@@ -0,0 +1,24 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+DELETE FROM fruits WHERE id = 1;
+VACUUM;
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'string == "apple"'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  2 | ["banana", "apple"]
+(1 row)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/boolean/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/boolean/bitmapscan.out    2017-08-10 14:49:35 +0900 (73a6765)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[true]');
+INSERT INTO fruits VALUES (2, '[false]');
+INSERT INTO fruits VALUES (3, '[true]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'boolean == true'
+ ORDER BY id;
+ id | items  
+----+--------
+  1 | [true]
+  3 | [true]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/boolean/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/boolean/indexscan.out    2017-08-10 14:49:35 +0900 (336663b)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[true]');
+INSERT INTO fruits VALUES (2, '[false]');
+INSERT INTO fruits VALUES (3, '[true]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'boolean == true'
+ ORDER BY id;
+ id | items  
+----+--------
+  1 | [true]
+  3 | [true]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/boolean/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/boolean/seqscan.out    2017-08-10 14:49:35 +0900 (e87cb29)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[true]');
+INSERT INTO fruits VALUES (2, '[false]');
+INSERT INTO fruits VALUES (3, '[true]');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'boolean == true'
+ ORDER BY id;
+ id | items  
+----+--------
+  1 | [true]
+  3 | [true]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/number/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/number/bitmapscan.out    2017-08-10 14:49:35 +0900 (6dbf675)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[100]');
+INSERT INTO fruits VALUES (2, '[200, 30]');
+INSERT INTO fruits VALUES (3, '[150]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |   items   
+----+-----------
+  1 | [100]
+  2 | [200, 30]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/number/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/number/indexscan.out    2017-08-10 14:49:35 +0900 (9ef5701)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[100]');
+INSERT INTO fruits VALUES (2, '[200, 30]');
+INSERT INTO fruits VALUES (3, '[150]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |   items   
+----+-----------
+  1 | [100]
+  2 | [200, 30]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/number/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/number/seqscan.out    2017-08-10 14:49:35 +0900 (0dc79bf)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[100]');
+INSERT INTO fruits VALUES (2, '[200, 30]');
+INSERT INTO fruits VALUES (3, '[150]');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |   items   
+----+-----------
+  1 | [100]
+  2 | [200, 30]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/string/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/string/bitmapscan.out    2017-08-10 14:49:35 +0900 (6df1cdb)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'string == "apple"'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  1 | ["apple"]
+  2 | ["banana", "apple"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/string/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/string/indexscan.out    2017-08-10 14:49:35 +0900 (1dcc9c2)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'string == "apple"'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  1 | ["apple"]
+  2 | ["banana", "apple"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/string/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/element/string/seqscan.out    2017-08-10 14:49:35 +0900 (7a6f8a5)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'string == "apple"'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  1 | ["apple"]
+  2 | ["banana", "apple"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/full-text-search/default.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/full-text-search/default.out    2017-08-10 14:49:35 +0900 (533b39d)
@@ -0,0 +1,23 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": "Hello World"}');
+INSERT INTO logs VALUES (2, '{"message": "This is a pen"}');
+INSERT INTO logs VALUES (3, '{"message": "Good-by World"}');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, record
+  FROM logs
+ WHERE record @@ 'string @ "world"'
+ ORDER BY id;
+ id |            record            
+----+------------------------------
+  1 | {"message": "Hello World"}
+  3 | {"message": "Good-by World"}
+(2 rows)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/full-text-search/disable.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/full-text-search/disable.out    2017-08-10 14:49:35 +0900 (509b7ba)
@@ -0,0 +1,31 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": "Hello World"}');
+INSERT INTO logs VALUES (2, '{"message": "This is a pen"}');
+INSERT INTO logs VALUES (3, '{"message": "Good-by World"}');
+CREATE INDEX pgroonga_index ON logs
+ USING pgroonga (record pgroonga.jsonb_ops_v2)
+  WITH (tokenizer = '');
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, record
+  FROM logs
+ WHERE record @@ 'string @ "world"'
+ ORDER BY id;
+ id | record 
+----+--------
+(0 rows)
+
+SELECT id, record
+  FROM logs
+ WHERE record @@ 'string == "Hello World"'
+ ORDER BY id;
+ id |           record           
+----+----------------------------
+  1 | {"message": "Hello World"}
+(1 row)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/object/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/object/bitmapscan.out    2017-08-10 14:49:35 +0900 (dbbdc49)
@@ -0,0 +1,22 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": {"code": 100, "content": "hello"}}');
+INSERT INTO logs VALUES (1, '{"message": "hello"}');
+INSERT INTO logs VALUES (1, '{"message": ["hello", "world"]}');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, record
+  FROM logs
+ WHERE record @@ 'paths @ ".message" && type == "object"'
+ ORDER BY id;
+ id |                     record                     
+----+------------------------------------------------
+  1 | {"message": {"code": 100, "content": "hello"}}
+(1 row)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/object/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/object/indexscan.out    2017-08-10 14:49:35 +0900 (120a60b)
@@ -0,0 +1,22 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": {"code": 100, "content": "hello"}}');
+INSERT INTO logs VALUES (1, '{"message": "hello"}');
+INSERT INTO logs VALUES (1, '{"message": ["hello", "world"]}');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, record
+  FROM logs
+ WHERE record @@ 'paths @ ".message" && type == "object"'
+ ORDER BY id;
+ id |                     record                     
+----+------------------------------------------------
+  1 | {"message": {"code": 100, "content": "hello"}}
+(1 row)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/object/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/object/seqscan.out    2017-08-10 14:49:35 +0900 (32208b7)
@@ -0,0 +1,20 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": {"code": 100, "content": "hello"}}');
+INSERT INTO logs VALUES (1, '{"message": "hello"}');
+INSERT INTO logs VALUES (1, '{"message": ["hello", "world"]}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, record
+  FROM logs
+ WHERE record @@ 'paths @ ".message" && type == "object"'
+ ORDER BY id;
+ id |                     record                     
+----+------------------------------------------------
+  1 | {"message": {"code": 100, "content": "hello"}}
+(1 row)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/boolean/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/boolean/bitmapscan.out    2017-08-10 14:49:35 +0900 (dd528dd)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  true}');
+INSERT INTO fruits VALUES (2, '{"banana": false}');
+INSERT INTO fruits VALUES (3, '{"peach":  true}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'boolean == true'
+ ORDER BY id;
+ id |      items      
+----+-----------------
+  1 | {"apple": true}
+  3 | {"peach": true}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/boolean/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/boolean/indexscan.out    2017-08-10 14:49:35 +0900 (d8c2df6)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  true}');
+INSERT INTO fruits VALUES (2, '{"banana": false}');
+INSERT INTO fruits VALUES (3, '{"peach":  true}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'boolean == true'
+ ORDER BY id;
+ id |      items      
+----+-----------------
+  1 | {"apple": true}
+  3 | {"peach": true}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/boolean/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/boolean/seqscan.out    2017-08-10 14:49:35 +0900 (4e756f2)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  true}');
+INSERT INTO fruits VALUES (2, '{"banana": false}');
+INSERT INTO fruits VALUES (3, '{"peach":  true}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'boolean == true'
+ ORDER BY id;
+ id |      items      
+----+-----------------
+  1 | {"apple": true}
+  3 | {"peach": true}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/number/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/number/bitmapscan.out    2017-08-10 14:49:35 +0900 (4819aa8)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  100}');
+INSERT INTO fruits VALUES (2, '{"banana":  30}');
+INSERT INTO fruits VALUES (3, '{"peach":  150}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |     items      
+----+----------------
+  1 | {"apple": 100}
+  2 | {"banana": 30}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/number/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/number/indexscan.out    2017-08-10 14:49:35 +0900 (c961be3)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  100}');
+INSERT INTO fruits VALUES (2, '{"banana":  30}');
+INSERT INTO fruits VALUES (3, '{"peach":  150}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |     items      
+----+----------------
+  1 | {"apple": 100}
+  2 | {"banana": 30}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/number/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/number/seqscan.out    2017-08-10 14:49:35 +0900 (98bddd4)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  100}');
+INSERT INTO fruits VALUES (2, '{"banana":  30}');
+INSERT INTO fruits VALUES (3, '{"peach":  150}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |     items      
+----+----------------
+  1 | {"apple": 100}
+  2 | {"banana": 30}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/string/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/string/bitmapscan.out    2017-08-10 14:49:35 +0900 (1846bf0)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'string == "apple"'
+ ORDER BY id;
+ id |       items       
+----+-------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/string/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/string/indexscan.out    2017-08-10 14:49:35 +0900 (079feee)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'string == "apple"'
+ ORDER BY id;
+ id |       items       
+----+-------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/string/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/compatibility/v2/script-v1/value/string/seqscan.out    2017-08-10 14:49:35 +0900 (0825601)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'string == "apple"'
+ ORDER BY id;
+ id |       items       
+----+-------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/contain-v2/array/empty.out (+42 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/contain-v2/array/empty.out    2017-08-10 14:49:35 +0900 (c735a75)
@@ -0,0 +1,42 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '[]');
+INSERT INTO logs VALUES (2, '[100]');
+INSERT INTO logs VALUES (3, '["hello"]');
+INSERT INTO logs VALUES (4, '[true]');
+INSERT INTO logs VALUES (5, '[{"object": "value"}]');
+INSERT INTO logs VALUES (6, '{"object": []}');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, record
+  FROM logs
+ WHERE record @> '[]'::jsonb
+ ORDER BY id;
+                  QUERY PLAN                   
+-----------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on logs
+         Index Cond: (record @> '[]'::jsonb)
+(4 rows)
+
+SELECT id, record
+  FROM logs
+ WHERE record @> '[]'::jsonb
+ ORDER BY id;
+ id |        record         
+----+-----------------------
+  1 | []
+  2 | [100]
+  3 | ["hello"]
+  4 | [true]
+  5 | [{"object": "value"}]
+(5 rows)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/contain-v2/array/multiple-elements.out (+39 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/contain-v2/array/multiple-elements.out    2017-08-10 14:49:35 +0900 (01d4df4)
@@ -0,0 +1,39 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs
+     VALUES (1, '{"body": {"values": [100, "Hello", true]}}');
+INSERT INTO logs
+     VALUES (2, '{"values": [100, "Hello", true]}');
+INSERT INTO logs
+     VALUES (3, '{"body": {"values": [100, "Hello", true, "World"]}}');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, record
+  FROM logs
+ WHERE record @> '{"body": {"values": ["Hello", true, 100]}}'::jsonb
+ ORDER BY id;
+                                     QUERY PLAN                                      
+-------------------------------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on logs
+         Index Cond: (record @> '{"body": {"values": ["Hello", true, 100]}}'::jsonb)
+(4 rows)
+
+SELECT id, record
+  FROM logs
+ WHERE record @> '{"body": {"values": ["Hello", true, 100]}}'::jsonb
+ ORDER BY id;
+ id |                       record                        
+----+-----------------------------------------------------
+  1 | {"body": {"values": [100, "Hello", true]}}
+  3 | {"body": {"values": [100, "Hello", true, "World"]}}
+(2 rows)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/contain-v2/object/empty.out (+42 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/contain-v2/object/empty.out    2017-08-10 14:49:35 +0900 (fdd5e4f)
@@ -0,0 +1,42 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{}');
+INSERT INTO logs VALUES (2, '{"key": 100}');
+INSERT INTO logs VALUES (3, '{"key": "hello"}');
+INSERT INTO logs VALUES (4, '{"key": true}');
+INSERT INTO logs VALUES (5, '{"key": []}');
+INSERT INTO logs VALUES (6, '[{}]');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, record
+  FROM logs
+ WHERE record @> '{}'::jsonb
+ ORDER BY id;
+                  QUERY PLAN                   
+-----------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on logs
+         Index Cond: (record @> '{}'::jsonb)
+(4 rows)
+
+SELECT id, record
+  FROM logs
+ WHERE record @> '{}'::jsonb
+ ORDER BY id;
+ id |      record      
+----+------------------
+  1 | {}
+  2 | {"key": 100}
+  3 | {"key": "hello"}
+  4 | {"key": true}
+  5 | {"key": []}
+(5 rows)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/contain/array/empty.out (+29 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/contain/array/empty.out    2017-08-10 14:49:35 +0900 (61bfb3f)
@@ -0,0 +1,29 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '[]');
+INSERT INTO logs VALUES (2, '[100]');
+INSERT INTO logs VALUES (3, '["hello"]');
+INSERT INTO logs VALUES (4, '[true]');
+INSERT INTO logs VALUES (5, '[{"object": "value"}]');
+INSERT INTO logs VALUES (6, '{"object": []}');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, record
+  FROM logs
+ WHERE record @> '[]'::jsonb
+ ORDER BY id;
+ id |        record         
+----+-----------------------
+  1 | []
+  2 | [100]
+  3 | ["hello"]
+  4 | [true]
+  5 | [{"object": "value"}]
+(5 rows)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/contain/array/multiple-elements.out (+26 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/contain/array/multiple-elements.out    2017-08-10 14:49:35 +0900 (2af4c0f)
@@ -0,0 +1,26 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs
+     VALUES (1, '{"body": {"values": [100, "Hello", true]}}');
+INSERT INTO logs
+     VALUES (2, '{"values": [100, "Hello", true]}');
+INSERT INTO logs
+     VALUES (3, '{"body": {"values": [100, "Hello", true, "World"]}}');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, record
+  FROM logs
+ WHERE record @> '{"body": {"values": ["Hello", true, 100]}}'::jsonb
+ ORDER BY id;
+ id |                       record                        
+----+-----------------------------------------------------
+  1 | {"body": {"values": [100, "Hello", true]}}
+  3 | {"body": {"values": [100, "Hello", true, "World"]}}
+(2 rows)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/contain/object/empty.out (+29 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/contain/object/empty.out    2017-08-10 14:49:35 +0900 (0d76023)
@@ -0,0 +1,29 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{}');
+INSERT INTO logs VALUES (2, '{"key": 100}');
+INSERT INTO logs VALUES (3, '{"key": "hello"}');
+INSERT INTO logs VALUES (4, '{"key": true}');
+INSERT INTO logs VALUES (5, '{"key": []}');
+INSERT INTO logs VALUES (6, '[{}]');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, record
+  FROM logs
+ WHERE record @> '{}'::jsonb
+ ORDER BY id;
+ id |      record      
+----+------------------
+  1 | {}
+  2 | {"key": 100}
+  3 | {"key": "hello"}
+  4 | {"key": true}
+  5 | {"key": []}
+(5 rows)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/invalid/multicolumn-index.out (+9 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/invalid/multicolumn-index.out    2017-08-10 14:49:35 +0900 (769ed80)
@@ -0,0 +1,9 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (id pgroonga.int4_ops,
+                  items pgroonga.jsonb_ops);
+ERROR:  pgroonga: multicolumn index for jsonb isn't supported: <pgroonga_index>
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/match-v2/element/bitmapscan.out (+38 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/match-v2/element/bitmapscan.out    2017-08-10 14:49:35 +0900 (a3fdf59)
@@ -0,0 +1,38 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+                    QUERY PLAN                    
+--------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on fruits
+         Recheck Cond: (items &@ 'app'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (items &@ 'app'::text)
+(6 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  1 | ["apple"]
+  2 | ["banana", "apple"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/match-v2/element/indexscan.out (+36 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/match-v2/element/indexscan.out    2017-08-10 14:49:35 +0900 (ee6642d)
@@ -0,0 +1,36 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+                   QUERY PLAN                    
+-------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on fruits
+         Index Cond: (items &@ 'app'::text)
+(4 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  1 | ["apple"]
+  2 | ["banana", "apple"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/match-v2/element/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/match-v2/element/seqscan.out    2017-08-10 14:49:35 +0900 (df4164a)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  1 | ["apple"]
+  2 | ["banana", "apple"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/match-v2/value/bitmapscan.out (+38 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/match-v2/value/bitmapscan.out    2017-08-10 14:49:35 +0900 (9864d71)
@@ -0,0 +1,38 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+                    QUERY PLAN                    
+--------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on fruits
+         Recheck Cond: (items &@ 'app'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (items &@ 'app'::text)
+(6 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+ id |       items       
+----+-------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/match-v2/value/indexscan.out (+36 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/match-v2/value/indexscan.out    2017-08-10 14:49:35 +0900 (4981a9f)
@@ -0,0 +1,36 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+                   QUERY PLAN                    
+-------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on fruits
+         Index Cond: (items &@ 'app'::text)
+(4 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+ id |       items       
+----+-------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/match-v2/value/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/match-v2/value/seqscan.out    2017-08-10 14:49:35 +0900 (24c85e8)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &@ 'app'
+ ORDER BY id;
+ id |       items       
+----+-------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/null/insert.out (+13 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/null/insert.out    2017-08-10 14:49:35 +0900 (f078b2c)
@@ -0,0 +1,13 @@
+CREATE TABLE logs (
+  record jsonb
+);
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops_v2);
+INSERT INTO logs VALUES (NULL);
+SELECT * FROM logs;
+ record 
+--------
+ 
+(1 row)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/null/select.out (+14 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/null/select.out    2017-08-10 14:49:35 +0900 (3de2eb8)
@@ -0,0 +1,14 @@
+CREATE TABLE logs (
+  record jsonb
+);
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops_v2);
+INSERT INTO logs VALUES ('{}');
+SELECT *
+  FROM logs
+ WHERE record &@ null;
+ record 
+--------
+(0 rows)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/query-v2/element/bitmapscan.out (+38 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/query-v2/element/bitmapscan.out    2017-08-10 14:49:35 +0900 (220309b)
@@ -0,0 +1,38 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'banana OR peach'
+ ORDER BY id;
+                          QUERY PLAN                           
+---------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on fruits
+         Recheck Cond: (items &@~ 'banana OR peach'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (items &@~ 'banana OR peach'::text)
+(6 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'banana OR peach'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  2 | ["banana", "apple"]
+  3 | ["peach"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/query-v2/element/indexscan.out (+36 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/query-v2/element/indexscan.out    2017-08-10 14:49:35 +0900 (36d8d7e)
@@ -0,0 +1,36 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'banana OR peach'
+ ORDER BY id;
+                       QUERY PLAN                        
+---------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on fruits
+         Index Cond: (items &@~ 'banana OR peach'::text)
+(4 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'banana OR peach'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  2 | ["banana", "apple"]
+  3 | ["peach"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/query-v2/element/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/query-v2/element/seqscan.out    2017-08-10 14:49:35 +0900 (0ff7fbb)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'banana OR peach'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  2 | ["banana", "apple"]
+  3 | ["peach"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/query-v2/value/bitmapscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/query-v2/value/bitmapscan.out    2017-08-10 14:49:35 +0900 (5979d59)
@@ -0,0 +1,40 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+INSERT INTO fruits VALUES (4, '{"like": "banana"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'apple OR banana'
+ ORDER BY id;
+                          QUERY PLAN                           
+---------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on fruits
+         Recheck Cond: (items &@~ 'apple OR banana'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (items &@~ 'apple OR banana'::text)
+(6 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'apple OR banana'
+ ORDER BY id;
+ id |       items        
+----+--------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+  4 | {"like": "banana"}
+(3 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/query-v2/value/indexscan.out (+38 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/query-v2/value/indexscan.out    2017-08-10 14:49:35 +0900 (f9d5bf5)
@@ -0,0 +1,38 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+INSERT INTO fruits VALUES (4, '{"like": "banana"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'apple OR banana'
+ ORDER BY id;
+                       QUERY PLAN                        
+---------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on fruits
+         Index Cond: (items &@~ 'apple OR banana'::text)
+(4 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'apple OR banana'
+ ORDER BY id;
+ id |       items        
+----+--------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+  4 | {"like": "banana"}
+(3 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/query-v2/value/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/query-v2/value/seqscan.out    2017-08-10 14:49:35 +0900 (3920467)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+INSERT INTO fruits VALUES (4, '{"like": "banana"}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &@~ 'apple OR banana'
+ ORDER BY id;
+ id |       items        
+----+--------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+  4 | {"like": "banana"}
+(3 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/delete/multiple-values.out (+24 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/delete/multiple-values.out    2017-08-10 14:49:35 +0900 (515f151)
@@ -0,0 +1,24 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+DELETE FROM fruits WHERE id = 1;
+VACUUM;
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'string == "apple"'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  2 | ["banana", "apple"]
+(1 row)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/element/boolean/bitmapscan.out (+38 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/element/boolean/bitmapscan.out    2017-08-10 14:49:35 +0900 (e53a592)
@@ -0,0 +1,38 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[true]');
+INSERT INTO fruits VALUES (2, '[false]');
+INSERT INTO fruits VALUES (3, '[true]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'boolean == true'
+ ORDER BY id;
+                          QUERY PLAN                          
+--------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on fruits
+         Recheck Cond: (items &` 'boolean == true'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (items &` 'boolean == true'::text)
+(6 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'boolean == true'
+ ORDER BY id;
+ id | items  
+----+--------
+  1 | [true]
+  3 | [true]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/element/boolean/indexscan.out (+36 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/element/boolean/indexscan.out    2017-08-10 14:49:35 +0900 (9d19984)
@@ -0,0 +1,36 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[true]');
+INSERT INTO fruits VALUES (2, '[false]');
+INSERT INTO fruits VALUES (3, '[true]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'boolean == true'
+ ORDER BY id;
+                       QUERY PLAN                       
+--------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on fruits
+         Index Cond: (items &` 'boolean == true'::text)
+(4 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'boolean == true'
+ ORDER BY id;
+ id | items  
+----+--------
+  1 | [true]
+  3 | [true]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/element/boolean/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/element/boolean/seqscan.out    2017-08-10 14:49:35 +0900 (483805a)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[true]');
+INSERT INTO fruits VALUES (2, '[false]');
+INSERT INTO fruits VALUES (3, '[true]');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'boolean == true'
+ ORDER BY id;
+ id | items  
+----+--------
+  1 | [true]
+  3 | [true]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/element/number/bitmapscan.out (+38 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/element/number/bitmapscan.out    2017-08-10 14:49:35 +0900 (cd9681e)
@@ -0,0 +1,38 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[100]');
+INSERT INTO fruits VALUES (2, '[200, 30]');
+INSERT INTO fruits VALUES (3, '[150]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'type == "number" && number <= 100'
+ ORDER BY id;
+                                   QUERY PLAN                                   
+--------------------------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on fruits
+         Recheck Cond: (items &` 'type == "number" && number <= 100'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (items &` 'type == "number" && number <= 100'::text)
+(6 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |   items   
+----+-----------
+  1 | [100]
+  2 | [200, 30]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/element/number/indexscan.out (+36 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/element/number/indexscan.out    2017-08-10 14:49:35 +0900 (b47fd0b)
@@ -0,0 +1,36 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[100]');
+INSERT INTO fruits VALUES (2, '[200, 30]');
+INSERT INTO fruits VALUES (3, '[150]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'type == "number" && number <= 100'
+ ORDER BY id;
+                                QUERY PLAN                                
+--------------------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on fruits
+         Index Cond: (items &` 'type == "number" && number <= 100'::text)
+(4 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |   items   
+----+-----------
+  1 | [100]
+  2 | [200, 30]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/element/number/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/element/number/seqscan.out    2017-08-10 14:49:35 +0900 (2adcbf3)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[100]');
+INSERT INTO fruits VALUES (2, '[200, 30]');
+INSERT INTO fruits VALUES (3, '[150]');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |   items   
+----+-----------
+  1 | [100]
+  2 | [200, 30]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/element/string/bitmapscan.out (+38 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/element/string/bitmapscan.out    2017-08-10 14:49:35 +0900 (8a14e82)
@@ -0,0 +1,38 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'string == "apple"'
+ ORDER BY id;
+                           QUERY PLAN                           
+----------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on fruits
+         Recheck Cond: (items &` 'string == "apple"'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (items &` 'string == "apple"'::text)
+(6 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'string == "apple"'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  1 | ["apple"]
+  2 | ["banana", "apple"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/element/string/indexscan.out (+36 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/element/string/indexscan.out    2017-08-10 14:49:35 +0900 (ccfd4dd)
@@ -0,0 +1,36 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'string == "apple"'
+ ORDER BY id;
+                        QUERY PLAN                        
+----------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on fruits
+         Index Cond: (items &` 'string == "apple"'::text)
+(4 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'string == "apple"'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  1 | ["apple"]
+  2 | ["banana", "apple"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/element/string/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/element/string/seqscan.out    2017-08-10 14:49:35 +0900 (5aedbca)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'string == "apple"'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  1 | ["apple"]
+  2 | ["banana", "apple"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/full-text-search/default.out (+36 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/full-text-search/default.out    2017-08-10 14:49:35 +0900 (00874ae)
@@ -0,0 +1,36 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": "Hello World"}');
+INSERT INTO logs VALUES (2, '{"message": "This is a pen"}');
+INSERT INTO logs VALUES (3, '{"message": "Good-by World"}');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, record
+  FROM logs
+ WHERE record &` 'string @ "world"'
+ ORDER BY id;
+                        QUERY PLAN                        
+----------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on logs
+         Index Cond: (record &` 'string @ "world"'::text)
+(4 rows)
+
+SELECT id, record
+  FROM logs
+ WHERE record &` 'string @ "world"'
+ ORDER BY id;
+ id |            record            
+----+------------------------------
+  1 | {"message": "Hello World"}
+  3 | {"message": "Good-by World"}
+(2 rows)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/script-v2/full-text-search/disable.out (+57 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/full-text-search/disable.out    2017-08-10 14:49:35 +0900 (4362b07)
@@ -0,0 +1,57 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": "Hello World"}');
+INSERT INTO logs VALUES (2, '{"message": "This is a pen"}');
+INSERT INTO logs VALUES (3, '{"message": "Good-by World"}');
+CREATE INDEX pgroonga_index ON logs
+ USING pgroonga (record pgroonga.jsonb_ops_v2)
+  WITH (tokenizer = '');
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, record
+  FROM logs
+ WHERE record &` 'string @ "world"'
+ ORDER BY id;
+                        QUERY PLAN                        
+----------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on logs
+         Index Cond: (record &` 'string @ "world"'::text)
+(4 rows)
+
+SELECT id, record
+  FROM logs
+ WHERE record &` 'string @ "world"'
+ ORDER BY id;
+ id | record 
+----+--------
+(0 rows)
+
+EXPLAIN (COSTS OFF)
+SELECT id, record
+  FROM logs
+ WHERE record &` 'string == "Hello World"'
+ ORDER BY id;
+                           QUERY PLAN                            
+-----------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on logs
+         Index Cond: (record &` 'string == "Hello World"'::text)
+(4 rows)
+
+SELECT id, record
+  FROM logs
+ WHERE record &` 'string == "Hello World"'
+ ORDER BY id;
+ id |           record           
+----+----------------------------
+  1 | {"message": "Hello World"}
+(1 row)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/script-v2/object/bitmapscan.out (+37 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/object/bitmapscan.out    2017-08-10 14:49:35 +0900 (cee9dea)
@@ -0,0 +1,37 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": {"code": 100, "content": "hello"}}');
+INSERT INTO logs VALUES (1, '{"message": "hello"}');
+INSERT INTO logs VALUES (1, '{"message": ["hello", "world"]}');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, record
+  FROM logs
+ WHERE record &` 'paths @ ".message" && type == "object"'
+ ORDER BY id;
+                                      QUERY PLAN                                      
+--------------------------------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on logs
+         Recheck Cond: (record &` 'paths @ ".message" && type == "object"'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (record &` 'paths @ ".message" && type == "object"'::text)
+(6 rows)
+
+SELECT id, record
+  FROM logs
+ WHERE record &` 'paths @ ".message" && type == "object"'
+ ORDER BY id;
+ id |                     record                     
+----+------------------------------------------------
+  1 | {"message": {"code": 100, "content": "hello"}}
+(1 row)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/script-v2/object/indexscan.out (+35 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/object/indexscan.out    2017-08-10 14:49:35 +0900 (1a27661)
@@ -0,0 +1,35 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": {"code": 100, "content": "hello"}}');
+INSERT INTO logs VALUES (1, '{"message": "hello"}');
+INSERT INTO logs VALUES (1, '{"message": ["hello", "world"]}');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, record
+  FROM logs
+ WHERE record &` 'paths @ ".message" && type == "object"'
+ ORDER BY id;
+                                   QUERY PLAN                                   
+--------------------------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on logs
+         Index Cond: (record &` 'paths @ ".message" && type == "object"'::text)
+(4 rows)
+
+SELECT id, record
+  FROM logs
+ WHERE record &` 'paths @ ".message" && type == "object"'
+ ORDER BY id;
+ id |                     record                     
+----+------------------------------------------------
+  1 | {"message": {"code": 100, "content": "hello"}}
+(1 row)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/script-v2/object/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/object/seqscan.out    2017-08-10 14:49:35 +0900 (6743d1a)
@@ -0,0 +1,20 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": {"code": 100, "content": "hello"}}');
+INSERT INTO logs VALUES (1, '{"message": "hello"}');
+INSERT INTO logs VALUES (1, '{"message": ["hello", "world"]}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, record
+  FROM logs
+ WHERE record &` 'paths @ ".message" && type == "object"'
+ ORDER BY id;
+ id |                     record                     
+----+------------------------------------------------
+  1 | {"message": {"code": 100, "content": "hello"}}
+(1 row)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/script-v2/value/boolean/bitmapscan.out (+38 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/value/boolean/bitmapscan.out    2017-08-10 14:49:35 +0900 (55e024b)
@@ -0,0 +1,38 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  true}');
+INSERT INTO fruits VALUES (2, '{"banana": false}');
+INSERT INTO fruits VALUES (3, '{"peach":  true}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'boolean == true'
+ ORDER BY id;
+                          QUERY PLAN                          
+--------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on fruits
+         Recheck Cond: (items &` 'boolean == true'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (items &` 'boolean == true'::text)
+(6 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'boolean == true'
+ ORDER BY id;
+ id |      items      
+----+-----------------
+  1 | {"apple": true}
+  3 | {"peach": true}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/value/boolean/indexscan.out (+36 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/value/boolean/indexscan.out    2017-08-10 14:49:35 +0900 (21b7528)
@@ -0,0 +1,36 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  true}');
+INSERT INTO fruits VALUES (2, '{"banana": false}');
+INSERT INTO fruits VALUES (3, '{"peach":  true}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'boolean == true'
+ ORDER BY id;
+                       QUERY PLAN                       
+--------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on fruits
+         Index Cond: (items &` 'boolean == true'::text)
+(4 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'boolean == true'
+ ORDER BY id;
+ id |      items      
+----+-----------------
+  1 | {"apple": true}
+  3 | {"peach": true}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/value/boolean/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/value/boolean/seqscan.out    2017-08-10 14:49:35 +0900 (e28b27d)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  true}');
+INSERT INTO fruits VALUES (2, '{"banana": false}');
+INSERT INTO fruits VALUES (3, '{"peach":  true}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'boolean == true'
+ ORDER BY id;
+ id |      items      
+----+-----------------
+  1 | {"apple": true}
+  3 | {"peach": true}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/value/number/bitmapscan.out (+38 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/value/number/bitmapscan.out    2017-08-10 14:49:35 +0900 (6cbda5f)
@@ -0,0 +1,38 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  100}');
+INSERT INTO fruits VALUES (2, '{"banana":  30}');
+INSERT INTO fruits VALUES (3, '{"peach":  150}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'type == "number" && number <= 100'
+ ORDER BY id;
+                                   QUERY PLAN                                   
+--------------------------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on fruits
+         Recheck Cond: (items &` 'type == "number" && number <= 100'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (items &` 'type == "number" && number <= 100'::text)
+(6 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |     items      
+----+----------------
+  1 | {"apple": 100}
+  2 | {"banana": 30}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/value/number/indexscan.out (+36 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/value/number/indexscan.out    2017-08-10 14:49:35 +0900 (f4aceb4)
@@ -0,0 +1,36 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  100}');
+INSERT INTO fruits VALUES (2, '{"banana":  30}');
+INSERT INTO fruits VALUES (3, '{"peach":  150}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'type == "number" && number <= 100'
+ ORDER BY id;
+                                QUERY PLAN                                
+--------------------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on fruits
+         Index Cond: (items &` 'type == "number" && number <= 100'::text)
+(4 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |     items      
+----+----------------
+  1 | {"apple": 100}
+  2 | {"banana": 30}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/value/number/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/value/number/seqscan.out    2017-08-10 14:49:35 +0900 (bd79b2e)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  100}');
+INSERT INTO fruits VALUES (2, '{"banana":  30}');
+INSERT INTO fruits VALUES (3, '{"peach":  150}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |     items      
+----+----------------
+  1 | {"apple": 100}
+  2 | {"banana": 30}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/value/string/bitmapscan.out (+38 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/value/string/bitmapscan.out    2017-08-10 14:49:35 +0900 (4e172af)
@@ -0,0 +1,38 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'string == "apple"'
+ ORDER BY id;
+                           QUERY PLAN                           
+----------------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Bitmap Heap Scan on fruits
+         Recheck Cond: (items &` 'string == "apple"'::text)
+         ->  Bitmap Index Scan on pgroonga_index
+               Index Cond: (items &` 'string == "apple"'::text)
+(6 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'string == "apple"'
+ ORDER BY id;
+ id |       items       
+----+-------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/value/string/indexscan.out (+36 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/value/string/indexscan.out    2017-08-10 14:49:35 +0900 (a9cf39f)
@@ -0,0 +1,36 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'string == "apple"'
+ ORDER BY id;
+                        QUERY PLAN                        
+----------------------------------------------------------
+ Sort
+   Sort Key: id
+   ->  Index Scan using pgroonga_index on fruits
+         Index Cond: (items &` 'string == "apple"'::text)
+(4 rows)
+
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'string == "apple"'
+ ORDER BY id;
+ id |       items       
+----+-------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script-v2/value/string/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script-v2/value/string/seqscan.out    2017-08-10 14:49:35 +0900 (5d2de45)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items &` 'string == "apple"'
+ ORDER BY id;
+ id |       items       
+----+-------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/delete/multiple-values.out (+24 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/delete/multiple-values.out    2017-08-10 14:49:35 +0900 (17c7494)
@@ -0,0 +1,24 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+DELETE FROM fruits WHERE id = 1;
+VACUUM;
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'string == "apple"'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  2 | ["banana", "apple"]
+(1 row)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/element/boolean/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/element/boolean/bitmapscan.out    2017-08-10 14:49:35 +0900 (82dfd88)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[true]');
+INSERT INTO fruits VALUES (2, '[false]');
+INSERT INTO fruits VALUES (3, '[true]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'boolean == true'
+ ORDER BY id;
+ id | items  
+----+--------
+  1 | [true]
+  3 | [true]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/element/boolean/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/element/boolean/indexscan.out    2017-08-10 14:49:35 +0900 (4fd0e7b)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[true]');
+INSERT INTO fruits VALUES (2, '[false]');
+INSERT INTO fruits VALUES (3, '[true]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'boolean == true'
+ ORDER BY id;
+ id | items  
+----+--------
+  1 | [true]
+  3 | [true]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/element/boolean/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/element/boolean/seqscan.out    2017-08-10 14:49:35 +0900 (e87cb29)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[true]');
+INSERT INTO fruits VALUES (2, '[false]');
+INSERT INTO fruits VALUES (3, '[true]');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'boolean == true'
+ ORDER BY id;
+ id | items  
+----+--------
+  1 | [true]
+  3 | [true]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/element/number/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/element/number/bitmapscan.out    2017-08-10 14:49:35 +0900 (f39772d)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[100]');
+INSERT INTO fruits VALUES (2, '[200, 30]');
+INSERT INTO fruits VALUES (3, '[150]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |   items   
+----+-----------
+  1 | [100]
+  2 | [200, 30]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/element/number/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/element/number/indexscan.out    2017-08-10 14:49:35 +0900 (6b31447)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[100]');
+INSERT INTO fruits VALUES (2, '[200, 30]');
+INSERT INTO fruits VALUES (3, '[150]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |   items   
+----+-----------
+  1 | [100]
+  2 | [200, 30]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/element/number/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/element/number/seqscan.out    2017-08-10 14:49:35 +0900 (0dc79bf)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '[100]');
+INSERT INTO fruits VALUES (2, '[200, 30]');
+INSERT INTO fruits VALUES (3, '[150]');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |   items   
+----+-----------
+  1 | [100]
+  2 | [200, 30]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/element/string/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/element/string/bitmapscan.out    2017-08-10 14:49:35 +0900 (ef27919)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'string == "apple"'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  1 | ["apple"]
+  2 | ["banana", "apple"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/element/string/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/element/string/indexscan.out    2017-08-10 14:49:35 +0900 (6abadf4)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'string == "apple"'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  1 | ["apple"]
+  2 | ["banana", "apple"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/element/string/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/element/string/seqscan.out    2017-08-10 14:49:35 +0900 (7a6f8a5)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '["apple"]');
+INSERT INTO fruits VALUES (2, '["banana", "apple"]');
+INSERT INTO fruits VALUES (3, '["peach"]');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'string == "apple"'
+ ORDER BY id;
+ id |        items        
+----+---------------------
+  1 | ["apple"]
+  2 | ["banana", "apple"]
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/full-text-search/default.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/full-text-search/default.out    2017-08-10 14:49:35 +0900 (779e7da)
@@ -0,0 +1,23 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": "Hello World"}');
+INSERT INTO logs VALUES (2, '{"message": "This is a pen"}');
+INSERT INTO logs VALUES (3, '{"message": "Good-by World"}');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, record
+  FROM logs
+ WHERE record @@ 'string @ "world"'
+ ORDER BY id;
+ id |            record            
+----+------------------------------
+  1 | {"message": "Hello World"}
+  3 | {"message": "Good-by World"}
+(2 rows)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/script/full-text-search/disable.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/full-text-search/disable.out    2017-08-10 14:49:35 +0900 (7437abb)
@@ -0,0 +1,31 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": "Hello World"}');
+INSERT INTO logs VALUES (2, '{"message": "This is a pen"}');
+INSERT INTO logs VALUES (3, '{"message": "Good-by World"}');
+CREATE INDEX pgroonga_index ON logs
+ USING pgroonga (record pgroonga.jsonb_ops)
+  WITH (tokenizer = '');
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, record
+  FROM logs
+ WHERE record @@ 'string @ "world"'
+ ORDER BY id;
+ id | record 
+----+--------
+(0 rows)
+
+SELECT id, record
+  FROM logs
+ WHERE record @@ 'string == "Hello World"'
+ ORDER BY id;
+ id |           record           
+----+----------------------------
+  1 | {"message": "Hello World"}
+(1 row)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/script/object/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/object/bitmapscan.out    2017-08-10 14:49:35 +0900 (0abe59d)
@@ -0,0 +1,22 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": {"code": 100, "content": "hello"}}');
+INSERT INTO logs VALUES (1, '{"message": "hello"}');
+INSERT INTO logs VALUES (1, '{"message": ["hello", "world"]}');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, record
+  FROM logs
+ WHERE record @@ 'paths @ ".message" && type == "object"'
+ ORDER BY id;
+ id |                     record                     
+----+------------------------------------------------
+  1 | {"message": {"code": 100, "content": "hello"}}
+(1 row)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/script/object/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/object/indexscan.out    2017-08-10 14:49:35 +0900 (5085d5b)
@@ -0,0 +1,22 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": {"code": 100, "content": "hello"}}');
+INSERT INTO logs VALUES (1, '{"message": "hello"}');
+INSERT INTO logs VALUES (1, '{"message": ["hello", "world"]}');
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (record pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, record
+  FROM logs
+ WHERE record @@ 'paths @ ".message" && type == "object"'
+ ORDER BY id;
+ id |                     record                     
+----+------------------------------------------------
+  1 | {"message": {"code": 100, "content": "hello"}}
+(1 row)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/script/object/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/object/seqscan.out    2017-08-10 14:49:35 +0900 (32208b7)
@@ -0,0 +1,20 @@
+CREATE TABLE logs (
+  id int,
+  record jsonb
+);
+INSERT INTO logs VALUES (1, '{"message": {"code": 100, "content": "hello"}}');
+INSERT INTO logs VALUES (1, '{"message": "hello"}');
+INSERT INTO logs VALUES (1, '{"message": ["hello", "world"]}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, record
+  FROM logs
+ WHERE record @@ 'paths @ ".message" && type == "object"'
+ ORDER BY id;
+ id |                     record                     
+----+------------------------------------------------
+  1 | {"message": {"code": 100, "content": "hello"}}
+(1 row)
+
+DROP TABLE logs;

  Added: expected/compatibility/schema/jsonb/script/value/boolean/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/value/boolean/bitmapscan.out    2017-08-10 14:49:35 +0900 (ba6f3fb)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  true}');
+INSERT INTO fruits VALUES (2, '{"banana": false}');
+INSERT INTO fruits VALUES (3, '{"peach":  true}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'boolean == true'
+ ORDER BY id;
+ id |      items      
+----+-----------------
+  1 | {"apple": true}
+  3 | {"peach": true}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/value/boolean/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/value/boolean/indexscan.out    2017-08-10 14:49:35 +0900 (aec931a)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  true}');
+INSERT INTO fruits VALUES (2, '{"banana": false}');
+INSERT INTO fruits VALUES (3, '{"peach":  true}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'boolean == true'
+ ORDER BY id;
+ id |      items      
+----+-----------------
+  1 | {"apple": true}
+  3 | {"peach": true}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/value/boolean/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/value/boolean/seqscan.out    2017-08-10 14:49:35 +0900 (4e756f2)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  true}');
+INSERT INTO fruits VALUES (2, '{"banana": false}');
+INSERT INTO fruits VALUES (3, '{"peach":  true}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'boolean == true'
+ ORDER BY id;
+ id |      items      
+----+-----------------
+  1 | {"apple": true}
+  3 | {"peach": true}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/value/number/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/value/number/bitmapscan.out    2017-08-10 14:49:35 +0900 (3b4f29c)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  100}');
+INSERT INTO fruits VALUES (2, '{"banana":  30}');
+INSERT INTO fruits VALUES (3, '{"peach":  150}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |     items      
+----+----------------
+  1 | {"apple": 100}
+  2 | {"banana": 30}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/value/number/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/value/number/indexscan.out    2017-08-10 14:49:35 +0900 (f3101c2)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  100}');
+INSERT INTO fruits VALUES (2, '{"banana":  30}');
+INSERT INTO fruits VALUES (3, '{"peach":  150}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |     items      
+----+----------------
+  1 | {"apple": 100}
+  2 | {"banana": 30}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/value/number/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/value/number/seqscan.out    2017-08-10 14:49:35 +0900 (98bddd4)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"apple":  100}');
+INSERT INTO fruits VALUES (2, '{"banana":  30}');
+INSERT INTO fruits VALUES (3, '{"peach":  150}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'type == "number" && number <= 100'
+ ORDER BY id;
+ id |     items      
+----+----------------
+  1 | {"apple": 100}
+  2 | {"banana": 30}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/value/string/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/value/string/bitmapscan.out    2017-08-10 14:49:35 +0900 (f443310)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'string == "apple"'
+ ORDER BY id;
+ id |       items       
+----+-------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/value/string/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/value/string/indexscan.out    2017-08-10 14:49:35 +0900 (6ae6cf9)
@@ -0,0 +1,23 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+CREATE INDEX pgroonga_index ON fruits
+  USING pgroonga (items pgroonga.jsonb_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'string == "apple"'
+ ORDER BY id;
+ id |       items       
+----+-------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/jsonb/script/value/string/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/jsonb/script/value/string/seqscan.out    2017-08-10 14:49:35 +0900 (0825601)
@@ -0,0 +1,21 @@
+CREATE TABLE fruits (
+  id int,
+  items jsonb
+);
+INSERT INTO fruits VALUES (1, '{"name": "apple"}');
+INSERT INTO fruits VALUES (2, '{"type": "apple"}');
+INSERT INTO fruits VALUES (3, '{"name": "peach"}');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, items
+  FROM fruits
+ WHERE items @@ 'string == "apple"'
+ ORDER BY id;
+ id |       items       
+----+-------------------
+  1 | {"name": "apple"}
+  2 | {"type": "apple"}
+(2 rows)
+
+DROP TABLE fruits;

  Added: expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/begin-of-text/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/begin-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (d87a3ae)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+                     QUERY PLAN                     
+----------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ '\Agroonga'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ '\Agroonga'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/begin-of-text/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/begin-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (042ba2b)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+                  QUERY PLAN                  
+----------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ '\Agroonga'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/begin-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/begin-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (654678c)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/dot/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/dot/bitmapscan.out    2017-08-10 14:49:35 +0900 (b03c9bc)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+                    QUERY PLAN                    
+--------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ '.roonga'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ '.roonga'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/dot/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/dot/indexscan.out    2017-08-10 14:49:35 +0900 (b9a7b3f)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+                 QUERY PLAN                 
+--------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ '.roonga'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/dot/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/dot/seqscan.out    2017-08-10 14:49:35 +0900 (22842ed)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/end-of-text/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/end-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (ff26e4c)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+                     QUERY PLAN                     
+----------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ 'groonga\z'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ 'groonga\z'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/end-of-text/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/end-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (e805b51)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+                  QUERY PLAN                  
+----------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ 'groonga\z'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/end-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/end-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (e89976c)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/exact/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/exact/bitmapscan.out    2017-08-10 14:49:35 +0900 (d24a0c2)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+                      QUERY PLAN                      
+------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ '\Agroonga\z'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ '\Agroonga\z'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/exact/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/exact/indexscan.out    2017-08-10 14:49:35 +0900 (2d9a1e9)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+                   QUERY PLAN                   
+------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ '\Agroonga\z'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/exact/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/exact/seqscan.out    2017-08-10 14:49:35 +0900 (4d90457)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/partial/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/partial/bitmapscan.out    2017-08-10 14:49:35 +0900 (d1b6cea)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+                    QUERY PLAN                    
+--------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ 'groonga'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ 'groonga'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/partial/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/partial/indexscan.out    2017-08-10 14:49:35 +0900 (4dbe148)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+                 QUERY PLAN                 
+--------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ 'groonga'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/partial/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v1/regexp-v2/partial/seqscan.out    2017-08-10 14:49:35 +0900 (13c6cff)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/begin-of-text/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/begin-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (d11ac57)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga';
+                     QUERY PLAN                     
+----------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content @~ '\Agroonga'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content @~ '\Agroonga'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/begin-of-text/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/begin-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (0499f8e)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga';
+                  QUERY PLAN                  
+----------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content @~ '\Agroonga'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/begin-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/begin-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (0ee3eb2)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/dot/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/dot/bitmapscan.out    2017-08-10 14:49:35 +0900 (10a9ffc)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ '.roonga';
+                    QUERY PLAN                    
+--------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content @~ '.roonga'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content @~ '.roonga'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/dot/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/dot/indexscan.out    2017-08-10 14:49:35 +0900 (6ff9c62)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ '.roonga';
+                 QUERY PLAN                 
+--------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content @~ '.roonga'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/dot/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/dot/seqscan.out    2017-08-10 14:49:35 +0900 (772dd3c)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/end-of-text/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/end-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (8195bd1)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga\z';
+                     QUERY PLAN                     
+----------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content @~ 'groonga\z'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content @~ 'groonga\z'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/end-of-text/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/end-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (33f507e)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga\z';
+                  QUERY PLAN                  
+----------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content @~ 'groonga\z'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/end-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/end-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (f08e27b)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/exact/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/exact/bitmapscan.out    2017-08-10 14:49:35 +0900 (9dc8dc1)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga\z';
+                      QUERY PLAN                      
+------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content @~ '\Agroonga\z'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content @~ '\Agroonga\z'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/exact/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/exact/indexscan.out    2017-08-10 14:49:35 +0900 (ced81dc)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga\z';
+                   QUERY PLAN                   
+------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content @~ '\Agroonga\z'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/exact/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/exact/seqscan.out    2017-08-10 14:49:35 +0900 (ad5614b)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/partial/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/partial/bitmapscan.out    2017-08-10 14:49:35 +0900 (554bc5f)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga';
+                    QUERY PLAN                    
+--------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content @~ 'groonga'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content @~ 'groonga'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/partial/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/partial/indexscan.out    2017-08-10 14:49:35 +0900 (4e0608e)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga';
+                 QUERY PLAN                 
+--------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content @~ 'groonga'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/partial/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/compatibility/v2/regexp-v1/partial/seqscan.out    2017-08-10 14:49:35 +0900 (4346586)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike-v2/begin-of-text/bitmapscan.out (+35 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike-v2/begin-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (1c554ad)
@@ -0,0 +1,35 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'GROONGA%';
+                     QUERY PLAN                     
+----------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content ~~* 'GROONGA%'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content ~~* 'GROONGA%'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'GROONGA%';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+  4 | groonga command is provided.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike-v2/begin-of-text/indexscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike-v2/begin-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (0fecd20)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+   USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'GROONGA%';
+                  QUERY PLAN                  
+----------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content ~~* 'GROONGA%'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'GROONGA%';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+  4 | groonga command is provided.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike-v2/begin-of-text/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike-v2/begin-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (b0806e5)
@@ -0,0 +1,23 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'GROONGA%';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+  4 | groonga command is provided.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike-v2/end-of-text/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike-v2/end-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (6af11b4)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+                     QUERY PLAN                     
+----------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content ~~* '%GROONGA'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content ~~* '%GROONGA'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike-v2/end-of-text/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike-v2/end-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (cdb0d36)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+                  QUERY PLAN                  
+----------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content ~~* '%GROONGA'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike-v2/end-of-text/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike-v2/end-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (b1e844c)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike-v2/exact/bitmapscan.out (+35 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike-v2/exact/bitmapscan.out    2017-08-10 14:49:35 +0900 (532f6ac)
@@ -0,0 +1,35 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+INSERT INTO memos VALUES (4, 'groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'GROONGA';
+                    QUERY PLAN                     
+---------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content ~~* 'GROONGA'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content ~~* 'GROONGA'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'GROONGA';
+ id | content 
+----+---------
+  2 | Groonga
+  4 | groonga
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike-v2/exact/indexscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike-v2/exact/indexscan.out    2017-08-10 14:49:35 +0900 (7363f9e)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+INSERT INTO memos VALUES (4, 'groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'GROONGA';
+                 QUERY PLAN                  
+---------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content ~~* 'GROONGA'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'GROONGA';
+ id | content 
+----+---------
+  2 | Groonga
+  4 | groonga
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike-v2/exact/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike-v2/exact/seqscan.out    2017-08-10 14:49:35 +0900 (30fb1e1)
@@ -0,0 +1,23 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+INSERT INTO memos VALUES (4, 'groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'GROONGA';
+ id | content 
+----+---------
+  2 | Groonga
+  4 | groonga
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike-v2/partial/bitmapscan.out (+36 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike-v2/partial/bitmapscan.out    2017-08-10 14:49:35 +0900 (69ec8ff)
@@ -0,0 +1,36 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+                     QUERY PLAN                      
+-----------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content ~~* '%GROONGA%'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content ~~* '%GROONGA%'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+  4 | groonga command is provided.
+(3 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike-v2/partial/indexscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike-v2/partial/indexscan.out    2017-08-10 14:49:35 +0900 (1ee2479)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+                  QUERY PLAN                   
+-----------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content ~~* '%GROONGA%'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+  4 | groonga command is provided.
+(3 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike-v2/partial/seqscan.out (+24 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike-v2/partial/seqscan.out    2017-08-10 14:49:35 +0900 (0afbbe6)
@@ -0,0 +1,24 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+  4 | groonga command is provided.
+(3 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike/begin-of-text/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike/begin-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (c751250)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'GROONGA%';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+  4 | groonga command is provided.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike/begin-of-text/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike/begin-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (f6d31b1)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'GROONGA%';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+  4 | groonga command is provided.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike/begin-of-text/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike/begin-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (0108a17)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'GROONGA%';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+  4 | groonga command is provided.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike/end-of-text/bitmapscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike/end-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (141eee4)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike/end-of-text/indexscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike/end-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (b930583)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike/end-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike/end-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (92ba844)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike/exact/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike/exact/bitmapscan.out    2017-08-10 14:49:35 +0900 (80d4e42)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+INSERT INTO memos VALUES (4, 'groonga');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'GROONGA';
+ id | content 
+----+---------
+  2 | Groonga
+  4 | groonga
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike/exact/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike/exact/indexscan.out    2017-08-10 14:49:35 +0900 (9a834c3)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+INSERT INTO memos VALUES (4, 'groonga');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'GROONGA';
+ id | content 
+----+---------
+  2 | Groonga
+  4 | groonga
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike/exact/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike/exact/seqscan.out    2017-08-10 14:49:35 +0900 (b15aa8c)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+INSERT INTO memos VALUES (4, 'groonga');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'GROONGA';
+ id | content 
+----+---------
+  2 | Groonga
+  4 | groonga
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike/partial/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike/partial/bitmapscan.out    2017-08-10 14:49:35 +0900 (d122fa7)
@@ -0,0 +1,23 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+  4 | groonga command is provided.
+(3 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike/partial/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike/partial/indexscan.out    2017-08-10 14:49:35 +0900 (07f11f0)
@@ -0,0 +1,23 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+  4 | groonga command is provided.
+(3 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/ilike/partial/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/ilike/partial/seqscan.out    2017-08-10 14:49:35 +0900 (063f68c)
@@ -0,0 +1,23 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+  4 | groonga command is provided.
+(3 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like-v2/begin-of-text/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like-v2/begin-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (51c9a17)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'Groonga%';
+                    QUERY PLAN                     
+---------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content ~~ 'Groonga%'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content ~~ 'Groonga%'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'Groonga%';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like-v2/begin-of-text/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like-v2/begin-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (0ddd13f)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'Groonga%';
+                 QUERY PLAN                  
+---------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content ~~ 'Groonga%'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'Groonga%';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like-v2/begin-of-text/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like-v2/begin-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (0a81c80)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'Groonga%';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like-v2/end-of-text/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like-v2/end-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (970df4c)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+                    QUERY PLAN                     
+---------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content ~~ '%Groonga'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content ~~ '%Groonga'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like-v2/end-of-text/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like-v2/end-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (707dc84)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+                 QUERY PLAN                  
+---------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content ~~ '%Groonga'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like-v2/end-of-text/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like-v2/end-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (013dc3e)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like-v2/exact/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like-v2/exact/bitmapscan.out    2017-08-10 14:49:35 +0900 (2b9d29c)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+INSERT INTO memos VALUES (4, 'groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'Groonga';
+                    QUERY PLAN                    
+--------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content ~~ 'Groonga'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content ~~ 'Groonga'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'Groonga';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like-v2/exact/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like-v2/exact/indexscan.out    2017-08-10 14:49:35 +0900 (f267593)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+INSERT INTO memos VALUES (4, 'groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'Groonga';
+                 QUERY PLAN                 
+--------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content ~~ 'Groonga'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'Groonga';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like-v2/exact/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like-v2/exact/seqscan.out    2017-08-10 14:49:35 +0900 (2332f8b)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+INSERT INTO memos VALUES (4, 'groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'Groonga';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like-v2/partial/bitmapscan.out (+35 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like-v2/partial/bitmapscan.out    2017-08-10 14:49:35 +0900 (18baeb4)
@@ -0,0 +1,35 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga%';
+                     QUERY PLAN                     
+----------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content ~~ '%Groonga%'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content ~~ '%Groonga%'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga%';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like-v2/partial/indexscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like-v2/partial/indexscan.out    2017-08-10 14:49:35 +0900 (91e6987)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga%';
+                  QUERY PLAN                  
+----------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content ~~ '%Groonga%'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga%';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like-v2/partial/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like-v2/partial/seqscan.out    2017-08-10 14:49:35 +0900 (94b6c3f)
@@ -0,0 +1,23 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga%';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like/begin-of-text/bitmapscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like/begin-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (4c3f7de)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'Groonga%';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like/begin-of-text/indexscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like/begin-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (6dd6ded)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'Groonga%';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like/begin-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like/begin-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (870697f)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'Groonga%';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like/end-of-text/bitmapscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like/end-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (2e3ffc0)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like/end-of-text/indexscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like/end-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (a025f0f)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like/end-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like/end-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (1b696b6)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like/exact/bitmapscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like/exact/bitmapscan.out    2017-08-10 14:49:35 +0900 (12e23c2)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+INSERT INTO memos VALUES (4, 'groonga');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'Groonga';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like/exact/indexscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like/exact/indexscan.out    2017-08-10 14:49:35 +0900 (55ff57f)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+INSERT INTO memos VALUES (4, 'groonga');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'Groonga';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like/exact/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like/exact/seqscan.out    2017-08-10 14:49:35 +0900 (c214e6b)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+INSERT INTO memos VALUES (4, 'groonga');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'Groonga';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like/partial/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like/partial/bitmapscan.out    2017-08-10 14:49:35 +0900 (19befa7)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga%';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like/partial/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like/partial/indexscan.out    2017-08-10 14:49:35 +0900 (1fe5149)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga%';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/like/partial/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/like/partial/seqscan.out    2017-08-10 14:49:35 +0900 (ede37a0)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga%';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp-v2/begin-of-text/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp-v2/begin-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (700a07f)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+                     QUERY PLAN                     
+----------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ '\Agroonga'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ '\Agroonga'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp-v2/begin-of-text/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp-v2/begin-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (3e2f023)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+                  QUERY PLAN                  
+----------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ '\Agroonga'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp-v2/begin-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp-v2/begin-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (c7f7686)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp-v2/dot/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp-v2/dot/bitmapscan.out    2017-08-10 14:49:35 +0900 (7e32645)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+                    QUERY PLAN                    
+--------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ '.roonga'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ '.roonga'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp-v2/dot/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp-v2/dot/indexscan.out    2017-08-10 14:49:35 +0900 (b96a2e2)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+                 QUERY PLAN                 
+--------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ '.roonga'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp-v2/dot/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp-v2/dot/seqscan.out    2017-08-10 14:49:35 +0900 (bfe9263)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp-v2/end-of-text/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp-v2/end-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (05a44e5)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+                     QUERY PLAN                     
+----------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ 'groonga\z'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ 'groonga\z'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp-v2/end-of-text/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp-v2/end-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (84f3800)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+                  QUERY PLAN                  
+----------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ 'groonga\z'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp-v2/end-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp-v2/end-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (6a77db1)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp-v2/exact/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp-v2/exact/bitmapscan.out    2017-08-10 14:49:35 +0900 (ef39cb4)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+                      QUERY PLAN                      
+------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ '\Agroonga\z'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ '\Agroonga\z'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp-v2/exact/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp-v2/exact/indexscan.out    2017-08-10 14:49:35 +0900 (292dd10)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+                   QUERY PLAN                   
+------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ '\Agroonga\z'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp-v2/exact/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp-v2/exact/seqscan.out    2017-08-10 14:49:35 +0900 (fe3d956)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp-v2/partial/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp-v2/partial/bitmapscan.out    2017-08-10 14:49:35 +0900 (24b25b6)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+                    QUERY PLAN                    
+--------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ 'groonga'::text)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ 'groonga'::text)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp-v2/partial/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp-v2/partial/indexscan.out    2017-08-10 14:49:35 +0900 (18b4a03)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+                 QUERY PLAN                 
+--------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ 'groonga'::text)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp-v2/partial/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp-v2/partial/seqscan.out    2017-08-10 14:49:35 +0900 (73d1e96)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp/begin-of-text/bitmapscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp/begin-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (37df79d)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp/begin-of-text/indexscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp/begin-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (c524f3d)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp/begin-of-text/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp/begin-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (70ae2cb)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp/dot/bitmapscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp/dot/bitmapscan.out    2017-08-10 14:49:35 +0900 (813aa55)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content @~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp/dot/indexscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp/dot/indexscan.out    2017-08-10 14:49:35 +0900 (7508c20)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp/dot/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp/dot/seqscan.out    2017-08-10 14:49:35 +0900 (f7d3fbb)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp/end-of-text/bitmapscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp/end-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (bb7e283)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp/end-of-text/indexscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp/end-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (1c511eb)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp/end-of-text/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp/end-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (5169bc6)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp/exact/bitmapscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp/exact/bitmapscan.out    2017-08-10 14:49:35 +0900 (857f707)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp/exact/indexscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp/exact/indexscan.out    2017-08-10 14:49:35 +0900 (51a38e3)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp/exact/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp/exact/seqscan.out    2017-08-10 14:49:35 +0900 (5eec69d)
@@ -0,0 +1,20 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp/partial/bitmapscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp/partial/bitmapscan.out    2017-08-10 14:49:35 +0900 (0c656c6)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp/partial/indexscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp/partial/indexscan.out    2017-08-10 14:49:35 +0900 (6032d94)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/text/regexp/partial/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/text/regexp/partial/seqscan.out    2017-08-10 14:49:35 +0900 (ad9397b)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos USING pgroonga (content pgroonga.text_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/begin-of-text/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/begin-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (982d9f9)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+                           QUERY PLAN                            
+-----------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ '\Agroonga'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ '\Agroonga'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/begin-of-text/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/begin-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (d20913a)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+                        QUERY PLAN                         
+-----------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ '\Agroonga'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/begin-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/begin-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (94fbc0a)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/dot/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/dot/bitmapscan.out    2017-08-10 14:49:35 +0900 (d1b5f9a)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+                          QUERY PLAN                           
+---------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ '.roonga'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ '.roonga'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/dot/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/dot/indexscan.out    2017-08-10 14:49:35 +0900 (784b2e0)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+                       QUERY PLAN                        
+---------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ '.roonga'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/dot/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/dot/seqscan.out    2017-08-10 14:49:35 +0900 (3c8de91)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/end-of-text/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/end-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (4e58171)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+                           QUERY PLAN                            
+-----------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ 'groonga\z'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ 'groonga\z'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/end-of-text/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/end-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (ce3ad0e)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+                        QUERY PLAN                         
+-----------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ 'groonga\z'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/end-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/end-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (b01d172)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/exact/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/exact/bitmapscan.out    2017-08-10 14:49:35 +0900 (601a3f2)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+                            QUERY PLAN                             
+-------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ '\Agroonga\z'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ '\Agroonga\z'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/exact/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/exact/indexscan.out    2017-08-10 14:49:35 +0900 (65c4fe3)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+                         QUERY PLAN                          
+-------------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ '\Agroonga\z'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/exact/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/exact/seqscan.out    2017-08-10 14:49:35 +0900 (67ddc9c)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/partial/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/partial/bitmapscan.out    2017-08-10 14:49:35 +0900 (ebabffe)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+                          QUERY PLAN                           
+---------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ 'groonga'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ 'groonga'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/partial/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/partial/indexscan.out    2017-08-10 14:49:35 +0900 (5fef700)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+                       QUERY PLAN                        
+---------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ 'groonga'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/partial/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v1/regexp-v2/partial/seqscan.out    2017-08-10 14:49:35 +0900 (8e93132)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/begin-of-text/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/begin-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (c07bce5)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga';
+                           QUERY PLAN                            
+-----------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content @~ '\Agroonga'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content @~ '\Agroonga'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/begin-of-text/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/begin-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (e2fa997)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga';
+                        QUERY PLAN                         
+-----------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content @~ '\Agroonga'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/begin-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/begin-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (d8f4c71)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/dot/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/dot/bitmapscan.out    2017-08-10 14:49:35 +0900 (4ce77bf)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ '.roonga';
+                          QUERY PLAN                           
+---------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content @~ '.roonga'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content @~ '.roonga'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/dot/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/dot/indexscan.out    2017-08-10 14:49:35 +0900 (6dd4a3d)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ '.roonga';
+                       QUERY PLAN                        
+---------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content @~ '.roonga'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/dot/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/dot/seqscan.out    2017-08-10 14:49:35 +0900 (ea79f7e)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/end-of-text/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/end-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (0e12ee1)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga\z';
+                           QUERY PLAN                            
+-----------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content @~ 'groonga\z'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content @~ 'groonga\z'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/end-of-text/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/end-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (e6574af)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga\z';
+                        QUERY PLAN                         
+-----------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content @~ 'groonga\z'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/end-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/end-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (f2a01e9)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/exact/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/exact/bitmapscan.out    2017-08-10 14:49:35 +0900 (03d9750)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga\z';
+                            QUERY PLAN                             
+-------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content @~ '\Agroonga\z'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content @~ '\Agroonga\z'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/exact/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/exact/indexscan.out    2017-08-10 14:49:35 +0900 (3b3fdd2)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga\z';
+                         QUERY PLAN                          
+-------------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content @~ '\Agroonga\z'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/exact/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/exact/seqscan.out    2017-08-10 14:49:35 +0900 (8e51486)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/partial/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/partial/bitmapscan.out    2017-08-10 14:49:35 +0900 (79e8394)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga';
+                          QUERY PLAN                           
+---------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content @~ 'groonga'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content @~ 'groonga'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/partial/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/partial/indexscan.out    2017-08-10 14:49:35 +0900 (4cd16ac)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga';
+                       QUERY PLAN                        
+---------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content @~ 'groonga'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/partial/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/compatibility/v2/regexp-v1/partial/seqscan.out    2017-08-10 14:49:35 +0900 (0dddc76)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content @~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/regexp-v2/begin-of-text/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/regexp-v2/begin-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (a7ea505)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+                           QUERY PLAN                            
+-----------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ '\Agroonga'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ '\Agroonga'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/regexp-v2/begin-of-text/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/regexp-v2/begin-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (a47514e)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+                        QUERY PLAN                         
+-----------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ '\Agroonga'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/regexp-v2/begin-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/regexp-v2/begin-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (20c023e)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga';
+ id |                 content                  
+----+------------------------------------------
+  2 | Groonga is fast full text search engine.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/regexp-v2/dot/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/regexp-v2/dot/bitmapscan.out    2017-08-10 14:49:35 +0900 (dac4b1c)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+                          QUERY PLAN                           
+---------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ '.roonga'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ '.roonga'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/regexp-v2/dot/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/regexp-v2/dot/indexscan.out    2017-08-10 14:49:35 +0900 (22d4c99)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+                       QUERY PLAN                        
+---------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ '.roonga'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/regexp-v2/dot/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/regexp-v2/dot/seqscan.out    2017-08-10 14:49:35 +0900 (3f70b3e)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ '.roonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/regexp-v2/end-of-text/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/regexp-v2/end-of-text/bitmapscan.out    2017-08-10 14:49:35 +0900 (2ea8234)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+                           QUERY PLAN                            
+-----------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ 'groonga\z'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ 'groonga\z'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/regexp-v2/end-of-text/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/regexp-v2/end-of-text/indexscan.out    2017-08-10 14:49:35 +0900 (cc09fc7)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+                        QUERY PLAN                         
+-----------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ 'groonga\z'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/regexp-v2/end-of-text/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/regexp-v2/end-of-text/seqscan.out    2017-08-10 14:49:35 +0900 (ed1860c)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga\z';
+ id |                       content                        
+----+------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/regexp-v2/exact/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/regexp-v2/exact/bitmapscan.out    2017-08-10 14:49:35 +0900 (8d5ba8f)
@@ -0,0 +1,33 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+                            QUERY PLAN                             
+-------------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ '\Agroonga\z'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ '\Agroonga\z'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/regexp-v2/exact/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/regexp-v2/exact/indexscan.out    2017-08-10 14:49:35 +0900 (61148aa)
@@ -0,0 +1,31 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+                         QUERY PLAN                          
+-------------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ '\Agroonga\z'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/regexp-v2/exact/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/regexp-v2/exact/seqscan.out    2017-08-10 14:49:35 +0900 (9456eb8)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ '\Agroonga\z';
+ id | content 
+----+---------
+  2 | Groonga
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/regexp-v2/partial/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/regexp-v2/partial/bitmapscan.out    2017-08-10 14:49:35 +0900 (a50dd97)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+                          QUERY PLAN                           
+---------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (content &~ 'groonga'::character varying)
+   ->  Bitmap Index Scan on grnindex
+         Index Cond: (content &~ 'groonga'::character varying)
+(4 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/regexp-v2/partial/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/regexp-v2/partial/indexscan.out    2017-08-10 14:49:35 +0900 (c7870d6)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+                       QUERY PLAN                        
+---------------------------------------------------------
+ Index Scan using grnindex on memos
+   Index Cond: (content &~ 'groonga'::character varying)
+(2 rows)
+
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/regexp/varchar/regexp-v2/partial/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/regexp/varchar/regexp-v2/partial/seqscan.out    2017-08-10 14:49:35 +0900 (d6bb711)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content varchar(256)
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.varchar_regexp_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content &~ 'groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  2 | Groonga is fast full text search engine.
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/reindex/analyze.out (+63 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/reindex/analyze.out    2017-08-10 14:49:35 +0900 (94ff58f)
@@ -0,0 +1,63 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+SELECT pgroonga.command(
+         'object_exist ' ||
+           'Sources' || (SELECT oid
+                           FROM pg_class
+                          WHERE relname = 'pgrn_index'))::jsonb->1;
+ ?column? 
+----------
+ true
+(1 row)
+
+SELECT pgroonga.command(
+         'object_exist ' ||
+           'Sources' || (SELECT relfilenode
+                           FROM pg_class
+                          WHERE relname = 'pgrn_index'))::jsonb->1;
+ ?column? 
+----------
+ true
+(1 row)
+
+REINDEX INDEX pgrn_index;
+ANALYZE;
+SELECT pgroonga.command(
+         'object_exist ' ||
+           'Sources' || (SELECT oid
+                           FROM pg_class
+                          WHERE relname = 'pgrn_index'))::jsonb->1;
+ ?column? 
+----------
+ false
+(1 row)
+
+SELECT pgroonga.command(
+         'object_exist ' ||
+           'Sources' || (SELECT relfilenode
+                           FROM pg_class
+                          WHERE relname = 'pgrn_index'))::jsonb->1;
+ ?column? 
+----------
+ true
+(1 row)
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content %% 'PGroonga' AND content %% 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(1 row)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/term-search/text-array/combined/bitmapscan.out (+48 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/combined/bitmapscan.out    2017-08-10 14:49:35 +0900 (ba1331e)
@@ -0,0 +1,48 @@
+CREATE TABLE tags (
+  id int PRIMARY KEY,
+  names text[],
+  readings text[]
+);
+INSERT INTO tags VALUES (1,
+                         ARRAY['PostgreSQL', 'PG'],
+                         ARRAY['ポストグレスキューエル', 'ポスグレ']);
+INSERT INTO tags VALUES (2,
+                         ARRAY['Groonga', 'grn'],
+                         ARRAY['グルンガ', 'グルン']);
+INSERT INTO tags VALUES (3,
+                         ARRAY['PGroonga', 'pgrn'],
+                         ARRAY['ピージールンガ', 'ピーグルン']);
+CREATE INDEX pgrn_tags_index ON tags
+  USING pgroonga (id,
+                  names pgroonga.text_array_term_search_ops_v2,
+                  readings pgroonga.text_array_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT names, pgroonga.score(tags)
+  FROM tags
+  WHERE names &^ 'Groon' OR
+        readings &^~ 'posu';
+                                QUERY PLAN                                 
+---------------------------------------------------------------------------
+ Bitmap Heap Scan on tags
+   Recheck Cond: ((names &^ 'Groon'::text) OR (readings &^~ 'posu'::text))
+   ->  BitmapOr
+         ->  Bitmap Index Scan on pgrn_tags_index
+               Index Cond: (names &^ 'Groon'::text)
+         ->  Bitmap Index Scan on pgrn_tags_index
+               Index Cond: (readings &^~ 'posu'::text)
+(7 rows)
+
+SELECT names, pgroonga.score(tags)
+  FROM tags
+  WHERE names &^ 'Groon' OR
+        readings &^~ 'posu';
+      names      | score 
+-----------------+-------
+ {PostgreSQL,PG} |     2
+ {Groonga,grn}   |     1
+(2 rows)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text-array/combined/seqscan.out (+28 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/combined/seqscan.out    2017-08-10 14:49:35 +0900 (2745f9a)
@@ -0,0 +1,28 @@
+CREATE TABLE tags (
+  id int PRIMARY KEY,
+  names text[],
+  readings text[]
+);
+INSERT INTO tags VALUES (1,
+                         ARRAY['PostgreSQL', 'PG'],
+                         ARRAY['ポストグレスキューエル', 'ポスグレ']);
+INSERT INTO tags VALUES (2,
+                         ARRAY['Groonga', 'grn'],
+                         ARRAY['グルンガ', 'グルン']);
+INSERT INTO tags VALUES (3,
+                         ARRAY['PGroonga', 'pgrn'],
+                         ARRAY['ピージールンガ', 'ピーグルン']);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT names, pgroonga.score(tags)
+  FROM tags
+  WHERE names &^ 'Groon' OR
+        readings &^~ 'posu';
+      names      | score 
+-----------------+-------
+ {PostgreSQL,PG} |     0
+ {Groonga,grn}   |     0
+(2 rows)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text-array/compatibility/v2/prefix-rk/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/compatibility/v2/prefix-rk/bitmapscan.out    2017-08-10 14:49:35 +0900 (c2f8a98)
@@ -0,0 +1,33 @@
+CREATE TABLE readings (
+  katakanas text[]
+);
+INSERT INTO readings VALUES (ARRAY['ポストグレスキューエル', 'ポスグレ']);
+INSERT INTO readings VALUES (ARRAY['グルンガ', 'グルン']);
+INSERT INTO readings VALUES (ARRAY['ピージールンガ', 'ピーグルン']);
+CREATE INDEX pgrn_index ON readings
+  USING pgroonga (katakanas pgroonga.text_array_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT katakanas
+  FROM readings
+ WHERE katakanas &^~> 'p';
+                   QUERY PLAN                   
+------------------------------------------------
+ Bitmap Heap Scan on readings
+   Recheck Cond: (katakanas &^~> 'p'::text)
+   ->  Bitmap Index Scan on pgrn_index
+         Index Cond: (katakanas &^~> 'p'::text)
+(4 rows)
+
+SELECT katakanas
+  FROM readings
+ WHERE katakanas &^~> 'p';
+             katakanas             
+-----------------------------------
+ {ポストグレスキューエル,ポスグレ}
+ {ピージールンガ,ピーグルン}
+(2 rows)
+
+DROP TABLE readings;

  Added: expected/compatibility/schema/term-search/text-array/compatibility/v2/prefix-rk/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/compatibility/v2/prefix-rk/indexscan.out    2017-08-10 14:49:35 +0900 (e148d63)
@@ -0,0 +1,31 @@
+CREATE TABLE readings (
+  katakanas text[]
+);
+INSERT INTO readings VALUES (ARRAY['ポストグレスキューエル', 'ポスグレ']);
+INSERT INTO readings VALUES (ARRAY['グルンガ', 'グルン']);
+INSERT INTO readings VALUES (ARRAY['ピージールンガ', 'ピーグルン']);
+CREATE INDEX pgrn_index ON readings
+  USING pgroonga (katakanas pgroonga.text_array_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT katakanas
+  FROM readings
+ WHERE katakanas &^~> 'p';
+                QUERY PLAN                
+------------------------------------------
+ Index Scan using pgrn_index on readings
+   Index Cond: (katakanas &^~> 'p'::text)
+(2 rows)
+
+SELECT katakanas
+  FROM readings
+ WHERE katakanas &^~> 'p';
+             katakanas             
+-----------------------------------
+ {ピージールンガ,ピーグルン}
+ {ポストグレスキューエル,ポスグレ}
+(2 rows)
+
+DROP TABLE readings;

  Added: expected/compatibility/schema/term-search/text-array/compatibility/v2/prefix-rk/seqscan.out (+19 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/compatibility/v2/prefix-rk/seqscan.out    2017-08-10 14:49:35 +0900 (2e39994)
@@ -0,0 +1,19 @@
+CREATE TABLE readings (
+  katakanas text[]
+);
+INSERT INTO readings VALUES (ARRAY['ポストグレスキューエル', 'ポスグレ']);
+INSERT INTO readings VALUES (ARRAY['グルンガ', 'グルン']);
+INSERT INTO readings VALUES (ARRAY['ピージールンガ', 'ピーグルン']);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT katakanas
+  FROM readings
+ WHERE katakanas &^~> 'p';
+             katakanas             
+-----------------------------------
+ {ポストグレスキューエル,ポスグレ}
+ {ピージールンガ,ピーグルン}
+(2 rows)
+
+DROP TABLE readings;

  Added: expected/compatibility/schema/term-search/text-array/compatibility/v2/prefix/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/compatibility/v2/prefix/bitmapscan.out    2017-08-10 14:49:35 +0900 (58acbca)
@@ -0,0 +1,33 @@
+CREATE TABLE tags (
+  names text[]
+);
+INSERT INTO tags VALUES (ARRAY['PostgreSQL', 'PG']);
+INSERT INTO tags VALUES (ARRAY['Groonga', 'grn']);
+INSERT INTO tags VALUES (ARRAY['PGroonga', 'pgrn']);
+CREATE INDEX pgrn_index ON tags
+  USING pgroonga (names pgroonga.text_array_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT names
+  FROM tags
+ WHERE names &^> 'pG';
+                 QUERY PLAN                 
+--------------------------------------------
+ Bitmap Heap Scan on tags
+   Recheck Cond: (names &^> 'pG'::text)
+   ->  Bitmap Index Scan on pgrn_index
+         Index Cond: (names &^> 'pG'::text)
+(4 rows)
+
+SELECT names
+  FROM tags
+ WHERE names &^> 'pG';
+      names      
+-----------------
+ {PostgreSQL,PG}
+ {PGroonga,pgrn}
+(2 rows)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text-array/compatibility/v2/prefix/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/compatibility/v2/prefix/indexscan.out    2017-08-10 14:49:35 +0900 (9979b35)
@@ -0,0 +1,31 @@
+CREATE TABLE tags (
+  names text[]
+);
+INSERT INTO tags VALUES (ARRAY['PostgreSQL', 'PG']);
+INSERT INTO tags VALUES (ARRAY['Groonga', 'grn']);
+INSERT INTO tags VALUES (ARRAY['PGroonga', 'pgrn']);
+CREATE INDEX pgrn_index ON tags
+  USING pgroonga (names pgroonga.text_array_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT names
+  FROM tags
+ WHERE names &^> 'pG';
+              QUERY PLAN              
+--------------------------------------
+ Index Scan using pgrn_index on tags
+   Index Cond: (names &^> 'pG'::text)
+(2 rows)
+
+SELECT names
+  FROM tags
+ WHERE names &^> 'pG';
+      names      
+-----------------
+ {PGroonga,pgrn}
+ {PostgreSQL,PG}
+(2 rows)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text-array/compatibility/v2/prefix/seqscan.out (+19 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/compatibility/v2/prefix/seqscan.out    2017-08-10 14:49:35 +0900 (aedd8f9)
@@ -0,0 +1,19 @@
+CREATE TABLE tags (
+  names text[]
+);
+INSERT INTO tags VALUES (ARRAY['PostgreSQL', 'PG']);
+INSERT INTO tags VALUES (ARRAY['Groonga', 'grn']);
+INSERT INTO tags VALUES (ARRAY['PGroonga', 'pgrn']);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT names
+  FROM tags
+ WHERE names &^> 'pG';
+      names      
+-----------------
+ {PostgreSQL,PG}
+ {PGroonga,pgrn}
+(2 rows)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text-array/prefix-in/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/prefix-in/bitmapscan.out    2017-08-10 14:49:35 +0900 (bc30314)
@@ -0,0 +1,33 @@
+CREATE TABLE tags (
+  names text[]
+);
+INSERT INTO tags VALUES (ARRAY['PostgreSQL', 'PG']);
+INSERT INTO tags VALUES (ARRAY['Groonga', 'grn']);
+INSERT INTO tags VALUES (ARRAY['PGroonga', 'pgrn']);
+CREATE INDEX pgrn_index ON tags
+  USING pgroonga (names pgroonga.text_array_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT names
+  FROM tags
+ WHERE names &^| ARRAY['gro', 'pos'];
+                     QUERY PLAN                      
+-----------------------------------------------------
+ Bitmap Heap Scan on tags
+   Recheck Cond: (names &^| '{gro,pos}'::text[])
+   ->  Bitmap Index Scan on pgrn_index
+         Index Cond: (names &^| '{gro,pos}'::text[])
+(4 rows)
+
+SELECT names
+  FROM tags
+ WHERE names &^| ARRAY['gro', 'pos'];
+      names      
+-----------------
+ {PostgreSQL,PG}
+ {Groonga,grn}
+(2 rows)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text-array/prefix-in/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/prefix-in/indexscan.out    2017-08-10 14:49:35 +0900 (e49bc96)
@@ -0,0 +1,31 @@
+CREATE TABLE tags (
+  names text[]
+);
+INSERT INTO tags VALUES (ARRAY['PostgreSQL', 'PG']);
+INSERT INTO tags VALUES (ARRAY['Groonga', 'grn']);
+INSERT INTO tags VALUES (ARRAY['PGroonga', 'pgrn']);
+CREATE INDEX pgrn_index ON tags
+  USING pgroonga (names pgroonga.text_array_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT names
+  FROM tags
+ WHERE names &^| ARRAY['gro', 'pos'];
+                  QUERY PLAN                   
+-----------------------------------------------
+ Index Scan using pgrn_index on tags
+   Index Cond: (names &^| '{gro,pos}'::text[])
+(2 rows)
+
+SELECT names
+  FROM tags
+ WHERE names &^| ARRAY['gro', 'pos'];
+      names      
+-----------------
+ {Groonga,grn}
+ {PostgreSQL,PG}
+(2 rows)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text-array/prefix-in/seqscan-empty-array.out (+18 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/prefix-in/seqscan-empty-array.out    2017-08-10 14:49:35 +0900 (ede43c4)
@@ -0,0 +1,18 @@
+CREATE TABLE tags (
+  names text[]
+);
+INSERT INTO tags VALUES (ARRAY['PostgreSQL', 'PG']);
+INSERT INTO tags VALUES (ARRAY['Groonga', 'grn']);
+INSERT INTO tags VALUES (ARRAY['PGroonga', 'pgrn']);
+INSERT INTO tags VALUES (ARRAY[]::text[]);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT names
+  FROM tags
+ WHERE names &^| ARRAY[]::text[];
+ names 
+-------
+(0 rows)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text-array/prefix-in/seqscan.out (+19 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/prefix-in/seqscan.out    2017-08-10 14:49:35 +0900 (2e42c12)
@@ -0,0 +1,19 @@
+CREATE TABLE tags (
+  names text[]
+);
+INSERT INTO tags VALUES (ARRAY['PostgreSQL', 'PG']);
+INSERT INTO tags VALUES (ARRAY['Groonga', 'grn']);
+INSERT INTO tags VALUES (ARRAY['PGroonga', 'pgrn']);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT names
+  FROM tags
+ WHERE names &^| ARRAY['gro', 'pos'];
+      names      
+-----------------
+ {PostgreSQL,PG}
+ {Groonga,grn}
+(2 rows)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text-array/prefix-rk-in/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/prefix-rk-in/bitmapscan.out    2017-08-10 14:49:35 +0900 (e87e225)
@@ -0,0 +1,33 @@
+CREATE TABLE readings (
+  katakanas text[]
+);
+INSERT INTO readings VALUES (ARRAY['ポストグレスキューエル', 'ポスグレ']);
+INSERT INTO readings VALUES (ARRAY['グルンガ', 'グルン']);
+INSERT INTO readings VALUES (ARRAY['ピージールンガ', 'ピーグルン']);
+CREATE INDEX pgrn_index ON readings
+  USING pgroonga (katakanas pgroonga.text_array_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT katakanas
+  FROM readings
+ WHERE katakanas &^~| ARRAY['po', 'gu'];
+                       QUERY PLAN                       
+--------------------------------------------------------
+ Bitmap Heap Scan on readings
+   Recheck Cond: (katakanas &^~| '{po,gu}'::text[])
+   ->  Bitmap Index Scan on pgrn_index
+         Index Cond: (katakanas &^~| '{po,gu}'::text[])
+(4 rows)
+
+SELECT katakanas
+  FROM readings
+ WHERE katakanas &^~| ARRAY['po', 'gu'];
+             katakanas             
+-----------------------------------
+ {ポストグレスキューエル,ポスグレ}
+ {グルンガ,グルン}
+(2 rows)
+
+DROP TABLE readings;

  Added: expected/compatibility/schema/term-search/text-array/prefix-rk-in/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/prefix-rk-in/indexscan.out    2017-08-10 14:49:35 +0900 (f5d9142)
@@ -0,0 +1,31 @@
+CREATE TABLE readings (
+  katakanas text[]
+);
+INSERT INTO readings VALUES (ARRAY['ポストグレスキューエル', 'ポスグレ']);
+INSERT INTO readings VALUES (ARRAY['グルンガ', 'グルン']);
+INSERT INTO readings VALUES (ARRAY['ピージールンガ', 'ピーグルン']);
+CREATE INDEX pgrn_index ON readings
+  USING pgroonga (katakanas pgroonga.text_array_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT katakanas
+  FROM readings
+ WHERE katakanas &^~| ARRAY['po', 'gu'];
+                    QUERY PLAN                    
+--------------------------------------------------
+ Index Scan using pgrn_index on readings
+   Index Cond: (katakanas &^~| '{po,gu}'::text[])
+(2 rows)
+
+SELECT katakanas
+  FROM readings
+ WHERE katakanas &^~| ARRAY['po', 'gu'];
+             katakanas             
+-----------------------------------
+ {ポストグレスキューエル,ポスグレ}
+ {グルンガ,グルン}
+(2 rows)
+
+DROP TABLE readings;

  Added: expected/compatibility/schema/term-search/text-array/prefix-rk-in/seqscan.out (+19 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/prefix-rk-in/seqscan.out    2017-08-10 14:49:35 +0900 (02c4eb3)
@@ -0,0 +1,19 @@
+CREATE TABLE readings (
+  katakanas text[]
+);
+INSERT INTO readings VALUES (ARRAY['ポストグレスキューエル', 'ポスグレ']);
+INSERT INTO readings VALUES (ARRAY['グルンガ', 'グルン']);
+INSERT INTO readings VALUES (ARRAY['ピージールンガ', 'ピーグルン']);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT katakanas
+  FROM readings
+ WHERE katakanas &^~| ARRAY['po', 'gu'];
+             katakanas             
+-----------------------------------
+ {ポストグレスキューエル,ポスグレ}
+ {グルンガ,グルン}
+(2 rows)
+
+DROP TABLE readings;

  Added: expected/compatibility/schema/term-search/text-array/prefix-rk/bitmapscan.out (+33 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/prefix-rk/bitmapscan.out    2017-08-10 14:49:35 +0900 (e2ea6ee)
@@ -0,0 +1,33 @@
+CREATE TABLE readings (
+  katakanas text[]
+);
+INSERT INTO readings VALUES (ARRAY['ポストグレスキューエル', 'ポスグレ']);
+INSERT INTO readings VALUES (ARRAY['グルンガ', 'グルン']);
+INSERT INTO readings VALUES (ARRAY['ピージールンガ', 'ピーグルン']);
+CREATE INDEX pgrn_index ON readings
+  USING pgroonga (katakanas pgroonga.text_array_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT katakanas
+  FROM readings
+ WHERE katakanas &^~ 'p';
+                  QUERY PLAN                   
+-----------------------------------------------
+ Bitmap Heap Scan on readings
+   Recheck Cond: (katakanas &^~ 'p'::text)
+   ->  Bitmap Index Scan on pgrn_index
+         Index Cond: (katakanas &^~ 'p'::text)
+(4 rows)
+
+SELECT katakanas
+  FROM readings
+ WHERE katakanas &^~ 'p';
+             katakanas             
+-----------------------------------
+ {ポストグレスキューエル,ポスグレ}
+ {ピージールンガ,ピーグルン}
+(2 rows)
+
+DROP TABLE readings;

  Added: expected/compatibility/schema/term-search/text-array/prefix-rk/indexscan.out (+31 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/prefix-rk/indexscan.out    2017-08-10 14:49:35 +0900 (c3733a3)
@@ -0,0 +1,31 @@
+CREATE TABLE readings (
+  katakanas text[]
+);
+INSERT INTO readings VALUES (ARRAY['ポストグレスキューエル', 'ポスグレ']);
+INSERT INTO readings VALUES (ARRAY['グルンガ', 'グルン']);
+INSERT INTO readings VALUES (ARRAY['ピージールンガ', 'ピーグルン']);
+CREATE INDEX pgrn_index ON readings
+  USING pgroonga (katakanas pgroonga.text_array_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT katakanas
+  FROM readings
+ WHERE katakanas &^~ 'p';
+               QUERY PLAN                
+-----------------------------------------
+ Index Scan using pgrn_index on readings
+   Index Cond: (katakanas &^~ 'p'::text)
+(2 rows)
+
+SELECT katakanas
+  FROM readings
+ WHERE katakanas &^~ 'p';
+             katakanas             
+-----------------------------------
+ {ピージールンガ,ピーグルン}
+ {ポストグレスキューエル,ポスグレ}
+(2 rows)
+
+DROP TABLE readings;

  Added: expected/compatibility/schema/term-search/text-array/prefix-rk/seqscan.out (+19 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/prefix-rk/seqscan.out    2017-08-10 14:49:35 +0900 (b0fe3e0)
@@ -0,0 +1,19 @@
+CREATE TABLE readings (
+  katakanas text[]
+);
+INSERT INTO readings VALUES (ARRAY['ポストグレスキューエル', 'ポスグレ']);
+INSERT INTO readings VALUES (ARRAY['グルンガ', 'グルン']);
+INSERT INTO readings VALUES (ARRAY['ピージールンガ', 'ピーグルン']);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT katakanas
+  FROM readings
+ WHERE katakanas &^~ 'p';
+             katakanas             
+-----------------------------------
+ {ポストグレスキューエル,ポスグレ}
+ {ピージールンガ,ピーグルン}
+(2 rows)
+
+DROP TABLE readings;

  Added: expected/compatibility/schema/term-search/text-array/prefix/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/prefix/bitmapscan.out    2017-08-10 14:49:35 +0900 (b652841)
@@ -0,0 +1,34 @@
+CREATE TABLE tags (
+  names text[]
+);
+INSERT INTO tags VALUES (ARRAY['PostgreSQL', 'PG']);
+INSERT INTO tags VALUES (ARRAY['Groonga', 'grn']);
+INSERT INTO tags VALUES (ARRAY['PGroonga', 'pgrn']);
+INSERT INTO tags VALUES (ARRAY[]::text[]);
+CREATE INDEX pgrn_index ON tags
+  USING pgroonga (names pgroonga.text_array_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT names
+  FROM tags
+ WHERE names &^ 'pG';
+                QUERY PLAN                 
+-------------------------------------------
+ Bitmap Heap Scan on tags
+   Recheck Cond: (names &^ 'pG'::text)
+   ->  Bitmap Index Scan on pgrn_index
+         Index Cond: (names &^ 'pG'::text)
+(4 rows)
+
+SELECT names
+  FROM tags
+ WHERE names &^ 'pG';
+      names      
+-----------------
+ {PostgreSQL,PG}
+ {PGroonga,pgrn}
+(2 rows)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text-array/prefix/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/prefix/indexscan.out    2017-08-10 14:49:35 +0900 (dfd7026)
@@ -0,0 +1,32 @@
+CREATE TABLE tags (
+  names text[]
+);
+INSERT INTO tags VALUES (ARRAY['PostgreSQL', 'PG']);
+INSERT INTO tags VALUES (ARRAY['Groonga', 'grn']);
+INSERT INTO tags VALUES (ARRAY['PGroonga', 'pgrn']);
+INSERT INTO tags VALUES (ARRAY[]::text[]);
+CREATE INDEX pgrn_index ON tags
+  USING pgroonga (names pgroonga.text_array_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT names
+  FROM tags
+ WHERE names &^ 'pG';
+             QUERY PLAN              
+-------------------------------------
+ Index Scan using pgrn_index on tags
+   Index Cond: (names &^ 'pG'::text)
+(2 rows)
+
+SELECT names
+  FROM tags
+ WHERE names &^ 'pG';
+      names      
+-----------------
+ {PGroonga,pgrn}
+ {PostgreSQL,PG}
+(2 rows)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text-array/prefix/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text-array/prefix/seqscan.out    2017-08-10 14:49:35 +0900 (09c1540)
@@ -0,0 +1,20 @@
+CREATE TABLE tags (
+  names text[]
+);
+INSERT INTO tags VALUES (ARRAY['PostgreSQL', 'PG']);
+INSERT INTO tags VALUES (ARRAY['Groonga', 'grn']);
+INSERT INTO tags VALUES (ARRAY['PGroonga', 'pgrn']);
+INSERT INTO tags VALUES (ARRAY[]::text[]);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT names
+  FROM tags
+ WHERE names &^ 'pG';
+      names      
+-----------------
+ {PostgreSQL,PG}
+ {PGroonga,pgrn}
+(2 rows)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text/combined/bitmapscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text/combined/bitmapscan.out    2017-08-10 14:49:35 +0900 (c543fb6)
@@ -0,0 +1,40 @@
+CREATE TABLE tags (
+  name text PRIMARY KEY
+);
+CREATE TABLE tag_readings (
+  tag_name text
+    REFERENCES tags ON DELETE CASCADE ON UPDATE CASCADE,
+  katakana text,
+  PRIMARY KEY (tag_name, katakana)
+);
+INSERT INTO tags VALUES ('PostgreSQL');
+INSERT INTO tags VALUES ('Groonga');
+INSERT INTO tags VALUES ('PGroonga');
+INSERT INTO tags VALUES ('pglogical');
+INSERT INTO tag_readings VALUES ('PostgreSQL', 'ポストグレスキューエル');
+INSERT INTO tag_readings VALUES ('PostgreSQL', 'ポスグレ');
+INSERT INTO tag_readings VALUES ('Groonga', 'グルンガ');
+INSERT INTO tag_readings VALUES ('PGroonga', 'ピージールンガ');
+INSERT INTO tag_readings VALUES ('pglogical', 'ピージーロジカル');
+CREATE INDEX pgrn_tags_index ON tags
+  USING pgroonga (name pgroonga.text_term_search_ops_v2);
+CREATE INDEX pgrn_tag_readings_index ON tag_readings
+  USING pgroonga (tag_name, katakana pgroonga.text_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT name, pgroonga.score(tags)
+  FROM tags
+  WHERE name &^ 'Groon'
+UNION
+SELECT tag_name, pgroonga.score(tag_readings)
+  FROM tag_readings
+  WHERE katakana &^~ 'posu';
+    name    | score 
+------------+-------
+ PostgreSQL |     1
+ Groonga    |     1
+(2 rows)
+
+DROP TABLE tag_readings;
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text/combined/indexscan.out (+40 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text/combined/indexscan.out    2017-08-10 14:49:35 +0900 (4661b2f)
@@ -0,0 +1,40 @@
+CREATE TABLE tags (
+  name text PRIMARY KEY
+);
+CREATE TABLE tag_readings (
+  tag_name text
+    REFERENCES tags ON DELETE CASCADE ON UPDATE CASCADE,
+  katakana text,
+  PRIMARY KEY (tag_name, katakana)
+);
+INSERT INTO tags VALUES ('PostgreSQL');
+INSERT INTO tags VALUES ('Groonga');
+INSERT INTO tags VALUES ('PGroonga');
+INSERT INTO tags VALUES ('pglogical');
+INSERT INTO tag_readings VALUES ('PostgreSQL', 'ポストグレスキューエル');
+INSERT INTO tag_readings VALUES ('PostgreSQL', 'ポスグレ');
+INSERT INTO tag_readings VALUES ('Groonga', 'グルンガ');
+INSERT INTO tag_readings VALUES ('PGroonga', 'ピージールンガ');
+INSERT INTO tag_readings VALUES ('pglogical', 'ピージーロジカル');
+CREATE INDEX pgrn_tags_index ON tags
+  USING pgroonga (name pgroonga.text_term_search_ops_v2);
+CREATE INDEX pgrn_tag_readings_index ON tag_readings
+  USING pgroonga (tag_name, katakana pgroonga.text_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT name, pgroonga.score(tags)
+  FROM tags
+  WHERE name &^ 'Groon'
+UNION
+SELECT tag_name, pgroonga.score(tag_readings)
+  FROM tag_readings
+  WHERE katakana &^~ 'posu';
+    name    | score 
+------------+-------
+ PostgreSQL |     1
+ Groonga    |     1
+(2 rows)
+
+DROP TABLE tag_readings;
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text/combined/seqscan.out (+36 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text/combined/seqscan.out    2017-08-10 14:49:35 +0900 (8893a96)
@@ -0,0 +1,36 @@
+CREATE TABLE tags (
+  name text PRIMARY KEY
+);
+CREATE TABLE tag_readings (
+  tag_name text
+    REFERENCES tags ON DELETE CASCADE ON UPDATE CASCADE,
+  katakana text,
+  PRIMARY KEY (tag_name, katakana)
+);
+INSERT INTO tags VALUES ('PostgreSQL');
+INSERT INTO tags VALUES ('Groonga');
+INSERT INTO tags VALUES ('PGroonga');
+INSERT INTO tags VALUES ('pglogical');
+INSERT INTO tag_readings VALUES ('PostgreSQL', 'ポストグレスキューエル');
+INSERT INTO tag_readings VALUES ('PostgreSQL', 'ポスグレ');
+INSERT INTO tag_readings VALUES ('Groonga', 'グルンガ');
+INSERT INTO tag_readings VALUES ('PGroonga', 'ピージールンガ');
+INSERT INTO tag_readings VALUES ('pglogical', 'ピージーロジカル');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT name, pgroonga.score(tags)
+  FROM tags
+  WHERE name &^ 'Groon'
+UNION
+SELECT tag_name, pgroonga.score(tag_readings)
+  FROM tag_readings
+  WHERE katakana &^~ 'posu';
+    name    | score 
+------------+-------
+ Groonga    |     0
+ PostgreSQL |     0
+(2 rows)
+
+DROP TABLE tag_readings;
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text/options/tokenizer/ignored.out (+16 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text/options/tokenizer/ignored.out    2017-08-10 14:49:35 +0900 (2123bbc)
@@ -0,0 +1,16 @@
+CREATE TABLE tags (
+  name text
+);
+CREATE INDEX pgrn_index ON tags
+  USING pgroonga (name pgroonga.text_term_search_ops_v2)
+  WITH (tokenizer = "TokenDelimit");
+SELECT entry->>6 AS tokenizer
+  FROM jsonb_array_elements((pgroonga.command('table_list')::jsonb#>'{1}') - 0)
+       AS entry
+ WHERE entry->>1 = 'Lexicon' || 'pgrn_index'::regclass::oid || '_0';
+ tokenizer 
+-----------
+ 
+(1 row)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text/prefix-in/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text/prefix-in/bitmapscan.out    2017-08-10 14:49:35 +0900 (1afc70c)
@@ -0,0 +1,34 @@
+CREATE TABLE tags (
+  name text
+);
+INSERT INTO tags VALUES ('PostgreSQL');
+INSERT INTO tags VALUES ('Groonga');
+INSERT INTO tags VALUES ('PGroonga');
+INSERT INTO tags VALUES ('pglogical');
+CREATE INDEX pgrn_index ON tags
+  USING pgroonga (name pgroonga.text_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT name
+  FROM tags
+ WHERE name &^| ARRAY['gro', 'pos'];
+                     QUERY PLAN                     
+----------------------------------------------------
+ Bitmap Heap Scan on tags
+   Recheck Cond: (name &^| '{gro,pos}'::text[])
+   ->  Bitmap Index Scan on pgrn_index
+         Index Cond: (name &^| '{gro,pos}'::text[])
+(4 rows)
+
+SELECT name
+  FROM tags
+ WHERE name &^| ARRAY['gro', 'pos'];
+    name    
+------------
+ PostgreSQL
+ Groonga
+(2 rows)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text/prefix-in/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text/prefix-in/indexscan.out    2017-08-10 14:49:35 +0900 (9b7459d)
@@ -0,0 +1,32 @@
+CREATE TABLE tags (
+  name text
+);
+INSERT INTO tags VALUES ('PostgreSQL');
+INSERT INTO tags VALUES ('Groonga');
+INSERT INTO tags VALUES ('PGroonga');
+INSERT INTO tags VALUES ('pglogical');
+CREATE INDEX pgrn_index ON tags
+  USING pgroonga (name pgroonga.text_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT name
+  FROM tags
+ WHERE name &^| ARRAY['gro', 'pos'];
+                  QUERY PLAN                  
+----------------------------------------------
+ Index Scan using pgrn_index on tags
+   Index Cond: (name &^| '{gro,pos}'::text[])
+(2 rows)
+
+SELECT name
+  FROM tags
+ WHERE name &^| ARRAY['gro', 'pos'];
+    name    
+------------
+ Groonga
+ PostgreSQL
+(2 rows)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text/prefix-in/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text/prefix-in/seqscan.out    2017-08-10 14:49:35 +0900 (953198d)
@@ -0,0 +1,20 @@
+CREATE TABLE tags (
+  name text
+);
+INSERT INTO tags VALUES ('PostgreSQL');
+INSERT INTO tags VALUES ('Groonga');
+INSERT INTO tags VALUES ('PGroonga');
+INSERT INTO tags VALUES ('pglogical');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT name
+  FROM tags
+ WHERE name &^| ARRAY['gro', 'pos'];
+    name    
+------------
+ PostgreSQL
+ Groonga
+(2 rows)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text/prefix-rk-in/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text/prefix-rk-in/bitmapscan.out    2017-08-10 14:49:35 +0900 (bb63df6)
@@ -0,0 +1,34 @@
+CREATE TABLE readings (
+  katakana text
+);
+INSERT INTO readings VALUES ('ポストグレスキューエル');
+INSERT INTO readings VALUES ('グルンガ');
+INSERT INTO readings VALUES ('ピージールンガ');
+INSERT INTO readings VALUES ('ピージーロジカル');
+CREATE INDEX pgrn_index ON readings
+  USING pgroonga (katakana pgroonga.text_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT katakana
+  FROM readings
+ WHERE katakana &^~| ARRAY['po', 'gu'];
+                      QUERY PLAN                       
+-------------------------------------------------------
+ Bitmap Heap Scan on readings
+   Recheck Cond: (katakana &^~| '{po,gu}'::text[])
+   ->  Bitmap Index Scan on pgrn_index
+         Index Cond: (katakana &^~| '{po,gu}'::text[])
+(4 rows)
+
+SELECT katakana
+  FROM readings
+ WHERE katakana &^~| ARRAY['po', 'gu'];
+        katakana        
+------------------------
+ ポストグレスキューエル
+ グルンガ
+(2 rows)
+
+DROP TABLE readings;

  Added: expected/compatibility/schema/term-search/text/prefix-rk-in/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text/prefix-rk-in/indexscan.out    2017-08-10 14:49:35 +0900 (138177d)
@@ -0,0 +1,32 @@
+CREATE TABLE readings (
+  katakana text
+);
+INSERT INTO readings VALUES ('ポストグレスキューエル');
+INSERT INTO readings VALUES ('グルンガ');
+INSERT INTO readings VALUES ('ピージールンガ');
+INSERT INTO readings VALUES ('ピージーロジカル');
+CREATE INDEX pgrn_index ON readings
+  USING pgroonga (katakana pgroonga.text_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT katakana
+  FROM readings
+ WHERE katakana &^~| ARRAY['po', 'gu'];
+                   QUERY PLAN                    
+-------------------------------------------------
+ Index Scan using pgrn_index on readings
+   Index Cond: (katakana &^~| '{po,gu}'::text[])
+(2 rows)
+
+SELECT katakana
+  FROM readings
+ WHERE katakana &^~| ARRAY['po', 'gu'];
+        katakana        
+------------------------
+ ポストグレスキューエル
+ グルンガ
+(2 rows)
+
+DROP TABLE readings;

  Added: expected/compatibility/schema/term-search/text/prefix-rk-in/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text/prefix-rk-in/seqscan.out    2017-08-10 14:49:35 +0900 (1de9ee4)
@@ -0,0 +1,20 @@
+CREATE TABLE readings (
+  katakana text
+);
+INSERT INTO readings VALUES ('ポストグレスキューエル');
+INSERT INTO readings VALUES ('グルンガ');
+INSERT INTO readings VALUES ('ピージールンガ');
+INSERT INTO readings VALUES ('ピージーロジカル');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT katakana
+  FROM readings
+ WHERE katakana &^~| ARRAY['po', 'gu'];
+        katakana        
+------------------------
+ ポストグレスキューエル
+ グルンガ
+(2 rows)
+
+DROP TABLE readings;

  Added: expected/compatibility/schema/term-search/text/prefix-rk/bitmapscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text/prefix-rk/bitmapscan.out    2017-08-10 14:49:35 +0900 (4069aa4)
@@ -0,0 +1,23 @@
+CREATE TABLE readings (
+  katakana text
+);
+INSERT INTO readings VALUES ('ポストグレスキューエル');
+INSERT INTO readings VALUES ('グルンガ');
+INSERT INTO readings VALUES ('ピージールンガ');
+INSERT INTO readings VALUES ('ピージーロジカル');
+CREATE INDEX pgrn_index ON readings
+  USING pgroonga (katakana pgroonga.text_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT katakana
+  FROM readings
+ WHERE katakana &^~ 'p';
+        katakana        
+------------------------
+ ポストグレスキューエル
+ ピージールンガ
+ ピージーロジカル
+(3 rows)
+
+DROP TABLE readings;

  Added: expected/compatibility/schema/term-search/text/prefix-rk/indexscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text/prefix-rk/indexscan.out    2017-08-10 14:49:35 +0900 (77c5e99)
@@ -0,0 +1,23 @@
+CREATE TABLE readings (
+  katakana text
+);
+INSERT INTO readings VALUES ('ポストグレスキューエル');
+INSERT INTO readings VALUES ('グルンガ');
+INSERT INTO readings VALUES ('ピージールンガ');
+INSERT INTO readings VALUES ('ピージーロジカル');
+CREATE INDEX pgrn_index ON readings
+  USING pgroonga (katakana pgroonga.text_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT katakana
+  FROM readings
+ WHERE katakana &^~ 'p';
+        katakana        
+------------------------
+ ピージールンガ
+ ピージーロジカル
+ ポストグレスキューエル
+(3 rows)
+
+DROP TABLE readings;

  Added: expected/compatibility/schema/term-search/text/prefix-rk/seqscan.out (+21 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text/prefix-rk/seqscan.out    2017-08-10 14:49:35 +0900 (f7073ce)
@@ -0,0 +1,21 @@
+CREATE TABLE readings (
+  katakana text
+);
+INSERT INTO readings VALUES ('ポストグレスキューエル');
+INSERT INTO readings VALUES ('グルンガ');
+INSERT INTO readings VALUES ('ピージールンガ');
+INSERT INTO readings VALUES ('ピージーロジカル');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT katakana
+  FROM readings
+ WHERE katakana &^~ 'p';
+        katakana        
+------------------------
+ ポストグレスキューエル
+ ピージールンガ
+ ピージーロジカル
+(3 rows)
+
+DROP TABLE readings;

  Added: expected/compatibility/schema/term-search/text/prefix/bitmapscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text/prefix/bitmapscan.out    2017-08-10 14:49:35 +0900 (11ee928)
@@ -0,0 +1,22 @@
+CREATE TABLE tags (
+  name text
+);
+INSERT INTO tags VALUES ('PostgreSQL');
+INSERT INTO tags VALUES ('Groonga');
+INSERT INTO tags VALUES ('PGroonga');
+INSERT INTO tags VALUES ('pglogical');
+CREATE INDEX pgrn_index ON tags
+  USING pgroonga (name pgroonga.text_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+SELECT name
+  FROM tags
+ WHERE name &^ 'pG';
+   name    
+-----------
+ PGroonga
+ pglogical
+(2 rows)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text/prefix/indexscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text/prefix/indexscan.out    2017-08-10 14:49:35 +0900 (c902faa)
@@ -0,0 +1,22 @@
+CREATE TABLE tags (
+  name text
+);
+INSERT INTO tags VALUES ('PostgreSQL');
+INSERT INTO tags VALUES ('Groonga');
+INSERT INTO tags VALUES ('PGroonga');
+INSERT INTO tags VALUES ('pglogical');
+CREATE INDEX pgrn_index ON tags
+  USING pgroonga (name pgroonga.text_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT name
+  FROM tags
+ WHERE name &^ 'pG';
+   name    
+-----------
+ PGroonga
+ pglogical
+(2 rows)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/text/prefix/seqscan.out (+20 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/text/prefix/seqscan.out    2017-08-10 14:49:35 +0900 (7693d80)
@@ -0,0 +1,20 @@
+CREATE TABLE tags (
+  name text
+);
+INSERT INTO tags VALUES ('PostgreSQL');
+INSERT INTO tags VALUES ('Groonga');
+INSERT INTO tags VALUES ('PGroonga');
+INSERT INTO tags VALUES ('pglogical');
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT name
+  FROM tags
+ WHERE name &^ 'pG';
+   name    
+-----------
+ PGroonga
+ pglogical
+(2 rows)
+
+DROP TABLE tags;

  Added: expected/compatibility/schema/term-search/varchar-array/compatibility/v1/contain-v2/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/varchar-array/compatibility/v1/contain-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (cd6f849)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  tags varchar(1023)[]
+);
+INSERT INTO memos VALUES ('PostgreSQL', ARRAY['PostgreSQL']);
+INSERT INTO memos VALUES ('Groonga', ARRAY['Groonga']);
+INSERT INTO memos VALUES ('PGroonga', ARRAY['PostgreSQL', 'Groonga']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (tags pgroonga.varchar_array_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, tags
+  FROM memos
+ WHERE tags &> 'Groonga';
+                         QUERY PLAN                         
+------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (tags &> 'Groonga'::character varying)
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (tags &> 'Groonga'::character varying)
+(4 rows)
+
+SELECT title, tags
+  FROM memos
+ WHERE tags &> 'Groonga';
+  title   |         tags         
+----------+----------------------
+ Groonga  | {Groonga}
+ PGroonga | {PostgreSQL,Groonga}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/term-search/varchar-array/compatibility/v1/contain-v2/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/varchar-array/compatibility/v1/contain-v2/indexscan.out    2017-08-10 14:49:35 +0900 (82fb82e)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  title text,
+  tags varchar(1023)[]
+);
+INSERT INTO memos VALUES ('PostgreSQL', ARRAY['PostgreSQL']);
+INSERT INTO memos VALUES ('Groonga', ARRAY['Groonga']);
+INSERT INTO memos VALUES ('PGroonga', ARRAY['PostgreSQL', 'Groonga']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (tags pgroonga.varchar_array_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, tags
+  FROM memos
+ WHERE tags &> 'Groonga';
+                      QUERY PLAN                      
+------------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (tags &> 'Groonga'::character varying)
+(2 rows)
+
+SELECT title, tags
+  FROM memos
+ WHERE tags &> 'Groonga';
+  title   |         tags         
+----------+----------------------
+ Groonga  | {Groonga}
+ PGroonga | {PostgreSQL,Groonga}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/term-search/varchar-array/compatibility/v1/contain-v2/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/varchar-array/compatibility/v1/contain-v2/seqscan.out    2017-08-10 14:49:35 +0900 (badcdc3)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  title text,
+  tags varchar(1023)[]
+);
+INSERT INTO memos VALUES ('PostgreSQL', ARRAY['PostgreSQL']);
+INSERT INTO memos VALUES ('Groonga', ARRAY['Groonga']);
+INSERT INTO memos VALUES ('PGroonga', ARRAY['PostgreSQL', 'Groonga']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (tags pgroonga.varchar_array_ops);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, tags
+  FROM memos
+ WHERE tags &> 'Groonga';
+  title   |         tags         
+----------+----------------------
+ Groonga  | {Groonga}
+ PGroonga | {PostgreSQL,Groonga}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/term-search/varchar-array/compatibility/v2/contain-v1/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/varchar-array/compatibility/v2/contain-v1/bitmapscan.out    2017-08-10 14:49:35 +0900 (cbb0627)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  tags varchar(1023)[]
+);
+INSERT INTO memos VALUES ('PostgreSQL', ARRAY['PostgreSQL']);
+INSERT INTO memos VALUES ('Groonga', ARRAY['Groonga']);
+INSERT INTO memos VALUES ('PGroonga', ARRAY['PostgreSQL', 'Groonga']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (tags pgroonga.varchar_array_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, tags
+  FROM memos
+ WHERE tags %% 'Groonga';
+                         QUERY PLAN                         
+------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (tags %% 'Groonga'::character varying)
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (tags %% 'Groonga'::character varying)
+(4 rows)
+
+SELECT title, tags
+  FROM memos
+ WHERE tags %% 'Groonga';
+  title   |         tags         
+----------+----------------------
+ Groonga  | {Groonga}
+ PGroonga | {PostgreSQL,Groonga}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/term-search/varchar-array/compatibility/v2/contain-v1/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/varchar-array/compatibility/v2/contain-v1/indexscan.out    2017-08-10 14:49:35 +0900 (d292527)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  title text,
+  tags varchar(1023)[]
+);
+INSERT INTO memos VALUES ('PostgreSQL', ARRAY['PostgreSQL']);
+INSERT INTO memos VALUES ('Groonga', ARRAY['Groonga']);
+INSERT INTO memos VALUES ('PGroonga', ARRAY['PostgreSQL', 'Groonga']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (tags pgroonga.varchar_array_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, tags
+  FROM memos
+ WHERE tags %% 'Groonga';
+                      QUERY PLAN                      
+------------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (tags %% 'Groonga'::character varying)
+(2 rows)
+
+SELECT title, tags
+  FROM memos
+ WHERE tags %% 'Groonga';
+  title   |         tags         
+----------+----------------------
+ Groonga  | {Groonga}
+ PGroonga | {PostgreSQL,Groonga}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/term-search/varchar-array/compatibility/v2/contain-v1/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/varchar-array/compatibility/v2/contain-v1/seqscan.out    2017-08-10 14:49:35 +0900 (7e2d1e7)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  title text,
+  tags varchar(1023)[]
+);
+INSERT INTO memos VALUES ('PostgreSQL', ARRAY['PostgreSQL']);
+INSERT INTO memos VALUES ('Groonga', ARRAY['Groonga']);
+INSERT INTO memos VALUES ('PGroonga', ARRAY['PostgreSQL', 'Groonga']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (tags pgroonga.varchar_array_term_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, tags
+  FROM memos
+ WHERE tags %% 'Groonga';
+  title   |         tags         
+----------+----------------------
+ Groonga  | {Groonga}
+ PGroonga | {PostgreSQL,Groonga}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/term-search/varchar-array/contain-v2/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/varchar-array/contain-v2/bitmapscan.out    2017-08-10 14:49:35 +0900 (99e6ee0)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  tags varchar(1023)[]
+);
+INSERT INTO memos VALUES ('PostgreSQL', ARRAY['PostgreSQL']);
+INSERT INTO memos VALUES ('Groonga', ARRAY['Groonga']);
+INSERT INTO memos VALUES ('PGroonga', ARRAY['PostgreSQL', 'Groonga']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (tags pgroonga.varchar_array_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, tags
+  FROM memos
+ WHERE tags &> 'Groonga';
+                         QUERY PLAN                         
+------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (tags &> 'Groonga'::character varying)
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (tags &> 'Groonga'::character varying)
+(4 rows)
+
+SELECT title, tags
+  FROM memos
+ WHERE tags &> 'Groonga';
+  title   |         tags         
+----------+----------------------
+ Groonga  | {Groonga}
+ PGroonga | {PostgreSQL,Groonga}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/term-search/varchar-array/contain-v2/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/varchar-array/contain-v2/indexscan.out    2017-08-10 14:49:35 +0900 (c9d1827)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  title text,
+  tags varchar(1023)[]
+);
+INSERT INTO memos VALUES ('PostgreSQL', ARRAY['PostgreSQL']);
+INSERT INTO memos VALUES ('Groonga', ARRAY['Groonga']);
+INSERT INTO memos VALUES ('PGroonga', ARRAY['PostgreSQL', 'Groonga']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (tags pgroonga.varchar_array_term_search_ops_v2);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, tags
+  FROM memos
+ WHERE tags &> 'Groonga';
+                      QUERY PLAN                      
+------------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (tags &> 'Groonga'::character varying)
+(2 rows)
+
+SELECT title, tags
+  FROM memos
+ WHERE tags &> 'Groonga';
+  title   |         tags         
+----------+----------------------
+ Groonga  | {Groonga}
+ PGroonga | {PostgreSQL,Groonga}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/term-search/varchar-array/contain-v2/seqscan.out (+22 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/varchar-array/contain-v2/seqscan.out    2017-08-10 14:49:35 +0900 (ee56d25)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  title text,
+  tags varchar(1023)[]
+);
+INSERT INTO memos VALUES ('PostgreSQL', ARRAY['PostgreSQL']);
+INSERT INTO memos VALUES ('Groonga', ARRAY['Groonga']);
+INSERT INTO memos VALUES ('PGroonga', ARRAY['PostgreSQL', 'Groonga']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (tags pgroonga.varchar_array_term_search_ops_v2);
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, tags
+  FROM memos
+ WHERE tags &> 'Groonga';
+  title   |         tags         
+----------+----------------------
+ Groonga  | {Groonga}
+ PGroonga | {PostgreSQL,Groonga}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/term-search/varchar-array/contain/bitmapscan.out (+34 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/varchar-array/contain/bitmapscan.out    2017-08-10 14:49:35 +0900 (cefb3c0)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  tags varchar(1023)[]
+);
+INSERT INTO memos VALUES ('PostgreSQL', ARRAY['PostgreSQL']);
+INSERT INTO memos VALUES ('Groonga', ARRAY['Groonga']);
+INSERT INTO memos VALUES ('PGroonga', ARRAY['PostgreSQL', 'Groonga']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (tags pgroonga.varchar_array_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+EXPLAIN (COSTS OFF)
+SELECT title, tags
+  FROM memos
+ WHERE tags %% 'Groonga';
+                         QUERY PLAN                         
+------------------------------------------------------------
+ Bitmap Heap Scan on memos
+   Recheck Cond: (tags %% 'Groonga'::character varying)
+   ->  Bitmap Index Scan on pgroonga_memos_index
+         Index Cond: (tags %% 'Groonga'::character varying)
+(4 rows)
+
+SELECT title, tags
+  FROM memos
+ WHERE tags %% 'Groonga';
+  title   |         tags         
+----------+----------------------
+ Groonga  | {Groonga}
+ PGroonga | {PostgreSQL,Groonga}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/term-search/varchar-array/contain/indexscan.out (+32 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/varchar-array/contain/indexscan.out    2017-08-10 14:49:35 +0900 (4bb3b25)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  title text,
+  tags varchar(1023)[]
+);
+INSERT INTO memos VALUES ('PostgreSQL', ARRAY['PostgreSQL']);
+INSERT INTO memos VALUES ('Groonga', ARRAY['Groonga']);
+INSERT INTO memos VALUES ('PGroonga', ARRAY['PostgreSQL', 'Groonga']);
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (tags pgroonga.varchar_array_ops);
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+EXPLAIN (COSTS OFF)
+SELECT title, tags
+  FROM memos
+ WHERE tags %% 'Groonga';
+                      QUERY PLAN                      
+------------------------------------------------------
+ Index Scan using pgroonga_memos_index on memos
+   Index Cond: (tags %% 'Groonga'::character varying)
+(2 rows)
+
+SELECT title, tags
+  FROM memos
+ WHERE tags %% 'Groonga';
+  title   |         tags         
+----------+----------------------
+ Groonga  | {Groonga}
+ PGroonga | {PostgreSQL,Groonga}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/term-search/varchar-array/contain/seqscan.out (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/term-search/varchar-array/contain/seqscan.out    2017-08-10 14:49:35 +0900 (84d217e)
@@ -0,0 +1,23 @@
+CREATE TABLE memos (
+  title text,
+  tags varchar(1023)[]
+);
+INSERT INTO memos VALUES ('PostgreSQL', ARRAY['PostgreSQL']);
+INSERT INTO memos VALUES ('Groonga', ARRAY['Groonga']);
+INSERT INTO memos VALUES ('PGroonga', ARRAY['PostgreSQL', 'Groonga']);
+CREATE INDEX pgroonga_memos_index ON memos USING pgroonga (tags);
+ERROR:  data type character varying[] has no default operator class for access method "pgroonga"
+HINT:  You must specify an operator class for the index or define a default operator class for the data type.
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+SELECT title, tags
+  FROM memos
+ WHERE tags %% 'Groonga';
+  title   |         tags         
+----------+----------------------
+ Groonga  | {Groonga}
+ PGroonga | {PostgreSQL,Groonga}
+(2 rows)
+
+DROP TABLE memos;

  Added: expected/compatibility/schema/vacuum/tablespace.out.in (+23 -0) 100644
===================================================================
--- /dev/null
+++ expected/compatibility/schema/vacuum/tablespace.out.in    2017-08-10 14:49:35 +0900 (2386c37)
@@ -0,0 +1,23 @@
+CREATE TABLESPACE fast LOCATION '@TMP_DIR@/space';
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+CREATE INDEX pgrn_index ON memos USING pgroonga (content) TABLESPACE fast;
+VACUUM;
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+SELECT id, content
+  FROM memos
+ WHERE content %% 'PGroonga' AND content %% 'Groonga';
+ id |                        content                        
+----+-------------------------------------------------------
+  3 | PGroonga is a PostgreSQL extension that uses Groonga.
+(1 row)
+
+DROP TABLE memos;
+DROP TABLESPACE fast;

  Modified: pgroonga.mk (+6 -0)
===================================================================
--- pgroonga.mk    2017-08-03 23:40:56 +0900 (a587f4b)
+++ pgroonga.mk    2017-08-10 14:49:35 +0900 (f6684fb)
@@ -56,6 +56,12 @@ prepare-regress:
 	@sed -e "s, �� TMP_DIR@,$(TMP_DIR),g"	\
 	  expected/vacuum/tablespace.out.in >	\
 	  expected/vacuum/tablespace.out
+	@sed -e "s, �� TMP_DIR@,$(TMP_DIR),g"			\
+	  sql/compatibility/schema/vacuum/tablespace.sql.in >	\
+	  sql/compatibility/schema/vacuum/tablespace.sql
+	@sed -e "s, �� TMP_DIR@,$(TMP_DIR),g"				\
+	  expected/compatibility/schema/vacuum/tablespace.out.in >	\
+	  expected/compatibility/schema/vacuum/tablespace.out
 
 $(RESULT_DIRS) $(EXPECTED_DIRS):
 	@mkdir -p $@

  Added: sql/compatibility/schema/column-name/japanese.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/column-name/japanese.sql    2017-08-10 14:49:35 +0900 (92e8762)
@@ -0,0 +1,21 @@
+CREATE TABLE メモ (
+  id integer,
+  コンテンツ text
+);
+
+INSERT INTO メモ VALUES (1, 'PostgreSQLはRDBMSです。');
+INSERT INTO メモ VALUES (2, 'Groongaは高速な全文検索エンジンです。');
+INSERT INTO メモ VALUES (3, 'PGroongaはGroongaを使うPostgreSQLの拡張機能です。');
+
+CREATE INDEX 全文検索索引 ON メモ
+  USING pgroonga (コンテンツ pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, コンテンツ
+  FROM メモ
+ WHERE コンテンツ %% '全文検索';
+
+DROP TABLE メモ;

  Added: sql/compatibility/schema/compare/integer/multiple/greater-than-equal/multiple.sql (+30 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/compare/integer/multiple/greater-than-equal/multiple.sql    2017-08-10 14:49:35 +0900 (b6f033b)
@@ -0,0 +1,30 @@
+CREATE TABLE numbers (
+  number1 integer,
+  number2 integer
+);
+
+INSERT INTO numbers VALUES (2,  20);
+INSERT INTO numbers VALUES (7,  70);
+INSERT INTO numbers VALUES (6,  60);
+INSERT INTO numbers VALUES (4,  40);
+INSERT INTO numbers VALUES (5,  50);
+INSERT INTO numbers VALUES (8,  80);
+INSERT INTO numbers VALUES (1,  10);
+INSERT INTO numbers VALUES (10, 100);
+INSERT INTO numbers VALUES (3,  30);
+INSERT INTO numbers VALUES (9,  90);
+
+CREATE INDEX grnindex ON numbers
+  USING pgroonga (number1 pgroonga.int4_ops,
+                  number2 pgroonga.int4_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT number1, number2
+  FROM numbers
+ WHERE number1 >= 3 AND number2 >= 50
+ ORDER BY number1 ASC;
+
+DROP TABLE numbers;

  Added: sql/compatibility/schema/compare/integer/order-by-limit/asc.sql (+27 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/compare/integer/order-by-limit/asc.sql    2017-08-10 14:49:35 +0900 (cb320aa)
@@ -0,0 +1,27 @@
+CREATE TABLE ids (
+  id integer
+);
+
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (7);
+INSERT INTO ids VALUES (6);
+INSERT INTO ids VALUES (4);
+INSERT INTO ids VALUES (5);
+INSERT INTO ids VALUES (8);
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (10);
+INSERT INTO ids VALUES (3);
+INSERT INTO ids VALUES (9);
+
+CREATE INDEX grnindex ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+
+SELECT id
+  FROM ids
+  ORDER BY id ASC
+  LIMIT 5;
+
+DROP TABLE ids;

  Added: sql/compatibility/schema/compare/integer/order-by-limit/desc.sql (+27 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/compare/integer/order-by-limit/desc.sql    2017-08-10 14:49:35 +0900 (5c600d8)
@@ -0,0 +1,27 @@
+CREATE TABLE ids (
+  id integer
+);
+
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (7);
+INSERT INTO ids VALUES (6);
+INSERT INTO ids VALUES (4);
+INSERT INTO ids VALUES (5);
+INSERT INTO ids VALUES (8);
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (10);
+INSERT INTO ids VALUES (3);
+INSERT INTO ids VALUES (9);
+
+CREATE INDEX grnindex ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+
+SELECT id
+  FROM ids
+  ORDER BY id DESC
+  LIMIT 5;
+
+DROP TABLE ids;

  Added: sql/compatibility/schema/compare/integer/single/between/bitmapscan.sql (+28 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/compare/integer/single/between/bitmapscan.sql    2017-08-10 14:49:35 +0900 (1d12d95)
@@ -0,0 +1,28 @@
+CREATE TABLE ids (
+  id integer
+);
+
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (7);
+INSERT INTO ids VALUES (6);
+INSERT INTO ids VALUES (4);
+INSERT INTO ids VALUES (5);
+INSERT INTO ids VALUES (8);
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (10);
+INSERT INTO ids VALUES (3);
+INSERT INTO ids VALUES (9);
+
+CREATE INDEX grnindex ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id
+  FROM ids
+ WHERE id BETWEEN 3 AND 9
+ ORDER BY id ASC;
+
+DROP TABLE ids;

  Added: sql/compatibility/schema/compare/integer/single/between/indexscan.sql (+28 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/compare/integer/single/between/indexscan.sql    2017-08-10 14:49:35 +0900 (bfd7e29)
@@ -0,0 +1,28 @@
+CREATE TABLE ids (
+  id integer
+);
+
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (7);
+INSERT INTO ids VALUES (6);
+INSERT INTO ids VALUES (4);
+INSERT INTO ids VALUES (5);
+INSERT INTO ids VALUES (8);
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (10);
+INSERT INTO ids VALUES (3);
+INSERT INTO ids VALUES (9);
+
+CREATE INDEX grnindex ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id
+  FROM ids
+ WHERE id BETWEEN 3 AND 9
+ ORDER BY id ASC;
+
+DROP TABLE ids;

  Added: sql/compatibility/schema/compare/integer/single/greater-than-equal/multiple.sql (+28 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/compare/integer/single/greater-than-equal/multiple.sql    2017-08-10 14:49:35 +0900 (20452b7)
@@ -0,0 +1,28 @@
+CREATE TABLE ids (
+  id integer
+);
+
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (7);
+INSERT INTO ids VALUES (6);
+INSERT INTO ids VALUES (4);
+INSERT INTO ids VALUES (5);
+INSERT INTO ids VALUES (8);
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (10);
+INSERT INTO ids VALUES (3);
+INSERT INTO ids VALUES (9);
+
+CREATE INDEX grnindex ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id
+  FROM ids
+ WHERE id >= 3 AND id >= 5
+ ORDER BY id ASC;
+
+DROP TABLE ids;

  Added: sql/compatibility/schema/compare/integer/single/in/bitmapscan.sql (+28 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/compare/integer/single/in/bitmapscan.sql    2017-08-10 14:49:35 +0900 (aa0393d)
@@ -0,0 +1,28 @@
+CREATE TABLE ids (
+  id integer
+);
+
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (7);
+INSERT INTO ids VALUES (6);
+INSERT INTO ids VALUES (4);
+INSERT INTO ids VALUES (5);
+INSERT INTO ids VALUES (8);
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (10);
+INSERT INTO ids VALUES (3);
+INSERT INTO ids VALUES (9);
+
+CREATE INDEX pgroonga_index ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id
+  FROM ids
+ WHERE id IN (6, 1, 7)
+ ORDER BY id ASC;
+
+DROP TABLE ids;

  Added: sql/compatibility/schema/compare/integer/single/in/indexscan.sql (+28 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/compare/integer/single/in/indexscan.sql    2017-08-10 14:49:35 +0900 (8679f61)
@@ -0,0 +1,28 @@
+CREATE TABLE ids (
+  id integer
+);
+
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (7);
+INSERT INTO ids VALUES (6);
+INSERT INTO ids VALUES (4);
+INSERT INTO ids VALUES (5);
+INSERT INTO ids VALUES (8);
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (10);
+INSERT INTO ids VALUES (3);
+INSERT INTO ids VALUES (9);
+
+CREATE INDEX pgroonga_index ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id
+  FROM ids
+ WHERE id IN (6, 1, 7)
+ ORDER BY id ASC;
+
+DROP TABLE ids;

  Added: sql/compatibility/schema/compare/integer/single/less-than-equal/bitmapscan.sql (+20 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/compare/integer/single/less-than-equal/bitmapscan.sql    2017-08-10 14:49:35 +0900 (7d46813)
@@ -0,0 +1,20 @@
+CREATE TABLE ids (
+  id integer
+);
+
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (3);
+
+CREATE INDEX grnindex ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id
+  FROM ids
+ WHERE id <= 2;
+
+DROP TABLE ids;

  Added: sql/compatibility/schema/compare/integer/single/less-than-equal/indexscan.sql (+20 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/compare/integer/single/less-than-equal/indexscan.sql    2017-08-10 14:49:35 +0900 (1f7741c)
@@ -0,0 +1,20 @@
+CREATE TABLE ids (
+  id integer
+);
+
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (3);
+
+CREATE INDEX grnindex ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id
+  FROM ids
+ WHERE id <= 2;
+
+DROP TABLE ids;

  Added: sql/compatibility/schema/compare/integer/single/less-than-equal/multiple.sql (+28 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/compare/integer/single/less-than-equal/multiple.sql    2017-08-10 14:49:35 +0900 (ca3d7a7)
@@ -0,0 +1,28 @@
+CREATE TABLE ids (
+  id integer
+);
+
+INSERT INTO ids VALUES (2);
+INSERT INTO ids VALUES (7);
+INSERT INTO ids VALUES (6);
+INSERT INTO ids VALUES (4);
+INSERT INTO ids VALUES (5);
+INSERT INTO ids VALUES (8);
+INSERT INTO ids VALUES (1);
+INSERT INTO ids VALUES (10);
+INSERT INTO ids VALUES (3);
+INSERT INTO ids VALUES (9);
+
+CREATE INDEX grnindex ON ids
+  USING pgroonga (id pgroonga.int4_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id
+  FROM ids
+ WHERE id <= 5 AND id <= 3
+ ORDER BY id ASC;
+
+DROP TABLE ids;

  Added: sql/compatibility/schema/compare/timestamp-with-time-zone/single/between/bitmapscan.sql (+28 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/compare/timestamp-with-time-zone/single/between/bitmapscan.sql    2017-08-10 14:49:35 +0900 (a867fa1)
@@ -0,0 +1,28 @@
+CREATE TABLE logs (
+  created_at timestamp with time zone
+);
+
+INSERT INTO logs VALUES ('2015-02-14 10:44:10+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:09+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:02+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:04+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:01+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:05+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:07+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:06+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:03+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:08+09:00');
+
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (created_at pgroonga.timestamptz_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT created_at
+  FROM logs
+ WHERE created_at BETWEEN '2015-02-14 10:44:03+09:00' AND '2015-02-14 10:44:09+09:00'
+ ORDER BY created_at ASC;
+
+DROP TABLE logs;

  Added: sql/compatibility/schema/compare/timestamp-with-time-zone/single/between/indexscan.sql (+28 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/compare/timestamp-with-time-zone/single/between/indexscan.sql    2017-08-10 14:49:35 +0900 (83afb26)
@@ -0,0 +1,28 @@
+CREATE TABLE logs (
+  created_at timestamp with time zone
+);
+
+INSERT INTO logs VALUES ('2015-02-14 10:44:10+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:09+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:02+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:04+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:01+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:05+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:07+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:06+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:03+09:00');
+INSERT INTO logs VALUES ('2015-02-14 10:44:08+09:00');
+
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (created_at pgroonga.timestamptz_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT created_at
+  FROM logs
+ WHERE created_at BETWEEN '2015-02-14 10:44:03+09:00' AND '2015-02-14 10:44:09+09:00'
+ ORDER BY created_at ASC;
+
+DROP TABLE logs;

  Added: sql/compatibility/schema/compare/timestamp/single/between/bitmapscan.sql (+28 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/compare/timestamp/single/between/bitmapscan.sql    2017-08-10 14:49:35 +0900 (f5b1ed6)
@@ -0,0 +1,28 @@
+CREATE TABLE logs (
+  created_at timestamp
+);
+
+INSERT INTO logs VALUES ('2015-02-14 10:44:10');
+INSERT INTO logs VALUES ('2015-02-14 10:44:09');
+INSERT INTO logs VALUES ('2015-02-14 10:44:02');
+INSERT INTO logs VALUES ('2015-02-14 10:44:04');
+INSERT INTO logs VALUES ('2015-02-14 10:44:01');
+INSERT INTO logs VALUES ('2015-02-14 10:44:05');
+INSERT INTO logs VALUES ('2015-02-14 10:44:07');
+INSERT INTO logs VALUES ('2015-02-14 10:44:06');
+INSERT INTO logs VALUES ('2015-02-14 10:44:03');
+INSERT INTO logs VALUES ('2015-02-14 10:44:08');
+
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (created_at pgroonga.timestamp_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT created_at
+  FROM logs
+ WHERE created_at BETWEEN '2015-02-14 10:44:03' AND '2015-02-14 10:44:09'
+ ORDER BY created_at ASC;
+
+DROP TABLE logs;

  Added: sql/compatibility/schema/compare/timestamp/single/between/indexscan.sql (+28 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/compare/timestamp/single/between/indexscan.sql    2017-08-10 14:49:35 +0900 (1c2eaeb)
@@ -0,0 +1,28 @@
+CREATE TABLE logs (
+  created_at timestamp
+);
+
+INSERT INTO logs VALUES ('2015-02-14 10:44:10');
+INSERT INTO logs VALUES ('2015-02-14 10:44:09');
+INSERT INTO logs VALUES ('2015-02-14 10:44:02');
+INSERT INTO logs VALUES ('2015-02-14 10:44:04');
+INSERT INTO logs VALUES ('2015-02-14 10:44:01');
+INSERT INTO logs VALUES ('2015-02-14 10:44:05');
+INSERT INTO logs VALUES ('2015-02-14 10:44:07');
+INSERT INTO logs VALUES ('2015-02-14 10:44:06');
+INSERT INTO logs VALUES ('2015-02-14 10:44:03');
+INSERT INTO logs VALUES ('2015-02-14 10:44:08');
+
+CREATE INDEX pgroonga_index ON logs
+  USING pgroonga (created_at pgroonga.timestamp_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT created_at
+  FROM logs
+ WHERE created_at BETWEEN '2015-02-14 10:44:03' AND '2015-02-14 10:44:09'
+ ORDER BY created_at ASC;
+
+DROP TABLE logs;

  Added: sql/compatibility/schema/compare/varchar/single/equal/bitmapscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/compare/varchar/single/equal/bitmapscan.sql    2017-08-10 14:49:35 +0900 (373a8c5)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  title varchar(1023)
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (title pgroonga.varchar_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, title
+  FROM memos
+ WHERE title = 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/compare/varchar/single/equal/indexscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/compare/varchar/single/equal/indexscan.sql    2017-08-10 14:49:35 +0900 (7505ebc)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  title varchar(1023)
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL');
+INSERT INTO memos VALUES (2, 'Groonga');
+INSERT INTO memos VALUES (3, 'PGroonga');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (title pgroonga.varchar_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, title
+  FROM memos
+ WHERE title = 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v1/match-v2/bitmapscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v1/match-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (ce26502)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v1/match-v2/indexscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v1/match-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (bda19bc)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v1/match-v2/seqscan.sql (+29 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v1/match-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (eacc789)
@@ -0,0 +1,29 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2-question/bitmapscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2-question/bitmapscan.sql    2017-08-10 14:49:35 +0900 (3a1a294)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2-question/indexscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2-question/indexscan.sql    2017-08-10 14:49:35 +0900 (6574103)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2-question/seqscan.sql (+29 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2-question/seqscan.sql    2017-08-10 14:49:35 +0900 (e399c31)
@@ -0,0 +1,29 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2/bitmapscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (db434fe)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2/indexscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (d994e63)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2/seqscan.sql (+29 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v1/query-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (f1dc349)
@@ -0,0 +1,29 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v2/match-v1/bitmapscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v2/match-v1/bitmapscan.sql    2017-08-10 14:49:35 +0900 (54e6fab)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents %% 'Groonga';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents %% 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v2/match-v1/indexscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v2/match-v1/indexscan.sql    2017-08-10 14:49:35 +0900 (d7bd880)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents %% 'Groonga';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents %% 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v2/match-v1/seqscan.sql (+29 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v2/match-v1/seqscan.sql    2017-08-10 14:49:35 +0900 (fcb8fcb)
@@ -0,0 +1,29 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents %% 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2/bitmapscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (753b299)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2/indexscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (bcffcd2)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2/seqscan.sql (+29 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-in-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (5c8eac9)
@@ -0,0 +1,29 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &?| Array['rdbms', 'groonga engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v1/bitmapscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v1/bitmapscan.sql    2017-08-10 14:49:35 +0900 (37fa192)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents @@ 'rdbms OR engine';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents @@ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v1/indexscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v1/indexscan.sql    2017-08-10 14:49:35 +0900 (6c7b971)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents @@ 'rdbms OR engine';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents @@ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v1/seqscan.sql (+29 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v1/seqscan.sql    2017-08-10 14:49:35 +0900 (fb2d08e)
@@ -0,0 +1,29 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents @@ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v2/bitmapscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (d7a7907)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v2/indexscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (e0fa59d)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v2/seqscan.sql (+29 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v2/query-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (57c1d08)
@@ -0,0 +1,29 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &? 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v2/similar-v2/bitmapscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v2/similar-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (0dff562)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &~? 'Mroonga: A MySQL plugin that uses Groonga';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &~? 'Mroonga: A MySQL plugin that uses Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v2/similar-v2/indexscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v2/similar-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (d28931f)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &~? 'Mroonga: A MySQL plugin that uses Groonga';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &~? 'Mroonga: A MySQL plugin that uses Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/compatibility/v2/similar-v2/seqscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/compatibility/v2/similar-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (3a1012e)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &~? 'Mroonga: A MySQL plugin that uses Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/match-in-v2/bitmapscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/match-in-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (db83a4d)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@| Array['rdbms', 'engine'];
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@| Array['rdbms', 'engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/match-in-v2/indexscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/match-in-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (28a5f69)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@| Array['rdbms', 'engine'];
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@| Array['rdbms', 'engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/match-in-v2/seqscan.sql (+29 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/match-in-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (0276998)
@@ -0,0 +1,29 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@| Array['rdbms', 'engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/match-v2/bitmapscan.sql (+37 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/match-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (2fa0f00)
@@ -0,0 +1,37 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+INSERT INTO memos
+    VALUES ('empty',
+            ARRAY[]::text[]);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/match-v2/indexscan.sql (+37 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/match-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (383c168)
@@ -0,0 +1,37 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+INSERT INTO memos
+    VALUES ('empty',
+            ARRAY[]::text[]);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/match-v2/seqscan.sql (+32 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/match-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (366c3f9)
@@ -0,0 +1,32 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+INSERT INTO memos
+    VALUES ('empty',
+            ARRAY[]::text[]);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@ 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/match/bitmapscan.sql (+29 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/match/bitmapscan.sql    2017-08-10 14:49:35 +0900 (a93610f)
@@ -0,0 +1,29 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents %% 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/match/indexscan.sql (+29 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/match/indexscan.sql    2017-08-10 14:49:35 +0900 (79d03ba)
@@ -0,0 +1,29 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents %% 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/match/seqscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/match/seqscan.sql    2017-08-10 14:49:35 +0900 (a98a9de)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents %% 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/query-in-v2/bitmapscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/query-in-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (0233b01)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~| Array['rdbms', 'groonga engine'];
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~| Array['rdbms', 'groonga engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/query-in-v2/indexscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/query-in-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (36fc08e)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~| Array['rdbms', 'groonga engine'];
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~| Array['rdbms', 'groonga engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/query-in-v2/seqscan.sql (+29 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/query-in-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (e0f9f5f)
@@ -0,0 +1,29 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~| Array['rdbms', 'groonga engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/query-v2/bitmapscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/query-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (29e9d2d)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/query-v2/indexscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/query-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (7b5a567)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/query-v2/seqscan.sql (+29 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/query-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (fa19c8e)
@@ -0,0 +1,29 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@~ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/query/bitmapscan.sql (+29 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/query/bitmapscan.sql    2017-08-10 14:49:35 +0900 (3dea5d4)
@@ -0,0 +1,29 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents @@ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/query/indexscan.sql (+29 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/query/indexscan.sql    2017-08-10 14:49:35 +0900 (6829b7e)
@@ -0,0 +1,29 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents @@ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/query/seqscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/query/seqscan.sql    2017-08-10 14:49:35 +0900 (3d0117c)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents @@ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/script-v2/bitmapscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/script-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (da70efe)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &` 'contents @ "rdbms" || contents @ "engine"';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &` 'contents @ "rdbms" || contents @ "engine"';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/script-v2/indexscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/script-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (d3ac074)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &` 'contents @ "rdbms" || contents @ "engine"';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &` 'contents @ "rdbms" || contents @ "engine"';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/script-v2/seqscan.sql (+29 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/script-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (340fa12)
@@ -0,0 +1,29 @@
+CREATE TABLE memos (
+  title text,
+  text text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (text pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT title, text
+  FROM memos
+ WHERE text &` 'text @ "rdbms" || text @ "engine"';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/similar-v2/bitmapscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/similar-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (9818e44)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@* 'Mroonga: A MySQL plugin that uses Groonga';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@* 'Mroonga: A MySQL plugin that uses Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/similar-v2/indexscan.sql (+34 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/similar-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (4a60f0e)
@@ -0,0 +1,34 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+CREATE INDEX pgroonga_memos_index ON memos
+  USING pgroonga (contents pgroonga.text_array_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT title, contents
+  FROM memos
+ WHERE contents &@* 'Mroonga: A MySQL plugin that uses Groonga';
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@* 'Mroonga: A MySQL plugin that uses Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text-array/similar-v2/seqscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text-array/similar-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (63e5bc4)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  title text,
+  contents text[]
+);
+
+INSERT INTO memos
+     VALUES ('PostgreSQL',
+             ARRAY['PostgreSQL is an OSS RDBMS',
+                   'PostgreSQL has partial full-text search support']);
+INSERT INTO memos
+     VALUES ('Groonga', ARRAY['Groonga is an OSS full-text search engine',
+                              'Groonga has full full-text search support']);
+INSERT INTO memos
+    VALUES ('PGroonga',
+            ARRAY['PGroonga is an OSS PostgreSQL extension',
+                  'PGroonga adds full full-text search support based on Groonga to PostgreSQL']);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT title, contents
+  FROM memos
+ WHERE contents &@* 'Mroonga: A MySQL plugin that uses Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/multiple/match/bitmapscan.sql (+30 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/multiple/match/bitmapscan.sql    2017-08-10 14:49:35 +0900 (ada8651)
@@ -0,0 +1,30 @@
+CREATE TABLE memos (
+  id integer,
+  title text,
+  content text
+);
+
+INSERT INTO memos
+     VALUES (1, 'PostgreSQL', 'is a RDBMS.');
+INSERT INTO memos
+     VALUES (2, 'Groonga', 'is fast full text search engine.');
+INSERT INTO memos
+     VALUES (3, 'PGroonga', 'is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (title pgroonga.text_full_text_search_ops_v2,
+                  content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, title, content
+  FROM memos
+ WHERE title %% 'Groonga';
+
+SELECT id, title, content
+  FROM memos
+ WHERE content %% 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/multiple/match/indexscan.sql (+30 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/multiple/match/indexscan.sql    2017-08-10 14:49:35 +0900 (79cf284)
@@ -0,0 +1,30 @@
+CREATE TABLE memos (
+  id integer,
+  title text,
+  content text
+);
+
+INSERT INTO memos
+     VALUES (1, 'PostgreSQL', 'is a RDBMS.');
+INSERT INTO memos
+     VALUES (2, 'Groonga', 'is fast full text search engine.');
+INSERT INTO memos
+     VALUES (3, 'PGroonga', 'is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (title pgroonga.text_full_text_search_ops_v2,
+                  content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, title, content
+  FROM memos
+ WHERE title %% 'Groonga';
+
+SELECT id, title, content
+  FROM memos
+ WHERE content %% 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/multiple/update.sql (+39 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/multiple/update.sql    2017-08-10 14:49:35 +0900 (34aa760)
@@ -0,0 +1,39 @@
+CREATE TABLE memos (
+  id integer,
+  title text,
+  content text
+);
+
+INSERT INTO memos
+     VALUES (1, 'PostgreSQL', 'is a RDBMS.');
+INSERT INTO memos
+     VALUES (2, 'Groonga', 'is fast full text search engine.');
+INSERT INTO memos
+     VALUES (3, 'PGroonga', 'is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (title pgroonga.text_full_text_search_ops_v2,
+                  content pgroonga.text_full_text_search_ops_v2);
+
+UPDATE memos
+   SET title = 'Mroonga',
+       content = 'is a MySQL plugin that uses Groonga.'
+ WHERE id = 3;
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, title, content
+  FROM memos
+ WHERE content %% 'Groonga';
+
+SELECT id, title, content
+  FROM memos
+ WHERE title %% 'Mroonga';
+
+SELECT id, title, content
+  FROM memos
+ WHERE content %% 'MySQL';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/and/bitmapscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/and/bitmapscan.sql    2017-08-10 14:49:35 +0900 (e6664c0)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content %% 'PGroonga' AND content %% 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/and/indexscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/and/indexscan.sql    2017-08-10 14:49:35 +0900 (09f3e23)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content %% 'PGroonga' AND content %% 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v1/match-v2/bitmapscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v1/match-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (8a85eaf)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v1/match-v2/indexscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v1/match-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (b4c4f4e)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v1/match-v2/seqscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v1/match-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (cd3b5a0)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2-question/bitmapscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2-question/bitmapscan.sql    2017-08-10 14:49:35 +0900 (ac40485)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2-question/indexscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2-question/indexscan.sql    2017-08-10 14:49:35 +0900 (20b06c6)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2-question/seqscan.sql (+23 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2-question/seqscan.sql    2017-08-10 14:49:35 +0900 (e0ade33)
@@ -0,0 +1,23 @@
+SET search_path = "$user",public,pgroonga,pg_catalog;
+
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2/bitmapscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (6679e4a)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2/indexscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (5209301)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2/seqscan.sql (+23 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v1/query-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (ee171e5)
@@ -0,0 +1,23 @@
+SET search_path = "$user",public,pgroonga,pg_catalog;
+
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/match-in-v2/bitmapscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/match-in-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (8a634f8)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@> Array['rdbms', 'engine'];
+
+SELECT id, content
+  FROM memos
+ WHERE content &@> Array['rdbms', 'engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/match-in-v2/indexscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/match-in-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (30194e6)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@> Array['rdbms', 'engine'];
+
+SELECT id, content
+  FROM memos
+ WHERE content &@> Array['rdbms', 'engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/match-in-v2/seqscan.sql (+18 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/match-in-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (1897290)
@@ -0,0 +1,18 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content &@> Array['rdbms', 'engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/match-v1/bitmapscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/match-v1/bitmapscan.sql    2017-08-10 14:49:35 +0900 (5608fd6)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/match-v1/indexscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/match-v1/indexscan.sql    2017-08-10 14:49:35 +0900 (48b93ee)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/match-v1/seqscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/match-v1/seqscan.sql    2017-08-10 14:49:35 +0900 (30b1fc7)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2-greater/bitmapscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2-greater/bitmapscan.sql    2017-08-10 14:49:35 +0900 (d8a732a)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &?> Array['rdbms', 'groonga engine'];
+
+SELECT id, content
+  FROM memos
+ WHERE content &?> Array['rdbms', 'groonga engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2-greater/indexscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2-greater/indexscan.sql    2017-08-10 14:49:35 +0900 (9e867c2)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &?> Array['rdbms', 'groonga engine'];
+
+SELECT id, content
+  FROM memos
+ WHERE content &?> Array['rdbms', 'groonga engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2-greater/seqscan.sql (+18 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2-greater/seqscan.sql    2017-08-10 14:49:35 +0900 (14d34bb)
@@ -0,0 +1,18 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content &?> Array['rdbms', 'groonga engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2/bitmapscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (79c9345)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &?| Array['rdbms', 'groonga engine'];
+
+SELECT id, content
+  FROM memos
+ WHERE content &?| Array['rdbms', 'groonga engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2/indexscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (e73b601)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &?| Array['rdbms', 'groonga engine'];
+
+SELECT id, content
+  FROM memos
+ WHERE content &?| Array['rdbms', 'groonga engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2/seqscan.sql (+18 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-in-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (86f270e)
@@ -0,0 +1,18 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content &?| Array['rdbms', 'groonga engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v1/bitmapscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v1/bitmapscan.sql    2017-08-10 14:49:35 +0900 (449710b)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v1/indexscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v1/indexscan.sql    2017-08-10 14:49:35 +0900 (44d267f)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v1/seqscan.sql (+23 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v1/seqscan.sql    2017-08-10 14:49:35 +0900 (20bdfec)
@@ -0,0 +1,23 @@
+SET search_path = "$user",public,pgroonga,pg_catalog;
+
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v2/bitmapscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (d321b33)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v2/indexscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (aa2c7af)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v2/seqscan.sql (+23 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/query-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (a2d3f6c)
@@ -0,0 +1,23 @@
+SET search_path = "$user",public,pgroonga,pg_catalog;
+
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content &? 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/similar-v2/bitmapscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/similar-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (0bf8463)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content &~? 'Mroonga is a MySQL plugin that uses Groonga.';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/similar-v2/indexscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/similar-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (9c8c9ff)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content &~? 'Mroonga is a MySQL plugin that uses Groonga.';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/compatibility/v2/similar-v2/seqscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/compatibility/v2/similar-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (f44261d)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content &~? 'Mroonga is a MySQL plugin that uses Groonga.';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike-v2/begin-of-text/bitmapscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike-v2/begin-of-text/bitmapscan.sql    2017-08-10 14:49:35 +0900 (bd258c2)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'POSTGRESQL%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike-v2/begin-of-text/indexscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike-v2/begin-of-text/indexscan.sql    2017-08-10 14:49:35 +0900 (977551d)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'POSTGRESQL%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike-v2/begin-of-text/seqscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike-v2/begin-of-text/seqscan.sql    2017-08-10 14:49:35 +0900 (3eaae7e)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'POSTGRESQL%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike-v2/end-of-text/bitmapscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike-v2/end-of-text/bitmapscan.sql    2017-08-10 14:49:35 +0900 (bc85a2d)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike-v2/end-of-text/indexscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike-v2/end-of-text/indexscan.sql    2017-08-10 14:49:35 +0900 (f638c58)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike-v2/end-of-text/seqscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike-v2/end-of-text/seqscan.sql    2017-08-10 14:49:35 +0900 (2db093c)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike-v2/partial/bitmapscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike-v2/partial/bitmapscan.sql    2017-08-10 14:49:35 +0900 (9609063)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike-v2/partial/indexscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike-v2/partial/indexscan.sql    2017-08-10 14:49:35 +0900 (e38daf6)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike-v2/partial/seqscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike-v2/partial/seqscan.sql    2017-08-10 14:49:35 +0900 (f45171e)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike-v2/underscore/bitmapscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike-v2/underscore/bitmapscan.sql    2017-08-10 14:49:35 +0900 (51dbe7e)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '_';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike-v2/underscore/indexscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike-v2/underscore/indexscan.sql    2017-08-10 14:49:35 +0900 (70a0187)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '_';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike-v2/underscore/seqscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike-v2/underscore/seqscan.sql    2017-08-10 14:49:35 +0900 (00d2048)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '_';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike/begin-of-text/bitmapscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike/begin-of-text/bitmapscan.sql    2017-08-10 14:49:35 +0900 (332eace)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'POSTGRESQL%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike/begin-of-text/indexscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike/begin-of-text/indexscan.sql    2017-08-10 14:49:35 +0900 (660fc60)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE 'POSTGRESQL%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike/end-of-text/bitmapscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike/end-of-text/bitmapscan.sql    2017-08-10 14:49:35 +0900 (37a70ce)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike/end-of-text/indexscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike/end-of-text/indexscan.sql    2017-08-10 14:49:35 +0900 (ab3b042)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike/partial/bitmapscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike/partial/bitmapscan.sql    2017-08-10 14:49:35 +0900 (2b7ddbe)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike/partial/indexscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike/partial/indexscan.sql    2017-08-10 14:49:35 +0900 (b035766)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '%GROONGA%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike/underscore/bitmapscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike/underscore/bitmapscan.sql    2017-08-10 14:49:35 +0900 (882ccb7)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '_';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/ilike/underscore/indexscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/ilike/underscore/indexscan.sql    2017-08-10 14:49:35 +0900 (4a4d9d8)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content ILIKE '_';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like-v2/begin-of-text/bitmapscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like-v2/begin-of-text/bitmapscan.sql    2017-08-10 14:49:35 +0900 (a754f12)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'PostgreSQL%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like-v2/begin-of-text/indexscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like-v2/begin-of-text/indexscan.sql    2017-08-10 14:49:35 +0900 (a24db43)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'PostgreSQL%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like-v2/begin-of-text/seqscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like-v2/begin-of-text/seqscan.sql    2017-08-10 14:49:35 +0900 (c96eee2)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'PostgreSQL%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like-v2/end-of-text/bitmapscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like-v2/end-of-text/bitmapscan.sql    2017-08-10 14:49:35 +0900 (1474fea)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like-v2/end-of-text/indexscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like-v2/end-of-text/indexscan.sql    2017-08-10 14:49:35 +0900 (3a576e6)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like-v2/end-of-text/seqscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like-v2/end-of-text/seqscan.sql    2017-08-10 14:49:35 +0900 (cf2ddb2)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like-v2/partial/bitmapscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like-v2/partial/bitmapscan.sql    2017-08-10 14:49:35 +0900 (ca05a15)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%groonga%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like-v2/partial/indexscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like-v2/partial/indexscan.sql    2017-08-10 14:49:35 +0900 (0e8c07a)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%groonga%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like-v2/partial/seqscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like-v2/partial/seqscan.sql    2017-08-10 14:49:35 +0900 (ca2506e)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%groonga%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like-v2/underscore/bitmapscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like-v2/underscore/bitmapscan.sql    2017-08-10 14:49:35 +0900 (cd97aa1)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '_';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like-v2/underscore/indexscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like-v2/underscore/indexscan.sql    2017-08-10 14:49:35 +0900 (8cac572)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '_';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like-v2/underscore/seqscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like-v2/underscore/seqscan.sql    2017-08-10 14:49:35 +0900 (660020d)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '_';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like/begin-of-text/bitmapscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like/begin-of-text/bitmapscan.sql    2017-08-10 14:49:35 +0900 (1df9997)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'PostgreSQL%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like/begin-of-text/indexscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like/begin-of-text/indexscan.sql    2017-08-10 14:49:35 +0900 (5a34f48)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE 'PostgreSQL%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like/end-of-text/bitmapscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like/end-of-text/bitmapscan.sql    2017-08-10 14:49:35 +0900 (36350c9)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like/end-of-text/indexscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like/end-of-text/indexscan.sql    2017-08-10 14:49:35 +0900 (ff19485)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga');
+INSERT INTO memos VALUES (4, 'groonga command is provided');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like/partial/bitmapscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like/partial/bitmapscan.sql    2017-08-10 14:49:35 +0900 (bd17c15)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%groonga%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like/partial/indexscan.sql (+22 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like/partial/indexscan.sql    2017-08-10 14:49:35 +0900 (94b289d)
@@ -0,0 +1,22 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+INSERT INTO memos VALUES (4, 'groonga command is provided.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '%groonga%';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like/underscore/bitmapscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like/underscore/bitmapscan.sql    2017-08-10 14:49:35 +0900 (1718031)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '_';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/like/underscore/indexscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/like/underscore/indexscan.sql    2017-08-10 14:49:35 +0900 (eb48af3)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, '');
+INSERT INTO memos VALUES (2, 'a');
+INSERT INTO memos VALUES (3, 'ab');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content LIKE '_';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/match-in-v2/bitmapscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/match-in-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (7f7c102)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@| Array['rdbms', 'engine'];
+
+SELECT id, content
+  FROM memos
+ WHERE content &@| Array['rdbms', 'engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/match-in-v2/indexscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/match-in-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (a412f5d)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@| Array['rdbms', 'engine'];
+
+SELECT id, content
+  FROM memos
+ WHERE content &@| Array['rdbms', 'engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/match-in-v2/seqscan.sql (+18 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/match-in-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (c486ce9)
@@ -0,0 +1,18 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content &@| Array['rdbms', 'engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/match-v2/bitmapscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/match-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (09b5d8d)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/match-v2/indexscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/match-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (d93bf5e)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/match-v2/seqscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/match-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (ad6c31a)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content &@ 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/match/bitmapscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/match/bitmapscan.sql    2017-08-10 14:49:35 +0900 (711b96a)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/match/indexscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/match/indexscan.sql    2017-08-10 14:49:35 +0900 (483c59d)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content %% 'Groonga';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/query-in-v2/bitmapscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/query-in-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (4d47ae0)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@~| Array['rdbms', 'groonga engine'];
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~| Array['rdbms', 'groonga engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/query-in-v2/indexscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/query-in-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (a7b0f3d)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX pgrn_index ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@~| Array['rdbms', 'groonga engine'];
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~| Array['rdbms', 'groonga engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/query-in-v2/seqscan.sql (+18 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/query-in-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (7f34bc2)
@@ -0,0 +1,18 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~| Array['rdbms', 'groonga engine'];
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/query-v2/bitmapscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/query-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (57c4050)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/query-v2/indexscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/query-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (46f6bf3)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/query-v2/seqscan.sql (+23 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/query-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (c8afd6c)
@@ -0,0 +1,23 @@
+SET search_path = "$user",public,pgroonga,pg_catalog;
+
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content &@~ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/query/bitmapscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/query/bitmapscan.sql    2017-08-10 14:49:35 +0900 (a21c615)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/query/indexscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/query/indexscan.sql    2017-08-10 14:49:35 +0900 (273115d)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content @@ 'rdbms OR engine';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/script-v2/bitmapscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/script-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (505d66b)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+SELECT id, content
+  FROM memos
+ WHERE content &` 'content @ "rdbms" || content @ "engine"';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/script-v2/indexscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/script-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (cca62ae)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content &` 'content @ "rdbms" || content @ "engine"';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/script-v2/seqscan.sql (+18 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/script-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (78bc983)
@@ -0,0 +1,18 @@
+CREATE TABLE memos (
+  id integer,
+  text text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, text
+  FROM memos
+ WHERE text &` 'text @ "rdbms" || text @ "engine"';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/similar-v2/bitmapscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/similar-v2/bitmapscan.sql    2017-08-10 14:49:35 +0900 (f8668a2)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = off;
+SET enable_bitmapscan = on;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@* 'Mroonga is a MySQL plugin that uses Groonga.';
+
+SELECT id, content
+  FROM memos
+ WHERE content &@* 'Mroonga is a MySQL plugin that uses Groonga.';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/similar-v2/indexscan.sql (+26 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/similar-v2/indexscan.sql    2017-08-10 14:49:35 +0900 (be78553)
@@ -0,0 +1,26 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+EXPLAIN (COSTS OFF)
+SELECT id, content
+  FROM memos
+ WHERE content &@* 'Mroonga is a MySQL plugin that uses Groonga.';
+
+SELECT id, content
+  FROM memos
+ WHERE content &@* 'Mroonga is a MySQL plugin that uses Groonga.';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/similar-v2/seqscan.sql (+21 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/similar-v2/seqscan.sql    2017-08-10 14:49:35 +0900 (2dba6d4)
@@ -0,0 +1,21 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+ USING pgroonga (content pgroonga.text_full_text_search_ops_v2);
+
+SET enable_seqscan = on;
+SET enable_indexscan = off;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content &@* 'Mroonga is a MySQL plugin that uses Groonga.';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/truncate.sql (+24 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/truncate.sql    2017-08-10 14:49:35 +0900 (05b5c4c)
@@ -0,0 +1,24 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+TRUNCATE memos;
+
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content %% 'PostgreSQL';
+
+DROP TABLE memos;

  Added: sql/compatibility/schema/full-text-search/text/single/update.sql (+28 -0) 100644
===================================================================
--- /dev/null
+++ sql/compatibility/schema/full-text-search/text/single/update.sql    2017-08-10 14:49:35 +0900 (849e4dd)
@@ -0,0 +1,28 @@
+CREATE TABLE memos (
+  id integer,
+  content text
+);
+
+INSERT INTO memos VALUES (1, 'PostgreSQL is a RDBMS.');
+INSERT INTO memos VALUES (2, 'Groonga is fast full text search engine.');
+INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga.');
+
+CREATE INDEX grnindex ON memos
+  USING pgroonga (content pgroonga.text_full_text_search_ops);
+
+UPDATE memos SET content = 'Mroonga is a MySQL plugin that uses Groonga.'
+ WHERE id = 3;
+
+SET enable_seqscan = off;
+SET enable_indexscan = on;
+SET enable_bitmapscan = off;
+
+SELECT id, content
+  FROM memos
+ WHERE content %% 'PostgreSQL';
+
+SELECT id, content
+  FROM memos
+ WHERE content %% 'MySQL';
+
+DROP TABLE memos;

... truncated to 1.0MB




More information about the Groonga-commit mailing list
Back to archive index