# Bug report 1665
# CONTAINS述語がOR結合の中でスコア値をもとめるテスト

Begin;
Initialize;
InitializeSession  "TESTDB";
Command "create database TESTDB";
TerminateSession;
InitializeSession  "TESTDB";
Command "create table T1(f1_index int, f2 int, g1 nvarchar(200))";
Command "create fulltext index I_T1_g1 on T1(g1)";
Command "create  index I_T1_f1 on T1(f1_index)";
Command "insert T1 values (?,?,?),(?,?,?),(?,?,?),(?,?,?),(?,?,?),(?,?,?),(?,?,?),(?,?,?),(?,?,?),(?,?,?)" [-34567890,-34567890,"自然文検索    検索語として文章を入れることができ、システムが自動的に最適な検索語を抽出します ",2147483647,2147483647,"関連語拡張     適合文書のフィードバックにより自動的に関連性の高い検索語を追加することができます ",-2147483648,-2147483648,"多言語サポート     日本語、中国語(繁体字、簡体字)、英語、フランス語、イタリア語、ドイツ語、スペイン語、オランダ語の9言語に対応することができます ",0,0,"RDBMSとしての主な特徴 TRMeisterはRDBMSとして非常に重要な以下の機能を有しています。",1,1,"オンラインバックアップ     システムの運用を中断せずにバックアップが可能です ",-1,-1,"自動リカバリー     不慮の電源断などのために正常にシステムが終了しなかった場合でも、システムの再起動時に自動的にデータベースの整合性を回復します ",6543210,6543210,"また、TRMeisterは業界標準であるSQLやJDBCを使用したアクセスが可能であり、他の高価なDBMSを使わずに高速に全文検索可能な情報検索アプリケーションを用意に構築できます。 ",-34567890,-34567890,"TRMeisterとは TRMeisterはリコー独自の全文検索エンジンであり、今日最も要求されている情報検索システムにおいて必要とされる優れた検索性能を提供します。また、RDBMSとしての機能も有しています。",2147483647,2147483647,"全文検索エンジンとしての主な特徴 TRMeisterの全文検索エンジンとしての特徴は以下の通りです。",-2147483648,-2147483648,"ランキング検索    リコー独自のランキングアルゴリズムを用い、検索結果を適合度の順に並べることができます"];
Command "create table T2(f1_index int, f2 int, g2 nvarchar(200))";
Command "create fulltext index I_T2_g2 on T2(g2)";
Command "create  index I_T2_f1 on T2(f1_index)";
Command "insert T2 values (?,?,?),(?,?,?),(?,?,?),(?,?,?),(?,?,?)" [2147483647,2147483647,"データベースをコンピュータ上で管理するためのシステム（Oracle Database、SQL Server、PostgreSQL、MySQL、SQLiteなど）をデータベースマネージメントシステム（DBMS）という。",-2147483648,-2147483648,"データベース 出典: フリー百科事典『ウィキペディア（Wikipedia）』 データベース (Database) は、特定のテーマに沿ったデータを集めて管理し、容易に検索・抽出などの再利用をできるようにしたもの。 狭義には、コンピュータによって実現されたものを言う。OSが提供するファイルシステム上に直接構築されるものや、後述するデータベースマネージメントシステム (DBMS) を用いて構築されるものを含む。",0,0,"コンピュータ上では、データの再利用を高速かつ安定に実現するため、データを格納するための構造について様々な工夫が払われており、このデータ構造とアルゴリズムは情報工学において重要な研究分野のひとつである。",1,1,"単純なファイルシステムには、ファイルシステム自体に「データ」を統一的手法で操作する機能はない。ファイルシステムでデータ管理をするためには、データの操作機能を「応用プログラム側」に持つしかない。データベースは、それを自ら持つことにより、応用プログラム側でデータの物理的格納状態を知らずとも操作でき、かつ、データの物理的格納状態に変更があった場合にも応用プログラム側の処理に影響が及ばないことを保障することがデータベースの前提条件となっている。(プログラムとデータの独立性)",-1,-1,"データベースをコンピュータ上で管理するためのシステム（Oracle Database、SQL Server、PostgreSQL、MySQL、SQLiteなど）をデータベースマネージメントシステム（DBMS）という。"];
Command "select score(g1),g1 from T1 where (g1 contains '全文検索') or (g1 contains '関連')";
Command "select score(g1),g1 from T1 where (g1 contains '全文検索') or (g1 contains '関連')";
Command "start transaction read write";
Command "select score(g1),g1 from T1 where (g1 contains '全文検索') or (g1 contains '関連')";
Command "commit";
CreatePreparedCommand "sel2" "select score(g1),g1,g2 from T1,T2 where ((T1.g1 contains '全文検索') and (T2.g2 contains 'ファイル')) or (T2.f1_index = -2147483648) order by score(g1) desc limit 10";
PreparedCommand "sel2" [];
PreparedCommand "sel2" [];
Command "start transaction read write";
PreparedCommand "sel2" [];
Command "commit";
ErasePreparedCommand "sel2";
CreatePreparedCommand "sel3" "select score(g1),g1 from T1 where ((g1 contains 'TRMeister') and (f1_index = 2147483647)) or (exists (select * from T2 where T1.f1_index = T2.f1_index)) order by score(g1) desc";
PreparedCommand "sel3" [];
PreparedCommand "sel3" [];
Command "start transaction read write";
PreparedCommand "sel3" [];
Command "commit";
ErasePreparedCommand "sel3";
Command "select score(g1),g1,g2 from T1,T2 where (T1.g1 contains '全文検索') or (T2.f1_index = -34567890) limit 10";
Command "select score(g1),g1,g2 from T1,T2 where (T1.g1 contains '全文検索') or (T2.f1_index = -34567890) limit 10";
Command "start transaction read write";
Command "select score(g1),g1,g2 from T1,T2 where (T1.g1 contains '全文検索') or (T2.f1_index = -34567890) limit 10";
Command "commit";
CreatePreparedCommand "sel5" "select score(g1),g1 from T1 where ((g1 contains '全文検索') and (g1 contains '関連')) or (g1 contains 'TRMeister') limit 10";
PreparedCommand "sel5" [];
PreparedCommand "sel5" [];
Command "start transaction read write";
PreparedCommand "sel5" [];
Command "commit";
ErasePreparedCommand "sel5";
Command "select score(g1),g1,g2 from T1,T2 where ((T1.g1 contains 'TRMeister') and (T2.f1_index = -34567890)) or (T2.f1_index = T1.f1_index) limit 10";
Command "select score(g1),g1,g2 from T1,T2 where ((T1.g1 contains 'TRMeister') and (T2.f1_index = -34567890)) or (T2.f1_index = T1.f1_index) limit 10";
Command "start transaction read write";
Command "select score(g1),g1,g2 from T1,T2 where ((T1.g1 contains 'TRMeister') and (T2.f1_index = -34567890)) or (T2.f1_index = T1.f1_index) limit 10";
Command "commit";
CreatePreparedCommand "sel7" "select score(g1),g1,g2 from T1,T2 where (T2.g2 contains 'SQL') or (T1.g1 contains '関連') order by score(g1) desc";
PreparedCommand "sel7" [];
PreparedCommand "sel7" [];
Command "start transaction read write";
PreparedCommand "sel7" [];
Command "commit";
ErasePreparedCommand "sel7";
Command "select score(g1),g1 from T1 where ((g1 contains '全文検索') and (g1 contains '関連')) or (f1_index = 6543210) order by score(g1) desc";
Command "select score(g1),g1 from T1 where ((g1 contains '全文検索') and (g1 contains '関連')) or (f1_index = 6543210) order by score(g1) desc";
Command "start transaction read write";
Command "select score(g1),g1 from T1 where ((g1 contains '全文検索') and (g1 contains '関連')) or (f1_index = 6543210) order by score(g1) desc";
Command "commit";
Command "select score(g1),g1,g2 from T1,T2 where ((T1.g1 contains 'TRMeister') and (T2.f1_index = -2147483648)) or (T1.g1 contains '全文検索') order by score(g1) desc limit 10";
Command "select score(g1),g1,g2 from T1,T2 where ((T1.g1 contains 'TRMeister') and (T2.f1_index = -2147483648)) or (T1.g1 contains '全文検索') order by score(g1) desc limit 10";
Command "start transaction read write";
Command "select score(g1),g1,g2 from T1,T2 where ((T1.g1 contains 'TRMeister') and (T2.f1_index = -2147483648)) or (T1.g1 contains '全文検索') order by score(g1) desc limit 10";
Command "commit";
CreatePreparedCommand "sel10" "select score(g1),g1 from T1 where (g1 contains '全文検索') or (exists (select * from T2 where T1.f1_index = T2.f1_index)) limit 10";
PreparedCommand "sel10" [];
PreparedCommand "sel10" [];
Command "start transaction read write";
PreparedCommand "sel10" [];
Command "commit";
ErasePreparedCommand "sel10";
Command "select score(g1),g1,g2 from T1,T2 where ((T1.g1 contains '全文検索') and (T2.g2 contains 'ファイル')) or (T1.f1_index = T2.f1_index)";
Command "select score(g1),g1,g2 from T1,T2 where ((T1.g1 contains '全文検索') and (T2.g2 contains 'ファイル')) or (T1.f1_index = T2.f1_index)";
Command "start transaction read write";
Command "select score(g1),g1,g2 from T1,T2 where ((T1.g1 contains '全文検索') and (T2.g2 contains 'ファイル')) or (T1.f1_index = T2.f1_index)";
Command "commit";
CreatePreparedCommand "sel12" "select score(g1),g1 from T1 where ((g1 contains 'TRMeister') and (f1_index = 6543210)) or (f1_index = 6543210)";
PreparedCommand "sel12" [];
PreparedCommand "sel12" [];
Command "start transaction read write";
PreparedCommand "sel12" [];
Command "commit";
ErasePreparedCommand "sel12";
Command "drop table T1";
Command "drop table T2";
TerminateSession;
InitializeSession  "TESTDB";
Command "drop database TESTDB";
TerminateSession;
Terminate;
End;
