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
c754cc84
Commit
c754cc84
authored
May 10, 2009
by
Ramil Kalimullin
Browse files
Options
Browse Files
Download
Plain Diff
Manual merge.
parents
e545d470
0781a302
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
64 additions
and
5 deletions
+64
-5
mysql-test/r/distinct.result
mysql-test/r/distinct.result
+4
-4
mysql-test/r/user_var.result
mysql-test/r/user_var.result
+11
-0
mysql-test/t/user_var.test
mysql-test/t/user_var.test
+12
-0
sql/item_func.cc
sql/item_func.cc
+35
-0
sql/item_func.h
sql/item_func.h
+1
-0
sql/sql_class.cc
sql/sql_class.cc
+1
-1
No files found.
mysql-test/r/distinct.result
View file @
c754cc84
...
@@ -629,21 +629,21 @@ SELECT DISTINCT @v5:= fruit_id, @v6:= fruit_name INTO @v7, @v8 FROM t1 WHERE
...
@@ -629,21 +629,21 @@ SELECT DISTINCT @v5:= fruit_id, @v6:= fruit_name INTO @v7, @v8 FROM t1 WHERE
fruit_name = 'APPLE';
fruit_name = 'APPLE';
SELECT @v5, @v6, @v7, @v8;
SELECT @v5, @v6, @v7, @v8;
@v5 @v6 @v7 @v8
@v5 @v6 @v7 @v8
3 PEAR 3 PEAR
2 APPLE 2 APPLE
SELECT DISTINCT @v5 + fruit_id, CONCAT(@v6, fruit_name) INTO @v9, @v10 FROM t1
SELECT DISTINCT @v5 + fruit_id, CONCAT(@v6, fruit_name) INTO @v9, @v10 FROM t1
WHERE fruit_name = 'APPLE';
WHERE fruit_name = 'APPLE';
SELECT @v5, @v6, @v7, @v8, @v9, @v10;
SELECT @v5, @v6, @v7, @v8, @v9, @v10;
@v5 @v6 @v7 @v8 @v9 @v10
@v5 @v6 @v7 @v8 @v9 @v10
3 PEAR 3 PEAR 5 PEAR
APPLE
2 APPLE 2 APPLE 4 APPLE
APPLE
SELECT DISTINCT @v11:= @v5 + fruit_id, @v12:= CONCAT(@v6, fruit_name) INTO
SELECT DISTINCT @v11:= @v5 + fruit_id, @v12:= CONCAT(@v6, fruit_name) INTO
@v13, @v14 FROM t1 WHERE fruit_name = 'APPLE';
@v13, @v14 FROM t1 WHERE fruit_name = 'APPLE';
SELECT @v11, @v12, @v13, @v14;
SELECT @v11, @v12, @v13, @v14;
@v11 @v12 @v13 @v14
@v11 @v12 @v13 @v14
6 PEARPEAR 6 PEARPEAR
4 APPLEAPPLE 4 APPLEAPPLE
SELECT DISTINCT @v13, @v14 INTO @v15, @v16 FROM t1 WHERE fruit_name = 'APPLE';
SELECT DISTINCT @v13, @v14 INTO @v15, @v16 FROM t1 WHERE fruit_name = 'APPLE';
SELECT @v15, @v16;
SELECT @v15, @v16;
@v15 @v16
@v15 @v16
6 PEARPEAR
4 APPLEAPPLE
SELECT DISTINCT 2 + 2, 'Bob' INTO @v17, @v18 FROM t1 WHERE fruit_name =
SELECT DISTINCT 2 + 2, 'Bob' INTO @v17, @v18 FROM t1 WHERE fruit_name =
'APPLE';
'APPLE';
SELECT @v17, @v18;
SELECT @v17, @v18;
...
...
mysql-test/r/user_var.result
View file @
c754cc84
...
@@ -399,6 +399,17 @@ select @lastid != id, @lastid, @lastid := id from t1;
...
@@ -399,6 +399,17 @@ select @lastid != id, @lastid, @lastid := id from t1;
0 3 3
0 3 3
1 3 4
1 3 4
drop table t1;
drop table t1;
CREATE TABLE t1(a INT, b INT);
INSERT INTO t1 VALUES (0, 0), (2, 1), (2, 3), (1, 1), (30, 20);
SELECT a, b INTO @a, @b FROM t1 WHERE a=2 AND b=3 GROUP BY a, b;
SELECT @a, @b;
@a @b
2 3
SELECT a, b FROM t1 WHERE a=2 AND b=3 GROUP BY a, b;
a b
2 3
DROP TABLE t1;
End of 5.0 tests
CREATE TABLE t1 (i INT);
CREATE TABLE t1 (i INT);
CREATE TRIGGER t_after_insert AFTER INSERT ON t1 FOR EACH ROW SET @bug42188 = 10;
CREATE TRIGGER t_after_insert AFTER INSERT ON t1 FOR EACH ROW SET @bug42188 = 10;
INSERT INTO t1 VALUES (1);
INSERT INTO t1 VALUES (1);
...
...
mysql-test/t/user_var.test
View file @
c754cc84
...
@@ -285,6 +285,18 @@ set @lastid=-1;
...
@@ -285,6 +285,18 @@ set @lastid=-1;
select
@
lastid
!=
id
,
@
lastid
,
@
lastid
:=
id
from
t1
;
select
@
lastid
!=
id
,
@
lastid
,
@
lastid
:=
id
from
t1
;
drop
table
t1
;
drop
table
t1
;
#
# Bug#42009: SELECT into variable gives different results to direct SELECT
#
CREATE
TABLE
t1
(
a
INT
,
b
INT
);
INSERT
INTO
t1
VALUES
(
0
,
0
),
(
2
,
1
),
(
2
,
3
),
(
1
,
1
),
(
30
,
20
);
SELECT
a
,
b
INTO
@
a
,
@
b
FROM
t1
WHERE
a
=
2
AND
b
=
3
GROUP
BY
a
,
b
;
SELECT
@
a
,
@
b
;
SELECT
a
,
b
FROM
t1
WHERE
a
=
2
AND
b
=
3
GROUP
BY
a
,
b
;
DROP
TABLE
t1
;
--
echo
End
of
5.0
tests
#
#
# Bug#42188: crash and/or memory corruption with user variables in trigger
# Bug#42188: crash and/or memory corruption with user variables in trigger
#
#
...
...
sql/item_func.cc
View file @
c754cc84
...
@@ -4177,6 +4177,41 @@ Item_func_set_user_var::check(bool use_result_field)
...
@@ -4177,6 +4177,41 @@ Item_func_set_user_var::check(bool use_result_field)
}
}
/**
@brief Evaluate and store item's result.
This function is invoked on "SELECT ... INTO @var ...".
@param item An item to get value from.
*/
void
Item_func_set_user_var
::
save_item_result
(
Item
*
item
)
{
DBUG_ENTER
(
"Item_func_set_user_var::save_item_result"
);
switch
(
cached_result_type
)
{
case
REAL_RESULT
:
save_result
.
vreal
=
item
->
val_result
();
break
;
case
INT_RESULT
:
save_result
.
vint
=
item
->
val_int_result
();
unsigned_flag
=
item
->
unsigned_flag
;
break
;
case
STRING_RESULT
:
save_result
.
vstr
=
item
->
str_result
(
&
value
);
break
;
case
DECIMAL_RESULT
:
save_result
.
vdec
=
item
->
val_decimal_result
(
&
decimal_buff
);
break
;
case
ROW_RESULT
:
default:
// Should never happen
DBUG_ASSERT
(
0
);
break
;
}
DBUG_VOID_RETURN
;
}
/**
/**
This functions is invoked on
This functions is invoked on
SET \@variable or \@variable:= expression.
SET \@variable or \@variable:= expression.
...
...
sql/item_func.h
View file @
c754cc84
...
@@ -1341,6 +1341,7 @@ public:
...
@@ -1341,6 +1341,7 @@ public:
bool
send
(
Protocol
*
protocol
,
String
*
str_arg
);
bool
send
(
Protocol
*
protocol
,
String
*
str_arg
);
void
make_field
(
Send_field
*
tmp_field
);
void
make_field
(
Send_field
*
tmp_field
);
bool
check
(
bool
use_result_field
);
bool
check
(
bool
use_result_field
);
void
save_item_result
(
Item
*
item
);
bool
update
();
bool
update
();
enum
Item_result
result_type
()
const
{
return
cached_result_type
;
}
enum
Item_result
result_type
()
const
{
return
cached_result_type
;
}
bool
fix_fields
(
THD
*
thd
,
Item
**
ref
);
bool
fix_fields
(
THD
*
thd
,
Item
**
ref
);
...
...
sql/sql_class.cc
View file @
c754cc84
...
@@ -2599,7 +2599,7 @@ bool select_dumpvar::send_data(List<Item> &items)
...
@@ -2599,7 +2599,7 @@ bool select_dumpvar::send_data(List<Item> &items)
{
{
Item_func_set_user_var
*
suv
=
new
Item_func_set_user_var
(
mv
->
s
,
item
);
Item_func_set_user_var
*
suv
=
new
Item_func_set_user_var
(
mv
->
s
,
item
);
suv
->
fix_fields
(
thd
,
0
);
suv
->
fix_fields
(
thd
,
0
);
suv
->
check
(
0
);
suv
->
save_item_result
(
item
);
suv
->
update
();
suv
->
update
();
}
}
}
}
...
...
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