5 use RT::Test tests => undef;
7 my $handle = $RT::Handle;
8 my $db_type = RT->Config->Get('DatabaseType');
11 RT::Test::__reconnect_rt('as dba');
12 ok( $handle->dbh->do("ALTER SESSION SET CURRENT_SCHEMA=". RT->Config->Get('DatabaseUser') ) )
13 if $db_type eq 'Oracle';
15 note "test handle->Indexes method";
17 my %indexes = $handle->Indexes;
18 ok grep $_ eq 'tickets1', @{ $indexes{'tickets'} };
19 ok grep $_ eq 'tickets2', @{ $indexes{'tickets'} };
20 ok grep $_ eq 'users1', @{ $indexes{'users'} };
21 ok grep $_ eq 'users4', @{ $indexes{'users'} };
24 note "test handle->DropIndex method";
26 my ($status, $msg) = $handle->DropIndex( Table => 'Tickets', Name => 'Tickets1' );
29 my %indexes = $handle->Indexes;
30 ok !grep $_ eq 'tickets1', @{ $indexes{'tickets'} };
32 ($status, $msg) = $handle->DropIndex( Table => 'Tickets', Name => 'Tickets1' );
36 note "test handle->DropIndexIfExists method";
38 my ($status, $msg) = $handle->DropIndexIfExists( Table => 'Tickets', Name => 'Tickets2' );
41 my %indexes = $handle->Indexes;
42 ok !grep $_ eq 'tickets2', @{ $indexes{'tickets'} };
44 ($status, $msg) = $handle->DropIndexIfExists( Table => 'Tickets', Name => 'Tickets2' );
48 note "test handle->IndexInfo method";
50 if ($db_type ne 'Oracle' && $db_type ne 'mysql') {
51 my %res = $handle->IndexInfo( Table => 'Attachments', Name => 'Attachments1' );
55 Table => 'attachments', Name => 'attachments1',
56 Unique => 0, Functional => 0,
61 my %res = $handle->IndexInfo( Table => 'Attachments', Name => 'Attachments2' );
65 Table => 'attachments', Name => 'attachments2',
66 Unique => 0, Functional => 0,
67 Columns => ['transactionid']
72 my %res = $handle->IndexInfo( Table => 'GroupMembers', Name => 'GroupMembers1' );
76 Table => 'groupmembers', Name => 'groupmembers1',
77 Unique => 1, Functional => 0,
78 Columns => ['groupid', 'memberid']
82 if ( $db_type eq 'Pg' || $db_type eq 'Oracle' ) {
83 %res = $handle->IndexInfo( Table => 'Queues', Name => 'Queues1' );
87 Table => 'queues', Name => 'queues1',
88 Unique => 1, Functional => 1,
90 CaseInsensitive => { name => 1 },
96 note "test ->CreateIndex and ->IndexesThatBeginWith methods";
99 my ($name, $msg) = $handle->CreateIndex(
100 Table => 'Users', Name => 'test_users1',
101 Columns => ['Organization'],
106 my ($name, $msg) = $handle->CreateIndex(
107 Table => 'Users', Name => 'test_users2',
108 Columns => ['Organization', 'Name'],
113 my @list = $handle->IndexesThatBeginWith( Table => 'Users', Columns => ['Organization'] );
114 is_deeply([sort map $_->{Name}, @list], [qw(test_users1 test_users2)]);
116 my ($status, $msg) = $handle->DropIndex( Table => 'Users', Name => 'test_users1' );
118 ($status, $msg) = $handle->DropIndex( Table => 'Users', Name => 'test_users2' );
122 note "Test some cases sensitivity aspects";
125 my %res = $handle->IndexInfo( Table => 'groupmembers', Name => 'groupmembers1' );
129 Table => 'groupmembers', Name => 'groupmembers1',
130 Unique => 1, Functional => 0,
131 Columns => ['groupid', 'memberid']
137 my ($status, $msg) = $handle->DropIndex( Table => 'groupmembers', Name => 'groupmembers1' );
140 my %indexes = $handle->Indexes;
141 ok !grep $_ eq 'groupmembers1', @{ $indexes{'groupmembers'} };
145 my ($name, $msg) = $handle->CreateIndex(
146 Table => 'groupmembers', Name => 'groupmembers1',
148 Columns => ['groupid', 'memberid']
152 my %indexes = $handle->Indexes;
153 ok grep $_ eq 'groupmembers1', @{ $indexes{'groupmembers'} };
157 my ($status, $msg) = $handle->DropIndexIfExists( Table => 'groupmembers', Name => 'groupmembers1' );
160 my %indexes = $handle->Indexes;
161 ok !grep $_ eq 'groupmembers1', @{ $indexes{'groupmembers'} };