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
0e30eea1
Commit
0e30eea1
authored
Jun 28, 2005
by
bell@sanja.is.com.ua
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixed substring() length calculation in case of constant negative argument (BUG#10269)
parent
f230d35c
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
26 additions
and
1 deletion
+26
-1
mysql-test/r/func_str.result
mysql-test/r/func_str.result
+15
-0
mysql-test/t/func_str.test
mysql-test/t/func_str.test
+9
-0
sql/item_strfunc.cc
sql/item_strfunc.cc
+2
-1
No files found.
mysql-test/r/func_str.result
View file @
0e30eea1
...
@@ -800,3 +800,18 @@ SELECT * FROM t1, t2 WHERE num=substring(str from 1 for 6);
...
@@ -800,3 +800,18 @@ SELECT * FROM t1, t2 WHERE num=substring(str from 1 for 6);
str num
str num
notnumber 0
notnumber 0
DROP TABLE t1,t2;
DROP TABLE t1,t2;
create table t1 (b varchar(5));
insert t1 values ('ab'), ('abc'), ('abcd'), ('abcde');
select *,substring(b,1),substring(b,-1),substring(b,-2),substring(b,-3),substring(b,-4),substring(b,-5) from t1;
b substring(b,1) substring(b,-1) substring(b,-2) substring(b,-3) substring(b,-4) substring(b,-5)
ab ab b ab
abc abc c bc abc
abcd abcd d cd bcd abcd
abcde abcde e de cde bcde abcde
select * from (select *,substring(b,1),substring(b,-1),substring(b,-2),substring(b,-3),substring(b,-4),substring(b,-5) from t1) t;
b substring(b,1) substring(b,-1) substring(b,-2) substring(b,-3) substring(b,-4) substring(b,-5)
ab ab b ab
abc abc c bc abc
abcd abcd d cd bcd abcd
abcde abcde e de cde bcde abcde
drop table t1;
mysql-test/t/func_str.test
View file @
0e30eea1
...
@@ -541,3 +541,12 @@ SELECT * FROM t1, t2 WHERE num=str;
...
@@ -541,3 +541,12 @@ SELECT * FROM t1, t2 WHERE num=str;
SELECT
*
FROM
t1
,
t2
WHERE
num
=
substring
(
str
from
1
for
6
);
SELECT
*
FROM
t1
,
t2
WHERE
num
=
substring
(
str
from
1
for
6
);
DROP
TABLE
t1
,
t2
;
DROP
TABLE
t1
,
t2
;
#
# Correct length reporting from substring() (BUG#10269)
#
create
table
t1
(
b
varchar
(
5
));
insert
t1
values
(
'ab'
),
(
'abc'
),
(
'abcd'
),
(
'abcde'
);
select
*
,
substring
(
b
,
1
),
substring
(
b
,
-
1
),
substring
(
b
,
-
2
),
substring
(
b
,
-
3
),
substring
(
b
,
-
4
),
substring
(
b
,
-
5
)
from
t1
;
select
*
from
(
select
*
,
substring
(
b
,
1
),
substring
(
b
,
-
1
),
substring
(
b
,
-
2
),
substring
(
b
,
-
3
),
substring
(
b
,
-
4
),
substring
(
b
,
-
5
)
from
t1
)
t
;
drop
table
t1
;
sql/item_strfunc.cc
View file @
0e30eea1
...
@@ -1065,7 +1065,8 @@ void Item_func_substr::fix_length_and_dec()
...
@@ -1065,7 +1065,8 @@ void Item_func_substr::fix_length_and_dec()
collation
.
set
(
args
[
0
]
->
collation
);
collation
.
set
(
args
[
0
]
->
collation
);
if
(
args
[
1
]
->
const_item
())
if
(
args
[
1
]
->
const_item
())
{
{
int32
start
=
(
int32
)
args
[
1
]
->
val_int
()
-
1
;
int32
start
=
(
int32
)
args
[
1
]
->
val_int
();
start
=
(
int32
)((
start
<
0
)
?
max_length
+
start
:
start
-
1
);
if
(
start
<
0
||
start
>=
(
int32
)
max_length
)
if
(
start
<
0
||
start
>=
(
int32
)
max_length
)
max_length
=
0
;
/* purecov: inspected */
max_length
=
0
;
/* purecov: inspected */
else
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