Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
99c0743b
Commit
99c0743b
authored
Oct 01, 2003
by
monty@mishka.mysql.fi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Made SELECT INTO variable-list re-entrant, which fixes bug in stored procedures (#822)
parent
70da491d
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
8 additions
and
9 deletions
+8
-9
sql/sql_class.cc
sql/sql_class.cc
+8
-9
No files found.
sql/sql_class.cc
View file @
99c0743b
...
@@ -1076,28 +1076,26 @@ int select_dumpvar::prepare(List<Item> &list, SELECT_LEX_UNIT *u)
...
@@ -1076,28 +1076,26 @@ int select_dumpvar::prepare(List<Item> &list, SELECT_LEX_UNIT *u)
List_iterator_fast
<
Item
>
li
(
list
);
List_iterator_fast
<
Item
>
li
(
list
);
List_iterator_fast
<
my_var
>
gl
(
var_list
);
List_iterator_fast
<
my_var
>
gl
(
var_list
);
Item
*
item
;
Item
*
item
;
my_var
*
mv
;
LEX_STRING
*
ls
;
local_vars
.
empty
();
// Clear list if SP
unit
=
u
;
row_count
=
0
;
row_count
=
0
;
if
(
var_list
.
elements
!=
list
.
elements
)
if
(
var_list
.
elements
!=
list
.
elements
)
{
{
my_error
(
ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT
,
MYF
(
0
));
my_error
(
ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT
,
MYF
(
0
));
return
1
;
return
1
;
}
}
unit
=
u
;
while
((
item
=
li
++
))
while
((
item
=
li
++
))
{
{
mv
=
gl
++
;
my_var
*
mv
=
gl
++
;
ls
=
&
mv
->
s
;
if
(
mv
->
local
)
if
(
mv
->
local
)
{
(
void
)
local_vars
.
push_back
(
new
Item_splocal
(
mv
->
offset
));
(
void
)
local_vars
.
push_back
(
new
Item_splocal
(
mv
->
offset
));
}
else
else
{
{
Item_func_set_user_var
*
xx
=
new
Item_func_set_user_var
(
*
ls
,
item
);
Item_func_set_user_var
*
xx
=
new
Item_func_set_user_var
(
mv
->
s
,
item
);
xx
->
fix_fields
(
thd
,(
TABLE_LIST
*
)
thd
->
lex
->
select_lex
.
table_list
.
first
,
&
item
);
xx
->
fix_fields
(
thd
,
(
TABLE_LIST
*
)
thd
->
lex
->
select_lex
.
table_list
.
first
,
&
item
);
xx
->
fix_length_and_dec
();
xx
->
fix_length_and_dec
();
vars
.
push_back
(
xx
);
vars
.
push_back
(
xx
);
}
}
...
@@ -1105,6 +1103,7 @@ int select_dumpvar::prepare(List<Item> &list, SELECT_LEX_UNIT *u)
...
@@ -1105,6 +1103,7 @@ int select_dumpvar::prepare(List<Item> &list, SELECT_LEX_UNIT *u)
return
0
;
return
0
;
}
}
bool
select_dumpvar
::
send_data
(
List
<
Item
>
&
items
)
bool
select_dumpvar
::
send_data
(
List
<
Item
>
&
items
)
{
{
List_iterator_fast
<
Item_func_set_user_var
>
li
(
vars
);
List_iterator_fast
<
Item_func_set_user_var
>
li
(
vars
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment