summaryrefslogtreecommitdiff
path: root/mysql-test/suite/compat
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.com>2018-03-02 12:09:41 +0400
committerAlexander Barkov <bar@mariadb.com>2018-03-02 12:09:41 +0400
commitd70573564cb2701076083ea7f55ae9539fad13b4 (patch)
tree77784321bacf1f37aeb28f0beade9aa1426ce4e2 /mysql-test/suite/compat
parent5cf0662d76556b09f5d17af69fe37530ce6547fc (diff)
parent88a9d4ab42d370dedc9b1d90c75bee53fd8fb8c0 (diff)
downloadmariadb-git-d70573564cb2701076083ea7f55ae9539fad13b4.tar.gz
Merge remote-tracking branch 'origin/bb-10.2-ext' into 10.3
Diffstat (limited to 'mysql-test/suite/compat')
-rw-r--r--mysql-test/suite/compat/oracle/r/information_schema_parameters.result816
-rw-r--r--mysql-test/suite/compat/oracle/t/information_schema_parameters.test94
2 files changed, 910 insertions, 0 deletions
diff --git a/mysql-test/suite/compat/oracle/r/information_schema_parameters.result b/mysql-test/suite/compat/oracle/r/information_schema_parameters.result
new file mode 100644
index 00000000000..e1ed53c39de
--- /dev/null
+++ b/mysql-test/suite/compat/oracle/r/information_schema_parameters.result
@@ -0,0 +1,816 @@
+#
+# MDEV-15416 Crash when reading I_S.PARAMETERS
+#
+# Create in sql_mode=ORACLE, display in sql_mode=ORACLE and sql_mode=DEFAULT
+SET sql_mode=ORACLE;
+CREATE PROCEDURE p1(a0 t1.a%TYPE,
+a1 test.t1.a%TYPE,
+b0 t1%ROWTYPE,
+b1 test.t1%ROWTYPE,
+d ROW(a INT,b DOUBLE))
+AS
+BEGIN
+NULL;
+END;
+$$
+SET sql_mode=ORACLE;
+SELECT *, '--------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='p1';
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 1
+PARAMETER_MODE IN
+PARAMETER_NAME a0
+DATA_TYPE TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER "t1"."a"%TYPE
+ROUTINE_TYPE PROCEDURE
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 2
+PARAMETER_MODE IN
+PARAMETER_NAME a1
+DATA_TYPE TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER "test"."t1"."a"%TYPE
+ROUTINE_TYPE PROCEDURE
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 3
+PARAMETER_MODE IN
+PARAMETER_NAME b0
+DATA_TYPE ROW TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER "t1"%ROWTYPE
+ROUTINE_TYPE PROCEDURE
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 4
+PARAMETER_MODE IN
+PARAMETER_NAME b1
+DATA_TYPE ROW TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER "test"."t1"%ROWTYPE
+ROUTINE_TYPE PROCEDURE
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 5
+PARAMETER_MODE IN
+PARAMETER_NAME d
+DATA_TYPE ROW
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER ROW
+ROUTINE_TYPE PROCEDURE
+-------- --------
+SET sql_mode=DEFAULT;
+SELECT *, '--------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='p1';
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 1
+PARAMETER_MODE IN
+PARAMETER_NAME a0
+DATA_TYPE TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER "t1"."a"%TYPE
+ROUTINE_TYPE PROCEDURE
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 2
+PARAMETER_MODE IN
+PARAMETER_NAME a1
+DATA_TYPE TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER "test"."t1"."a"%TYPE
+ROUTINE_TYPE PROCEDURE
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 3
+PARAMETER_MODE IN
+PARAMETER_NAME b0
+DATA_TYPE ROW TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER "t1"%ROWTYPE
+ROUTINE_TYPE PROCEDURE
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 4
+PARAMETER_MODE IN
+PARAMETER_NAME b1
+DATA_TYPE ROW TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER "test"."t1"%ROWTYPE
+ROUTINE_TYPE PROCEDURE
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 5
+PARAMETER_MODE IN
+PARAMETER_NAME d
+DATA_TYPE ROW
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER ROW
+ROUTINE_TYPE PROCEDURE
+-------- --------
+DROP PROCEDURE p1;
+SET sql_mode=ORACLE;
+CREATE FUNCTION f1(a0 t1.a%TYPE,
+a1 test.t1.a%TYPE,
+b0 t1%ROWTYPE,
+b1 test.t1%ROWTYPE,
+d ROW(a INT,b DOUBLE))
+RETURN INT
+AS
+BEGIN
+RETURN 0;
+END;
+$$
+SET sql_mode=ORACLE;
+SELECT *, '--------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='f1';
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 0
+PARAMETER_MODE NULL
+PARAMETER_NAME NULL
+DATA_TYPE int
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION 10
+NUMERIC_SCALE 0
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER int(11)
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 1
+PARAMETER_MODE IN
+PARAMETER_NAME a0
+DATA_TYPE TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER "t1"."a"%TYPE
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 2
+PARAMETER_MODE IN
+PARAMETER_NAME a1
+DATA_TYPE TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER "test"."t1"."a"%TYPE
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 3
+PARAMETER_MODE IN
+PARAMETER_NAME b0
+DATA_TYPE ROW TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER "t1"%ROWTYPE
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 4
+PARAMETER_MODE IN
+PARAMETER_NAME b1
+DATA_TYPE ROW TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER "test"."t1"%ROWTYPE
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 5
+PARAMETER_MODE IN
+PARAMETER_NAME d
+DATA_TYPE ROW
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER ROW
+ROUTINE_TYPE FUNCTION
+-------- --------
+SET sql_mode=DEFAULT;
+SELECT *, '--------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='f1';
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 0
+PARAMETER_MODE NULL
+PARAMETER_NAME NULL
+DATA_TYPE int
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION 10
+NUMERIC_SCALE 0
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER int(11)
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 1
+PARAMETER_MODE IN
+PARAMETER_NAME a0
+DATA_TYPE TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER "t1"."a"%TYPE
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 2
+PARAMETER_MODE IN
+PARAMETER_NAME a1
+DATA_TYPE TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER "test"."t1"."a"%TYPE
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 3
+PARAMETER_MODE IN
+PARAMETER_NAME b0
+DATA_TYPE ROW TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER "t1"%ROWTYPE
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 4
+PARAMETER_MODE IN
+PARAMETER_NAME b1
+DATA_TYPE ROW TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER "test"."t1"%ROWTYPE
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 5
+PARAMETER_MODE IN
+PARAMETER_NAME d
+DATA_TYPE ROW
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER ROW
+ROUTINE_TYPE FUNCTION
+-------- --------
+DROP FUNCTION f1;
+# Create in sql_mode=DEFAULT, display in sql_mode=DEFAULT and sql_mode=ORACLE
+SET sql_mode=DEFAULT;
+CREATE PROCEDURE p1(a0 TYPE OF t1.a,
+a1 TYPE OF test.t1.a,
+b0 ROW TYPE OF t1,
+b1 ROW TYPE OF test.t1,
+d ROW(a INT,b DOUBLE))
+BEGIN
+END;
+$$
+SET sql_mode=DEFAULT;
+SELECT *, '--------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='p1';
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 1
+PARAMETER_MODE IN
+PARAMETER_NAME a0
+DATA_TYPE TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER TYPE OF `t1`.`a`
+ROUTINE_TYPE PROCEDURE
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 2
+PARAMETER_MODE IN
+PARAMETER_NAME a1
+DATA_TYPE TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER TYPE OF `test`.`t1`.`a`
+ROUTINE_TYPE PROCEDURE
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 3
+PARAMETER_MODE IN
+PARAMETER_NAME b0
+DATA_TYPE ROW TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER ROW TYPE OF `t1`
+ROUTINE_TYPE PROCEDURE
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 4
+PARAMETER_MODE IN
+PARAMETER_NAME b1
+DATA_TYPE ROW TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER ROW TYPE OF `test`.`t1`
+ROUTINE_TYPE PROCEDURE
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 5
+PARAMETER_MODE IN
+PARAMETER_NAME d
+DATA_TYPE ROW
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER ROW
+ROUTINE_TYPE PROCEDURE
+-------- --------
+SET sql_mode=ORACLE;
+SELECT *, '--------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='p1';
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 1
+PARAMETER_MODE IN
+PARAMETER_NAME a0
+DATA_TYPE TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER TYPE OF `t1`.`a`
+ROUTINE_TYPE PROCEDURE
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 2
+PARAMETER_MODE IN
+PARAMETER_NAME a1
+DATA_TYPE TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER TYPE OF `test`.`t1`.`a`
+ROUTINE_TYPE PROCEDURE
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 3
+PARAMETER_MODE IN
+PARAMETER_NAME b0
+DATA_TYPE ROW TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER ROW TYPE OF `t1`
+ROUTINE_TYPE PROCEDURE
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 4
+PARAMETER_MODE IN
+PARAMETER_NAME b1
+DATA_TYPE ROW TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER ROW TYPE OF `test`.`t1`
+ROUTINE_TYPE PROCEDURE
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME p1
+ORDINAL_POSITION 5
+PARAMETER_MODE IN
+PARAMETER_NAME d
+DATA_TYPE ROW
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER ROW
+ROUTINE_TYPE PROCEDURE
+-------- --------
+DROP PROCEDURE p1;
+SET sql_mode=DEFAULT;
+CREATE FUNCTION f1(a0 TYPE OF t1.a,
+a1 TYPE OF test.t1.a,
+b0 ROW TYPE OF t1,
+b1 ROW TYPE OF test.t1,
+d ROW(a INT,b DOUBLE))
+RETURNS INT
+BEGIN
+RETURN 0;
+END;
+$$
+SET sql_mode=DEFAULT;
+SELECT *, '--------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='f1';
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 0
+PARAMETER_MODE NULL
+PARAMETER_NAME NULL
+DATA_TYPE int
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION 10
+NUMERIC_SCALE 0
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER int(11)
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 1
+PARAMETER_MODE IN
+PARAMETER_NAME a0
+DATA_TYPE TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER TYPE OF `t1`.`a`
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 2
+PARAMETER_MODE IN
+PARAMETER_NAME a1
+DATA_TYPE TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER TYPE OF `test`.`t1`.`a`
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 3
+PARAMETER_MODE IN
+PARAMETER_NAME b0
+DATA_TYPE ROW TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER ROW TYPE OF `t1`
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 4
+PARAMETER_MODE IN
+PARAMETER_NAME b1
+DATA_TYPE ROW TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER ROW TYPE OF `test`.`t1`
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 5
+PARAMETER_MODE IN
+PARAMETER_NAME d
+DATA_TYPE ROW
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER ROW
+ROUTINE_TYPE FUNCTION
+-------- --------
+SET sql_mode=ORACLE;
+SELECT *, '--------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='f1';
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 0
+PARAMETER_MODE NULL
+PARAMETER_NAME NULL
+DATA_TYPE int
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION 10
+NUMERIC_SCALE 0
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER int(11)
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 1
+PARAMETER_MODE IN
+PARAMETER_NAME a0
+DATA_TYPE TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER TYPE OF `t1`.`a`
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 2
+PARAMETER_MODE IN
+PARAMETER_NAME a1
+DATA_TYPE TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER TYPE OF `test`.`t1`.`a`
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 3
+PARAMETER_MODE IN
+PARAMETER_NAME b0
+DATA_TYPE ROW TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER ROW TYPE OF `t1`
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 4
+PARAMETER_MODE IN
+PARAMETER_NAME b1
+DATA_TYPE ROW TYPE OF
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER ROW TYPE OF `test`.`t1`
+ROUTINE_TYPE FUNCTION
+-------- --------
+SPECIFIC_CATALOG def
+SPECIFIC_SCHEMA test
+SPECIFIC_NAME f1
+ORDINAL_POSITION 5
+PARAMETER_MODE IN
+PARAMETER_NAME d
+DATA_TYPE ROW
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+DTD_IDENTIFIER ROW
+ROUTINE_TYPE FUNCTION
+-------- --------
+DROP FUNCTION f1;
diff --git a/mysql-test/suite/compat/oracle/t/information_schema_parameters.test b/mysql-test/suite/compat/oracle/t/information_schema_parameters.test
new file mode 100644
index 00000000000..af241661939
--- /dev/null
+++ b/mysql-test/suite/compat/oracle/t/information_schema_parameters.test
@@ -0,0 +1,94 @@
+
+--echo #
+--echo # MDEV-15416 Crash when reading I_S.PARAMETERS
+--echo #
+
+--echo # Create in sql_mode=ORACLE, display in sql_mode=ORACLE and sql_mode=DEFAULT
+
+SET sql_mode=ORACLE;
+DELIMITER $$;
+CREATE PROCEDURE p1(a0 t1.a%TYPE,
+ a1 test.t1.a%TYPE,
+ b0 t1%ROWTYPE,
+ b1 test.t1%ROWTYPE,
+ d ROW(a INT,b DOUBLE))
+AS
+BEGIN
+ NULL;
+END;
+$$
+DELIMITER ;$$
+--vertical_results
+SET sql_mode=ORACLE;
+SELECT *, '--------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='p1';
+SET sql_mode=DEFAULT;
+SELECT *, '--------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='p1';
+--horizontal_results
+DROP PROCEDURE p1;
+
+
+SET sql_mode=ORACLE;
+DELIMITER $$;
+CREATE FUNCTION f1(a0 t1.a%TYPE,
+ a1 test.t1.a%TYPE,
+ b0 t1%ROWTYPE,
+ b1 test.t1%ROWTYPE,
+ d ROW(a INT,b DOUBLE))
+ RETURN INT
+AS
+BEGIN
+ RETURN 0;
+END;
+$$
+DELIMITER ;$$
+--vertical_results
+SET sql_mode=ORACLE;
+SELECT *, '--------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='f1';
+SET sql_mode=DEFAULT;
+SELECT *, '--------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='f1';
+--horizontal_results
+DROP FUNCTION f1;
+
+
+--echo # Create in sql_mode=DEFAULT, display in sql_mode=DEFAULT and sql_mode=ORACLE
+
+SET sql_mode=DEFAULT;
+DELIMITER $$;
+CREATE PROCEDURE p1(a0 TYPE OF t1.a,
+ a1 TYPE OF test.t1.a,
+ b0 ROW TYPE OF t1,
+ b1 ROW TYPE OF test.t1,
+ d ROW(a INT,b DOUBLE))
+BEGIN
+END;
+$$
+DELIMITER ;$$
+--vertical_results
+SET sql_mode=DEFAULT;
+SELECT *, '--------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='p1';
+SET sql_mode=ORACLE;
+SELECT *, '--------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='p1';
+--horizontal_results
+DROP PROCEDURE p1;
+
+
+SET sql_mode=DEFAULT;
+DELIMITER $$;
+CREATE FUNCTION f1(a0 TYPE OF t1.a,
+ a1 TYPE OF test.t1.a,
+ b0 ROW TYPE OF t1,
+ b1 ROW TYPE OF test.t1,
+ d ROW(a INT,b DOUBLE))
+ RETURNS INT
+BEGIN
+ RETURN 0;
+END;
+$$
+DELIMITER ;$$
+--vertical_results
+SET sql_mode=DEFAULT;
+SELECT *, '--------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='f1';
+SET sql_mode=ORACLE;
+SELECT *, '--------' FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='f1';
+--horizontal_results
+DROP FUNCTION f1;