Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
3.4.0
-
None
Description
Try this code:
try (Statement s = connection.createStatement()) {
|
s.executeUpdate("create table t (i int primary key)");
|
|
try (ResultSet rs = s.executeQuery("""
|
delete from t
|
where false
|
returning i
|
""")) {
|
while (rs.next())
|
System.out.println(rs.getInt(1));
|
}
|
finally {
|
s.executeUpdate("drop table t");
|
}
|
}
|
It should work out of the box, which it did with driver versions 3.3.x. With 3.4.0, it throws this error:
0
|
Statement.executeQuery() command does NOT return a result-set as expected. Either use Statement.execute(), Statement.executeUpdate(), or correct command
|
null
|
java.sql.SQLException: Statement.executeQuery() command does NOT return a result-set as expected. Either use Statement.execute(), Statement.executeUpdate(), or correct command
|
at org.mariadb.jdbc.Statement.executeQuery(Statement.java:171)
|
at org.jooq.testscripts.JDBC.main(JDBC.java:42)
|
The difference can be seen in the implementations:
- https://github.com/mariadb-corporation/mariadb-connector-j/blob/3.3.3/src/main/java/org/mariadb/jdbc/Statement.java#L169
- https://github.com/mariadb-corporation/mariadb-connector-j/blob/3.4.0/src/main/java/org/mariadb/jdbc/Statement.java#L171
The relevant change is this one:
Due to CONJ-1125.
Both static and prepared statements have this regression.
I didn't check for empty UPDATE .. RETURNING or INSERT .. RETURNING statements, but I'd guess they'll also expose this regression.
Attachments
Issue Links
- is caused by
-
MDEV-34585 DELETE .. RETURNING sometimes returns OK packet instead of result set
-
- Open
-
Activity
I ran into this because I have an integration test that checks for "i = 1 and i = 5", which also produces this behaviour. The predicate is generated dynamically and can't be evaluated in the client to check if it is "reasonable". I think there exists a small set of valid use-cases where such a situation is triggered, and they now throw confusing exceptions rather than producing meaningful empty result sets.
Given your explanation, I can see how this isn't a driver issue, though I fail to see why the predicate dictates the nature of the result, when there's a RETURNING clause. I'd expect there to always be a result set. For example, it does not seem unreasonable to me to check for ResultSetMetaData to learn about column names/types, in a dynamic querying setup. Likewise, I would be very surprised if a SELECT statement exposed this behaviour based on some optimisation in the WHERE clause.
In any case, I can work around this limitation on my end, if this can't/won't be fixed, no worries.
i've not reproduced that with "normal" where clause. what server / version do you use ?
This reproduces with 11.4.2-MariaDB-ubu2404, which I pulled from here: https://hub.docker.com/_/mariadb/tags. I'm running Docker on Windows
I connect to MariaDB like this: jdbc:mariadb://localhost:3307/test?allowMultiQueries=true
show variables produces this result (should all be defaults):
allow_suspicious_udfs: OFF
|
alter_algorithm: DEFAULT
|
analyze_sample_percentage: 100.000000
|
aria_block_size: 8192
|
aria_checkpoint_interval: 30
|
aria_checkpoint_log_activity: 1048576
|
aria_encrypt_tables: OFF
|
aria_force_start_after_recovery_failures: 0
|
aria_group_commit: none
|
aria_group_commit_interval: 0
|
aria_log_dir_path: /var/lib/mysql/
|
aria_log_file_size: 1073741824
|
aria_log_purge_type: immediate
|
aria_max_sort_file_size: 9223372036853727232
|
aria_page_checksum: ON
|
aria_pagecache_age_threshold: 300
|
aria_pagecache_buffer_size: 134217728
|
aria_pagecache_division_limit: 100
|
aria_pagecache_file_hash_size: 512
|
aria_recover_options: BACKUP,QUICK
|
aria_repair_threads: 1
|
aria_sort_buffer_size: 268434432
|
aria_stats_method: nulls_unequal
|
aria_sync_log_dir: NEWFILE
|
aria_used_for_temp_tables: ON
|
auto_increment_increment: 1
|
auto_increment_offset: 1
|
autocommit: ON
|
automatic_sp_privileges: ON
|
back_log: 80
|
basedir: /usr
|
big_tables: OFF
|
bind_address: 0.0.0.0
|
binlog_alter_two_phase: OFF
|
binlog_annotate_row_events: ON
|
binlog_cache_size: 32768
|
binlog_checksum: CRC32
|
binlog_commit_wait_count: 0
|
binlog_commit_wait_usec: 100000
|
binlog_direct_non_transactional_updates: OFF
|
binlog_do_db:
|
binlog_expire_logs_seconds: 864000
|
binlog_file_cache_size: 16384
|
binlog_format: MIXED
|
binlog_gtid_index: ON
|
binlog_gtid_index_page_size: 4096
|
binlog_gtid_index_span_min: 65536
|
binlog_ignore_db:
|
binlog_legacy_event_pos: OFF
|
binlog_optimize_thread_scheduling: ON
|
binlog_row_event_max_size: 8192
|
binlog_row_image: FULL
|
binlog_row_metadata: NO_LOG
|
binlog_space_limit: 0
|
binlog_stmt_cache_size: 32768
|
block_encryption_mode: aes-128-ecb
|
bulk_insert_buffer_size: 8388608
|
character_set_client: utf8mb4
|
character_set_collations: utf8mb4=utf8mb4_uca1400_ai_ci
|
character_set_connection: utf8mb4
|
character_set_database: utf8mb3
|
character_set_filesystem: binary
|
character_set_results: utf8mb4
|
character_set_server: utf8mb4
|
character_set_system: utf8mb3
|
character_sets_dir: /usr/share/mariadb/charsets/
|
check_constraint_checks: ON
|
collation_connection: utf8mb4_uca1400_ai_ci
|
collation_database: utf8mb3_bin
|
collation_server: utf8mb4_uca1400_ai_ci
|
column_compression_threshold: 100
|
column_compression_zlib_level: 6
|
column_compression_zlib_strategy: DEFAULT_STRATEGY
|
column_compression_zlib_wrap: OFF
|
completion_type: NO_CHAIN
|
concurrent_insert: AUTO
|
connect_timeout: 10
|
core_file: OFF
|
datadir: /var/lib/mysql/
|
deadlock_search_depth_long: 15
|
deadlock_search_depth_short: 4
|
deadlock_timeout_long: 50000000
|
deadlock_timeout_short: 10000
|
default_master_connection:
|
default_password_lifetime: 0
|
default_regex_flags:
|
default_storage_engine: InnoDB
|
default_tmp_storage_engine:
|
default_week_format: 0
|
delay_key_write: ON
|
delayed_insert_limit: 100
|
delayed_insert_timeout: 300
|
delayed_queue_size: 1000
|
disconnect_on_expired_password: OFF
|
div_precision_increment: 4
|
encrypt_binlog: OFF
|
encrypt_tmp_disk_tables: OFF
|
encrypt_tmp_files: OFF
|
enforce_storage_engine:
|
eq_range_index_dive_limit: 200
|
error_count: 0
|
event_scheduler: OFF
|
expensive_subquery_limit: 100
|
expire_logs_days: 10.000000
|
explicit_defaults_for_timestamp: ON
|
external_user:
|
extra_max_connections: 1
|
extra_port: 0
|
flush: OFF
|
flush_time: 0
|
foreign_key_checks: ON
|
ft_boolean_syntax: + -><()~*:""&|
|
ft_max_word_len: 84
|
ft_min_word_len: 4
|
ft_query_expansion_limit: 20
|
ft_stopword_file: (built-in)
|
general_log: OFF
|
general_log_file: 36b79c5ab9b0.log
|
group_concat_max_len: 1048576
|
gtid_binlog_pos:
|
gtid_binlog_state:
|
gtid_cleanup_batch_size: 64
|
gtid_current_pos:
|
gtid_domain_id: 0
|
gtid_ignore_duplicates: OFF
|
gtid_pos_auto_engines:
|
gtid_seq_no: 0
|
gtid_slave_pos:
|
gtid_strict_mode: OFF
|
have_compress: YES
|
have_crypt: YES
|
have_dynamic_loading: YES
|
have_geometry: YES
|
have_openssl: YES
|
have_profiling: YES
|
have_query_cache: YES
|
have_rtree_keys: YES
|
have_ssl: YES
|
have_symlink: YES
|
histogram_size: 254
|
histogram_type: JSON_HB
|
host_cache_size: 0
|
hostname: 36b79c5ab9b0
|
identity: 0
|
idle_readonly_transaction_timeout: 0
|
idle_transaction_timeout: 0
|
idle_write_transaction_timeout: 0
|
ignore_builtin_innodb: OFF
|
ignore_db_dirs:
|
in_predicate_conversion_threshold: 1000
|
in_transaction: 0
|
init_connect:
|
init_file:
|
init_slave:
|
innodb_adaptive_flushing: ON
|
innodb_adaptive_flushing_lwm: 10.000000
|
innodb_adaptive_hash_index: OFF
|
innodb_adaptive_hash_index_parts: 8
|
innodb_autoextend_increment: 64
|
innodb_autoinc_lock_mode: 1
|
innodb_buf_dump_status_frequency: 0
|
innodb_buffer_pool_chunk_size: 2097152
|
innodb_buffer_pool_dump_at_shutdown: ON
|
innodb_buffer_pool_dump_now: OFF
|
innodb_buffer_pool_dump_pct: 25
|
innodb_buffer_pool_filename: ib_buffer_pool
|
innodb_buffer_pool_load_abort: OFF
|
innodb_buffer_pool_load_at_startup: ON
|
innodb_buffer_pool_load_now: OFF
|
innodb_buffer_pool_size: 134217728
|
innodb_checksum_algorithm: full_crc32
|
innodb_cmp_per_index_enabled: OFF
|
innodb_compression_algorithm: zlib
|
innodb_compression_default: OFF
|
innodb_compression_failure_threshold_pct: 5
|
innodb_compression_level: 6
|
innodb_compression_pad_pct_max: 50
|
innodb_data_file_buffering: OFF
|
innodb_data_file_path: ibdata1:12M:autoextend
|
innodb_data_file_write_through: OFF
|
innodb_data_home_dir:
|
innodb_deadlock_detect: ON
|
innodb_deadlock_report: full
|
innodb_default_encryption_key_id: 1
|
innodb_default_row_format: dynamic
|
innodb_disable_sort_file_cache: OFF
|
innodb_doublewrite: ON
|
innodb_encrypt_log: OFF
|
innodb_encrypt_tables: OFF
|
innodb_encrypt_temporary_tables: OFF
|
innodb_encryption_rotate_key_age: 1
|
innodb_encryption_rotation_iops: 100
|
innodb_encryption_threads: 0
|
innodb_fast_shutdown: 1
|
innodb_fatal_semaphore_wait_threshold: 600
|
innodb_file_per_table: ON
|
innodb_fill_factor: 100
|
innodb_flush_log_at_timeout: 1
|
innodb_flush_log_at_trx_commit: 1
|
innodb_flush_method: O_DIRECT
|
innodb_flush_neighbors: 1
|
innodb_flush_sync: ON
|
innodb_flushing_avg_loops: 30
|
innodb_force_primary_key: OFF
|
innodb_force_recovery: 0
|
innodb_ft_aux_table:
|
innodb_ft_cache_size: 8000000
|
innodb_ft_enable_diag_print: OFF
|
innodb_ft_enable_stopword: ON
|
innodb_ft_max_token_size: 84
|
innodb_ft_min_token_size: 3
|
innodb_ft_num_word_optimize: 2000
|
innodb_ft_result_cache_limit: 2000000000
|
innodb_ft_server_stopword_table:
|
innodb_ft_sort_pll_degree: 2
|
innodb_ft_total_cache_size: 640000000
|
innodb_ft_user_stopword_table:
|
innodb_immediate_scrub_data_uncompressed: OFF
|
innodb_instant_alter_column_allowed: add_drop_reorder
|
innodb_io_capacity: 200
|
innodb_io_capacity_max: 2000
|
innodb_lock_wait_timeout: 50
|
innodb_log_buffer_size: 16777216
|
innodb_log_file_buffering: OFF
|
innodb_log_file_size: 100663296
|
innodb_log_file_write_through: OFF
|
innodb_log_group_home_dir: ./
|
innodb_log_spin_wait_delay: 0
|
innodb_lru_flush_size: 32
|
innodb_lru_scan_depth: 1536
|
innodb_max_dirty_pages_pct: 90.000000
|
innodb_max_dirty_pages_pct_lwm: 0.000000
|
innodb_max_purge_lag: 0
|
innodb_max_purge_lag_delay: 0
|
innodb_max_purge_lag_wait: 4294967295
|
innodb_max_undo_log_size: 10485760
|
innodb_monitor_disable:
|
innodb_monitor_enable:
|
innodb_monitor_reset:
|
innodb_monitor_reset_all:
|
innodb_old_blocks_pct: 37
|
innodb_old_blocks_time: 1000
|
innodb_online_alter_log_max_size: 134217728
|
innodb_open_files: 2000
|
innodb_optimize_fulltext_only: OFF
|
innodb_page_size: 16384
|
innodb_prefix_index_cluster_optimization: ON
|
innodb_print_all_deadlocks: OFF
|
innodb_purge_batch_size: 1000
|
innodb_purge_rseg_truncate_frequency: 128
|
innodb_purge_threads: 4
|
innodb_random_read_ahead: OFF
|
innodb_read_ahead_threshold: 56
|
innodb_read_io_threads: 4
|
innodb_read_only: OFF
|
innodb_read_only_compressed: OFF
|
innodb_rollback_on_timeout: OFF
|
innodb_snapshot_isolation: OFF
|
innodb_sort_buffer_size: 1048576
|
innodb_spin_wait_delay: 4
|
innodb_stats_auto_recalc: ON
|
innodb_stats_include_delete_marked: OFF
|
innodb_stats_method: nulls_equal
|
innodb_stats_modified_counter: 0
|
innodb_stats_on_metadata: OFF
|
innodb_stats_persistent: ON
|
innodb_stats_persistent_sample_pages: 20
|
innodb_stats_traditional: ON
|
innodb_stats_transient_sample_pages: 8
|
innodb_status_output: OFF
|
innodb_status_output_locks: OFF
|
innodb_strict_mode: ON
|
innodb_sync_spin_loops: 30
|
innodb_table_locks: ON
|
innodb_temp_data_file_path: ibtmp1:12M:autoextend
|
innodb_tmpdir:
|
innodb_truncate_temporary_tablespace_now: OFF
|
innodb_undo_directory: ./
|
innodb_undo_log_truncate: OFF
|
innodb_undo_tablespaces: 3
|
innodb_use_atomic_writes: ON
|
innodb_use_native_aio: ON
|
innodb_write_io_threads: 4
|
insert_id: 0
|
interactive_timeout: 28800
|
join_buffer_size: 262144
|
join_buffer_space_limit: 2097152
|
join_cache_level: 2
|
keep_files_on_create: OFF
|
key_buffer_size: 134217728
|
key_cache_age_threshold: 300
|
key_cache_block_size: 1024
|
key_cache_division_limit: 100
|
key_cache_file_hash_size: 512
|
key_cache_segments: 0
|
large_files_support: ON
|
large_page_size: 0
|
large_pages: OFF
|
last_gtid:
|
last_insert_id: 0
|
lc_messages: en_US
|
lc_messages_dir:
|
lc_time_names: en_US
|
license: GPL
|
local_infile: ON
|
lock_wait_timeout: 86400
|
locked_in_memory: OFF
|
log_bin: OFF
|
log_bin_basename:
|
log_bin_compress: OFF
|
log_bin_compress_min_len: 256
|
log_bin_index:
|
log_bin_trust_function_creators: OFF
|
log_disabled_statements: sp
|
log_error:
|
log_output: FILE
|
log_queries_not_using_indexes: OFF
|
log_slave_updates: OFF
|
log_slow_admin_statements: ON
|
log_slow_disabled_statements: sp
|
log_slow_filter: admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
|
log_slow_max_warnings: 10
|
log_slow_min_examined_row_limit: 0
|
log_slow_query: OFF
|
log_slow_query_file: 36b79c5ab9b0-slow.log
|
log_slow_query_time: 10.000000
|
log_slow_rate_limit: 1
|
log_slow_slave_statements: ON
|
log_slow_verbosity:
|
log_tc_size: 24576
|
log_warnings: 2
|
long_query_time: 10.000000
|
low_priority_updates: OFF
|
lower_case_file_system: OFF
|
lower_case_table_names: 0
|
master_verify_checksum: OFF
|
max_allowed_packet: 16777216
|
max_binlog_cache_size: 18446744073709547520
|
max_binlog_size: 1073741824
|
max_binlog_stmt_cache_size: 18446744073709547520
|
max_binlog_total_size: 0
|
max_connect_errors: 100
|
max_connections: 151
|
max_delayed_threads: 20
|
max_digest_length: 1024
|
max_error_count: 64
|
max_heap_table_size: 16777216
|
max_insert_delayed_threads: 20
|
max_join_size: 18446744073709551615
|
max_length_for_sort_data: 1024
|
max_password_errors: 4294967295
|
max_prepared_stmt_count: 16382
|
max_recursive_iterations: 1000
|
max_relay_log_size: 1073741824
|
max_rowid_filter_size: 131072
|
max_seeks_for_key: 4294967295
|
max_session_mem_used: 9223372036854775807
|
max_sort_length: 1024
|
max_sp_recursion_depth: 0
|
max_statement_time: 0.000000
|
max_user_connections: 0
|
max_write_lock_count: 4294967295
|
metadata_locks_cache_size: 1024
|
metadata_locks_hash_instances: 8
|
min_examined_row_limit: 0
|
mrr_buffer_size: 262144
|
myisam_block_size: 1024
|
myisam_data_pointer_size: 6
|
myisam_max_sort_file_size: 9223372036853727232
|
myisam_mmap_size: 18446744073709551615
|
myisam_recover_options: BACKUP,QUICK
|
myisam_repair_threads: 1
|
myisam_sort_buffer_size: 134216704
|
myisam_stats_method: NULLS_UNEQUAL
|
myisam_use_mmap: OFF
|
mysql56_temporal_format: ON
|
net_buffer_length: 16384
|
net_read_timeout: 30
|
net_retry_count: 10
|
net_write_timeout: 60
|
note_verbosity: basic,explain
|
old: OFF
|
old_mode: UTF8_IS_UTF8MB3
|
old_passwords: OFF
|
open_files_limit: 32190
|
optimizer_adjust_secondary_key_costs: 0
|
optimizer_disk_read_cost: 10.240000
|
optimizer_disk_read_ratio: 0.020000
|
optimizer_extra_pruning_depth: 8
|
optimizer_index_block_copy_cost: 0.035600
|
optimizer_key_compare_cost: 0.011361
|
optimizer_key_copy_cost: 0.015685
|
optimizer_key_lookup_cost: 0.435777
|
optimizer_key_next_find_cost: 0.082347
|
optimizer_max_sel_arg_weight: 32000
|
optimizer_max_sel_args: 16000
|
optimizer_prune_level: 2
|
optimizer_row_copy_cost: 0.060866
|
optimizer_row_lookup_cost: 0.130839
|
optimizer_row_next_find_cost: 0.045916
|
optimizer_rowid_compare_cost: 0.002653
|
optimizer_rowid_copy_cost: 0.002653
|
optimizer_scan_setup_cost: 10.000000
|
optimizer_search_depth: 62
|
optimizer_selectivity_sampling_limit: 100
|
optimizer_switch: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=on,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on,condition_pushdown_for_subquery=on,rowid_filter=on,condition_pushdown_from_having=on,not_null_range_scan=off,hash_join_cardinality=on,cset_narrowing=off,sargable_casefold=on
|
optimizer_trace: enabled=off
|
optimizer_trace_max_mem_size: 1048576
|
optimizer_use_condition_selectivity: 4
|
optimizer_where_cost: 0.032000
|
performance_schema: OFF
|
performance_schema_accounts_size: -1
|
performance_schema_digests_size: -1
|
performance_schema_events_stages_history_long_size: -1
|
performance_schema_events_stages_history_size: -1
|
performance_schema_events_statements_history_long_size: -1
|
performance_schema_events_statements_history_size: -1
|
performance_schema_events_transactions_history_long_size: -1
|
performance_schema_events_transactions_history_size: -1
|
performance_schema_events_waits_history_long_size: -1
|
performance_schema_events_waits_history_size: -1
|
performance_schema_hosts_size: -1
|
performance_schema_max_cond_classes: 90
|
performance_schema_max_cond_instances: -1
|
performance_schema_max_digest_length: 1024
|
performance_schema_max_file_classes: 80
|
performance_schema_max_file_handles: 32768
|
performance_schema_max_file_instances: -1
|
performance_schema_max_index_stat: -1
|
performance_schema_max_memory_classes: 320
|
performance_schema_max_metadata_locks: -1
|
performance_schema_max_mutex_classes: 210
|
performance_schema_max_mutex_instances: -1
|
performance_schema_max_prepared_statements_instances: -1
|
performance_schema_max_program_instances: -1
|
performance_schema_max_rwlock_classes: 50
|
performance_schema_max_rwlock_instances: -1
|
performance_schema_max_socket_classes: 10
|
performance_schema_max_socket_instances: -1
|
performance_schema_max_sql_text_length: 1024
|
performance_schema_max_stage_classes: 160
|
performance_schema_max_statement_classes: 222
|
performance_schema_max_statement_stack: 10
|
performance_schema_max_table_handles: -1
|
performance_schema_max_table_instances: -1
|
performance_schema_max_table_lock_stat: -1
|
performance_schema_max_thread_classes: 50
|
performance_schema_max_thread_instances: -1
|
performance_schema_session_connect_attrs_size: -1
|
performance_schema_setup_actors_size: -1
|
performance_schema_setup_objects_size: -1
|
performance_schema_users_size: -1
|
pid_file: /run/mysqld/mysqld.pid
|
plugin_dir: /usr/lib/mysql/plugin/
|
plugin_maturity: gamma
|
port: 3307
|
preload_buffer_size: 32768
|
profiling: OFF
|
profiling_history_size: 15
|
progress_report_time: 5
|
protocol_version: 10
|
proxy_protocol_networks:
|
proxy_user:
|
pseudo_slave_mode: OFF
|
pseudo_thread_id: 9
|
query_alloc_block_size: 16384
|
query_cache_limit: 1048576
|
query_cache_min_res_unit: 4096
|
query_cache_size: 1048576
|
query_cache_strip_comments: OFF
|
query_cache_type: OFF
|
query_cache_wlock_invalidate: OFF
|
query_prealloc_size: 24576
|
rand_seed1: 321248677
|
rand_seed2: 72931094
|
range_alloc_block_size: 4096
|
read_binlog_speed_limit: 0
|
read_buffer_size: 131072
|
read_only: OFF
|
read_rnd_buffer_size: 262144
|
redirect_url:
|
relay_log:
|
relay_log_basename:
|
relay_log_index:
|
relay_log_info_file: relay-log.info
|
relay_log_purge: ON
|
relay_log_recovery: OFF
|
relay_log_space_limit: 0
|
replicate_annotate_row_events: ON
|
replicate_do_db:
|
replicate_do_table:
|
replicate_events_marked_for_skip: REPLICATE
|
replicate_ignore_db:
|
replicate_ignore_table:
|
replicate_rewrite_db:
|
replicate_wild_do_table:
|
replicate_wild_ignore_table:
|
report_host:
|
report_password:
|
report_port: 3307
|
report_user:
|
require_secure_transport: OFF
|
rowid_merge_buff_size: 8388608
|
rpl_semi_sync_master_enabled: OFF
|
rpl_semi_sync_master_timeout: 10000
|
rpl_semi_sync_master_trace_level: 32
|
rpl_semi_sync_master_wait_no_slave: ON
|
rpl_semi_sync_master_wait_point: AFTER_COMMIT
|
rpl_semi_sync_slave_delay_master: OFF
|
rpl_semi_sync_slave_enabled: OFF
|
rpl_semi_sync_slave_kill_conn_timeout: 5
|
rpl_semi_sync_slave_trace_level: 32
|
secure_auth: ON
|
secure_file_priv:
|
secure_timestamp: NO
|
server_id: 1
|
session_track_schema: ON
|
session_track_state_change: OFF
|
session_track_system_variables: autocommit,character_set_client,character_set_connection,character_set_results,redirect_url,time_zone,transaction_isolation
|
session_track_transaction_info: OFF
|
skip_external_locking: ON
|
skip_grant_tables: OFF
|
skip_name_resolve: ON
|
skip_networking: OFF
|
skip_parallel_replication: OFF
|
skip_replication: OFF
|
skip_show_database: OFF
|
slave_compressed_protocol: OFF
|
slave_connections_needed_for_purge: 1
|
slave_ddl_exec_mode: IDEMPOTENT
|
slave_domain_parallel_threads: 0
|
slave_exec_mode: STRICT
|
slave_load_tmpdir: /tmp
|
slave_max_allowed_packet: 1073741824
|
slave_max_statement_time: 0.000000
|
slave_net_timeout: 60
|
slave_parallel_max_queued: 131072
|
slave_parallel_mode: optimistic
|
slave_parallel_threads: 0
|
slave_parallel_workers: 0
|
slave_run_triggers_for_rbr: NO
|
slave_skip_errors: OFF
|
slave_sql_verify_checksum: ON
|
slave_transaction_retries: 10
|
slave_transaction_retry_errors: 1158,1159,1160,1161,1205,1213,1020,1429,2013,12701
|
slave_transaction_retry_interval: 0
|
slave_type_conversions:
|
slow_launch_time: 2
|
slow_query_log: OFF
|
slow_query_log_file: 36b79c5ab9b0-slow.log
|
socket: /run/mysqld/mysqld.sock
|
sort_buffer_size: 2097152
|
sql_auto_is_null: OFF
|
sql_big_selects: ON
|
sql_buffer_result: OFF
|
sql_if_exists: OFF
|
sql_log_bin: ON
|
sql_log_off: OFF
|
sql_mode: IGNORE_SPACE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|
sql_notes: ON
|
sql_quote_show_create: ON
|
sql_safe_updates: OFF
|
sql_select_limit: 18446744073709551615
|
sql_slave_skip_counter: 0
|
sql_warnings: OFF
|
ssl_ca:
|
ssl_capath:
|
ssl_cert:
|
ssl_cipher:
|
ssl_crl:
|
ssl_crlpath:
|
ssl_key:
|
standard_compliant_cte: ON
|
storage_engine: InnoDB
|
stored_program_cache: 256
|
strict_password_validation: ON
|
sync_binlog: 0
|
sync_frm: ON
|
sync_master_info: 10000
|
sync_relay_log: 10000
|
sync_relay_log_info: 10000
|
system_time_zone: UTC
|
system_versioning_alter_history: ERROR
|
system_versioning_asof: DEFAULT
|
system_versioning_insert_history: OFF
|
table_definition_cache: 400
|
table_open_cache: 2000
|
table_open_cache_instances: 8
|
tcp_keepalive_interval: 0
|
tcp_keepalive_probes: 0
|
tcp_keepalive_time: 0
|
tcp_nodelay: ON
|
thread_cache_size: 151
|
thread_handling: one-thread-per-connection
|
thread_pool_dedicated_listener: OFF
|
thread_pool_exact_stats: OFF
|
thread_pool_idle_timeout: 60
|
thread_pool_max_threads: 65536
|
thread_pool_oversubscribe: 3
|
thread_pool_prio_kickup_timer: 1000
|
thread_pool_priority: auto
|
thread_pool_size: 8
|
thread_pool_stall_limit: 500
|
thread_stack: 299008
|
time_zone: SYSTEM
|
timestamp: 1720858403.412944
|
tls_version: TLSv1.2,TLSv1.3
|
tmp_disk_table_size: 18446744073709551615
|
tmp_memory_table_size: 16777216
|
tmp_table_size: 16777216
|
tmpdir: /tmp
|
transaction_alloc_block_size: 8192
|
transaction_isolation: REPEATABLE-READ
|
transaction_prealloc_size: 4096
|
transaction_read_only: OFF
|
tx_isolation: REPEATABLE-READ
|
tx_read_only: OFF
|
unique_checks: ON
|
updatable_views_with_limit: YES
|
use_stat_tables: PREFERABLY_FOR_QUERIES
|
userstat: OFF
|
version: 11.4.2-MariaDB-ubu2404
|
version_comment: mariadb.org binary distribution
|
version_compile_machine: x86_64
|
version_compile_os: debian-linux-gnu
|
version_malloc_library: system
|
version_source_revision: 3fca5ed772fb75e3e57c507edef2985f8eba5b12
|
version_ssl_library: OpenSSL 3.0.13 30 Jan 2024
|
wait_timeout: 28800
|
warning_count: 0
|
wsrep_osu_method: TOI
|
wsrep_sr_store: table
|
wsrep_allowlist:
|
wsrep_auto_increment_control: ON
|
wsrep_certification_rules: strict
|
wsrep_certify_nonpk: ON
|
wsrep_cluster_address:
|
wsrep_cluster_name: my_wsrep_cluster
|
wsrep_convert_lock_to_trx: OFF
|
wsrep_data_home_dir: /var/lib/mysql/
|
wsrep_dbug_option:
|
wsrep_debug: NONE
|
wsrep_desync: OFF
|
wsrep_dirty_reads: OFF
|
wsrep_drupal_282555_workaround: OFF
|
wsrep_forced_binlog_format: NONE
|
wsrep_gtid_domain_id: 0
|
wsrep_gtid_mode: OFF
|
wsrep_gtid_seq_no: 0
|
wsrep_ignore_apply_errors: 7
|
wsrep_load_data_splitting: OFF
|
wsrep_log_conflicts: OFF
|
wsrep_max_ws_rows: 0
|
wsrep_max_ws_size: 2147483647
|
wsrep_mode:
|
wsrep_mysql_replication_bundle: 0
|
wsrep_node_address:
|
wsrep_node_incoming_address: AUTO
|
wsrep_node_name: 36b79c5ab9b0
|
wsrep_notify_cmd:
|
wsrep_on: OFF
|
wsrep_patch_version: wsrep_26.22
|
wsrep_provider: none
|
wsrep_provider_options:
|
wsrep_recover: OFF
|
wsrep_reject_queries: NONE
|
wsrep_restart_slave: OFF
|
wsrep_retry_autocommit: 1
|
wsrep_slave_fk_checks: ON
|
wsrep_slave_uk_checks: OFF
|
wsrep_slave_threads: 1
|
wsrep_sst_auth:
|
wsrep_sst_donor:
|
wsrep_sst_donor_rejects_queries: OFF
|
wsrep_sst_method: rsync
|
wsrep_sst_receive_address: AUTO
|
wsrep_start_position: 00000000-0000-0000-0000-000000000000:-1
|
wsrep_status_file:
|
wsrep_sync_wait: 0
|
wsrep_trx_fragment_size: 0
|
wsrep_trx_fragment_unit: bytes
|
Please note that the query doesn't fail e.g. in Dbeaver, because Dbeaver must be executing Statement.execute() and then iterate on Statement.getUpdateCount() and Statement.getResultSet(), as opposed to calling Statement.executeQuery()
Of course it is a server bug, if the same query returns either result set or "update notification" (not sure how it is officially called, in our case it is OK packet with "affected rows" and sometimes autoincrement value). I created MDEV-34585 based on the case described here.
I do not think JDBC needs to do anything to workaround it, but server has to fix.
Since this is for exceptionnal cases, where connector would throw an error, since it might cause incompatibility issues cause some problems setting a new option `permitNoResults` will permits to return an empty resultset like 2.x and 3.3 versions was doing.
This will permit compatibility until MDEV-34585 is done.
executeQuery is expected to return a resultset (javadoc)
3.3 was returning an empty result by default in place of throwing an error. And this is exactly the problem we want to correct.
Problem reside in your example: The server, for a query with a condition (where) that cannot be true will return a simple acknoledgement (OK_Packet) to indicate execution, but not a result-set.
command "delete from t where false returning i" => returns an OK_Packet, not a resultset
while command "delete from t where i in (1, 2) returning i" => returns a resultset.
From connector point of view, it is correct. Technically, this is a server issue, because one would expect an empty resultset in this case. But i wonder what would be the use case of this kind of query !?