<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:13:59 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>FOLIO Jira</title>
    <link>https://folio-org.atlassian.net</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>1001.0.0-SNAPSHOT</version>
        <build-number>100246</build-number>
        <build-date>07-02-2024</build-date>
    </build-info>

<item>
            <title>[FOLIO-1526] Enable requesting all records to avoid pagination anomalies</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-1526</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;When a request is made to a module to retrieve data, the results are paginated with a maximum allowable pagination limit of 2147483647 records.  For &lt;a href=&quot;https://folio-org.atlassian.net/browse/UXPROD-1128&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://folio-org.atlassian.net/browse/UXPROD-1128&lt;/a&gt; it is necessary to retrieve all records accurately, and the pagination scheme may result in anomalies due to state changes in between requests (or possibly other reasons).  The modules do not document a limit on the total number of records they can store, and PostgreSQL imposes no such limit since it supports unlimited rows in a table.  The pagination maximum of 2147483647 is a high limit but it is possible (in theory) that one or more (specialized) modules could reach that number of rows eventually.  Having any pagination maximum means a client that needs all records will have to test and maintain a rare edge case and address the pagination anomaly in some way (though it is unclear how).  A solution for this problem would be a convention that clients can specify -1 as the pagination limit to indicate that all records are being requested in a single page.  The module implementation should handle the request in a single database transaction/query to ensure there are no anomalies due to multiple queries.&lt;/p&gt;</description>
                <environment></environment>
        <key id="80779">FOLIO-1526</key>
            <summary>Enable requesting all records to avoid pagination anomalies</summary>
                <type id="10002" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10322?size=medium">New Feature</type>
                                            <priority id="10002" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p3.svg">P3</priority>
                        <status id="6" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10000">Won&apos;t Do</resolution>
                                                        <assignee accountid="-1">Unassigned</assignee>
                                                                <reporter accountid="70121:8d96963c-ce4c-478d-9023-2de35bc14b67">Nassib Nassar</reporter>
                                    <labels>
                            <label>core</label>
                            <label>sprint47</label>
                    </labels>
                <created>Mon, 24 Sep 2018 14:55:03 +0000</created>
                <updated>Tue, 5 Mar 2019 12:28:57 +0000</updated>
                            <resolved>Mon, 4 Mar 2019 13:09:38 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                <comments>
                                                            <comment id="192395" author="5ee89462f7aa140abd82d11d" created="Mon, 4 Mar 2019 09:44:54 +0000"  >&lt;p&gt;2147483647 = Integer.MAX_VALUE in Java.&lt;br/&gt;
Both the limit and the offset parameter are limited to that number: &lt;a href=&quot;https://github.com/folio-org/raml/blob/raml1.0/traits/pageable.raml&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/folio-org/raml/blob/raml1.0/traits/pageable.raml&lt;/a&gt;&lt;br/&gt;
If there are more records than this we have to change the API and use long instead of int in the implementation.&lt;br/&gt;
For most tables it is a bug if there are that many records (we have 10 GB if the average record size is only 5 bytes).&lt;br/&gt;
Until there really is a need for such a big dataset it is a theoretical issue and we should postpone it.&lt;/p&gt;</comment>
                                                            <comment id="192398" author="70121:8d96963c-ce4c-478d-9023-2de35bc14b67" created="Mon, 4 Mar 2019 13:09:08 +0000"  >&lt;p&gt;In that case it might be a good idea for the modules to specify the limit on the total number of records they can store, if exceeding it is a bug.  I will close this issue.&lt;/p&gt;</comment>
                                                            <comment id="192401" author="557058:c2706f9e-f281-4999-8937-b5c5a8ff211f" created="Mon, 4 Mar 2019 15:28:58 +0000"  >&lt;p&gt;If the API is streaming the results back, why not just make the limit parameter optional? That way the behavior is similar to the other parameters. For example, offset isn&apos;t required. Also, the documentation doesn&apos;t seem to consistently specify which parameters are required. I&apos;ve also noticed that at least at one point some APIs named the parameter &quot;limit&quot; and others named it &quot;size&quot; (if I remember correctly). Maybe it was only one of them that was named differently. I don&apos;t remember which one it was at the moment.&lt;/p&gt;</comment>
                                                            <comment id="192403" author="5ee89462f7aa140abd82d11d" created="Tue, 5 Mar 2019 12:28:57 +0000"  >&lt;p&gt;Regarding &quot;limit&quot; and &quot;size&quot;:&lt;br/&gt;
We have the pageable trait: &lt;a href=&quot;https://github.com/folio-org/raml/blob/raml1.0/traits/pageable.raml&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/folio-org/raml/blob/raml1.0/traits/pageable.raml&lt;/a&gt;&lt;br/&gt;
These are parameter names and default values of the trait: offset=0, limit=10&lt;br/&gt;
RMB documentation suggests to use the collection resource type that is based on that trait: &lt;a href=&quot;https://github.com/folio-org/raml-module-builder#step-6-design-the-raml-files&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/folio-org/raml-module-builder#step-6-design-the-raml-files&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                            <outwardlinks description="blocks">
                                        <issuelink>
            <issuekey id="10787">UXPROD-1128</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is blocked by">
                                        <issuelink>
            <issuekey id="56961">RMB-255</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="37510">CQLPG-88</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10000" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummarycf">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10057" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Development Team</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10144"><![CDATA[Core: Platform]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzyxsv:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 4 Mar 2019 09:44:54 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10025" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>[CHART] Time in Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>