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
a5011de0
Commit
a5011de0
authored
Jun 04, 2007
by
igor@olga.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into olga.mysql.com:/home/igor/mysql-5.1-opt-merge
parents
31c57a1e
d9fcc304
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
152 additions
and
9 deletions
+152
-9
include/thr_lock.h
include/thr_lock.h
+5
-0
mysql-test/mysql-test-run.pl
mysql-test/mysql-test-run.pl
+11
-0
mysql-test/r/subselect.result
mysql-test/r/subselect.result
+10
-0
mysql-test/r/trigger.result
mysql-test/r/trigger.result
+24
-0
mysql-test/t/subselect.test
mysql-test/t/subselect.test
+14
-0
mysql-test/t/trigger.test
mysql-test/t/trigger.test
+55
-0
sql/set_var.cc
sql/set_var.cc
+5
-1
sql/sql_base.cc
sql/sql_base.cc
+7
-0
sql/sql_select.cc
sql/sql_select.cc
+11
-0
sql/sql_view.cc
sql/sql_view.cc
+2
-1
sql/sql_yacc.yy
sql/sql_yacc.yy
+6
-6
sql/udf_example.c
sql/udf_example.c
+2
-1
No files found.
include/thr_lock.h
View file @
a5011de0
...
...
@@ -54,6 +54,11 @@ enum thr_lock_type { TL_IGNORE=-1,
TL_WRITE_CONCURRENT_INSERT
,
/* Write used by INSERT DELAYED. Allows READ locks */
TL_WRITE_DELAYED
,
/*
parser only! Late bound low_priority flag.
At open_tables() becomes thd->update_lock_default.
*/
TL_WRITE_DEFAULT
,
/* WRITE lock that has lower priority than TL_READ */
TL_WRITE_LOW_PRIORITY
,
/* Normal WRITE lock */
...
...
mysql-test/mysql-test-run.pl
View file @
a5011de0
...
...
@@ -1796,6 +1796,17 @@ sub environment_setup () {
split
('
:
',
$ENV
{'
DYLD_LIBRARY_PATH
'})
:
());
mtr_debug
("
DYLD_LIBRARY_PATH:
$ENV
{'DYLD_LIBRARY_PATH'}
");
# The environment variable used for shared libs on AIX
$ENV
{'
SHLIB_PATH
'}
=
join
("
:
",
@ld_library_paths
,
$ENV
{'
SHLIB_PATH
'}
?
split
('
:
',
$ENV
{'
SHLIB_PATH
'})
:
());
mtr_debug
("
SHLIB_PATH:
$ENV
{'SHLIB_PATH'}
");
# The environment variable used for shared libs on hp-ux
$ENV
{'
LIBPATH
'}
=
join
("
:
",
@ld_library_paths
,
$ENV
{'
LIBPATH
'}
?
split
('
:
',
$ENV
{'
LIBPATH
'})
:
());
mtr_debug
("
LIBPATH:
$ENV
{'LIBPATH'}
");
# --------------------------------------------------------------------------
# Also command lines in .opt files may contain env vars
...
...
mysql-test/r/subselect.result
View file @
a5011de0
...
...
@@ -4071,6 +4071,16 @@ id st
2 GA
4 FL
DROP TABLE t1,t2;
CREATE TABLE t1 (a int);
INSERT INTO t1 VALUES (1), (2);
EXPLAIN EXTENDED
SELECT * FROM (SELECT count(*) FROM t1 GROUP BY a) as res;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2
2 DERIVED t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort
Warnings:
Note 1003 select `res`.`count(*)` AS `count(*)` from (select count(0) AS `count(*)` from `test`.`t1` group by `test`.`t1`.`a`) `res`
DROP TABLE t1;
End of 5.0 tests.
CREATE TABLE t1 (a int, b int);
INSERT INTO t1 VALUES (2,22),(1,11),(2,22);
...
...
mysql-test/r/trigger.result
View file @
a5011de0
...
...
@@ -1449,4 +1449,28 @@ isave
1
2
drop table t1, t2, t3;
CREATE TABLE t1 (id INTEGER);
CREATE TABLE t2 (id INTEGER);
INSERT INTO t2 VALUES (1),(2);
CREATE TRIGGER t1_test AFTER INSERT ON t1 FOR EACH ROW
INSERT INTO t2 VALUES (new.id);
SELECT GET_LOCK('B26162',20);
GET_LOCK('B26162',20)
1
SELECT 'rl_acquirer', GET_LOCK('B26162',5), id FROM t2 WHERE id = 1;
SET SESSION LOW_PRIORITY_UPDATES=1;
SET GLOBAL LOW_PRIORITY_UPDATES=1;
INSERT INTO t1 VALUES (5);
SELECT 'rl_contender', id FROM t2 WHERE id > 1;
SELECT RELEASE_LOCK('B26162');
RELEASE_LOCK('B26162')
0
rl_acquirer GET_LOCK('B26162',5) id
rl_acquirer 0 1
rl_contender id
rl_contender 2
DROP TRIGGER t1_test;
DROP TABLE t1,t2;
SET SESSION LOW_PRIORITY_UPDATES=DEFAULT;
SET GLOBAL LOW_PRIORITY_UPDATES=DEFAULT;
End of 5.0 tests
mysql-test/t/subselect.test
View file @
a5011de0
...
...
@@ -2906,6 +2906,20 @@ SELECT id, st FROM t1
DROP
TABLE
t1
,
t2
;
#
# Bug #28728: crash with EXPLAIN EXTENDED for a query with a derived table
# over a grouping subselect
#
CREATE
TABLE
t1
(
a
int
);
INSERT
INTO
t1
VALUES
(
1
),
(
2
);
EXPLAIN
EXTENDED
SELECT
*
FROM
(
SELECT
count
(
*
)
FROM
t1
GROUP
BY
a
)
as
res
;
DROP
TABLE
t1
;
--
echo
End
of
5.0
tests
.
#
...
...
mysql-test/t/trigger.test
View file @
a5011de0
...
...
@@ -1763,4 +1763,59 @@ select * from t1;
select
*
from
t3
;
drop
table
t1
,
t2
,
t3
;
#
# Bug #26162: Trigger DML ignores low_priority_updates setting
#
CREATE
TABLE
t1
(
id
INTEGER
);
CREATE
TABLE
t2
(
id
INTEGER
);
INSERT
INTO
t2
VALUES
(
1
),(
2
);
# trigger that produces the high priority insert, but should be low, adding
# LOW_PRIORITY fixes this
CREATE
TRIGGER
t1_test
AFTER
INSERT
ON
t1
FOR
EACH
ROW
INSERT
INTO
t2
VALUES
(
new
.
id
);
CONNECT
(
rl_acquirer
,
localhost
,
root
,,);
CONNECT
(
wl_acquirer
,
localhost
,
root
,,);
CONNECT
(
rl_contender
,
localhost
,
root
,,);
SELECT
GET_LOCK
(
'B26162'
,
20
);
CONNECTION
rl_acquirer
;
--
send
SELECT
'rl_acquirer'
,
GET_LOCK
(
'B26162'
,
5
),
id
FROM
t2
WHERE
id
=
1
;
CONNECTION
wl_acquirer
;
SET
SESSION
LOW_PRIORITY_UPDATES
=
1
;
SET
GLOBAL
LOW_PRIORITY_UPDATES
=
1
;
--
send
INSERT
INTO
t1
VALUES
(
5
);
CONNECTION
rl_contender
;
# must not "see" the row inserted by the INSERT (as it must run before the
# INSERT)
--
send
SELECT
'rl_contender'
,
id
FROM
t2
WHERE
id
>
1
;
CONNECTION
default
;
SELECT
RELEASE_LOCK
(
'B26162'
);
CONNECTION
wl_acquirer
;
--
reap
CONNECTION
rl_acquirer
;
--
reap
CONNECTION
rl_contender
;
--
reap
CONNECTION
default
;
DISCONNECT
rl_acquirer
;
DISCONNECT
wl_acquirer
;
DISCONNECT
rl_contender
;
DROP
TRIGGER
t1_test
;
DROP
TABLE
t1
,
t2
;
SET
SESSION
LOW_PRIORITY_UPDATES
=
DEFAULT
;
SET
GLOBAL
LOW_PRIORITY_UPDATES
=
DEFAULT
;
--
echo
End
of
5.0
tests
sql/set_var.cc
View file @
a5011de0
...
...
@@ -824,7 +824,11 @@ static void sys_default_ftb_syntax(THD *thd, enum_var_type type)
static
void
fix_low_priority_updates
(
THD
*
thd
,
enum_var_type
type
)
{
if
(
type
!=
OPT_GLOBAL
)
if
(
type
==
OPT_GLOBAL
)
thr_upgraded_concurrent_insert_lock
=
(
global_system_variables
.
low_priority_updates
?
TL_WRITE_LOW_PRIORITY
:
TL_WRITE
);
else
thd
->
update_lock_default
=
(
thd
->
variables
.
low_priority_updates
?
TL_WRITE_LOW_PRIORITY
:
TL_WRITE
);
}
...
...
sql/sql_base.cc
View file @
a5011de0
...
...
@@ -2226,6 +2226,7 @@ TABLE *open_table(THD *thd, TABLE_LIST *table_list, MEM_ROOT *mem_root,
HASH_SEARCH_STATE
state
;
DBUG_ENTER
(
"open_table"
);
DBUG_ASSERT
(
table_list
->
lock_type
!=
TL_WRITE_DEFAULT
);
/* find a unused table in the open table cache */
if
(
refresh
)
*
refresh
=
0
;
...
...
@@ -3531,6 +3532,12 @@ int open_tables(THD *thd, TABLE_LIST **start, uint *counter, uint flags)
for
(
tables
=
*
start
;
tables
;
tables
=
tables
->
next_global
)
{
safe_to_ignore_table
=
FALSE
;
// 'FALSE', as per coding style
if
(
tables
->
lock_type
==
TL_WRITE_DEFAULT
)
{
tables
->
lock_type
=
thd
->
update_lock_default
;
DBUG_ASSERT
(
tables
->
lock_type
>=
TL_WRITE_ALLOW_WRITE
);
}
/*
Ignore placeholders for derived tables. After derived tables
processing, link to created temporary table will be put here.
...
...
sql/sql_select.cc
View file @
a5011de0
...
...
@@ -2104,6 +2104,17 @@ JOIN::exec()
thd
->
examined_row_count
+=
curr_join
->
examined_rows
;
DBUG_PRINT
(
"counts"
,
(
"thd->examined_row_count: %lu"
,
(
ulong
)
thd
->
examined_row_count
));
/*
With EXPLAIN EXTENDED we have to restore original ref_array
for a derived table which is always materialized.
Otherwise we would not be able to print the query correctly.
*/
if
(
items0
&&
(
thd
->
lex
->
describe
&
DESCRIBE_EXTENDED
)
&&
select_lex
->
linkage
==
DERIVED_TABLE_TYPE
)
set_items_ref_array
(
items0
);
DBUG_VOID_RETURN
;
}
...
...
sql/sql_view.cc
View file @
a5011de0
...
...
@@ -816,7 +816,7 @@ loop_out:
}
}
else
{
{
if
(
mode
==
VIEW_ALTER
)
{
my_error
(
ER_NO_SUCH_TABLE
,
MYF
(
0
),
view
->
db
,
view
->
alias
);
...
...
@@ -825,6 +825,7 @@ loop_out:
}
}
}
/*
Check that table of main select do not used in subqueries.
...
...
sql/sql_yacc.yy
View file @
a5011de0
...
...
@@ -8295,7 +8295,7 @@ insert_lock_option:
insert visible only after the table unlocking but everyone can
read table.
*/
$$= (Lex->sphead ? TL_WRITE
:
TL_WRITE_CONCURRENT_INSERT);
$$= (Lex->sphead ? TL_WRITE
_DEFAULT :
TL_WRITE_CONCURRENT_INSERT);
#else
$$= TL_WRITE_CONCURRENT_INSERT;
#endif
...
...
@@ -8473,7 +8473,7 @@ insert_update_elem:
};
opt_low_priority:
/* empty */ { $$=
YYTHD->update_lock_default
; }
/* empty */ { $$=
TL_WRITE_DEFAULT
; }
| LOW_PRIORITY { $$= TL_WRITE_LOW_PRIORITY; };
/* Delete rows from a table */
...
...
@@ -8484,7 +8484,7 @@ delete:
LEX *lex= Lex;
lex->sql_command= SQLCOM_DELETE;
mysql_init_select(lex);
lex->lock_option=
lex->thd->update_lock_default
;
lex->lock_option=
TL_WRITE_DEFAULT
;
lex->ignore= 0;
lex->select_lex.init_order();
}
...
...
@@ -9176,7 +9176,7 @@ opt_local:
| LOCAL_SYM { $$=1;};
load_data_lock:
/* empty */ { $$=
YYTHD->update_lock_default
; }
/* empty */ { $$=
TL_WRITE_DEFAULT
; }
| CONCURRENT
{
#ifdef HAVE_QUERY_CACHE
...
...
@@ -9184,7 +9184,7 @@ load_data_lock:
Ignore this option in SP to avoid problem with query cache
*/
if (Lex->sphead != 0)
$$=
YYTHD->update_lock_default
;
$$=
TL_WRITE_DEFAULT
;
else
#endif
$$= TL_WRITE_CONCURRENT_INSERT;
...
...
@@ -10546,7 +10546,7 @@ table_lock:
lock_option:
READ_SYM { $$=TL_READ_NO_INSERT; }
| WRITE_SYM { $$=
YYTHD->update_lock_default
; }
| WRITE_SYM { $$=
TL_WRITE_DEFAULT
; }
| LOW_PRIORITY WRITE_SYM { $$=TL_WRITE_LOW_PRIORITY; }
| READ_SYM LOCAL_SYM { $$= TL_READ; }
;
...
...
sql/udf_example.c
View file @
a5011de0
...
...
@@ -130,7 +130,8 @@ typedef long long longlong;
#include <m_string.h>
/* To get strmov() */
#else
/* when compiled as standalone */
#define strmov(a,b) strcpy(a,b)
#include <string.h>
#define strmov(a,b) stpcpy(a,b)
#define bzero(a,b) memset(a,0,b)
#define memcpy_fixed(a,b,c) memcpy(a,b,c)
#endif
...
...
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