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
44390c8c
Commit
44390c8c
authored
Jan 28, 2003
by
Sinisa@sinisa.nasamreza.org
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
A feature of doing automatick result buffering when INSERT is
done from the select containing a table to be inserted to.
parent
d54d67b5
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
47 additions
and
4 deletions
+47
-4
mysql-test/r/insert.result
mysql-test/r/insert.result
+13
-0
mysql-test/r/subselect.result
mysql-test/r/subselect.result
+2
-1
mysql-test/t/insert.test
mysql-test/t/insert.test
+31
-0
mysql-test/t/subselect.test
mysql-test/t/subselect.test
+0
-1
sql/sql_parse.cc
sql/sql_parse.cc
+1
-2
No files found.
mysql-test/r/insert.result
View file @
44390c8c
...
@@ -64,3 +64,16 @@ use test_$1;
...
@@ -64,3 +64,16 @@ use test_$1;
create table t1 (c int);
create table t1 (c int);
insert into test_$1.t1 set test_$1.t1.c = '1';
insert into test_$1.t1 set test_$1.t1.c = '1';
drop database test_$1;
drop database test_$1;
use test;
drop table if exists t1,t2,t3;
create table t1(id1 int not null auto_increment primary key, t char(12));
create table t2(id2 int not null, t char(12));
create table t3(id3 int not null, t char(12), index(id3));
select count(*) from t2;
count(*)
500
insert into t2 select t1.* from t1, t2 t, t3 where t1.id1 = t.id2 and t.id2 = t3.id3;
select count(*) from t2;
count(*)
25500
drop table if exists t1,t2,t3;
mysql-test/r/subselect.result
View file @
44390c8c
...
@@ -576,7 +576,6 @@ x
...
@@ -576,7 +576,6 @@ x
3
3
3
3
INSERT INTO t1 (x) select (SELECT SUM(x)+2 FROM t1) FROM t2;
INSERT INTO t1 (x) select (SELECT SUM(x)+2 FROM t1) FROM t2;
You can't specify target table 't1' for update in FROM clause
INSERT DELAYED INTO t1 (x) VALUES ((SELECT SUM(x) FROM t2));
INSERT DELAYED INTO t1 (x) VALUES ((SELECT SUM(x) FROM t2));
select * from t1;
select * from t1;
x
x
...
@@ -584,6 +583,8 @@ x
...
@@ -584,6 +583,8 @@ x
2
2
3
3
3
3
11
11
0
0
drop table t1, t2, t3;
drop table t1, t2, t3;
CREATE TABLE t1 (x int not null, y int, primary key (x));
CREATE TABLE t1 (x int not null, y int, primary key (x));
...
...
mysql-test/t/insert.test
View file @
44390c8c
...
@@ -65,3 +65,34 @@ use test_$1;
...
@@ -65,3 +65,34 @@ use test_$1;
create
table
t1
(
c
int
);
create
table
t1
(
c
int
);
insert
into
test_
$
1.
t1
set
test_
$
1.
t1
.
c
=
'1'
;
insert
into
test_
$
1.
t1
set
test_
$
1.
t1
.
c
=
'1'
;
drop
database
test_
$
1
;
drop
database
test_
$
1
;
use
test
;
--
disable_warnings
drop
table
if
exists
t1
,
t2
,
t3
;
--
enable_warnings
create
table
t1
(
id1
int
not
null
auto_increment
primary
key
,
t
char
(
12
));
create
table
t2
(
id2
int
not
null
,
t
char
(
12
));
create
table
t3
(
id3
int
not
null
,
t
char
(
12
),
index
(
id3
));
disable_query_log
;
let
$
1
=
100
;
while
(
$
1
)
{
let
$
2
=
5
;
eval
insert
into
t1
(
t
)
values
(
'$1'
);
while
(
$
2
)
{
eval
insert
into
t2
(
id2
,
t
)
values
(
$
1
,
'$2'
);
let
$
3
=
10
;
while
(
$
3
)
{
eval
insert
into
t3
(
id3
,
t
)
values
(
$
1
,
'$2'
);
dec
$
3
;
}
dec
$
2
;
}
dec
$
1
;
}
enable_query_log
;
select
count
(
*
)
from
t2
;
insert
into
t2
select
t1
.*
from
t1
,
t2
t
,
t3
where
t1
.
id1
=
t
.
id2
and
t
.
id2
=
t3
.
id3
;
select
count
(
*
)
from
t2
;
drop
table
if
exists
t1
,
t2
,
t3
;
mysql-test/t/subselect.test
View file @
44390c8c
...
@@ -332,7 +332,6 @@ INSERT DELAYED INTO t1 (x) VALUES ((SELECT SUM(a) FROM t2));
...
@@ -332,7 +332,6 @@ INSERT DELAYED INTO t1 (x) VALUES ((SELECT SUM(a) FROM t2));
select
*
from
t1
;
select
*
from
t1
;
INSERT
INTO
t1
(
x
)
select
(
SELECT
SUM
(
a
)
+
1
FROM
t2
)
FROM
t2
;
INSERT
INTO
t1
(
x
)
select
(
SELECT
SUM
(
a
)
+
1
FROM
t2
)
FROM
t2
;
select
*
from
t1
;
select
*
from
t1
;
--
error
1093
INSERT
INTO
t1
(
x
)
select
(
SELECT
SUM
(
x
)
+
2
FROM
t1
)
FROM
t2
;
INSERT
INTO
t1
(
x
)
select
(
SELECT
SUM
(
x
)
+
2
FROM
t1
)
FROM
t2
;
INSERT
DELAYED
INTO
t1
(
x
)
VALUES
((
SELECT
SUM
(
x
)
FROM
t2
));
INSERT
DELAYED
INTO
t1
(
x
)
VALUES
((
SELECT
SUM
(
x
)
FROM
t2
));
--
sleep
1
--
sleep
1
...
...
sql/sql_parse.cc
View file @
44390c8c
...
@@ -2198,8 +2198,7 @@ mysql_execute_command(THD *thd)
...
@@ -2198,8 +2198,7 @@ mysql_execute_command(THD *thd)
if
(
find_real_table_in_list
(
tables
->
next
,
tables
->
db
,
tables
->
real_name
))
if
(
find_real_table_in_list
(
tables
->
next
,
tables
->
db
,
tables
->
real_name
))
{
{
net_printf
(
thd
,
ER_UPDATE_TABLE_USED
,
tables
->
real_name
);
lex
->
select_lex
.
options
|=
OPTION_BUFFER_RESULT
;
return
-
1
;
}
}
/* Skip first table, which is the table we are inserting in */
/* Skip first table, which is the table we are inserting in */
...
...
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