[Rt-commit] rt branch 5.0/improve-text-indexes created. rt-5.0.2-113-g3d8caaa9ad

BPS Git Server git at git.bestpractical.com
Wed Apr 13 17:03:02 UTC 2022


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "rt".

The branch, 5.0/improve-text-indexes has been created
        at  3d8caaa9ad92dc493c64f8c5187f8b512fa8b96c (commit)

- Log -----------------------------------------------------------------
commit 3d8caaa9ad92dc493c64f8c5187f8b512fa8b96c
Author: Brian Conry <bconry at bestpractical.com>
Date:   Wed Mar 30 13:10:45 2022 -0500

    Tickets/Assets Status always use case-insensitive
    
    The code previously  sometimes searched these columns case-sensitive and
    sometimes case-insensitive.  Both Oracle and Pg have case-sensitive
    semantics, so sometimes the indexes were usable and sometimes they
    weren't.
    
    This change standardizes all searches using these columns to be
    explicitly case-insensitive.

diff --git a/etc/schema.Oracle b/etc/schema.Oracle
index 57fbae685d..b5d314ef92 100644
--- a/etc/schema.Oracle
+++ b/etc/schema.Oracle
@@ -271,7 +271,7 @@ CREATE TABLE Tickets (
         Creator                 NUMBER(11,0) DEFAULT 0 NOT NULL,
         Created                 DATE
 );
-CREATE INDEX Tickets1 ON Tickets (Queue, Status);
+CREATE INDEX Tickets1 ON Tickets (Queue, LOWER(Status));
 CREATE INDEX Tickets2 ON Tickets (Owner);
 CREATE INDEX Tickets6 ON Tickets (EffectiveId, Type);
 
@@ -491,7 +491,7 @@ CREATE TABLE Assets (
 );
 
 CREATE INDEX AssetsName ON Assets (LOWER(Name));
-CREATE INDEX AssetsStatus ON Assets (Status);
+CREATE INDEX AssetsStatus ON Assets (LOWER(Status));
 CREATE INDEX AssetsCatalog ON Assets (Catalog);
 
 CREATE SEQUENCE Catalogs_seq;
diff --git a/etc/schema.Pg b/etc/schema.Pg
index 5f6c3d85fb..2d38332e70 100644
--- a/etc/schema.Pg
+++ b/etc/schema.Pg
@@ -429,7 +429,7 @@ CREATE TABLE Tickets (
 
 );
 
-CREATE INDEX Tickets1 ON Tickets (Queue, Status) ;
+CREATE INDEX Tickets1 ON Tickets (Queue, LOWER(Status));
 CREATE INDEX Tickets2 ON Tickets (Owner) ;
 CREATE INDEX Tickets3 ON Tickets (EffectiveId) ;
 
@@ -723,7 +723,7 @@ CREATE TABLE Assets (
 );
 
 CREATE INDEX AssetsName ON Assets (LOWER(Name));
-CREATE INDEX AssetsStatus ON Assets (Status);
+CREATE INDEX AssetsStatus ON Assets (LOWER(Status));
 CREATE INDEX AssetsCatalog ON Assets (Catalog);
 
 CREATE SEQUENCE catalogs_id_seq;
diff --git a/etc/upgrade/5.0.3/schema.Oracle b/etc/upgrade/5.0.3/schema.Oracle
new file mode 100644
index 0000000000..2d76c9de8b
--- /dev/null
+++ b/etc/upgrade/5.0.3/schema.Oracle
@@ -0,0 +1,4 @@
+DROP INDEX Tickets1;
+CREATE INDEX Tickets1 ON Tickets (Queue, LOWER(Status));
+DROP INDEX AssetsStatus;
+CREATE INDEX AssetsStatus ON Assets (LOWER(Status));
diff --git a/etc/upgrade/5.0.3/schema.Pg b/etc/upgrade/5.0.3/schema.Pg
new file mode 100644
index 0000000000..2d76c9de8b
--- /dev/null
+++ b/etc/upgrade/5.0.3/schema.Pg
@@ -0,0 +1,4 @@
+DROP INDEX Tickets1;
+CREATE INDEX Tickets1 ON Tickets (Queue, LOWER(Status));
+DROP INDEX AssetsStatus;
+CREATE INDEX AssetsStatus ON Assets (LOWER(Status));
diff --git a/lib/RT/Assets.pm b/lib/RT/Assets.pm
index dad7d054ca..c34c3427e6 100644
--- a/lib/RT/Assets.pm
+++ b/lib/RT/Assets.pm
@@ -317,6 +317,9 @@ sub Limit {
     $self->{_sql_looking_at}{ lc $args{FIELD} } = 1
         if $args{FIELD} and (not $args{ALIAS} or $args{ALIAS} eq "main");
 
+    $arts{CASESENSITIVE} = 0
+        if $args{FIELD} and lc $args{FIELD} eq 'status' and (not $ARGS{ALIAS} or $args{ALIAS} eq 'main');
+
     $self->SUPER::Limit(%args);
 }
 
diff --git a/lib/RT/Tickets.pm b/lib/RT/Tickets.pm
index 4ffbd6ab61..b817377276 100644
--- a/lib/RT/Tickets.pm
+++ b/lib/RT/Tickets.pm
@@ -1649,6 +1649,9 @@ sub Limit {
     $self->{_sql_looking_at}{ lc $args{FIELD} } = 1
         if $args{FIELD} and (not $args{ALIAS} or $args{ALIAS} eq "main");
 
+    $arts{CASESENSITIVE} = 0
+        if $args{FIELD} and lc $args{FIELD} eq 'status' and (not $ARGS{ALIAS} or $args{ALIAS} eq 'main');
+
     $self->SUPER::Limit(%args);
 }
 
@@ -1757,10 +1760,11 @@ sub LimitStatus {
         @_
     );
     $self->LimitField(
-        FIELD       => 'Status',
-        VALUE       => $args{'VALUE'},
-        OPERATOR    => $args{'OPERATOR'},
-        DESCRIPTION => join( ' ',
+        FIELD         => 'Status',
+        VALUE         => $args{'VALUE'},
+        OPERATOR      => $args{'OPERATOR'},
+        CASESENSITIVE => 0,
+        DESCRIPTION   => join( ' ',
             $self->loc('Status'), $args{'OPERATOR'},
             $self->loc( $args{'VALUE'} ) ),
     );

-----------------------------------------------------------------------


hooks/post-receive
-- 
rt


More information about the rt-commit mailing list