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
5469c014
Commit
5469c014
authored
Jan 26, 2003
by
bell@sanja.is.com.ua
Browse files
Options
Browse Files
Download
Plain Diff
Merge sanja.is.com.ua:/home/bell/mysql/work-leak-4.1
into sanja.is.com.ua:/home/bell/mysql/work-select-4.1
parents
760e22f0
c80f766e
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
24 additions
and
17 deletions
+24
-17
sql/item.cc
sql/item.cc
+1
-1
sql/item.h
sql/item.h
+10
-4
sql/item_cmpfunc.cc
sql/item_cmpfunc.cc
+8
-0
sql/sql_select.cc
sql/sql_select.cc
+5
-12
No files found.
sql/item.cc
View file @
5469c014
...
...
@@ -291,7 +291,7 @@ table_map Item_field::used_tables() const
{
if
(
field
->
table
->
const_table
)
return
0
;
// const item
return
field
->
table
->
map
;
return
(
depended_from
?
RAND_TABLE_BIT
:
field
->
table
->
map
)
;
}
Item
*
Item_field
::
get_tmp_table_item
()
...
...
sql/item.h
View file @
5469c014
...
...
@@ -699,7 +699,12 @@ class Item_field_buff :public Item_buff
class
Item_cache
:
public
Item
{
table_map
used_table_map
;
public:
Item_cache
()
:
used_table_map
(
0
)
{
fixed
=
1
;
null_value
=
1
;}
void
set_used_tables
(
table_map
map
)
{
used_table_map
=
map
;
}
virtual
bool
allocate
(
uint
i
)
{
return
0
;
};
virtual
bool
setup
(
Item
*
)
{
return
0
;
};
virtual
void
store
(
Item
*
)
=
0
;
...
...
@@ -710,13 +715,14 @@ class Item_cache: public Item
}
enum
Type
type
()
const
{
return
CACHE_ITEM
;
}
static
Item_cache
*
get_cache
(
Item_result
type
);
table_map
used_tables
()
const
{
return
used_table_map
;
}
};
class
Item_cache_int
:
public
Item_cache
{
longlong
value
;
public:
Item_cache_int
()
{
fixed
=
1
;
null_value
=
1
;
}
Item_cache_int
()
:
Item_cache
()
{
}
void
store
(
Item
*
item
)
{
...
...
@@ -733,7 +739,7 @@ class Item_cache_real: public Item_cache
{
double
value
;
public:
Item_cache_real
()
{
fixed
=
1
;
null_value
=
1
;
}
Item_cache_real
()
:
Item_cache
()
{
}
void
store
(
Item
*
item
)
{
...
...
@@ -755,7 +761,7 @@ class Item_cache_str: public Item_cache
char
buffer
[
80
];
String
*
value
;
public:
Item_cache_str
()
{
fixed
=
1
;
null_value
=
1
;
}
Item_cache_str
()
:
Item_cache
()
{
}
void
store
(
Item
*
item
);
double
val
();
...
...
@@ -770,7 +776,7 @@ class Item_cache_row: public Item_cache
Item_cache
**
values
;
uint
item_count
;
public:
Item_cache_row
()
:
values
(
0
),
item_count
(
2
)
{
fixed
=
1
;
null_value
=
1
;
}
Item_cache_row
()
:
Item_cache
(),
values
(
0
),
item_count
(
2
)
{
}
/*
'allocate' used only in row transformer, to preallocate space for row
...
...
sql/item_cmpfunc.cc
View file @
5469c014
...
...
@@ -289,6 +289,14 @@ bool Item_in_optimizer::fix_fields(THD *thd, struct st_table_list *tables,
if
(
!
cache
&&
!
(
cache
=
Item_cache
::
get_cache
(
args
[
0
]
->
result_type
())))
return
1
;
cache
->
setup
(
args
[
0
]);
if
(
cache
->
cols
()
==
1
)
cache
->
set_used_tables
(
RAND_TABLE_BIT
);
else
{
uint
n
=
cache
->
cols
();
for
(
uint
i
=
0
;
i
<
n
;
i
++
)
((
Item_cache
*
)
cache
->
el
(
i
))
->
set_used_tables
(
RAND_TABLE_BIT
);
}
if
(
args
[
1
]
->
fix_fields
(
thd
,
tables
,
args
))
return
1
;
Item_in_subselect
*
sub
=
(
Item_in_subselect
*
)
args
[
1
];
...
...
sql/sql_select.cc
View file @
5469c014
...
...
@@ -484,16 +484,6 @@ JOIN::optimize()
thd
->
fatal_error
)
DBUG_RETURN
(
1
);
if
(
select_lex
->
dependent
)
{
/*
Just remove all const-table optimization in case of depended query
TODO: optimize
*/
const_table_map
=
0
;
const_tables
=
0
;
found_const_table_map
=
0
;
}
thd
->
proc_info
=
"preparing"
;
if
(
result
->
initialize_tables
(
this
))
{
...
...
@@ -4895,8 +4885,11 @@ do_select(JOIN *join,List<Item> *fields,TABLE *table,Procedure *procedure)
join
->
send_records
=
0
;
if
(
join
->
tables
==
join
->
const_tables
)
{
if
(
!
(
error
=
(
*
end_select
)(
join
,
join_tab
,
0
))
||
error
==
-
3
)
error
=
(
*
end_select
)(
join
,
join_tab
,
1
);
if
(
!
join
->
select_lex
->
dependent
||
((
!
join
->
conds
||
join
->
conds
->
val_int
())
&&
(
!
join
->
having
||
join
->
having
->
val_int
())))
if
(
!
(
error
=
(
*
end_select
)(
join
,
join_tab
,
0
))
||
error
==
-
3
)
error
=
(
*
end_select
)(
join
,
join_tab
,
1
);
}
else
{
...
...
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