PATH: //usr/include/mysql/server/private
FILE_BARU
CREATE
FOLDER_BARU
MKDIR
UPLOAD_FILE
GO
[ .. KEMBALI ]
📄 aligned.h
↓
X
📄 aria_backup.h
↓
X
📄 assume_aligned.h
↓
X
📁 atomic/
X
📄 authors.h
↓
X
📄 backup.h
↓
X
📄 bounded_queue.h
↓
X
📄 client_settings.h
↓
X
📄 compat56.h
↓
X
📄 config.h
↓
X
📄 contributors.h
↓
X
📄 create_options.h
↓
X
📄 create_tmp_table.h
↓
X
📄 cset_narrowing.h
↓
X
📄 custom_conf.h
↓
X
📄 datadict.h
↓
X
📄 ddl_log.h
↓
X
📄 debug.h
↓
X
📄 debug_sync.h
↓
X
📄 derived_handler.h
↓
X
📄 derror.h
↓
X
📄 des_key_file.h
↓
X
📄 discover.h
↓
X
📄 dur_prop.h
↓
X
📄 embedded_priv.h
↓
X
📄 event_data_objects.h
↓
X
📄 event_db_repository.h
↓
X
📄 event_parse_data.h
↓
X
📄 event_queue.h
↓
X
📄 event_scheduler.h
↓
X
📄 events.h
↓
X
📄 field.h
↓
X
📄 field_comp.h
↓
X
📄 filesort.h
↓
X
📄 filesort_utils.h
↓
X
📄 ft_global.h
↓
X
📄 gcalc_slicescan.h
↓
X
📄 gcalc_tools.h
↓
X
📄 grant.h
↓
X
📄 group_by_handler.h
↓
X
📄 gstream.h
↓
X
📄 ha_handler_stats.h
↓
X
📄 ha_partition.h
↓
X
📄 ha_sequence.h
↓
X
📄 handle_connections_win.h
↓
X
📄 handler.h
↓
X
📄 hash.h
↓
X
📄 hash_filo.h
↓
X
📄 heap.h
↓
X
📄 hostname.h
↓
X
📄 ilist.h
↓
X
📄 init.h
↓
X
📄 innodb_priv.h
↓
X
📄 item.h
↓
X
📄 item_cmpfunc.h
↓
X
📄 item_create.h
↓
X
📄 item_func.h
↓
X
📄 item_geofunc.h
↓
X
📄 item_jsonfunc.h
↓
X
📄 item_row.h
↓
X
📄 item_strfunc.h
↓
X
📄 item_subselect.h
↓
X
📄 item_sum.h
↓
X
📄 item_timefunc.h
↓
X
📄 item_vers.h
↓
X
📄 item_windowfunc.h
↓
X
📄 item_xmlfunc.h
↓
X
📄 json_table.h
↓
X
📄 key.h
↓
X
📄 keycaches.h
↓
X
📄 lex.h
↓
X
📄 lex_string.h
↓
X
📄 lex_symbol.h
↓
X
📄 lf.h
↓
X
📄 lock.h
↓
X
📄 log.h
↓
X
📄 log_event.h
↓
X
📄 log_event_data_type.h
↓
X
📄 log_event_old.h
↓
X
📄 log_slow.h
↓
X
📄 maria.h
↓
X
📄 mariadb.h
↓
X
📄 mdl.h
↓
X
📄 mem_root_array.h
↓
X
📄 message.h
↓
X
📄 multi_range_read.h
↓
X
📄 my_alarm.h
↓
X
📄 my_apc.h
↓
X
📄 my_atomic.h
↓
X
📄 my_atomic_wrapper.h
↓
X
📄 my_base.h
↓
X
📄 my_bit.h
↓
X
📄 my_bitmap.h
↓
X
📄 my_check_opt.h
↓
X
📄 my_compare.h
↓
X
📄 my_counter.h
↓
X
📄 my_cpu.h
↓
X
📄 my_crypt.h
↓
X
📄 my_decimal.h
↓
X
📄 my_default.h
↓
X
📄 my_handler_errors.h
↓
X
📄 my_json_writer.h
↓
X
📄 my_libwrap.h
↓
X
📄 my_md5.h
↓
X
📄 my_minidump.h
↓
X
📄 my_nosys.h
↓
X
📄 my_rdtsc.h
↓
X
📄 my_rnd.h
↓
X
📄 my_service_manager.h
↓
X
📄 my_stack_alloc.h
↓
X
📄 my_stacktrace.h
↓
X
📄 my_time.h
↓
X
📄 my_tree.h
↓
X
📄 my_uctype.h
↓
X
📄 my_user.h
↓
X
📄 myisam.h
↓
X
📄 myisamchk.h
↓
X
📄 myisammrg.h
↓
X
📄 myisampack.h
↓
X
📄 mysqld.h
↓
X
📄 mysqld_default_groups.h
↓
X
📄 mysqld_suffix.h
↓
X
📄 mysys_err.h
↓
X
📄 opt_range.h
↓
X
📄 opt_subselect.h
↓
X
📄 opt_trace.h
↓
X
📄 opt_trace_context.h
↓
X
📄 parse_file.h
↓
X
📄 partition_element.h
↓
X
📄 partition_info.h
↓
X
📄 password.h
↓
X
📄 pfs_file_provider.h
↓
X
📄 pfs_idle_provider.h
↓
X
📄 pfs_memory_provider.h
↓
X
📄 pfs_metadata_provider.h
↓
X
📄 pfs_socket_provider.h
↓
X
📄 pfs_stage_provider.h
↓
X
📄 pfs_statement_provider.h
↓
X
📄 pfs_table_provider.h
↓
X
📄 pfs_thread_provider.h
↓
X
📄 pfs_transaction_provider.h
↓
X
📄 privilege.h
↓
X
📄 probes_mysql.h
↓
X
📄 probes_mysql_dtrace.h
↓
X
📄 probes_mysql_nodtrace.h
↓
X
📄 procedure.h
↓
X
📄 protocol.h
↓
X
📄 proxy_protocol.h
↓
X
📄 queues.h
↓
X
📄 records.h
↓
X
📄 repl_failsafe.h
↓
X
📄 replication.h
↓
X
📄 rijndael.h
↓
X
📄 rowid_filter.h
↓
X
📄 rpl_constants.h
↓
X
📄 rpl_filter.h
↓
X
📄 rpl_gtid.h
↓
X
📄 rpl_injector.h
↓
X
📄 rpl_mi.h
↓
X
📄 rpl_parallel.h
↓
X
📄 rpl_record.h
↓
X
📄 rpl_record_old.h
↓
X
📄 rpl_reporting.h
↓
X
📄 rpl_rli.h
↓
X
📄 rpl_tblmap.h
↓
X
📄 rpl_utility.h
↓
X
📄 scheduler.h
↓
X
📄 scope.h
↓
X
📄 select_handler.h
↓
X
📄 semisync.h
↓
X
📄 semisync_master.h
↓
X
📄 semisync_master_ack_receiver.h
↓
X
📄 semisync_slave.h
↓
X
📄 service_versions.h
↓
X
📄 session_tracker.h
↓
X
📄 set_var.h
↓
X
📄 slave.h
↓
X
📄 socketpair.h
↓
X
📄 source_revision.h
↓
X
📄 sp.h
↓
X
📄 sp_cache.h
↓
X
📄 sp_head.h
↓
X
📄 sp_pcontext.h
↓
X
📄 sp_rcontext.h
↓
X
📄 span.h
↓
X
📄 spatial.h
↓
X
📄 sql_acl.h
↓
X
📄 sql_admin.h
↓
X
📄 sql_alloc.h
↓
X
📄 sql_alter.h
↓
X
📄 sql_analyse.h
↓
X
📄 sql_analyze_stmt.h
↓
X
📄 sql_array.h
↓
X
📄 sql_audit.h
↓
X
📄 sql_base.h
↓
X
📄 sql_basic_types.h
↓
X
📄 sql_binlog.h
↓
X
📄 sql_bitmap.h
↓
X
📄 sql_bootstrap.h
↓
X
📄 sql_cache.h
↓
X
📄 sql_callback.h
↓
X
📄 sql_class.h
↓
X
📄 sql_cmd.h
↓
X
📄 sql_connect.h
↓
X
📄 sql_const.h
↓
X
📄 sql_crypt.h
↓
X
📄 sql_cte.h
↓
X
📄 sql_cursor.h
↓
X
📄 sql_db.h
↓
X
📄 sql_debug.h
↓
X
📄 sql_delete.h
↓
X
📄 sql_derived.h
↓
X
📄 sql_digest.h
↓
X
📄 sql_digest_stream.h
↓
X
📄 sql_do.h
↓
X
📄 sql_error.h
↓
X
📄 sql_explain.h
↓
X
📄 sql_expression_cache.h
↓
X
📄 sql_get_diagnostics.h
↓
X
📄 sql_handler.h
↓
X
📄 sql_help.h
↓
X
📄 sql_hset.h
↓
X
📄 sql_i_s.h
↓
X
📄 sql_insert.h
↓
X
📄 sql_join_cache.h
↓
X
📄 sql_lex.h
↓
X
📄 sql_lifo_buffer.h
↓
X
📄 sql_limit.h
↓
X
📄 sql_list.h
↓
X
📄 sql_load.h
↓
X
📄 sql_locale.h
↓
X
📄 sql_manager.h
↓
X
📄 sql_mode.h
↓
X
📄 sql_parse.h
↓
X
📄 sql_partition.h
↓
X
📄 sql_partition_admin.h
↓
X
📄 sql_plist.h
↓
X
📄 sql_plugin.h
↓
X
📄 sql_plugin_compat.h
↓
X
📄 sql_prepare.h
↓
X
📄 sql_priv.h
↓
X
📄 sql_profile.h
↓
X
📄 sql_reload.h
↓
X
📄 sql_rename.h
↓
X
📄 sql_repl.h
↓
X
📄 sql_schema.h
↓
X
📄 sql_select.h
↓
X
📄 sql_sequence.h
↓
X
📄 sql_servers.h
↓
X
📄 sql_show.h
↓
X
📄 sql_signal.h
↓
X
📄 sql_sort.h
↓
X
📄 sql_statistics.h
↓
X
📄 sql_string.h
↓
X
📄 sql_table.h
↓
X
📄 sql_tablespace.h
↓
X
📄 sql_test.h
↓
X
📄 sql_time.h
↓
X
📄 sql_trigger.h
↓
X
📄 sql_truncate.h
↓
X
📄 sql_tvc.h
↓
X
📄 sql_type.h
↓
X
📄 sql_type_fixedbin.h
↓
X
📄 sql_type_fixedbin_storage.h
↓
X
📄 sql_type_geom.h
↓
X
📄 sql_type_int.h
↓
X
📄 sql_type_json.h
↓
X
📄 sql_type_real.h
↓
X
📄 sql_type_string.h
↓
X
📄 sql_udf.h
↓
X
📄 sql_union.h
↓
X
📄 sql_update.h
↓
X
📄 sql_view.h
↓
X
📄 sql_window.h
↓
X
📄 ssl_compat.h
↓
X
📄 strfunc.h
↓
X
📄 structs.h
↓
X
📄 sys_vars_shared.h
↓
X
📄 t_ctype.h
↓
X
📄 table.h
↓
X
📄 table_cache.h
↓
X
📄 thr_alarm.h
↓
X
📄 thr_lock.h
↓
X
📄 thr_malloc.h
↓
X
📄 thr_timer.h
↓
X
📄 thread_cache.h
↓
X
📄 threadpool.h
↓
X
📄 threadpool_generic.h
↓
X
📄 threadpool_winsockets.h
↓
X
📄 transaction.h
↓
X
📄 tzfile.h
↓
X
📄 tztime.h
↓
X
📄 uniques.h
↓
X
📄 unireg.h
↓
X
📄 vers_string.h
↓
X
📄 violite.h
↓
X
📄 waiting_threads.h
↓
X
📄 welcome_copyright_notice.h
↓
X
📄 win_tzname_data.h
↓
X
📄 winservice.h
↓
X
📄 wqueue.h
↓
X
📄 wsrep.h
↓
X
📄 wsrep_applier.h
↓
X
📄 wsrep_binlog.h
↓
X
📄 wsrep_client_service.h
↓
X
📄 wsrep_client_state.h
↓
X
📄 wsrep_condition_variable.h
↓
X
📄 wsrep_high_priority_service.h
↓
X
📄 wsrep_mutex.h
↓
X
📄 wsrep_mysqld.h
↓
X
📄 wsrep_mysqld_c.h
↓
X
📄 wsrep_on.h
↓
X
📄 wsrep_priv.h
↓
X
📄 wsrep_schema.h
↓
X
📄 wsrep_server_service.h
↓
X
📄 wsrep_server_state.h
↓
X
📄 wsrep_sst.h
↓
X
📄 wsrep_storage_service.h
↓
X
📄 wsrep_thd.h
↓
X
📄 wsrep_trans_observer.h
↓
X
📄 wsrep_types.h
↓
X
📄 wsrep_utils.h
↓
X
📄 wsrep_var.h
↓
X
📄 wsrep_xid.h
↓
X
📄 xa.h
↓
X
SAVING...
BERHASIL DIUBAH!
EDITING: protocol.h
#ifndef PROTOCOL_INCLUDED #define PROTOCOL_INCLUDED /* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2020, MariaDB Corporation. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */ #ifdef USE_PRAGMA_INTERFACE #pragma interface /* gcc class implementation */ #endif #include "sql_error.h" #include "my_decimal.h" /* my_decimal */ #include "sql_type.h" class i_string; class Field; class Send_field; class THD; class Item_param; struct TABLE_LIST; typedef struct st_mysql_field MYSQL_FIELD; typedef struct st_mysql_rows MYSQL_ROWS; class Protocol { protected: String *packet; /* Used by net_store_data() for charset conversions */ String *convert; uint field_pos; #ifndef DBUG_OFF const Type_handler **field_handlers; bool valid_handler(uint pos, protocol_send_type_t type) const { return field_handlers == 0 || field_handlers[field_pos]->protocol_send_type() == type; } #endif uint field_count; virtual bool net_store_data(const uchar *from, size_t length); virtual bool net_store_data_cs(const uchar *from, size_t length, CHARSET_INFO *fromcs, CHARSET_INFO *tocs); virtual bool net_send_ok(THD *, uint, uint, ulonglong, ulonglong, const char *, bool); virtual bool net_send_error_packet(THD *, uint, const char *, const char *); #ifdef EMBEDDED_LIBRARY char **next_field; MYSQL_FIELD *next_mysql_field; MEM_ROOT *alloc; #endif bool needs_conversion(CHARSET_INFO *fromcs, CHARSET_INFO *tocs) const { // 'tocs' is set 0 when client issues SET character_set_results=NULL return tocs && !my_charset_same(fromcs, tocs) && fromcs != &my_charset_bin && tocs != &my_charset_bin; } /* The following two are low-level functions that are invoked from higher-level store_xxx() funcs. The data is stored into this->packet. */ bool store_string_aux(const char *from, size_t length, CHARSET_INFO *fromcs, CHARSET_INFO *tocs); virtual bool send_ok(uint server_status, uint statement_warn_count, ulonglong affected_rows, ulonglong last_insert_id, const char *message); virtual bool send_eof(uint server_status, uint statement_warn_count); virtual bool send_error(uint sql_errno, const char *err_msg, const char *sql_state); CHARSET_INFO *character_set_results() const; public: THD *thd; Protocol(THD *thd_arg) { init(thd_arg); } virtual ~Protocol() = default; void init(THD* thd_arg); enum { SEND_NUM_ROWS= 1, SEND_EOF= 2, SEND_FORCE_COLUMN_INFO= 4 }; virtual bool send_result_set_metadata(List<Item> *list, uint flags); bool send_list_fields(List<Field> *list, const TABLE_LIST *table_list); bool send_result_set_row(List<Item> *row_items); bool store(I_List<i_string> *str_list); bool store_string_or_null(const char *from, CHARSET_INFO *cs); bool store_warning(const char *from, size_t length); String *storage_packet() { return packet; } inline void free() { packet->free(); } virtual bool write(); inline bool store(int from) { return store_long((longlong) from); } inline bool store(uint32 from) { return store_long((longlong) from); } inline bool store(longlong from) { return store_longlong((longlong) from, 0); } inline bool store(ulonglong from) { return store_longlong((longlong) from, 1); } inline bool store(String *str) { return store((char*) str->ptr(), str->length(), str->charset()); } inline bool store(const LEX_CSTRING *from, CHARSET_INFO *cs) { return store(from->str, from->length, cs); } virtual bool prepare_for_send(uint num_columns) { field_count= num_columns; return 0; } virtual bool flush(); virtual void end_partial_result_set(THD *thd); virtual void prepare_for_resend()=0; virtual bool store_null()=0; virtual bool store_tiny(longlong from)=0; virtual bool store_short(longlong from)=0; virtual bool store_long(longlong from)=0; virtual bool store_longlong(longlong from, bool unsigned_flag)=0; virtual bool store_decimal(const my_decimal *)=0; virtual bool store_str(const char *from, size_t length, CHARSET_INFO *fromcs, CHARSET_INFO *tocs)=0; virtual bool store_float(float from, uint32 decimals)=0; virtual bool store_double(double from, uint32 decimals)=0; virtual bool store_datetime(MYSQL_TIME *time, int decimals)=0; virtual bool store_date(MYSQL_TIME *time)=0; virtual bool store_time(MYSQL_TIME *time, int decimals)=0; virtual bool store(Field *field)=0; // Various useful wrappers for the virtual store*() methods. // Backward wrapper for store_str() bool store(const char *from, size_t length, CHARSET_INFO *cs) { return store_str(from, length, cs, character_set_results()); } bool store_lex_cstring(const LEX_CSTRING &s, CHARSET_INFO *fromcs, CHARSET_INFO *tocs) { return store_str(s.str, (uint) s.length, fromcs, tocs); } bool store_binary_string(const char *str, size_t length) { return store_str(str, (uint) length, &my_charset_bin, &my_charset_bin); } bool store_ident(const LEX_CSTRING &s) { return store_lex_cstring(s, system_charset_info, character_set_results()); } // End of wrappers virtual bool send_out_parameters(List<Item_param> *sp_params)=0; #ifdef EMBEDDED_LIBRARY bool begin_dataset(); bool begin_dataset(THD *thd, uint numfields); virtual void remove_last_row() {} #else void remove_last_row() {} #endif enum enum_protocol_type { /* Before adding a new type, please make sure there is enough storage for it in Query_cache_query_flags. */ PROTOCOL_TEXT= 0, PROTOCOL_BINARY= 1, PROTOCOL_LOCAL= 2, PROTOCOL_DISCARD= 3 /* Should be last, not used by Query_cache */ }; virtual enum enum_protocol_type type()= 0; virtual bool net_send_eof(THD *thd, uint server_status, uint statement_warn_count); bool net_send_error(THD *thd, uint sql_errno, const char *err, const char* sqlstate); void end_statement(); }; /** Class used for the old (MySQL 4.0 protocol). */ class Protocol_text :public Protocol { StringBuffer<FLOATING_POINT_BUFFER> buffer; bool store_numeric_string_aux(const char *from, size_t length); public: Protocol_text(THD *thd_arg, ulong prealloc= 0) :Protocol(thd_arg) { if (prealloc) packet->alloc(prealloc); } void prepare_for_resend() override; bool store_null() override; bool store_tiny(longlong from) override; bool store_short(longlong from) override; bool store_long(longlong from) override; bool store_longlong(longlong from, bool unsigned_flag) override; bool store_decimal(const my_decimal *) override; bool store_str(const char *from, size_t length, CHARSET_INFO *fromcs, CHARSET_INFO *tocs) override; bool store_datetime(MYSQL_TIME *time, int decimals) override; bool store_date(MYSQL_TIME *time) override; bool store_time(MYSQL_TIME *time, int decimals) override; bool store_float(float nr, uint32 decimals) override; bool store_double(double from, uint32 decimals) override; bool store(Field *field) override; bool send_out_parameters(List<Item_param> *sp_params) override; bool store_numeric_zerofill_str(const char *from, size_t length, protocol_send_type_t send_type); #ifdef EMBEDDED_LIBRARY void remove_last_row() override; #endif bool store_field_metadata(const THD *thd, const Send_field &field, CHARSET_INFO *charset_for_protocol, uint pos); bool store_item_metadata(THD *thd, Item *item, uint pos); bool store_field_metadata_for_list_fields(const THD *thd, Field *field, const TABLE_LIST *table_list, uint pos); enum enum_protocol_type type() override { return PROTOCOL_TEXT; }; }; class Protocol_binary final :public Protocol { private: uint bit_fields; public: Protocol_binary(THD *thd_arg) :Protocol(thd_arg) {} bool prepare_for_send(uint num_columns) override; void prepare_for_resend() override; #ifdef EMBEDDED_LIBRARY bool write() override; bool net_store_data(const uchar *from, size_t length) override; bool net_store_data_cs(const uchar *from, size_t length, CHARSET_INFO *fromcs, CHARSET_INFO *tocs) override; #endif bool store_null() override; bool store_tiny(longlong from) override; bool store_short(longlong from) override; bool store_long(longlong from) override; bool store_longlong(longlong from, bool unsigned_flag) override; bool store_decimal(const my_decimal *) override; bool store_str(const char *from, size_t length, CHARSET_INFO *fromcs, CHARSET_INFO *tocs) override; bool store_datetime(MYSQL_TIME *time, int decimals) override; bool store_date(MYSQL_TIME *time) override; bool store_time(MYSQL_TIME *time, int decimals) override; bool store_float(float nr, uint32 decimals) override; bool store_double(double from, uint32 decimals) override; bool store(Field *field) override; bool send_out_parameters(List<Item_param> *sp_params) override; enum enum_protocol_type type() override { return PROTOCOL_BINARY; }; }; /* A helper for "ANALYZE $stmt" which looks a real network procotol but doesn't write results to the network. At first glance, class select_send looks like a more appropriate place to implement the "write nothing" hook. This is not true, because - we need to evaluate the value of every item, and do it the way select_send does it (i.e. call item->val_int() or val_real() or...) - select_send::send_data() has some other code, like telling the storage engine that the row can be unlocked. We want to keep that also. as a result, "ANALYZE $stmt" uses a select_send_analyze which still uses select_send::send_data() & co., and also uses Protocol_discard object. */ class Protocol_discard final : public Protocol { public: Protocol_discard(THD *thd_arg) : Protocol(thd_arg) {} bool write() override { return 0; } bool send_result_set_metadata(List<Item> *, uint) override { return 0; } bool send_eof(uint, uint) override { return 0; } void prepare_for_resend() override { IF_DBUG(field_pos= 0,); } bool send_out_parameters(List<Item_param> *sp_params) override { return false; } /* Provide dummy overrides for any storage methods so that we avoid allocating and copying of data */ bool store_null() override { return false; } bool store_tiny(longlong) override { return false; } bool store_short(longlong) override { return false; } bool store_long(longlong) override { return false; } bool store_longlong(longlong, bool) override { return false; } bool store_decimal(const my_decimal *) override { return false; } bool store_str(const char *, size_t, CHARSET_INFO *, CHARSET_INFO *) override { return false; } bool store_datetime(MYSQL_TIME *, int) override { return false; } bool store_date(MYSQL_TIME *) override { return false; } bool store_time(MYSQL_TIME *, int) override { return false; } bool store_float(float, uint32) override { return false; } bool store_double(double, uint32) override { return false; } bool store(Field *) override { return false; } enum enum_protocol_type type() override { return PROTOCOL_DISCARD; }; }; void send_warning(THD *thd, uint sql_errno, const char *err=0); void net_send_progress_packet(THD *thd); uchar *net_store_data(uchar *to,const uchar *from, size_t length); uchar *net_store_data(uchar *to,int32 from); uchar *net_store_data(uchar *to,longlong from); #endif /* PROTOCOL_INCLUDED */
SIMPAN PERUBAHAN