mirror of
https://github.com/MariaDB/server.git
synced 2025-02-20 20:33:15 +01:00
![]() This patch adds support for SYS_REFCURSOR (a weakly typed cursor) for both sql_mode=ORACLE and sql_mode=DEFAULT. Works as a regular stored routine variable, parameter and return value: - can be passed as an IN parameter to stored functions and procedures - can be passed as an OUT parameter to stored procedures - can be returned from a stored function Note, strongly typed REF CURSOR will be added separately. The implementation consists of the following parts: - A new class sp_cursor_array deriving from Dynamic_array - A new member THD::m_session_cursors of the sp_cursor_array data type. - A new data type handler Type_handler_sys_refcursor. It is designed to store an uint16 index - the position of the cursor in THD::m_session_cursors. - Type_handler_sys_refcursor suppresses some derived numeric features. When a SYS_REFCURSOR variable is used as an integer an error is raised. - A new abstract class sp_instr_fetch_cursor. It's needed to share the common code between "OPEN cur" (for static cursors) and "OPER cur FOR stmt" (for SYS_REFCURSORs). - New sp_instr classes: * sp_instr_copen_by_ref - OPEN sys_ref_curor FOR stmt; * sp_instr_cfetch_by_ref - FETCH sys_ref_cursor INTO targets; * sp_instr_cclose_by_ref - CLOSE sys_ref_cursor; - New methods in LEX: * sp_open_cursor_for_stmt - handles "OPER sys_ref_cursor FOR stmt". * sp_add_instr_fetch_cursor - "FETCH cur INTO targets" for both static cursors and SYS_REFCURSORs. * sp_close - handles "CLOSE cur" both for static cursors and SYS_REFCURSORs. - Changes in cursor functions to handle both static cursors and SYS_REFCURSORs: * Item_func_cursor_isopen * Item_func_cursor_found * Item_func_cursor_notfound * Item_func_cursor_rowcount - A new system variable @@max_open_cursors - to limit the number of cursors (static and SYS_REFCURSORs) opened at the same time. Its allowed range is [0-65536], with 50 by default. - A new virtual method Type_handler::can_return_bool() telling if Item::val_bool() can be used. - New methods in Sp_rcontext_handlers: * get_cursor() * get_cursor_by_ref() - A new class Sp_rcontext_handler_session to handle session-wide cursors |
||
---|---|---|
.. | ||
audit_null | ||
auth_dialog | ||
auth_ed25519 | ||
auth_examples | ||
auth_gssapi | ||
auth_pam | ||
auth_pipe | ||
auth_socket | ||
aws_key_management | ||
cracklib_password_check | ||
daemon_example | ||
debug_key_management | ||
disks | ||
example_key_management | ||
feedback | ||
file_key_management | ||
fulltext | ||
func_test | ||
handler_socket | ||
hashicorp_key_management | ||
locale_info | ||
metadata_lock_info | ||
password_reuse_check | ||
provider_bzip2 | ||
provider_lz4 | ||
provider_lzma | ||
provider_lzo | ||
provider_snappy | ||
qc_info | ||
query_response_time | ||
server_audit | ||
simple_password_check | ||
sql_errlog | ||
test_sql_service | ||
type_cursor | ||
type_geom | ||
type_inet | ||
type_mysql_json | ||
type_mysql_timestamp | ||
type_test | ||
type_uuid | ||
user_variables | ||
userstat | ||
versioning | ||
win_auth_client | ||
wsrep_info |