• 0
    • 1
    • We collect Jira feedback from various sources, and we evaluate what we've collected when planning our product roadmap. To understand how this piece of feedback will be reviewed, see our Implementation of New Features Policy.

      Problem Definition

      Table columnlayoutitem is used for storing Fields schema configs and it doesn't have optimal index structure.
      Snippet from the table:

      select * from columnlayoutitem limit 3;
        id   | columnlayout | fieldidentifier | horizontalposition
      -------+--------------+-----------------+--------------------
       10300 |        10000 | issuetype       |                  0
       10301 |        10000 | issuekey        |                  1
       10302 |        10000 | summary         |                  2
      

      Indexes:

      \d columnlayoutitem
                   Table "public.columnlayoutitem"
             Column       |          Type          | Modifiers
      --------------------+------------------------+-----------
       id                 | numeric(18,0)          | not null
       columnlayout       | numeric(18,0)          |
       fieldidentifier    | character varying(255) |
       horizontalposition | numeric(18,0)          |
      Indexes:
          "pk_columnlayoutitem" PRIMARY KEY, btree (id)
          "idx_cli_fieldidentifier" btree (fieldidentifier)
      

      columnlayout is being used during data loading:

      com.atlassian.jira.issue.fields.layout.column.DefaultColumnLayoutManager#transformToColumnLayoutItems
      ...
       final List<GenericValue> columnLayoutItemGVs = ofBizDelegator.getRelated("ChildColumnLayoutItem", columnLayoutGV, ImmutableList.of("horizontalposition ASC"));
      

      Suggested Solution

      Add index for columnlayout column

      CREATE INDEX [IX_columnlayoutitem_COLUMNLAYOUT] ON [jiraDB].[dbo].[columnlayoutitem] ([COLUMNLAYOUT])
      

      Workaround

      Add index manually

            [JRASERVER-67735] Create index for columnlayoutitem table

            Method com.atlassian.jira.issue.fields.layout.column.DefaultColumnLayoutManager is using the ColumnLayout / ColumnLayoutItem pair, while the Parent/Child loading doesn't have proper index

            <!-- User field configuration for the columns they want to show on the Issue Navigator -->
                <entity entity-name="ColumnLayout" table-name="columnlayout" package-name="">
                    <field name="id" type="numeric"/>
            
                    <field name="username" type="long-varchar"/>
                    <field name="searchrequest" type="numeric"/>
            
                    <prim-key field="id"/>
            
                    <relation type="one" title="Parent" rel-entity-name="User">
                        <key-map field-name="username" rel-field-name="userName"/>
                    </relation>
                    <relation type="one" title="Parent" rel-entity-name="SearchRequest">
                        <key-map field-name="searchrequest" rel-field-name="id"/>
                    </relation>
                    <relation type="many" title="Child" rel-entity-name="ColumnLayoutItem">
                        <key-map field-name="id" rel-field-name="columnlayout"/>
                    </relation>
            
                    <index name="cl_searchrequest">
                        <index-field name="searchrequest"/>
                    </index>
                    <index name="cl_username">
                        <index-field name="username"/>
                    </index>
            
                </entity>
            
                <entity entity-name="ColumnLayoutItem" table-name="columnlayoutitem" package-name="">
                    <field name="id" type="numeric"/>
            
                    <field name="columnlayout" type="numeric"/>
                    <field name="fieldidentifier" type="long-varchar"/>
                    <field name="horizontalposition" type="numeric"/>
            
                    <prim-key field="id"/>
            
                    <relation type="one" title="Parent" rel-entity-name="ColumnLayout">
                        <key-map field-name="columnlayout" rel-field-name="id"/>
                    </relation>
            
                    <index name="idx_cli_fieldidentifier">
                        <index-field name="fieldidentifier"/>
                    </index>
                </entity>
            
            

            Andriy Yakovlev [Atlassian] added a comment - Method com.atlassian.jira.issue.fields.layout.column.DefaultColumnLayoutManager is using the ColumnLayout / ColumnLayoutItem pair, while the Parent/Child loading doesn't have proper index <!-- User field configuration for the columns they want to show on the Issue Navigator --> <entity entity-name= "ColumnLayout" table-name= "columnlayout" package -name=""> <field name= "id" type= "numeric" /> <field name= "username" type= " long -varchar" /> <field name= "searchrequest" type= "numeric" /> <prim-key field= "id" /> <relation type= "one" title= "Parent" rel-entity-name= "User" > <key-map field-name= "username" rel-field-name= "userName" /> </relation> <relation type= "one" title= "Parent" rel-entity-name= "SearchRequest" > <key-map field-name= "searchrequest" rel-field-name= "id" /> </relation> <relation type= "many" title= "Child" rel-entity-name= "ColumnLayoutItem" > <key-map field-name= "id" rel-field-name= "columnlayout" /> </relation> <index name= "cl_searchrequest" > <index-field name= "searchrequest" /> </index> <index name= "cl_username" > <index-field name= "username" /> </index> </entity> <entity entity-name= "ColumnLayoutItem" table-name= "columnlayoutitem" package -name=""> <field name= "id" type= "numeric" /> <field name= "columnlayout" type= "numeric" /> <field name= "fieldidentifier" type= " long -varchar" /> <field name= "horizontalposition" type= "numeric" /> <prim-key field= "id" /> <relation type= "one" title= "Parent" rel-entity-name= "ColumnLayout" > <key-map field-name= "columnlayout" rel-field-name= "id" /> </relation> <index name= "idx_cli_fieldidentifier" > <index-field name= "fieldidentifier" /> </index> </entity>

              Unassigned Unassigned
              ayakovlev@atlassian.com Andriy Yakovlev [Atlassian]
              Votes:
              4 Vote for this issue
              Watchers:
              7 Start watching this issue

                Created:
                Updated: