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 | : 3.21.186.117
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 /
include /
[ HOME SHELL ]
Name
Size
Permission
Action
Load_data.inc
173
B
-rw-r--r--
add_anonymous_users.inc
194
B
-rw-r--r--
add_debug_point.inc
3.11
KB
-rw-r--r--
allowed_ciphers.inc
409
B
-rw-r--r--
analyze-sync_with_master.test
283
B
-rw-r--r--
analyze-timeout.test
25
B
-rw-r--r--
assert.inc
2.38
KB
-rw-r--r--
assert_and_disable_read_only.i...
1.05
KB
-rw-r--r--
assert_binlog_events.inc
10.22
KB
-rw-r--r--
assert_command_output.inc
2.45
KB
-rw-r--r--
assert_grep.inc
4.17
KB
-rw-r--r--
assert_gtid_mode_on.inc
250
B
-rw-r--r--
assert_logical_timestamps.inc
2.63
KB
-rw-r--r--
assert_no_warnings.inc
977
B
-rw-r--r--
assert_rbr_only_flags.inc
2.46
KB
-rw-r--r--
assert_semisync_master_status_...
273
B
-rw-r--r--
assert_semisync_master_status_...
271
B
-rw-r--r--
assert_semisync_yesno_tx_incre...
1.23
KB
-rw-r--r--
assert_status.inc
1.03
KB
-rw-r--r--
assert_variable.inc
892
B
-rw-r--r--
backup_tables_priv_and_users.i...
1.06
KB
-rw-r--r--
begin_include_file.inc
3.21
KB
-rw-r--r--
begin_replace_gtid_combination...
2.07
KB
-rw-r--r--
big_test.inc
107
B
-rw-r--r--
binlog_inject_error.inc
641
B
-rw-r--r--
bug13581713.inc
6.62
KB
-rw-r--r--
bug38347.inc
404
B
-rw-r--r--
change_file_perms.inc
521
B
-rw-r--r--
check-testcase.test
2.98
KB
-rw-r--r--
check-warnings.test
1.74
KB
-rw-r--r--
check_charset.inc
3.53
KB
-rw-r--r--
check_concurrent_insert.inc
2.66
KB
-rw-r--r--
check_events_off.inc
1.82
KB
-rw-r--r--
check_ftwrl_compatible.inc
3.64
KB
-rw-r--r--
check_ftwrl_incompatible.inc
3.8
KB
-rw-r--r--
check_ipv4_mapped.inc
683
B
-rw-r--r--
check_ipv6.inc
597
B
-rw-r--r--
check_key_reads.inc
250
B
-rw-r--r--
check_key_req.inc
628
B
-rw-r--r--
check_keys_after_migration.inc
2.17
KB
-rw-r--r--
check_no_concurrent_insert.inc
2.07
KB
-rw-r--r--
check_no_row_lock.inc
1.76
KB
-rw-r--r--
check_openssl_version.inc
1.32
KB
-rw-r--r--
check_plugin_dir.inc
1.39
KB
-rw-r--r--
check_qep.inc
1.35
KB
-rw-r--r--
check_shared_row_lock.inc
1.39
KB
-rw-r--r--
check_slave_is_running.inc
750
B
-rw-r--r--
check_slave_no_error.inc
754
B
-rw-r--r--
check_slave_param.inc
1.33
KB
-rw-r--r--
check_var_limit.inc
394
B
-rw-r--r--
cleanup_fake_relay_log.inc
669
B
-rw-r--r--
cleanup_folder.inc
155
B
-rw-r--r--
commandline_option_test.inc
799
B
-rw-r--r--
commit.inc
22.71
KB
-rw-r--r--
commit_crash_restart.inc
268
B
-rw-r--r--
common-tests.inc
116.44
KB
-rw-r--r--
concurrent.inc
25.06
KB
-rw-r--r--
cond_filter_queries.inc
9.16
KB
-rw-r--r--
config_file_option_test.inc
783
B
-rw-r--r--
connect2.inc
977
B
-rw-r--r--
count_sessions.inc
389
B
-rw-r--r--
create_575_part_table.inc
1.03
KB
-rw-r--r--
create_table.inc
135
B
-rw-r--r--
ctype_8bit.inc
2.85
KB
-rw-r--r--
ctype_ascii_order.inc
1.04
KB
-rw-r--r--
ctype_common.inc
2.83
KB
-rw-r--r--
ctype_czech.inc
437
B
-rw-r--r--
ctype_datetime.inc
333
B
-rw-r--r--
ctype_filesort.inc
377
B
-rw-r--r--
ctype_filesort2.inc
1006
B
-rw-r--r--
ctype_german.inc
1.42
KB
-rw-r--r--
ctype_heap.inc
479
B
-rw-r--r--
ctype_inet.inc
450
B
-rw-r--r--
ctype_innodb_like.inc
665
B
-rw-r--r--
ctype_like.inc
1.36
KB
-rw-r--r--
ctype_like_escape.inc
592
B
-rw-r--r--
ctype_like_ignorable.inc
427
B
-rw-r--r--
ctype_like_range_f1f2.inc
835
B
-rw-r--r--
ctype_numconv.inc
44.86
KB
-rw-r--r--
ctype_pad_space.inc
133
B
-rw-r--r--
ctype_regex.inc
1.18
KB
-rw-r--r--
ctype_unicode520.inc
7.13
KB
-rw-r--r--
ctype_unicode_latin.inc
10.23
KB
-rw-r--r--
ctype_utf8_table.inc
1.35
KB
-rw-r--r--
ctype_utf8mb4.inc
60.36
KB
-rw-r--r--
daemon_example_bad_format.ini
215
B
-rw-r--r--
daemon_example_bad_soname.ini
227
B
-rw-r--r--
ddl_i18n.check_events.inc
864
B
-rw-r--r--
ddl_i18n.check_sp.inc
1.48
KB
-rw-r--r--
ddl_i18n.check_triggers.inc
1.71
KB
-rw-r--r--
ddl_i18n.check_views.inc
544
B
-rw-r--r--
deadlock.inc
3.59
KB
-rw-r--r--
default_client.cnf
367
B
-rw-r--r--
default_my.cnf
544
B
-rw-r--r--
default_mysqld.cnf
2.89
KB
-rw-r--r--
default_mysqld_autosize.cnf
1.87
KB
-rw-r--r--
default_ndbd.cnf
1.59
KB
-rw-r--r--
delete_all_rows.inc
3.15
KB
-rw-r--r--
delete_anonymous_users.inc
207
B
-rw-r--r--
diff_servers.inc
2.2
KB
-rw-r--r--
diff_tables.inc
7.55
KB
-rw-r--r--
disconnect_connections.inc
350
B
-rw-r--r--
end_include_file.inc
2.43
KB
-rw-r--r--
end_replace_gtid_combination.i...
779
B
-rw-r--r--
endspace.inc
338
B
-rw-r--r--
escape_sql.inc
1.52
KB
-rw-r--r--
eval.inc
5.73
KB
-rw-r--r--
execute_at_sync_point.inc
3.55
KB
-rw-r--r--
execute_from_sync_point.inc
1.96
KB
-rw-r--r--
execute_from_sync_point_with_e...
1.93
KB
-rw-r--r--
execute_to_sync_point.inc
2.34
KB
-rw-r--r--
execute_with_statistics.inc
772
B
-rw-r--r--
expect_crash.inc
214
B
-rw-r--r--
expect_qep.inc
1.19
KB
-rw-r--r--
explain.inc
11.17
KB
-rw-r--r--
explain_for_connection.inc
1.68
KB
-rw-r--r--
explain_for_connection_rqg.inc
200.97
KB
-rw-r--r--
explain_for_connection_small.i...
22.17
KB
-rw-r--r--
explain_json.inc
10.93
KB
-rw-r--r--
explain_non_select.inc
30.23
KB
-rw-r--r--
explain_other.inc
1.03
KB
-rw-r--r--
explain_run_count.inc
93
B
-rw-r--r--
explain_utils.inc
5.15
KB
-rw-r--r--
file_does_not_exist.inc
340
B
-rw-r--r--
filter_file.inc
5.12
KB
-rw-r--r--
finish_option_test.inc
235
B
-rw-r--r--
force_binlog_format_statement....
204
B
-rw-r--r--
force_myisam_default.inc
207
B
-rw-r--r--
force_restart.inc
335
B
-rw-r--r--
force_restart_if_skipped.inc
346
B
-rw-r--r--
freebsd.inc
107
B
-rw-r--r--
func_aes_block.inc
3.95
KB
-rw-r--r--
func_in.inc
18.06
KB
-rw-r--r--
function_defaults.inc
34.97
KB
-rw-r--r--
generate_keys_before_migration...
2.16
KB
-rw-r--r--
get_file_permissions.inc
274
B
-rw-r--r--
get_frm_info.inc
2.67
KB
-rw-r--r--
get_handler_status_counts.inc
143
B
-rw-r--r--
get_ndb_epochs.inc
2.12
KB
-rw-r--r--
get_relay_log_pos.inc
2.77
KB
-rw-r--r--
get_row_count.inc
1.96
KB
-rw-r--r--
gis_debug.inc
8.41
KB
-rw-r--r--
gis_generic.inc
13.64
KB
-rw-r--r--
gis_keys.inc
1.97
KB
-rw-r--r--
grant_cache.inc
7.6
KB
-rw-r--r--
greedy_search_drop_tables.inc
167
B
-rw-r--r--
greedy_search_load_tables.inc
996
B
-rw-r--r--
grep_pattern.inc
2.08
KB
-rw-r--r--
group_by_fd.inc
29.2
KB
-rw-r--r--
group_replication_timeouts.inc
255
B
-rw-r--r--
gtid_prepare_and_execute_stmt....
839
B
-rw-r--r--
gtid_step_assert.inc
4.62
KB
-rw-r--r--
gtid_step_assert_on_retrieved....
3.73
KB
-rw-r--r--
gtid_step_reset.inc
476
B
-rw-r--r--
gtid_step_reset_on_retrieved.i...
565
B
-rw-r--r--
gtid_utils.inc
15.49
KB
-rw-r--r--
gtid_utils_end.inc
993
B
-rw-r--r--
handler.inc
49.53
KB
-rw-r--r--
have_32bit.inc
428
B
-rw-r--r--
have_64bit.inc
357
B
-rw-r--r--
have_QC_Disabled.inc
137
B
-rw-r--r--
have_archive.inc
180
B
-rw-r--r--
have_archive_plugin.inc
413
B
-rw-r--r--
have_audit_log_plugin.inc
688
B
-rw-r--r--
have_big5.inc
107
B
-rw-r--r--
have_binlog_checksum_off.inc
236
B
-rw-r--r--
have_binlog_format_mixed.inc
155
B
-rw-r--r--
have_binlog_format_mixed_or_ro...
181
B
-rw-r--r--
have_binlog_format_mixed_or_st...
193
B
-rw-r--r--
have_binlog_format_row.inc
153
B
-rw-r--r--
have_binlog_format_row_or_stat...
192
B
-rw-r--r--
have_binlog_format_statement.i...
159
B
-rw-r--r--
have_binlog_order_commits.test
308
B
-rw-r--r--
have_blackhole.inc
173
B
-rw-r--r--
have_blackhole_plugin.inc
427
B
-rw-r--r--
have_case_insensitive_file_sys...
134
B
-rw-r--r--
have_case_sensitive_file_syste...
132
B
-rw-r--r--
have_compress.inc
109
B
-rw-r--r--
have_cp1250_ch.inc
112
B
-rw-r--r--
have_cp1251.inc
115
B
-rw-r--r--
have_cp866.inc
113
B
-rw-r--r--
have_cp932.inc
110
B
-rw-r--r--
have_crypt.inc
103
B
-rw-r--r--
have_daemon_example_plugin.inc
387
B
-rw-r--r--
have_debug.inc
113
B
-rw-r--r--
have_debug_sync.inc
196
B
-rw-r--r--
have_dynamic_loading.inc
221
B
-rw-r--r--
have_engine_condition_pushdown...
170
B
-rw-r--r--
have_eucjpms.inc
114
B
-rw-r--r--
have_euckr.inc
108
B
-rw-r--r--
have_example_plugin.inc
566
B
-rw-r--r--
have_exampledb.inc
178
B
-rw-r--r--
have_expect.inc
628
B
-rw-r--r--
have_federated_plugin.inc
151
B
-rw-r--r--
have_firstmatch.inc
155
B
-rw-r--r--
have_gb18030.inc
113
B
-rw-r--r--
have_gb2312.inc
111
B
-rw-r--r--
have_gbk.inc
105
B
-rw-r--r--
have_geometry.inc
110
B
-rw-r--r--
have_grep.inc
319
B
-rw-r--r--
have_group_replication_plugin....
1.39
KB
-rw-r--r--
have_gtid.inc
378
B
-rw-r--r--
have_index_condition_pushdown....
169
B
-rw-r--r--
have_innochecksum_debug.inc
385
B
-rw-r--r--
have_innodb.inc
163
B
-rw-r--r--
have_innodb_16k.inc
231
B
-rw-r--r--
have_innodb_32k.inc
194
B
-rw-r--r--
have_innodb_4k.inc
229
B
-rw-r--r--
have_innodb_64k.inc
194
B
-rw-r--r--
have_innodb_8k.inc
229
B
-rw-r--r--
have_innodb_max_16k.inc
212
B
-rw-r--r--
have_innodb_zip.inc
216
B
-rw-r--r--
have_ipv4_mapped.inc
289
B
-rw-r--r--
have_ipv6.inc
339
B
-rw-r--r--
have_koi8r.inc
113
B
-rw-r--r--
have_latin2_ch.inc
112
B
-rw-r--r--
have_local_infile.inc
111
B
-rw-r--r--
have_log_bin.inc
314
B
-rw-r--r--
have_loosescan.inc
154
B
-rw-r--r--
have_lowercase0.inc
116
B
-rw-r--r--
have_lowercase1.inc
116
B
-rw-r--r--
have_lowercase2.inc
116
B
-rw-r--r--
have_materialization.inc
160
B
-rw-r--r--
have_max_indexes_128.inc
126
B
-rw-r--r--
have_max_indexes_64.inc
126
B
-rw-r--r--
have_mecab.inc
630
B
-rw-r--r--
have_memcached_plugin.inc
69
B
-rw-r--r--
have_mrr.inc
148
B
-rw-r--r--
have_multi_ndb.inc
2.02
KB
-rw-r--r--
have_myisam.inc
285
B
-rw-r--r--
have_mysql_no_login_plugin.inc
674
B
-rw-r--r--
have_mysql_upgrade.inc
134
B
-rw-r--r--
have_mysqld_safe.inc
756
B
-rw-r--r--
have_mysqlx_plugin.inc
70
B
-rw-r--r--
have_ndb.inc
659
B
-rw-r--r--
have_ndb_debug.inc
551
B
-rw-r--r--
have_ndb_extra.inc
65
B
-rw-r--r--
have_ndbapi_examples.inc
148
B
-rw-r--r--
have_ngram.inc
157
B
-rw-r--r--
have_no_undo_tablespaces.inc
195
B
-rw-r--r--
have_nodebug.inc
115
B
-rw-r--r--
have_not_innodb_plugin.inc
185
B
-rw-r--r--
have_null_audit_plugin.inc
701
B
-rw-r--r--
have_numa.inc
244
B
-rw-r--r--
have_openssl.inc
139
B
-rw-r--r--
have_openssl_binary.inc
1.48
KB
-rw-r--r--
have_openssl_support.inc
197
B
-rw-r--r--
have_openssl_version_1.1.0.inc
1.39
KB
-rw-r--r--
have_optimizer_trace.inc
291
B
-rw-r--r--
have_outfile.inc
171
B
-rw-r--r--
have_partition.inc
193
B
-rw-r--r--
have_partition_open_file_limit...
605
B
-rw-r--r--
have_perfschema.inc
146
B
-rw-r--r--
have_plugin_auth.inc
188
B
-rw-r--r--
have_plugin_interface.inc
187
B
-rw-r--r--
have_plugin_server.inc
178
B
-rw-r--r--
have_profiling.inc
112
B
-rw-r--r--
have_punch_hole.inc
813
B
-rw-r--r--
have_query_cache.inc
115
B
-rw-r--r--
have_query_cache_disabled.inc
1.01
KB
-rw-r--r--
have_replication_observers_exa...
988
B
-rw-r--r--
have_semijoin.inc
153
B
-rw-r--r--
have_semisync_plugin.inc
594
B
-rw-r--r--
have_sha256_rsa_auth.inc
305
B
-rw-r--r--
have_shm.inc
169
B
-rw-r--r--
have_simple_parser.inc
662
B
-rw-r--r--
have_sjis.inc
108
B
-rw-r--r--
have_slave_parallel_type_datab...
253
B
-rw-r--r--
have_slave_parallel_type_logic...
263
B
-rw-r--r--
have_slave_repository_type_fil...
241
B
-rw-r--r--
have_slave_repository_type_tab...
240
B
-rw-r--r--
have_ssl.inc
136
B
-rw-r--r--
have_ssl_communication.inc
136
B
-rw-r--r--
have_ssl_crypto_functs.inc
408
B
-rw-r--r--
have_statement_timeout.inc
127
B
-rw-r--r--
have_symlink.inc
291
B
-rw-r--r--
have_tis620.inc
108
B
-rw-r--r--
have_ucs2.inc
107
B
-rw-r--r--
have_udf.inc
630
B
-rw-r--r--
have_ujis.inc
108
B
-rw-r--r--
have_undo_tablespaces.inc
211
B
-rw-r--r--
have_utf16.inc
109
B
-rw-r--r--
have_utf32.inc
109
B
-rw-r--r--
have_utf8.inc
111
B
-rw-r--r--
have_utf8mb4.inc
117
B
-rw-r--r--
have_util_nc.inc
930
B
-rw-r--r--
have_util_unzip.inc
706
B
-rw-r--r--
have_valgrind.inc
182
B
-rw-r--r--
have_validate_password_plugin....
703
B
-rw-r--r--
ib_logfile_size_check.inc
278
B
-rw-r--r--
icp_tests.inc
25.61
KB
-rw-r--r--
if_encrypted.inc
845
B
-rw-r--r--
implicit_commit_helper.inc
123
B
-rw-r--r--
index_merge1.inc
23.14
KB
-rw-r--r--
index_merge2.inc
13.6
KB
-rw-r--r--
index_merge_2sweeps.inc
1.58
KB
-rw-r--r--
index_merge_delete.inc
6.1
KB
-rw-r--r--
index_merge_insert-and-replace...
3.59
KB
-rw-r--r--
index_merge_intersect_dml.inc
5.41
KB
-rw-r--r--
index_merge_multi_col_setup.in...
1.25
KB
-rw-r--r--
index_merge_ror.inc
11.76
KB
-rw-r--r--
index_merge_ror_cpk.inc
17.85
KB
-rw-r--r--
index_merge_single_col_setup.i...
1.2
KB
-rw-r--r--
index_merge_update.inc
4.56
KB
-rw-r--r--
init_option_test.inc
238
B
-rw-r--r--
innodb-index.inc
1.2
KB
-rw-r--r--
innodb-util.inc
3.47
KB
-rw-r--r--
innodb_gis_row_format_basic.in...
20.29
KB
-rw-r--r--
innodb_gis_undo.inc
293.94
KB
-rw-r--r--
innodb_pk_extension.inc
10.18
KB
-rw-r--r--
innodb_rollback_on_timeout.inc
931
B
-rw-r--r--
innodb_trx_weight.inc
861
B
-rw-r--r--
install_replication_observers_...
633
B
-rw-r--r--
install_semisync.inc
255
B
-rw-r--r--
install_semisync_master.inc
1011
B
-rw-r--r--
install_semisync_slave.inc
626
B
-rw-r--r--
io_thd_fault_injection.inc
598
B
-rw-r--r--
ipv6.inc
626
B
-rw-r--r--
ipv6_clients.inc
435
B
-rw-r--r--
ipv6_func.inc
1.38
KB
-rw-r--r--
is_embedded.inc
126
B
-rw-r--r--
join_cache.inc
70
KB
-rw-r--r--
keyring_udf_keyring_plugin_loa...
8.21
KB
-rw-r--r--
keyring_udf_keyring_plugin_loa...
2.83
KB
-rw-r--r--
keyring_udf_keyring_plugin_loa...
8.49
KB
-rw-r--r--
keyring_udf_keyring_plugin_not...
711
B
-rw-r--r--
keyring_udf_keyring_udf_plugin...
504
B
-rw-r--r--
keyring_udf_missing_plugin.inc
1.41
KB
-rw-r--r--
kill_and_restart_mysqld.inc
428
B
-rw-r--r--
kill_at_sync_point.inc
1.3
KB
-rw-r--r--
kill_mysqld.inc
245
B
-rw-r--r--
kill_query.inc
1.73
KB
-rw-r--r--
kill_query_and_diff_master_sla...
1.05
KB
-rw-r--r--
kill_wait_for_executed_gtid_se...
1.22
KB
-rw-r--r--
libdaemon_example.ini
230
B
-rw-r--r--
linux.inc
99
B
-rw-r--r--
linux_sys_vars.inc
604
B
-rw-r--r--
list_files_with_size_and_hash....
764
B
-rw-r--r--
load_sysvars.inc
442
B
-rw-r--r--
loaddata_autocom.inc
911
B
-rw-r--r--
log_builtin_as_identified_by_p...
1.63
KB
-rw-r--r--
m_i_db_common.inc
468
B
-rw-r--r--
m_i_db_startsvr.inc
1.38
KB
-rw-r--r--
master-slave.inc
1.89
KB
-rw-r--r--
max_indexes.inc
93
B
-rw-r--r--
memcache_config.inc
2.17
KB
-rw-r--r--
min_null_cond.inc
1.56
KB
-rw-r--r--
mix1.inc
49.15
KB
-rw-r--r--
mix2.inc
76.8
KB
-rw-r--r--
mix2_ucs2.inc
11.56
KB
-rw-r--r--
mrr_innodb_tests.inc
1.55
KB
-rw-r--r--
mrr_tests.inc
16.96
KB
-rw-r--r--
mtr_check.sql
6.31
KB
-rw-r--r--
mtr_system_tables_data.sql
3.72
KB
-rw-r--r--
mtr_test_data_timezone.sql
10.57
KB
-rw-r--r--
mtr_warnings.sql
13.68
KB
-rw-r--r--
mysql_have_debug.inc
979
B
-rw-r--r--
mysql_upgrade_cleanup.inc
258
B
-rw-r--r--
mysql_upgrade_preparation.inc
777
B
-rw-r--r--
mysqlbinlog.inc
1.77
KB
-rw-r--r--
mysqlbinlog_have_debug.inc
989
B
-rw-r--r--
mysqlbinlog_raw_mode.inc
9.74
KB
-rw-r--r--
mysqld--help.inc
2.56
KB
-rw-r--r--
mysqldump.inc
2.02
KB
-rw-r--r--
mysqlpump_stmt.inc
11.64
KB
-rw-r--r--
mysqltest-x.inc
41
B
-rw-r--r--
ndb_backup.inc
405
B
-rw-r--r--
ndb_backup_id.inc
930
B
-rw-r--r--
ndb_backup_print.inc
459
B
-rw-r--r--
ndb_not_readonly.inc
925
B
-rw-r--r--
ndb_restore_master.inc
612
B
-rw-r--r--
ndb_restore_slave_eoption.inc
626
B
-rw-r--r--
ndb_setup_slave.inc
869
B
-rw-r--r--
ndb_wait_connected.inc
470
B
-rw-r--r--
no_checkpoint_end.inc
1.11
KB
-rw-r--r--
no_checkpoint_start.inc
202
B
-rw-r--r--
no_protocol.inc
304
B
-rw-r--r--
no_running_event_scheduler.inc
1.51
KB
-rw-r--r--
no_running_events.inc
1.72
KB
-rw-r--r--
no_valgrind_without_big.inc
355
B
-rw-r--r--
not_as_root.inc
45
B
-rw-r--r--
not_asan.inc
109
B
-rw-r--r--
not_binlog_format_row.inc
92
B
-rw-r--r--
not_blackhole.inc
173
B
-rw-r--r--
not_crashrep.inc
594
B
-rw-r--r--
not_embedded.inc
127
B
-rw-r--r--
not_group_replication_plugin.i...
444
B
-rw-r--r--
not_gtid_enabled.inc
349
B
-rw-r--r--
not_log_bin.inc
324
B
-rw-r--r--
not_lowercase1.inc
392
B
-rw-r--r--
not_master_info_table.inc
121
B
-rw-r--r--
not_min_protocol_tlsv12.inc
1.13
KB
-rw-r--r--
not_mts_slave_parallel_workers...
91
B
-rw-r--r--
not_ndb.inc
183
B
-rw-r--r--
not_ndb_default.inc
236
B
-rw-r--r--
not_ndb_is.inc
638
B
-rw-r--r--
not_openssl.inc
106
B
-rw-r--r--
not_parallel.inc
63
B
-rw-r--r--
not_relay_log_info_table.inc
127
B
-rw-r--r--
not_ssl.inc
98
B
-rw-r--r--
not_threadpool.inc
238
B
-rw-r--r--
not_valgrind.inc
118
B
-rw-r--r--
not_var_link.inc
498
B
-rw-r--r--
not_windows.inc
165
B
-rw-r--r--
not_windows_embedded.inc
305
B
-rw-r--r--
null_key.inc
9.7
KB
-rw-r--r--
one_thread_per_connection.inc
111
B
-rw-r--r--
only_binlog_transaction_depend...
160
B
-rw-r--r--
only_mts_slave_parallel_type_d...
136
B
-rw-r--r--
only_mts_slave_parallel_type_l...
146
B
-rw-r--r--
only_mts_slave_parallel_worker...
100
B
-rw-r--r--
only_with_option.inc
1.44
KB
-rw-r--r--
openssl_cert_generation_debug_...
481
B
-rw-r--r--
order_by.inc
76.76
KB
-rw-r--r--
parser-big.inc
1.74
KB
-rw-r--r--
parser_bug21114.inc
1.32
KB
-rw-r--r--
partition_date_range.inc
2.63
KB
-rw-r--r--
partition_default_functions.in...
3.11
KB
-rw-r--r--
plugin.defs
4.94
KB
-rw-r--r--
plugin_auth_check_non_default_...
131
B
-rw-r--r--
print_greedy_search_count.inc
571
B
-rw-r--r--
ps_conv.inc
47.96
KB
-rw-r--r--
ps_create.inc
1.48
KB
-rw-r--r--
ps_ddl_1.inc
468
B
-rw-r--r--
ps_modify.inc
10.3
KB
-rw-r--r--
ps_modify1.inc
3.16
KB
-rw-r--r--
ps_query.inc
24.3
KB
-rw-r--r--
ps_query_explain_select.inc
368
B
-rw-r--r--
ps_renew.inc
1.48
KB
-rw-r--r--
purge_first_log.inc
432
B
-rw-r--r--
query_cache.inc
5.74
KB
-rw-r--r--
query_cache_sql_prepare.inc
14.11
KB
-rw-r--r--
rand.inc
3.23
KB
-rw-r--r--
range.inc
85.45
KB
-rw-r--r--
read_file_to_var.inc
936
B
-rw-r--r--
read_many_rows.inc
4.29
KB
-rw-r--r--
read_only_bug28438114.inc
962
B
-rw-r--r--
relocate_binlogs.inc
3.36
KB
-rw-r--r--
remove_debug_point.inc
2.27
KB
-rw-r--r--
report-features.test
186
B
-rw-r--r--
restart_mysqld.inc
1.5
KB
-rw-r--r--
restart_slave_sql.inc
1002
B
-rw-r--r--
restore_default_binlog_format....
102
B
-rw-r--r--
restore_group_replication_auto...
1.82
KB
-rw-r--r--
restore_sql_mode_after_turn_of...
85
B
-rw-r--r--
restore_strict_mode.inc
84
B
-rw-r--r--
rowid_order.inc
3.08
KB
-rw-r--r--
rpl_change_topology.inc
8.41
KB
-rw-r--r--
rpl_change_topology_helper.inc
5.08
KB
-rw-r--r--
rpl_connect.inc
2.33
KB
-rw-r--r--
rpl_connection.inc
1.89
KB
-rw-r--r--
rpl_connection_master.inc
69
B
-rw-r--r--
rpl_connection_master1.inc
70
B
-rw-r--r--
rpl_connection_slave.inc
68
B
-rw-r--r--
rpl_connection_slave1.inc
69
B
-rw-r--r--
rpl_default_connections.inc
1.43
KB
-rw-r--r--
rpl_diff.inc
3.8
KB
-rw-r--r--
rpl_end.inc
5.27
KB
-rw-r--r--
rpl_events.inc
5.83
KB
-rw-r--r--
rpl_for_each_connection.inc
2.1
KB
-rw-r--r--
rpl_for_each_server.inc
1004
B
-rw-r--r--
rpl_generate_sync_chain.inc
5.73
KB
-rw-r--r--
rpl_get_end_of_relay_log.inc
2.17
KB
-rw-r--r--
rpl_group_replication_default_...
2.16
KB
-rw-r--r--
rpl_group_replication_plugin_i...
351
B
-rw-r--r--
rpl_hash_scan_assertion.inc
347
B
-rw-r--r--
rpl_init.inc
15.46
KB
-rw-r--r--
rpl_ip_mix.inc
772
B
-rw-r--r--
rpl_ip_mix2.inc
772
B
-rw-r--r--
rpl_ipv6.inc
661
B
-rw-r--r--
rpl_loaddata_charset.inc
781
B
-rw-r--r--
rpl_multi_engine.inc
729
B
-rw-r--r--
rpl_multi_engine3.inc
2.21
KB
-rw-r--r--
rpl_read_binlog_index_into_tab...
1.18
KB
-rw-r--r--
rpl_receive_event_count.inc
8.49
KB
-rw-r--r--
rpl_reconnect.inc
5.37
KB
-rw-r--r--
rpl_reset.inc
2.16
KB
-rw-r--r--
rpl_reset_master_helper.inc
54
B
-rw-r--r--
rpl_reset_slave_helper.inc
458
B
-rw-r--r--
rpl_restart_server.inc
1.44
KB
-rw-r--r--
rpl_row_img_general_loop.inc
1.18
KB
-rw-r--r--
rpl_row_img_parts_assertion.in...
3.02
KB
-rw-r--r--
rpl_row_img_parts_master_slave...
3.04
KB
-rw-r--r--
rpl_row_img_set.inc
1.51
KB
-rw-r--r--
rpl_set_gtid_mode.inc
5.48
KB
-rw-r--r--
rpl_skip_to_end_of_relay_log.i...
1.96
KB
-rw-r--r--
rpl_start_server.inc
4.68
KB
-rw-r--r--
rpl_start_slaves.inc
848
B
-rw-r--r--
rpl_stmt_seq.inc
7.63
KB
-rw-r--r--
rpl_stop_server.inc
2.26
KB
-rw-r--r--
rpl_stop_slaves.inc
787
B
-rw-r--r--
rpl_sync.inc
6.39
KB
-rw-r--r--
rpl_udf.inc
5.66
KB
-rw-r--r--
running_event_scheduler.inc
1.76
KB
-rw-r--r--
safe_set_to_maybe_ro_var.inc
707
B
-rw-r--r--
save_binlog_position.inc
731
B
-rw-r--r--
save_io_thread_pos.inc
1.66
KB
-rw-r--r--
save_master_pos.inc
1.83
KB
-rw-r--r--
save_semisync_yesno_tx.inc
466
B
-rw-r--r--
search_pattern.inc
1.07
KB
-rw-r--r--
search_pattern_in_file.inc
2.8
KB
-rw-r--r--
select.inc
191.02
KB
-rw-r--r--
server_option_test.pm
7.02
KB
-rw-r--r--
set_binlog_format_mixed.sql
1.2
KB
-rw-r--r--
set_binlog_format_row.sql
1.2
KB
-rw-r--r--
set_binlog_format_statement.sq...
1.21
KB
-rw-r--r--
set_gtid_next.inc
1.85
KB
-rw-r--r--
set_gtid_next_gtid_mode_agnost...
2.19
KB
-rw-r--r--
setup_fake_relay_log.inc
3.88
KB
-rw-r--r--
show_all_binlogs.inc
1.68
KB
-rw-r--r--
show_all_relay_logs.inc
2.5
KB
-rw-r--r--
show_binary_logs.inc
91
B
-rw-r--r--
show_binlog_events.inc
2.62
KB
-rw-r--r--
show_binlog_events_server_id.i...
1.36
KB
-rw-r--r--
show_delayed_slave_state.inc
1.47
KB
-rw-r--r--
show_events.inc
3.93
KB
-rw-r--r--
show_file_size.inc
480
B
-rw-r--r--
show_json_object.inc
1.53
KB
-rw-r--r--
show_master_logs.inc
106
B
-rw-r--r--
show_master_status.inc
155
B
-rw-r--r--
show_msg.inc
747
B
-rw-r--r--
show_msg80.inc
4.46
KB
-rw-r--r--
show_relaylog_events.inc
519
B
-rw-r--r--
show_rpl_debug_info.inc
5.75
KB
-rw-r--r--
show_slave_hosts.inc
194
B
-rw-r--r--
show_slave_status.inc
4.07
KB
-rw-r--r--
shutdown_mysqld.inc
750
B
-rw-r--r--
sp-vars.inc
3.34
KB
-rw-r--r--
start_group_replication.inc
3.29
KB
-rw-r--r--
start_group_replication_comman...
1.04
KB
-rw-r--r--
start_mysqld.inc
675
B
-rw-r--r--
start_slave.inc
1007
B
-rw-r--r--
start_slave_io.inc
1.03
KB
-rw-r--r--
start_slave_sql.inc
1.04
KB
-rw-r--r--
start_transaction_high_prio.in...
957
B
-rw-r--r--
stop_dump_threads.inc
1020
B
-rw-r--r--
stop_group_replication.inc
2.05
KB
-rw-r--r--
stop_mysqld.inc
1.1
KB
-rw-r--r--
stop_slave.inc
2.94
KB
-rw-r--r--
stop_slave_io.inc
1.17
KB
-rw-r--r--
stop_slave_sql.inc
1.08
KB
-rw-r--r--
store_group_replication_auto_i...
2.85
KB
-rw-r--r--
strict_autoinc.inc
626
B
-rw-r--r--
subquery.inc
202.57
KB
-rw-r--r--
subquery_mat.inc
46.47
KB
-rw-r--r--
subquery_sj.inc
196.86
KB
-rw-r--r--
subquery_sj_innodb.inc
4.15
KB
-rw-r--r--
sync_slave_io.inc
2.78
KB
-rw-r--r--
sync_slave_io_with_master.inc
1.57
KB
-rw-r--r--
sync_slave_sql.inc
4.88
KB
-rw-r--r--
sync_slave_sql_with_io.inc
969
B
-rw-r--r--
sync_slave_sql_with_master.inc
2.42
KB
-rw-r--r--
system_db_struct.inc
453
B
-rw-r--r--
test_fieldsize.inc
724
B
-rw-r--r--
test_outfile.inc
76
B
-rw-r--r--
testdb_only.inc
1.39
KB
-rw-r--r--
tpcb.inc
4.37
KB
-rw-r--r--
tpcb_disk_data.inc
4.76
KB
-rw-r--r--
trigger_17864349.inc
577
B
-rw-r--r--
truncate_file.inc
315
B
-rw-r--r--
turn_off_only_full_group_by.in...
200
B
-rw-r--r--
turn_off_strict_mode.inc
244
B
-rw-r--r--
uninstall_replication_observer...
377
B
-rw-r--r--
uninstall_semisync.inc
708
B
-rw-r--r--
uninstall_semisync_master.inc
508
B
-rw-r--r--
uninstall_semisync_slave.inc
395
B
-rw-r--r--
unsafe_binlog.inc
6.78
KB
-rw-r--r--
user_57_to_56.inc
406
B
-rw-r--r--
uses_vardir.inc
385
B
-rw-r--r--
varchar.inc
7.15
KB
-rw-r--r--
vardir_size_check.inc
547
B
-rw-r--r--
view_alias.inc
1.05
KB
-rw-r--r--
wait_condition.inc
1.54
KB
-rw-r--r--
wait_condition_or_abort.inc
780
B
-rw-r--r--
wait_condition_sp.inc
1.27
KB
-rw-r--r--
wait_for_binlog_event.inc
1.09
KB
-rw-r--r--
wait_for_file_closed.inc
503
B
-rw-r--r--
wait_for_mts_checkpoint.inc
399
B
-rw-r--r--
wait_for_ndb_committed_to_binl...
1.87
KB
-rw-r--r--
wait_for_query_to_fail.inc
455
B
-rw-r--r--
wait_for_query_to_succeed.inc
590
B
-rw-r--r--
wait_for_semisync_master_statu...
277
B
-rw-r--r--
wait_for_semisync_master_statu...
274
B
-rw-r--r--
wait_for_slave_io_error.inc
4.04
KB
-rw-r--r--
wait_for_slave_io_to_start.inc
1.34
KB
-rw-r--r--
wait_for_slave_io_to_stop.inc
1.04
KB
-rw-r--r--
wait_for_slave_param.inc
6.79
KB
-rw-r--r--
wait_for_slave_sql_error.inc
3.48
KB
-rw-r--r--
wait_for_slave_sql_error_and_s...
1.77
KB
-rw-r--r--
wait_for_slave_sql_to_start.in...
990
B
-rw-r--r--
wait_for_slave_sql_to_stop.inc
1.08
KB
-rw-r--r--
wait_for_slave_to_start.inc
779
B
-rw-r--r--
wait_for_slave_to_stop.inc
1.02
KB
-rw-r--r--
wait_for_slave_to_sync_with_ma...
578
B
-rw-r--r--
wait_for_status_var.inc
2.92
KB
-rw-r--r--
wait_for_wait_for_executed_gti...
614
B
-rw-r--r--
wait_innodb_all_purged.inc
1.34
KB
-rw-r--r--
wait_show_condition.inc
3.83
KB
-rw-r--r--
wait_time_until_connected_agai...
735
B
-rw-r--r--
wait_until_connected_again.inc
773
B
-rw-r--r--
wait_until_count_sessions.inc
4.12
KB
-rw-r--r--
wait_until_disconnected.inc
612
B
-rw-r--r--
wait_until_rows_count.inc
352
B
-rw-r--r--
weight_string.inc
1.28
KB
-rw-r--r--
weight_string_81309D30.inc
2.42
KB
-rw-r--r--
weight_string_8140.inc
2.07
KB
-rw-r--r--
weight_string_8EA1.inc
2.07
KB
-rw-r--r--
weight_string_8FA2C3.inc
2.2
KB
-rw-r--r--
weight_string_A1A1.inc
2.07
KB
-rw-r--r--
weight_string_A2A9.inc
2.13
KB
-rw-r--r--
weight_string_chde.inc
3.26
KB
-rw-r--r--
weight_string_euro.inc
1.81
KB
-rw-r--r--
weight_string_l1.inc
497
B
-rw-r--r--
weight_string_l12.inc
199
B
-rw-r--r--
weight_string_l14.inc
1.28
KB
-rw-r--r--
weight_string_l2.inc
312
B
-rw-r--r--
weight_string_l3.inc
497
B
-rw-r--r--
weight_string_l4.inc
497
B
-rw-r--r--
windows.inc
118
B
-rw-r--r--
windows_sys_vars.inc
600
B
-rw-r--r--
wl6219-engine.test
3.63
KB
-rw-r--r--
wl6301.inc
2.89
KB
-rw-r--r--
world.inc
162.21
KB
-rw-r--r--
world_schema.inc
731
B
-rw-r--r--
world_schema1.inc
549
B
-rw-r--r--
write_result_to_file.inc
3.15
KB
-rw-r--r--
write_var_to_file.inc
1.77
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : group_by_fd.inc
--source include/have_optimizer_trace.inc let $DEFAULT_TRACE_MEM_SIZE=1048576; # 1MB eval set optimizer_trace_max_mem_size=$DEFAULT_TRACE_MEM_SIZE; set end_markers_in_json=on; set optimizer_trace="enabled=on"; SET @old_sql_mode = @@sql_mode; SET @@sql_mode='ONLY_FULL_GROUP_BY'; --echo # --echo # Bug#16021396 ONLY_FULL_GROUP_BY REJECTS VALID QUERY USING VIEW --echo # create table t1(a int, b int, c int) engine=InnoDB; let $count=2; while($count) { if ($count == 2) { let $viewtype=merge; } if ($count == 1) { let $viewtype=temptable; } dec $count; eval create algorithm=$viewtype view v1 as select t1.a*2 as a, t1.b*2 as b, t1.c*2 as c from t1; show create view v1; select sin(b) as z from t1 group by sin(b); select sin(b) as z from v1 group by sin(b); select sin(b) as z from t1 group by b; select sin(b) as z from v1 group by b; select sin(b) as z from v1 group by z; drop view v1; } drop table t1; --echo # From testcase of Bug#16903135: CREATE TABLE group_by_test2 ( id int unsigned primary key, cat int unsigned not null, name varchar(10), num int unsigned ); INSERT INTO group_by_test2 (id,cat,name,num) VALUES (1,10,'foo',2), (2,11,'foo',1), (3,22,'bar',3), (4,23,'bar',7), (5,34,'test',7); let $query= SELECT cat, name, SUM(num) FROM group_by_test2 GROUP BY cat; --error ER_WRONG_FIELD_WITH_GROUP eval $query; ALTER TABLE group_by_test2 ADD UNIQUE INDEX (cat); eval $query; --error ER_WRONG_FIELD_WITH_GROUP eval $query WITH ROLLUP; --echo # Expressions of group columns are ok: SELECT cat, length(cat), SUM(num) FROM group_by_test2 GROUP BY cat WITH ROLLUP; DROP TABLE group_by_test2; --echo # Test from Bug #18993257 SELECT AGGR + NON-AGGR FROM JOIN WITH VIEW IS NOT REJECTED BY ONLY_FULL_GROUP_BY CREATE TABLE t1 ( col_int_key INT, col_varchar_key VARCHAR(1) ); CREATE TABLE t2 ( pk INTEGER, col_int_key INTEGER ); CREATE VIEW view_b AS SELECT * FROM t2; --error ER_MIX_OF_GROUP_FUNC_AND_FIELDS SELECT MIN( alias2.col_int_key ), alias2.col_int_key FROM t1 AS alias1, t2 AS alias2 WHERE alias1.col_int_key IS NULL; --echo # Same with view: --error ER_MIX_OF_GROUP_FUNC_AND_FIELDS SELECT MIN( alias2.col_int_key ), alias2.col_int_key FROM t1 AS alias1, view_b AS alias2 WHERE alias1.col_int_key IS NULL; DROP TABLE t1, t2; DROP VIEW view_b; --echo # --echo # WL#2489; Recognizing some functional dependencies --echo # --source include/show_json_object.inc let $show_trace= SELECT show_json_object('"functional_dependencies_of_GROUP_columns": {', TRACE) FROM INFORMATION_SCHEMA.OPTIMIZER_TRACE; create table t1( a int, b int not null, c int not null, d int, unique key(b,c), unique key(b,d) ); --error ER_WRONG_FIELD_WITH_GROUP select sin(a) as z from t1 group by b; --error ER_WRONG_FIELD_WITH_GROUP select sin(a) as z from t1 group by d,b; --echo # {b,c} UNIQUE NOT NULL => {c,b}->a select sin(a) as z from t1 group by c,b; select sin(a+b*c) as z from t1 group by c,b; --echo # In PS mode, we see nothing below, because only_full_group_by --echo # checks are done at PREPARE, whereas trace below is from EXECUTE. eval $show_trace; --echo # With outer references: --error ER_WRONG_FIELD_WITH_GROUP select (select sin(a)) as z from t1 group by d,b; select (select sin(a)) as z from t1 group by c,b; --echo # If key columns are in function, functional dependency disappears --error ER_WRONG_FIELD_WITH_GROUP select sin(a) as z from t1 group by c*2,b*2; --echo # FDs are recognized, like in SQL standard: --echo # b=2 => c->{b,c} => c->a as (b,c) is unique not null. select sin(a) as z from t1 where b=2 group by c; eval $show_trace; --echo # t2.a=t1.a => {t1.b,t1.c}->t2.a select sin(t2.a) as z from t1, t1 as t2 where t2.a=t1.a group by t1.b,t1.c; eval $show_trace; --echo # t2.b=t1.b and t2.c=t1.c => {t1.b,t1.c}->{all cols of t2} select sin(t2.a) as z from t1, t1 as t2 where t2.b=t1.b and t2.c=t1.c group by t1.b,t1.c; eval $show_trace; --echo # t2.b=t1.b and t2.c=t1.c => {t1.b,t1.c}->{all cols of t2} --echo # Moreover, {t1.b,t1.c}->{t1.d}. --echo # So t3.b=t2.b and t3.c=t1.d => {t1.b,t1.c}->{all cols of t3}. select t3.a from t1, t1 as t2, t1 as t3 where t3.b=t2.b and t3.c=t1.d and t2.b=t1.b and t2.c=t1.c group by t1.b,t1.c; eval $show_trace; --echo # 3 tables: --echo # {t1.b,t1.c}->{t1.*}->{t2.b,t2.c}->{t2.*}->{t3.pk}->{t3.b} create table t3(pk int primary key, b int); select t3.b from t1,t1 as t2,t3 where t3.pk=t2.d and t2.b=t1.b and t2.c=t1.a group by t1.b,t1.c; drop table t3; --echo # With subq select (select t1.b from t1 where t2.b=t1.b group by t1.a) from t1 as t2; --echo # Outer join. create table t2 like t1; delete from t1; insert into t1 (a,b) values(1,10),(2,20); insert into t2 (a,b) values(1,-10); --echo # In result, t2.a is NULL for both rows, values of t1.a are 1 and 2 select t1.a,t2.a from t1 left join t2 on t2.a=t1.a and t2.b=t1.b; --echo # So this query would choose one arbitrary value of t1.a - wrong: --error ER_WRONG_FIELD_WITH_GROUP select t1.a from t1 left join t2 on t2.a=t1.a and t2.b=t1.b group by t2.a; --echo # Also problem for FD with constant: select t1.a,t2.a from t1 left join t2 on 42=t1.a and t2.b=t1.b; --error ER_WRONG_FIELD_WITH_GROUP select t1.a from t1 left join t2 on 42=t1.a and t2.b=t1.b group by t2.a; --error ER_WRONG_FIELD_WITH_GROUP select t1.a from t1 left join t2 on t2.b=t1.a group by t2.b; --error ER_WRONG_FIELD_WITH_GROUP select t1.a from t1 left join t2 on 42=t1.a group by t2.a; --error ER_WRONG_FIELD_WITH_GROUP select t1.c from t1 left join t2 on t1.a=t1.c group by t1.a; --error ER_WRONG_FIELD_WITH_GROUP select t1.b from t1 left join t2 on t1.c=t1.b and t1.a=t1.c group by t1.a; select t1.a,t2.c from t1 left join t2 on t1.a=t2.c and cos(t2.c+t2.b)>0.5 and sin(t1.a+t2.d)<0.9 group by t1.a; --echo # with keys: select t1.a,t2.d from t1 left join t2 on t1.a=t2.c and t1.d=t2.b and cos(t2.c+t2.b)>0.5 and sin(t1.a+t2.d)<0.9 group by t1.a,t1.d; --echo # with non-determinism: --error ER_WRONG_FIELD_WITH_GROUP select t1.a,t2.c from t1 left join t2 on t1.a=t2.c and cos(t2.c+rand())>0.5 group by t1.a; select t1.a, ANY_VALUE(t2.c) from t1 left join t2 on t1.a=t2.c and cos(t2.c+rand())>0.5 group by t1.a; --echo # with parameter: prepare s from 'select t1.a,t2.c from t1 left join t2 on t1.a=t2.c and cos(t2.c+ ? )>0.5 group by t1.a'; execute s using @dummy; --echo # No OR --error ER_WRONG_FIELD_WITH_GROUP select t1.a,t2.c from t1 left join t2 on t1.a=t2.c and cos(t2.c+t2.b)>0.5 OR sin(t2.d)<0.9 group by t1.a; --echo # With subq --error ER_WRONG_FIELD_WITH_GROUP select t2.b from t1 left join t1 as t2 on t1.a=t2.b and t1.b group by t1.a; --error ER_WRONG_FIELD_WITH_GROUP select t2.b from t1 left join t1 as t2 on t1.a=t2.b and (select t1.b) group by t1.a; --echo # Test ANY_VALUE: select ANY_VALUE(t1.b) from t1 left join t2 on t1.c=t1.b and t1.a=t1.c group by t1.a; --error ER_WRONG_FIELD_WITH_GROUP select 3+(5*t1.b) from t1 left join t2 on t1.c=t1.b and t1.a=t1.c group by t1.a; select 3+(5*ANY_VALUE(t1.b)) from t1 left join t2 on t1.c=t1.b and t1.a=t1.c group by t1.a; delete from t1; insert into t1 (a,b) values(1,10),(1,20),(2,30),(2,40); --error ER_MIX_OF_GROUP_FUNC_AND_FIELDS select a, sum(b) from t1; select any_value(a), sum(b) from t1; --echo # different order of input rows, different "any_value": select any_value(a), sum(b) from (select * from t1 order by a desc) as d; --error ER_WRONG_FIELD_WITH_GROUP select a,b,sum(c) from t1 group by a; select a,any_value(b),sum(c) from t1 group by a; select a,any_value(b),sum(c) from (select * from t1 order by a desc, b desc) as d group by a; --echo # With view. let $count=3; while($count) { set @optimizer_switch_saved=@@optimizer_switch; let $source_query=select t1.a*2 as a, t1.b as b, t1.c as c, t1.d as d, t1.a as e from t1; if ($count == 3) { --echo # Merged view eval create algorithm=merge view v1 as $source_query; show create view v1; let $source=v1; let $source_no_alias=v1; } if ($count == 2) { --echo # Materialized view eval create algorithm=temptable view v1 as $source_query; show create view v1; let $source=v1; let $source_no_alias=v1; } if ($count == 1) { --echo # Materialized derived table set optimizer_switch='derived_merge=off'; let $source=($source_query) as v1; let $source_no_alias=($source_query); } --error ER_WRONG_FIELD_WITH_GROUP eval select sin(a) as z from $source group by b; --error ER_WRONG_FIELD_WITH_GROUP eval select sin(a) as z from $source group by d,b; eval select sin(a) as z from $source group by c,b; --error ER_WRONG_FIELD_WITH_GROUP eval select (select sin(a)) as z from $source group by d,b; eval select (select sin(a)) as z from $source group by c,b; --error ER_WRONG_FIELD_WITH_GROUP eval select sin(a) as z from t1 group by c*2,b*2; eval select sin(a+b*c) as z from $source group by c,b; eval $show_trace; eval select sin(a) as z from $source where b=2 group by c; --echo # {v1.b,v1.c}->v1.a->t2.a eval select sin(t2.a) as z from $source, $source_no_alias as t2 where t2.a=v1.a group by v1.b,v1.c; eval $show_trace; eval select sin(t2.a) as z from $source, $source_no_alias as t2 where t2.b=v1.b and t2.c=v1.c group by v1.b,v1.c; --echo # With materialized view we get more dependencies than needed, due to implementation. eval select t3.a from $source, $source_no_alias as t2, $source_no_alias as t3 where t3.b=t2.b and t3.c=v1.d and t2.b=v1.b and t2.c=v1.c group by v1.b,v1.c; eval $show_trace; --echo # If we simply went to real_item(), we would have WHERE 2*a=b, or --echo # GROUP BY 2*t1.a, so we would not find FDs. The original item --echo # (direct_view_ref here) must also be considered! eval select a from $source where a=b group by b; eval $show_trace; eval select b from $source where a=b group by a; eval $show_trace; eval select v1.c from $source where v1.c=v1.a group by v1.a; eval $show_trace; eval select v1.a from $source group by v1.e; eval $show_trace; eval select v1.c from $source where v1.c=v1.a group by v1.e; eval $show_trace; --echo # View appears only in WHERE eval select t2.d from $source, t1 as t2 where v1.a=t2.d and v1.e=t2.a group by t2.a; eval $show_trace; drop view if exists v1; --echo # FD due to view's WHERE: let $source_query=select t1.a*2 as a, t1.b as b from t1; if ($count == 3) { eval create algorithm=merge view v1 as $source_query; } if ($count == 2) { eval create algorithm=temptable view v1 as $source_query; } if ($count == 1) { let $source=($source_query) as v1; let $source_no_alias=($source_query); } --error ER_WRONG_FIELD_WITH_GROUP eval select a from $source group by b; drop view if exists v1; let $source_query=select t1.a*2 as a, t1.b as b from t1 where t1.a=t1.b; if ($count == 3) { --echo # Merged view eval create algorithm=merge view v1 as $source_query; } if ($count == 2) { --echo # Materialized view eval create algorithm=temptable view v1 as $source_query; } if ($count == 1) { --echo # Derived table let $source=($source_query) as v1; let $source_no_alias=($source_query); } eval select a from $source group by b; eval $show_trace; drop view if exists v1; --echo # Aggregates in view let $source_query=select sum(t1.a) as a, sum(t1.b) as b from t1; if ($count == 3) { --echo # Aggregates => skipping Merged view } if ($count == 2) { --echo # Materialized view eval create algorithm=temptable view v1 as $source_query; } if ($count == 1) { --echo # Derived table let $source=($source_query) as v1; let $source_no_alias=($source_query); } if ($count <= 2) { eval select a from $source group by b; eval $show_trace; } drop view if exists v1; --echo # Aggregates + GROUP BY in view --echo # We group by b*5, to show that it works with GROUP expressions, not only fields. let $source_query=select a, b*5 as b, sum(t1.c) as c, sum(t1.d) as d from t1 group by a,b*5; if ($count == 3) { --echo # Aggregates => skipping Merged view } if ($count == 2) { --echo # Materialized view eval create algorithm=temptable view v1 as $source_query; } if ($count == 1) { --echo # Derived table let $source=($source_query) as v1; let $source_no_alias=($source_query); } if ($count <= 2) { --error ER_WRONG_FIELD_WITH_GROUP eval select a from $source group by b; --error ER_WRONG_FIELD_WITH_GROUP eval select c from $source group by b; --error ER_WRONG_FIELD_WITH_GROUP eval select c from $source group by b,d; --error ER_WRONG_FIELD_WITH_GROUP eval select a,c from $source group by a; eval select d,c from $source group by b,a; eval $show_trace; } drop view if exists v1; dec $count; set optimizer_switch=@optimizer_switch_saved; } --echo # Derived table in merged view create algorithm=temptable view v2 as select a as a, 2*a as b from t1; create algorithm=merge view v1 as select v2.a as a, 3*v2.b as b from v2; select v1.b from v1 group by v1.a; eval $show_trace; select t2.a from t1 as t2, v1 where t2.a=v1.b group by v1.a; eval $show_trace; --echo # FDs in a view are those of the underlying query expression. --echo # FDs in a query expression: expressions in the SELECT list must be --echo # deterministic. drop view v1; create algorithm=merge view v1 as select v2.a as a, rand()*v2.b as b from v2; --error ER_WRONG_FIELD_WITH_GROUP select v1.b from v1 group by v1.a; drop view v1; create algorithm=temptable view v1 as select v2.a as a, rand()*v2.b as b from v2; --error ER_WRONG_FIELD_WITH_GROUP select v1.b from v1 group by v1.a; drop view v1,v2; --echo # Item_direct_view_ref pointing to Item_direct_view_ref pointing to --echo # Item_field (a rare case!) create algorithm=merge view v2 as select 2*a as a, 2*b as b from t1; create algorithm=merge view v1 as select a, 3*b as b from v2 where a=b; select 1 from (select a,b+0 from v1 group by a) as d; drop view v1,v2; --echo # Some fun cases with aggregates in derived table. --echo # Inner query is valid: t1.a -> t1.b (equality in WHERE). Outer query: --echo # d.b -> t1.b (underlying column of d.b) -> t1.a (equality) --echo # -> sum(1) (because t1.a is all group columns so determines --echo # sum()) -> d.s (because sum() is underlying of d.s) select d.s from (select b, sum(1) as s from t1 where a=b group by a) as d group by d.b; alter table t1 add column pk int primary key auto_increment; --echo # Inner query: t1.pk -> t1.* (pk). Outer query: --echo # d.b,d.c -> t1.b,t1.c (their underlying columns) -> t1.pk (because --echo # t1.b,t1.c is unique) -> sum(1) (because t1.pk is all group columns so --echo # determines sum()) -> d.s (because sum() is underlying of d.s) select d.s from (select b, c, sum(d) as s from t1 group by pk) as d group by d.b,d.c; --echo # Outer query: --echo # d.c -> t1.b*3 (underlying column of d.c) -> sum(a) (because t1.b*3 --echo # is all group expressions) -> d.s select d.s from (select b*3 as c, sum(a) as s from t1 group by b*3) as d group by d.c; drop table t1,t2; --echo # Testcase from Reviewers create table customer1(pk int primary key, a int); create table customer2(pk int primary key, b int); CREATE algorithm=merge VIEW customer as SELECT pk,a,b FROM customer1 JOIN customer2 USING (pk); let $query=select customer.pk, customer.b from customer group by customer.pk; eval $query; --echo # View is merged. Show FDs. Note that in --ps-protocol, the trace --echo # is that of execution, so contains no group-by checks. eval $show_trace; drop view customer; CREATE algorithm=temptable VIEW customer as SELECT pk,a,b FROM customer1 JOIN customer2 USING (pk); eval $query; eval $show_trace; --echo # Benefit from outer-join-to-inner conversion. insert into customer1 values(0,10),(1,20); insert into customer2 values(0,10),(1,20); --echo # 1) no conversion, no FD from customer2.b to customer1.a. --error ER_WRONG_FIELD_WITH_GROUP explain select customer1.a, count(*) from customer1 left join customer2 on customer1.a=customer2.b where customer1.pk in (7,9) group by customer2.b; --echo # 2) null-complemented row can't pass WHERE => conversion --echo # => FD from customer2.b to customer1.a. explain select customer1.a, count(*) from customer1 left join customer2 on customer1.a=customer2.b where customer2.pk in (7,9) group by customer2.b; drop table customer1,customer2; drop view customer; --echo # FDs of JOIN...USING and NATURAL JOIN create table t1(pk int primary key, a int); create table t2(pk int primary key, b int); select t1.pk, t1.a from t1 join t2 on t1.pk=t2.pk group by t1.pk; select t1.pk, t1.a from t1 join t2 using(pk) group by t1.pk; select t1.pk, t1.a from t1 natural join t2 group by t1.pk; select t1.pk, t1.a from t1 left join t2 using(pk) group by t1.pk; select t1.pk, t1.a from t1 natural left join t2 group by t1.pk; select t1.pk, t2.b from t1 join t2 on t1.pk=t2.pk group by t1.pk; select t1.pk, t2.b from t1 join t2 using(pk) group by t1.pk; select t1.pk, t2.b from t1 natural join t2 group by t1.pk; select t1.pk, t2.b from t1 left join t2 using(pk) group by t1.pk; eval $show_trace; select t1.pk, t2.b from t1 natural left join t2 group by t1.pk; --echo # Equivalent queries, with RIGHT JOIN select t1.pk, t2.b from t2 right join t1 using(pk) group by t1.pk; select t1.pk, t2.b from t2 natural right join t1 group by t1.pk; --error ER_WRONG_FIELD_WITH_GROUP select t1.pk, t2.b from t1 left join t2 on t1.pk>t2.pk group by t1.pk; --echo # Even in --ps-protocol we see the group-by checks in trace because --echo # there has been no execution (due to error). eval $show_trace; --error ER_WRONG_FIELD_WITH_GROUP select t1.pk, t2.b from t2 right join t1 on t1.pk>t2.pk group by t1.pk; drop table t1,t2; --echo # Cases where FDs from weak side do not propagate create table t1(a int, b int); insert into t1 values(null,0),(null,1); let $query= select d.a,d.c from t1 left join (select a, coalesce(a,3) as c from t1) as d on t1.b>0; eval $query; --echo # Now group it by d.a: --error ER_WRONG_FIELD_WITH_GROUP eval $query group by d.a; eval $show_trace; let $query= select d.a,d.c from t1 left join (select a, count(a) as c from t1 group by a) as d on t1.b+d.c>0; eval $query; --echo # Now group it by d.a: --error ER_WRONG_FIELD_WITH_GROUP eval $query group by d.a; eval $show_trace; let $query= select d.m,d.c from t1 left join (select max(a) as m, count(a) as c from t1) as d on t1.b+d.c>0; eval $query; --echo # Now group it by d.m: --error ER_WRONG_FIELD_WITH_GROUP eval $query group by d.m; eval $show_trace; --echo # Now group it by d.c which is non-nullable: eval $query group by d.c; eval $show_trace; drop table t1; create table t1(pk int primary key, a int); --echo # Not valid per the standard, because: --echo # 1) In t3, t3.pk->t3.a holds. --echo # 2) In R1 the result of "(t2 left join t3 on 1)", t3.pk->t3.a --echo # holds, by application of: there is a functional dependency in the --echo # weak side t3, and t3.pk is not nullable in t3. --echo # 3) In R2 the result of "t1 left join (t2 left join t3 on 1) on 1", --echo # t3.pk->t3.a doesn't hold anymore, because: it's a dependency in the --echo # weak side (weak side is R1), and t3.pk is nullable _when --echo # seen as a column of R1_ (in R1 t3.pk can be NULL, if the row of t3 --echo # is actually a null-complemented one). --echo # But for us it is valid, because we have refined the logic: the --echo # pk-based FD satisfies the requirement that a NULL value of t3.pk --echo # implies a NULL value of t3.a (indeed, the NULL value of t3.pk can --echo # only come from null-complementing of the row of t3 in R1, in which --echo # case t3.a is also NULL). select t3.a from t1 left join (t1 as t2 left join t1 as t3 on 1) on 1 group by t3.pk; eval $show_trace; --echo # Outer reference - why we use resolved_used_tables(): select (select t1.a from t1 as t2 limit 1) from t1 group by pk; --echo # We don't build the FD list if not needed select t1.a*3 from t1 group by t1.a; eval $show_trace; drop table t1; --echo # Tricky cases with "ON col=literal" propagating. create table t1(a int, b int); insert into t1 values(); insert into t1 values(10,11); create table t2(c int, d int); insert into t2 values(2,3); let $query= select t4.d from t1 left join (t2 as t3 join t2 as t4 on t4.d=3) on t1.a=10; eval $query; --echo # Equivalent to T1 LJ (T2, T3) ON T4.D=3 AND T1.A=10 --echo # (this is what simplify_joins() does). --echo # For T4.D=3, DJS is {T1.A} which is not group column. --error ER_WRONG_FIELD_WITH_GROUP eval $query group by ""; let $query= select t4.d from t1 left join (t2 as t3 left join t2 as t4 on t4.d=3) on t1.a=10; eval $query; --echo # For T4.D=3, DJS={}, not NULL-friendly, and embedding is on weak side --echo # so FD cannot propagate. --error ER_WRONG_FIELD_WITH_GROUP eval $query group by ""; let $query= select t4.d from t1 join (t2 as t3 left join t2 as t4 on t4.d=3) on t1.a=10; eval $query; --echo # For T4.D=3, DJS={}, not NULL-friendly, but embedding is on weak side --echo # so FD can propagate. eval $query group by ""; --echo # With a view create view v1 as select a as a, 2*a as b, coalesce(a,3) as c from t1; let $query= select v1.b from t1 left join v1 on 1; eval $query; --echo # If v1.a is NULL then v1.b is NULL: a->b is NULL-friendly eval $query group by v1.a; let $query= select v1.c from t1 left join v1 on 1; eval $query; --echo # If v1.a is NULL then v1.c may not be NULL: a->c is not NULL-friendly --error ER_WRONG_FIELD_WITH_GROUP eval $query group by v1.a; drop view v1; --echo # Constant view item create view v1 as select a as a, 2 as b from t1; let $query= select t1.a, v1.b from t1 left join v1 on t1.a is not null; --echo # Because of BUG#17023060, the result is wrong, should be --echo # [10,2 ; 10,2 ; NULL,NULL], which would show that {}->{v1.b} does not --echo # hold in the result, even though v1.b is constant (=2) in v1. eval $query; --echo # We correctly reject this: --error ER_WRONG_FIELD_WITH_GROUP eval $query group by v1.a; drop view v1; drop table t1,t2; create table emp(empno int, ename char(1), deptno int); create table dept(deptno int primary key, dname char(1)); let $view_rest= VIEW empdept AS SELECT emp.empno, emp.ename, dept.deptno, dept.dname FROM emp LEFT OUTER JOIN dept ON (emp.deptno = dept.deptno); let $query= SELECT dname, COUNT(*) FROM empdept GROUP BY deptno; eval CREATE algorithm=merge $view_rest; eval EXPLAIN $query; --echo # There is pk-based FD dept.Depno->dept.dname in dept --echo # and it propagates in the view-which-became-nest because it is --echo # NULL-friendly. eval $query; drop view empdept; eval CREATE algorithm=temptable $view_rest; eval EXPLAIN $query; --echo # There is pk-based FD dept.Depno->dept.dname in dept --echo # and it propagates in the materialized view because it is --echo # NULL-friendly, and then in the top query because the view is not in --echo # the weak side of an outer join. eval $query; --echo # More tests, for code coverage. --echo # UNION in derived table --error ER_WRONG_FIELD_WITH_GROUP select emp.ename from (select 1 as empno union select 2) deriv, emp where emp.empno=deriv.empno group by emp.empno; drop view empdept; --echo # Make the key-searching loop meet view columns which don't wrap a --echo # column (CONCAT). CREATE VIEW empdept AS SELECT emp.empno, emp.ename, dept.deptno, concat("",dept.dname) as dname FROM emp LEFT JOIN dept ON (emp.deptno = dept.deptno); --error ER_WRONG_FIELD_WITH_GROUP SELECT ename, COUNT(*) FROM empdept WHERE empno=dname and empno=deptno GROUP BY empno; drop table emp,dept; drop view empdept; --echo # --echo # Bug#19636980 ASSERT `TABLE->OUTER_JOIN' FAILED IN GROUP_CHECK::FIND_FD_IN_JOINED_TABLE --echo # CREATE TABLE t1 ( c1 INT, c2 INT, c4 DATE, c5 VARCHAR(1) ); CREATE TABLE t2 ( c1 INT, c2 INT, c3 INT, c5 VARCHAR(1) ); --echo # alias1.c5 is not FD, the error is detected at SELECT time CREATE VIEW v1 AS SELECT alias1.c4 AS field1 FROM t1 AS alias1 INNER JOIN t1 AS alias2 ON 1 GROUP BY field1 ORDER BY alias1.c5; --error ER_WRONG_FIELD_WITH_GROUP SELECT * FROM v1; DROP VIEW v1; --echo # alias1.c5 is FD (WHERE contains: alias1.c5='d') CREATE VIEW v1 AS SELECT alias1.c4 AS field1, alias1.c4 AS field2 FROM t1 AS alias1 INNER JOIN t1 AS alias2 ON (alias2.c1 = alias1.c2) WHERE ( NOT EXISTS ( SELECT SQ1_alias1.c5 AS SQ1_field1 FROM t2 AS SQ1_alias1 WHERE SQ1_alias1.c3 < alias1.c1 )) AND (alias1.c5 = alias1.c5 AND alias1.c5 = 'd' ) GROUP BY field1, field2 ORDER BY alias1.c5, field1, field2 ; SELECT * FROM v1; DROP VIEW v1; DROP TABLE t1,t2; --echo # --echo # Bug#19636409 ASSERT `(MAP_OF_NEW_EQ_FDS...` IN GROUP_CHECK::IS_FD_ON_SOURCE ON SELECT --echo # CREATE TABLE t1 ( pk int NOT NULL, c1 datetime, c2 varchar(1), c3 date, c4 date, c5 varchar(1), PRIMARY KEY (pk) ); CREATE VIEW v1 AS SELECT c3 AS subfield11, pk AS subfield12, c2 AS subfield13 FROM t1 GROUP BY subfield11, subfield12 ; --echo # This query is valid. Indeed: field3 i.e. t1.c2 is part of GROUP BY, --echo # so, in a group: --echo # - all rows have the same value of t1.c2, noted val_c2, --echo # - so all rows, which necessarily match WHERE, matched with a row of --echo # v1 having subfield11=val_c2 and subfield12=val_c2 (due to IN --echo # predicate), --echo # - thus both grouping columns of v1's query expression are constant --echo # (to val_c2) --echo # - thus v1.subfield13 is constant too (grouping columns determine the --echo # SELECT list) --echo # - so, due to IN, this determines the value of t1.pk (t1 is the top --echo # query's table). --echo # - so t1.pk is constant, so all columns of t1 are constant. --echo # Which proves that it makes sense to search FDs in semijoin --echo # equalities. --echo # In other words: a semijoin is like a join except that it eliminates --echo # duplicates, but duplicates are irrelevant to the decision whether a --echo # column is functionally dependent on a set of columns. SELECT c5 AS field1, c4 AS field2, c2 AS field3, c1 AS field4 FROM t1 WHERE ( c2, c2, pk ) IN ( SELECT * FROM v1 ) GROUP BY field1, field3, field3; --echo # --echo # Bug#19687724 FUNCTIONAL DEPENDENCIES ARE NOT RECOGNIZED IN EQUALITIES BETWEEN ROWS --echo # --echo # Inspired by query above, but with a join: SELECT c5 AS field1, c4 AS field2, c2 AS field3, c1 AS field4 FROM t1, v1 WHERE ( c2, c2, pk ) = (subfield11, subfield12, subfield13) GROUP BY field1, field3, field3; --echo # With constants: SELECT c5 AS field1, c4 AS field2, c2 AS field3, c1 AS field4 FROM t1 WHERE ( c2, c2, pk ) = (1, 2, 3) GROUP BY field1, field3, field3; DROP TABLE t1; CREATE TABLE t1(a INT, b INT, c INT, d INT); SELECT a,b,c,d FROM t1 WHERE a=c AND b=d GROUP by a,b; SELECT a,b,c,d FROM t1 WHERE (a,b)=(c,d) GROUP BY a,b; --error ER_WRONG_FIELD_WITH_GROUP SELECT a,b,c,d FROM t1 WHERE (a,b)=(c,d+1) GROUP BY a,b; DROP TABLE t1; DROP VIEW v1; --echo # --echo # Bug #20031708 ASSERT ON GROUP_CHECK::IS_FD_ON_SOURCE --echo # CREATE TABLE t1 ( col_varchar_10_utf8 VARCHAR(10) CHARACTER SET utf8, col_int_key INT, pk INT PRIMARY KEY ); CREATE TABLE t2 ( col_varchar_10_utf8 VARCHAR(10) CHARACTER SET utf8 DEFAULT NULL, col_int_key INT DEFAULT NULL, pk INT PRIMARY KEY ); CREATE VIEW v2 AS SELECT * FROM t2; --echo # The reporter's testcase: let $query= SELECT COUNT(*), t1.col_int_key FROM v2 LEFT OUTER JOIN t1 ON v2.col_varchar_10_utf8 = t1.col_varchar_10_utf8 WHERE v2.pk = 4; --error ER_MIX_OF_GROUP_FUNC_AND_FIELDS eval $query; DROP VIEW v2; --echo # A variant: one column is an expression: CREATE VIEW v2 AS SELECT CONCAT(col_varchar_10_utf8,' ') AS col_varchar_10_utf8, col_int_key, pk FROM t2; --error ER_MIX_OF_GROUP_FUNC_AND_FIELDS eval $query; DROP VIEW v2; --echo # Query used in the commit comment: view column involving two tables CREATE VIEW v2 AS SELECT t1.pk, t2.col_int_key+1 as c, t1.pk+t2.col_int_key as p FROM t1, t2; --echo # FDs will be discovered in this order: {}->v2.pk, v2.pk->v2.c, --echo # v2.c->v2.p SELECT COUNT(*), v2.p FROM v2 WHERE v2.c=v2.p and v2.c=v2.pk AND v2.pk = 4; DROP VIEW v2; --echo # If in the query specification defining a view, a base table's pk is --echo # determined, --echo # and the view's column is a function of this base table's columns, --echo # then the view's column is also determined. --echo # So, in this view's result, {v2.pk}->{v2.coa}: CREATE ALGORITHM=MERGE VIEW v2 AS SELECT t2.pk, COALESCE(t2.pk, 3) AS coa FROM t1 LEFT JOIN t2 ON 0; --echo # And thus {pk}->{coa} holds in the result of this query using the view; --echo # if there is NULL-complementing in the LEFT JOIN below then (pk,coa) --echo # will be (NULL,NULL) and if there is not it will be (non-NULL,3): --echo # v2.coa is determined by v2.pk. The key fact is that v2.pk is not --echo # NULLable so this is a NFFD. SELECT v2.pk, v2.coa FROM t1 LEFT JOIN v2 AS v2 ON 0 GROUP BY v2.pk; DROP VIEW v2; DROP TABLE t1,t2; --echo # --echo # Bug#21807579 FUNCTIONAL DEPENDENCIES ARE NOT RECOGNIZED IN GENERATED COLUMNS --echo # CREATE TABLE t ( a INT, c INT GENERATED ALWAYS AS (a+2), d INT GENERATED ALWAYS AS (c+2) ); --echo # {a}->{c}, {c}->{d} and {a}->{d} hold. SELECT c FROM t GROUP BY a; SELECT d FROM t GROUP BY c; SELECT d FROM t GROUP BY a; SELECT 1+c FROM t GROUP BY a; SELECT 1+d FROM t GROUP BY c; SELECT 1+d FROM t GROUP BY a; --echo # {t2.a}->{t2.d}->{t1.c}->{t1.d} SELECT t1.d FROM t as t1, t as t2 WHERE t2.d=t1.c GROUP BY t2.a; --error ER_WRONG_FIELD_WITH_GROUP SELECT t1.d FROM t as t1, t as t2 WHERE t2.d>t1.c GROUP BY t2.a; DROP TABLE t; --echo # A non-NULL-friendly dependency. CREATE TABLE t ( a INT, c INT GENERATED ALWAYS AS (COALESCE(a,3)) ); INSERT INTO t (a) VALUES(NULL); CREATE TABLE u ( a INT ); INSERT INTO u VALUES(0),(1); --echo # Even though {a}->{c} holds in 't', it doesn't propagate to the left --echo # join's result SELECT t.a,t.c FROM u LEFT JOIN t ON u.a>0; --error ER_WRONG_FIELD_WITH_GROUP SELECT t.a,t.c FROM u LEFT JOIN t ON u.a>0 GROUP BY t.a; DROP TABLE t,u; DROP FUNCTION show_json_object;
Close