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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
12b4fb15
Commit
12b4fb15
authored
May 10, 2005
by
tulin@dl145c.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0
into dl145c.mysql.com:/home/ndbdev/tomas/mysql-5.1
parents
7b7ec966
3c814444
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
237 additions
and
34 deletions
+237
-34
BUILD/check-cpu
BUILD/check-cpu
+3
-0
BitKeeper/etc/logging_ok
BitKeeper/etc/logging_ok
+1
-0
mysql-test/r/information_schema_db.result
mysql-test/r/information_schema_db.result
+28
-0
mysql-test/r/rpl_sp.result
mysql-test/r/rpl_sp.result
+29
-6
mysql-test/r/type_newdecimal.result
mysql-test/r/type_newdecimal.result
+13
-0
mysql-test/t/information_schema_db.test
mysql-test/t/information_schema_db.test
+9
-0
mysql-test/t/range.test
mysql-test/t/range.test
+2
-0
mysql-test/t/rpl_sp.test
mysql-test/t/rpl_sp.test
+34
-2
mysql-test/t/type_newdecimal.test
mysql-test/t/type_newdecimal.test
+14
-0
sql/item_strfunc.h
sql/item_strfunc.h
+0
-1
sql/sql_show.cc
sql/sql_show.cc
+59
-22
sql/sql_trigger.cc
sql/sql_trigger.cc
+25
-1
sql/sql_trigger.h
sql/sql_trigger.h
+8
-0
storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp
storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp
+2
-0
storage/ndb/src/ndbapi/ClusterMgr.cpp
storage/ndb/src/ndbapi/ClusterMgr.cpp
+2
-1
strings/decimal.c
strings/decimal.c
+8
-1
No files found.
BUILD/check-cpu
View file @
12b4fb15
...
...
@@ -55,6 +55,9 @@ case "$cpu_family--$model_name" in
*
Pentium
*
III
*
CPU
*
)
cpu_flag
=
"pentium3"
;
;;
*
Pentium
*
M
*
pro
*
)
cpu_flag
=
"pentium-m"
;
;;
*
Athlon
*
64
*
)
cpu_flag
=
"athlon64"
;
cpu_flag_old
=
"athlon"
;
...
...
BitKeeper/etc/logging_ok
View file @
12b4fb15
...
...
@@ -279,6 +279,7 @@ tonu@x3.internalnet
tsmith@build.mysql.com
tulin@build.mysql.com
tulin@dl145b.mysql.com
tulin@dl145c.mysql.com
tulin@mysql.com
ulli@morbus.(none)
venu@hundin.mysql.fi
...
...
mysql-test/r/information_schema_db.result
0 → 100644
View file @
12b4fb15
use INFORMATION_SCHEMA;
show tables;
Tables_in_INFORMATION_SCHEMA
SCHEMATA
TABLES
COLUMNS
CHARACTER_SETS
COLLATIONS
COLLATION_CHARACTER_SET_APPLICABILITY
ROUTINES
STATISTICS
VIEWS
USER_PRIVILEGES
SCHEMA_PRIVILEGES
TABLE_PRIVILEGES
COLUMN_PRIVILEGES
TABLE_CONSTRAINTS
KEY_COLUMN_USAGE
show tables from INFORMATION_SCHEMA like 'T%';
Tables_in_INFORMATION_SCHEMA (T%)
TABLES
TABLE_PRIVILEGES
TABLE_CONSTRAINTS
create database `inf%`;
use `inf%`;
show tables;
Tables_in_inf%
drop database `inf%`;
mysql-test/r/rpl_sp.result
View file @
12b4fb15
...
...
@@ -158,9 +158,6 @@ a
select * from t2;
a
3
select if(compte<>3,"this is broken but documented","this unexpectedly works?") from (select count(*) as compte from t2) as aggreg;
if(compte<>3,"this is broken but documented","this unexpectedly works?")
this is broken but documented
select * from mysql.proc where name="foo4" and db='mysqltest1';
db name type specific_name language sql_data_access is_deterministic security_type param_list returns body definer created modified sql_mode comment
mysqltest1 foo4 PROCEDURE foo4 SQL CONTAINS_SQL YES INVOKER begin
...
...
@@ -197,9 +194,6 @@ a
select * from t1;
a
21
select if(compte<>1,"this is broken but documented","this unexpectedly works?") from (select count(*) as compte from t1 where a=20) as aggreg;
if(compte<>1,"this is broken but documented","this unexpectedly works?")
this is broken but documented
select * from t2;
a
23
...
...
@@ -230,6 +224,35 @@ db name type specific_name language sql_data_access is_deterministic security_ty
mysqltest1 fn1 FUNCTION fn1 SQL CONTAINS_SQL YES DEFINER int(11) begin
return unix_timestamp();
end @ # #
create trigger trg before insert on t1 for each row set new.a= 10;
ERROR 42000: Access denied; you need the SUPER privilege for this operation
flush logs;
delete from t1;
create trigger trg before insert on t1 for each row set new.a= 10;
insert into t1 values (1);
select * from t1;
a
10
select * from t1;
a
10
delete from t1;
drop trigger t1.trg;
insert into t1 values (1);
select * from t1;
a
1
show binlog events in 'master-bin.000002' from 98;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000002 # Query 1 # use `mysqltest1`; delete from t1
master-bin.000002 # Query 1 # use `mysqltest1`; create trigger trg before insert on t1 for each row set new.a= 10
master-bin.000002 # Query 1 # use `mysqltest1`; insert into t1 values (1)
master-bin.000002 # Query 1 # use `mysqltest1`; delete from t1
master-bin.000002 # Query 1 # use `mysqltest1`; drop trigger t1.trg
master-bin.000002 # Query 1 # use `mysqltest1`; insert into t1 values (1)
select * from t1;
a
1
drop function fn1;
drop database mysqltest1;
drop user "zedjzlcsjhd"@127.0.0.1;
mysql-test/r/type_newdecimal.result
View file @
12b4fb15
...
...
@@ -863,3 +863,16 @@ select 0.190287977636363637 + 0.040372670 * 0 - 0;
select -0.123 * 0;
-0.123 * 0
0.000
CREATE TABLE t1 (f1 DECIMAL (12,9), f2 DECIMAL(2,2));
INSERT INTO t1 VALUES (10.5, 0);
UPDATE t1 SET f1 = 4.5;
SELECT * FROM t1;
f1 f2
4.500000000 0.00
DROP TABLE t1;
CREATE TABLE t1 (f1 DECIMAL (64,20), f2 DECIMAL(2,2));
INSERT INTO t1 VALUES (9999999999999999999999999999999999, 0);
SELECT * FROM t1;
f1 f2
9999999999999999999999999999999999.00000000000000000000 0.00
DROP TABLE t1;
mysql-test/t/information_schema_db.test
0 → 100644
View file @
12b4fb15
--
source
include
/
testdb_only
.
inc
use
INFORMATION_SCHEMA
;
show
tables
;
show
tables
from
INFORMATION_SCHEMA
like
'T%'
;
create
database
`inf%`
;
use
`inf%`
;
show
tables
;
drop
database
`inf%`
;
mysql-test/t/range.test
View file @
12b4fb15
...
...
@@ -437,6 +437,7 @@ explain select * from t1 where a='aaa' collate latin1_german1_ci;
drop
table
t1
;
# Test for BUG#9348 "result for WHERE A AND (B OR C) differs from WHERE a AND (C OR B)"
--
disable_warnings
CREATE
TABLE
t1
(
`CLIENT`
char
(
3
)
character
set
latin1
collate
latin1_bin
NOT
NULL
default
'000'
,
`ARG1`
char
(
3
)
character
set
latin1
collate
latin1_bin
NOT
NULL
default
''
,
...
...
@@ -445,6 +446,7 @@ CREATE TABLE t1 (
`FUNCTINT`
int
(
11
)
NOT
NULL
default
'0'
,
KEY
`VERI_CLNT~2`
(
`ARG1`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
latin1
;
--
enable_warnings
INSERT
INTO
t1
VALUES
(
'000'
,
' 0'
,
' 0'
,
'Text 001'
,
0
),
(
'000'
,
' 0'
,
' 1'
,
'Text 002'
,
0
),
(
'000'
,
' 1'
,
' 2'
,
'Text 003'
,
0
),
(
'000'
,
' 2'
,
' 3'
,
'Text 004'
,
0
),
...
...
mysql-test/t/rpl_sp.test
View file @
12b4fb15
...
...
@@ -157,7 +157,6 @@ select * from t2;
sync_slave_with_master
;
select
*
from
t1
;
select
*
from
t2
;
select
if
(
compte
<>
3
,
"this is broken but documented"
,
"this unexpectedly works?"
)
from
(
select
count
(
*
)
as
compte
from
t2
)
as
aggreg
;
# Test of DROP PROCEDURE
...
...
@@ -194,7 +193,6 @@ select * from t1;
select
*
from
t2
;
sync_slave_with_master
;
select
*
from
t1
;
select
if
(
compte
<>
1
,
"this is broken but documented"
,
"this unexpectedly works?"
)
from
(
select
count
(
*
)
as
compte
from
t1
where
a
=
20
)
as
aggreg
;
select
*
from
t2
;
connection
master
;
...
...
@@ -225,6 +223,40 @@ select * from t1;
--
replace_column
13
# 14 #
select
*
from
mysql
.
proc
where
db
=
'mysqltest1'
;
# And now triggers
connection
con1
;
--
error
1227
;
create
trigger
trg
before
insert
on
t1
for
each
row
set
new
.
a
=
10
;
connection
master
;
# fn1() above uses timestamps, so in !ps-protocol, the timezone will be
# binlogged, but in --ps-protocol it will not be (BUG#9359) so
# the binlog offsets get shifted which spoils SHOW BINLOG EVENTS.
# To be immune, we take a new binlog.
flush
logs
;
delete
from
t1
;
# TODO: when triggers can contain an update, test that this update
# does not go into binlog.
# I'm not setting user vars in the trigger, because replication of user vars
# would take care of propagating the user var's value to slave, so even if
# the trigger was not executed on slave it would not be discovered.
create
trigger
trg
before
insert
on
t1
for
each
row
set
new
.
a
=
10
;
insert
into
t1
values
(
1
);
select
*
from
t1
;
sync_slave_with_master
;
select
*
from
t1
;
connection
master
;
delete
from
t1
;
drop
trigger
t1
.
trg
;
insert
into
t1
values
(
1
);
select
*
from
t1
;
--
replace_column
2
# 5 #
show
binlog
events
in
'master-bin.000002'
from
98
;
sync_slave_with_master
;
select
*
from
t1
;
# Clean up
connection
master
;
...
...
mysql-test/t/type_newdecimal.test
View file @
12b4fb15
...
...
@@ -892,3 +892,17 @@ select 0.190287977636363637 + 0.040372670 * 0 - 0;
# Bug #9527
#
select
-
0.123
*
0
;
#
# Bug #10232
#
CREATE
TABLE
t1
(
f1
DECIMAL
(
12
,
9
),
f2
DECIMAL
(
2
,
2
));
INSERT
INTO
t1
VALUES
(
10.5
,
0
);
UPDATE
t1
SET
f1
=
4.5
;
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
f1
DECIMAL
(
64
,
20
),
f2
DECIMAL
(
2
,
2
));
INSERT
INTO
t1
VALUES
(
9999999999999999999999999999999999
,
0
);
SELECT
*
FROM
t1
;
DROP
TABLE
t1
;
sql/item_strfunc.h
View file @
12b4fb15
...
...
@@ -18,7 +18,6 @@
/* This file defines all string functions */
#ifdef USE_PRAGMA_INTERFACE
#error PRAGMA
#pragma interface
/* gcc class implementation */
#endif
...
...
sql/sql_show.cc
View file @
12b4fb15
...
...
@@ -1779,32 +1779,77 @@ enum enum_schema_tables get_schema_table_idx(ST_SCHEMA_TABLE *schema_table)
/*
Add 'information_schema' name to db_names
list
Create db names list. Information schema name always is first in
list
SYNOPSIS
schema_db_add
()
make_db_list
()
thd thread handler
files list of db names
wild wild string
idx_field_vals idx_field_vals->db_name contains db name or
wild string
with_i_schema returns 1 if we added 'IS' name to list
otherwise returns 0
is_wild_value if value is 1 then idx_field_vals->db_name is
wild string otherwise it's db name;
RETURN
1 error
0 success
*/
int
schema_db_add
(
THD
*
thd
,
List
<
char
>
*
files
,
const
char
*
wild
,
bool
*
with_i_schema
)
int
make_db_list
(
THD
*
thd
,
List
<
char
>
*
files
,
INDEX_FIELD_VALUES
*
idx_field_vals
,
bool
*
with_i_schema
,
bool
is_wild_value
)
{
LEX
*
lex
=
thd
->
lex
;
*
with_i_schema
=
0
;
if
(
!
wild
||
!
wild_compare
(
information_schema_name
.
str
,
wild
,
0
))
get_index_field_values
(
lex
,
idx_field_vals
);
if
(
is_wild_value
)
{
*
with_i_schema
=
1
;
if
(
files
->
push_back
(
thd
->
strdup
(
information_schema_name
.
str
)))
return
1
;
/*
This part of code is only for SHOW DATABASES command.
idx_field_vals->db_value can be 0 when we don't use
LIKE clause (see also get_index_field_values() function)
*/
if
(
!
idx_field_vals
->
db_value
||
!
wild_case_compare
(
system_charset_info
,
information_schema_name
.
str
,
idx_field_vals
->
db_value
))
{
*
with_i_schema
=
1
;
if
(
files
->
push_back
(
thd
->
strdup
(
information_schema_name
.
str
)))
return
1
;
}
return
mysql_find_files
(
thd
,
files
,
NullS
,
mysql_data_home
,
idx_field_vals
->
db_value
,
1
);
}
return
0
;
/*
This part of code is for SHOW TABLES, SHOW TABLE STATUS commands.
idx_field_vals->db_value can't be 0 (see get_index_field_values()
function). lex->orig_sql_command can be not equal to SQLCOM_END
only in case of executing of SHOW commands.
*/
if
(
lex
->
orig_sql_command
!=
SQLCOM_END
)
{
if
(
!
my_strcasecmp
(
system_charset_info
,
information_schema_name
.
str
,
idx_field_vals
->
db_value
))
{
*
with_i_schema
=
1
;
return
files
->
push_back
(
thd
->
strdup
(
information_schema_name
.
str
));
}
return
files
->
push_back
(
thd
->
strdup
(
idx_field_vals
->
db_value
));
}
/*
Create list of existing databases. It is used in case
of select from information schema table
*/
if
(
files
->
push_back
(
thd
->
strdup
(
information_schema_name
.
str
)))
return
1
;
*
with_i_schema
=
1
;
return
mysql_find_files
(
thd
,
files
,
NullS
,
mysql_data_home
,
NullS
,
1
);
}
...
...
@@ -1882,14 +1927,9 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
if
(
schema_table_idx
==
SCH_TABLES
)
lock_type
=
TL_READ
;
get_index_field_values
(
lex
,
&
idx_field_vals
);
/* information schema name always is first in list */
if
(
schema_db_add
(
thd
,
&
bases
,
idx_field_vals
.
db_value
,
&
with_i_schema
))
goto
err
;
if
(
m
ysql_find_files
(
thd
,
&
bases
,
NullS
,
mysql_data_home
,
idx_field_vals
.
db_value
,
1
))
if
(
m
ake_db_list
(
thd
,
&
bases
,
&
idx_field_vals
,
&
with_i_schema
,
0
))
goto
err
;
partial_cond
=
make_cond_for_info_schema
(
cond
,
tables
);
...
...
@@ -2025,13 +2065,10 @@ int fill_schema_shemata(THD *thd, TABLE_LIST *tables, COND *cond)
TABLE
*
table
=
tables
->
table
;
DBUG_ENTER
(
"fill_schema_shemata"
);
get_index_field_values
(
thd
->
lex
,
&
idx_field_vals
);
/* information schema name always is first in list */
if
(
schema_db_add
(
thd
,
&
files
,
idx_field_vals
.
db_value
,
&
with_i_schema
))
DBUG_RETURN
(
1
);
if
(
mysql_find_files
(
thd
,
&
files
,
NullS
,
mysql_data_home
,
idx_field_vals
.
db_value
,
1
))
if
(
make_db_list
(
thd
,
&
files
,
&
idx_field_vals
,
&
with_i_schema
,
1
))
DBUG_RETURN
(
1
);
List_iterator_fast
<
char
>
it
(
files
);
while
((
file_name
=
it
++
))
{
...
...
sql/sql_trigger.cc
View file @
12b4fb15
...
...
@@ -98,6 +98,21 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create)
if
(
wait_if_global_read_lock
(
thd
,
0
,
0
))
DBUG_RETURN
(
TRUE
);
/*
There is no DETERMINISTIC clause for triggers, so can't check it.
But a trigger can in theory be used to do nasty things (if it supported
DROP for example) so we do the check for privileges. For now there is
already a stronger test above (see start of the function); but when this
stronger test will be removed, the test below will hold.
*/
if
(
!
trust_routine_creators
&&
mysql_bin_log
.
is_open
()
&&
!
(
thd
->
master_access
&
SUPER_ACL
))
{
my_message
(
ER_BINLOG_CREATE_ROUTINE_NEED_SUPER
,
ER
(
ER_BINLOG_CREATE_ROUTINE_NEED_SUPER
),
MYF
(
0
));
DBUG_RETURN
(
TRUE
);
}
VOID
(
pthread_mutex_lock
(
&
LOCK_open
));
result
=
(
create
?
table
->
triggers
->
create_trigger
(
thd
,
tables
)
:
...
...
@@ -109,7 +124,16 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create)
start_waiting_global_read_lock
(
thd
);
if
(
!
result
)
send_ok
(
thd
);
{
if
(
mysql_bin_log
.
is_open
())
{
thd
->
clear_error
();
/* Such a statement can always go directly to binlog, no trans cache */
Query_log_event
qinfo
(
thd
,
thd
->
query
,
thd
->
query_length
,
0
,
FALSE
);
mysql_bin_log
.
write
(
&
qinfo
);
}
send_ok
(
thd
);
}
DBUG_RETURN
(
result
);
}
...
...
sql/sql_trigger.h
View file @
12b4fb15
...
...
@@ -52,7 +52,15 @@ class Table_triggers_list: public Sql_alloc
FIXME: We should juggle with security context here (because trigger
should be invoked with creator rights).
*/
/*
We disable binlogging, as in SP/functions, even though currently
triggers can't do updates. When triggers can do updates, someone
should add such a trigger to rpl_sp.test to verify that the update
does NOT go into binlog.
*/
tmp_disable_binlog
(
thd
);
res
=
bodies
[
event
][
time_type
]
->
execute_function
(
thd
,
0
,
0
,
0
);
reenable_binlog
(
thd
);
#ifndef EMBEDDED_LIBRARY
thd
->
net
.
no_send_ok
=
nsok
;
...
...
storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp
View file @
12b4fb15
...
...
@@ -443,6 +443,7 @@ Dbtup::commitRecord(Signal* signal,
saveAttributeMask
.
bitOR
(
befOpPtr
.
p
->
changeMask
);
befOpPtr
.
p
->
changeMask
.
clear
();
befOpPtr
.
p
->
changeMask
.
bitOR
(
attributeMask
);
befOpPtr
.
p
->
gci
=
regOperPtr
->
gci
;
operPtr
.
p
=
befOpPtr
.
p
;
checkDetachedTriggers
(
signal
,
...
...
@@ -480,6 +481,7 @@ Dbtup::commitRecord(Signal* signal,
befOpPtr
.
p
->
pageOffset
=
befOpPtr
.
p
->
pageOffsetC
;
befOpPtr
.
p
->
fragPageId
=
befOpPtr
.
p
->
fragPageIdC
;
befOpPtr
.
p
->
pageIndex
=
befOpPtr
.
p
->
pageIndexC
;
befOpPtr
.
p
->
gci
=
regOperPtr
->
gci
;
operPtr
.
p
=
befOpPtr
.
p
;
checkDetachedTriggers
(
signal
,
...
...
storage/ndb/src/ndbapi/ClusterMgr.cpp
View file @
12b4fb15
...
...
@@ -463,7 +463,8 @@ ClusterMgr::reportNodeFailed(NodeId nodeId){
}
theNode
.
nfCompleteRep
=
false
;
if
(
noOfAliveNodes
==
0
){
if
(
noOfAliveNodes
==
0
)
{
NFCompleteRep
rep
;
for
(
Uint32
i
=
1
;
i
<
MAX_NODES
;
i
++
){
if
(
theNodes
[
i
].
defined
&&
theNodes
[
i
].
nfCompleteRep
==
false
){
...
...
strings/decimal.c
View file @
12b4fb15
...
...
@@ -1162,6 +1162,8 @@ int decimal2bin(decimal_t *from, char *to, int precision, int frac)
isize0
=
intg0
*
sizeof
(
dec1
)
+
dig2bytes
[
intg0x
],
fsize0
=
frac0
*
sizeof
(
dec1
)
+
dig2bytes
[
frac0x
],
fsize1
=
frac1
*
sizeof
(
dec1
)
+
dig2bytes
[
frac1x
];
const
int
orig_isize0
=
isize0
;
const
int
orig_fsize0
=
fsize0
;
char
*
orig_to
=
to
;
buf1
=
remove_leading_zeroes
(
from
,
&
from_intg
);
...
...
@@ -1252,10 +1254,15 @@ int decimal2bin(decimal_t *from, char *to, int precision, int frac)
}
if
(
fsize0
>
fsize1
)
{
while
(
fsize0
--
>
fsize1
)
char
*
to_end
=
orig_to
+
orig_fsize0
+
orig_isize0
;
while
(
fsize0
--
>
fsize1
&&
to
<
to_end
)
*
to
++=
(
uchar
)
mask
;
}
orig_to
[
0
]
^=
0x80
;
/* Check that we have written the whole decimal and nothing more */
DBUG_ASSERT
(
to
==
orig_to
+
orig_fsize0
+
orig_isize0
);
return
error
;
}
...
...
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