Linux ip-172-26-2-223 5.4.0-1018-aws #18-Ubuntu SMP Wed Jun 24 01:15:00 UTC 2020 x86_64
Apache
: 172.26.2.223 | : 13.58.73.22
Cant Read [ /etc/named.conf ]
8.1.13
www
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
www /
server /
mysql /
mysql-test /
t /
[ HOME SHELL ]
Name
Size
Permission
Action
1st.test
271
B
-rw-r--r--
acl_tables_errors_debug.test
7.98
KB
-rw-r--r--
alias.test
9.17
KB
-rw-r--r--
almost_full.test
936
B
-rw-r--r--
alter_table-big.test
8.11
KB
-rw-r--r--
alter_table.test
102.27
KB
-rw-r--r--
analyze.test
3.17
KB
-rw-r--r--
ansi.test
1.25
KB
-rw-r--r--
archive-big.test
41.09
KB
-rw-r--r--
archive.test
105.99
KB
-rw-r--r--
archive_bitfield.test
3.94
KB
-rw-r--r--
archive_debug.test
395
B
-rw-r--r--
archive_gis.test
103
B
-rw-r--r--
archive_no_symlink-master.opt
22
B
-rw-r--r--
archive_no_symlink.test
810
B
-rw-r--r--
archive_plugin-master.opt
33
B
-rw-r--r--
archive_plugin.test
1016
B
-rw-r--r--
archive_symlink.test
2.48
KB
-rw-r--r--
auth_rpl-master.opt
35
B
-rw-r--r--
auth_rpl-slave.opt
36
B
-rw-r--r--
auth_rpl.test
1.86
KB
-rw-r--r--
auto_increment.test
11.27
KB
-rw-r--r--
bench_count_distinct.test
641
B
-rw-r--r--
bigint.test
15.61
KB
-rw-r--r--
binary.test
4.79
KB
-rw-r--r--
binary_to_hex.test
2.24
KB
-rw-r--r--
blackhole.test
762
B
-rw-r--r--
blackhole_plugin-master.opt
35
B
-rw-r--r--
blackhole_plugin.test
1.03
KB
-rw-r--r--
bool.test
2.47
KB
-rw-r--r--
bootstrap.test
2.49
KB
-rw-r--r--
bug12368203-master.opt
88
B
-rw-r--r--
bug12368203.test
5.75
KB
-rw-r--r--
bug12427262.test
1.7
KB
-rw-r--r--
bug12969156-master.opt
32
B
-rw-r--r--
bug12969156.test
498
B
-rw-r--r--
bug17076131-master.opt
57
B
-rw-r--r--
bug17076131.test
1.06
KB
-rw-r--r--
bug33509-master.opt
33
B
-rw-r--r--
bug33509.test
2.52
KB
-rw-r--r--
bug39022.test
1.62
KB
-rw-r--r--
bug46080-master.opt
69
B
-rw-r--r--
bug46080.test
723
B
-rw-r--r--
bug46261-master.opt
40
B
-rw-r--r--
bug46261.test
488
B
-rw-r--r--
bug46760-master.opt
53
B
-rw-r--r--
bug46760.test
970
B
-rw-r--r--
bug47671-master.opt
66
B
-rw-r--r--
bug47671.test
448
B
-rw-r--r--
bug58669-master.opt
12
B
-rw-r--r--
bug58669.test
495
B
-rw-r--r--
bulk_replace.test
311
B
-rw-r--r--
cache_innodb-master.opt
21
B
-rw-r--r--
cache_innodb.test
899
B
-rw-r--r--
case.test
6.56
KB
-rw-r--r--
cast.test
9.78
KB
-rw-r--r--
change_user-master.opt
16
B
-rw-r--r--
change_user.test
3.78
KB
-rw-r--r--
charset.test
2.4
KB
-rw-r--r--
check.test
2.26
KB
-rw-r--r--
check_auto_permission.test
2.06
KB
-rw-r--r--
client_xml.test
1.47
KB
-rw-r--r--
comment_column.test
36.48
KB
-rw-r--r--
comment_column2.test
131.05
KB
-rw-r--r--
comment_index.test
22.22
KB
-rw-r--r--
comment_table.test
14.01
KB
-rw-r--r--
comments.test
1.37
KB
-rw-r--r--
commit.test
15.16
KB
-rw-r--r--
commit_1innodb.test
324
B
-rw-r--r--
compare.test
3.26
KB
-rw-r--r--
compress.test
1.05
KB
-rw-r--r--
concurrent_innodb_safelog-mast...
29
B
-rw-r--r--
concurrent_innodb_safelog.test
716
B
-rw-r--r--
concurrent_innodb_unsafelog-ma...
62
B
-rw-r--r--
concurrent_innodb_unsafelog.te...
718
B
-rw-r--r--
condition_filter.test
1.14
KB
-rw-r--r--
connect.test
14.5
KB
-rw-r--r--
connect_debug.test
2.08
KB
-rw-r--r--
consistent_snapshot.test
2.02
KB
-rw-r--r--
constraints.test
1.84
KB
-rw-r--r--
count_distinct.test
8.05
KB
-rw-r--r--
count_distinct2-master.opt
28
B
-rw-r--r--
count_distinct2.test
1.87
KB
-rw-r--r--
count_distinct3.test
1.55
KB
-rw-r--r--
create-big.test
17.21
KB
-rw-r--r--
create.test
53.55
KB
-rw-r--r--
create_not_windows.test
1.25
KB
-rw-r--r--
create_select_tmp.test
1.33
KB
-rw-r--r--
create_w_max_indexes_64.test
18.57
KB
-rw-r--r--
csv-master.opt
21
B
-rw-r--r--
csv.test
106.92
KB
-rw-r--r--
csv_alter_table.test
1.78
KB
-rw-r--r--
csv_not_null.test
3.28
KB
-rw-r--r--
ctype_ascii.test
1.21
KB
-rw-r--r--
ctype_big5.test
5.36
KB
-rw-r--r--
ctype_binary.test
543
B
-rw-r--r--
ctype_collate.test
11.45
KB
-rw-r--r--
ctype_cp1250_ch.test
2.96
KB
-rw-r--r--
ctype_cp1251.test
2.82
KB
-rw-r--r--
ctype_cp932.test
1.01
KB
-rw-r--r--
ctype_cp932_binlog_row.test
237
B
-rw-r--r--
ctype_cp932_binlog_stm.test
4.65
KB
-rw-r--r--
ctype_create.test
3.43
KB
-rw-r--r--
ctype_errors.test
1.34
KB
-rw-r--r--
ctype_eucjpms.test
30.18
KB
-rw-r--r--
ctype_euckr.test
5.49
KB
-rw-r--r--
ctype_filename.test
368
B
-rw-r--r--
ctype_filesystem-master.opt
73
B
-rw-r--r--
ctype_filesystem.test
233
B
-rw-r--r--
ctype_gb18030.test
11.14
KB
-rw-r--r--
ctype_gb18030_binlog.test
1.09
KB
-rw-r--r--
ctype_gb18030_conversion.test
6.31
KB
-rw-r--r--
ctype_gb18030_encoding_cn.test
19.84
KB
-rw-r--r--
ctype_gb18030_encoding_utf8.te...
20.2
KB
-rw-r--r--
ctype_gb18030_ligatures.test
20.69
KB
-rw-r--r--
ctype_gb2312.test
4.77
KB
-rw-r--r--
ctype_gbk.test
6.22
KB
-rw-r--r--
ctype_gbk_binlog.test
1.01
KB
-rw-r--r--
ctype_hebrew.test
399
B
-rw-r--r--
ctype_latin1.test
7.3
KB
-rw-r--r--
ctype_latin1_de-master.opt
67
B
-rw-r--r--
ctype_latin1_de.test
5.99
KB
-rw-r--r--
ctype_latin2.test
3.2
KB
-rw-r--r--
ctype_latin2_ch.test
7.57
KB
-rw-r--r--
ctype_ldml-master.opt
129
B
-rw-r--r--
ctype_ldml.test
16.22
KB
-rw-r--r--
ctype_like_range.test
3.91
KB
-rw-r--r--
ctype_many.test
15.19
KB
-rw-r--r--
ctype_mb.test
699
B
-rw-r--r--
ctype_recoding.test
7.75
KB
-rw-r--r--
ctype_sjis.test
5.73
KB
-rw-r--r--
ctype_tis620.test
64.69
KB
-rw-r--r--
ctype_uca.test
27.37
KB
-rw-r--r--
ctype_ucs.test
23.83
KB
-rw-r--r--
ctype_ucs2_def-master.opt
70
B
-rw-r--r--
ctype_ucs2_def.test
1.57
KB
-rw-r--r--
ctype_ujis.test
40.68
KB
-rw-r--r--
ctype_ujis_ucs2.test
83.65
KB
-rw-r--r--
ctype_utf16.test
22.58
KB
-rw-r--r--
ctype_utf16_def-master.opt
36
B
-rw-r--r--
ctype_utf16_def.test
228
B
-rw-r--r--
ctype_utf16_uca.test
6.78
KB
-rw-r--r--
ctype_utf16le.test
22.27
KB
-rw-r--r--
ctype_utf32.test
25.42
KB
-rw-r--r--
ctype_utf32_uca.test
7.74
KB
-rw-r--r--
ctype_utf8-master.opt
32
B
-rw-r--r--
ctype_utf8.test
52.54
KB
-rw-r--r--
ctype_utf8mb4-master.opt
68
B
-rw-r--r--
ctype_utf8mb4.test
59.69
KB
-rw-r--r--
ctype_utf8mb4_heap.test
108
B
-rw-r--r--
ctype_utf8mb4_innodb-master.op...
32
B
-rw-r--r--
ctype_utf8mb4_innodb.test
237
B
-rw-r--r--
ctype_utf8mb4_myisam.test
93
B
-rw-r--r--
ctype_utf8mb4_uca.test
2.74
KB
-rw-r--r--
daemonize_opt-master.opt
54
B
-rw-r--r--
daemonize_opt.test
189
B
-rw-r--r--
datadir_permission.test
2.63
KB
-rw-r--r--
date_formats-master.opt
46
B
-rw-r--r--
date_formats.test
13.9
KB
-rw-r--r--
ddl_i18n_koi8r.test
23.39
KB
-rw-r--r--
ddl_i18n_utf8.test
23.67
KB
-rw-r--r--
deadlock_innodb.test
358
B
-rw-r--r--
debug_sync.test
14.22
KB
-rw-r--r--
debug_sync2-master.opt
29
B
-rw-r--r--
debug_sync2.test
1.41
KB
-rw-r--r--
default.test
5.8
KB
-rw-r--r--
delete.test
20.6
KB
-rw-r--r--
delete_all_rows.test
1.35
KB
-rw-r--r--
deprecate_eof-master.opt
21
B
-rw-r--r--
deprecate_eof.test
5.64
KB
-rw-r--r--
deprecated_features.test
731
B
-rw-r--r--
derived.test
81.78
KB
-rw-r--r--
dirty_close.test
1.55
KB
-rw-r--r--
disabled.def
1.31
KB
-rw-r--r--
disabled_replication-master.op...
29
B
-rw-r--r--
disabled_replication.test
2.79
KB
-rw-r--r--
disabled_storage_engines-maste...
52
B
-rw-r--r--
disabled_storage_engines.test
3.93
KB
-rw-r--r--
disconnect_on_expired_password...
1.39
KB
-rw-r--r--
disconnect_on_expired_password...
37
B
-rw-r--r--
disconnect_on_expired_password...
1.46
KB
-rw-r--r--
distinct.test
27.63
KB
-rw-r--r--
drop-no_root.test
2.59
KB
-rw-r--r--
drop.test
9.47
KB
-rw-r--r--
drop_debug.test
989
B
-rw-r--r--
ds_mrr-big.test
2.2
KB
-rw-r--r--
dynamic_tracing.test
3.92
KB
-rw-r--r--
empty_table.test
303
B
-rw-r--r--
enable_cleartext_plugin-master...
35
B
-rw-r--r--
enable_cleartext_plugin.test
2.48
KB
-rw-r--r--
endspace.test
4.36
KB
-rw-r--r--
eq_range_idx_stat.test
2.24
KB
-rw-r--r--
error_simulation.test
3.42
KB
-rw-r--r--
errors.test
4.97
KB
-rw-r--r--
events_1.test
18.96
KB
-rw-r--r--
events_2.test
15.97
KB
-rw-r--r--
events_and_binlog.test
445
B
-rw-r--r--
events_bugs-master.opt
18
B
-rw-r--r--
events_bugs.test
43.59
KB
-rw-r--r--
events_embedded.test
289
B
-rw-r--r--
events_grant.test
5.29
KB
-rw-r--r--
events_logs_tests-master.opt
41
B
-rw-r--r--
events_logs_tests.test
3.08
KB
-rw-r--r--
events_microsec.test
749
B
-rw-r--r--
events_restart-master.opt
18
B
-rw-r--r--
events_restart.test
4.51
KB
-rw-r--r--
events_scheduling.test
4.36
KB
-rw-r--r--
events_stress.test
4.57
KB
-rw-r--r--
events_time_zone.test
11.38
KB
-rw-r--r--
events_trans.test
3.33
KB
-rw-r--r--
events_trans_notembedded.test
1.82
KB
-rw-r--r--
examined_rows.test
3.84
KB
-rw-r--r--
execution_constants.test
3.32
KB
-rw-r--r--
explain.test
12.41
KB
-rw-r--r--
explain_for_connection_crash.t...
2.68
KB
-rw-r--r--
explain_for_connection_rqg_jso...
1.79
KB
-rw-r--r--
explain_for_connection_rqg_tra...
1.8
KB
-rw-r--r--
explain_for_connection_small_j...
24
B
-rw-r--r--
explain_for_connection_small_j...
2.18
KB
-rw-r--r--
explain_for_connection_small_t...
24
B
-rw-r--r--
explain_for_connection_small_t...
2.19
KB
-rw-r--r--
explain_json_all.test
518
B
-rw-r--r--
explain_json_none.test
617
B
-rw-r--r--
explain_other-master.opt
24
B
-rw-r--r--
explain_other.test
14.81
KB
-rw-r--r--
file_contents.test
2.89
KB
-rw-r--r--
filesort_debug-master.opt
0
B
-rw-r--r--
filesort_debug.test
5.54
KB
-rw-r--r--
filesort_merge.test
1.89
KB
-rw-r--r--
filesort_pack.test
801
B
-rw-r--r--
filter_single_col_idx_big.test
2.72
KB
-rw-r--r--
filter_single_col_idx_small.te...
3.64
KB
-rw-r--r--
fix_priv_tables.test
2.55
KB
-rw-r--r--
flush.test
17.3
KB
-rw-r--r--
flush2-master.opt
15
B
-rw-r--r--
flush2.test
689
B
-rw-r--r--
flush_block_commit.test
2.87
KB
-rw-r--r--
flush_block_commit_notembedded...
1.84
KB
-rw-r--r--
flush_read_lock.test
75.93
KB
-rw-r--r--
flush_read_lock_kill.test
2.32
KB
-rw-r--r--
flush_table-master.opt
21
B
-rw-r--r--
flush_table.test
15.92
KB
-rw-r--r--
foreign_key.test
3.91
KB
-rw-r--r--
fulltext.test
22.77
KB
-rw-r--r--
fulltext2.test
8.42
KB
-rw-r--r--
fulltext3.test
1.35
KB
-rw-r--r--
fulltext_cache.test
1.74
KB
-rw-r--r--
fulltext_distinct.test
1.55
KB
-rw-r--r--
fulltext_left_join.test
4.13
KB
-rw-r--r--
fulltext_multi.test
982
B
-rw-r--r--
fulltext_order_by.test
5.72
KB
-rw-r--r--
fulltext_plugin-master.opt
19
B
-rw-r--r--
fulltext_plugin.test
689
B
-rw-r--r--
fulltext_update.test
1.26
KB
-rw-r--r--
fulltext_var.test
1.41
KB
-rw-r--r--
func_aes.test
5.76
KB
-rw-r--r--
func_aes_cfb1.test
445
B
-rw-r--r--
func_aes_cfb128.test
455
B
-rw-r--r--
func_aes_cfb8.test
445
B
-rw-r--r--
func_aes_kdf_hkdf.test
2.5
KB
-rw-r--r--
func_aes_kdf_pbkdf2_hmac.test
3.88
KB
-rw-r--r--
func_aes_misc.test
6.11
KB
-rw-r--r--
func_aes_ofb.test
440
B
-rw-r--r--
func_analyse.test
9.59
KB
-rw-r--r--
func_bitwise_ops.test
18.39
KB
-rw-r--r--
func_compress.test
3.63
KB
-rw-r--r--
func_concat.test
4
KB
-rw-r--r--
func_crypt.test
1.68
KB
-rw-r--r--
func_date_add.test
3.36
KB
-rw-r--r--
func_default.test
1.21
KB
-rw-r--r--
func_des_encrypt.test
886
B
-rw-r--r--
func_digest.test
109.41
KB
-rw-r--r--
func_encrypt-master.opt
59
B
-rw-r--r--
func_encrypt.test
5.55
KB
-rw-r--r--
func_encrypt_nossl.test
1.37
KB
-rw-r--r--
func_encrypt_ucs2.test
546
B
-rw-r--r--
func_equal.test
1.1
KB
-rw-r--r--
func_found_rows.test
288
B
-rw-r--r--
func_gconcat.test
28.1
KB
-rw-r--r--
func_group.test
39.21
KB
-rw-r--r--
func_group_innodb.test
3.57
KB
-rw-r--r--
func_group_innodb_16k.test
605
B
-rw-r--r--
func_if.test
5.32
KB
-rw-r--r--
func_in_all.test
749
B
-rw-r--r--
func_in_icp.test
822
B
-rw-r--r--
func_in_icp_mrr.test
795
B
-rw-r--r--
func_in_mrr.test
820
B
-rw-r--r--
func_in_mrr_cost.test
830
B
-rw-r--r--
func_in_none.test
862
B
-rw-r--r--
func_isnull.test
1010
B
-rw-r--r--
func_like.test
6.39
KB
-rw-r--r--
func_math.test
26.62
KB
-rw-r--r--
func_misc-master.opt
21
B
-rw-r--r--
func_misc.test
27.43
KB
-rw-r--r--
func_op.test
965
B
-rw-r--r--
func_regexp.test
3.09
KB
-rw-r--r--
func_rollback.test
14.3
KB
-rw-r--r--
func_sapdb.test
7.58
KB
-rw-r--r--
func_set.test
5.87
KB
-rw-r--r--
func_str.test
63.27
KB
-rw-r--r--
func_str_debug.test
421
B
-rw-r--r--
func_str_no_ps.test
1.02
KB
-rw-r--r--
func_system.test
1.82
KB
-rw-r--r--
func_test.test
9.41
KB
-rw-r--r--
func_time.test
44.53
KB
-rw-r--r--
func_timestamp.test
662
B
-rw-r--r--
func_weight_string.test
6.36
KB
-rw-r--r--
function_defaults.test
825
B
-rw-r--r--
gcc296.test
527
B
-rw-r--r--
get_diagnostics.test
21.19
KB
-rw-r--r--
get_table_share.test
24.82
KB
-rw-r--r--
gis-debug.test
309
B
-rw-r--r--
gis-precise.test
103.82
KB
-rw-r--r--
gis-rt-precise.test
1.5
KB
-rw-r--r--
gis-rtree.test
46.36
KB
-rw-r--r--
gis.test
102
KB
-rw-r--r--
grant.test
82.65
KB
-rw-r--r--
grant2.test
33.81
KB
-rw-r--r--
grant3-master.opt
19
B
-rw-r--r--
grant3.test
6.85
KB
-rw-r--r--
grant4.test
8.44
KB
-rw-r--r--
grant_alter_user.test
28.77
KB
-rw-r--r--
grant_alter_user_qa-master.opt
68
B
-rw-r--r--
grant_alter_user_qa.test
67.2
KB
-rw-r--r--
grant_cache-master.opt
21
B
-rw-r--r--
grant_cache.test
591
B
-rw-r--r--
grant_debug.test
7.87
KB
-rw-r--r--
grant_explain_non_select.test
7.63
KB
-rw-r--r--
grant_lowercase_fs.test
1.02
KB
-rw-r--r--
grant_user_lock.test
15.07
KB
-rw-r--r--
grant_user_lock_qa-master.opt
32
B
-rw-r--r--
grant_user_lock_qa.test
33.86
KB
-rw-r--r--
greedy_optimizer-master.opt
21
B
-rw-r--r--
greedy_optimizer.test
30.83
KB
-rw-r--r--
greedy_search.test
9.91
KB
-rw-r--r--
group_by.test
77.53
KB
-rw-r--r--
group_by_fd_no_prot.test
411
B
-rw-r--r--
group_by_fd_ps_prot.test
160
B
-rw-r--r--
group_min_max.test
70.06
KB
-rw-r--r--
group_min_max_innodb.test
13.85
KB
-rw-r--r--
gtid_next_xa_binlog_off-master...
15
B
-rw-r--r--
gtid_next_xa_binlog_off.test
268
B
-rw-r--r--
gtids_anonymous_trxs_violation...
2.31
KB
-rw-r--r--
handler_innodb.test
571
B
-rw-r--r--
handler_myisam.test
4.46
KB
-rw-r--r--
handler_read_last.test
733
B
-rw-r--r--
having.test
25.07
KB
-rw-r--r--
heap.test
15.62
KB
-rw-r--r--
heap_auto_increment.test
927
B
-rw-r--r--
heap_btree.test
8.3
KB
-rw-r--r--
heap_hash.test
9.77
KB
-rw-r--r--
help.test
4.89
KB
-rw-r--r--
help_verbose.test
3.38
KB
-rw-r--r--
host_cache_size_functionality....
7.61
KB
-rw-r--r--
ignore_strict.test
20.23
KB
-rw-r--r--
implicit_char_to_num_conversio...
7.63
KB
-rw-r--r--
implicit_commit-master.opt
32
B
-rw-r--r--
implicit_commit.test
19.77
KB
-rw-r--r--
import_schema_mismatch.test
956
B
-rw-r--r--
index_merge_delete.test
306
B
-rw-r--r--
index_merge_innodb.test
2.21
KB
-rw-r--r--
index_merge_insert-and-replace...
330
B
-rw-r--r--
index_merge_intersect_dml.test
157
B
-rw-r--r--
index_merge_myisam.test
5.53
KB
-rw-r--r--
index_merge_update.test
307
B
-rw-r--r--
information_schema-big.test
1.77
KB
-rw-r--r--
information_schema.test
61.02
KB
-rw-r--r--
information_schema_chmod.test
835
B
-rw-r--r--
information_schema_db.test
7.18
KB
-rw-r--r--
information_schema_inno.test
3.61
KB
-rw-r--r--
information_schema_parameters....
12.73
KB
-rw-r--r--
information_schema_part.test
4.15
KB
-rw-r--r--
information_schema_routines.te...
13.75
KB
-rw-r--r--
init_connect-master.opt
32
B
-rw-r--r--
init_connect.test
6.9
KB
-rw-r--r--
init_file-master.opt
51
B
-rw-r--r--
init_file.test
1.06
KB
-rw-r--r--
initialize-bug20350099-master....
23
B
-rw-r--r--
initialize-bug20350099.test
3.51
KB
-rw-r--r--
initialize-bug20504142.test
3.8
KB
-rw-r--r--
initialize-bug21335821-master....
23
B
-rw-r--r--
initialize-bug21335821.test
3.06
KB
-rw-r--r--
initialize-errors.test
2.67
KB
-rw-r--r--
initialize-ignore-db.test
2.96
KB
-rw-r--r--
initialize-init-acls.test
3.26
KB
-rw-r--r--
initialize-sha256.test
3.51
KB
-rw-r--r--
initialize.test
9.45
KB
-rw-r--r--
initialize_gtid.test
2.8
KB
-rw-r--r--
innodb_deadlock-master.opt
29
B
-rw-r--r--
innodb_deadlock.test
1.43
KB
-rw-r--r--
innodb_disabled-master.opt
96
B
-rw-r--r--
innodb_disabled.test
2.1
KB
-rw-r--r--
innodb_explain_json_non_select...
1.02
KB
-rw-r--r--
innodb_explain_json_non_select...
1.03
KB
-rw-r--r--
innodb_explain_non_select_all....
855
B
-rw-r--r--
innodb_explain_non_select_none...
892
B
-rw-r--r--
innodb_icp.test
784
B
-rw-r--r--
innodb_icp_all.test
679
B
-rw-r--r--
innodb_icp_none.test
817
B
-rw-r--r--
innodb_ignore_builtin-master.o...
38
B
-rw-r--r--
innodb_ignore_builtin.test
442
B
-rw-r--r--
innodb_log_file_size_functiona...
5.43
KB
-rw-r--r--
innodb_mrr-master.opt
35
B
-rw-r--r--
innodb_mrr.test
870
B
-rw-r--r--
innodb_mrr_all-master.opt
35
B
-rw-r--r--
innodb_mrr_all.test
756
B
-rw-r--r--
innodb_mrr_cost-master.opt
35
B
-rw-r--r--
innodb_mrr_cost.test
869
B
-rw-r--r--
innodb_mrr_cost_all-master.opt
35
B
-rw-r--r--
innodb_mrr_cost_all.test
755
B
-rw-r--r--
innodb_mrr_cost_icp-master.opt
35
B
-rw-r--r--
innodb_mrr_cost_icp.test
824
B
-rw-r--r--
innodb_mrr_icp-master.opt
35
B
-rw-r--r--
innodb_mrr_icp.test
825
B
-rw-r--r--
innodb_mrr_none-master.opt
35
B
-rw-r--r--
innodb_mrr_none.test
876
B
-rw-r--r--
innodb_mysql_lock-master.opt
31
B
-rw-r--r--
innodb_mysql_lock.test
7.18
KB
-rw-r--r--
innodb_mysql_lock2.test
29.15
KB
-rw-r--r--
innodb_mysql_sync.test
31.39
KB
-rw-r--r--
innodb_pk_extension_off.test
298
B
-rw-r--r--
innodb_pk_extension_on.test
296
B
-rw-r--r--
innodb_recovery_with_upper_cas...
25
B
-rw-r--r--
innodb_recovery_with_upper_cas...
1.75
KB
-rw-r--r--
insert.test
19.57
KB
-rw-r--r--
insert_debug-master.opt
29
B
-rw-r--r--
insert_debug.test
2.39
KB
-rw-r--r--
insert_notembedded.test
5.47
KB
-rw-r--r--
insert_select.test
14.79
KB
-rw-r--r--
insert_update.test
14.27
KB
-rw-r--r--
installdb-bad-cipher.test
875
B
-rw-r--r--
internal_tmp_disk_storage_engi...
102.07
KB
-rw-r--r--
ipv4_as_ipv6-master.opt
43
B
-rw-r--r--
ipv4_as_ipv6.test
2.18
KB
-rw-r--r--
ipv6-master.opt
20
B
-rw-r--r--
ipv6.test
1.28
KB
-rw-r--r--
is_deprecation.test
166
B
-rw-r--r--
join.test
41.36
KB
-rw-r--r--
join_cache_bka.test
341
B
-rw-r--r--
join_cache_bka_nixbnl.test
408
B
-rw-r--r--
join_cache_bkaunique.test
408
B
-rw-r--r--
join_cache_bnl.test
435
B
-rw-r--r--
join_cache_nojb.test
504
B
-rw-r--r--
join_crash.test
4.99
KB
-rw-r--r--
join_file_handler.test
1
KB
-rw-r--r--
join_nested.test
43.89
KB
-rw-r--r--
join_nested_bka.test
2.5
KB
-rw-r--r--
join_nested_bka_nixbnl.test
2.52
KB
-rw-r--r--
join_outer.test
60.27
KB
-rw-r--r--
join_outer_bka.test
379
B
-rw-r--r--
join_outer_bka_nixbnl.test
401
B
-rw-r--r--
join_outer_innodb.test
2.23
KB
-rw-r--r--
key.test
17.2
KB
-rw-r--r--
key_cache-master.opt
95
B
-rw-r--r--
key_cache.test
8.48
KB
-rw-r--r--
key_diff.test
573
B
-rw-r--r--
key_primary.test
461
B
-rw-r--r--
keywords.test
5.47
KB
-rw-r--r--
kill.test
17.11
KB
-rw-r--r--
kill_debug-master.opt
21
B
-rw-r--r--
kill_debug.test
1.55
KB
-rw-r--r--
limit.test
7.26
KB
-rw-r--r--
loaddata.test
22.6
KB
-rw-r--r--
loaddata_autocom_innodb.test
98
B
-rw-r--r--
loadxml.test
3.75
KB
-rw-r--r--
locale.test
3.23
KB
-rw-r--r--
lock.test
14.35
KB
-rw-r--r--
lock_multi.test
114.87
KB
-rw-r--r--
lock_multi_bug38499.test
4.7
KB
-rw-r--r--
lock_multi_bug38691.test
2.98
KB
-rw-r--r--
lock_sync-master.opt
58
B
-rw-r--r--
lock_sync.test
35.79
KB
-rw-r--r--
lock_tables_lost_commit-master...
24
B
-rw-r--r--
lock_tables_lost_commit.test
845
B
-rw-r--r--
locking_service-master.opt
21
B
-rw-r--r--
locking_service.test
35.37
KB
-rw-r--r--
log_errchk.test
2.09
KB
-rw-r--r--
log_state-master.opt
59
B
-rw-r--r--
log_state.test
10.29
KB
-rw-r--r--
log_state_bug33693-master.opt
60
B
-rw-r--r--
log_state_bug33693.test
568
B
-rw-r--r--
log_tables-big-master.opt
17
B
-rw-r--r--
log_tables-big.test
1.32
KB
-rw-r--r--
log_tables-master.opt
41
B
-rw-r--r--
log_tables.test
30.83
KB
-rw-r--r--
log_tables_debug.test
2.83
KB
-rw-r--r--
log_tables_upgrade.test
989
B
-rw-r--r--
log_timestamps-master.opt
21
B
-rw-r--r--
log_timestamps.test
89
B
-rw-r--r--
long_tmpdir-master.opt
141
B
-rw-r--r--
long_tmpdir-master.sh
190
B
-rwxr-xr-x
long_tmpdir.test
216
B
-rw-r--r--
lowercase_fs_off.test
2.82
KB
-rw-r--r--
lowercase_fs_on.test
1.33
KB
-rw-r--r--
lowercase_mixed_tmpdir-master....
68
B
-rw-r--r--
lowercase_mixed_tmpdir-master....
179
B
-rwxr-xr-x
lowercase_mixed_tmpdir.test
292
B
-rw-r--r--
lowercase_mixed_tmpdir_innodb-...
68
B
-rw-r--r--
lowercase_mixed_tmpdir_innodb-...
180
B
-rwxr-xr-x
lowercase_mixed_tmpdir_innodb....
299
B
-rw-r--r--
lowercase_table-master.opt
25
B
-rw-r--r--
lowercase_table.test
3.68
KB
-rw-r--r--
lowercase_table2.test
8.28
KB
-rw-r--r--
lowercase_table4-master.opt
27
B
-rw-r--r--
lowercase_table4.test
4.01
KB
-rw-r--r--
lowercase_table5.test
1009
B
-rw-r--r--
lowercase_table_grant-master.o...
25
B
-rw-r--r--
lowercase_table_grant.test
1.05
KB
-rw-r--r--
lowercase_table_qcache-master....
46
B
-rw-r--r--
lowercase_table_qcache.test
698
B
-rw-r--r--
lowercase_utf8-master.opt
58
B
-rw-r--r--
lowercase_utf8.test
207
B
-rw-r--r--
lowercase_view-master.opt
27
B
-rw-r--r--
lowercase_view.test
6.29
KB
-rw-r--r--
m_i_db.test
9.24
KB
-rw-r--r--
m_i_db_config.cnf
38
B
-rw-r--r--
m_i_db_createschema.sql
10.29
KB
-rw-r--r--
main.lowercase_table_qcache-ma...
21
B
-rw-r--r--
max_statement_time-master.opt
21
B
-rw-r--r--
max_statement_time.test
14.33
KB
-rw-r--r--
mdl_sync-master.opt
53
B
-rw-r--r--
mdl_sync.test
183.93
KB
-rw-r--r--
mdl_tablespace.test
41.99
KB
-rw-r--r--
merge-big.test
3.11
KB
-rw-r--r--
merge.test
83.59
KB
-rw-r--r--
merge_innodb.test
1.06
KB
-rw-r--r--
merge_mmap-master.opt
18
B
-rw-r--r--
merge_mmap.test
4.1
KB
-rw-r--r--
metadata.test
7.31
KB
-rw-r--r--
mix2_myisam-master.opt
33
B
-rw-r--r--
mix2_myisam.test
961
B
-rw-r--r--
mix2_myisam_ucs2.test
940
B
-rw-r--r--
multi_plugin_load-master.opt
92
B
-rw-r--r--
multi_plugin_load.test
774
B
-rw-r--r--
multi_plugin_load_add-master.o...
68
B
-rw-r--r--
multi_plugin_load_add.test
495
B
-rw-r--r--
multi_plugin_load_add2-master....
111
B
-rw-r--r--
multi_plugin_load_add2.test
495
B
-rw-r--r--
multi_statement-master.opt
80
B
-rw-r--r--
multi_statement.test
971
B
-rw-r--r--
multi_update-master.opt
22
B
-rw-r--r--
multi_update.test
26.93
KB
-rw-r--r--
multi_update2-master.opt
22
B
-rw-r--r--
multi_update2.test
2.1
KB
-rw-r--r--
multi_update_innodb.test
4.41
KB
-rw-r--r--
multi_update_tiny_hash-master....
28
B
-rw-r--r--
multi_update_tiny_hash.test
1.6
KB
-rw-r--r--
myisam-blob-master.opt
60
B
-rw-r--r--
myisam-blob.test
1.42
KB
-rw-r--r--
myisam-system.test
692
B
-rw-r--r--
myisam.test
66.93
KB
-rw-r--r--
myisam_crash_before_flush_keys...
36
B
-rw-r--r--
myisam_crash_before_flush_keys...
1.7
KB
-rw-r--r--
myisam_debug.test
1.57
KB
-rw-r--r--
myisam_explain_json_non_select...
931
B
-rw-r--r--
myisam_explain_json_non_select...
1.02
KB
-rw-r--r--
myisam_explain_non_select_all....
794
B
-rw-r--r--
myisam_explain_non_select_none...
885
B
-rw-r--r--
myisam_icp.test
880
B
-rw-r--r--
myisam_icp_all.test
775
B
-rw-r--r--
myisam_icp_none.test
912
B
-rw-r--r--
myisam_mrr.test
1.03
KB
-rw-r--r--
myisam_mrr_all.test
943
B
-rw-r--r--
myisam_mrr_cost.test
1.04
KB
-rw-r--r--
myisam_mrr_cost_all.test
942
B
-rw-r--r--
myisam_mrr_cost_icp.test
1021
B
-rw-r--r--
myisam_mrr_icp.test
1011
B
-rw-r--r--
myisam_mrr_none.test
1.04
KB
-rw-r--r--
myisam_recover-master.opt
31
B
-rw-r--r--
myisam_recover.test
5.73
KB
-rw-r--r--
myisam_row_rpl-master.opt
54
B
-rw-r--r--
myisam_row_rpl-slave.opt
54
B
-rw-r--r--
myisam_row_rpl.test
1.93
KB
-rw-r--r--
myisampack.test
12.57
KB
-rw-r--r--
mysql-bug41486.test
1.54
KB
-rw-r--r--
mysql-bug45236.test
1.41
KB
-rw-r--r--
mysql.test
24.5
KB
-rw-r--r--
mysql_batch_mode.test
441
B
-rw-r--r--
mysql_binary_mode.test
5.56
KB
-rw-r--r--
mysql_client_test-master.opt
150
B
-rw-r--r--
mysql_client_test.test
1.34
KB
-rw-r--r--
mysql_client_test_embedded.tes...
887
B
-rw-r--r--
mysql_client_test_qcache-maste...
21
B
-rw-r--r--
mysql_client_test_qcache.test
856
B
-rw-r--r--
mysql_comments.sql
4.58
KB
-rw-r--r--
mysql_comments.test
1.63
KB
-rw-r--r--
mysql_config_editor.test
9.41
KB
-rw-r--r--
mysql_cp932.test
1.04
KB
-rw-r--r--
mysql_delimiter.sql
1.48
KB
-rw-r--r--
mysql_delimiter_19799.sql
13
B
-rw-r--r--
mysql_delimiter_source.sql
122
B
-rw-r--r--
mysql_embedded.test
2.07
KB
-rw-r--r--
mysql_embedded_client_test.tes...
1.55
KB
-rw-r--r--
mysql_locale_posix.test
7.21
KB
-rw-r--r--
mysql_not_windows-master.opt
28
B
-rw-r--r--
mysql_not_windows.test
923
B
-rw-r--r--
mysql_plugin-master.opt
32
B
-rw-r--r--
mysql_plugin.test
12.17
KB
-rw-r--r--
mysql_protocols.test
716
B
-rw-r--r--
mysql_ssl-master.opt
11
B
-rw-r--r--
mysql_ssl.test
788
B
-rw-r--r--
mysql_ssl_default.test
1.6
KB
-rw-r--r--
mysql_tzinfo_to_sql.test
2.49
KB
-rw-r--r--
mysql_tzinfo_to_sql_sys.test
4.8
KB
-rw-r--r--
mysql_upgrade.test
43.56
KB
-rw-r--r--
mysql_upgrade_slave_master_inf...
6.35
KB
-rw-r--r--
mysql_upgrade_ssl.test
2.15
KB
-rw-r--r--
mysql_upgrade_with_session_use...
2.18
KB
-rw-r--r--
mysqladmin.test
3.12
KB
-rw-r--r--
mysqladmin_shutdown.test
868
B
-rw-r--r--
mysqlbinlog-master.opt
65
B
-rw-r--r--
mysqlbinlog.test
18.92
KB
-rw-r--r--
mysqlbinlog_base64_flag.test
5.53
KB
-rw-r--r--
mysqlbinlog_debug.test
981
B
-rw-r--r--
mysqlbinlog_hexdump.test
225
B
-rw-r--r--
mysqlbinlog_mixed_or_statment....
1.18
KB
-rw-r--r--
mysqlbinlog_raw_mode.test
1.98
KB
-rw-r--r--
mysqlbinlog_raw_mode_win.test
356
B
-rw-r--r--
mysqlbinlog_row_big.test
4.21
KB
-rw-r--r--
mysqlcheck.test
10.45
KB
-rw-r--r--
mysqld--defaults-file.test
1.19
KB
-rw-r--r--
mysqld--help-notwin.test
161
B
-rw-r--r--
mysqld--help-win.test
366
B
-rw-r--r--
mysqld_daemon.test
2.05
KB
-rw-r--r--
mysqld_safe.sh
40
B
-rwxr-xr-x
mysqld_safe.test
3.06
KB
-rw-r--r--
mysqldump-binary.test
2.24
KB
-rw-r--r--
mysqldump-compat.opt
31
B
-rw-r--r--
mysqldump-compat.test
447
B
-rw-r--r--
mysqldump-max-master.opt
32
B
-rw-r--r--
mysqldump-max.test
39.96
KB
-rw-r--r--
mysqldump-no-binlog-master.opt
15
B
-rw-r--r--
mysqldump-no-binlog.test
195
B
-rw-r--r--
mysqldump.test
92.39
KB
-rw-r--r--
mysqldump_bug29998457.test
1.22
KB
-rw-r--r--
mysqldump_bug30042589.test
987
B
-rw-r--r--
mysqldump_bugs.test
3.27
KB
-rw-r--r--
mysqldump_gtid_state-master.op...
72
B
-rw-r--r--
mysqldump_gtid_state.test
4.23
KB
-rw-r--r--
mysqldump_restore.test
3.85
KB
-rw-r--r--
mysqldumpslow.test
1.81
KB
-rw-r--r--
mysqlimport.test
1.29
KB
-rw-r--r--
mysqlpump.test
8.3
KB
-rw-r--r--
mysqlpump_basic.test
22.51
KB
-rw-r--r--
mysqlpump_bugs.test
1.63
KB
-rw-r--r--
mysqlpump_charset.test
4.22
KB
-rw-r--r--
mysqlpump_concurrency.test
1.94
KB
-rw-r--r--
mysqlpump_extended.test
13.79
KB
-rw-r--r--
mysqlpump_filters.test
5.95
KB
-rw-r--r--
mysqlpump_multi_thread.test
4.09
KB
-rw-r--r--
mysqlpump_partial_bkp.test
1.63
KB
-rw-r--r--
mysqlshow.test
3.05
KB
-rw-r--r--
mysqlslap.test
6.96
KB
-rw-r--r--
mysqltest.test
77.87
KB
-rw-r--r--
named_pipe-master.opt
26
B
-rw-r--r--
named_pipe.test
807
B
-rw-r--r--
negation_elimination.test
4.13
KB
-rw-r--r--
no-threads-master.opt
29
B
-rw-r--r--
no-threads.test
408
B
-rw-r--r--
no_binlog.test
166
B
-rw-r--r--
no_binlog_gtid_empty_statement...
1.94
KB
-rw-r--r--
no_binlog_gtid_empty_transacti...
42
B
-rw-r--r--
no_binlog_gtid_empty_transacti...
1.49
KB
-rw-r--r--
no_binlog_gtid_mode_on-master....
42
B
-rw-r--r--
no_binlog_gtid_mode_on.test
9.1
KB
-rw-r--r--
no_binlog_gtid_mode_on_explici...
42
B
-rw-r--r--
no_binlog_gtid_mode_on_explici...
3.29
KB
-rw-r--r--
no_binlog_gtid_next_begin_caus...
42
B
-rw-r--r--
no_binlog_gtid_next_begin_caus...
864
B
-rw-r--r--
no_binlog_gtid_next_partially_...
42
B
-rw-r--r--
no_binlog_gtid_next_partially_...
18.58
KB
-rw-r--r--
no_binlog_gtid_next_partially_...
2.35
KB
-rw-r--r--
no_binlog_gtid_next_partially_...
42
B
-rw-r--r--
no_binlog_gtid_next_partially_...
4.94
KB
-rw-r--r--
no_binlog_gtid_next_single_stm...
1017
B
-rw-r--r--
no_binlog_gtid_next_temporary_...
2.7
KB
-rw-r--r--
no_engine_substitution-master....
54
B
-rw-r--r--
no_engine_substitution.test
4.7
KB
-rw-r--r--
not_embedded_server-master.opt
16
B
-rw-r--r--
not_embedded_server.test
5.61
KB
-rw-r--r--
not_partition-master.opt
23
B
-rw-r--r--
not_partition.test
3.12
KB
-rw-r--r--
null.test
9.02
KB
-rw-r--r--
null_key_all.test
687
B
-rw-r--r--
null_key_icp.test
779
B
-rw-r--r--
null_key_none.test
819
B
-rw-r--r--
odbc.test
942
B
-rw-r--r--
olap.test
14.29
KB
-rw-r--r--
openssl_1.test
10.34
KB
-rw-r--r--
opt_costmodel.test
6.89
KB
-rw-r--r--
opt_costmodel_downgrade.test
793
B
-rw-r--r--
opt_costmodel_flush.test
7.71
KB
-rw-r--r--
opt_costmodel_pfs.test
394
B
-rw-r--r--
opt_costmodel_restart.test
3.46
KB
-rw-r--r--
opt_costmodel_tables.test
5.53
KB
-rw-r--r--
opt_costmodel_warnings.test
4.93
KB
-rw-r--r--
opt_hint_timeout.test
2.07
KB
-rw-r--r--
opt_hints.test
29.22
KB
-rw-r--r--
opt_hints_lowercase.test
1.06
KB
-rw-r--r--
opt_hints_pfs.test
1.17
KB
-rw-r--r--
opt_hints_subquery.test
36.32
KB
-rw-r--r--
optimizer_bug12837084.test
14.36
KB
-rw-r--r--
optimizer_debug_sync.test
2.23
KB
-rw-r--r--
optimizer_switch.test
10.35
KB
-rw-r--r--
order_by_all.test
752
B
-rw-r--r--
order_by_icp_mrr.test
797
B
-rw-r--r--
order_by_limit.test
7.82
KB
-rw-r--r--
order_by_none.test
864
B
-rw-r--r--
order_by_sortkey.test
2.56
KB
-rw-r--r--
order_fill_sortbuf-master.opt
25
B
-rw-r--r--
order_fill_sortbuf.test
579
B
-rw-r--r--
outfile.test
4.23
KB
-rw-r--r--
outfile_loaddata.test
10.92
KB
-rw-r--r--
overflow.test
578
B
-rw-r--r--
packet.test
6.32
KB
-rw-r--r--
parser-big-32bit.test
145
B
-rw-r--r--
parser-big-64bit.test
145
B
-rw-r--r--
parser-master.opt
30
B
-rw-r--r--
parser.test
36.07
KB
-rw-r--r--
parser_bug21114_innodb.test
11.79
KB
-rw-r--r--
parser_not_embedded.test
2.53
KB
-rw-r--r--
parser_precedence.test
12.39
KB
-rw-r--r--
parser_stack.test
12.07
KB
-rw-r--r--
partition.test
68.35
KB
-rw-r--r--
partition_archive.test
4.19
KB
-rw-r--r--
partition_binlog.test
1.2
KB
-rw-r--r--
partition_binlog_stmt.test
985
B
-rw-r--r--
partition_blackhole.test
661
B
-rw-r--r--
partition_bug18198.test
7.88
KB
-rw-r--r--
partition_cache-master.opt
21
B
-rw-r--r--
partition_cache.test
1.41
KB
-rw-r--r--
partition_charset.test
675
B
-rw-r--r--
partition_column.test
16.25
KB
-rw-r--r--
partition_column_prune.test
2.35
KB
-rw-r--r--
partition_csv.test
2.52
KB
-rw-r--r--
partition_datatype.test
19.03
KB
-rw-r--r--
partition_debug.test
2.07
KB
-rw-r--r--
partition_debug_sync.test
7.01
KB
-rw-r--r--
partition_debug_sync_stmt.test
3.35
KB
-rw-r--r--
partition_deprecation.test
3.87
KB
-rw-r--r--
partition_error.test
62.95
KB
-rw-r--r--
partition_exchange.test
31.54
KB
-rw-r--r--
partition_explicit_prune.test
29.83
KB
-rw-r--r--
partition_federated.test
531
B
-rw-r--r--
partition_grant.test
2.4
KB
-rw-r--r--
partition_hash.test
5.07
KB
-rw-r--r--
partition_index_innodb.test
5.9
KB
-rw-r--r--
partition_index_myisam.test
3.88
KB
-rw-r--r--
partition_innodb.test
41.82
KB
-rw-r--r--
partition_innodb_plugin.test
4.73
KB
-rw-r--r--
partition_innodb_semi_consiste...
61
B
-rw-r--r--
partition_innodb_semi_consiste...
4.09
KB
-rw-r--r--
partition_innodb_stmt.test
1.22
KB
-rw-r--r--
partition_innodb_tablespace.te...
16.16
KB
-rw-r--r--
partition_key_cache.test
11.03
KB
-rw-r--r--
partition_list.test
8.14
KB
-rw-r--r--
partition_locking.test
63.4
KB
-rw-r--r--
partition_locking_4.test
1.53
KB
-rw-r--r--
partition_mgm.test
4.59
KB
-rw-r--r--
partition_mgm_err.test
6.47
KB
-rw-r--r--
partition_mgm_err2.test
940
B
-rw-r--r--
partition_myisam.test
8.17
KB
-rw-r--r--
partition_not_blackhole-master...
23
B
-rw-r--r--
partition_not_blackhole.test
875
B
-rw-r--r--
partition_not_windows-master.o...
19
B
-rw-r--r--
partition_not_windows.test
7.68
KB
-rw-r--r--
partition_order.test
17.9
KB
-rw-r--r--
partition_plugin-master.opt
22
B
-rw-r--r--
partition_plugin.test
3.82
KB
-rw-r--r--
partition_pruning.test
72.39
KB
-rw-r--r--
partition_range.test
31.76
KB
-rw-r--r--
partition_rename_longfilename....
2.02
KB
-rw-r--r--
partition_symlink.test
7.38
KB
-rw-r--r--
partition_sync.test
2.16
KB
-rw-r--r--
partition_truncate.test
742
B
-rw-r--r--
partition_utf8.test
1.63
KB
-rw-r--r--
partition_windows.test
1.28
KB
-rw-r--r--
per_thread_connection_handler....
1.99
KB
-rw-r--r--
perror-win.test
1.1
KB
-rw-r--r--
perror.test
778
B
-rw-r--r--
plugin-master.opt
20
B
-rw-r--r--
plugin.test
8.24
KB
-rw-r--r--
plugin_auth-master.opt
35
B
-rw-r--r--
plugin_auth.test
28.96
KB
-rw-r--r--
plugin_auth_expire-master.opt
35
B
-rw-r--r--
plugin_auth_expire.test
706
B
-rw-r--r--
plugin_auth_qa-master.opt
35
B
-rw-r--r--
plugin_auth_qa.test
12.3
KB
-rw-r--r--
plugin_auth_qa_1-master.opt
35
B
-rw-r--r--
plugin_auth_qa_1.test
14.55
KB
-rw-r--r--
plugin_auth_qa_2-master.opt
55
B
-rw-r--r--
plugin_auth_qa_2.test
7.94
KB
-rw-r--r--
plugin_auth_qa_3-master.opt
49
B
-rw-r--r--
plugin_auth_qa_3.test
1.51
KB
-rw-r--r--
plugin_auth_sha256-master.opt
170
B
-rw-r--r--
plugin_auth_sha256.test
4.83
KB
-rw-r--r--
plugin_auth_sha256_2-master.op...
224
B
-rw-r--r--
plugin_auth_sha256_2.test
1.95
KB
-rw-r--r--
plugin_auth_sha256_server_defa...
224
B
-rw-r--r--
plugin_auth_sha256_server_defa...
2.93
KB
-rw-r--r--
plugin_auth_sha256_server_defa...
48
B
-rw-r--r--
plugin_auth_sha256_server_defa...
3.68
KB
-rw-r--r--
plugin_auth_sha256_tls.test
2.16
KB
-rw-r--r--
plugin_auth_user_lock-master.o...
34
B
-rw-r--r--
plugin_auth_user_lock.test
1.27
KB
-rw-r--r--
plugin_load-master.opt
76
B
-rw-r--r--
plugin_load.test
125
B
-rw-r--r--
plugin_load_option-master.opt
85
B
-rw-r--r--
plugin_load_option.test
265
B
-rw-r--r--
plugin_not_embedded-master.opt
20
B
-rw-r--r--
plugin_not_embedded.test
1
KB
-rw-r--r--
preload-master.opt
21
B
-rw-r--r--
preload.test
2.65
KB
-rw-r--r--
profiling.test
9.24
KB
-rw-r--r--
ps-master.opt
73
B
-rw-r--r--
ps.test
93.48
KB
-rw-r--r--
ps_10nestset.test
2.75
KB
-rw-r--r--
ps_11bugs.test
7.05
KB
-rw-r--r--
ps_1general.test
28.24
KB
-rw-r--r--
ps_2myisam-master.opt
21
B
-rw-r--r--
ps_2myisam.test
1.24
KB
-rw-r--r--
ps_3innodb-master.opt
53
B
-rw-r--r--
ps_3innodb.test
638
B
-rw-r--r--
ps_4heap-master.opt
21
B
-rw-r--r--
ps_4heap.test
1.62
KB
-rw-r--r--
ps_5merge-master.opt
21
B
-rw-r--r--
ps_5merge.test
2.8
KB
-rw-r--r--
ps_ddl-master.opt
43
B
-rw-r--r--
ps_ddl.test
53.8
KB
-rw-r--r--
ps_ddl1.test
11.04
KB
-rw-r--r--
ps_grant.test
4.03
KB
-rw-r--r--
ps_not_windows.test
755
B
-rw-r--r--
ps_w_max_indexes_64.test
5.64
KB
-rw-r--r--
query_cache-master.opt
21
B
-rw-r--r--
query_cache.test
45.66
KB
-rw-r--r--
query_cache_28249-master.opt
21
B
-rw-r--r--
query_cache_28249.test
4.2
KB
-rw-r--r--
query_cache_debug-master.opt
21
B
-rw-r--r--
query_cache_debug.test
10.91
KB
-rw-r--r--
query_cache_disabled-master.op...
21
B
-rw-r--r--
query_cache_disabled.test
1.17
KB
-rw-r--r--
query_cache_merge-master.opt
21
B
-rw-r--r--
query_cache_merge.test
4.68
KB
-rw-r--r--
query_cache_notembedded-master...
21
B
-rw-r--r--
query_cache_notembedded.test
7.5
KB
-rw-r--r--
query_cache_ps_no_prot-master....
21
B
-rw-r--r--
query_cache_ps_no_prot.test
907
B
-rw-r--r--
query_cache_ps_ps_prot-master....
21
B
-rw-r--r--
query_cache_ps_ps_prot.test
1.18
KB
-rw-r--r--
query_cache_size_functionality...
21
B
-rw-r--r--
query_cache_size_functionality...
11.14
KB
-rw-r--r--
query_cache_type_functionality...
21
B
-rw-r--r--
query_cache_type_functionality...
11.18
KB
-rw-r--r--
query_cache_with_views-master....
21
B
-rw-r--r--
query_cache_with_views.test
4.17
KB
-rw-r--r--
range_all.test
700
B
-rw-r--r--
range_icp.test
773
B
-rw-r--r--
range_icp_mrr.test
746
B
-rw-r--r--
range_mrr.test
771
B
-rw-r--r--
range_mrr_cost.test
781
B
-rw-r--r--
range_none.test
813
B
-rw-r--r--
range_with_memory_limit.test
880
B
-rw-r--r--
read_many_rows_innodb.test
417
B
-rw-r--r--
read_only.test
12.77
KB
-rw-r--r--
read_only_innodb.test
5.5
KB
-rw-r--r--
relay_log_index_variables-mast...
86
B
-rw-r--r--
relay_log_index_variables.test
184
B
-rw-r--r--
relay_log_variables-master.opt
24
B
-rw-r--r--
relay_log_variables.test
184
B
-rw-r--r--
rename.test
2.26
KB
-rw-r--r--
renamedb.test
1.25
KB
-rw-r--r--
repair.test
5.29
KB
-rw-r--r--
replace.test
1.48
KB
-rw-r--r--
reset_connection.test
5.48
KB
-rw-r--r--
rewrite_general_log.test
5.14
KB
-rw-r--r--
rewrite_slow_log.test
4.32
KB
-rw-r--r--
rollback.test
683
B
-rw-r--r--
round.test
4.73
KB
-rw-r--r--
row.test
10.61
KB
-rw-r--r--
rowid_order_innodb.test
382
B
-rw-r--r--
rpl_connect_attr.test
2.36
KB
-rw-r--r--
rpl_multi_source_mysqldump_sla...
2.56
KB
-rw-r--r--
rpl_mysqldump_slave.test
1.06
KB
-rw-r--r--
schema.test
4.7
KB
-rw-r--r--
secure_file_priv_win-master.op...
34
B
-rw-r--r--
secure_file_priv_win.test
2.77
KB
-rw-r--r--
select_all.test
801
B
-rw-r--r--
select_all_bka.test
478
B
-rw-r--r--
select_all_bka_nixbnl.test
500
B
-rw-r--r--
select_for_update-master.opt
29
B
-rw-r--r--
select_for_update.test
996
B
-rw-r--r--
select_found.test
6.36
KB
-rw-r--r--
select_icp_mrr.test
847
B
-rw-r--r--
select_icp_mrr_bka.test
486
B
-rw-r--r--
select_icp_mrr_bka_nixbnl.test
508
B
-rw-r--r--
select_none.test
914
B
-rw-r--r--
select_none_bka.test
480
B
-rw-r--r--
select_none_bka_nixbnl.test
502
B
-rw-r--r--
select_safe.test
4.8
KB
-rw-r--r--
server_offline_1.test
2.83
KB
-rw-r--r--
server_offline_2.test
2.2
KB
-rw-r--r--
server_offline_3.test
2.33
KB
-rw-r--r--
server_offline_4.test
2.33
KB
-rw-r--r--
server_offline_5.test
2.41
KB
-rw-r--r--
server_offline_6-master.opt
18
B
-rw-r--r--
server_offline_6.test
1.68
KB
-rw-r--r--
server_uuid.test
2.53
KB
-rw-r--r--
server_uuid_embedded.test
1.34
KB
-rw-r--r--
session_tracker-master.opt
24
B
-rw-r--r--
session_tracker.test
14.72
KB
-rw-r--r--
session_tracker_trx_state-mast...
21
B
-rw-r--r--
session_tracker_trx_state.test
25.82
KB
-rw-r--r--
shm-master.opt
173
B
-rw-r--r--
shm.test
1.67
KB
-rw-r--r--
shm_server_restart-master.opt
23
B
-rw-r--r--
shm_server_restart.test
999
B
-rw-r--r--
show_check-master.opt
101
B
-rw-r--r--
show_check.test
33.97
KB
-rw-r--r--
show_processlist_state.test
208
B
-rw-r--r--
show_profile.test
496
B
-rw-r--r--
show_variables.test
367
B
-rw-r--r--
shutdown.test
1.9
KB
-rw-r--r--
signal.test
63.46
KB
-rw-r--r--
signal_code.test
1.04
KB
-rw-r--r--
signal_demo1.test
6.97
KB
-rw-r--r--
signal_demo2.test
3.34
KB
-rw-r--r--
signal_demo3-master.opt
55
B
-rw-r--r--
signal_demo3.test
2.67
KB
-rw-r--r--
signal_sqlmode.test
1.85
KB
-rw-r--r--
single_delete_update.test
13.54
KB
-rw-r--r--
skip_grants-master.opt
20
B
-rw-r--r--
skip_grants.test
2.74
KB
-rw-r--r--
skip_grants_flush-master.opt
20
B
-rw-r--r--
skip_grants_flush.test
540
B
-rw-r--r--
skip_log_bin-master.opt
21
B
-rw-r--r--
skip_log_bin.test
646
B
-rw-r--r--
skip_name_resolve-master.opt
20
B
-rw-r--r--
skip_name_resolve.test
2.77
KB
-rw-r--r--
slow_log.test
2.27
KB
-rw-r--r--
sort_buffer_size_functionality...
21
B
-rw-r--r--
sort_buffer_size_functionality...
9.56
KB
-rw-r--r--
sp-big.test
2.15
KB
-rw-r--r--
sp-bugs.test
8.47
KB
-rw-r--r--
sp-code.test
21.61
KB
-rw-r--r--
sp-destruct.test
8.12
KB
-rw-r--r--
sp-dynamic.test
9.25
KB
-rw-r--r--
sp-error.test
87.47
KB
-rw-r--r--
sp-fib-master.opt
33
B
-rw-r--r--
sp-fib.test
1.33
KB
-rw-r--r--
sp-lock-master.opt
33
B
-rw-r--r--
sp-lock.test
31.39
KB
-rw-r--r--
sp-master.opt
54
B
-rw-r--r--
sp-no-code.test
216
B
-rw-r--r--
sp-prelocking-master.opt
33
B
-rw-r--r--
sp-prelocking.test
8.43
KB
-rw-r--r--
sp-security.test
25.43
KB
-rw-r--r--
sp-threads.test
4
KB
-rw-r--r--
sp-ucs2.test
3.38
KB
-rw-r--r--
sp-vars.test
28.72
KB
-rw-r--r--
sp.test
196.05
KB
-rw-r--r--
sp_debug.test
1.03
KB
-rw-r--r--
sp_gis.test
923
B
-rw-r--r--
sp_notembedded-master.opt
21
B
-rw-r--r--
sp_notembedded.test
17.08
KB
-rw-r--r--
sp_stress_case.test
2.07
KB
-rw-r--r--
sp_sync.test
4.88
KB
-rw-r--r--
sp_trans.test
17.11
KB
-rw-r--r--
sp_trans_log.test
1.35
KB
-rw-r--r--
sp_validation.test
40.19
KB
-rw-r--r--
sql_mode.test
16.94
KB
-rw-r--r--
sql_mode_default.test
3.14
KB
-rw-r--r--
ssl-big.test
1.68
KB
-rw-r--r--
ssl-sha512-master.opt
196
B
-rw-r--r--
ssl-sha512.test
432
B
-rw-r--r--
ssl.test
1.77
KB
-rw-r--r--
ssl_8k_key-master.opt
118
B
-rw-r--r--
ssl_8k_key.test
560
B
-rw-r--r--
ssl_and_innodb.test
261
B
-rw-r--r--
ssl_ca-master.opt
160
B
-rw-r--r--
ssl_ca.test
2.07
KB
-rw-r--r--
ssl_cipher-master.opt
32
B
-rw-r--r--
ssl_cipher.test
933
B
-rw-r--r--
ssl_compress.test
1.24
KB
-rw-r--r--
ssl_connect.test
368
B
-rw-r--r--
ssl_crl-master.opt
218
B
-rw-r--r--
ssl_crl.test
2.73
KB
-rw-r--r--
ssl_crl_clients-master.opt
234
B
-rw-r--r--
ssl_crl_clients.test
1.9
KB
-rw-r--r--
ssl_crl_clients_valid-master.o...
218
B
-rw-r--r--
ssl_crl_clients_valid.test
1.24
KB
-rw-r--r--
ssl_crl_crlpath-master.opt
206
B
-rw-r--r--
ssl_crl_crlpath.test
1.46
KB
-rw-r--r--
ssl_deprecated_tls_versions-ma...
28
B
-rw-r--r--
ssl_deprecated_tls_versions.te...
1.31
KB
-rw-r--r--
ssl_verify_identity-master.opt
181
B
-rw-r--r--
ssl_verify_identity.test
4.66
KB
-rw-r--r--
status-master.opt
76
B
-rw-r--r--
status.test
15
KB
-rw-r--r--
status2.test
1.54
KB
-rw-r--r--
status_bug17954.test
1.74
KB
-rw-r--r--
status_debug.test
3.7
KB
-rw-r--r--
strict-master.opt
32
B
-rw-r--r--
strict.test
49.24
KB
-rw-r--r--
strict_autoinc_1myisam.test
283
B
-rw-r--r--
strict_autoinc_2innodb.test
152
B
-rw-r--r--
strict_autoinc_3heap.test
227
B
-rw-r--r--
subquery_all.test
751
B
-rw-r--r--
subquery_all_bka.test
383
B
-rw-r--r--
subquery_all_bka_nixbnl.test
405
B
-rw-r--r--
subquery_bugs.test
1.7
KB
-rw-r--r--
subquery_mat.test
862
B
-rw-r--r--
subquery_mat_all.test
770
B
-rw-r--r--
subquery_mat_none.test
827
B
-rw-r--r--
subquery_nomat_nosj.test
774
B
-rw-r--r--
subquery_nomat_nosj_bka.test
397
B
-rw-r--r--
subquery_nomat_nosj_bka_nixbnl...
419
B
-rw-r--r--
subquery_none.test
819
B
-rw-r--r--
subquery_none_bka.test
385
B
-rw-r--r--
subquery_none_bka_nixbnl.test
407
B
-rw-r--r--
subquery_sj_all-master.opt
22
B
-rw-r--r--
subquery_sj_all.test
712
B
-rw-r--r--
subquery_sj_all_bka-master.opt
22
B
-rw-r--r--
subquery_sj_all_bka.test
389
B
-rw-r--r--
subquery_sj_all_bka_nixbnl-mas...
22
B
-rw-r--r--
subquery_sj_all_bka_nixbnl.tes...
411
B
-rw-r--r--
subquery_sj_all_bkaunique-mast...
22
B
-rw-r--r--
subquery_sj_all_bkaunique.test
530
B
-rw-r--r--
subquery_sj_dupsweed-master.op...
22
B
-rw-r--r--
subquery_sj_dupsweed.test
1019
B
-rw-r--r--
subquery_sj_dupsweed_bka-maste...
22
B
-rw-r--r--
subquery_sj_dupsweed_bka.test
399
B
-rw-r--r--
subquery_sj_dupsweed_bka_nixbn...
22
B
-rw-r--r--
subquery_sj_dupsweed_bka_nixbn...
421
B
-rw-r--r--
subquery_sj_dupsweed_bkaunique...
22
B
-rw-r--r--
subquery_sj_dupsweed_bkaunique...
517
B
-rw-r--r--
subquery_sj_firstmatch-master....
22
B
-rw-r--r--
subquery_sj_firstmatch.test
2.67
KB
-rw-r--r--
subquery_sj_firstmatch_bka-mas...
22
B
-rw-r--r--
subquery_sj_firstmatch_bka.tes...
403
B
-rw-r--r--
subquery_sj_firstmatch_bka_nix...
425
B
-rw-r--r--
subquery_sj_firstmatch_bkauniq...
476
B
-rw-r--r--
subquery_sj_innodb_all.test
550
B
-rw-r--r--
subquery_sj_innodb_all_bka.tes...
194
B
-rw-r--r--
subquery_sj_innodb_all_bka_nix...
216
B
-rw-r--r--
subquery_sj_innodb_all_bkauniq...
476
B
-rw-r--r--
subquery_sj_innodb_none.test
663
B
-rw-r--r--
subquery_sj_innodb_none_bka.te...
196
B
-rw-r--r--
subquery_sj_innodb_none_bka_ni...
218
B
-rw-r--r--
subquery_sj_innodb_none_bkauni...
478
B
-rw-r--r--
subquery_sj_loosescan.test
1.05
KB
-rw-r--r--
subquery_sj_loosescan_bka.test
401
B
-rw-r--r--
subquery_sj_loosescan_bka_nixb...
423
B
-rw-r--r--
subquery_sj_loosescan_bkauniqu...
519
B
-rw-r--r--
subquery_sj_mat.test
1.06
KB
-rw-r--r--
subquery_sj_mat_bka.test
389
B
-rw-r--r--
subquery_sj_mat_bka_nixbnl.tes...
411
B
-rw-r--r--
subquery_sj_mat_bkaunique.test
507
B
-rw-r--r--
subquery_sj_mat_nosj.test
805
B
-rw-r--r--
subquery_sj_none.test
825
B
-rw-r--r--
subquery_sj_none_bka.test
391
B
-rw-r--r--
subquery_sj_none_bka_nixbnl.te...
413
B
-rw-r--r--
subquery_sj_none_bkaunique.tes...
509
B
-rw-r--r--
subselect_debug.test
977
B
-rw-r--r--
subselect_gis.test
589
B
-rw-r--r--
subselect_innodb.test
24.42
KB
-rw-r--r--
subselect_notembedded-master.o...
33
B
-rw-r--r--
subselect_notembedded.test
1.73
KB
-rw-r--r--
sum_distinct-big.test
2.21
KB
-rw-r--r--
sum_distinct.test
3.43
KB
-rw-r--r--
symlink.test
9.82
KB
-rw-r--r--
synchronization.test
1.14
KB
-rw-r--r--
sysdate_is_now-master.opt
17
B
-rw-r--r--
sysdate_is_now.test
298
B
-rw-r--r--
system_mysql_db.test
311
B
-rw-r--r--
system_mysql_db_fix30020-maste...
30
B
-rw-r--r--
system_mysql_db_fix40123-maste...
30
B
-rw-r--r--
system_mysql_db_fix40123.test
9.84
KB
-rw-r--r--
system_mysql_db_fix50030-maste...
30
B
-rw-r--r--
system_mysql_db_fix50030.test
14.34
KB
-rw-r--r--
system_mysql_db_fix50117-maste...
30
B
-rw-r--r--
system_mysql_db_fix50117.test
15.1
KB
-rw-r--r--
system_mysql_db_refs.test
3.35
KB
-rw-r--r--
table_definition_cache_functio...
8.84
KB
-rw-r--r--
table_open_cache_functionality...
52
B
-rw-r--r--
table_open_cache_functionality...
13.44
KB
-rw-r--r--
tablelock.test
1.37
KB
-rw-r--r--
tablespace.test
5.76
KB
-rw-r--r--
temp_pool-master.opt
31
B
-rw-r--r--
temp_pool.test
1.44
KB
-rw-r--r--
temp_table-master.opt
32
B
-rw-r--r--
temp_table.test
8.48
KB
-rw-r--r--
temporal_literal.test
6.77
KB
-rw-r--r--
test_security_context-master.o...
27
B
-rw-r--r--
test_security_context.test
1.11
KB
-rw-r--r--
timezone-master.opt
15
B
-rw-r--r--
timezone.test
2.37
KB
-rw-r--r--
timezone2.test
11.04
KB
-rw-r--r--
timezone3-master.opt
49
B
-rw-r--r--
timezone3.test
2.74
KB
-rw-r--r--
timezone4-master.opt
18
B
-rw-r--r--
timezone4.test
311
B
-rw-r--r--
timezone_debug.test
1.13
KB
-rw-r--r--
timezone_grant.test
4.64
KB
-rw-r--r--
trans_read_only-master.opt
29
B
-rw-r--r--
trans_read_only.test
1.05
KB
-rw-r--r--
transaction_isolation-master.o...
37
B
-rw-r--r--
transaction_isolation.test
1.57
KB
-rw-r--r--
transaction_read_only-master.o...
24
B
-rw-r--r--
transaction_read_only.test
1.88
KB
-rw-r--r--
trigger-compat.test
8.46
KB
-rw-r--r--
trigger-trans.test
6.78
KB
-rw-r--r--
trigger.test
85.5
KB
-rw-r--r--
trigger_debug.test
538
B
-rw-r--r--
trigger_notembedded.test
26.82
KB
-rw-r--r--
trigger_wl3253.test
12.35
KB
-rw-r--r--
trigger_wl6030.test
42.25
KB
-rw-r--r--
truncate.test
3.36
KB
-rw-r--r--
truncate_coverage.test
5.79
KB
-rw-r--r--
type_binary.test
6.09
KB
-rw-r--r--
type_bit.test
13.4
KB
-rw-r--r--
type_bit_innodb.test
4.54
KB
-rw-r--r--
type_blob.test
31.16
KB
-rw-r--r--
type_date.test
14.53
KB
-rw-r--r--
type_datetime.test
21.85
KB
-rw-r--r--
type_decimal.test
29.97
KB
-rw-r--r--
type_enum.test
90.04
KB
-rw-r--r--
type_float.test
9.8
KB
-rw-r--r--
type_nchar.test
1.4
KB
-rw-r--r--
type_newdecimal-big.test
1.16
KB
-rw-r--r--
type_newdecimal.test
45.73
KB
-rw-r--r--
type_ranges.test
9.2
KB
-rw-r--r--
type_set.test
4.29
KB
-rw-r--r--
type_string-master.opt
10
B
-rw-r--r--
type_string.test
531
B
-rw-r--r--
type_temporal_fractional.test
289.34
KB
-rw-r--r--
type_temporal_upgrade.test
5.25
KB
-rw-r--r--
type_time.test
11.67
KB
-rw-r--r--
type_timestamp-master.opt
36
B
-rw-r--r--
type_timestamp.test
19.19
KB
-rw-r--r--
type_timestamp_explicit-master...
34
B
-rw-r--r--
type_timestamp_explicit.test
4.21
KB
-rw-r--r--
type_uint.test
309
B
-rw-r--r--
type_varchar.test
6.83
KB
-rw-r--r--
type_year.test
5.18
KB
-rw-r--r--
udf-master.opt
42
B
-rw-r--r--
udf.test
16.26
KB
-rw-r--r--
udf_services-master.opt
21
B
-rw-r--r--
udf_services.test
765
B
-rw-r--r--
udf_skip_grants-master.opt
41
B
-rw-r--r--
udf_skip_grants.test
1.45
KB
-rw-r--r--
union-master.opt
49
B
-rw-r--r--
union.test
62.39
KB
-rw-r--r--
unsafe_binlog_innodb-master.op...
67
B
-rw-r--r--
unsafe_binlog_innodb.test
432
B
-rw-r--r--
update.test
20.23
KB
-rw-r--r--
upgrade.test
5.3
KB
-rw-r--r--
user_if_exists.test
8.02
KB
-rw-r--r--
user_limits-master.opt
21
B
-rw-r--r--
user_limits.test
6.97
KB
-rw-r--r--
user_lock.test
22.39
KB
-rw-r--r--
user_var-binlog.test
1.04
KB
-rw-r--r--
user_var.test
14.42
KB
-rw-r--r--
utility_warnings-master.opt
147
B
-rw-r--r--
utility_warnings.test
17.92
KB
-rw-r--r--
validate_password_plugin-maste...
23
B
-rw-r--r--
validate_password_plugin.test
10.41
KB
-rw-r--r--
validate_password_plugin_check...
47
B
-rw-r--r--
validate_password_plugin_check...
3.75
KB
-rw-r--r--
varbinary.test
7.71
KB
-rw-r--r--
variables-big.test
2.13
KB
-rw-r--r--
variables-master.opt
21
B
-rw-r--r--
variables-notembedded-master.o...
47
B
-rw-r--r--
variables-notembedded.test
11.21
KB
-rw-r--r--
variables-win.test
393
B
-rw-r--r--
variables.test
50.07
KB
-rw-r--r--
variables_community.test
242
B
-rw-r--r--
variables_debug.test
2.96
KB
-rw-r--r--
version_token-master.opt
19
B
-rw-r--r--
version_token.test
10.36
KB
-rw-r--r--
version_token_bug21280801-mast...
19
B
-rw-r--r--
version_token_bug21280801.test
3.23
KB
-rw-r--r--
version_token_errors-master.op...
19
B
-rw-r--r--
version_token_errors.test
2.3
KB
-rw-r--r--
view.test
137.35
KB
-rw-r--r--
view_alias.test
4.03
KB
-rw-r--r--
view_grant.test
93.83
KB
-rw-r--r--
view_gtid_mode_on_debug-master...
66
B
-rw-r--r--
view_gtid_mode_on_debug.test
3.48
KB
-rw-r--r--
wait_timeout.test
5.31
KB
-rw-r--r--
warnings-master.opt
14
B
-rw-r--r--
warnings.test
5.95
KB
-rw-r--r--
warnings_engine_disabled.test
763
B
-rw-r--r--
windows.test
2.45
KB
-rw-r--r--
wl3836.test
3.92
KB
-rw-r--r--
wl4435_generated.inc
10.43
KB
-rw-r--r--
wl5928.test
15.04
KB
-rw-r--r--
wl6219-csv.test
109
B
-rw-r--r--
wl6219-innodb.test
322
B
-rw-r--r--
wl6219-memory.test
112
B
-rw-r--r--
wl6219-merge.test
111
B
-rw-r--r--
wl6219-myisam.test
424
B
-rw-r--r--
wl6219-upgrade.test
5.39
KB
-rw-r--r--
wl6301_1_not_windows-master.op...
20
B
-rw-r--r--
wl6301_1_not_windows.test
456
B
-rw-r--r--
wl6301_2_not_windows-master.op...
43
B
-rw-r--r--
wl6301_2_not_windows.test
494
B
-rw-r--r--
wl6301_3-master.opt
52
B
-rw-r--r--
wl6301_3.test
904
B
-rw-r--r--
wl6443_deprecation-master.opt
23
B
-rw-r--r--
wl6443_deprecation.test
4.18
KB
-rw-r--r--
wl6661-master.opt
209
B
-rw-r--r--
wl6661.test
6.92
KB
-rw-r--r--
wl6711_heap_to_disk.test
4.21
KB
-rw-r--r--
wl6978.test
478
B
-rw-r--r--
xa.test
14.62
KB
-rw-r--r--
xa_deadlock_binlog.test
2.26
KB
-rw-r--r--
xa_debug.test
5.47
KB
-rw-r--r--
xa_gtid-master.opt
55
B
-rw-r--r--
xa_gtid.test
917
B
-rw-r--r--
xa_prepared_binlog_off-master....
15
B
-rw-r--r--
xa_prepared_binlog_off.test
527
B
-rw-r--r--
xml.test
24.95
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : view_grant.test
# The include statement below is a temp one for tests that are yet to #be ported to run with InnoDB, #but needs to be kept for tests that would need MyISAM in future. --source include/force_myisam_default.inc # Can't test with embedded server -- source include/not_embedded.inc # Save the initial number of concurrent sessions --source include/count_sessions.inc set @orig_sql_mode_session= @@SESSION.sql_mode; set @orig_sql_mode_global= @@GLOBAL.sql_mode; set GLOBAL sql_mode= (select replace(@@GLOBAL.sql_mode,'NO_AUTO_CREATE_USER','')); set SESSION sql_mode= (select replace(@@SESSION.sql_mode,'NO_AUTO_CREATE_USER','')); --disable_warnings drop database if exists mysqltest; drop view if exists v1,v2,v3; --enable_warnings # simple test of grants grant create view on test.* to test@localhost; show grants for test@localhost; revoke create view on test.* from test@localhost; show grants for test@localhost; # The grant above creates a new user test@localhost, delete it drop user test@localhost; # grant create view test # connect (root,localhost,root,,test); connection root; --disable_warnings ONCE create database mysqltest; create table mysqltest.t1 (a int, b int); create table mysqltest.t2 (a int, b int); grant select on mysqltest.t1 to mysqltest_1@localhost; grant create view,select on test.* to mysqltest_1@localhost; connect (user1,localhost,mysqltest_1,,test); connection user1; --error ER_SPECIFIC_ACCESS_DENIED_ERROR create definer=root@localhost view v1 as select * from mysqltest.t1; create view v1 as select * from mysqltest.t1; # try to modify view without DROP privilege on it --error ER_TABLEACCESS_DENIED_ERROR alter view v1 as select * from mysqltest.t1; --error ER_TABLEACCESS_DENIED_ERROR create or replace view v1 as select * from mysqltest.t1; # no CRETE VIEW privilege --error ER_TABLEACCESS_DENIED_ERROR create view mysqltest.v2 as select * from mysqltest.t1; # no SELECT privilege --error ER_TABLEACCESS_DENIED_ERROR create view v2 as select * from mysqltest.t2; connection root; # check view definer information show create view v1; grant create view,drop,select on test.* to mysqltest_1@localhost; connection user1; # following 'use' command is workaround of Bug#9582 and should be removed # when that bug will be fixed use test; alter view v1 as select * from mysqltest.t1; create or replace view v1 as select * from mysqltest.t1; connection root; revoke all privileges on mysqltest.t1 from mysqltest_1@localhost; revoke all privileges on test.* from mysqltest_1@localhost; drop database mysqltest; drop view test.v1; # # grants per columns # # MERGE algorithm --disable_warnings ONCE create database mysqltest; create table mysqltest.t1 (a int, b int); create view mysqltest.v1 (c,d) as select a+1,b+1 from mysqltest.t1; grant select (c) on mysqltest.v1 to mysqltest_1@localhost; connection user1; select c from mysqltest.v1; # there are no privileges on column 'd' --error ER_COLUMNACCESS_DENIED_ERROR select d from mysqltest.v1; connection root; revoke all privileges on mysqltest.v1 from mysqltest_1@localhost; delete from mysql.user where user='mysqltest_1'; drop database mysqltest; # TEMPORARY TABLE algorithm --disable_warnings ONCE create database mysqltest; create table mysqltest.t1 (a int, b int); create algorithm=temptable view mysqltest.v1 (c,d) as select a+1,b+1 from mysqltest.t1; grant select (c) on mysqltest.v1 to mysqltest_1@localhost; connection user1; select c from mysqltest.v1; # there are no privileges on column 'd' --error ER_COLUMNACCESS_DENIED_ERROR select d from mysqltest.v1; connection root; revoke all privileges on mysqltest.v1 from mysqltest_1@localhost; delete from mysql.user where user='mysqltest_1'; drop database mysqltest; # # EXPLAIN rights # connection root; --disable_warnings ONCE create database mysqltest; # prepare views and tables create table mysqltest.t1 (a int, b int); create table mysqltest.t2 (a int, b int); create view mysqltest.v1 (c,d) as select a+1,b+1 from mysqltest.t1; create algorithm=temptable view mysqltest.v2 (c,d) as select a+1,b+1 from mysqltest.t1; create view mysqltest.v3 (c,d) as select a+1,b+1 from mysqltest.t2; create algorithm=temptable view mysqltest.v4 (c,d) as select a+1,b+1 from mysqltest.t2; # v5: SHOW VIEW, but no SELECT create view mysqltest.v5 (c,d) as select a+1,b+1 from mysqltest.t1; grant select on mysqltest.v1 to mysqltest_1@localhost; grant select on mysqltest.v2 to mysqltest_1@localhost; grant select on mysqltest.v3 to mysqltest_1@localhost; grant select on mysqltest.v4 to mysqltest_1@localhost; grant show view on mysqltest.v5 to mysqltest_1@localhost; connection user1; # all SELECTs works, except v5 which lacks SELECT privs select c from mysqltest.v1; select c from mysqltest.v2; select c from mysqltest.v3; select c from mysqltest.v4; --error ER_TABLEACCESS_DENIED_ERROR select c from mysqltest.v5; # test of show coluns show columns from mysqltest.v1; show columns from mysqltest.v2; # explain/show fail --error ER_VIEW_NO_EXPLAIN explain select c from mysqltest.v1; --error ER_TABLEACCESS_DENIED_ERROR show create view mysqltest.v1; --error ER_VIEW_NO_EXPLAIN explain select c from mysqltest.v2; --error ER_TABLEACCESS_DENIED_ERROR show create view mysqltest.v2; --error ER_VIEW_NO_EXPLAIN explain select c from mysqltest.v3; --error ER_TABLEACCESS_DENIED_ERROR show create view mysqltest.v3; --error ER_VIEW_NO_EXPLAIN explain select c from mysqltest.v4; --error ER_TABLEACCESS_DENIED_ERROR show create view mysqltest.v4; --error ER_TABLEACCESS_DENIED_ERROR explain select c from mysqltest.v5; # new in 5.5: SHOW CREATE VIEW needs SELECT now (MySQL Bug#27145) --error ER_TABLEACCESS_DENIED_ERROR show create view mysqltest.v5; connection root; grant select on mysqltest.v5 to mysqltest_1@localhost; connection user1; show create view mysqltest.v5; # missing SELECT on underlying t1, no SHOW VIEW on v1 either. --error ER_VIEW_NO_EXPLAIN explain select c from mysqltest.v1; # missing SHOW VIEW --error ER_TABLEACCESS_DENIED_ERROR show create view mysqltest.v1; # allow to see one of underlying table connection root; grant show view on mysqltest.v1 to mysqltest_1@localhost; grant select on mysqltest.t1 to mysqltest_1@localhost; revoke select on mysqltest.v5 from mysqltest_1@localhost; connection user1; # EXPLAIN works explain select c from mysqltest.v1; show create view mysqltest.v1; # missing SHOW VIEW --error ER_VIEW_NO_EXPLAIN explain select c from mysqltest.v2; --error ER_TABLEACCESS_DENIED_ERROR show create view mysqltest.v2; # but other EXPLAINs do not --error ER_VIEW_NO_EXPLAIN explain select c from mysqltest.v3; --error ER_TABLEACCESS_DENIED_ERROR show create view mysqltest.v3; --error ER_VIEW_NO_EXPLAIN explain select c from mysqltest.v4; --error ER_TABLEACCESS_DENIED_ERROR show create view mysqltest.v4; # we have SHOW VIEW on v5, and SELECT on t1 -- not enough --error ER_TABLEACCESS_DENIED_ERROR explain select c from mysqltest.v5; # allow to see any view in mysqltest database connection root; grant show view on mysqltest.* to mysqltest_1@localhost; connection user1; explain select c from mysqltest.v1; show create view mysqltest.v1; explain select c from mysqltest.v2; show create view mysqltest.v2; # have SHOW VIEW | SELECT on v3, but no SELECT on t2 --error ER_VIEW_NO_EXPLAIN explain select c from mysqltest.v3; show create view mysqltest.v3; # have SHOW VIEW | SELECT on v4, but no SELECT on t2 --error ER_VIEW_NO_EXPLAIN explain select c from mysqltest.v4; show create view mysqltest.v4; connection root; revoke all privileges on mysqltest.* from mysqltest_1@localhost; delete from mysql.user where user='mysqltest_1'; drop database mysqltest; # # UPDATE privileges on VIEW columns and whole VIEW # connection root; --disable_warnings ONCE create database mysqltest; create table mysqltest.t1 (a int, b int, primary key(a)); insert into mysqltest.t1 values (10,2), (20,3), (30,4), (40,5), (50,10); create table mysqltest.t2 (x int); insert into mysqltest.t2 values (3), (4), (5), (6); create view mysqltest.v1 (a,c) as select a, b+1 from mysqltest.t1; create view mysqltest.v2 (a,c) as select a, b from mysqltest.t1; create view mysqltest.v3 (a,c) as select a, b+1 from mysqltest.t1; grant update (a) on mysqltest.v2 to mysqltest_1@localhost; grant update on mysqltest.v1 to mysqltest_1@localhost; grant select on mysqltest.* to mysqltest_1@localhost; connection user1; use mysqltest; # update with rights on VIEW column update t2,v1 set v1.a=v1.a+v1.c where t2.x=v1.c; select * from t1; update v1 set a=a+c; select * from t1; # update with rights on whole VIEW update t2,v2 set v2.a=v2.a+v2.c where t2.x=v2.c; select * from t1; update v2 set a=a+c; select * from t1; # no rights on column --error ER_COLUMNACCESS_DENIED_ERROR update t2,v2 set v2.c=v2.a+v2.c where t2.x=v2.c; --error ER_COLUMNACCESS_DENIED_ERROR update v2 set c=a+c; # no rights for view --error ER_COLUMNACCESS_DENIED_ERROR update t2,v3 set v3.a=v3.a+v3.c where t2.x=v3.c; --error ER_TABLEACCESS_DENIED_ERROR update v3 set a=a+c; use test; connection root; REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost; drop database mysqltest; # # DELETE privileges on VIEW # connection root; --disable_warnings ONCE create database mysqltest; create table mysqltest.t1 (a int, b int, primary key(a)); insert into mysqltest.t1 values (1,2), (2,3), (3,4), (4,5), (5,10); create table mysqltest.t2 (x int); insert into mysqltest.t2 values (3), (4), (5), (6); create view mysqltest.v1 (a,c) as select a, b+1 from mysqltest.t1; create view mysqltest.v2 (a,c) as select a, b+1 from mysqltest.t1; grant delete on mysqltest.v1 to mysqltest_1@localhost; grant select on mysqltest.* to mysqltest_1@localhost; connection user1; use mysqltest; # update with rights on VIEW column delete from v1 where c < 4; select * from t1; delete v1 from t2,v1 where t2.x=v1.c; select * from t1; # no rights for view --error ER_TABLEACCESS_DENIED_ERROR delete v2 from t2,v2 where t2.x=v2.c; --error ER_TABLEACCESS_DENIED_ERROR delete from v2 where c < 4; use test; connection root; REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost; drop database mysqltest; # # insert privileges on VIEW # connection root; --disable_warnings ONCE create database mysqltest; create table mysqltest.t1 (a int, b int, primary key(a)); insert into mysqltest.t1 values (1,2), (2,3); create table mysqltest.t2 (x int, y int); insert into mysqltest.t2 values (3,4); create view mysqltest.v1 (a,c) as select a, b from mysqltest.t1; create view mysqltest.v2 (a,c) as select a, b from mysqltest.t1; grant insert on mysqltest.v1 to mysqltest_1@localhost; grant select on mysqltest.* to mysqltest_1@localhost; connection user1; use mysqltest; # update with rights on VIEW column insert into v1 values (5,6); select * from t1; insert into v1 select x,y from t2; select * from t1; # no rights for view --error ER_TABLEACCESS_DENIED_ERROR insert into v2 values (5,6); --error ER_TABLEACCESS_DENIED_ERROR insert into v2 select x,y from t2; use test; connection root; REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost; drop database mysqltest; # # test of CREATE VIEW privileges if we have limited privileges # connection root; --disable_warnings ONCE create database mysqltest; create table mysqltest.t1 (a int, b int); create table mysqltest.t2 (a int, b int); grant update on mysqltest.t1 to mysqltest_1@localhost; grant update(b) on mysqltest.t2 to mysqltest_1@localhost; grant create view,update on test.* to mysqltest_1@localhost; connection user1; create view v1 as select * from mysqltest.t1; create view v2 as select b from mysqltest.t2; # There are not rights on mysqltest.v1 --error ER_TABLEACCESS_DENIED_ERROR create view mysqltest.v1 as select * from mysqltest.t1; # There are not any rights on mysqltest.t2.a --error ER_COLUMNACCESS_DENIED_ERROR create view v3 as select a from mysqltest.t2; # give CREATE VIEW privileges (without any privileges for result column) connection root; create table mysqltest.v3 (b int); grant create view on mysqltest.v3 to mysqltest_1@localhost; drop table mysqltest.v3; connection user1; create view mysqltest.v3 as select b from mysqltest.t2; # give UPDATE privileges connection root; grant create view, update on mysqltest.v3 to mysqltest_1@localhost; drop view mysqltest.v3; connection user1; create view mysqltest.v3 as select b from mysqltest.t2; # Expression need select privileges --error ER_COLUMNACCESS_DENIED_ERROR create view v4 as select b+1 from mysqltest.t2; connection root; grant create view,update,select on test.* to mysqltest_1@localhost; connection user1; --error ER_COLUMNACCESS_DENIED_ERROR create view v4 as select b+1 from mysqltest.t2; connection root; grant update,select(b) on mysqltest.t2 to mysqltest_1@localhost; connection user1; create view v4 as select b+1 from mysqltest.t2; connection root; REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost; drop database mysqltest; drop view v1,v2,v4; # # user with global DB privileges # connection root; --disable_warnings ONCE create database mysqltest; create table mysqltest.t1 (a int); grant all privileges on mysqltest.* to mysqltest_1@localhost; connection user1; use mysqltest; create view v1 as select * from t1; use test; connection root; revoke all privileges on mysqltest.* from mysqltest_1@localhost; drop database mysqltest; # # view definer grants revoking # connection root; --disable_warnings ONCE create database mysqltest; create table mysqltest.t1 (a int, b int); grant select on mysqltest.t1 to mysqltest_1@localhost; grant create view,select on test.* to mysqltest_1@localhost; connection user1; create view v1 as select * from mysqltest.t1; connection root; # check view definer information show create view v1; revoke select on mysqltest.t1 from mysqltest_1@localhost; --error ER_VIEW_INVALID select * from v1; grant select on mysqltest.t1 to mysqltest_1@localhost; select * from v1; REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost; drop view v1; drop database mysqltest; # # rights on execution of view underlying functiond (Bug#9505) # connection root; --disable_warnings ONCE create database mysqltest; use mysqltest; create table t1 (a int); insert into t1 values (1); create table t2 (s1 int); --disable_warnings ONCE drop function if exists f2; delimiter //; create function f2 () returns int begin declare v int; select s1 from t2 into v; return v; end// delimiter ;// create algorithm=TEMPTABLE view v1 as select f2() from t1; create algorithm=MERGE view v2 as select f2() from t1; create algorithm=TEMPTABLE SQL SECURITY INVOKER view v3 as select f2() from t1; create algorithm=MERGE SQL SECURITY INVOKER view v4 as select f2() from t1; create SQL SECURITY INVOKER view v5 as select * from v4; grant select on v1 to mysqltest_1@localhost; grant select on v2 to mysqltest_1@localhost; grant select on v3 to mysqltest_1@localhost; grant select on v4 to mysqltest_1@localhost; grant select on v5 to mysqltest_1@localhost; connection user1; use mysqltest; select * from v1; select * from v2; --error ER_VIEW_INVALID select * from v3; --error ER_VIEW_INVALID select * from v4; --error ER_VIEW_INVALID select * from v5; use test; connection root; drop view v1, v2, v3, v4, v5; drop function f2; drop table t1, t2; use test; REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost; drop database mysqltest; # # revertion of previous test, definer of view lost his/her rights to execute # function # connection root; --disable_warnings ONCE create database mysqltest; use mysqltest; create table t1 (a int); insert into t1 values (1); create table t2 (s1 int); --disable_warnings ONCE drop function if exists f2; delimiter //; create function f2 () returns int begin declare v int; select s1 from t2 into v; return v; end// delimiter ;// grant select on t1 to mysqltest_1@localhost; grant execute on function f2 to mysqltest_1@localhost; grant create view on mysqltest.* to mysqltest_1@localhost; connection user1; use mysqltest; create algorithm=TEMPTABLE view v1 as select f2() from t1; create algorithm=MERGE view v2 as select f2() from t1; create algorithm=TEMPTABLE SQL SECURITY INVOKER view v3 as select f2() from t1; create algorithm=MERGE SQL SECURITY INVOKER view v4 as select f2() from t1; use test; connection root; create view v5 as select * from v1; revoke execute on function f2 from mysqltest_1@localhost; --error ER_VIEW_INVALID select * from v1; --error ER_VIEW_INVALID select * from v2; select * from v3; select * from v4; --error ER_VIEW_INVALID select * from v5; drop view v1, v2, v3, v4, v5; drop function f2; drop table t1, t2; use test; REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost; drop database mysqltest; # # definer/invoker rights for columns # connection root; --disable_warnings ONCE create database mysqltest; use mysqltest; create table t1 (a int); create table v1 (a int); insert into t1 values (1); grant select on t1 to mysqltest_1@localhost; grant select on v1 to mysqltest_1@localhost; grant create view on mysqltest.* to mysqltest_1@localhost; drop table v1; connection user1; use mysqltest; create algorithm=TEMPTABLE view v1 as select *, a as b from t1; create algorithm=MERGE view v2 as select *, a as b from t1; create algorithm=TEMPTABLE SQL SECURITY INVOKER view v3 as select *, a as b from t1; create algorithm=MERGE SQL SECURITY INVOKER view v4 as select *, a as b from t1; create view v5 as select * from v1; use test; connection root; revoke select on t1 from mysqltest_1@localhost; --error ER_VIEW_INVALID select * from v1; --error ER_VIEW_INVALID select * from v2; select * from v3; select * from v4; --error ER_VIEW_INVALID select * from v5; #drop view v1, v2, v3, v4, v5; drop table t1; use test; REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost; drop database mysqltest; connection root; --disable_warnings ONCE create database mysqltest; use mysqltest; create table t1 (a int); insert into t1 values (1); create algorithm=TEMPTABLE view v1 as select *, a as b from t1; create algorithm=MERGE view v2 as select *, a as b from t1; create algorithm=TEMPTABLE SQL SECURITY INVOKER view v3 as select *, a as b from t1; create algorithm=MERGE SQL SECURITY INVOKER view v4 as select *, a as b from t1; create SQL SECURITY INVOKER view v5 as select * from v4; grant select on v1 to mysqltest_1@localhost; grant select on v2 to mysqltest_1@localhost; grant select on v3 to mysqltest_1@localhost; grant select on v4 to mysqltest_1@localhost; grant select on v5 to mysqltest_1@localhost; connection user1; use mysqltest; select * from v1; select * from v2; --error ER_VIEW_INVALID select * from v3; --error ER_VIEW_INVALID select * from v4; --error ER_VIEW_INVALID select * from v5; use test; connection root; drop view v1, v2, v3, v4, v5; drop table t1; use test; REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost; drop database mysqltest; # # Bug#14256 definer in view definition is not fully qualified # --disable_warnings drop view if exists v1; drop table if exists t1; --enable_warnings # Backup anonymous users and remove them. (They get in the way of # the one we test with here otherwise.) create table t1 as select * from mysql.user where user=''; delete from mysql.user where user=''; flush privileges; # Create the test user grant all on test.* to 'test14256'@'%'; connect (test14256,localhost,test14256,,test); connection test14256; use test; create view v1 as select 42; show create view v1; select definer into @v1def1 from information_schema.views where table_schema = 'test' and table_name='v1'; drop view v1; create definer=`test14256`@`%` view v1 as select 42; show create view v1; select definer into @v1def2 from information_schema.views where table_schema = 'test' and table_name='v1'; drop view v1; select @v1def1, @v1def2, @v1def1=@v1def2; connection root; disconnect test14256; drop user test14256; # Restore the anonymous users. insert into mysql.user select * from t1; flush privileges; drop table t1; # # Bug#14726 freeing stack variable in case of an error of opening a view when # we have locked tables with LOCK TABLES statement. # connection root; --disable_warnings ONCE create database mysqltest; use mysqltest; CREATE TABLE t1 (i INT); CREATE VIEW v1 AS SELECT * FROM t1; SHOW CREATE VIEW v1; GRANT SELECT, LOCK TABLES ON mysqltest.* TO mysqltest_1@localhost; connection user1; use mysqltest; LOCK TABLES v1 READ; --error ER_TABLEACCESS_DENIED_ERROR SHOW CREATE TABLE v1; UNLOCK TABLES; use test; connection root; use test; drop user mysqltest_1@localhost; drop database mysqltest; # # switch to default connection # disconnect user1; disconnect root; connection default; # # DEFINER information check # create definer=some_user@`` sql security invoker view v1 as select 1; create definer=some_user@localhost sql security invoker view v2 as select 1; show create view v1; show create view v2; drop view v1; drop view v2; # # Bug#18681 View privileges are broken # CREATE DATABASE mysqltest1; CREATE USER readonly@localhost; CREATE TABLE mysqltest1.t1 (x INT); INSERT INTO mysqltest1.t1 VALUES (1), (2); CREATE SQL SECURITY INVOKER VIEW mysqltest1.v_t1 AS SELECT * FROM mysqltest1.t1; CREATE SQL SECURITY DEFINER VIEW mysqltest1.v_ts AS SELECT * FROM mysqltest1.t1; CREATE SQL SECURITY DEFINER VIEW mysqltest1.v_ti AS SELECT * FROM mysqltest1.t1; CREATE SQL SECURITY DEFINER VIEW mysqltest1.v_tu AS SELECT * FROM mysqltest1.t1; CREATE SQL SECURITY DEFINER VIEW mysqltest1.v_tus AS SELECT * FROM mysqltest1.t1; CREATE SQL SECURITY DEFINER VIEW mysqltest1.v_td AS SELECT * FROM mysqltest1.t1; CREATE SQL SECURITY DEFINER VIEW mysqltest1.v_tds AS SELECT * FROM mysqltest1.t1; GRANT SELECT, INSERT, UPDATE, DELETE ON mysqltest1.v_t1 TO readonly@localhost; GRANT SELECT ON mysqltest1.v_ts TO readonly@localhost; GRANT INSERT ON mysqltest1.v_ti TO readonly@localhost; GRANT UPDATE ON mysqltest1.v_tu TO readonly@localhost; GRANT UPDATE,SELECT ON mysqltest1.v_tus TO readonly@localhost; GRANT DELETE ON mysqltest1.v_td TO readonly@localhost; GRANT DELETE,SELECT ON mysqltest1.v_tds TO readonly@localhost; connect (n1,localhost,readonly,,); connection n1; --error ER_VIEW_INVALID SELECT * FROM mysqltest1.v_t1; SET sql_mode = 'NO_ENGINE_SUBSTITUTION'; --error ER_VIEW_INVALID INSERT INTO mysqltest1.v_t1 VALUES(4); --error ER_VIEW_INVALID DELETE FROM mysqltest1.v_t1 WHERE x = 1; --error ER_VIEW_INVALID UPDATE mysqltest1.v_t1 SET x = 3 WHERE x = 2; --error ER_VIEW_INVALID UPDATE mysqltest1.v_t1 SET x = 3; --error ER_VIEW_INVALID DELETE FROM mysqltest1.v_t1; SET sql_mode = default; --error ER_VIEW_INVALID SELECT 1 FROM mysqltest1.v_t1; --error ER_TABLEACCESS_DENIED_ERROR SELECT * FROM mysqltest1.t1; SELECT * FROM mysqltest1.v_ts; --error ER_TABLEACCESS_DENIED_ERROR SELECT * FROM mysqltest1.v_ts, mysqltest1.t1 WHERE mysqltest1.t1.x = mysqltest1.v_ts.x; --error ER_TABLEACCESS_DENIED_ERROR SELECT * FROM mysqltest1.v_ti; --error ER_TABLEACCESS_DENIED_ERROR INSERT INTO mysqltest1.v_ts VALUES (100); INSERT INTO mysqltest1.v_ti VALUES (100); --error ER_TABLEACCESS_DENIED_ERROR UPDATE mysqltest1.v_ts SET x= 200 WHERE x = 100; --error ER_TABLEACCESS_DENIED_ERROR UPDATE mysqltest1.v_ts SET x= 200; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE mysqltest1.v_tu SET x= 200 WHERE x = 100; UPDATE mysqltest1.v_tus SET x= 200 WHERE x = 100; UPDATE mysqltest1.v_tu SET x= 200; --error ER_TABLEACCESS_DENIED_ERROR DELETE FROM mysqltest1.v_ts WHERE x= 200; --error ER_TABLEACCESS_DENIED_ERROR DELETE FROM mysqltest1.v_ts; --error ER_COLUMNACCESS_DENIED_ERROR DELETE FROM mysqltest1.v_td WHERE x= 200; DELETE FROM mysqltest1.v_tds WHERE x= 200; DELETE FROM mysqltest1.v_td; connection default; disconnect n1; DROP VIEW mysqltest1.v_tds; DROP VIEW mysqltest1.v_td; DROP VIEW mysqltest1.v_tus; DROP VIEW mysqltest1.v_tu; DROP VIEW mysqltest1.v_ti; DROP VIEW mysqltest1.v_ts; DROP VIEW mysqltest1.v_t1; DROP TABLE mysqltest1.t1; DROP USER readonly@localhost; DROP DATABASE mysqltest1; # # Bug#14875 Bad view DEFINER makes SHOW CREATE VIEW fail # CREATE TABLE t1 (a INT PRIMARY KEY); INSERT INTO t1 VALUES (1), (2), (3); CREATE DEFINER = 'no-such-user'@localhost VIEW v AS SELECT a from t1; #--warning ER_VIEW_OTHER_USER SHOW CREATE VIEW v; --error ER_NO_SUCH_USER SELECT * FROM v; DROP VIEW v; DROP TABLE t1; USE test; # # Bug#20363 Create view on just created view is now denied # eval CREATE USER mysqltest_db1@localhost identified by 'PWD'; eval GRANT ALL ON mysqltest_db1.* TO mysqltest_db1@localhost WITH GRANT OPTION; # The session with the non root user is needed. --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK connect (session1,localhost,mysqltest_db1,PWD,test); CREATE SCHEMA mysqltest_db1 ; USE mysqltest_db1 ; CREATE TABLE t1 (f1 INTEGER); CREATE VIEW view1 AS SELECT * FROM t1; SHOW CREATE VIEW view1; CREATE VIEW view2 AS SELECT * FROM view1; --echo # Here comes a suspicious warning SHOW CREATE VIEW view2; --echo # But the view view2 is usable SELECT * FROM view2; CREATE VIEW view3 AS SELECT * FROM view2; SELECT * from view3; connection default; disconnect session1; DROP VIEW mysqltest_db1.view3; DROP VIEW mysqltest_db1.view2; DROP VIEW mysqltest_db1.view1; DROP TABLE mysqltest_db1.t1; DROP SCHEMA mysqltest_db1; DROP USER mysqltest_db1@localhost; # # Bug#20482 failure on Create join view with sources views/tables # in different schemas # --disable_warnings CREATE DATABASE test1; CREATE DATABASE test2; --enable_warnings CREATE TABLE test1.t0 (a VARCHAR(20)); CREATE TABLE test2.t1 (a VARCHAR(20)); CREATE VIEW test2.t3 AS SELECT * FROM test1.t0; CREATE OR REPLACE VIEW test.v1 AS SELECT ta.a AS col1, tb.a AS col2 FROM test2.t3 ta, test2.t1 tb; DROP VIEW test.v1; DROP VIEW test2.t3; DROP TABLE test2.t1, test1.t0; DROP DATABASE test2; DROP DATABASE test1; # # Bug#20570 CURRENT_USER() in a VIEW with SQL SECURITY DEFINER returns # invoker name # --disable_warnings DROP VIEW IF EXISTS v1; DROP VIEW IF EXISTS v2; DROP VIEW IF EXISTS v3; DROP FUNCTION IF EXISTS f1; DROP FUNCTION IF EXISTS f2; DROP PROCEDURE IF EXISTS p1; --enable_warnings CREATE SQL SECURITY DEFINER VIEW v1 AS SELECT CURRENT_USER() AS cu; CREATE FUNCTION f1() RETURNS VARCHAR(77) SQL SECURITY INVOKER RETURN CURRENT_USER(); CREATE SQL SECURITY DEFINER VIEW v2 AS SELECT f1() AS cu; CREATE PROCEDURE p1(OUT cu VARCHAR(77)) SQL SECURITY INVOKER SET cu= CURRENT_USER(); delimiter |; CREATE FUNCTION f2() RETURNS VARCHAR(77) SQL SECURITY INVOKER BEGIN DECLARE cu VARCHAR(77); CALL p1(cu); RETURN cu; END| delimiter ;| CREATE SQL SECURITY DEFINER VIEW v3 AS SELECT f2() AS cu; CREATE USER mysqltest_u1@localhost; GRANT ALL ON test.* TO mysqltest_u1@localhost; connect (conn1, localhost, mysqltest_u1,,); --echo --echo The following tests should all return 1. --echo SELECT CURRENT_USER() = 'mysqltest_u1@localhost'; SELECT f1() = 'mysqltest_u1@localhost'; CALL p1(@cu); SELECT @cu = 'mysqltest_u1@localhost'; SELECT f2() = 'mysqltest_u1@localhost'; SELECT cu = 'root@localhost' FROM v1; SELECT cu = 'root@localhost' FROM v2; SELECT cu = 'root@localhost' FROM v3; disconnect conn1; connection default; DROP VIEW v3; DROP FUNCTION f2; DROP PROCEDURE p1; DROP FUNCTION f1; DROP VIEW v2; DROP VIEW v1; DROP USER mysqltest_u1@localhost; # # Bug#17254 Error for DEFINER security on VIEW provides too much info # connect (root,localhost,root,,); connection root; CREATE DATABASE db17254; USE db17254; CREATE TABLE t1 (f1 INT); INSERT INTO t1 VALUES (10),(20); CREATE USER def_17254@localhost; GRANT SELECT ON db17254.* TO def_17254@localhost; CREATE USER inv_17254@localhost; GRANT SELECT ON db17254.t1 TO inv_17254@localhost; GRANT CREATE VIEW ON db17254.* TO def_17254@localhost; connect (def,localhost,def_17254,,db17254); connection def; CREATE VIEW v1 AS SELECT * FROM t1; connection root; DROP USER def_17254@localhost; connect (inv,localhost,inv_17254,,db17254); connection inv; --echo for a user --error ER_TABLEACCESS_DENIED_ERROR SELECT * FROM v1; connection root; --echo for a superuser --error ER_NO_SUCH_USER SELECT * FROM v1; DROP USER inv_17254@localhost; DROP DATABASE db17254; disconnect def; disconnect inv; # # Bug#24404 strange bug with view+permission+prepared statement # --disable_warnings DROP DATABASE IF EXISTS mysqltest_db1; DROP DATABASE IF EXISTS mysqltest_db2; --enable_warnings --error 0,ER_CANNOT_USER DROP USER mysqltest_u1; --error 0,ER_CANNOT_USER DROP USER mysqltest_u2; CREATE USER mysqltest_u1@localhost; CREATE USER mysqltest_u2@localhost; CREATE DATABASE mysqltest_db1; CREATE DATABASE mysqltest_db2; GRANT ALL ON mysqltest_db1.* TO mysqltest_u1@localhost WITH GRANT OPTION; GRANT ALL ON mysqltest_db2.* TO mysqltest_u2@localhost; connect (conn1, localhost, mysqltest_u1, , mysqltest_db1); CREATE TABLE t1 (i INT); INSERT INTO t1 VALUES (1); # Use view with subquery for better coverage. CREATE VIEW v1 AS SELECT i FROM t1 WHERE 1 IN (SELECT * FROM t1); CREATE TABLE t2 (s CHAR(7)); INSERT INTO t2 VALUES ('public'); GRANT SELECT ON v1 TO mysqltest_u2@localhost; GRANT SELECT ON t2 TO mysqltest_u2@localhost; connect (conn2, localhost, mysqltest_u2, , mysqltest_db2); SELECT * FROM mysqltest_db1.v1, mysqltest_db1.t2; PREPARE stmt1 FROM "SELECT * FROM mysqltest_db1.t2"; EXECUTE stmt1; PREPARE stmt2 FROM "SELECT * FROM mysqltest_db1.v1, mysqltest_db1.t2"; EXECUTE stmt2; connection conn1; # Make table 't2' private. REVOKE SELECT ON t2 FROM mysqltest_u2@localhost; UPDATE t2 SET s = 'private' WHERE s = 'public'; connection conn2; --error ER_TABLEACCESS_DENIED_ERROR SELECT * FROM mysqltest_db1.v1, mysqltest_db1.t2; --error ER_TABLEACCESS_DENIED_ERROR EXECUTE stmt1; # Original bug was here: the statement didn't fail. --error ER_TABLEACCESS_DENIED_ERROR EXECUTE stmt2; # Cleanup. disconnect conn2; disconnect conn1; connection default; REVOKE ALL ON mysqltest_db1.* FROM mysqltest_u1@localhost; REVOKE ALL ON mysqltest_db2.* FROM mysqltest_u2@localhost; DROP DATABASE mysqltest_db1; DROP DATABASE mysqltest_db2; DROP USER mysqltest_u1@localhost; DROP USER mysqltest_u2@localhost; # # Bug#26813 The SUPER privilege is wrongly required to alter a view created # by another user. # connection root; CREATE DATABASE db26813; USE db26813; CREATE TABLE t1(f1 INT, f2 INT); CREATE VIEW v1 AS SELECT f1 FROM t1; CREATE VIEW v2 AS SELECT f1 FROM t1; CREATE VIEW v3 AS SELECT f1 FROM t1; CREATE USER u26813@localhost; GRANT DROP ON db26813.v1 TO u26813@localhost; GRANT CREATE VIEW ON db26813.v2 TO u26813@localhost; GRANT DROP, CREATE VIEW ON db26813.v3 TO u26813@localhost; GRANT SELECT ON db26813.t1 TO u26813@localhost; connect (u1,localhost,u26813,,db26813); connection u1; --error ER_TABLEACCESS_DENIED_ERROR ALTER VIEW v1 AS SELECT f2 FROM t1; --error ER_TABLEACCESS_DENIED_ERROR ALTER VIEW v2 AS SELECT f2 FROM t1; --error ER_SPECIFIC_ACCESS_DENIED_ERROR ALTER VIEW v3 AS SELECT f2 FROM t1; connection root; SHOW CREATE VIEW v3; DROP USER u26813@localhost; DROP DATABASE db26813; disconnect u1; --echo # --echo # Bug#29908 A user can gain additional access through the ALTER VIEW. --echo # connection root; CREATE DATABASE mysqltest_29908; USE mysqltest_29908; CREATE TABLE t1(f1 INT, f2 INT); CREATE USER u29908_1@localhost; CREATE DEFINER = u29908_1@localhost VIEW v1 AS SELECT f1 FROM t1; CREATE DEFINER = u29908_1@localhost SQL SECURITY INVOKER VIEW v2 AS SELECT f1 FROM t1; GRANT SELECT, DROP, CREATE VIEW, SHOW VIEW ON mysqltest_29908.v1 TO u29908_1@localhost; GRANT SELECT, DROP, CREATE VIEW, SHOW VIEW ON mysqltest_29908.v2 TO u29908_1@localhost; GRANT SELECT ON mysqltest_29908.t1 TO u29908_1@localhost; CREATE USER u29908_2@localhost; GRANT SELECT, DROP, CREATE VIEW ON mysqltest_29908.v1 TO u29908_2@localhost; GRANT SELECT, DROP, CREATE VIEW, SHOW VIEW ON mysqltest_29908.v2 TO u29908_2@localhost; GRANT SELECT ON mysqltest_29908.t1 TO u29908_2@localhost; connect (u2,localhost,u29908_2,,mysqltest_29908); --error ER_SPECIFIC_ACCESS_DENIED_ERROR ALTER VIEW v1 AS SELECT f2 FROM t1; --error ER_SPECIFIC_ACCESS_DENIED_ERROR ALTER VIEW v2 AS SELECT f2 FROM t1; SHOW CREATE VIEW v2; connect (u1,localhost,u29908_1,,mysqltest_29908); ALTER VIEW v1 AS SELECT f2 FROM t1; SHOW CREATE VIEW v1; ALTER VIEW v2 AS SELECT f2 FROM t1; SHOW CREATE VIEW v2; connection root; ALTER VIEW v1 AS SELECT f1 FROM t1; SHOW CREATE VIEW v1; ALTER VIEW v2 AS SELECT f1 FROM t1; SHOW CREATE VIEW v2; DROP USER u29908_1@localhost; DROP USER u29908_2@localhost; DROP DATABASE mysqltest_29908; disconnect u1; disconnect u2; --echo ####################################################################### # # Bug#24040 Create View don't succed with "all privileges" on a database. # # Prepare. --disable_warnings DROP DATABASE IF EXISTS mysqltest1; DROP DATABASE IF EXISTS mysqltest2; --enable_warnings CREATE DATABASE mysqltest1; CREATE DATABASE mysqltest2; # Test. CREATE TABLE mysqltest1.t1(c1 INT); CREATE TABLE mysqltest1.t2(c2 INT); CREATE TABLE mysqltest1.t3(c3 INT); CREATE TABLE mysqltest1.t4(c4 INT); INSERT INTO mysqltest1.t1 VALUES (11), (12), (13), (14); INSERT INTO mysqltest1.t2 VALUES (21), (22), (23), (24); INSERT INTO mysqltest1.t3 VALUES (31), (32), (33), (34); INSERT INTO mysqltest1.t4 VALUES (41), (42), (43), (44); GRANT SELECT ON mysqltest1.t1 TO mysqltest_u1@localhost; GRANT INSERT ON mysqltest1.t2 TO mysqltest_u1@localhost; GRANT SELECT, UPDATE ON mysqltest1.t3 TO mysqltest_u1@localhost; GRANT SELECT, DELETE ON mysqltest1.t4 TO mysqltest_u1@localhost; GRANT ALL PRIVILEGES ON mysqltest2.* TO mysqltest_u1@localhost; --connect (bug24040_con,localhost,mysqltest_u1,,mysqltest2) --echo --echo ---> connection: bug24040_con SELECT * FROM mysqltest1.t1; INSERT INTO mysqltest1.t2 VALUES(25); UPDATE mysqltest1.t3 SET c3 = 331 WHERE c3 = 31; DELETE FROM mysqltest1.t4 WHERE c4 = 44; CREATE VIEW v1 AS SELECT * FROM mysqltest1.t1; CREATE VIEW v2 AS SELECT * FROM mysqltest1.t2; CREATE VIEW v3 AS SELECT * FROM mysqltest1.t3; CREATE VIEW v4 AS SELECT * FROM mysqltest1.t4; SELECT * FROM v1; INSERT INTO v2 VALUES(26); UPDATE v3 SET c3 = 332 WHERE c3 = 32; DELETE FROM v4 WHERE c4 = 43; --error ER_COLUMNACCESS_DENIED_ERROR CREATE VIEW v12 AS SELECT c1, c2 FROM mysqltest1.t1, mysqltest1.t2; CREATE VIEW v13 AS SELECT c1, c3 FROM mysqltest1.t1, mysqltest1.t3; CREATE VIEW v14 AS SELECT c1, c4 FROM mysqltest1.t1, mysqltest1.t4; --error ER_COLUMNACCESS_DENIED_ERROR CREATE VIEW v21 AS SELECT c2, c1 FROM mysqltest1.t2, mysqltest1.t1; --error ER_COLUMNACCESS_DENIED_ERROR CREATE VIEW v23 AS SELECT c2, c3 FROM mysqltest1.t2, mysqltest1.t3; --error ER_COLUMNACCESS_DENIED_ERROR CREATE VIEW v24 AS SELECT c2, c4 FROM mysqltest1.t2, mysqltest1.t4; CREATE VIEW v31 AS SELECT c3, c1 FROM mysqltest1.t3, mysqltest1.t1; --error ER_COLUMNACCESS_DENIED_ERROR CREATE VIEW v32 AS SELECT c3, c2 FROM mysqltest1.t3, mysqltest1.t2; CREATE VIEW v34 AS SELECT c3, c4 FROM mysqltest1.t3, mysqltest1.t4; CREATE VIEW v41 AS SELECT c4, c1 FROM mysqltest1.t4, mysqltest1.t1; --error ER_COLUMNACCESS_DENIED_ERROR CREATE VIEW v42 AS SELECT c4, c2 FROM mysqltest1.t4, mysqltest1.t2; CREATE VIEW v43 AS SELECT c4, c3 FROM mysqltest1.t4, mysqltest1.t3; --connection default --echo --echo ---> connection: default SELECT * FROM mysqltest1.t1; SELECT * FROM mysqltest1.t2; SELECT * FROM mysqltest1.t3; SELECT * FROM mysqltest1.t4; # Cleanup. disconnect bug24040_con; DROP DATABASE mysqltest1; DROP DATABASE mysqltest2; DROP USER mysqltest_u1@localhost; # # Bug#41354 Access control is bypassed when all columns of a view are # selected by * wildcard CREATE DATABASE db1; USE db1; CREATE TABLE t1(f1 INT, f2 INT); CREATE VIEW v1 AS SELECT f1, f2 FROM t1; GRANT SELECT (f1) ON t1 TO foo; GRANT SELECT (f1) ON v1 TO foo; connect (addconfoo, localhost, foo,,); connection addconfoo; USE db1; SELECT f1 FROM t1; --error ER_COLUMNACCESS_DENIED_ERROR SELECT f2 FROM t1; --error ER_TABLEACCESS_DENIED_ERROR SELECT * FROM t1; SELECT f1 FROM v1; --error ER_COLUMNACCESS_DENIED_ERROR SELECT f2 FROM v1; --error ER_TABLEACCESS_DENIED_ERROR SELECT * FROM v1; connection default; disconnect root; disconnect addconfoo; USE test; REVOKE SELECT (f1) ON db1.t1 FROM foo; REVOKE SELECT (f1) ON db1.v1 FROM foo; DROP USER foo; DROP VIEW db1.v1; DROP TABLE db1.t1; DROP DATABASE db1; connection default; --echo Bug #11765687/#58677: --echo No privilege on table/view, but can know #rows / underlying table's name # As a root-like user connect (root,localhost,root,,test); connection root; create database mysqltest1; create table mysqltest1.t1 (i int); create table mysqltest1.t2 (j int); create table mysqltest1.t3 (k int, secret int); create user alice@localhost; create user bob@localhost; create user cecil@localhost; create user dan@localhost; create user eugene@localhost; create user fiona@localhost; create user greg@localhost; create user han@localhost; create user inga@localhost; create user jamie@localhost; create user karl@localhost; create user lena@localhost; create user mhairi@localhost; create user noam@localhost; create user olga@localhost; create user pjotr@localhost; create user quintessa@localhost; grant all privileges on mysqltest1.* to alice@localhost with grant option; # --echo ... as alice connect (test11765687,localhost,alice,,mysqltest1); connection test11765687; create view v1 as select * from t1; create view v2 as select * from v1, t2; create view v3 as select k from t3; grant select on mysqltest1.v1 to bob@localhost; grant show view on mysqltest1.v1 to cecil@localhost; grant select, show view on mysqltest1.v1 to dan@localhost; grant select on mysqltest1.t1 to dan@localhost; grant select on mysqltest1.* to eugene@localhost; grant select, show view on mysqltest1.v2 to fiona@localhost; grant select, show view on mysqltest1.v2 to greg@localhost; grant show view on mysqltest1.v1 to greg@localhost; grant select(k) on mysqltest1.t3 to han@localhost; grant select, show view on mysqltest1.v3 to han@localhost; grant select on mysqltest1.t1 to inga@localhost; grant select on mysqltest1.t2 to inga@localhost; grant select on mysqltest1.v1 to inga@localhost; grant select, show view on mysqltest1.v2 to inga@localhost; grant select on mysqltest1.t1 to jamie@localhost; grant select on mysqltest1.t2 to jamie@localhost; grant show view on mysqltest1.v1 to jamie@localhost; grant select, show view on mysqltest1.v2 to jamie@localhost; grant select on mysqltest1.t1 to karl@localhost; grant select on mysqltest1.t2 to karl@localhost; grant select, show view on mysqltest1.v1 to karl@localhost; grant select on mysqltest1.v2 to karl@localhost; grant select on mysqltest1.t1 to lena@localhost; grant select on mysqltest1.t2 to lena@localhost; grant select, show view on mysqltest1.v1 to lena@localhost; grant show view on mysqltest1.v2 to lena@localhost; grant select on mysqltest1.t1 to mhairi@localhost; grant select on mysqltest1.t2 to mhairi@localhost; grant select, show view on mysqltest1.v1 to mhairi@localhost; grant select, show view on mysqltest1.v2 to mhairi@localhost; grant select on mysqltest1.t1 to noam@localhost; grant select, show view on mysqltest1.v1 to noam@localhost; grant select, show view on mysqltest1.v2 to noam@localhost; grant select on mysqltest1.t2 to olga@localhost; grant select, show view on mysqltest1.v1 to olga@localhost; grant select, show view on mysqltest1.v2 to olga@localhost; grant select on mysqltest1.t1 to pjotr@localhost; grant select on mysqltest1.t2 to pjotr@localhost; grant select, show view on mysqltest1.v2 to pjotr@localhost; grant select, show view on mysqltest1.v1 to quintessa@localhost; disconnect test11765687; # --echo ... as bob connect (test11765687,localhost,bob,,mysqltest1); connection test11765687; select * from v1; # Should succeed. --error ER_VIEW_NO_EXPLAIN explain select * from v1; # fail, no SHOW_VIEW disconnect test11765687; # --echo ... as cecil connect (test11765687,localhost,cecil,,mysqltest1); connection test11765687; --error ER_TABLEACCESS_DENIED_ERROR select * from v1; # fail, no SELECT --error ER_TABLEACCESS_DENIED_ERROR explain select * from v1; # fail, no SELECT disconnect test11765687; # --echo ... as dan connect (test11765687,localhost,dan,,mysqltest1); connection test11765687; select * from v1; # Should succeed. explain select * from v1; # Should succeed. disconnect test11765687; # --echo ... as eugene connect (test11765687,localhost,eugene,,mysqltest1); connection test11765687; select * from v1; # Should succeed. --error ER_VIEW_NO_EXPLAIN explain select * from v1; # fail, no SHOW_VIEW disconnect test11765687; # --echo ... as fiona connect (test11765687,localhost,fiona,,mysqltest1); connection test11765687; select * from v2; # Should succeed. show create view v2; # Should succeed, but... --error ER_TABLEACCESS_DENIED_ERROR explain select * from t1; # fail, shouldn't see t1! --error ER_TABLEACCESS_DENIED_ERROR # err msg must give view name, no table names!! explain select * from v1; # fail, have no privs on v1! --error ER_TABLEACCESS_DENIED_ERROR explain select * from t2; # fail, have no privs on t2! --error ER_VIEW_NO_EXPLAIN explain select * from v2; # fail, shouldn't see t2! disconnect test11765687; # --echo ... as greg connect (test11765687,localhost,greg,,mysqltest1); connection test11765687; select * from v2; # Should succeed. --error ER_TABLEACCESS_DENIED_ERROR explain select * from v1; # fail; no SELECT on v1! --error ER_VIEW_NO_EXPLAIN explain select * from v2; # fail; no SELECT on v1! disconnect test11765687; # --echo ... as han connect (test11765687,localhost,han,,mysqltest1); connection test11765687; --error ER_TABLEACCESS_DENIED_ERROR select * from t3; # don't have privs on all columns, --error ER_TABLEACCESS_DENIED_ERROR explain select * from t3; # so EXPLAIN on "forbidden" columns should fail. select k from t3; # but we do have SELECT on column k though, explain select k from t3; # so EXPLAIN just on k should work, select * from v3; # and so should SELECT on view only using allowed columns explain select * from v3; # as should the associated EXPLAIN disconnect test11765687; # --echo ... as inga connect (test11765687,localhost,inga,,mysqltest1); connection test11765687; select * from v2; # has sel/show on v2, sel on t1/t2, only sel v1 # fail: lacks show on v1 --error ER_VIEW_NO_EXPLAIN explain select * from v2; disconnect test11765687; # --echo ... as jamie connect (test11765687,localhost,jamie,,mysqltest1); connection test11765687; select * from v2; # has sel/show on v2, sel on t1/t2, only show v1 # fail: lacks sel on v1 --error ER_VIEW_NO_EXPLAIN explain select * from v2; disconnect test11765687; # --echo ... as karl connect (test11765687,localhost,karl,,mysqltest1); connection test11765687; select * from v2; # has sel only on v2, sel on t1/t2, sel/show v1 # fail: lacks show on v2 --error ER_VIEW_NO_EXPLAIN explain select * from v2; disconnect test11765687; # --echo ... as lena connect (test11765687,localhost,lena,,mysqltest1); connection test11765687; --error ER_TABLEACCESS_DENIED_ERROR select * from v2; # has show only on v2, sel on t1/t2, sel/show v1 # fail: lacks sel on v2 --error ER_TABLEACCESS_DENIED_ERROR explain select * from v2; disconnect test11765687; # --echo ... as mhairi connect (test11765687,localhost,mhairi,,mysqltest1); connection test11765687; select * from v2; # has sel/show on v2, sel on t1/t2, sel/show v1 explain select * from v2; disconnect test11765687; # --echo ... as noam connect (test11765687,localhost,noam,,mysqltest1); connection test11765687; select * from v2; # has sel/show on v2, sel only on t1, sel/show v1 (no sel on t2!) --error ER_VIEW_NO_EXPLAIN explain select * from v2; disconnect test11765687; # --echo ... as olga connect (test11765687,localhost,olga,,mysqltest1); connection test11765687; select * from v2; # has sel/show on v2, sel only on t2, sel/show v1 (no sel on t1!) --error ER_VIEW_NO_EXPLAIN explain select * from v2; disconnect test11765687; # --echo ... as pjotr connect (test11765687,localhost,pjotr,,mysqltest1); connection test11765687; select * from v2; # has sel/show on v2, sel only on t2, nothing on v1 # fail: lacks show on v1 --error ER_VIEW_NO_EXPLAIN explain select * from v2; disconnect test11765687; # --echo ... as quintessa connect (test11765687,localhost,quintessa,,mysqltest1); connection test11765687; select * from v1; # Should succeed. --error ER_VIEW_NO_EXPLAIN explain select * from v1; # fail: lacks select on t1 disconnect test11765687; # cleanup # --echo ... as root again at last: clean-up time! connection root; drop user alice@localhost; drop user bob@localhost; drop user cecil@localhost; drop user dan@localhost; drop user eugene@localhost; drop user fiona@localhost; drop user greg@localhost; drop user han@localhost; drop user inga@localhost; drop user jamie@localhost; drop user karl@localhost; drop user lena@localhost; drop user mhairi@localhost; drop user noam@localhost; drop user olga@localhost; drop user pjotr@localhost; drop user quintessa@localhost; drop database mysqltest1; disconnect root; connection default; --echo End of 5.0 tests. # # Test that ALTER VIEW accepts DEFINER and ALGORITHM, see bug#16425. # connection default; --disable_warnings DROP VIEW IF EXISTS v1; DROP TABLE IF EXISTS t1; --enable_warnings CREATE TABLE t1 (i INT); CREATE VIEW v1 AS SELECT * FROM t1; ALTER VIEW v1 AS SELECT * FROM t1; SHOW CREATE VIEW v1; ALTER DEFINER=no_such@user_1 VIEW v1 AS SELECT * FROM t1; SHOW CREATE VIEW v1; ALTER ALGORITHM=MERGE VIEW v1 AS SELECT * FROM t1; SHOW CREATE VIEW v1; ALTER ALGORITHM=TEMPTABLE DEFINER=no_such@user_2 VIEW v1 AS SELECT * FROM t1; SHOW CREATE VIEW v1; DROP VIEW v1; DROP TABLE t1; # # Bug#37191: Failed assertion in CREATE VIEW # CREATE USER mysqluser1@localhost; CREATE DATABASE mysqltest1; USE mysqltest1; CREATE TABLE t1 ( a INT ); CREATE TABLE t2 ( b INT ); INSERT INTO t1 VALUES (1), (2); INSERT INTO t2 VALUES (1), (2); GRANT CREATE VIEW ON mysqltest1.* TO mysqluser1@localhost; GRANT SELECT ON t1 TO mysqluser1@localhost; GRANT INSERT ON t2 TO mysqluser1@localhost; --connect (connection1, localhost, mysqluser1, , mysqltest1) --echo This would lead to failed assertion. CREATE VIEW v1 AS SELECT a, b FROM t1, t2; --error ER_TABLEACCESS_DENIED_ERROR SELECT * FROM v1; --error ER_TABLEACCESS_DENIED_ERROR SELECT b FROM v1; --disconnect connection1 --connection default DROP TABLE t1, t2; DROP VIEW v1; DROP DATABASE mysqltest1; DROP USER mysqluser1@localhost; USE test; --echo End of 5.1 tests. # # Bug#36086: SELECT * from views don't check column grants # CREATE USER mysqluser1@localhost; CREATE DATABASE mysqltest1; USE mysqltest1; CREATE TABLE t1 ( a INT, b INT ); CREATE TABLE t2 ( a INT, b INT ); CREATE VIEW v1 AS SELECT a, b FROM t1; GRANT SELECT( a ) ON v1 TO mysqluser1@localhost; GRANT UPDATE( b ) ON t2 TO mysqluser1@localhost; --connect (connection1, localhost, mysqluser1, , test) --error ER_TABLEACCESS_DENIED_ERROR SELECT * FROM mysqltest1.v1; --error ER_TABLEACCESS_DENIED_ERROR CREATE VIEW v1 AS SELECT * FROM mysqltest1.t2; --disconnect connection1 --connection default DROP TABLE t1, t2; DROP VIEW v1; DROP DATABASE mysqltest1; DROP USER mysqluser1@localhost; # # Bug#35600 Security breach via view, I_S table and prepared # statement/stored procedure # CREATE USER mysqluser1@localhost; CREATE DATABASE mysqltest1; USE mysqltest1; CREATE VIEW v1 AS SELECT * FROM information_schema.tables LIMIT 1; CREATE ALGORITHM = TEMPTABLE VIEW v2 AS SELECT 1 AS A; CREATE VIEW test.v3 AS SELECT 1 AS a; --connection default GRANT SELECT ON mysqltest1.* to mysqluser1@localhost; GRANT ALL ON test.* TO mysqluser1@localhost; --connect (connection1, localhost, mysqluser1, , test) PREPARE stmt_v1 FROM "SELECT * FROM mysqltest1.v1"; PREPARE stmt_v2 FROM "SELECT * FROM mysqltest1.v2"; --connection default REVOKE SELECT ON mysqltest1.* FROM mysqluser1@localhost; --connection connection1 --error ER_TABLEACCESS_DENIED_ERROR EXECUTE stmt_v1; --error ER_TABLEACCESS_DENIED_ERROR EXECUTE stmt_v2; --disconnect connection1 --connect (connection2, localhost, mysqluser1,,) PREPARE stmt FROM "SELECT a FROM v3"; EXECUTE stmt; --disconnect connection2 --connection default DROP VIEW v1, v2; DROP DATABASE mysqltest1; DROP VIEW test.v3; DROP USER mysqluser1@localhost; USE test; --echo # --echo # Bug#35996: SELECT + SHOW VIEW should be enough to display view --echo # definition --echo # -- source include/not_embedded.inc CREATE USER mysqluser1@localhost; CREATE DATABASE mysqltest1; CREATE DATABASE mysqltest2; GRANT USAGE, SELECT, CREATE VIEW, SHOW VIEW ON mysqltest2.* TO mysqluser1@localhost; USE mysqltest1; CREATE TABLE t1( a INT ); CREATE TABLE t2( a INT, b INT ); CREATE FUNCTION f1() RETURNS INT RETURN 1; CREATE VIEW v1 AS SELECT 1 AS a; CREATE VIEW v2 AS SELECT 1 AS a, 2 AS b; GRANT SELECT ON TABLE t1 TO mysqluser1@localhost; GRANT SELECT (a, b) ON TABLE t2 TO mysqluser1@localhost; GRANT EXECUTE ON FUNCTION f1 TO mysqluser1@localhost; GRANT SELECT ON TABLE v1 TO mysqluser1@localhost; GRANT SELECT (a, b) ON TABLE v2 TO mysqluser1@localhost; CREATE VIEW v_t1 AS SELECT * FROM t1; CREATE VIEW v_t2 AS SELECT * FROM t2; CREATE VIEW v_f1 AS SELECT f1() AS a; CREATE VIEW v_v1 AS SELECT * FROM v1; CREATE VIEW v_v2 AS SELECT * FROM v2; GRANT SELECT, SHOW VIEW ON v_t1 TO mysqluser1@localhost; GRANT SELECT, SHOW VIEW ON v_t2 TO mysqluser1@localhost; GRANT SELECT, SHOW VIEW ON v_f1 TO mysqluser1@localhost; GRANT SELECT, SHOW VIEW ON v_v1 TO mysqluser1@localhost; GRANT SELECT, SHOW VIEW ON v_v2 TO mysqluser1@localhost; --connect (connection1, localhost, mysqluser1,, mysqltest2) CREATE VIEW v_mysqluser1_t1 AS SELECT * FROM mysqltest1.t1; CREATE VIEW v_mysqluser1_t2 AS SELECT * FROM mysqltest1.t2; CREATE VIEW v_mysqluser1_f1 AS SELECT mysqltest1.f1() AS a; CREATE VIEW v_mysqluser1_v1 AS SELECT * FROM mysqltest1.v1; CREATE VIEW v_mysqluser1_v2 AS SELECT * FROM mysqltest1.v2; SHOW CREATE VIEW mysqltest1.v_t1; SHOW CREATE VIEW mysqltest1.v_t2; SHOW CREATE VIEW mysqltest1.v_f1; SHOW CREATE VIEW mysqltest1.v_v1; SHOW CREATE VIEW mysqltest1.v_v2; SHOW CREATE VIEW v_mysqluser1_t1; SHOW CREATE VIEW v_mysqluser1_t2; SHOW CREATE VIEW v_mysqluser1_f1; SHOW CREATE VIEW v_mysqluser1_v1; SHOW CREATE VIEW v_mysqluser1_v2; --connection default REVOKE SELECT ON TABLE t1 FROM mysqluser1@localhost; REVOKE SELECT (a) ON TABLE t2 FROM mysqluser1@localhost; REVOKE EXECUTE ON FUNCTION f1 FROM mysqluser1@localhost; REVOKE SELECT ON TABLE v1 FROM mysqluser1@localhost; --connection connection1 SHOW CREATE VIEW mysqltest1.v_t1; SHOW CREATE VIEW mysqltest1.v_t2; SHOW CREATE VIEW mysqltest1.v_f1; SHOW CREATE VIEW mysqltest1.v_v1; SHOW CREATE VIEW mysqltest1.v_v2; SHOW CREATE VIEW v_mysqluser1_t1; SHOW CREATE VIEW v_mysqluser1_t2; SHOW CREATE VIEW v_mysqluser1_f1; SHOW CREATE VIEW v_mysqluser1_v1; SHOW CREATE VIEW v_mysqluser1_v2; --connection default --echo # Testing the case when the views reference missing objects. --echo # Obviously, there are no privileges to check for, so we --echo # need only each object type once. DROP TABLE t1; DROP FUNCTION f1; DROP VIEW v1; --connection connection1 SHOW CREATE VIEW mysqltest1.v_t1; SHOW CREATE VIEW mysqltest1.v_f1; SHOW CREATE VIEW mysqltest1.v_v1; SHOW CREATE VIEW v_mysqluser1_t1; SHOW CREATE VIEW v_mysqluser1_f1; SHOW CREATE VIEW v_mysqluser1_v1; --connection default REVOKE SHOW VIEW ON v_t1 FROM mysqluser1@localhost; REVOKE SHOW VIEW ON v_f1 FROM mysqluser1@localhost; REVOKE SHOW VIEW ON v_v1 FROM mysqluser1@localhost; --connection connection1 --error ER_TABLEACCESS_DENIED_ERROR SHOW CREATE VIEW mysqltest1.v_t1; --error ER_TABLEACCESS_DENIED_ERROR SHOW CREATE VIEW mysqltest1.v_f1; --error ER_TABLEACCESS_DENIED_ERROR SHOW CREATE VIEW mysqltest1.v_v1; SHOW CREATE VIEW v_mysqluser1_t1; SHOW CREATE VIEW v_mysqluser1_f1; SHOW CREATE VIEW v_mysqluser1_v1; --disconnect connection1 --connection default DROP USER mysqluser1@localhost; DROP DATABASE mysqltest1; DROP DATABASE mysqltest2; USE test; CREATE TABLE t1( a INT ); CREATE DEFINER = no_such_user@no_such_host VIEW v1 AS SELECT * FROM t1; SHOW CREATE VIEW v1; DROP TABLE t1; DROP VIEW v1; --echo # --echo # Bug #46019: ERROR 1356 When selecting from within another --echo # view that has Group By --echo # CREATE DATABASE mysqltest1; USE mysqltest1; CREATE TABLE t1 (a INT); CREATE SQL SECURITY INVOKER VIEW v1 AS SELECT a FROM t1 GROUP BY a; CREATE SQL SECURITY INVOKER VIEW v2 AS SELECT a FROM v1; CREATE USER mysqluser1; GRANT SELECT ON TABLE t1 TO mysqluser1; GRANT SELECT, SHOW VIEW ON TABLE v1 TO mysqluser1; GRANT SELECT, SHOW VIEW ON TABLE v2 TO mysqluser1; --connect (mysqluser1, localhost, mysqluser1,,mysqltest1) SELECT a FROM v1; SELECT a FROM v2; --connection default --disconnect mysqluser1 DROP USER mysqluser1; DROP DATABASE mysqltest1; USE test; --echo # --echo # Bug#47734: Assertion failed: ! is_set() when locking a view with non-existing definer --echo # --disable_warnings ONCE DROP VIEW IF EXISTS v1; CREATE DEFINER=`unknown`@`unknown` SQL SECURITY DEFINER VIEW v1 AS SELECT 1; --error ER_NO_SUCH_USER LOCK TABLES v1 READ; DROP VIEW v1; --echo # --echo # Bug #58499 "DEFINER-security view selecting from INVOKER-security view --echo # access check wrong". --echo # --echo # Check that we correctly handle privileges for various combinations --echo # of INVOKER and DEFINER-security views using each other. --disable_warnings ONCE DROP DATABASE IF EXISTS mysqltest1; CREATE DATABASE mysqltest1; USE mysqltest1; CREATE TABLE t1 (i INT); CREATE TABLE t2 (j INT); INSERT INTO t1 VALUES (1); INSERT INTO t2 VALUES (2); --echo # --echo # 1) DEFINER-security view uses INVOKER-security view (covers --echo # scenario originally described in the bug report). CREATE SQL SECURITY INVOKER VIEW v1_uses_t1 AS SELECT * FROM t1; CREATE SQL SECURITY INVOKER VIEW v1_uses_t2 AS SELECT * FROM t2; CREATE USER 'mysqluser1'@'%'; GRANT CREATE VIEW ON mysqltest1.* TO 'mysqluser1'@'%'; GRANT SELECT ON t1 TO 'mysqluser1'@'%'; --echo # To be able create 'v2_uses_t2' we also need select on t2. GRANT SELECT ON t2 TO 'mysqluser1'@'%'; GRANT SELECT ON v1_uses_t1 TO 'mysqluser1'@'%'; GRANT SELECT ON v1_uses_t2 TO 'mysqluser1'@'%'; --echo # --echo # Connection 'mysqluser1'. --connect (mysqluser1, localhost, mysqluser1,,mysqltest1) CREATE SQL SECURITY DEFINER VIEW v2_uses_t1 AS SELECT * FROM v1_uses_t1; CREATE SQL SECURITY DEFINER VIEW v2_uses_t2 AS SELECT * FROM v1_uses_t2; --echo # --echo # Connection 'default'. --connection default CREATE USER 'mysqluser2'@'%'; GRANT SELECT ON v2_uses_t1 TO 'mysqluser2'@'%'; GRANT SELECT ON v2_uses_t2 TO 'mysqluser2'@'%'; GRANT SELECT ON t2 TO 'mysqluser2'@'%'; GRANT CREATE VIEW ON mysqltest1.* TO 'mysqluser2'@'%'; --echo # Make 'mysqluser1' unable to access t2. REVOKE SELECT ON t2 FROM 'mysqluser1'@'%'; --echo # --echo # Connection 'mysqluser2'. --connect (mysqluser2, localhost, mysqluser2,,mysqltest1) --echo # The below statement should succeed thanks to suid nature of v2_uses_t1. SELECT * FROM v2_uses_t1; --echo # The below statement should fail due to suid nature of v2_uses_t2. --error ER_VIEW_INVALID SELECT * FROM v2_uses_t2; --echo # --echo # 2) INVOKER-security view uses INVOKER-security view. --echo # --echo # Connection 'default'. --connection default DROP VIEW v2_uses_t1, v2_uses_t2; CREATE SQL SECURITY INVOKER VIEW v2_uses_t1 AS SELECT * FROM v1_uses_t1; CREATE SQL SECURITY INVOKER VIEW v2_uses_t2 AS SELECT * FROM v1_uses_t2; GRANT SELECT ON v2_uses_t1 TO 'mysqluser1'@'%'; GRANT SELECT ON v2_uses_t2 TO 'mysqluser1'@'%'; GRANT SELECT ON v1_uses_t1 TO 'mysqluser2'@'%'; GRANT SELECT ON v1_uses_t2 TO 'mysqluser2'@'%'; --echo # --echo # Connection 'mysqluser1'. --connection mysqluser1 --echo # For both versions of 'v2' 'mysqluser1' privileges should be used. SELECT * FROM v2_uses_t1; --error ER_VIEW_INVALID SELECT * FROM v2_uses_t2; --echo # --echo # Connection 'mysqluser2'. --connection mysqluser2 --echo # And now for both versions of 'v2' 'mysqluser2' privileges should --echo # be used. --error ER_VIEW_INVALID SELECT * FROM v2_uses_t1; SELECT * FROM v2_uses_t2; --echo # --echo # 3) INVOKER-security view uses DEFINER-security view. --echo # --echo # Connection 'default'. --connection default DROP VIEW v1_uses_t1, v1_uses_t2; --echo # To be able create 'v1_uses_t2' we also need select on t2. GRANT SELECT ON t2 TO 'mysqluser1'@'%'; --echo # --echo # Connection 'mysqluser1'. --connection mysqluser1 CREATE SQL SECURITY DEFINER VIEW v1_uses_t1 AS SELECT * FROM t1; CREATE SQL SECURITY DEFINER VIEW v1_uses_t2 AS SELECT * FROM t2; --echo # --echo # Connection 'default'. --connection default --echo # Make 'mysqluser1' unable to access t2. REVOKE SELECT ON t2 FROM 'mysqluser1'@'%'; --echo # --echo # Connection 'mysqluser2'. --connection mysqluser2 --echo # Due to suid nature of v1_uses_t1 and v1_uses_t2 the first --echo # select should succeed and the second select should fail. SELECT * FROM v2_uses_t1; --error ER_VIEW_INVALID SELECT * FROM v2_uses_t2; --echo # --echo # 4) DEFINER-security view uses DEFINER-security view. --echo # --echo # Connection 'default'. --connection default DROP VIEW v2_uses_t1, v2_uses_t2; --echo # To be able create 'v2_uses_t2' we also need select on t2. GRANT SELECT ON t2 TO 'mysqluser1'@'%'; --echo # --echo # Connection 'mysqluser2'. --connection mysqluser2 CREATE SQL SECURITY DEFINER VIEW v2_uses_t1 AS SELECT * FROM v1_uses_t1; CREATE SQL SECURITY DEFINER VIEW v2_uses_t2 AS SELECT * FROM v1_uses_t2; --echo # --echo # Connection 'default'. --connection default --echo # Make 'mysqluser1' unable to access t2. REVOKE SELECT ON t2 FROM 'mysqluser1'@'%'; --echo # --echo # Connection 'mysqluser2'. --connection mysqluser2 --echo # Again privileges of creator of innermost views should apply. SELECT * FROM v2_uses_t1; --error ER_VIEW_INVALID SELECT * FROM v2_uses_t2; --disconnect mysqluser1 --disconnect mysqluser2 --connection default USE test; DROP DATABASE mysqltest1; DROP USER 'mysqluser1'@'%'; DROP USER 'mysqluser2'@'%'; --echo # --echo # Test for bug #11766767 - "59957: VIEW USING MERGE PERMISSIONS --echo # IN MULTI-TABLE UPDATE". --echo # --disable_warnings drop database if exists mysqltest1; drop database if exists mysqltest2; --enable_warnings --echo # --echo # Prepare playground. create database mysqltest1; create database mysqltest2; create user user_11766767; grant select on mysqltest1.* to user_11766767; grant all on mysqltest2.* to user_11766767; use mysqltest1; create table t1 (id int primary key, val varchar(20)); insert into t1 values (1, 'test1'); create table t11 (id int primary key); insert into t11 values (1); create algorithm=temptable view v1_temp as select * from t1; create algorithm=merge view v1_merge as select * from t1; create algorithm=temptable view v11_temp as select t1.id as id, t1.val as val from t1, t11 where t1.id= t11.id; create algorithm=merge view v11_merge as select t1.id as id, t1.val as val from t1, t11 where t1.id= t11.id; use mysqltest2; create table t2 (id int primary key, val varchar(20)); insert into t2 values (1, 'test2'); create table t21 (id int primary key); insert into t21 values (1); create algorithm=temptable view v2_temp as select * from t2; create algorithm=merge view v2_merge as select * from t2; create algorithm=temptable view v21_temp as select t2.id as id, t2.val as val from t2, t21 where t2.id= t21.id; create algorithm=merge view v21_merge as select t2.id as id, t2.val as val from t2, t21 where t2.id= t21.id; create algorithm=temptable sql security invoker view v3_temp as select t1.id as id, t1.val as val from mysqltest1.t1 as t1, mysqltest1.t11 as t11 where t1.id = t11.id; create algorithm=merge sql security invoker view v3_merge as select t1.id as id, t1.val as val from mysqltest1.t1 as t1, mysqltest1.t11 as t11 where t1.id = t11.id; create sql security invoker view v31 as select t2.id as id, t2.val as val from mysqltest2.t2 as t2, mysqltest1.t11 as t11 where t2.id = t11.id; create sql security invoker view v4 as select t2.id as id, t2.val as val from mysqltest2.t2 as t2, mysqltest1.v1_merge as v1 where t2.id = v1.id; create sql security invoker view v41 as select v1.id as id, v1.val as val from mysqltest2.t2 as t2, mysqltest1.v1_merge as v1 where t2.id = v1.id; create sql security invoker view v42 as select v2.id as id, v2.val as val from mysqltest2.t2 as t2, mysqltest2.v2_merge as v2 where t2.id = v2.id; --echo # --echo # Connect as user_11766767 connect (conn_11766767, localhost, user_11766767,,); --echo # --echo # A) Check how we handle privilege checking in multi-update for --echo # directly used views. --echo # --echo # A.1) Originally reported problem, view is used in read-only mode. --echo # This should work with only SELECT privilege for both mergeable --echo # and temptable algorithms. update mysqltest2.t2 as t2, mysqltest1.v1_merge as v1 set t2.val= 'test3' where t2.id= v1.id; update mysqltest2.t2 as t2, mysqltest1.v1_temp as v1 set t2.val= 'test4' where t2.id= v1.id; --echo # --echo # A.2) If view is updated an UPDATE privilege on it is required. --echo # Temptable views can't be updated. --error ER_COLUMNACCESS_DENIED_ERROR update mysqltest2.t2 as t2, mysqltest1.v1_merge as v1 set v1.val= 'test5' where t2.id= v1.id; update mysqltest1.t1 as t1, mysqltest2.v2_merge as v2 set v2.val= 'test6' where t1.id= v2.id; --echo # --echo # Note that the below error is OK even though user lacks UPDATE --echo # privilege on v1_temp since he/she still has SELECT privilege on --echo # this view. --error ER_NON_UPDATABLE_TABLE update mysqltest2.t2 as t2, mysqltest1.v1_temp as v1 set v1.val= 'test7' where t2.id= v1.id; --error ER_NON_UPDATABLE_TABLE update mysqltest1.t1 as t1, mysqltest2.v2_temp as v2 set v2.val= 'test8' where t1.id= v2.id; --echo # --echo # A.3) This also works for correctly for multi-table views. --echo # When usage is read-only SELECT is enough. update mysqltest2.t2 as t2, mysqltest1.v11_merge as v11 set t2.val= 'test9' where t2.id= v11.id; update mysqltest2.t2 as t2, mysqltest1.v11_temp as v11 set t2.val= 'test10' where t2.id= v11.id; --echo # When one of view's tables is updated, UPDATE is required --echo # on a view. --error ER_COLUMNACCESS_DENIED_ERROR update mysqltest2.t2 as t2, mysqltest1.v11_merge as v11 set v11.val= 'test11' where t2.id= v11.id; update mysqltest1.t1 as t1, mysqltest2.v21_merge as v21 set v21.val= 'test12' where t1.id= v21.id; --echo # As before, temptable views are not updateable. --error ER_NON_UPDATABLE_TABLE update mysqltest2.t2 as t2, mysqltest1.v11_temp as v11 set v11.val= 'test13' where t2.id= v11.id; --error ER_NON_UPDATABLE_TABLE update mysqltest1.t1 as t1, mysqltest2.v21_temp as v21 set v21.val= 'test14' where t1.id= v21.id; --echo # --echo # B) Now check that correct privileges are required on underlying --echo # tables. To simplify this part of test we will use SECURITY --echo # INVOKER views in it. --echo # --echo # B.1) In case when view is used for read only it is enough to have --echo # SELECT on its underlying tables. update mysqltest2.t2 as t2, mysqltest2.v3_merge as v3 set t2.val= 'test15' where t2.id= v3.id; update mysqltest2.t2 as t2, mysqltest2.v3_temp as v3 set t2.val= 'test16' where t2.id= v3.id; --echo # --echo # B.2) If view is updated, UPDATE privilege on the table being updated --echo # is required (since we already checked that temptable views are --echo # not updateable we don't test them here). --error ER_VIEW_INVALID update mysqltest2.t2 as t2, mysqltest2.v3_merge as v3 set v3.val= 'test17' where t2.id= v3.id; update mysqltest1.t11 as t11, mysqltest2.v31 as v31 set v31.val= 'test18' where t11.id= v31.id; --echo # --echo # C) Finally, check how we handle privilege checking in case when --echo # view is used through another view. Again we will use SECURITY --echo # INVOKER views for simplicity. --echo # --echo # C.1) As usual, when a view used by another view is going to be used --echo # in read-only fashion, only SELECT privilege is necessary. update mysqltest1.t11 as t11, mysqltest2.v4 as v4 set v4.val= 'test19' where t11.id= v4.id; --echo # --echo # C.2) If one of underlying tables of the view is updated then --echo # UPDATE on a view is necessary. --error ER_VIEW_INVALID update mysqltest1.t11 as t11, mysqltest2.v41 as v4 set v4.val= 'test20' where t11.id= v4.id; update mysqltest1.t11 as t11, mysqltest2.v42 as v4 set v4.val= 'test20' where t11.id= v4.id; --echo # --echo # Clean-up. --echo # --echo # Switching to connection 'default'. disconnect conn_11766767; connection default; drop user user_11766767; drop database mysqltest1; drop database mysqltest2; --echo # --echo # WL#5275 Process subqueries in FROM clause in the same way as view --echo # Extended testing of column privileges for views --echo # CREATE DATABASE test1; USE test1; CREATE USER user1@localhost; CREATE TABLE test1.t1 (cn CHAR(1), cs CHAR(1), ci CHAR(1), cu CHAR(1), cus CHAR(1)); GRANT SELECT(cs,cus) ON test1.t1 TO user1@localhost; GRANT INSERT(ci) ON test1.t1 TO user1@localhost; GRANT UPDATE(cu,cus) ON test1.t1 TO user1@localhost; INSERT INTO test1.t1 VALUES('0', '0', '0', '0', '0'); CREATE TABLE test1.single (a INTEGER); GRANT ALL PRIVILEGES ON test1.single TO user1@localhost; INSERT INTO test1.single VALUES(1); CREATE SQL SECURITY INVOKER VIEW test1.v1_none AS SELECT * FROM test1.t1; CREATE SQL SECURITY INVOKER VIEW test1.v1_all AS SELECT * FROM test1.t1; GRANT SELECT,INSERT,UPDATE,DELETE ON test1.v1_all TO user1@localhost; CREATE SQL SECURITY INVOKER VIEW test1.v1_same AS SELECT * FROM test1.t1; GRANT SELECT(cs,cus) ON test1.v1_same TO user1@localhost; GRANT INSERT(ci) ON test1.v1_same TO user1@localhost; GRANT UPDATE(cu,cus) ON test1.v1_same TO user1@localhost; CREATE SQL SECURITY INVOKER VIEW test1.v1_cross AS SELECT * FROM test1.t1; GRANT SELECT(cu,ci) ON test1.v1_cross TO user1@localhost; GRANT INSERT(cus) ON test1.v1_cross TO user1@localhost; GRANT UPDATE(cs) ON test1.v1_cross TO user1@localhost; CREATE SQL SECURITY INVOKER VIEW test1.v1_middle AS SELECT * FROM test1.t1; GRANT SELECT(cus) ON test1.v1_middle TO user1@localhost; CREATE SQL SECURITY INVOKER VIEW test1.v1_multi AS SELECT * FROM test1.v1_middle; GRANT SELECT(cs,cus) ON test1.v1_multi TO user1@localhost; GRANT INSERT(ci) ON test1.v1_multi TO user1@localhost; GRANT UPDATE(cu,cus) ON test1.v1_multi TO user1@localhost; CREATE SQL SECURITY INVOKER VIEW test1.v1_renamed AS SELECT cn AS cs, cn AS cx, cs AS cus, cs AS cy FROM test1.t1; GRANT SELECT(cs,cus) ON test1.v1_renamed TO user1@localhost; --echo # Connect as user1 on database test connect (conn1, localhost, user1, , test); connection conn1; --echo # Test access to a base table SELECT cs, cus FROM test1.t1; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM test1.t1; --error ER_COLUMNACCESS_DENIED_ERROR SELECT cn FROM test1.t1; --error ER_COLUMNACCESS_DENIED_ERROR SELECT ci FROM test1.t1; --error ER_COLUMNACCESS_DENIED_ERROR SELECT cu FROM test1.t1; SELECT cs FROM test1.t1 WHERE cs = '0'; SELECT cs FROM test1.t1 WHERE cus = '0'; --error ER_COLUMNACCESS_DENIED_ERROR SELECT cs FROM test1.t1 WHERE cn = '0'; --error ER_COLUMNACCESS_DENIED_ERROR SELECT cs FROM test1.t1 WHERE ci = '0'; --error ER_COLUMNACCESS_DENIED_ERROR SELECT cs FROM test1.t1 WHERE cu = '0'; SELECT COUNT(*) AS c FROM test1.t1 GROUP BY cs; SELECT COUNT(*) AS c FROM test1.t1 GROUP BY cus; --error ER_COLUMNACCESS_DENIED_ERROR SELECT COUNT(*) AS c FROM test1.t1 GROUP BY cn; --error ER_COLUMNACCESS_DENIED_ERROR SELECT COUNT(*) AS c FROM test1.t1 GROUP BY ci; --error ER_COLUMNACCESS_DENIED_ERROR SELECT COUNT(*) AS c FROM test1.t1 GROUP BY cu; SELECT COUNT(*) AS c FROM test1.t1 HAVING MIN(cs) = '0'; SELECT COUNT(*) AS c FROM test1.t1 HAVING MIN(cus) = '0'; --error ER_COLUMNACCESS_DENIED_ERROR SELECT COUNT(*) AS c FROM test1.t1 HAVING MIN(cn) = '0'; --error ER_COLUMNACCESS_DENIED_ERROR SELECT COUNT(*) AS c FROM test1.t1 HAVING MIN(ci) = '0'; --error ER_COLUMNACCESS_DENIED_ERROR SELECT COUNT(*) AS c FROM test1.t1 HAVING MIN(cu) = '0'; SELECT COUNT(*) AS c FROM test1.t1 ORDER BY MIN(cs); SELECT COUNT(*) AS c FROM test1.t1 ORDER BY MIN(cus); --error ER_COLUMNACCESS_DENIED_ERROR SELECT COUNT(*) AS c FROM test1.t1 ORDER BY MIN(cn); --error ER_COLUMNACCESS_DENIED_ERROR SELECT COUNT(*) AS c FROM test1.t1 ORDER BY MIN(ci); --error ER_COLUMNACCESS_DENIED_ERROR SELECT COUNT(*) AS c FROM test1.t1 ORDER BY MIN(cu); UPDATE test1.t1 SET cu='u'; UPDATE test1.t1 SET cus='s' WHERE cus='0'; UPDATE test1.t1, test1.single SET cu='u'; UPDATE test1.t1, test1.single SET cus='s' WHERE cus='0'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.t1 SET cn='x'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.t1, test1.single SET cn='x'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.t1 SET cs='x'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.t1, test1.single SET cs='x'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.t1 SET ci='x'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.t1, test1.single SET ci='x'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.t1 SET cu='x' WHERE cn='0'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.t1, test1.single SET cu='x' WHERE cn='0'; INSERT INTO test1.t1(ci) VALUES('i'); INSERT INTO test1.t1(ci) SELECT 'i' FROM test1.single; INSERT INTO test1.t1(ci) VALUES('i') ON DUPLICATE KEY UPDATE cu='u'; INSERT INTO test1.t1(ci) SELECT 'i' FROM test1.single ON DUPLICATE KEY UPDATE cu='u'; --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.t1(cn) VALUES('x'); --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.t1(cn) SELECT 'x' FROM test1.single; --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.t1(cs) VALUES('x'); --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.t1(cs) SELECT 'x' FROM test1.single; --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.t1(cu) VALUES('x'); --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.t1(cu) SELECT 'x' FROM test1.single; --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.t1(cus) VALUES('x'); --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.t1(cus) SELECT 'x' FROM test1.single; --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.t1(ci) VALUES('i') ON DUPLICATE KEY UPDATE cn='u'; --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.t1(ci) SELECT 'i' FROM test1.single ON DUPLICATE KEY UPDATE cn='u'; --error ER_TABLEACCESS_DENIED_ERROR DELETE FROM test1.t1; --error ER_TABLEACCESS_DENIED_ERROR DELETE FROM test1.t1 WHERE cs='0'; --error ER_TABLEACCESS_DENIED_ERROR DELETE test1.t1 FROM test1.t1, test1.single WHERE cs='0'; --echo # Test access to derived tables SELECT * FROM (SELECT cs FROM test1.t1) AS dt; SELECT * FROM (SELECT cus FROM test1.t1) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT cn FROM test1.t1) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT cu FROM test1.t1) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT ci FROM test1.t1) AS dt; SELECT * FROM (SELECT MIN(cs) AS c FROM test1.t1) AS dt; SELECT * FROM (SELECT MIN(cus) AS c FROM test1.t1) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT MIN(cn) AS c FROM test1.t1) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT MIN(cu) AS c FROM test1.t1) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT MIN(ci) AS c FROM test1.t1) AS dt; SELECT * FROM (SELECT cs FROM test1.t1 WHERE cs = '0') AS dt; SELECT * FROM (SELECT cs FROM test1.t1 WHERE cus = '0') AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT cs FROM test1.t1 WHERE cn = '0') AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT cs FROM test1.t1 WHERE ci = '0') AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT cs FROM test1.t1 WHERE cu = '0') AS dt; SELECT * FROM (SELECT COUNT(*) AS c FROM test1.t1 GROUP BY cs) AS dt; SELECT * FROM (SELECT COUNT(*) AS c FROM test1.t1 GROUP BY cus) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT COUNT(*) AS c FROM test1.t1 GROUP BY cn) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT COUNT(*) AS c FROM test1.t1 GROUP BY ci) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT COUNT(*) AS c FROM test1.t1 GROUP BY cu) AS dt; SELECT * FROM (SELECT COUNT(*) AS c FROM test1.t1 HAVING MIN(cs) = '0') AS dt; SELECT * FROM (SELECT COUNT(*) AS c FROM test1.t1 HAVING MIN(cus) = '0') AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT COUNT(*) AS c FROM test1.t1 HAVING MIN(cn) = '0') AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT COUNT(*) AS c FROM test1.t1 HAVING MIN(ci) = '0') AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT COUNT(*) AS c FROM test1.t1 HAVING MIN(cu) = '0') AS dt; SELECT * FROM (SELECT COUNT(*) AS c FROM test1.t1 ORDER BY MIN(cs)) AS dt; SELECT * FROM (SELECT COUNT(*) AS c FROM test1.t1 ORDER BY MIN(cus)) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT COUNT(*) AS c FROM test1.t1 ORDER BY MIN(cn)) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT COUNT(*) AS c FROM test1.t1 ORDER BY MIN(ci)) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT COUNT(*) AS c FROM test1.t1 ORDER BY MIN(cu)) AS dt; --echo # Test access to a view with no privileges --error ER_TABLEACCESS_DENIED_ERROR SELECT cs, cus FROM test1.v1_none; --error ER_TABLEACCESS_DENIED_ERROR UPDATE test1.v1_none SET cu='x'; --error ER_TABLEACCESS_DENIED_ERROR UPDATE test1.v1_none, test1.single SET cu='x'; --error ER_TABLEACCESS_DENIED_ERROR UPDATE test1.v1_none SET cus='x' WHERE cus='0'; --error ER_TABLEACCESS_DENIED_ERROR UPDATE test1.v1_none, test1.single SET cus='x' WHERE cus='0'; --error ER_TABLEACCESS_DENIED_ERROR INSERT INTO test1.v1_none(ci) VALUES('x'); --error ER_TABLEACCESS_DENIED_ERROR INSERT INTO test1.v1_none(ci) SELECT 'x' FROM test1.single; --error ER_TABLEACCESS_DENIED_ERROR INSERT INTO test1.v1_none(ci) VALUES('x') ON DUPLICATE KEY UPDATE cu='u'; --error ER_TABLEACCESS_DENIED_ERROR INSERT INTO test1.v1_none(ci) SELECT 'x' FROM test1.single ON DUPLICATE KEY UPDATE cu='u'; --error ER_TABLEACCESS_DENIED_ERROR DELETE FROM test1.v1_none; --error ER_TABLEACCESS_DENIED_ERROR DELETE FROM test1.v1_none WHERE cs='0'; --error ER_TABLEACCESS_DENIED_ERROR DELETE test1.v1_none FROM test1.v1_none, test1.single WHERE cs='0'; --echo # Test access to a view with all privileges SELECT cs, cus FROM test1.v1_all; --error ER_VIEW_INVALID SELECT * FROM test1.v1_all; --error ER_VIEW_INVALID SELECT cn FROM test1.v1_all; --error ER_VIEW_INVALID SELECT ci FROM test1.v1_all; --error ER_VIEW_INVALID SELECT cu FROM test1.v1_all; UPDATE test1.v1_all SET cu='v'; UPDATE test1.v1_all, test1.single SET cu='v'; UPDATE test1.v1_all SET cus='t' WHERE cus='0'; UPDATE test1.v1_all, test1.single SET cus='t' WHERE cus='0'; --error ER_VIEW_INVALID UPDATE test1.v1_all SET cn='x'; --error ER_VIEW_INVALID UPDATE test1.v1_all, test1.single SET cn='x'; --error ER_VIEW_INVALID UPDATE test1.v1_all SET cs='x'; --error ER_VIEW_INVALID UPDATE test1.v1_all, test1.single SET cs='x'; --error ER_VIEW_INVALID UPDATE test1.v1_all SET ci='x'; --error ER_VIEW_INVALID UPDATE test1.v1_all, test1.single SET ci='x'; --error ER_VIEW_INVALID UPDATE test1.v1_all SET cu='x' WHERE cn='0'; --error ER_VIEW_INVALID UPDATE test1.v1_all, test1.single SET cu='x' WHERE cn='0'; INSERT INTO test1.v1_all(ci) VALUES('j'); INSERT INTO test1.v1_all(ci) SELECT 'j' FROM test1.single; INSERT INTO test1.v1_all(ci) VALUES('j') ON DUPLICATE KEY UPDATE cu='u'; INSERT INTO test1.v1_all(ci) SELECT 'j' FROM test1.single ON DUPLICATE KEY UPDATE cu='u'; --error ER_VIEW_INVALID INSERT INTO test1.v1_all(cn) VALUES('x'); --error ER_VIEW_INVALID INSERT INTO test1.v1_all(cn) SELECT 'x' FROM test1.single; --error ER_VIEW_INVALID INSERT INTO test1.v1_all(cs) VALUES('x'); --error ER_VIEW_INVALID INSERT INTO test1.v1_all(cs) SELECT 'x' FROM test1.single; --error ER_VIEW_INVALID INSERT INTO test1.v1_all(cu) VALUES('x'); --error ER_VIEW_INVALID INSERT INTO test1.v1_all(cu) SELECT 'x' FROM test1.single; --error ER_VIEW_INVALID INSERT INTO test1.v1_all(cus) VALUES('x'); --error ER_VIEW_INVALID INSERT INTO test1.v1_all(cus) SELECT 'x' FROM test1.single; --error ER_VIEW_INVALID INSERT INTO test1.v1_all(cn) VALUES('x') ON DUPLICATE KEY UPDATE cu='u'; --error ER_VIEW_INVALID INSERT INTO test1.v1_all(cn) SELECT 'x' FROM test1.single ON DUPLICATE KEY UPDATE cu='u'; --error ER_VIEW_INVALID INSERT INTO test1.v1_all(ci) VALUES('x') ON DUPLICATE KEY UPDATE cn='u'; --error ER_VIEW_INVALID INSERT INTO test1.v1_all(ci) SELECT 'x' FROM test1.single ON DUPLICATE KEY UPDATE cn='u'; --error ER_VIEW_INVALID DELETE FROM test1.v1_all; --error ER_VIEW_INVALID DELETE FROM test1.v1_all WHERE cs='0'; --error ER_VIEW_INVALID DELETE test1.v1_all FROM test1.v1_all, test1.single WHERE cs='0'; --echo # Test access to a view with all privileges, inside derived table SELECT * FROM (SELECT cs FROM test1.v1_all) AS dt; SELECT * FROM (SELECT cus FROM test1.v1_all) AS dt; --error ER_VIEW_INVALID SELECT * FROM (SELECT cn FROM test1.v1_all) AS dt; --error ER_VIEW_INVALID SELECT * FROM (SELECT cu FROM test1.v1_all) AS dt; --error ER_VIEW_INVALID SELECT * FROM (SELECT ci FROM test1.v1_all) AS dt; SELECT * FROM (SELECT MIN(cs) AS c FROM test1.v1_all) AS dt; SELECT * FROM (SELECT MIN(cus) AS c FROM test1.v1_all) AS dt; --error ER_VIEW_INVALID SELECT * FROM (SELECT MIN(cn) AS c FROM test1.v1_all) AS dt; --error ER_VIEW_INVALID SELECT * FROM (SELECT MIN(cu) AS c FROM test1.v1_all) AS dt; --error ER_VIEW_INVALID SELECT * FROM (SELECT MIN(ci) AS c FROM test1.v1_all) AS dt; SELECT * FROM (SELECT cs FROM test1.v1_all WHERE cs = '0') AS dt; SELECT * FROM (SELECT cs FROM test1.v1_all WHERE cus = '0') AS dt; --error ER_VIEW_INVALID SELECT * FROM (SELECT cs FROM test1.v1_all WHERE cn = '0') AS dt; --error ER_VIEW_INVALID SELECT * FROM (SELECT cs FROM test1.v1_all WHERE ci = '0') AS dt; --error ER_VIEW_INVALID SELECT * FROM (SELECT cs FROM test1.v1_all WHERE cu = '0') AS dt; SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_all GROUP BY cs) AS dt; SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_all GROUP BY cus) AS dt; --error ER_VIEW_INVALID SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_all GROUP BY cn) AS dt; --error ER_VIEW_INVALID SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_all GROUP BY ci) AS dt; --error ER_VIEW_INVALID SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_all GROUP BY cu) AS dt; SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_all HAVING MIN(cs) = '0') AS dt; SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_all HAVING MIN(cus) = '0') AS dt; --error ER_VIEW_INVALID SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_all HAVING MIN(cn) = '0') AS dt; --error ER_VIEW_INVALID SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_all HAVING MIN(ci) = '0') AS dt; --error ER_VIEW_INVALID SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_all HAVING MIN(cu) = '0') AS dt; SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_all ORDER BY MIN(cs)) AS dt; SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_all ORDER BY MIN(cus)) AS dt; --error ER_VIEW_INVALID SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_all ORDER BY MIN(cn)) AS dt; --error ER_VIEW_INVALID SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_all ORDER BY MIN(ci)) AS dt; --error ER_VIEW_INVALID SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_all ORDER BY MIN(cu)) AS dt; --echo # Test access to a view with same privileges as base table SELECT cs, cus FROM test1.v1_same; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM test1.v1_same; --error ER_COLUMNACCESS_DENIED_ERROR SELECT cn FROM test1.v1_same; --error ER_COLUMNACCESS_DENIED_ERROR SELECT ci FROM test1.v1_same; --error ER_COLUMNACCESS_DENIED_ERROR SELECT cu FROM test1.v1_same; UPDATE test1.v1_same SET cu='w'; UPDATE test1.v1_same, test1.single SET cu='w'; UPDATE test1.v1_same SET cus='z' WHERE cus='0'; UPDATE test1.v1_same, test1.single SET cus='z' WHERE cus='0'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.v1_same SET cn='x'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.v1_same, test1.single SET cn='x'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.v1_same SET cs='x'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.v1_same, test1.single SET cs='x'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.v1_same SET ci='x'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.v1_same, test1.single SET ci='x'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.v1_same SET cu='x' WHERE cn='0'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.v1_same, test1.single SET cu='x' WHERE cn='0'; INSERT INTO test1.v1_same(ci) VALUES('k'); INSERT INTO test1.v1_same(ci) SELECT 'k' FROM test1.single; INSERT INTO test1.v1_same(ci) VALUES('k') ON DUPLICATE KEY UPDATE cu='u'; INSERT INTO test1.v1_same(ci) SELECT 'k' FROM test1.single ON DUPLICATE KEY UPDATE cu='u'; --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.v1_same(cn) VALUES('x'); --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.v1_same(cn) SELECT 'x' FROM test1.single; --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.v1_same(cs) VALUES('x'); --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.v1_same(cs) SELECT 'x' FROM test1.single; --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.v1_same(cu) VALUES('x'); --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.v1_same(cu) SELECT 'x' FROM test1.single; --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.v1_same(cus) VALUES('x'); --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.v1_same(cus) SELECT 'x' FROM test1.single; --error ER_TABLEACCESS_DENIED_ERROR DELETE FROM test1.v1_same; --error ER_TABLEACCESS_DENIED_ERROR DELETE FROM test1.v1_same WHERE cs='0'; --error ER_TABLEACCESS_DENIED_ERROR DELETE test1.v1_same FROM test1.v1_same, test1.single WHERE cs='0'; --echo # Test access to a view with same privileges, inside derived table SELECT * FROM (SELECT cs FROM test1.v1_same) AS dt; SELECT * FROM (SELECT cus FROM test1.v1_same) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT cn FROM test1.v1_same) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT cu FROM test1.v1_same) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT ci FROM test1.v1_same) AS dt; SELECT * FROM (SELECT MIN(cs) AS c FROM test1.v1_same) AS dt; SELECT * FROM (SELECT MIN(cus) AS c FROM test1.v1_same) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT MIN(cn) AS c FROM test1.v1_same) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT MIN(cu) AS c FROM test1.v1_same) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT MIN(ci) AS c FROM test1.v1_same) AS dt; SELECT * FROM (SELECT cs FROM test1.v1_same WHERE cs = '0') AS dt; SELECT * FROM (SELECT cs FROM test1.v1_same WHERE cus = '0') AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT cs FROM test1.v1_same WHERE cn = '0') AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT cs FROM test1.v1_same WHERE ci = '0') AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT cs FROM test1.v1_same WHERE cu = '0') AS dt; SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_same GROUP BY cs) AS dt; SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_same GROUP BY cus) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_same GROUP BY cn) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_same GROUP BY ci) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_same GROUP BY cu) AS dt; SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_same HAVING MIN(cs) = '0') AS dt; SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_same HAVING MIN(cus) = '0') AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_same HAVING MIN(cn) = '0') AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_same HAVING MIN(ci) = '0') AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_same HAVING MIN(cu) = '0') AS dt; SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_same ORDER BY MIN(cs)) AS dt; SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_same ORDER BY MIN(cus)) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_same ORDER BY MIN(cn)) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_same ORDER BY MIN(ci)) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT COUNT(*) AS c FROM test1.v1_same ORDER BY MIN(cu)) AS dt; --echo # Test access to a view with "mixed" privileges --error ER_COLUMNACCESS_DENIED_ERROR SELECT cs, cus FROM test1.v1_cross; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM test1.v1_cross; --error ER_COLUMNACCESS_DENIED_ERROR SELECT cn FROM test1.v1_cross; --error ER_VIEW_INVALID SELECT ci FROM test1.v1_cross; --error ER_VIEW_INVALID SELECT cu FROM test1.v1_cross; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.v1_cross SET cu='x'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.v1_cross, test1.single SET cu='x'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.v1_cross SET cus='x' WHERE cus='0'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.v1_cross, test1.single SET cus='x' WHERE cus='0'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.v1_cross SET cn='x'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.v1_cross, test1.single SET cn='x'; --error ER_VIEW_INVALID UPDATE test1.v1_cross SET cs='x'; --error ER_VIEW_INVALID UPDATE test1.v1_cross, test1.single SET cs='x'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.v1_cross SET ci='x'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.v1_cross, test1.single SET ci='x'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.v1_cross SET cu='x' WHERE cn='0'; --error ER_COLUMNACCESS_DENIED_ERROR UPDATE test1.v1_cross, test1.single SET cu='x' WHERE cn='0'; --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.v1_cross(ci) VALUES('x'); --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.v1_cross(ci) SELECT 'x' FROM test1.single; --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.v1_cross(ci) VALUES('k') ON DUPLICATE KEY UPDATE cu='u'; --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.v1_cross(ci) SELECT 'k' FROM test1.single ON DUPLICATE KEY UPDATE cu='u'; --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.v1_cross(cn) VALUES('x'); --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.v1_cross(cn) SELECT 'x' FROM test1.single; --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.v1_cross(cs) VALUES('x'); --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.v1_cross(cs) SELECT 'x' FROM test1.single; --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.v1_cross(cu) VALUES('x'); --error ER_COLUMNACCESS_DENIED_ERROR INSERT INTO test1.v1_cross(cu) SELECT 'x' FROM test1.single; --error ER_VIEW_INVALID INSERT INTO test1.v1_cross(cus) VALUES('x'); --error ER_VIEW_INVALID INSERT INTO test1.v1_cross(cus) SELECT 'x' FROM test1.single; --error ER_TABLEACCESS_DENIED_ERROR DELETE FROM test1.v1_cross; --error ER_TABLEACCESS_DENIED_ERROR DELETE FROM test1.v1_cross WHERE cs='0'; --error ER_TABLEACCESS_DENIED_ERROR DELETE test1.v1_cross FROM test1.v1_cross, test1.single WHERE cs='0'; --echo # Test access to a multi-level view with no privileges --error ER_VIEW_INVALID SELECT cs FROM test1.v1_multi; SELECT cus FROM test1.v1_multi; --error ER_VIEW_INVALID UPDATE test1.v1_multi SET cu='x'; --error ER_VIEW_INVALID UPDATE test1.v1_multi, test1.single SET cu='x'; --error ER_VIEW_INVALID UPDATE test1.v1_multi SET cus='x' WHERE cus='0'; --error ER_VIEW_INVALID UPDATE test1.v1_multi, test1.single SET cus='x' WHERE cus='0'; --error ER_VIEW_INVALID INSERT INTO test1.v1_multi(ci) VALUES('x'); --error ER_VIEW_INVALID INSERT INTO test1.v1_multi(ci) SELECT 'x' FROM test1.single; --error ER_VIEW_INVALID INSERT INTO test1.v1_multi(ci) VALUES('x') ON DUPLICATE KEY UPDATE cu='u'; --error ER_VIEW_INVALID INSERT INTO test1.v1_multi(ci) SELECT 'x' FROM test1.single ON DUPLICATE KEY UPDATE cu='u'; --error ER_TABLEACCESS_DENIED_ERROR DELETE FROM test1.v1_multi; --error ER_TABLEACCESS_DENIED_ERROR DELETE FROM test1.v1_multi WHERE cs='0'; --error ER_TABLEACCESS_DENIED_ERROR DELETE test1.v1_multi FROM test1.v1_multi WHERE cs='0'; --echo # Test access to a renamed view --error ER_COLUMNACCESS_DENIED_ERROR SELECT cn FROM test1.v1_renamed; --error ER_VIEW_INVALID SELECT cs FROM test1.v1_renamed; SELECT cus FROM test1.v1_renamed; --error ER_COLUMNACCESS_DENIED_ERROR SELECT cx FROM test1.v1_renamed; --error ER_COLUMNACCESS_DENIED_ERROR SELECT cy FROM test1.v1_renamed; --echo # Test access to a derived tables. Since they can be used in SELECT --echo # only, update functions are not needed --error ER_COLUMNACCESS_DENIED_ERROR SELECT cs, cus FROM (SELECT * FROM test1.t1) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT * FROM test1.t1) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT cn FROM (SELECT * FROM test1.t1) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT ci FROM (SELECT * FROM test1.t1) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT cu FROM (SELECT * FROM test1.t1) AS dt; SELECT * FROM (SELECT cs, cus FROM test1.t1) AS dt; SELECT cs, cus FROM (SELECT cs, cus FROM test1.t1) AS dt; SELECT cx FROM (SELECT CONCAT(cs, cus) AS cx FROM test1.t1) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT cn FROM test1.t1) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT ci FROM test1.t1) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT cu FROM test1.t1) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT CONCAT(cs, cu) AS cx FROM test1.t1) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM (SELECT CONCAT(ci, cu) AS cx FROM test1.t1) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT cx FROM (SELECT CONCAT(cs, cu) AS cx FROM test1.t1) AS dt; --error ER_COLUMNACCESS_DENIED_ERROR SELECT cx FROM (SELECT CONCAT(ci, cu) AS cx FROM test1.t1) AS dt; disconnect conn1; connection default; DROP VIEW test1.v1_none, test1.v1_all, test1.v1_same; DROP VIEW test1.v1_cross, test1.v1_middle, test1.v1_multi; DROP VIEW test1.v1_renamed; DROP USER user1@localhost; # SQL SECURITY DEFINER tests CREATE USER user1@localhost; # SELECT privilege is required to create the views: GRANT SELECT(cs) ON test1.t1 TO user1@localhost; CREATE DEFINER=user1@localhost SQL SECURITY DEFINER VIEW test1.v1_none AS SELECT cs FROM test1.t1; CREATE DEFINER=user1@localhost SQL SECURITY DEFINER VIEW test1.v1_middle AS SELECT cs FROM test1.t1; CREATE DEFINER=user1@localhost SQL SECURITY DEFINER VIEW test1.v1_multi AS SELECT * FROM test1.v1_middle; REVOKE SELECT(cs) ON test1.t1 FROM user1@localhost; SHOW GRANTS FOR user1@localhost; # Note that we're connected as root. SELECT * FROM test1.t1 LIMIT 1; --echo # Test access to a view with no privileges # user1 cannot see t1.cs --error ER_VIEW_INVALID SELECT cs FROM test1.v1_none; GRANT SELECT(cs) ON test1.t1 TO user1@localhost; # user1 can see t1.cs SELECT cs FROM test1.v1_none LIMIT 1; # user1 can see t1.cs but not v1_middle.cs --error ER_VIEW_INVALID SELECT cs FROM test1.v1_multi; GRANT SELECT(cs) ON test1.v1_middle TO user1@localhost; # user1 can see t1.cs and v1_middle.cs SELECT cs FROM test1.v1_multi LIMIT 1; REVOKE SELECT(cs) ON test1.t1 FROM user1@localhost; # user1 cannot see t1.cs, can see v1_middle.cs --error ER_VIEW_INVALID SELECT cs FROM test1.v1_multi; DROP USER user1@localhost; DROP DATABASE test1; --echo # --echo # Bug#20032855 STRICT MODE REVEALS UNDERLYING PRIVILEGE ERROR --echo # CREATE DATABASE test1; CREATE USER 'user1'@'localhost'; CREATE TABLE test1.t1 (cn CHAR(1), cs CHAR(1), ci CHAR(1), cu CHAR(1), cus CHAR(1)); GRANT SELECT(cs,cus) ON test1.t1 TO user1@localhost; GRANT INSERT(ci) ON test1.t1 TO user1@localhost; GRANT UPDATE(cu,cus) ON test1.t1 TO user1@localhost; CREATE SQL SECURITY INVOKER VIEW test1.v1_all AS SELECT * FROM test1.t1; GRANT SELECT,INSERT,UPDATE,DELETE ON test1.v1_all TO user1@localhost; FLUSH PRIVILEGES; --enable_connect_log connect (con1,localhost,user1,,); SET sql_mode='STRICT_ALL_TABLES'; --error ER_VIEW_INVALID UPDATE test1.v1_all SET cn='x'; SHOW WARNINGS; SET sql_mode=''; --error ER_VIEW_INVALID UPDATE test1.v1_all SET cn='x'; SHOW WARNINGS; --error ER_VIEW_INVALID UPDATE IGNORE test1.v1_all SET cn='x'; SHOW WARNINGS; --echo --echo # Bug21338077 HANDLE_FATAL_SIGNAL (SIG=11) IN __STPCPY_SSE2_UNALIGNED FROM MY_STPCPY --echo CREATE VIEW v1 AS SELECT 1 FROM (SELECT 1) AS d1; PREPARE stmt FROM 'SELECT * FROM v1'; EXECUTE stmt; DROP PREPARE stmt; DROP VIEW v1; --connection default disconnect con1; DROP USER 'user1'@'localhost'; DROP DATABASE test1; set GLOBAL sql_mode= @orig_sql_mode_global; set SESSION sql_mode= @orig_sql_mode_session; # Wait till we reached the initial number of concurrent sessions --source include/wait_until_count_sessions.inc --echo # --echo # WL#2284: Increase the length of a user name --echo # CREATE DATABASE test1; CREATE TABLE test1.t1 ( int_field INTEGER UNSIGNED NOT NULL, char_field CHAR(10), INDEX(`int_field`) ); use test; CREATE USER user_name_len_22_01234@localhost; CREATE USER user_name_len_32_012345678901234@localhost; REVOKE ALL PRIVILEGES, GRANT OPTION FROM user_name_len_22_01234@localhost; REVOKE ALL PRIVILEGES, GRANT OPTION FROM user_name_len_32_012345678901234@localhost; --echo # Check that user_name_len_22_01234 has no SELECT permission ON t1 connect (con_user_22,localhost,user_name_len_22_01234,,test); --error ER_TABLEACCESS_DENIED_ERROR SELECT * FROM test1.t1; --echo # Check that user_name_len_32_012345678901234 has no SELECT permission ON t1 connect (con_user_32,localhost,user_name_len_32_012345678901234,,test); --error ER_TABLEACCESS_DENIED_ERROR SELECT * FROM test1.t1; connection default; GRANT ALL ON test1.* TO user_name_len_32_012345678901234@localhost; CREATE DEFINER=user_name_len_32_012345678901234@localhost VIEW test1.v1 AS SELECT int_field FROM test1.t1; GRANT SELECT ON test1.v1 TO user_name_len_22_01234@localhost; --echo # Now user_name_len_22_01234 should be able to SELECT int_field FROM --echo # test1.t1 by using test1.v1 connection con_user_22; SELECT * FROM test1.v1; connection default; --error ER_WRONG_STRING_LENGTH CREATE DEFINER=user_name_len_33_0123456789012345@localhost VIEW test1.v2 AS SELECT int_field FROM test1.t1; #Cleanup DROP DATABASE test1; DROP USER user_name_len_22_01234@localhost; DROP USER user_name_len_32_012345678901234@localhost; --echo # --echo # WL#9262: All system tables should support 32 character length user names --echo # --echo #Create user with max length (max username length + max hostname length) CREATE USER user_name_robert_golebiowski@oh_my_gosh_this_is_a_long_hostname_look_at_it_it_has_60_char; CREATE TABLE silly_one (ID INT); CREATE DEFINER=user_name_robert_golebiowski@oh_my_gosh_this_is_a_long_hostname_look_at_it_it_has_60_char VIEW silly_view AS SELECT * FROM silly_one; SELECT DEFINER FROM information_schema.VIEWS WHERE TABLE_NAME='silly_view'; DROP USER user_name_robert_golebiowski@oh_my_gosh_this_is_a_long_hostname_look_at_it_it_has_60_char; DROP VIEW silly_view; DROP TABLE silly_one;
Close