mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-5317 out parameters in PREPARE "SELECT ... INTO"
originally based on the patch by Antony T Curtis
This commit is contained in:
@ -256,9 +256,14 @@ execute stmt1 using @my_key ;
|
|||||||
execute full_info ;
|
execute full_info ;
|
||||||
--disable_metadata
|
--disable_metadata
|
||||||
|
|
||||||
# the next statement must fail
|
# the next statement does not fail anymore
|
||||||
--error 1064
|
|
||||||
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;
|
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;
|
||||||
|
execute stmt1 using @result;
|
||||||
|
--enable_metadata
|
||||||
|
execute full_info ;
|
||||||
|
--disable_metadata
|
||||||
|
select @result;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -2265,7 +2265,46 @@ def @arg32 250 16777215 0 Y 0 31 8
|
|||||||
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
|
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
|
||||||
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||||
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;
|
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '? from t9 where c1= 1' at line 1
|
execute stmt1 using @result;
|
||||||
|
execute full_info ;
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def @arg01 8 20 1 Y 32896 0 63
|
||||||
|
def @arg02 8 20 0 Y 32896 0 63
|
||||||
|
def @arg03 8 20 0 Y 32896 0 63
|
||||||
|
def @arg04 8 20 0 Y 32896 0 63
|
||||||
|
def @arg05 8 20 0 Y 32896 0 63
|
||||||
|
def @arg06 8 20 0 Y 32896 0 63
|
||||||
|
def @arg07 5 23 0 Y 32896 31 63
|
||||||
|
def @arg08 5 23 0 Y 32896 31 63
|
||||||
|
def @arg09 5 23 0 Y 32896 31 63
|
||||||
|
def @arg10 5 23 0 Y 32896 31 63
|
||||||
|
def @arg11 246 83 0 Y 32896 30 63
|
||||||
|
def @arg12 246 83 0 Y 32896 30 63
|
||||||
|
def @arg13 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg14 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg15 250 16777215 19 Y 0 31 8
|
||||||
|
def @arg16 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg17 8 20 0 Y 32928 0 63
|
||||||
|
def @arg18 8 20 0 Y 32896 0 63
|
||||||
|
def @arg19 8 20 0 Y 32896 0 63
|
||||||
|
def @arg20 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg21 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg22 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg23 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg24 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg25 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg26 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg27 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg28 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg29 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg30 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg31 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg32 250 16777215 0 Y 0 31 8
|
||||||
|
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
|
||||||
|
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||||
|
select @result;
|
||||||
|
@result
|
||||||
|
1
|
||||||
test_sequence
|
test_sequence
|
||||||
-- insert into numeric columns --
|
-- insert into numeric columns --
|
||||||
insert into t9
|
insert into t9
|
||||||
|
@ -2248,7 +2248,46 @@ def @arg32 250 16777215 0 Y 0 31 8
|
|||||||
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
|
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
|
||||||
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||||
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;
|
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '? from t9 where c1= 1' at line 1
|
execute stmt1 using @result;
|
||||||
|
execute full_info ;
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def @arg01 8 20 1 Y 32896 0 63
|
||||||
|
def @arg02 8 20 0 Y 32896 0 63
|
||||||
|
def @arg03 8 20 0 Y 32896 0 63
|
||||||
|
def @arg04 8 20 0 Y 32896 0 63
|
||||||
|
def @arg05 8 20 0 Y 32896 0 63
|
||||||
|
def @arg06 8 20 0 Y 32896 0 63
|
||||||
|
def @arg07 5 23 0 Y 32896 31 63
|
||||||
|
def @arg08 5 23 0 Y 32896 31 63
|
||||||
|
def @arg09 5 23 0 Y 32896 31 63
|
||||||
|
def @arg10 5 23 0 Y 32896 31 63
|
||||||
|
def @arg11 246 83 0 Y 32896 30 63
|
||||||
|
def @arg12 246 83 0 Y 32896 30 63
|
||||||
|
def @arg13 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg14 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg15 250 16777215 19 Y 0 31 8
|
||||||
|
def @arg16 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg17 8 20 0 Y 32928 0 63
|
||||||
|
def @arg18 8 20 0 Y 32896 0 63
|
||||||
|
def @arg19 8 20 0 Y 32896 0 63
|
||||||
|
def @arg20 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg21 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg22 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg23 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg24 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg25 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg26 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg27 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg28 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg29 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg30 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg31 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg32 250 16777215 0 Y 0 31 8
|
||||||
|
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
|
||||||
|
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||||
|
select @result;
|
||||||
|
@result
|
||||||
|
1
|
||||||
test_sequence
|
test_sequence
|
||||||
-- insert into numeric columns --
|
-- insert into numeric columns --
|
||||||
insert into t9
|
insert into t9
|
||||||
|
@ -2249,7 +2249,46 @@ def @arg32 250 16777215 0 Y 0 31 8
|
|||||||
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
|
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
|
||||||
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||||
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;
|
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '? from t9 where c1= 1' at line 1
|
execute stmt1 using @result;
|
||||||
|
execute full_info ;
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def @arg01 8 20 1 Y 32896 0 63
|
||||||
|
def @arg02 8 20 0 Y 32896 0 63
|
||||||
|
def @arg03 8 20 0 Y 32896 0 63
|
||||||
|
def @arg04 8 20 0 Y 32896 0 63
|
||||||
|
def @arg05 8 20 0 Y 32896 0 63
|
||||||
|
def @arg06 8 20 0 Y 32896 0 63
|
||||||
|
def @arg07 5 23 0 Y 32896 31 63
|
||||||
|
def @arg08 5 23 0 Y 32896 31 63
|
||||||
|
def @arg09 5 23 0 Y 32896 31 63
|
||||||
|
def @arg10 5 23 0 Y 32896 31 63
|
||||||
|
def @arg11 246 83 0 Y 32896 30 63
|
||||||
|
def @arg12 246 83 0 Y 32896 30 63
|
||||||
|
def @arg13 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg14 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg15 250 16777215 19 Y 0 31 8
|
||||||
|
def @arg16 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg17 8 20 0 Y 32928 0 63
|
||||||
|
def @arg18 8 20 0 Y 32896 0 63
|
||||||
|
def @arg19 8 20 0 Y 32896 0 63
|
||||||
|
def @arg20 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg21 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg22 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg23 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg24 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg25 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg26 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg27 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg28 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg29 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg30 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg31 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg32 250 16777215 0 Y 0 31 8
|
||||||
|
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
|
||||||
|
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||||
|
select @result;
|
||||||
|
@result
|
||||||
|
1
|
||||||
test_sequence
|
test_sequence
|
||||||
-- insert into numeric columns --
|
-- insert into numeric columns --
|
||||||
insert into t9
|
insert into t9
|
||||||
|
@ -2185,7 +2185,46 @@ def @arg32 250 16777215 0 Y 0 31 8
|
|||||||
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
|
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
|
||||||
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||||
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;
|
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '? from t9 where c1= 1' at line 1
|
execute stmt1 using @result;
|
||||||
|
execute full_info ;
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def @arg01 8 20 1 Y 32896 0 63
|
||||||
|
def @arg02 8 20 0 Y 32896 0 63
|
||||||
|
def @arg03 8 20 0 Y 32896 0 63
|
||||||
|
def @arg04 8 20 0 Y 32896 0 63
|
||||||
|
def @arg05 8 20 0 Y 32896 0 63
|
||||||
|
def @arg06 8 20 0 Y 32896 0 63
|
||||||
|
def @arg07 5 23 0 Y 32896 31 63
|
||||||
|
def @arg08 5 23 0 Y 32896 31 63
|
||||||
|
def @arg09 5 23 0 Y 32896 31 63
|
||||||
|
def @arg10 5 23 0 Y 32896 31 63
|
||||||
|
def @arg11 246 83 0 Y 32896 30 63
|
||||||
|
def @arg12 246 83 0 Y 32896 30 63
|
||||||
|
def @arg13 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg14 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg15 250 16777215 19 Y 0 31 8
|
||||||
|
def @arg16 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg17 8 20 0 Y 32928 0 63
|
||||||
|
def @arg18 8 20 0 Y 32896 0 63
|
||||||
|
def @arg19 8 20 0 Y 32896 0 63
|
||||||
|
def @arg20 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg21 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg22 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg23 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg24 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg25 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg26 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg27 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg28 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg29 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg30 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg31 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg32 250 16777215 0 Y 0 31 8
|
||||||
|
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
|
||||||
|
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||||
|
select @result;
|
||||||
|
@result
|
||||||
|
1
|
||||||
test_sequence
|
test_sequence
|
||||||
-- insert into numeric columns --
|
-- insert into numeric columns --
|
||||||
insert into t9
|
insert into t9
|
||||||
@ -5539,7 +5578,46 @@ def @arg32 250 16777215 0 Y 0 31 8
|
|||||||
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
|
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
|
||||||
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||||
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;
|
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '? from t9 where c1= 1' at line 1
|
execute stmt1 using @result;
|
||||||
|
execute full_info ;
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def @arg01 8 20 1 Y 32896 0 63
|
||||||
|
def @arg02 8 20 0 Y 32896 0 63
|
||||||
|
def @arg03 8 20 0 Y 32896 0 63
|
||||||
|
def @arg04 8 20 0 Y 32896 0 63
|
||||||
|
def @arg05 8 20 0 Y 32896 0 63
|
||||||
|
def @arg06 8 20 0 Y 32896 0 63
|
||||||
|
def @arg07 5 23 0 Y 32896 31 63
|
||||||
|
def @arg08 5 23 0 Y 32896 31 63
|
||||||
|
def @arg09 5 23 0 Y 32896 31 63
|
||||||
|
def @arg10 5 23 0 Y 32896 31 63
|
||||||
|
def @arg11 246 83 0 Y 32896 30 63
|
||||||
|
def @arg12 246 83 0 Y 32896 30 63
|
||||||
|
def @arg13 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg14 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg15 250 16777215 19 Y 0 31 8
|
||||||
|
def @arg16 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg17 8 20 0 Y 32928 0 63
|
||||||
|
def @arg18 8 20 0 Y 32896 0 63
|
||||||
|
def @arg19 8 20 0 Y 32896 0 63
|
||||||
|
def @arg20 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg21 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg22 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg23 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg24 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg25 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg26 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg27 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg28 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg29 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg30 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg31 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg32 250 16777215 0 Y 0 31 8
|
||||||
|
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
|
||||||
|
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||||
|
select @result;
|
||||||
|
@result
|
||||||
|
1
|
||||||
test_sequence
|
test_sequence
|
||||||
-- insert into numeric columns --
|
-- insert into numeric columns --
|
||||||
insert into t9
|
insert into t9
|
||||||
|
@ -2265,7 +2265,46 @@ def @arg32 250 16777215 0 Y 0 31 8
|
|||||||
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
|
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
|
||||||
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||||
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;
|
prepare stmt1 from "select c1 into ? from t9 where c1= 1" ;
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '? from t9 where c1= 1' at line 1
|
execute stmt1 using @result;
|
||||||
|
execute full_info ;
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def @arg01 8 20 1 Y 32896 0 63
|
||||||
|
def @arg02 8 20 0 Y 32896 0 63
|
||||||
|
def @arg03 8 20 0 Y 32896 0 63
|
||||||
|
def @arg04 8 20 0 Y 32896 0 63
|
||||||
|
def @arg05 8 20 0 Y 32896 0 63
|
||||||
|
def @arg06 8 20 0 Y 32896 0 63
|
||||||
|
def @arg07 5 23 0 Y 32896 31 63
|
||||||
|
def @arg08 5 23 0 Y 32896 31 63
|
||||||
|
def @arg09 5 23 0 Y 32896 31 63
|
||||||
|
def @arg10 5 23 0 Y 32896 31 63
|
||||||
|
def @arg11 246 83 0 Y 32896 30 63
|
||||||
|
def @arg12 246 83 0 Y 32896 30 63
|
||||||
|
def @arg13 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg14 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg15 250 16777215 19 Y 0 31 8
|
||||||
|
def @arg16 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg17 8 20 0 Y 32928 0 63
|
||||||
|
def @arg18 8 20 0 Y 32896 0 63
|
||||||
|
def @arg19 8 20 0 Y 32896 0 63
|
||||||
|
def @arg20 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg21 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg22 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg23 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg24 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg25 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg26 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg27 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg28 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg29 250 16777215 0 Y 128 31 63
|
||||||
|
def @arg30 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg31 250 16777215 0 Y 0 31 8
|
||||||
|
def @arg32 250 16777215 0 Y 0 31 8
|
||||||
|
@arg01 @arg02 @arg03 @arg04 @arg05 @arg06 @arg07 @arg08 @arg09 @arg10 @arg11 @arg12 @arg13 @arg14 @arg15 @arg16 @arg17 @arg18 @arg19 @arg20 @arg21 @arg22 @arg23 @arg24 @arg25 @arg26 @arg27 @arg28 @arg29 @arg30 @arg31 @arg32
|
||||||
|
0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1991-01-01 01:01:01 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
|
||||||
|
select @result;
|
||||||
|
@result
|
||||||
|
1
|
||||||
test_sequence
|
test_sequence
|
||||||
-- insert into numeric columns --
|
-- insert into numeric columns --
|
||||||
insert into t9
|
insert into t9
|
||||||
|
26
mysql-test/suite/rpl/r/prepare_select_into.result
Normal file
26
mysql-test/suite/rpl/r/prepare_select_into.result
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
include/master-slave.inc
|
||||||
|
[connection master]
|
||||||
|
create table t1 (a int, b int);
|
||||||
|
create table t2 (c int);
|
||||||
|
insert t1 values (1, 2), (3, 4);
|
||||||
|
create function fn1(x int) returns int deterministic
|
||||||
|
begin
|
||||||
|
insert t2 values (x);
|
||||||
|
return x;
|
||||||
|
end|
|
||||||
|
prepare stmt1 from "select fn1(a) into ? from t1 where b= 2";
|
||||||
|
execute stmt1 using @result;
|
||||||
|
select * from t2;
|
||||||
|
c
|
||||||
|
1
|
||||||
|
1
|
||||||
|
select @result;
|
||||||
|
@result
|
||||||
|
1
|
||||||
|
select * from t2;
|
||||||
|
c
|
||||||
|
1
|
||||||
|
1
|
||||||
|
drop table t1, t2;
|
||||||
|
drop function fn1;
|
||||||
|
include/rpl_end.inc
|
27
mysql-test/suite/rpl/t/prepare_select_into.test
Normal file
27
mysql-test/suite/rpl/t/prepare_select_into.test
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
source include/master-slave.inc;
|
||||||
|
|
||||||
|
create table t1 (a int, b int);
|
||||||
|
create table t2 (c int);
|
||||||
|
insert t1 values (1, 2), (3, 4);
|
||||||
|
|
||||||
|
delimiter |;
|
||||||
|
create function fn1(x int) returns int deterministic
|
||||||
|
begin
|
||||||
|
insert t2 values (x);
|
||||||
|
return x;
|
||||||
|
end|
|
||||||
|
delimiter ;|
|
||||||
|
|
||||||
|
prepare stmt1 from "select fn1(a) into ? from t1 where b= 2";
|
||||||
|
execute stmt1 using @result;
|
||||||
|
select * from t2;
|
||||||
|
select @result;
|
||||||
|
sync_slave_with_master;
|
||||||
|
select * from t2;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
drop table t1, t2;
|
||||||
|
drop function fn1;
|
||||||
|
|
||||||
|
source include/rpl_end.inc;
|
||||||
|
|
@ -3230,7 +3230,7 @@ default_set_param_func(Item_param *param,
|
|||||||
|
|
||||||
|
|
||||||
Item_param::Item_param(uint pos_in_query_arg) :
|
Item_param::Item_param(uint pos_in_query_arg) :
|
||||||
state(NO_VALUE),
|
state(NO_VALUE), inout(IN_PARAM),
|
||||||
item_result_type(STRING_RESULT),
|
item_result_type(STRING_RESULT),
|
||||||
/* Don't pretend to be a literal unless value for this item is set. */
|
/* Don't pretend to be a literal unless value for this item is set. */
|
||||||
item_type(PARAM_ITEM),
|
item_type(PARAM_ITEM),
|
||||||
|
@ -2242,6 +2242,7 @@ public:
|
|||||||
STRING_VALUE, TIME_VALUE, LONG_DATA_VALUE,
|
STRING_VALUE, TIME_VALUE, LONG_DATA_VALUE,
|
||||||
DECIMAL_VALUE
|
DECIMAL_VALUE
|
||||||
} state;
|
} state;
|
||||||
|
enum { IN_PARAM, OUT_PARAM } inout;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
A buffer for string and long data values. Historically all allocated
|
A buffer for string and long data values. Historically all allocated
|
||||||
|
@ -3743,6 +3743,11 @@ bool my_var_sp::set(THD *thd, Item *item)
|
|||||||
return thd->spcont->set_variable(thd, offset, &item);
|
return thd->spcont->set_variable(thd, offset, &item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool my_var_param::set(THD *thd, Item *item)
|
||||||
|
{
|
||||||
|
return param->set_value(thd, 0, &item);
|
||||||
|
}
|
||||||
|
|
||||||
int select_dumpvar::send_data(List<Item> &items)
|
int select_dumpvar::send_data(List<Item> &items)
|
||||||
{
|
{
|
||||||
List_iterator_fast<my_var> var_li(var_list);
|
List_iterator_fast<my_var> var_li(var_list);
|
||||||
|
@ -4781,6 +4781,17 @@ public:
|
|||||||
virtual bool set(THD *thd, Item *val) = 0;
|
virtual bool set(THD *thd, Item *val) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class my_var_param: public my_var {
|
||||||
|
public:
|
||||||
|
Settable_routine_parameter *param;
|
||||||
|
my_var_param(Item_param *p)
|
||||||
|
: my_var(null_lex_str, PARAM_VAR),
|
||||||
|
param(p->get_settable_routine_parameter())
|
||||||
|
{ p->inout= Item_param::OUT_PARAM; }
|
||||||
|
~my_var_param() { }
|
||||||
|
bool set(THD *thd, Item *val);
|
||||||
|
};
|
||||||
|
|
||||||
class my_var_sp: public my_var {
|
class my_var_sp: public my_var {
|
||||||
public:
|
public:
|
||||||
uint offset;
|
uint offset;
|
||||||
|
@ -1186,6 +1186,30 @@ static bool insert_params_from_vars(Prepared_statement *stmt,
|
|||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool update_vars_from_params(Prepared_statement *stmt,
|
||||||
|
List<LEX_STRING>& varnames)
|
||||||
|
{
|
||||||
|
Item_param **begin= stmt->param_array;
|
||||||
|
Item_param **end= begin + stmt->param_count;
|
||||||
|
LEX_STRING *varname;
|
||||||
|
List_iterator<LEX_STRING> var_it(varnames);
|
||||||
|
DBUG_ENTER("update_vars_from_params");
|
||||||
|
|
||||||
|
for (Item_param **it= begin; it < end; ++it)
|
||||||
|
{
|
||||||
|
Item_param *param= *it;
|
||||||
|
varname= var_it++;
|
||||||
|
if (param->inout != Item_param::OUT_PARAM)
|
||||||
|
continue;
|
||||||
|
Item_func_set_user_var *suv= new Item_func_set_user_var(*varname, param);
|
||||||
|
if (suv->fix_fields(stmt->thd, 0))
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
suv->save_item_result(param);
|
||||||
|
if (suv->update())
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
DBUG_RETURN(0);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Do the same as insert_params_from_vars but also construct query text for
|
Do the same as insert_params_from_vars but also construct query text for
|
||||||
@ -3681,6 +3705,11 @@ reexecute:
|
|||||||
if (! error) /* Success */
|
if (! error) /* Success */
|
||||||
goto reexecute;
|
goto reexecute;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Assign values for OUT-parameters (SELECT INTO) in the SQL PS */
|
||||||
|
if (!packet)
|
||||||
|
update_vars_from_params(this, thd->lex->prepared_stmt_params);
|
||||||
|
|
||||||
reset_stmt_params(this);
|
reset_stmt_params(this);
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
|
@ -11527,6 +11527,10 @@ select_outvar:
|
|||||||
{
|
{
|
||||||
$$ = Lex->result ? new my_var_user($2) : NULL;
|
$$ = Lex->result ? new my_var_user($2) : NULL;
|
||||||
}
|
}
|
||||||
|
| param_marker
|
||||||
|
{
|
||||||
|
$$ = Lex->result ? new my_var_param($1) : NULL;
|
||||||
|
}
|
||||||
| ident_or_text
|
| ident_or_text
|
||||||
{
|
{
|
||||||
sp_variable *t;
|
sp_variable *t;
|
||||||
|
Reference in New Issue
Block a user