Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-16327

Server doesn't account for engines that supports OFFSET on their own.

Details

    Description

      It comes out that server doesn't honors group by handlers that supports OFFSET on their own and the server code in select_send::send_data tries to reapply OFFSET to the set returned by the handler[1]

      select i from t1 group by i limit 10,20; # Start from offset 10

      There is only engine that supports both group by handler and internal sorting ATM, so one could reproduce this only with columnstore engine built of:

      • develop branch columnstore fork of the server's code
      • develop branch columnstore engine

      1. https://hastebin.com/afepesalez.cs

      Attachments

        Issue Links

          Activity

            sanja Oleksandr Byelkin added a comment - - edited

            monty, serg, drrtuy: Hi! As I can see (maybe I am wrong) group by handler do not signal what condition it accept and process (so we have to check HAVING twice for example), naturally it will not work for OFFSET, so I think of call like group_by_handler::is_limit_processed() (false by default) to remove LIMIT/OFFSET for the query if it will be processed by the engine. Is it OK?

            sanja Oleksandr Byelkin added a comment - - edited monty , serg , drrtuy : Hi! As I can see (maybe I am wrong) group by handler do not signal what condition it accept and process (so we have to check HAVING twice for example), naturally it will not work for OFFSET, so I think of call like group_by_handler::is_limit_processed() (false by default) to remove LIMIT/OFFSET for the query if it will be processed by the engine. Is it OK?
            drrtuy Roman added a comment -

            According to comments in group_by_handler.h the handler instance signals whether it supports a feature or not but setting NULL to any Query structure's member that handler supports. But at this moment server crashes if I handler doesn't set NULL for any.
            If you find your way more suitable then the original then we should change the comments.

            drrtuy Roman added a comment - According to comments in group_by_handler.h the handler instance signals whether it supports a feature or not but setting NULL to any Query structure's member that handler supports. But at this moment server crashes if I handler doesn't set NULL for any. If you find your way more suitable then the original then we should change the comments.

            if sorting supported it removed from Query

            sanja Oleksandr Byelkin added a comment - if sorting supported it removed from Query

            Ok to push.

            bar Alexander Barkov added a comment - Ok to push.

            People

              sanja Oleksandr Byelkin
              drrtuy Roman
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.