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
30c343a0
Commit
30c343a0
authored
Feb 17, 2006
by
jimw@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge mysql.com:/home/jimw/my/mysql-5.0-clean
into mysql.com:/home/jimw/my/mysql-5.1-clean
parents
10b96ec4
7182785f
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
326 additions
and
215 deletions
+326
-215
.bzrignore
.bzrignore
+1
-1
mysql-test/r/func_str.result
mysql-test/r/func_str.result
+7
-0
mysql-test/r/subselect.result
mysql-test/r/subselect.result
+3
-3
mysql-test/t/disabled.def
mysql-test/t/disabled.def
+0
-1
mysql-test/t/func_str.test
mysql-test/t/func_str.test
+8
-0
sql/item.cc
sql/item.cc
+283
-194
sql/item.h
sql/item.h
+1
-0
sql/item_strfunc.cc
sql/item_strfunc.cc
+22
-16
sql/item_subselect.h
sql/item_subselect.h
+1
-0
No files found.
.bzrignore
View file @
30c343a0
...
@@ -934,6 +934,7 @@ scripts/mysql_install_db
...
@@ -934,6 +934,7 @@ scripts/mysql_install_db
scripts/mysql_secure_installation
scripts/mysql_secure_installation
scripts/mysql_setpermission
scripts/mysql_setpermission
scripts/mysql_tableinfo
scripts/mysql_tableinfo
scripts/mysql_upgrade
scripts/mysql_zap
scripts/mysql_zap
scripts/mysqlaccess
scripts/mysqlaccess
scripts/mysqlbug
scripts/mysqlbug
...
@@ -1613,4 +1614,3 @@ vio/viotest-sslconnect.cpp
...
@@ -1613,4 +1614,3 @@ vio/viotest-sslconnect.cpp
vio/viotest.cpp
vio/viotest.cpp
zlib/*.ds?
zlib/*.ds?
zlib/*.vcproj
zlib/*.vcproj
scripts/mysql_upgrade
mysql-test/r/func_str.result
View file @
30c343a0
...
@@ -1023,3 +1023,10 @@ select format(d, 2) from t1;
...
@@ -1023,3 +1023,10 @@ select format(d, 2) from t1;
format(d, 2)
format(d, 2)
NULL
NULL
drop table t1;
drop table t1;
create table t1 (c varchar(40));
insert into t1 values ('y,abc'),('y,abc');
select c, substring_index(lcase(c), @q:=',', -1) as res from t1;
c res
y,abc abc
y,abc abc
drop table t1;
mysql-test/r/subselect.result
View file @
30c343a0
...
@@ -215,9 +215,9 @@ select * from t1 where t1.a=(select t2.a from t2 where t2.b=(select max(a) from
...
@@ -215,9 +215,9 @@ select * from t1 where t1.a=(select t2.a from t2 where t2.b=(select max(a) from
a
a
select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
b (select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)
b (select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)
8 7.5
8 7.5
000
8 4.5
8 4.5
000
9 7.5
9 7.5
000
explain extended select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
explain extended select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
id select_type table type possible_keys key key_len ref rows Extra
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t4 ALL NULL NULL NULL NULL 3
1 PRIMARY t4 ALL NULL NULL NULL NULL 3
...
...
mysql-test/t/disabled.def
View file @
30c343a0
...
@@ -42,7 +42,6 @@ rpl_row_basic_3innodb : Bug #17385
...
@@ -42,7 +42,6 @@ rpl_row_basic_3innodb : Bug #17385
rpl_sp : Bug#16456
rpl_sp : Bug#16456
rpl_until : Unstable test case, bug#15886
rpl_until : Unstable test case, bug#15886
sp-goto : GOTO is currently is disabled - will be fixed in the future
sp-goto : GOTO is currently is disabled - will be fixed in the future
subselect : Bug#15706 (ps mode) [PATCH PENDING]
rpl_ndb_blob : Bug #17505
rpl_ndb_blob : Bug #17505
rpl_ndb_blob2 : Bug #17505
rpl_ndb_blob2 : Bug #17505
rpl_ndb_log : results are not deterministic
rpl_ndb_log : results are not deterministic
mysql-test/t/func_str.test
View file @
30c343a0
...
@@ -676,4 +676,12 @@ insert into t1 values (null);
...
@@ -676,4 +676,12 @@ insert into t1 values (null);
select
format
(
d
,
2
)
from
t1
;
select
format
(
d
,
2
)
from
t1
;
drop
table
t1
;
drop
table
t1
;
#
# Bug #14676: substring_index() returns incorrect results
#
create
table
t1
(
c
varchar
(
40
));
insert
into
t1
values
(
'y,abc'
),(
'y,abc'
);
select
c
,
substring_index
(
lcase
(
c
),
@
q
:=
','
,
-
1
)
as
res
from
t1
;
drop
table
t1
;
# End of 5.0 tests
# End of 5.0 tests
sql/item.cc
View file @
30c343a0
This diff is collapsed.
Click to expand it.
sql/item.h
View file @
30c343a0
...
@@ -1205,6 +1205,7 @@ public:
...
@@ -1205,6 +1205,7 @@ public:
inline
uint32
max_disp_length
()
{
return
field
->
max_length
();
}
inline
uint32
max_disp_length
()
{
return
field
->
max_length
();
}
Item_field
*
filed_for_view_update
()
{
return
this
;
}
Item_field
*
filed_for_view_update
()
{
return
this
;
}
Item
*
safe_charset_converter
(
CHARSET_INFO
*
tocs
);
Item
*
safe_charset_converter
(
CHARSET_INFO
*
tocs
);
int
fix_outer_field
(
THD
*
thd
,
Field
**
field
,
Item
**
reference
);
friend
class
Item_default_value
;
friend
class
Item_default_value
;
friend
class
Item_insert_value
;
friend
class
Item_insert_value
;
friend
class
st_select_lex_unit
;
friend
class
st_select_lex_unit
;
...
...
sql/item_strfunc.cc
View file @
30c343a0
...
@@ -1128,9 +1128,9 @@ void Item_func_substr_index::fix_length_and_dec()
...
@@ -1128,9 +1128,9 @@ void Item_func_substr_index::fix_length_and_dec()
String
*
Item_func_substr_index
::
val_str
(
String
*
str
)
String
*
Item_func_substr_index
::
val_str
(
String
*
str
)
{
{
DBUG_ASSERT
(
fixed
==
1
);
DBUG_ASSERT
(
fixed
==
1
);
String
*
res
=
args
[
0
]
->
val_str
(
str
);
String
*
res
=
args
[
0
]
->
val_str
(
str
);
String
*
delim
eter
=
args
[
1
]
->
val_str
(
&
tmp_value
);
String
*
delim
iter
=
args
[
1
]
->
val_str
(
&
tmp_value
);
int32
count
=
(
int32
)
args
[
2
]
->
val_int
();
int32
count
=
(
int32
)
args
[
2
]
->
val_int
();
uint
offset
;
uint
offset
;
if
(
args
[
0
]
->
null_value
||
args
[
1
]
->
null_value
||
args
[
2
]
->
null_value
)
if
(
args
[
0
]
->
null_value
||
args
[
1
]
->
null_value
||
args
[
2
]
->
null_value
)
...
@@ -1139,8 +1139,8 @@ String *Item_func_substr_index::val_str(String *str)
...
@@ -1139,8 +1139,8 @@ String *Item_func_substr_index::val_str(String *str)
return
0
;
return
0
;
}
}
null_value
=
0
;
null_value
=
0
;
uint
delim
eter_length
=
delime
ter
->
length
();
uint
delim
iter_length
=
delimi
ter
->
length
();
if
(
!
res
->
length
()
||
!
delim
e
ter_length
||
!
count
)
if
(
!
res
->
length
()
||
!
delim
i
ter_length
||
!
count
)
return
&
my_empty_string
;
// Wrong parameters
return
&
my_empty_string
;
// Wrong parameters
res
->
set_charset
(
collation
.
collation
);
res
->
set_charset
(
collation
.
collation
);
...
@@ -1148,11 +1148,11 @@ String *Item_func_substr_index::val_str(String *str)
...
@@ -1148,11 +1148,11 @@ String *Item_func_substr_index::val_str(String *str)
#ifdef USE_MB
#ifdef USE_MB
if
(
use_mb
(
res
->
charset
()))
if
(
use_mb
(
res
->
charset
()))
{
{
const
char
*
ptr
=
res
->
ptr
();
const
char
*
ptr
=
res
->
ptr
();
const
char
*
strend
=
ptr
+
res
->
length
();
const
char
*
strend
=
ptr
+
res
->
length
();
const
char
*
end
=
strend
-
delime
ter_length
+
1
;
const
char
*
end
=
strend
-
delimi
ter_length
+
1
;
const
char
*
search
=
delime
ter
->
ptr
();
const
char
*
search
=
delimi
ter
->
ptr
();
const
char
*
search_end
=
search
+
delime
ter_length
;
const
char
*
search_end
=
search
+
delimi
ter_length
;
int32
n
=
0
,
c
=
count
,
pass
;
int32
n
=
0
,
c
=
count
,
pass
;
register
uint32
l
;
register
uint32
l
;
for
(
pass
=
(
count
>
0
);
pass
<
2
;
++
pass
)
for
(
pass
=
(
count
>
0
);
pass
<
2
;
++
pass
)
...
@@ -1167,7 +1167,7 @@ String *Item_func_substr_index::val_str(String *str)
...
@@ -1167,7 +1167,7 @@ String *Item_func_substr_index::val_str(String *str)
if
(
*
i
++
!=
*
j
++
)
goto
skip
;
if
(
*
i
++
!=
*
j
++
)
goto
skip
;
if
(
pass
==
0
)
++
n
;
if
(
pass
==
0
)
++
n
;
else
if
(
!--
c
)
break
;
else
if
(
!--
c
)
break
;
ptr
+=
delime
ter_length
;
ptr
+=
delimi
ter_length
;
continue
;
continue
;
}
}
skip:
skip:
...
@@ -1189,7 +1189,7 @@ String *Item_func_substr_index::val_str(String *str)
...
@@ -1189,7 +1189,7 @@ String *Item_func_substr_index::val_str(String *str)
}
}
else
/* return right part */
else
/* return right part */
{
{
ptr
+=
delime
ter_length
;
ptr
+=
delimi
ter_length
;
tmp_value
.
set
(
*
res
,(
ulong
)
(
ptr
-
res
->
ptr
()),
(
ulong
)
(
strend
-
ptr
));
tmp_value
.
set
(
*
res
,(
ulong
)
(
ptr
-
res
->
ptr
()),
(
ulong
)
(
strend
-
ptr
));
}
}
}
}
...
@@ -1200,9 +1200,9 @@ String *Item_func_substr_index::val_str(String *str)
...
@@ -1200,9 +1200,9 @@ String *Item_func_substr_index::val_str(String *str)
{
{
if
(
count
>
0
)
if
(
count
>
0
)
{
// start counting from the beginning
{
// start counting from the beginning
for
(
offset
=
0
;;
offset
+=
delime
ter_length
)
for
(
offset
=
0
;
;
offset
+=
delimi
ter_length
)
{
{
if
((
int
)
(
offset
=
res
->
strstr
(
*
delimeter
,
offset
))
<
0
)
if
((
int
)
(
offset
=
res
->
strstr
(
*
delimiter
,
offset
))
<
0
)
return
res
;
// Didn't find, return org string
return
res
;
// Didn't find, return org string
if
(
!--
count
)
if
(
!--
count
)
{
{
...
@@ -1223,7 +1223,7 @@ String *Item_func_substr_index::val_str(String *str)
...
@@ -1223,7 +1223,7 @@ String *Item_func_substr_index::val_str(String *str)
address space less than where the found substring is located
address space less than where the found substring is located
in res
in res
*/
*/
if
((
int
)
(
offset
=
res
->
strrstr
(
*
delimeter
,
offset
))
<
0
)
if
((
int
)
(
offset
=
res
->
strrstr
(
*
delimiter
,
offset
))
<
0
)
return
res
;
// Didn't find, return org string
return
res
;
// Didn't find, return org string
/*
/*
At this point, we've searched for the substring
At this point, we've searched for the substring
...
@@ -1231,13 +1231,19 @@ String *Item_func_substr_index::val_str(String *str)
...
@@ -1231,13 +1231,19 @@ String *Item_func_substr_index::val_str(String *str)
*/
*/
if
(
!++
count
)
if
(
!++
count
)
{
{
offset
+=
delime
ter_length
;
offset
+=
delimi
ter_length
;
tmp_value
.
set
(
*
res
,
offset
,
res
->
length
()
-
offset
);
tmp_value
.
set
(
*
res
,
offset
,
res
->
length
()
-
offset
);
break
;
break
;
}
}
}
}
}
}
}
}
/*
We always mark tmp_value as const so that if val_str() is called again
on this object, we don't disrupt the contents of tmp_value when it was
derived from another String.
*/
tmp_value
.
mark_as_const
();
return
(
&
tmp_value
);
return
(
&
tmp_value
);
}
}
...
...
sql/item_subselect.h
View file @
30c343a0
...
@@ -125,6 +125,7 @@ public:
...
@@ -125,6 +125,7 @@ public:
friend
class
select_subselect
;
friend
class
select_subselect
;
friend
class
Item_in_optimizer
;
friend
class
Item_in_optimizer
;
friend
bool
Item_field
::
fix_fields
(
THD
*
,
Item
**
);
friend
bool
Item_field
::
fix_fields
(
THD
*
,
Item
**
);
friend
int
Item_field
::
fix_outer_field
(
THD
*
,
Field
**
,
Item
**
);
friend
bool
Item_ref
::
fix_fields
(
THD
*
,
Item
**
);
friend
bool
Item_ref
::
fix_fields
(
THD
*
,
Item
**
);
friend
void
mark_select_range_as_dependent
(
THD
*
,
friend
void
mark_select_range_as_dependent
(
THD
*
,
st_select_lex
*
,
st_select_lex
*
,
st_select_lex
*
,
st_select_lex
*
,
...
...
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