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

User defined aggregate functions not working correctly when the schema is changed

Details

    Description

      CREATE SCHEMA IF NOT EXISTS common_schema;
      DELIMITER $$
      DROP FUNCTION IF EXISTS common_schema.add_ints $$
      CREATE FUNCTION common_schema.add_ints(int_1 INT, int_2 INT) RETURNS INT NO SQL 
      BEGIN 
          RETURN int_1 + int_2; 
      END $$ 
      DROP FUNCTION IF EXISTS common_schema.sum_ints $$
      CREATE AGGREGATE FUNCTION common_schema.sum_ints(int_val INT) RETURNS INT 
      BEGIN 
          DECLARE result INT DEFAULT 0; 
          DECLARE CONTINUE HANDLER FOR NOT FOUND RETURN result; 
          LOOP FETCH GROUP NEXT ROW; 
              SET result = common_schema.add_ints(result, int_val); 
          END LOOP; 
      END $$
       
      DELIMITER ;
      

      MariaDB [test]> USE common_schema;
      Database changed
      MariaDB [common_schema]> SELECT common_schema.sum_ints(seq)
          -> FROM (SELECT 1 seq UNION ALL SELECT 2) t;
      +-----------------------------+
      | common_schema.sum_ints(seq) |
      +-----------------------------+
      |                           3 |
      +-----------------------------+
      1 row in set (0.009 sec)
      

      MariaDB [test]> USE another_schema;
      Database changed
      MariaDB [another_schema]> SELECT common_schema.sum_ints(seq) FROM (SELECT 1 seq UNION ALL SELECT 2) t;
      +-----------------------------+
      | common_schema.sum_ints(seq) |
      +-----------------------------+
      |                        NULL |
      +-----------------------------+
      1 row in set (0.028 sec)
      

      On changing the schema the custom aggregate function returns NULL , which is incorrect

      Attachments

        Issue Links

          Activity

            varun Varun Gupta (Inactive) created issue -
            varun Varun Gupta (Inactive) made changes -
            Field Original Value New Value
            Description {code:sql}
            CREATE SCHEMA IF NOT EXISTS common_schema;
            DELIMITER $$
            DROP FUNCTION IF EXISTS common_schema.add_ints $$
            CREATE FUNCTION common_schema.add_ints(int_1 INT, int_2 INT) RETURNS INT NO SQL
            BEGIN
                RETURN int_1 + int_2;
            END $$
            DROP FUNCTION IF EXISTS common_schema.sum_ints $$
            CREATE AGGREGATE FUNCTION common_schema.sum_ints(int_val INT) RETURNS INT
            BEGIN
                DECLARE result INT DEFAULT 0;
                DECLARE CONTINUE HANDLER FOR NOT FOUND RETURN result;
                LOOP FETCH GROUP NEXT ROW;
                    SET result = common_schema.add_ints(result, int_val);
                END LOOP;
            END $$

            DELIMITER ;
            {code}

            {noformat}
            MariaDB [test]> USE common_schema;
            Database changed
            MariaDB [common_schema]> SELECT common_schema.sum_ints(seq)
                -> FROM (SELECT 1 seq UNION ALL SELECT 2) t;
            +-----------------------------+
            | common_schema.sum_ints(seq) |
            +-----------------------------+
            | 3 |
            +-----------------------------+
            1 row in set (0.009 sec)
            {noformat}


            {noformat}
            MariaDB [test]> USE another_schema;
            Database changed
            MariaDB [another_schema]> SELECT common_schema.sum_ints(seq) FROM (SELECT 1 seq UNION ALL SELECT 2) t;
            +-----------------------------+
            | common_schema.sum_ints(seq) |
            +-----------------------------+
            | NULL |
            +-----------------------------+
            1 row in set (0.028 sec)
            {noformat}

            On changing the schema the custom aggregate function returns NULL , which is incorrect


            varun Varun Gupta (Inactive) made changes -
            Status Open [ 1 ] In Progress [ 3 ]
            varun Varun Gupta (Inactive) made changes -
            Assignee Varun Gupta [ varun ] Vicentiu Ciorbaru [ cvicentiu ]
            Status In Progress [ 3 ] In Review [ 10002 ]
            varun Varun Gupta (Inactive) made changes -
            varun Varun Gupta (Inactive) made changes -
            Assignee Vicențiu Ciorbaru [ cvicentiu ] Varun Gupta [ varun ]
            varun Varun Gupta (Inactive) made changes -
            Assignee Varun Gupta [ varun ] Oleksandr Byelkin [ sanja ]
            sanja Oleksandr Byelkin made changes -
            Status In Review [ 10002 ] Stalled [ 10000 ]
            sanja Oleksandr Byelkin made changes -
            Assignee Oleksandr Byelkin [ sanja ] Varun Gupta [ varun ]
            varun Varun Gupta (Inactive) made changes -
            Fix Version/s 10.3.24 [ 24306 ]
            Fix Version/s 10.4.14 [ 24305 ]
            Fix Version/s 10.5.4 [ 24264 ]
            Fix Version/s 10.3 [ 22126 ]
            Fix Version/s 10.4 [ 22408 ]
            Resolution Fixed [ 1 ]
            Status Stalled [ 10000 ] Closed [ 6 ]
            serg Sergei Golubchik made changes -
            Workflow MariaDB v3 [ 91427 ] MariaDB v4 [ 155420 ]

            People

              varun Varun Gupta (Inactive)
              varun Varun Gupta (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              4 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.