Details
-
Technical task
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
None
-
10.2.2-3, 10.2.2-1, 10.2.2-2, 10.2.2-4, 10.1.18
Description
MariaDB allows to use only user variables in EXECUTE..USING:
EXECUTE stmt USING @a; |
Under terms of this task, we'll allow passing expressions as parameters to Dynamic SQL:
PREPARE stmt FROM 'SELECT ? FROM t1'; |
EXECUTE stmt USING 1+2; |
Note, these expression types should work as output parameters (in addition to user variables):
- SP variables
- Trigger NEW and OLD fields
Note, stored functions and subselects as parameters will not be supported under terms of this task. Using stored functions and subselects would require some additional changes in table locking, SP cache and transaction handling (for the same reason, SET STATEMENT disallows stored functions and subselects as variable values). So the following scripts will return errors:
PREPARE stmt FROM 'SELECT ? FROM DUAL'; |
EXECUTE stmt USING (SELECT 1); |
CREATE FUNCTION f1() RETURNS VARCHAR(10) RETURN 'test'; |
PREPARE stmt FROM 'SELECT ? FROM DUAL'; |
EXECUTE stmt USING f1(); |
Support for stored functions and subselects as parameters (as well as in SET STATEMENT variable values) will be added under terms of a separate task.
Attachments
Issue Links
- blocks
-
MDEV-10585 EXECUTE IMMEDIATE statement
-
- Closed
-
- is blocked by
-
MDEV-10702 Crash in SET STATEMENT FOR EXECUTE
-
- Closed
-
-
MDEV-10772 Introduce Item_param::CONVERSION_INFO
-
- Closed
-
- relates to
-
MDEV-11360 Dynamic SQL: DEFAULT as a bind parameter
-
- Closed
-
-
MDEV-10801 sql_mode=ORACLE: Dynamic SQL placeholders
-
- Closed
-
-
MDEV-11781 sql_mode=ORACLE: IN, OUT, IN OUT modes for dynamic SQL bind arguments
-
- Open
-
-
MDEV-14270 Dynamic CREATE TABLE does not preserve the data type of SP variables with NULL value
-
- Open
-
-
MDEV-14271 Dynamic SQL: TIMESTAMP parameter value is not preserved on timezone change
-
- Open
-
Activity
Field | Original Value | New Value |
---|---|---|
Link |
This issue blocks |
Summary | Pass expressions as parameters to Dynamic SQL | Expressions as parameters to Dynamic SQL |
Description |
MariaDB allows to use only user variables in {{EXECUTE..USING}}:
{code:sql} EXECUTE stmt USING @a; {code} Under terms of this task, we'll allow passing expressions as parameters to Dynamic SQL: {code:sql} PREPARE stmt FROM 'SELECT ? FROM t1'; EXECUTE stmt USING 1+2; {code} |
MariaDB allows to use only user variables in {{EXECUTE..USING}}:
{code:sql} EXECUTE stmt USING @a; {code} Under terms of this task, we'll allow passing expressions as parameters to Dynamic SQL: {code:sql} PREPARE stmt FROM 'SELECT ? FROM t1'; EXECUTE stmt USING 1+2; {code} Note, these expression types should work as output parameters (in addition to user variables): - SP variables - Trigger NEW and OLD fields |
Status | Open [ 1 ] | In Progress [ 3 ] |
Labels | Compatibility |
Assignee | Alexander Barkov [ bar ] | Michael Widenius [ monty ] |
Status | In Progress [ 3 ] | In Review [ 10002 ] |
Assignee | Michael Widenius [ monty ] | Alexander Barkov [ bar ] |
Link |
This issue is blocked by |
Assignee | Alexander Barkov [ bar ] | Michael Widenius [ monty ] |
Link |
This issue is blocked by |
Link |
This issue relates to |
Fix Version/s | 10.3.0 [ 22127 ] | |
Fix Version/s | 10.2 [ 14601 ] | |
Assignee | Michael Widenius [ monty ] | Alexander Barkov [ bar ] |
Resolution | Fixed [ 1 ] | |
Status | In Review [ 10002 ] | Closed [ 6 ] |
Description |
MariaDB allows to use only user variables in {{EXECUTE..USING}}:
{code:sql} EXECUTE stmt USING @a; {code} Under terms of this task, we'll allow passing expressions as parameters to Dynamic SQL: {code:sql} PREPARE stmt FROM 'SELECT ? FROM t1'; EXECUTE stmt USING 1+2; {code} Note, these expression types should work as output parameters (in addition to user variables): - SP variables - Trigger NEW and OLD fields |
MariaDB allows to use only user variables in {{EXECUTE..USING}}:
{code:sql} EXECUTE stmt USING @a; {code} Under terms of this task, we'll allow passing expressions as parameters to Dynamic SQL: {code:sql} PREPARE stmt FROM 'SELECT ? FROM t1'; EXECUTE stmt USING 1+2; {code} Note, these expression types should work as output parameters (in addition to user variables): - SP variables - Trigger NEW and OLD fields Note, stored functions and subselects as parameters will not be supported under terms of this task. The following scripts will return errors: {code:sql} PREPARE stmt FROM 'SELECT ? FROM DUAL'; EXECUTE stmt USING (SELECT 1); {code} {code:sql} CREATE FUNCTION f1() RETURNS VARCHAR(10) RETURN 'test'; PREPARE stmt FROM 'SELECT ? FROM DUAL'; EXECUTE stmt USING f1(); {code} |
Description |
MariaDB allows to use only user variables in {{EXECUTE..USING}}:
{code:sql} EXECUTE stmt USING @a; {code} Under terms of this task, we'll allow passing expressions as parameters to Dynamic SQL: {code:sql} PREPARE stmt FROM 'SELECT ? FROM t1'; EXECUTE stmt USING 1+2; {code} Note, these expression types should work as output parameters (in addition to user variables): - SP variables - Trigger NEW and OLD fields Note, stored functions and subselects as parameters will not be supported under terms of this task. The following scripts will return errors: {code:sql} PREPARE stmt FROM 'SELECT ? FROM DUAL'; EXECUTE stmt USING (SELECT 1); {code} {code:sql} CREATE FUNCTION f1() RETURNS VARCHAR(10) RETURN 'test'; PREPARE stmt FROM 'SELECT ? FROM DUAL'; EXECUTE stmt USING f1(); {code} |
MariaDB allows to use only user variables in {{EXECUTE..USING}}:
{code:sql} EXECUTE stmt USING @a; {code} Under terms of this task, we'll allow passing expressions as parameters to Dynamic SQL: {code:sql} PREPARE stmt FROM 'SELECT ? FROM t1'; EXECUTE stmt USING 1+2; {code} Note, these expression types should work as output parameters (in addition to user variables): - SP variables - Trigger NEW and OLD fields Note, stored functions and subselects as parameters will not be supported under terms of this task. The following scripts will return errors: {code:sql} PREPARE stmt FROM 'SELECT ? FROM DUAL'; EXECUTE stmt USING (SELECT 1); {code} {code:sql} CREATE FUNCTION f1() RETURNS VARCHAR(10) RETURN 'test'; PREPARE stmt FROM 'SELECT ? FROM DUAL'; EXECUTE stmt USING f1(); {code} Support for stored functions and subselects as parameters (as well as for {{SET STATEMENT}} parameters) will be added under terms of a separate task. |
Description |
MariaDB allows to use only user variables in {{EXECUTE..USING}}:
{code:sql} EXECUTE stmt USING @a; {code} Under terms of this task, we'll allow passing expressions as parameters to Dynamic SQL: {code:sql} PREPARE stmt FROM 'SELECT ? FROM t1'; EXECUTE stmt USING 1+2; {code} Note, these expression types should work as output parameters (in addition to user variables): - SP variables - Trigger NEW and OLD fields Note, stored functions and subselects as parameters will not be supported under terms of this task. The following scripts will return errors: {code:sql} PREPARE stmt FROM 'SELECT ? FROM DUAL'; EXECUTE stmt USING (SELECT 1); {code} {code:sql} CREATE FUNCTION f1() RETURNS VARCHAR(10) RETURN 'test'; PREPARE stmt FROM 'SELECT ? FROM DUAL'; EXECUTE stmt USING f1(); {code} Support for stored functions and subselects as parameters (as well as for {{SET STATEMENT}} parameters) will be added under terms of a separate task. |
MariaDB allows to use only user variables in {{EXECUTE..USING}}:
{code:sql} EXECUTE stmt USING @a; {code} Under terms of this task, we'll allow passing expressions as parameters to Dynamic SQL: {code:sql} PREPARE stmt FROM 'SELECT ? FROM t1'; EXECUTE stmt USING 1+2; {code} Note, these expression types should work as output parameters (in addition to user variables): - SP variables - Trigger NEW and OLD fields Note, stored functions and subselects as parameters will not be supported under terms of this task. The following scripts will return errors: {code:sql} PREPARE stmt FROM 'SELECT ? FROM DUAL'; EXECUTE stmt USING (SELECT 1); {code} {code:sql} CREATE FUNCTION f1() RETURNS VARCHAR(10) RETURN 'test'; PREPARE stmt FROM 'SELECT ? FROM DUAL'; EXECUTE stmt USING f1(); {code} Support for stored functions and subselects as parameters (as well as in {{SET STATEMENT}} variable values) will be added under terms of a separate task. |
Description |
MariaDB allows to use only user variables in {{EXECUTE..USING}}:
{code:sql} EXECUTE stmt USING @a; {code} Under terms of this task, we'll allow passing expressions as parameters to Dynamic SQL: {code:sql} PREPARE stmt FROM 'SELECT ? FROM t1'; EXECUTE stmt USING 1+2; {code} Note, these expression types should work as output parameters (in addition to user variables): - SP variables - Trigger NEW and OLD fields Note, stored functions and subselects as parameters will not be supported under terms of this task. The following scripts will return errors: {code:sql} PREPARE stmt FROM 'SELECT ? FROM DUAL'; EXECUTE stmt USING (SELECT 1); {code} {code:sql} CREATE FUNCTION f1() RETURNS VARCHAR(10) RETURN 'test'; PREPARE stmt FROM 'SELECT ? FROM DUAL'; EXECUTE stmt USING f1(); {code} Support for stored functions and subselects as parameters (as well as in {{SET STATEMENT}} variable values) will be added under terms of a separate task. |
MariaDB allows to use only user variables in {{EXECUTE..USING}}:
{code:sql} EXECUTE stmt USING @a; {code} Under terms of this task, we'll allow passing expressions as parameters to Dynamic SQL: {code:sql} PREPARE stmt FROM 'SELECT ? FROM t1'; EXECUTE stmt USING 1+2; {code} Note, these expression types should work as output parameters (in addition to user variables): - SP variables - Trigger NEW and OLD fields Note, stored functions and subselects as parameters will not be supported under terms of this task. Using stored functions and subselects would require some additional changes in table locking, SP cache and transaction handling. Note, for the same reason, {{SET STATEMENT}} disallows stored functions and subselects as variable values. The following scripts will return errors: {code:sql} PREPARE stmt FROM 'SELECT ? FROM DUAL'; EXECUTE stmt USING (SELECT 1); {code} {code:sql} CREATE FUNCTION f1() RETURNS VARCHAR(10) RETURN 'test'; PREPARE stmt FROM 'SELECT ? FROM DUAL'; EXECUTE stmt USING f1(); {code} Support for stored functions and subselects as parameters (as well as in {{SET STATEMENT}} variable values) will be added under terms of a separate task. |
Description |
MariaDB allows to use only user variables in {{EXECUTE..USING}}:
{code:sql} EXECUTE stmt USING @a; {code} Under terms of this task, we'll allow passing expressions as parameters to Dynamic SQL: {code:sql} PREPARE stmt FROM 'SELECT ? FROM t1'; EXECUTE stmt USING 1+2; {code} Note, these expression types should work as output parameters (in addition to user variables): - SP variables - Trigger NEW and OLD fields Note, stored functions and subselects as parameters will not be supported under terms of this task. Using stored functions and subselects would require some additional changes in table locking, SP cache and transaction handling. Note, for the same reason, {{SET STATEMENT}} disallows stored functions and subselects as variable values. The following scripts will return errors: {code:sql} PREPARE stmt FROM 'SELECT ? FROM DUAL'; EXECUTE stmt USING (SELECT 1); {code} {code:sql} CREATE FUNCTION f1() RETURNS VARCHAR(10) RETURN 'test'; PREPARE stmt FROM 'SELECT ? FROM DUAL'; EXECUTE stmt USING f1(); {code} Support for stored functions and subselects as parameters (as well as in {{SET STATEMENT}} variable values) will be added under terms of a separate task. |
MariaDB allows to use only user variables in {{EXECUTE..USING}}:
{code:sql} EXECUTE stmt USING @a; {code} Under terms of this task, we'll allow passing expressions as parameters to Dynamic SQL: {code:sql} PREPARE stmt FROM 'SELECT ? FROM t1'; EXECUTE stmt USING 1+2; {code} Note, these expression types should work as output parameters (in addition to user variables): - SP variables - Trigger NEW and OLD fields Note, stored functions and subselects as parameters will not be supported under terms of this task. Using stored functions and subselects would require some additional changes in table locking, SP cache and transaction handling (for the same reason, {{SET STATEMENT}} disallows stored functions and subselects as variable values). So the following scripts will return errors: {code:sql} PREPARE stmt FROM 'SELECT ? FROM DUAL'; EXECUTE stmt USING (SELECT 1); {code} {code:sql} CREATE FUNCTION f1() RETURNS VARCHAR(10) RETURN 'test'; PREPARE stmt FROM 'SELECT ? FROM DUAL'; EXECUTE stmt USING f1(); {code} Support for stored functions and subselects as parameters (as well as in {{SET STATEMENT}} variable values) will be added under terms of a separate task. |
Fix Version/s | 10.2.3 [ 22115 ] |
Labels | Compatibility | Compatibility NRE-307517 |
Link |
This issue relates to |
Labels | Compatibility NRE-307517 | Approved Compatibility NRE-307517 |
NRE Projects | NRE-307517 |
Labels | Approved Compatibility NRE-307517 | Approved Compatibility |
NRE Approved | Yes [ 10304 ] |
Labels | Approved Compatibility | Compatibility |
Link | This issue relates to MDEV-11781 [ MDEV-11781 ] |
Component/s | Parser [ 10201 ] |
Component/s | Prepared Statements [ 10804 ] | |
Component/s | OTHER [ 10125 ] |
Link | This issue relates to MDEV-14270 [ MDEV-14270 ] |
Link | This issue relates to MDEV-14271 [ MDEV-14271 ] |
Workflow | MariaDB v3 [ 76864 ] | MariaDB v4 [ 150846 ] |