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
da0c7297
Commit
da0c7297
authored
Apr 27, 2011
by
Georgi Kodinov
Browse files
Options
Browse Files
Download
Plain Diff
merge 5.1-security->5.5-security
parents
9cadf9f6
be9fba49
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
0 additions
and
484 deletions
+0
-484
storage/ndb/test/sql/BANK.sql
storage/ndb/test/sql/BANK.sql
+0
-44
storage/ndb/test/sql/T1.sql
storage/ndb/test/sql/T1.sql
+0
-9
storage/ndb/test/sql/test_create_drop.pl
storage/ndb/test/sql/test_create_drop.pl
+0
-196
storage/ndb/test/sql/test_range_bounds.pl
storage/ndb/test/sql/test_range_bounds.pl
+0
-235
No files found.
storage/ndb/test/sql/BANK.sql
deleted
100644 → 0
View file @
9cadf9f6
CREATE
DATABASE
IF
NOT
EXISTS
BANK
default
charset
=
latin1
default
collate
=
latin1_bin
;
USE
BANK
;
DROP
TABLE
IF
EXISTS
GL
;
CREATE
TABLE
GL
(
TIME
BIGINT
UNSIGNED
NOT
NULL
,
ACCOUNT_TYPE
INT
UNSIGNED
NOT
NULL
,
BALANCE
INT
UNSIGNED
NOT
NULL
,
DEPOSIT_COUNT
INT
UNSIGNED
NOT
NULL
,
DEPOSIT_SUM
INT
UNSIGNED
NOT
NULL
,
WITHDRAWAL_COUNT
INT
UNSIGNED
NOT
NULL
,
WITHDRAWAL_SUM
INT
UNSIGNED
NOT
NULL
,
PURGED
INT
UNSIGNED
NOT
NULL
,
PRIMARY
KEY
USING
HASH
(
TIME
,
ACCOUNT_TYPE
))
ENGINE
=
NDB
;
DROP
TABLE
IF
EXISTS
ACCOUNT
;
CREATE
TABLE
ACCOUNT
(
ACCOUNT_ID
INT
UNSIGNED
NOT
NULL
,
OWNER
INT
UNSIGNED
NOT
NULL
,
BALANCE
INT
UNSIGNED
NOT
NULL
,
ACCOUNT_TYPE
INT
UNSIGNED
NOT
NULL
,
PRIMARY
KEY
USING
HASH
(
ACCOUNT_ID
))
ENGINE
=
NDB
;
DROP
TABLE
IF
EXISTS
TRANSACTION
;
CREATE
TABLE
TRANSACTION
(
TRANSACTION_ID
BIGINT
UNSIGNED
NOT
NULL
,
ACCOUNT
INT
UNSIGNED
NOT
NULL
,
ACCOUNT_TYPE
INT
UNSIGNED
NOT
NULL
,
OTHER_ACCOUNT
INT
UNSIGNED
NOT
NULL
,
TRANSACTION_TYPE
INT
UNSIGNED
NOT
NULL
,
TIME
BIGINT
UNSIGNED
NOT
NULL
,
AMOUNT
INT
UNSIGNED
NOT
NULL
,
PRIMARY
KEY
USING
HASH
(
TRANSACTION_ID
,
ACCOUNT
))
ENGINE
=
NDB
;
DROP
TABLE
IF
EXISTS
SYSTEM_VALUES
;
CREATE
TABLE
SYSTEM_VALUES
(
SYSTEM_VALUES_ID
INT
UNSIGNED
NOT
NULL
,
VALUE
BIGINT
UNSIGNED
NOT
NULL
,
PRIMARY
KEY
USING
HASH
(
SYSTEM_VALUES_ID
))
ENGINE
=
NDB
;
DROP
TABLE
IF
EXISTS
ACCOUNT_TYPE
;
CREATE
TABLE
ACCOUNT_TYPE
(
ACCOUNT_TYPE_ID
INT
UNSIGNED
NOT
NULL
,
DESCRIPTION
CHAR
(
64
)
NOT
NULL
,
PRIMARY
KEY
USING
HASH
(
ACCOUNT_TYPE_ID
))
ENGINE
=
NDB
;
storage/ndb/test/sql/T1.sql
deleted
100644 → 0
View file @
9cadf9f6
create
database
if
not
exists
TEST_DB
;
use
TEST_DB
;
drop
table
if
exists
T1
;
create
table
T1
(
KOL1
int
unsigned
not
null
,
KOL2
int
unsigned
not
null
,
KOL3
int
unsigned
not
null
,
KOL4
int
unsigned
not
null
,
KOL5
int
unsigned
not
null
,
primary
key
using
hash
(
KOL1
))
engine
=
ndb
;
storage/ndb/test/sql/test_create_drop.pl
deleted
100644 → 0
View file @
9cadf9f6
# Copyright (C) 2005 MySQL AB
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; version 2
# of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the Free
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
# MA 02111-1307, USA
use
strict
;
use
IO::
Socket
;
use
DBI
;
# mgm info
my
$mgmhost
=
"
localhost
";
my
$mgmport
=
38101
;
# location of ndb_x_fs
my
$datadir
=
"
c2
";
my
@schemafiles
=
<
$datadir
/ndb_*_fs/
D
[
12
]
/DBDICT/
P0
.
SchemaLog
>
;
@schemafiles
or
die
"
no schemafiles in
$datadir
";
my
$dsn
;
$dsn
=
"
dbi:mysql:test:localhost;port=38100
";
# this works better for me
my
$cnf
=
$ENV
{
MYSQL_HOME
}
.
"
/var/my.cnf
";
$dsn
=
"
dbi:mysql:database=test;host=localhost;mysql_read_default_file=
$cnf
";
my
$dbh
;
$dbh
=
DBI
->
connect
(
$dsn
,
'
root
',
undef
,
{
RaiseError
=>
0
,
PrintError
=>
0
});
$dbh
or
die
$
DBI::
errstr
;
# mgm commands
my
$mgm
=
undef
;
sub
mgmconnect
{
$mgm
=
IO::Socket::
INET
->
new
(
Proto
=>
"
tcp
",
PeerHost
=>
$mgmhost
,
PeerPort
=>
$mgmport
);
$mgm
or
die
"
connect to mgm failed: $!
";
$mgm
->
autoflush
(
1
);
};
mgmconnect
();
warn
"
connected to mgm
$mgmhost
$mgmport
\n
";
my
$nodeinfo
=
{};
sub
getnodeinfo
{
$nodeinfo
=
{};
$mgm
->
print
("
get status
\n
");
$mgm
->
print
("
\n
");
while
(
defined
(
$_
=
$mgm
->
getline
))
{
/^node\s+status/
&&
last
;
}
while
(
defined
(
$_
=
$mgm
->
getline
))
{
/^\s*$/
&&
last
;
/^node\.(\d+)\.(\w+):\s*(\S+)/
&&
(
$nodeinfo
->
{
$1
}{
$2
}
=
$3
);
}
}
getnodeinfo
();
my
@dbnode
=
();
for
my
$n
(
keys
%
$nodeinfo
)
{
my
$p
=
$nodeinfo
->
{
$n
};
(
$p
->
{
type
}
eq
'
NDB
')
&&
push
(
@dbnode
,
$n
);
}
@dbnode
=
sort
{
$a
<=>
$b
}
@dbnode
;
@dbnode
or
die
"
mgm error, found no db nodes
";
warn
"
db nodes:
@dbnode
\n
";
sub
restartnode
{
my
(
$n
,
$initialstart
)
=
@_
;
warn
"
restart node
$n
initialstart=
$initialstart
\n
";
$mgm
->
print
("
restart node
\n
");
$mgm
->
print
("
node:
$n
\n
");
$mgm
->
print
("
initialstart:
$initialstart
\n
");
$mgm
->
print
("
\n
");
while
(
1
)
{
sleep
5
;
getnodeinfo
();
my
$status
=
$nodeinfo
->
{
$n
}{
status
};
my
$sp
=
$nodeinfo
->
{
$n
}{
startphase
};
warn
"
node
$n
status:
$status
sp:
$sp
\n
";
last
if
$status
eq
'
STARTED
';
}
}
sub
restartall
{
warn
"
restart all
\n
";
$mgm
->
print
("
restart all
\n
");
$mgm
->
print
("
\n
");
while
(
1
)
{
sleep
5
;
getnodeinfo
();
my
$ok
=
1
;
for
my
$n
(
@dbnode
)
{
my
$status
=
$nodeinfo
->
{
$n
}{
status
};
my
$sp
=
$nodeinfo
->
{
$n
}{
startphase
};
warn
"
node
$n
status:
$status
sp:
$sp
\n
";
$ok
=
0
if
$status
ne
'
STARTED
';
}
last
if
$ok
;
}
}
# the sql stuff
my
$maxtab
=
300
;
my
@tab
=
();
sub
create
{
my
(
$n
)
=
@_
;
my
$sql
=
"
create table t
$n
(a int primary key, b varchar(20), key (b)) engine=ndb
";
warn
"
create t
$n
\n
";
$dbh
->
do
(
$sql
)
or
die
"
$sql
\n
$DBI
::errstr
";
}
sub
drop
{
my
(
$n
)
=
@_
;
my
$sql
=
"
drop table t
$n
";
warn
"
drop t
$n
\n
";
$dbh
->
do
(
$sql
)
or
die
"
$sql
\n
$DBI
::errstr
";
}
sub
dropall
{
for
my
$n
(
0
..
(
$maxtab
-
1
))
{
my
$sql
=
"
drop table if exists t
$n
";
$dbh
->
do
(
$sql
)
or
die
"
$sql
\n
$DBI
::errstr
";
}
}
sub
createdrop
{
my
$n
=
int
(
rand
(
$maxtab
));
if
(
!
$tab
[
$n
])
{
create
(
$n
);
$tab
[
$n
]
=
1
;
}
else
{
drop
(
$n
);
$tab
[
$n
]
=
0
;
}
}
sub
checkschemafiles
{
system
("
printSchemaFile -ce
@schemafiles
");
$?
==
0
or
die
"
schemafiles check failed
";
}
sub
randomrestart
{
my
(
$k
)
=
@_
;
my
$s
=
int
(
rand
(
500
));
if
(
$s
<
2
)
{
my
$i
=
$k
%
scalar
(
@dbnode
);
my
$n
=
$dbnode
[
$i
];
my
$initialstart
=
(
$s
<
1
?
0
:
1
);
restartnode
(
$n
,
$initialstart
);
return
1
;
}
if
(
$s
<
3
)
{
restartall
();
return
1
;
}
return
0
;
}
# deterministic
srand
(
1
);
warn
"
drop any old tables
\n
";
dropall
();
my
$loop
=
1000000
;
for
my
$k
(
0
..
(
$loop
-
1
))
{
warn
"
$k
\n
";
createdrop
();
checkschemafiles
();
if
(
randomrestart
(
$k
))
{
checkschemafiles
();
}
}
$dbh
->
disconnect
or
die
$
DBI::
errstr
;
# vim: set sw=2:
storage/ndb/test/sql/test_range_bounds.pl
deleted
100644 → 0
View file @
9cadf9f6
# Copyright (C) 2005 MySQL AB
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; version 2
# of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the Free
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
# MA 02111-1307, USA
#
# test range scan bounds
# give option --all to test all cases
# set MYSQL_HOME to installation top
#
use
strict
;
use
integer
;
use
Getopt::
Long
;
use
DBI
;
my
$opt_all
=
0
;
my
$opt_cnt
=
5
;
my
$opt_verbose
=
0
;
GetOptions
("
all
"
=>
\
$opt_all
,
"
cnt=i
"
=>
\
$opt_cnt
,
"
verbose
"
=>
\
$opt_verbose
)
or
die
"
options are: --all --cnt=N --verbose
";
my
$mysql_home
=
$ENV
{
MYSQL_HOME
};
defined
(
$mysql_home
)
or
die
"
no MYSQL_HOME
";
my
$dsn
=
"
dbi:mysql:database=test;host=localhost;mysql_read_default_file=
$mysql_home
/var/my.cnf
";
my
$opts
=
{
RaiseError
=>
0
,
PrintError
=>
0
,
AutoCommit
=>
1
,
};
my
$dbh
;
my
$sth
;
my
$sql
;
$dbh
=
DBI
->
connect
(
$dsn
,
"
root
",
undef
,
$opts
)
or
die
$
DBI::
errstr
;
my
$table
=
'
t
';
$sql
=
"
drop table if exists
$table
";
$dbh
->
do
(
$sql
)
or
die
$
DBI::
errstr
;
sub
cut
($$$)
{
my
(
$op
,
$key
,
$val
)
=
@_
;
$op
=
'
==
'
if
$op
eq
'
=
';
my
(
@w
)
=
@$val
;
eval
"
\
@w
= grep(
\
$_
$op
$key
,
\
@w
)
";
$@
and
die
$@
;
return
[
@w
];
}
sub
mkdummy
($)
{
my
(
$val
)
=
@_
;
return
{
'
dummy
'
=>
1
,
'
exp
'
=>
'
9 = 9
',
'
res
'
=>
$val
,
};
}
sub
mkone
($$$$)
{
my
(
$col
,
$op
,
$key
,
$val
)
=
@_
;
my
$res
=
cut
(
$op
,
$key
,
$val
);
return
{
'
exp
'
=>
"
$col
$op
$key
",
'
res
'
=>
$res
,
};
}
sub
mktwo
($$$$$$)
{
my
(
$col
,
$op1
,
$key1
,
$op2
,
$key2
,
$val
)
=
@_
;
my
$res
=
cut
(
$op2
,
$key2
,
cut
(
$op1
,
$key1
,
$val
));
return
{
'
exp
'
=>
"
$col
$op1
$key1
and
$col
$op2
$key2
",
'
res
'
=>
$res
,
};
}
sub
mkall
($$$$)
{
my
(
$col
,
$key1
,
$key2
,
$val
)
=
@_
;
my
@a
=
();
my
$p
=
mkdummy
(
$val
);
push
(
@a
,
$p
)
if
$opt_all
;
my
@ops
=
qw(< <= = >= >)
;
for
my
$op
(
@ops
)
{
my
$p
=
mkone
(
$col
,
$op
,
$key1
,
$val
);
push
(
@a
,
$p
)
if
$opt_all
||
@
{
$p
->
{
res
}}
!=
0
;
}
my
@ops1
=
$opt_all
?
@ops
:
qw(= >= >)
;
my
@ops2
=
$opt_all
?
@ops
:
qw(<= <)
;
for
my
$op1
(
@ops1
)
{
for
my
$op2
(
@ops2
)
{
my
$p
=
mktwo
(
$col
,
$op1
,
$key1
,
$op2
,
$key2
,
$val
);
push
(
@a
,
$p
)
if
$opt_all
||
@
{
$p
->
{
res
}}
!=
0
;
}
}
warn
scalar
(
@a
)
.
"
cases
\n
"
if
$opt_verbose
;
return
\
@a
;
}
my
$casecnt
=
0
;
sub
verify
($$$)
{
my
(
$sql
,
$ord
,
$res
)
=
@_
;
warn
"
$sql
\n
"
if
$opt_verbose
;
$sth
=
$dbh
->
prepare
(
$sql
)
or
die
"
prepare:
$sql
:
$DBI
::errstr
";
$sth
->
execute
()
or
die
"
execute:
$sql
:
$DBI
::errstr
";
#
# BUG: execute can return success on error so check again
#
$sth
->
err
and
die
"
execute:
$sql
:
$DBI
::errstr
";
my
@out
=
();
for
my
$b
(
@
{
$res
->
[
0
]})
{
for
my
$c
(
@
{
$res
->
[
1
]})
{
for
my
$d
(
@
{
$res
->
[
2
]})
{
push
(
@out
,
[
$b
,
$c
,
$d
]);
}
}
}
if
(
$ord
)
{
@out
=
sort
{
$ord
*
(
$a
->
[
0
]
-
$b
->
[
0
])
||
$ord
*
(
$a
->
[
1
]
-
$b
->
[
1
])
||
$ord
*
(
$a
->
[
2
]
-
$b
->
[
2
])
||
0
}
@out
;
}
my
$cnt
=
scalar
@out
;
my
$n
=
0
;
while
(
1
)
{
my
$row
=
$sth
->
fetchrow_arrayref
;
$row
||
last
;
@$row
==
3
or
die
"
bad row:
$sql
: @
$row
";
for
my
$v
(
@$row
)
{
$v
=~
s/^\s+|\s+$//g
;
$v
=~
/^\d+$/
or
die
"
bad value:
$sql
:
$v
";
}
if
(
$ord
)
{
my
$out
=
$out
[
$n
];
$row
->
[
0
]
==
$out
->
[
0
]
&&
$row
->
[
1
]
==
$out
->
[
1
]
&&
$row
->
[
2
]
==
$out
->
[
2
]
or
die
"
$sql
: row
$n
: got row @
$row
!= @
$out
";
}
$n
++
;
}
$sth
->
err
and
die
"
fetch:
$sql
:
$DBI
::errstr
";
$n
==
$cnt
or
die
"
verify:
$sql
: got row count
$n
!=
$cnt
";
$casecnt
++
;
}
for
my
$nn
("
bcd
",
"")
{
my
%
nn
;
for
my
$x
(
qw(b c d)
)
{
$nn
{
$x
}
=
$nn
=~
/$x/
?
"
not null
"
:
"
null
";
}
warn
"
create table
\n
";
$sql
=
<<EOF;
create table $table (
a int primary key,
b int $nn{b},
c int $nn{c},
d int $nn{d},
index (b, c, d)
) engine=ndb
EOF
$dbh
->
do
(
$sql
)
or
die
$
DBI::
errstr
;
warn
"
insert
\n
";
$sql
=
"
insert into
$table
values(?, ?, ?, ?)
";
$sth
=
$dbh
->
prepare
(
$sql
)
or
die
$
DBI::
errstr
;
my
@val
=
(
0
..
(
$opt_cnt
-
1
));
my
$v0
=
0
;
for
my
$v1
(
@val
)
{
for
my
$v2
(
@val
)
{
for
my
$v3
(
@val
)
{
$sth
->
bind_param
(
1
,
$v0
)
or
die
$
DBI::
errstr
;
$sth
->
bind_param
(
2
,
$v1
)
or
die
$
DBI::
errstr
;
$sth
->
bind_param
(
3
,
$v2
)
or
die
$
DBI::
errstr
;
$sth
->
bind_param
(
4
,
$v3
)
or
die
$
DBI::
errstr
;
$sth
->
execute
or
die
$
DBI::
errstr
;
$v0
++
;
}
}
}
warn
"
generate cases
\n
";
my
$key1
=
1
;
my
$key2
=
3
;
my
$a1
=
mkall
('
b
',
$key1
,
$key2
,
\
@val
);
my
$a2
=
mkall
('
c
',
$key1
,
$key2
,
\
@val
);
my
$a3
=
mkall
('
d
',
$key1
,
$key2
,
\
@val
);
warn
"
select
\n
";
for
my
$ord
(
0
,
+
1
,
-
1
)
{
my
$orderby
=
$ord
==
0
?
""
:
$ord
==
+
1
?
"
order by b, c, d
"
:
$ord
==
-
1
?
"
order by b desc, c desc, d desc
"
:
die
"
not here
";
for
my
$p1
(
@$a1
)
{
my
$res
=
[
$p1
->
{
res
},
\
@val
,
\
@val
];
$sql
=
"
select b, c, d from
$table
"
.
"
where
$p1
->{exp}
"
.
$orderby
;
verify
(
$sql
,
$ord
,
$res
);
for
my
$p2
(
@$a2
)
{
my
$res
=
[
$p1
->
{
res
},
$p2
->
{
res
},
\
@val
];
$sql
=
"
select b, c, d from
$table
"
.
"
where
$p1
->{exp} and
$p2
->{exp}
"
.
$orderby
;
verify
(
$sql
,
$ord
,
$res
);
for
my
$p3
(
@$a3
)
{
my
$res
=
[
$p1
->
{
res
},
$p2
->
{
res
},
$p3
->
{
res
}
];
$sql
=
"
select b, c, d from
$table
"
.
"
where
$p1
->{exp} and
$p2
->{exp} and
$p3
->{exp}
"
.
$orderby
;
verify
(
$sql
,
$ord
,
$res
);
}
}
}
}
warn
"
drop table
\n
";
$sql
=
"
drop table
$table
";
$dbh
->
do
(
$sql
)
or
die
$
DBI::
errstr
;
}
warn
"
verified
$casecnt
cases
\n
";
warn
"
done
\n
";
# vim: set sw=2:
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