Uploaded image for project: 'eZ Publish / Platform'
  1. eZ Publish / Platform
  2. EZP-20824

ezoracle: db driver - $db->generateSQLINStatement - not working correctly for items > 1000

    Details

      Description

      The restriction for oracle database, which only allows a total amount of 1000 elements in an IN statement is generating a where clause that is not safely encapsulated in braces *( ... )*

      In consequence, when the return value of this method is combined in other *and* clauses on query construction (such as the one in kernel/classes/notification/handler/ezsubtree/ezsubtreenotificationrule.php) the result set won't be the desired one.

      Steps to reproduce:
      • On an environment with eZOracle and over 1000 user accounts, all of them set up to be notified on changes to an object,
      • perform the changes
      • run the notification cronjob (active in *frequent*, by default)
      • The outcome may vary into a fatal error, if your data is large enough to provoke it or an undesired list of users being notified.

        Activity

        Joaquim Cavalleri (Inactive) created issue -
        Joaquim Cavalleri (Inactive) made changes -
        Field Original Value New Value
        Status Open [ 1 ] Backlog [ 10000 ]
        Joaquim Cavalleri (Inactive) made changes -
        Description The restriction for oracle database, which only allows a total amount of 1000 elements in an IN statement is generating a where clause that is not safely encapsulated in braces **( ... )**

        In consequence, when the return value of this method is combined in other **and** clauses on query construction (such as the one in kernel/classes/notification/handler/ezsubtree/ezsubtreenotificationrule.php) the result set won't be the desired one.

        h5.Steps to reproduce:
        * On an environment with eZOracle and over 1000 user accounts, all of them set up to be notified on changes to an object,
        * perform the changes
        * run the notification cronjob (active in **frequent**, by default)
         * The outcome may vary into a fatal error, if your data is large enough to produce or an undesired list of users being notified.
        The restriction for oracle database, which only allows a total amount of 1000 elements in an IN statement is generating a where clause that is not safely encapsulated in braces **( ... )**

        In consequence, when the return value of this method is combined in other **and** clauses on query construction (such as the one in kernel/classes/notification/handler/ezsubtree/ezsubtreenotificationrule.php) the result set won't be the desired one.

        h5.Steps to reproduce:
        * On an environment with eZOracle and over 1000 user accounts, all of them set up to be notified on changes to an object,
        * perform the changes
        * run the notification cronjob (active in **frequent**, by default)
         * The outcome may vary into a fatal error, if your data is large enough to provoke it or an undesired list of users being notified.
        Gunnstein Lye made changes -
        Fix Version/s Customer request [ 11018 ]
        Gunnstein Lye made changes -
        Status Backlog [ 10000 ] InputQ [ 10001 ]
        Yannick Roger (Inactive) made changes -
        Assignee Yannick Roger [ yannick.roger@ez.no ]
        Yannick Roger (Inactive) made changes -
        Status InputQ [ 10001 ] Development [ 3 ]
        Yannick Roger (Inactive) made changes -
        Status Development [ 3 ] Devlopment done [ 5 ]
        Yannick Roger (Inactive) made changes -
        Status Devlopment done [ 5 ] Documentation done [ 10011 ]
        Pedro Resende (Inactive) made changes -
        Status Documentation done [ 10011 ] QA [ 10008 ]
        Assignee Yannick Roger [ yannick.roger@ez.no ] Pedro Resende [ pedro.resende@ez.no ]
        Pedro Resende (Inactive) made changes -
        Status QA [ 10008 ] InputQ [ 10001 ]
        Assignee Pedro Resende [ pedro.resende@ez.no ]
        Yannick Roger (Inactive) made changes -
        Comment [ . ]
        Yannick Roger (Inactive) made changes -
        Status InputQ [ 10001 ] Development [ 3 ]
        Assignee Yannick Roger [ yannick.roger@ez.no ]
        Yannick Roger (Inactive) made changes -
        Status Development [ 3 ] Devlopment done [ 5 ]
        Yannick Roger (Inactive) made changes -
        Status Devlopment done [ 5 ] Documentation done [ 10011 ]
        Pedro Resende (Inactive) made changes -
        Status Documentation done [ 10011 ] QA [ 10008 ]
        Assignee Yannick Roger [ yannick.roger@ez.no ] Pedro Resende [ pedro.resende@ez.no ]
        Pedro Resende (Inactive) made changes -
        Remaining Estimate 0 minutes [ 0 ]
        Time Spent 1 hour [ 3600 ]
        Worklog Id 34656 [ 34656 ]
        Pedro Resende (Inactive) made changes -
        Rank Ranked higher
        Pedro Resende (Inactive) made changes -
        Status QA [ 10008 ] QA done [ 10007 ]
        André Rømcke made changes -
        Assignee Pedro Resende [ pedro.resende@ez.no ]
        Status QA done [ 10007 ] Closed [ 6 ]
        Fix Version/s 5.0-SP [ 11287 ]
        Resolution Fixed [ 1 ]
        André Rømcke made changes -
        Workflow eZ Engineering Scrumban Workflow [ 53668 ] EZ* Development Workflow [ 83779 ]
        Alex Schuster made changes -
        Workflow EZ* Development Workflow [ 83779 ] EZEE Development Workflow [ 122395 ]

          People

          • Assignee:
            Unassigned
            Reporter:
            Joaquim Cavalleri (Inactive)
          • Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Time Tracking

              Estimated:
              Original Estimate - Not Specified
              Not Specified
              Remaining:
              Remaining Estimate - 0 minutes
              0m
              Logged:
              Time Spent - 1 hour
              1h