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

ROW SP variable is allowed in unexpected context

Details

    Description

      This script produces no errors:

      CREATE OR REPLACE TABLE t1 (a INT);
      DELIMITER $$
      BEGIN NOT ATOMIC
        DECLARE row ROW(a INT);
        SELECT * FROM t1 ORDER BY row;
      END;
      $$
      DELIMITER ;
      

      It should return an error.

      The same problem is repeatable with HAVING:

      CREATE OR REPLACE TABLE t1 (a INT);
      DELIMITER $$
      BEGIN NOT ATOMIC
        DECLARE row ROW(a INT);
        SELECT * FROM t1 HAVING row;
      END;
      $$
      DELIMITER ;
      

      The same problem is repeatable in LIKE..ESCAPE:

      DELIMITER $$
      BEGIN NOT ATOMIC
        DECLARE a ROW(a INT);
        SELECT 1 LIKE 2 ESCAPE a;
      END;
      $$
      DELIMITER ;
      

      Attachments

        Issue Links

          Activity

            bar Alexander Barkov created issue -
            bar Alexander Barkov made changes -
            Field Original Value New Value
            bar Alexander Barkov made changes -
            Description This script produces no errors:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 ORDER BY row;
              SELECT * FROM t1 HAVING row;
            END;
            $$
            DELIMITER ;
            {code}
            This script produces no errors:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 ORDER BY row;
              SELECT * FROM t1 HAVING row;
            END;
            $$
            DELIMITER ;
            {code}

            It should return an error.
            bar Alexander Barkov made changes -
            Description This script produces no errors:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 ORDER BY row;
              SELECT * FROM t1 HAVING row;
            END;
            $$
            DELIMITER ;
            {code}

            It should return an error.
            This script produces no errors:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 ORDER BY row;
            END;
            $$
            DELIMITER ;
            {code}

            It should return an error.

            So should this:

            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 HAVING row;
            END;
            $$
            DELIMITER ;
            {code}
            bar Alexander Barkov made changes -
            Description This script produces no errors:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 ORDER BY row;
            END;
            $$
            DELIMITER ;
            {code}

            It should return an error.

            So should this:

            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 HAVING row;
            END;
            $$
            DELIMITER ;
            {code}
            This script produces no errors:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 ORDER BY row;
            END;
            $$
            DELIMITER ;
            {code}

            It should return an error.

            The same problem is repeatable with HAVING:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 HAVING row;
            END;
            $$
            DELIMITER ;
            {code}
            bar Alexander Barkov made changes -
            Affects Version/s 10.3 [ 22126 ]
            bar Alexander Barkov made changes -
            Description This script produces no errors:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 ORDER BY row;
            END;
            $$
            DELIMITER ;
            {code}

            It should return an error.

            The same problem is repeatable with HAVING:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 HAVING row;
            END;
            $$
            DELIMITER ;
            {code}
            This script produces no errors:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 ORDER BY row;
            END;
            $$
            DELIMITER ;
            {code}

            It should return an error.

            The same problem is repeatable with HAVING:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 HAVING row;
            END;
            $$
            DELIMITER ;
            {code}

            Not repeatable in 10.3.
            bar Alexander Barkov made changes -
            Description This script produces no errors:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 ORDER BY row;
            END;
            $$
            DELIMITER ;
            {code}

            It should return an error.

            The same problem is repeatable with HAVING:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 HAVING row;
            END;
            $$
            DELIMITER ;
            {code}

            Not repeatable in 10.3.
            This script produces no errors:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 ORDER BY row;
            END;
            $$
            DELIMITER ;
            {code}

            It should return an error.

            The same problem is repeatable with HAVING:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 HAVING row;
            END;
            $$
            DELIMITER ;
            {code}

            bar Alexander Barkov made changes -
            Affects Version/s 10.3 [ 22126 ]
            bar Alexander Barkov made changes -
            Fix Version/s 10.3 [ 22126 ]
            bar Alexander Barkov made changes -
            Description This script produces no errors:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 ORDER BY row;
            END;
            $$
            DELIMITER ;
            {code}

            It should return an error.

            The same problem is repeatable with HAVING:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 HAVING row;
            END;
            $$
            DELIMITER ;
            {code}

            This script produces no errors:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 ORDER BY row;
            END;
            $$
            DELIMITER ;
            {code}

            It should return an error.

            The same problem is repeatable with HAVING:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 HAVING row;
            END;
            $$
            DELIMITER ;
            {code}

            The same problem is repeatable in LIKE..ESCAPE:
            {code:sql}
            CREATE OR REPLACE TABLE t1 (a INT);
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE a ROW(a INT);
              SELECT 1 LIKE 2 ESCAPE a;
            END;
            $$
            DELIMITER ;
            {code}
            bar Alexander Barkov made changes -
            Description This script produces no errors:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 ORDER BY row;
            END;
            $$
            DELIMITER ;
            {code}

            It should return an error.

            The same problem is repeatable with HAVING:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 HAVING row;
            END;
            $$
            DELIMITER ;
            {code}

            The same problem is repeatable in LIKE..ESCAPE:
            {code:sql}
            CREATE OR REPLACE TABLE t1 (a INT);
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE a ROW(a INT);
              SELECT 1 LIKE 2 ESCAPE a;
            END;
            $$
            DELIMITER ;
            {code}
            This script produces no errors:
            {code:sql}
            CREATE OR REPLACE TABLE t1 (a INT);
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 ORDER BY row;
            END;
            $$
            DELIMITER ;
            {code}

            It should return an error.

            The same problem is repeatable with HAVING:
            {code:sql}
            CREATE OR REPLACE TABLE t1 (a INT);
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE row ROW(a INT);
              SELECT * FROM t1 HAVING row;
            END;
            $$
            DELIMITER ;
            {code}

            The same problem is repeatable in LIKE..ESCAPE:
            {code:sql}
            DELIMITER $$
            BEGIN NOT ATOMIC
              DECLARE a ROW(a INT);
              SELECT 1 LIKE 2 ESCAPE a;
            END;
            $$
            DELIMITER ;
            {code}
            bar Alexander Barkov made changes -
            issue.field.resolutiondate 2018-06-05 06:26:27.0 2018-06-05 06:26:27.464
            bar Alexander Barkov made changes -
            Fix Version/s 10.3.8 [ 23113 ]
            Fix Version/s 10.4.0 [ 23115 ]
            Fix Version/s 10.3 [ 22126 ]
            Fix Version/s 10.4 [ 22408 ]
            Resolution Fixed [ 1 ]
            Status Open [ 1 ] Closed [ 6 ]
            bar Alexander Barkov made changes -
            serg Sergei Golubchik made changes -
            Workflow MariaDB v3 [ 87661 ] MariaDB v4 [ 154468 ]

            People

              bar Alexander Barkov
              bar Alexander Barkov
              Votes:
              0 Vote for this issue
              Watchers:
              1 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.