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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
dff10afb
Commit
dff10afb
authored
Jan 31, 2013
by
Gleb Shchepa
Browse files
Options
Browse Files
Download
Plain Diff
Bug #11827369: ASSERTION FAILED: !THD->LEX->CONTEXT_ANALYSIS_ONLY
Manual up-merge from 5.1 to 5.5.
parents
4dcd0304
7ebfe30b
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
30 additions
and
10 deletions
+30
-10
sql/item.cc
sql/item.cc
+2
-2
sql/item.h
sql/item.h
+17
-1
sql/item_cmpfunc.cc
sql/item_cmpfunc.cc
+8
-4
sql/item_func.cc
sql/item_func.cc
+2
-2
sql/sql_select.cc
sql/sql_select.cc
+1
-1
No files found.
sql/item.cc
View file @
dff10afb
/*
Copyright (c) 2000, 201
2
, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2000, 201
3
, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
...
...
@@ -472,7 +472,7 @@ Item::Item(THD *thd, Item *item):
fixed
(
item
->
fixed
),
is_autogenerated_name
(
item
->
is_autogenerated_name
),
collation
(
item
->
collation
),
with_subselect
(
item
->
with_subselect
),
with_subselect
(
item
->
has_subquery
()
),
cmp_context
(
item
->
cmp_context
)
{
next
=
thd
->
free_list
;
// Put in free list
...
...
sql/item.h
View file @
dff10afb
#ifndef ITEM_INCLUDED
#define ITEM_INCLUDED
/* Copyright (c) 2000, 201
1
, Oracle and/or its affiliates. All rights reserved.
/* Copyright (c) 2000, 201
3
, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
...
...
@@ -1249,6 +1249,11 @@ public:
Return TRUE if the item points to a column of an outer-joined table.
*/
virtual
bool
is_outer_field
()
const
{
DBUG_ASSERT
(
fixed
);
return
FALSE
;
}
/**
Checks if this item or any of its decendents contains a subquery.
*/
virtual
bool
has_subquery
()
const
{
return
with_subselect
;
}
};
...
...
@@ -2528,6 +2533,10 @@ public:
Field
*
get_tmp_table_field
()
{
return
result_field
?
result_field
:
(
*
ref
)
->
get_tmp_table_field
();
}
Item
*
get_tmp_table_item
(
THD
*
thd
);
bool
const_item
()
const
{
return
(
*
ref
)
->
const_item
()
&&
(
used_tables
()
==
0
);
}
table_map
used_tables
()
const
{
return
depended_from
?
OUTER_REF_TABLE_BIT
:
(
*
ref
)
->
used_tables
();
...
...
@@ -2603,6 +2612,13 @@ public:
return
(
*
ref
)
->
is_outer_field
();
}
/**
Checks if the item tree that ref points to contains a subquery.
*/
virtual
bool
has_subquery
()
const
{
return
(
*
ref
)
->
has_subquery
();
}
};
...
...
sql/item_cmpfunc.cc
View file @
dff10afb
/* Copyright (c) 2000, 201
2
, Oracle and/or its affiliates. All rights reserved.
/* Copyright (c) 2000, 201
3
, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
...
...
@@ -4366,7 +4366,7 @@ Item_cond::fix_fields(THD *thd, Item **ref)
const_item_cache
=
FALSE
;
}
with_sum_func
=
with_sum_func
||
item
->
with_sum_func
;
with_subselect
|=
item
->
with_subselect
;
with_subselect
|=
item
->
has_subquery
()
;
if
(
item
->
maybe_null
)
maybe_null
=
1
;
}
...
...
@@ -4691,7 +4691,7 @@ longlong Item_func_isnull::val_int()
Handle optimization if the argument can't be null
This has to be here because of the test in update_used_tables().
*/
if
(
!
used_tables_cache
&&
!
with_subselect
)
if
(
const_item_cache
)
return
cached_value
;
return
args
[
0
]
->
is_null
()
?
1
:
0
;
}
...
...
@@ -4700,7 +4700,7 @@ longlong Item_is_not_null_test::val_int()
{
DBUG_ASSERT
(
fixed
==
1
);
DBUG_ENTER
(
"Item_is_not_null_test::val_int"
);
if
(
!
used_tables_cache
&&
!
with_subselect
)
if
(
const_item_cache
)
{
owner
->
was_null
|=
(
!
cached_value
);
DBUG_PRINT
(
"info"
,
(
"cached: %ld"
,
(
long
)
cached_value
));
...
...
@@ -4721,10 +4721,12 @@ longlong Item_is_not_null_test::val_int()
*/
void
Item_is_not_null_test
::
update_used_tables
()
{
const_item_cache
=
false
;
if
(
!
args
[
0
]
->
maybe_null
)
{
used_tables_cache
=
0
;
/* is always true */
cached_value
=
(
longlong
)
1
;
const_item_cache
=
true
;
}
else
{
...
...
@@ -4733,6 +4735,7 @@ void Item_is_not_null_test::update_used_tables()
{
/* Remember if the value is always NULL or never NULL */
cached_value
=
(
longlong
)
!
args
[
0
]
->
is_null
();
const_item_cache
=
true
;
}
}
}
...
...
@@ -4986,6 +4989,7 @@ Item_func_regex::fix_fields(THD *thd, Item **ref)
args
[
1
]
->
fix_fields
(
thd
,
args
+
1
))
||
args
[
1
]
->
check_cols
(
1
))
return
TRUE
;
/* purecov: inspected */
with_sum_func
=
args
[
0
]
->
with_sum_func
||
args
[
1
]
->
with_sum_func
;
with_subselect
=
args
[
0
]
->
has_subquery
()
||
args
[
1
]
->
has_subquery
();
max_length
=
1
;
decimals
=
0
;
...
...
sql/item_func.cc
View file @
dff10afb
/* Copyright (c) 2000, 201
1
, Oracle and/or its affiliates. All rights reserved.
/* Copyright (c) 2000, 201
3
, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
...
...
@@ -221,7 +221,7 @@ Item_func::fix_fields(THD *thd, Item **ref)
used_tables_cache
|=
item
->
used_tables
();
not_null_tables_cache
|=
item
->
not_null_tables
();
const_item_cache
&=
item
->
const_item
();
with_subselect
|=
item
->
with_subselect
;
with_subselect
|=
item
->
has_subquery
()
;
}
}
fix_length_and_dec
();
...
...
sql/sql_select.cc
View file @
dff10afb
...
...
@@ -7449,7 +7449,7 @@ remove_const(JOIN *join,ORDER *first_order, COND *cond,
*
simple_order
=
0
;
// Must do a temp table to sort
else
if
(
!
(
order_tables
&
not_const_tables
))
{
if
(
order
->
item
[
0
]
->
with_subselect
&&
if
(
order
->
item
[
0
]
->
has_subquery
()
&&
!
(
join
->
select_lex
->
options
&
SELECT_DESCRIBE
))
order
->
item
[
0
]
->
val_str
(
&
order
->
item
[
0
]
->
str_value
);
DBUG_PRINT
(
"info"
,(
"removing: %s"
,
order
->
item
[
0
]
->
full_name
()));
...
...
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