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
294c0cca
Commit
294c0cca
authored
Sep 19, 2006
by
igor@rurik.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into rurik.mysql.com:/home/igor/mysql-4.1-opt
parents
fcf99e85
dd3b8e4f
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
102 additions
and
2 deletions
+102
-2
mysql-test/r/ps.result
mysql-test/r/ps.result
+47
-0
mysql-test/t/ps.test
mysql-test/t/ps.test
+52
-0
sql/sql_select.cc
sql/sql_select.cc
+3
-2
No files found.
mysql-test/r/ps.result
View file @
294c0cca
...
...
@@ -889,3 +889,50 @@ create temporary table if not exists t1 (a1 int);
execute stmt;
drop temporary table t1;
deallocate prepare stmt;
CREATE TABLE t1(
ID int(10) unsigned NOT NULL auto_increment,
Member_ID varchar(15) NOT NULL default '',
Action varchar(12) NOT NULL,
Action_Date datetime NOT NULL,
Track varchar(15) default NULL,
User varchar(12) default NULL,
Date_Updated timestamp NOT NULL default CURRENT_TIMESTAMP on update
CURRENT_TIMESTAMP,
PRIMARY KEY (ID),
KEY Action (Action),
KEY Action_Date (Action_Date)
);
INSERT INTO t1(Member_ID, Action, Action_Date, Track) VALUES
('111111', 'Disenrolled', '2006-03-01', 'CAD' ),
('111111', 'Enrolled', '2006-03-01', 'CAD' ),
('111111', 'Disenrolled', '2006-07-03', 'CAD' ),
('222222', 'Enrolled', '2006-03-07', 'CAD' ),
('222222', 'Enrolled', '2006-03-07', 'CHF' ),
('222222', 'Disenrolled', '2006-08-02', 'CHF' ),
('333333', 'Enrolled', '2006-03-01', 'CAD' ),
('333333', 'Disenrolled', '2006-03-01', 'CAD' ),
('444444', 'Enrolled', '2006-03-01', 'CAD' ),
('555555', 'Disenrolled', '2006-03-01', 'CAD' ),
('555555', 'Enrolled', '2006-07-21', 'CAD' ),
('555555', 'Disenrolled', '2006-03-01', 'CHF' ),
('666666', 'Enrolled', '2006-02-09', 'CAD' ),
('666666', 'Enrolled', '2006-05-12', 'CHF' ),
('666666', 'Disenrolled', '2006-06-01', 'CAD' );
PREPARE STMT FROM
"SELECT GROUP_CONCAT(Track SEPARATOR ', ') FROM t1
WHERE Member_ID=? AND Action='Enrolled' AND
(Track,Action_Date) IN (SELECT Track, MAX(Action_Date) FROM t1
WHERE Member_ID=?
GROUP BY Track
HAVING Track>='CAD' AND
MAX(Action_Date)>'2006-03-01')";
SET @id='111111';
EXECUTE STMT USING @id,@id;
GROUP_CONCAT(Track SEPARATOR ', ')
NULL
SET @id='222222';
EXECUTE STMT USING @id,@id;
GROUP_CONCAT(Track SEPARATOR ', ')
CAD
DEALLOCATE PREPARE STMT;
DROP TABLE t1;
mysql-test/t/ps.test
View file @
294c0cca
...
...
@@ -951,4 +951,56 @@ execute stmt;
drop
temporary
table
t1
;
deallocate
prepare
stmt
;
#
# BUG#22085: Crash on the execution of a prepared statement that
# uses an IN subquery with aggregate functions in HAVING
#
CREATE
TABLE
t1
(
ID
int
(
10
)
unsigned
NOT
NULL
auto_increment
,
Member_ID
varchar
(
15
)
NOT
NULL
default
''
,
Action
varchar
(
12
)
NOT
NULL
,
Action_Date
datetime
NOT
NULL
,
Track
varchar
(
15
)
default
NULL
,
User
varchar
(
12
)
default
NULL
,
Date_Updated
timestamp
NOT
NULL
default
CURRENT_TIMESTAMP
on
update
CURRENT_TIMESTAMP
,
PRIMARY
KEY
(
ID
),
KEY
Action
(
Action
),
KEY
Action_Date
(
Action_Date
)
);
INSERT
INTO
t1
(
Member_ID
,
Action
,
Action_Date
,
Track
)
VALUES
(
'111111'
,
'Disenrolled'
,
'2006-03-01'
,
'CAD'
),
(
'111111'
,
'Enrolled'
,
'2006-03-01'
,
'CAD'
),
(
'111111'
,
'Disenrolled'
,
'2006-07-03'
,
'CAD'
),
(
'222222'
,
'Enrolled'
,
'2006-03-07'
,
'CAD'
),
(
'222222'
,
'Enrolled'
,
'2006-03-07'
,
'CHF'
),
(
'222222'
,
'Disenrolled'
,
'2006-08-02'
,
'CHF'
),
(
'333333'
,
'Enrolled'
,
'2006-03-01'
,
'CAD'
),
(
'333333'
,
'Disenrolled'
,
'2006-03-01'
,
'CAD'
),
(
'444444'
,
'Enrolled'
,
'2006-03-01'
,
'CAD'
),
(
'555555'
,
'Disenrolled'
,
'2006-03-01'
,
'CAD'
),
(
'555555'
,
'Enrolled'
,
'2006-07-21'
,
'CAD'
),
(
'555555'
,
'Disenrolled'
,
'2006-03-01'
,
'CHF'
),
(
'666666'
,
'Enrolled'
,
'2006-02-09'
,
'CAD'
),
(
'666666'
,
'Enrolled'
,
'2006-05-12'
,
'CHF'
),
(
'666666'
,
'Disenrolled'
,
'2006-06-01'
,
'CAD'
);
PREPARE
STMT
FROM
"SELECT GROUP_CONCAT(Track SEPARATOR ', ') FROM t1
WHERE Member_ID=? AND Action='Enrolled' AND
(Track,Action_Date) IN (SELECT Track, MAX(Action_Date) FROM t1
WHERE Member_ID=?
GROUP BY Track
HAVING Track>='CAD' AND
MAX(Action_Date)>'2006-03-01')"
;
SET
@
id
=
'111111'
;
EXECUTE
STMT
USING
@
id
,
@
id
;
SET
@
id
=
'222222'
;
EXECUTE
STMT
USING
@
id
,
@
id
;
DEALLOCATE
PREPARE
STMT
;
DROP
TABLE
t1
;
# End of 4.1 tests
sql/sql_select.cc
View file @
294c0cca
...
...
@@ -290,8 +290,6 @@ JOIN::prepare(Item ***rref_pointer_array,
select_lex
->
having_fix_field
=
0
;
if
(
having_fix_rc
||
thd
->
net
.
report_error
)
DBUG_RETURN
(
-
1
);
/* purecov: inspected */
if
(
having
->
with_sum_func
)
having
->
split_sum_func2
(
thd
,
ref_pointer_array
,
all_fields
,
&
having
);
}
// Is it subselect
...
...
@@ -306,6 +304,9 @@ JOIN::prepare(Item ***rref_pointer_array,
}
}
if
(
having
&&
having
->
with_sum_func
)
having
->
split_sum_func2
(
thd
,
ref_pointer_array
,
all_fields
,
&
having
);
if
(
setup_ftfuncs
(
select_lex
))
/* should be after having->fix_fields */
DBUG_RETURN
(
-
1
);
...
...
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