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
defa3d48
Commit
defa3d48
authored
Oct 25, 2003
by
bell@sanja.is.com.ua
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixed unlinking SELECT methods
parent
4da4fdbf
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
17 additions
and
0 deletions
+17
-0
sql/sql_lex.cc
sql/sql_lex.cc
+17
-0
No files found.
sql/sql_lex.cc
View file @
defa3d48
...
@@ -1112,8 +1112,11 @@ void st_select_lex_unit::exclude_level()
...
@@ -1112,8 +1112,11 @@ void st_select_lex_unit::exclude_level()
SELECT_LEX_UNIT
*
units
=
0
,
**
units_last
=
&
units
;
SELECT_LEX_UNIT
*
units
=
0
,
**
units_last
=
&
units
;
for
(
SELECT_LEX
*
sl
=
first_select
();
sl
;
sl
=
sl
->
next_select
())
for
(
SELECT_LEX
*
sl
=
first_select
();
sl
;
sl
=
sl
->
next_select
())
{
{
// unlink current level from global SELECTs list
if
(
sl
->
link_prev
&&
(
*
sl
->
link_prev
=
sl
->
link_next
))
if
(
sl
->
link_prev
&&
(
*
sl
->
link_prev
=
sl
->
link_next
))
sl
->
link_next
->
link_prev
=
sl
->
link_prev
;
sl
->
link_next
->
link_prev
=
sl
->
link_prev
;
// bring up underlay levels
SELECT_LEX_UNIT
**
last
=
0
;
SELECT_LEX_UNIT
**
last
=
0
;
for
(
SELECT_LEX_UNIT
*
u
=
sl
->
first_inner_unit
();
u
;
u
=
u
->
next_unit
())
for
(
SELECT_LEX_UNIT
*
u
=
sl
->
first_inner_unit
();
u
;
u
=
u
->
next_unit
())
{
{
...
@@ -1128,11 +1131,20 @@ void st_select_lex_unit::exclude_level()
...
@@ -1128,11 +1131,20 @@ void st_select_lex_unit::exclude_level()
}
}
if
(
units
)
if
(
units
)
{
{
// include brought up levels in place of current
(
*
prev
)
=
units
;
(
*
prev
)
=
units
;
(
*
units_last
)
=
(
SELECT_LEX_UNIT
*
)
next
;
(
*
units_last
)
=
(
SELECT_LEX_UNIT
*
)
next
;
if
(
next
)
next
->
prev
=
(
SELECT_LEX_NODE
**
)
units_last
;
units
->
prev
=
prev
;
}
}
else
else
{
// exclude currect unit from list of nodes
(
*
prev
)
=
next
;
(
*
prev
)
=
next
;
if
(
next
)
next
->
prev
=
prev
;
}
}
}
...
@@ -1147,15 +1159,20 @@ void st_select_lex_unit::exclude_tree()
...
@@ -1147,15 +1159,20 @@ void st_select_lex_unit::exclude_tree()
SELECT_LEX_UNIT
*
units
=
0
,
**
units_last
=
&
units
;
SELECT_LEX_UNIT
*
units
=
0
,
**
units_last
=
&
units
;
for
(
SELECT_LEX
*
sl
=
first_select
();
sl
;
sl
=
sl
->
next_select
())
for
(
SELECT_LEX
*
sl
=
first_select
();
sl
;
sl
=
sl
->
next_select
())
{
{
// unlink current level from global SELECTs list
if
(
sl
->
link_prev
&&
(
*
sl
->
link_prev
=
sl
->
link_next
))
if
(
sl
->
link_prev
&&
(
*
sl
->
link_prev
=
sl
->
link_next
))
sl
->
link_next
->
link_prev
=
sl
->
link_prev
;
sl
->
link_next
->
link_prev
=
sl
->
link_prev
;
// unlink underlay levels
for
(
SELECT_LEX_UNIT
*
u
=
sl
->
first_inner_unit
();
u
;
u
=
u
->
next_unit
())
for
(
SELECT_LEX_UNIT
*
u
=
sl
->
first_inner_unit
();
u
;
u
=
u
->
next_unit
())
{
{
u
->
exclude_level
();
u
->
exclude_level
();
}
}
}
}
// exclude currect unit from list of nodes
(
*
prev
)
=
next
;
(
*
prev
)
=
next
;
if
(
next
)
next
->
prev
=
prev
;
}
}
...
...
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