Linux host45.registrar-servers.com 4.18.0-513.18.1.lve.2.el8.x86_64 #1 SMP Sat Mar 30 15:36:11 UTC 2024 x86_64
Apache
: 198.54.116.152 | : 216.73.216.59
Cant Read [ /etc/named.conf ]
8.1.32
bankpromax
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
README
+ Create Folder
+ Create File
/
usr /
include /
mysql /
server /
private /
[ HOME SHELL ]
Name
Size
Permission
Action
atomic
[ DIR ]
drwxr-xr-x
aligned.h
1.11
KB
-rw-r--r--
aria_backup.h
1.51
KB
-rw-r--r--
assume_aligned.h
2.29
KB
-rw-r--r--
authors.h
9.9
KB
-rw-r--r--
backup.h
1.66
KB
-rw-r--r--
bounded_queue.h
5.95
KB
-rw-r--r--
client_settings.h
1.89
KB
-rw-r--r--
compat56.h
2.23
KB
-rw-r--r--
config.h
14.23
KB
-rw-r--r--
contributors.h
4.76
KB
-rw-r--r--
create_options.h
4.42
KB
-rw-r--r--
create_tmp_table.h
2.74
KB
-rw-r--r--
cset_narrowing.h
3.88
KB
-rw-r--r--
custom_conf.h
1.06
KB
-rw-r--r--
datadict.h
1.66
KB
-rw-r--r--
ddl_log.h
12.39
KB
-rw-r--r--
debug.h
1.21
KB
-rw-r--r--
debug_sync.h
2
KB
-rw-r--r--
derived_handler.h
2.32
KB
-rw-r--r--
derror.h
980
B
-rw-r--r--
des_key_file.h
1.21
KB
-rw-r--r--
discover.h
1.53
KB
-rw-r--r--
dur_prop.h
1.06
KB
-rw-r--r--
embedded_priv.h
1.69
KB
-rw-r--r--
event_data_objects.h
4.09
KB
-rw-r--r--
event_db_repository.h
3.56
KB
-rw-r--r--
event_parse_data.h
2.83
KB
-rw-r--r--
event_queue.h
3.36
KB
-rw-r--r--
event_scheduler.h
3.21
KB
-rw-r--r--
events.h
4.59
KB
-rw-r--r--
field.h
215.25
KB
-rw-r--r--
field_comp.h
1.15
KB
-rw-r--r--
filesort.h
7.11
KB
-rw-r--r--
filesort_utils.h
8
KB
-rw-r--r--
ft_global.h
3.04
KB
-rw-r--r--
gcalc_slicescan.h
16.87
KB
-rw-r--r--
gcalc_tools.h
11.62
KB
-rw-r--r--
grant.h
2.69
KB
-rw-r--r--
group_by_handler.h
3.45
KB
-rw-r--r--
gstream.h
2.38
KB
-rw-r--r--
ha_handler_stats.h
2.28
KB
-rw-r--r--
ha_partition.h
62.9
KB
-rw-r--r--
ha_sequence.h
6.1
KB
-rw-r--r--
handle_connections_win.h
884
B
-rw-r--r--
handler.h
196.46
KB
-rw-r--r--
hash.h
4.34
KB
-rw-r--r--
hash_filo.h
5.55
KB
-rw-r--r--
heap.h
9.26
KB
-rw-r--r--
hostname.h
5.29
KB
-rw-r--r--
ilist.h
6.88
KB
-rw-r--r--
init.h
852
B
-rw-r--r--
innodb_priv.h
1.29
KB
-rw-r--r--
item.h
272.64
KB
-rw-r--r--
item_cmpfunc.h
131.86
KB
-rw-r--r--
item_create.h
11.23
KB
-rw-r--r--
item_func.h
133.45
KB
-rw-r--r--
item_geofunc.h
37.99
KB
-rw-r--r--
item_jsonfunc.h
21.99
KB
-rw-r--r--
item_row.h
5.1
KB
-rw-r--r--
item_strfunc.h
70.55
KB
-rw-r--r--
item_subselect.h
57.77
KB
-rw-r--r--
item_sum.h
70.59
KB
-rw-r--r--
item_timefunc.h
63.1
KB
-rw-r--r--
item_vers.h
4.23
KB
-rw-r--r--
item_windowfunc.h
33.51
KB
-rw-r--r--
item_xmlfunc.h
4.5
KB
-rw-r--r--
json_table.h
9.28
KB
-rw-r--r--
key.h
2.08
KB
-rw-r--r--
keycaches.h
1.95
KB
-rw-r--r--
lex.h
29.13
KB
-rw-r--r--
lex_string.h
3.97
KB
-rw-r--r--
lex_symbol.h
1.29
KB
-rw-r--r--
lf.h
6.31
KB
-rw-r--r--
lock.h
2.15
KB
-rw-r--r--
log.h
45
KB
-rw-r--r--
log_event.h
182.04
KB
-rw-r--r--
log_event_data_type.h
1.85
KB
-rw-r--r--
log_event_old.h
19.37
KB
-rw-r--r--
log_slow.h
2.38
KB
-rw-r--r--
maria.h
5.73
KB
-rw-r--r--
mariadb.h
1.25
KB
-rw-r--r--
mdl.h
37.57
KB
-rw-r--r--
mem_root_array.h
6.94
KB
-rw-r--r--
message.h
1.17
KB
-rw-r--r--
multi_range_read.h
22.64
KB
-rw-r--r--
my_alarm.h
2.37
KB
-rw-r--r--
my_apc.h
4.64
KB
-rw-r--r--
my_atomic.h
7.11
KB
-rw-r--r--
my_atomic_wrapper.h
2.98
KB
-rw-r--r--
my_base.h
26.57
KB
-rw-r--r--
my_bit.h
6.05
KB
-rw-r--r--
my_bitmap.h
5.74
KB
-rw-r--r--
my_check_opt.h
2.56
KB
-rw-r--r--
my_compare.h
10.93
KB
-rw-r--r--
my_counter.h
1.68
KB
-rw-r--r--
my_cpu.h
4.74
KB
-rw-r--r--
my_crypt.h
904
B
-rw-r--r--
my_decimal.h
14.15
KB
-rw-r--r--
my_default.h
1.84
KB
-rw-r--r--
my_handler_errors.h
4.77
KB
-rw-r--r--
my_json_writer.h
17.95
KB
-rw-r--r--
my_libwrap.h
1.16
KB
-rw-r--r--
my_md5.h
1.45
KB
-rw-r--r--
my_minidump.h
848
B
-rw-r--r--
my_nosys.h
1.4
KB
-rw-r--r--
my_rdtsc.h
8.23
KB
-rw-r--r--
my_rnd.h
1.04
KB
-rw-r--r--
my_service_manager.h
2
KB
-rw-r--r--
my_stack_alloc.h
6.34
KB
-rw-r--r--
my_stacktrace.h
3.14
KB
-rw-r--r--
my_time.h
10.22
KB
-rw-r--r--
my_tree.h
3.9
KB
-rw-r--r--
my_uctype.h
67.9
KB
-rw-r--r--
my_user.h
1.1
KB
-rw-r--r--
myisam.h
17.1
KB
-rw-r--r--
myisamchk.h
4.61
KB
-rw-r--r--
myisammrg.h
4.78
KB
-rw-r--r--
myisampack.h
14.58
KB
-rw-r--r--
mysqld.h
39.55
KB
-rw-r--r--
mysqld_default_groups.h
204
B
-rw-r--r--
mysqld_suffix.h
1.17
KB
-rw-r--r--
mysys_err.h
2.95
KB
-rw-r--r--
opt_range.h
58.19
KB
-rw-r--r--
opt_subselect.h
14.21
KB
-rw-r--r--
opt_trace.h
8.29
KB
-rw-r--r--
opt_trace_context.h
3.21
KB
-rw-r--r--
parse_file.h
4.28
KB
-rw-r--r--
partition_element.h
5.09
KB
-rw-r--r--
partition_info.h
18.85
KB
-rw-r--r--
password.h
1.14
KB
-rw-r--r--
pfs_file_provider.h
3.08
KB
-rw-r--r--
pfs_idle_provider.h
1.35
KB
-rw-r--r--
pfs_memory_provider.h
1.59
KB
-rw-r--r--
pfs_metadata_provider.h
1.85
KB
-rw-r--r--
pfs_socket_provider.h
2.21
KB
-rw-r--r--
pfs_stage_provider.h
1.52
KB
-rw-r--r--
pfs_statement_provider.h
4.25
KB
-rw-r--r--
pfs_table_provider.h
2.56
KB
-rw-r--r--
pfs_thread_provider.h
5.43
KB
-rw-r--r--
pfs_transaction_provider.h
2.78
KB
-rw-r--r--
privilege.h
27.97
KB
-rw-r--r--
probes_mysql.h
973
B
-rw-r--r--
probes_mysql_dtrace.h
32.23
KB
-rw-r--r--
probes_mysql_nodtrace.h
4.89
KB
-rw-r--r--
procedure.h
6.63
KB
-rw-r--r--
protocol.h
12.2
KB
-rw-r--r--
proxy_protocol.h
548
B
-rw-r--r--
queues.h
3.4
KB
-rw-r--r--
records.h
3.07
KB
-rw-r--r--
repl_failsafe.h
1.55
KB
-rw-r--r--
replication.h
15.73
KB
-rw-r--r--
rijndael.h
1.67
KB
-rw-r--r--
rowid_filter.h
15.11
KB
-rw-r--r--
rpl_constants.h
3.28
KB
-rw-r--r--
rpl_filter.h
4.43
KB
-rw-r--r--
rpl_gtid.h
13.36
KB
-rw-r--r--
rpl_injector.h
9.4
KB
-rw-r--r--
rpl_mi.h
14.64
KB
-rw-r--r--
rpl_parallel.h
17.05
KB
-rw-r--r--
rpl_record.h
1.55
KB
-rw-r--r--
rpl_record_old.h
1.37
KB
-rw-r--r--
rpl_reporting.h
3.63
KB
-rw-r--r--
rpl_rli.h
31.98
KB
-rw-r--r--
rpl_tblmap.h
3.1
KB
-rw-r--r--
rpl_utility.h
9.4
KB
-rw-r--r--
scheduler.h
3.12
KB
-rw-r--r--
scope.h
4.29
KB
-rw-r--r--
select_handler.h
2.18
KB
-rw-r--r--
semisync.h
2.23
KB
-rw-r--r--
semisync_master.h
24.96
KB
-rw-r--r--
semisync_master_ack_receiver.h
8.5
KB
-rw-r--r--
semisync_slave.h
3.65
KB
-rw-r--r--
service_versions.h
2
KB
-rw-r--r--
session_tracker.h
13.94
KB
-rw-r--r--
set_var.h
16.16
KB
-rw-r--r--
slave.h
11.99
KB
-rw-r--r--
socketpair.h
842
B
-rw-r--r--
source_revision.h
67
B
-rw-r--r--
sp.h
22.06
KB
-rw-r--r--
sp_cache.h
2
KB
-rw-r--r--
sp_head.h
63
KB
-rw-r--r--
sp_pcontext.h
24.31
KB
-rw-r--r--
sp_rcontext.h
14
KB
-rw-r--r--
span.h
3.84
KB
-rw-r--r--
spatial.h
21.78
KB
-rw-r--r--
sql_acl.h
13.8
KB
-rw-r--r--
sql_admin.h
2.85
KB
-rw-r--r--
sql_alloc.h
1.69
KB
-rw-r--r--
sql_alter.h
14.92
KB
-rw-r--r--
sql_analyse.h
10.86
KB
-rw-r--r--
sql_analyze_stmt.h
12.38
KB
-rw-r--r--
sql_array.h
6.71
KB
-rw-r--r--
sql_audit.h
13.62
KB
-rw-r--r--
sql_base.h
25.27
KB
-rw-r--r--
sql_basic_types.h
9.3
KB
-rw-r--r--
sql_binlog.h
895
B
-rw-r--r--
sql_bitmap.h
7.66
KB
-rw-r--r--
sql_bootstrap.h
1.77
KB
-rw-r--r--
sql_cache.h
21.17
KB
-rw-r--r--
sql_callback.h
1.51
KB
-rw-r--r--
sql_class.h
261.11
KB
-rw-r--r--
sql_cmd.h
9.2
KB
-rw-r--r--
sql_connect.h
3.99
KB
-rw-r--r--
sql_const.h
10.96
KB
-rw-r--r--
sql_crypt.h
1.4
KB
-rw-r--r--
sql_cte.h
16.15
KB
-rw-r--r--
sql_cursor.h
2.26
KB
-rw-r--r--
sql_db.h
2.38
KB
-rw-r--r--
sql_debug.h
5.51
KB
-rw-r--r--
sql_delete.h
1.31
KB
-rw-r--r--
sql_derived.h
1.26
KB
-rw-r--r--
sql_digest.h
3.73
KB
-rw-r--r--
sql_digest_stream.h
1.53
KB
-rw-r--r--
sql_do.h
954
B
-rw-r--r--
sql_error.h
38.66
KB
-rw-r--r--
sql_explain.h
28.34
KB
-rw-r--r--
sql_expression_cache.h
4.26
KB
-rw-r--r--
sql_get_diagnostics.h
7.68
KB
-rw-r--r--
sql_handler.h
2.84
KB
-rw-r--r--
sql_help.h
995
B
-rw-r--r--
sql_hset.h
3.32
KB
-rw-r--r--
sql_i_s.h
8.04
KB
-rw-r--r--
sql_insert.h
2.59
KB
-rw-r--r--
sql_join_cache.h
47.53
KB
-rw-r--r--
sql_lex.h
168.5
KB
-rw-r--r--
sql_lifo_buffer.h
9.45
KB
-rw-r--r--
sql_limit.h
3.11
KB
-rw-r--r--
sql_list.h
21.93
KB
-rw-r--r--
sql_load.h
1.25
KB
-rw-r--r--
sql_locale.h
2.64
KB
-rw-r--r--
sql_manager.h
960
B
-rw-r--r--
sql_mode.h
6.58
KB
-rw-r--r--
sql_parse.h
8.43
KB
-rw-r--r--
sql_partition.h
11.79
KB
-rw-r--r--
sql_partition_admin.h
5.8
KB
-rw-r--r--
sql_plist.h
7.55
KB
-rw-r--r--
sql_plugin.h
7.37
KB
-rw-r--r--
sql_plugin_compat.h
2.18
KB
-rw-r--r--
sql_prepare.h
11.14
KB
-rw-r--r--
sql_priv.h
18.16
KB
-rw-r--r--
sql_profile.h
7.63
KB
-rw-r--r--
sql_reload.h
1.01
KB
-rw-r--r--
sql_rename.h
982
B
-rw-r--r--
sql_repl.h
2.97
KB
-rw-r--r--
sql_schema.h
3.23
KB
-rw-r--r--
sql_select.h
86.81
KB
-rw-r--r--
sql_sequence.h
5.06
KB
-rw-r--r--
sql_servers.h
1.74
KB
-rw-r--r--
sql_show.h
9.39
KB
-rw-r--r--
sql_signal.h
3.28
KB
-rw-r--r--
sql_sort.h
21.45
KB
-rw-r--r--
sql_statistics.h
12.16
KB
-rw-r--r--
sql_string.h
38.84
KB
-rw-r--r--
sql_table.h
9.39
KB
-rw-r--r--
sql_tablespace.h
956
B
-rw-r--r--
sql_test.h
1.55
KB
-rw-r--r--
sql_time.h
8.18
KB
-rw-r--r--
sql_trigger.h
12.04
KB
-rw-r--r--
sql_truncate.h
2.03
KB
-rw-r--r--
sql_tvc.h
2.36
KB
-rw-r--r--
sql_type.h
288.51
KB
-rw-r--r--
sql_type_fixedbin.h
62.81
KB
-rw-r--r--
sql_type_fixedbin_storage.h
5.34
KB
-rw-r--r--
sql_type_geom.h
18.64
KB
-rw-r--r--
sql_type_int.h
9.77
KB
-rw-r--r--
sql_type_json.h
6.01
KB
-rw-r--r--
sql_type_real.h
1.23
KB
-rw-r--r--
sql_type_string.h
1.59
KB
-rw-r--r--
sql_udf.h
4.74
KB
-rw-r--r--
sql_union.h
1.04
KB
-rw-r--r--
sql_update.h
1.88
KB
-rw-r--r--
sql_view.h
2.41
KB
-rw-r--r--
sql_window.h
6.65
KB
-rw-r--r--
ssl_compat.h
3.07
KB
-rw-r--r--
strfunc.h
2.22
KB
-rw-r--r--
structs.h
25.76
KB
-rw-r--r--
sys_vars_shared.h
2.67
KB
-rw-r--r--
t_ctype.h
5.51
KB
-rw-r--r--
table.h
113.03
KB
-rw-r--r--
table_cache.h
4.13
KB
-rw-r--r--
thr_alarm.h
2.86
KB
-rw-r--r--
thr_lock.h
7.18
KB
-rw-r--r--
thr_malloc.h
1.17
KB
-rw-r--r--
thr_timer.h
1.53
KB
-rw-r--r--
thread_cache.h
5.77
KB
-rw-r--r--
threadpool.h
4.7
KB
-rw-r--r--
threadpool_generic.h
3.88
KB
-rw-r--r--
threadpool_winsockets.h
2.24
KB
-rw-r--r--
transaction.h
1.43
KB
-rw-r--r--
tzfile.h
4.9
KB
-rw-r--r--
tztime.h
3.32
KB
-rw-r--r--
uniques.h
4.12
KB
-rw-r--r--
unireg.h
7.54
KB
-rw-r--r--
vers_string.h
2.47
KB
-rw-r--r--
violite.h
9.85
KB
-rw-r--r--
waiting_threads.h
4.43
KB
-rw-r--r--
welcome_copyright_notice.h
1.19
KB
-rw-r--r--
win_tzname_data.h
6.35
KB
-rw-r--r--
winservice.h
1.17
KB
-rw-r--r--
wqueue.h
1.53
KB
-rw-r--r--
wsrep.h
3.23
KB
-rw-r--r--
wsrep_applier.h
2.64
KB
-rw-r--r--
wsrep_binlog.h
3.36
KB
-rw-r--r--
wsrep_client_service.h
2.5
KB
-rw-r--r--
wsrep_client_state.h
1.53
KB
-rw-r--r--
wsrep_condition_variable.h
1.45
KB
-rw-r--r--
wsrep_high_priority_service.h
4.8
KB
-rw-r--r--
wsrep_mutex.h
1.19
KB
-rw-r--r--
wsrep_mysqld.h
20.64
KB
-rw-r--r--
wsrep_mysqld_c.h
1.2
KB
-rw-r--r--
wsrep_on.h
1.68
KB
-rw-r--r--
wsrep_priv.h
1.6
KB
-rw-r--r--
wsrep_schema.h
4.83
KB
-rw-r--r--
wsrep_server_service.h
3.55
KB
-rw-r--r--
wsrep_server_state.h
2.23
KB
-rw-r--r--
wsrep_sst.h
3.86
KB
-rw-r--r--
wsrep_storage_service.h
1.77
KB
-rw-r--r--
wsrep_thd.h
10.9
KB
-rw-r--r--
wsrep_trans_observer.h
17.69
KB
-rw-r--r--
wsrep_types.h
997
B
-rw-r--r--
wsrep_utils.h
9.07
KB
-rw-r--r--
wsrep_var.h
4.5
KB
-rw-r--r--
wsrep_xid.h
1.51
KB
-rw-r--r--
xa.h
1.8
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : sql_type_geom.h
#ifndef SQL_TYPE_GEOM_H_INCLUDED #define SQL_TYPE_GEOM_H_INCLUDED /* Copyright (c) 2015 MariaDB Foundation Copyright (c) 2019, 2022, 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 Street, Fifth Floor, Boston, MA 02111-1301 USA */ #ifdef USE_PRAGMA_IMPLEMENTATION #pragma implementation // gcc: Class implementation #endif #include "mariadb.h" #include "sql_type.h" #ifdef HAVE_SPATIAL class Type_handler_geometry: public Type_handler_string_result { public: enum geometry_types { GEOM_GEOMETRY = 0, GEOM_POINT = 1, GEOM_LINESTRING = 2, GEOM_POLYGON = 3, GEOM_MULTIPOINT = 4, GEOM_MULTILINESTRING = 5, GEOM_MULTIPOLYGON = 6, GEOM_GEOMETRYCOLLECTION = 7 }; static bool check_type_geom_or_binary(const LEX_CSTRING &opname, const Item *item); static bool check_types_geom_or_binary(const LEX_CSTRING &opname, Item * const *args, uint start, uint end); static const Type_handler_geometry *type_handler_geom_by_type(uint type); LEX_CSTRING extended_metadata_data_type_name() const; public: virtual ~Type_handler_geometry() {} enum_field_types field_type() const override { return MYSQL_TYPE_GEOMETRY; } bool Item_append_extended_type_info(Send_field_extended_metadata *to, const Item *item) const override { LEX_CSTRING tmp= extended_metadata_data_type_name(); return tmp.length ? to->set_data_type_name(tmp) : false; } bool is_param_long_data_type() const override { return true; } uint32 max_display_length_for_field(const Conv_source &src) const override; uint32 calc_pack_length(uint32 length) const override; const Type_collection *type_collection() const override; const Type_handler *type_handler_for_comparison() const override; virtual geometry_types geometry_type() const { return GEOM_GEOMETRY; } virtual Item *create_typecast_item(THD *thd, Item *item, const Type_cast_attributes &attr) const override; const Type_handler *type_handler_frm_unpack(const uchar *buffer) const override; bool is_binary_compatible_geom_super_type_for(const Type_handler_geometry *th) const { return geometry_type() == GEOM_GEOMETRY || geometry_type() == th->geometry_type(); } bool type_can_have_key_part() const override { return true; } bool subquery_type_allows_materialization(const Item *, const Item *, bool) const override { return false; // Materialization does not work with GEOMETRY columns } void Item_param_set_param_func(Item_param *param, uchar **pos, ulong len) const override; bool Item_param_set_from_value(THD *thd, Item_param *param, const Type_all_attributes *attr, const st_value *value) const override; Field *make_conversion_table_field(MEM_ROOT *root, TABLE *table, uint metadata, const Field *target) const override; Log_event_data_type user_var_log_event_data_type(uint charset_nr) const override { return Log_event_data_type(name().lex_cstring(), result_type(), charset_nr, false/*unsigned*/); } uint Column_definition_gis_options_image(uchar *buff, const Column_definition &def) const override; bool Column_definition_data_type_info_image(Binary_string *to, const Column_definition &def) const override { return false; } void Column_definition_attributes_frm_pack(const Column_definition_attributes *at, uchar *buff) const override; bool Column_definition_attributes_frm_unpack(Column_definition_attributes *attr, TABLE_SHARE *share, const uchar *buffer, LEX_CUSTRING *gis_options) const override; bool Column_definition_fix_attributes(Column_definition *c) const override; void Column_definition_reuse_fix_attributes(THD *thd, Column_definition *c, const Field *field) const override; bool Column_definition_prepare_stage1(THD *thd, MEM_ROOT *mem_root, Column_definition *c, handler *file, ulonglong table_flags, const Column_derived_attributes *derived_attr) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, ulonglong table_flags) const override; bool Key_part_spec_init_primary(Key_part_spec *part, const Column_definition &def, const handler *file) const override; bool Key_part_spec_init_unique(Key_part_spec *part, const Column_definition &def, const handler *file, bool *has_key_needed) const override; bool Key_part_spec_init_multiple(Key_part_spec *part, const Column_definition &def, const handler *file) const override; bool Key_part_spec_init_foreign(Key_part_spec *part, const Column_definition &def, const handler *file) const override; bool Key_part_spec_init_spatial(Key_part_spec *part, const Column_definition &def) const override; Field *make_table_field(MEM_ROOT *root, const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, TABLE_SHARE *share) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, uint32 flags) const override; bool can_return_int() const override { return false; } bool can_return_decimal() const override { return false; } bool can_return_real() const override { return false; } bool can_return_text() const override { return false; } bool can_return_date() const override { return false; } bool can_return_time() const override { return false; } bool Item_func_round_fix_length_and_dec(Item_func_round *) const override; bool Item_func_int_val_fix_length_and_dec(Item_func_int_val *) const override; bool Item_func_abs_fix_length_and_dec(Item_func_abs *) const override; bool Item_func_neg_fix_length_and_dec(Item_func_neg *) const override; bool Item_hybrid_func_fix_attributes(THD *thd, const LEX_CSTRING &name, Type_handler_hybrid_field_type *h, Type_all_attributes *attr, Item **items, uint nitems) const override; bool Item_sum_sum_fix_length_and_dec(Item_sum_sum *) const override; bool Item_sum_avg_fix_length_and_dec(Item_sum_avg *) const override; bool Item_sum_variance_fix_length_and_dec(Item_sum_variance *) const override; bool Item_func_signed_fix_length_and_dec(Item_func_signed *) const override; bool Item_func_unsigned_fix_length_and_dec(Item_func_unsigned *) const override; bool Item_double_typecast_fix_length_and_dec(Item_double_typecast *) const override; bool Item_float_typecast_fix_length_and_dec(Item_float_typecast *) const override; bool Item_decimal_typecast_fix_length_and_dec(Item_decimal_typecast *) const override; bool Item_char_typecast_fix_length_and_dec(Item_char_typecast *) const override; bool Item_time_typecast_fix_length_and_dec(Item_time_typecast *) const override; bool Item_date_typecast_fix_length_and_dec(Item_date_typecast *) const override; bool Item_datetime_typecast_fix_length_and_dec(Item_datetime_typecast *) const override; }; class Type_handler_point: public Type_handler_geometry { // Binary length of a POINT value: 4 byte SRID + 21 byte WKB POINT static uint octet_length() { return 25; } public: geometry_types geometry_type() const override { return GEOM_POINT; } Item *make_constructor_item(THD *thd, List<Item> *args) const override; bool Key_part_spec_init_primary(Key_part_spec *part, const Column_definition &def, const handler *file) const override; bool Key_part_spec_init_unique(Key_part_spec *part, const Column_definition &def, const handler *file, bool *has_key_needed) const override; bool Key_part_spec_init_multiple(Key_part_spec *part, const Column_definition &def, const handler *file) const override; bool Key_part_spec_init_foreign(Key_part_spec *part, const Column_definition &def, const handler *file) const override; }; class Type_handler_linestring: public Type_handler_geometry { public: geometry_types geometry_type() const override { return GEOM_LINESTRING; } Item *make_constructor_item(THD *thd, List<Item> *args) const override; }; class Type_handler_polygon: public Type_handler_geometry { public: geometry_types geometry_type() const override { return GEOM_POLYGON; } Item *make_constructor_item(THD *thd, List<Item> *args) const override; }; class Type_handler_multipoint: public Type_handler_geometry { public: geometry_types geometry_type() const override { return GEOM_MULTIPOINT; } Item *make_constructor_item(THD *thd, List<Item> *args) const override; }; class Type_handler_multilinestring: public Type_handler_geometry { public: geometry_types geometry_type() const override { return GEOM_MULTILINESTRING; } Item *make_constructor_item(THD *thd, List<Item> *args) const override; }; class Type_handler_multipolygon: public Type_handler_geometry { public: geometry_types geometry_type() const override { return GEOM_MULTIPOLYGON; } Item *make_constructor_item(THD *thd, List<Item> *args) const override; }; class Type_handler_geometrycollection: public Type_handler_geometry { public: geometry_types geometry_type() const override { return GEOM_GEOMETRYCOLLECTION; } Item *make_constructor_item(THD *thd, List<Item> *args) const override; }; extern Named_type_handler<Type_handler_geometry> type_handler_geometry; extern Named_type_handler<Type_handler_point> type_handler_point; extern Named_type_handler<Type_handler_linestring> type_handler_linestring; extern Named_type_handler<Type_handler_polygon> type_handler_polygon; extern Named_type_handler<Type_handler_multipoint> type_handler_multipoint; extern Named_type_handler<Type_handler_multilinestring> type_handler_multilinestring; extern Named_type_handler<Type_handler_multipolygon> type_handler_multipolygon; extern Named_type_handler<Type_handler_geometrycollection> type_handler_geometrycollection; class Type_collection_geometry: public Type_collection { const Type_handler *aggregate_common(const Type_handler *a, const Type_handler *b) const { if (a == b) return a; if (dynamic_cast<const Type_handler_geometry*>(a) && dynamic_cast<const Type_handler_geometry*>(b)) return &type_handler_geometry; return NULL; } const Type_handler *aggregate_if_null(const Type_handler *a, const Type_handler *b) const { return a == &type_handler_null ? b : b == &type_handler_null ? a : NULL; } const Type_handler *aggregate_if_long_blob(const Type_handler *a, const Type_handler *b) const { return a == &type_handler_long_blob ? &type_handler_long_blob : b == &type_handler_long_blob ? &type_handler_long_blob : NULL; } const Type_handler *aggregate_if_string(const Type_handler *a, const Type_handler *b) const; #ifndef DBUG_OFF bool init_aggregators(Type_handler_data *data, const Type_handler *geom) const; #endif public: bool init(Type_handler_data *data) override; const Type_handler *aggregate_for_result(const Type_handler *a, const Type_handler *b) const override; const Type_handler *aggregate_for_comparison(const Type_handler *a, const Type_handler *b) const override; const Type_handler *aggregate_for_min_max(const Type_handler *a, const Type_handler *b) const override; const Type_handler *aggregate_for_num_op(const Type_handler *a, const Type_handler *b) const override { return NULL; } }; extern Type_collection_geometry type_collection_geometry; const Type_handler * Type_collection_geometry_handler_by_name(const LEX_CSTRING &name); #include "field.h" class Field_geom :public Field_blob { const Type_handler_geometry *m_type_handler; public: uint srid; uint precision; enum storage_type { GEOM_STORAGE_WKB= 0, GEOM_STORAGE_BINARY= 1}; enum storage_type storage; Field_geom(uchar *ptr_arg, uchar *null_ptr_arg, uchar null_bit_arg, enum utype unireg_check_arg, const LEX_CSTRING *field_name_arg, TABLE_SHARE *share, uint blob_pack_length, const Type_handler_geometry *gth, uint field_srid) :Field_blob(ptr_arg, null_ptr_arg, null_bit_arg, unireg_check_arg, field_name_arg, share, blob_pack_length, &my_charset_bin), m_type_handler(gth) { srid= field_srid; } enum_conv_type rpl_conv_type_from(const Conv_source &source, const Relay_log_info *rli, const Conv_param ¶m) const override; enum ha_base_keytype key_type() const override { return HA_KEYTYPE_VARBINARY2; } const Type_handler *type_handler() const override { return m_type_handler; } const Type_handler_geometry *type_handler_geom() const { return m_type_handler; } void set_type_handler(const Type_handler_geometry *th) { m_type_handler= th; } enum_field_types type() const override { return MYSQL_TYPE_GEOMETRY; } enum_field_types real_type() const override { return MYSQL_TYPE_GEOMETRY; } Information_schema_character_attributes information_schema_character_attributes() const override { return Information_schema_character_attributes(); } void make_send_field(Send_field *to) override { Field_longstr::make_send_field(to); LEX_CSTRING tmp= m_type_handler->extended_metadata_data_type_name(); if (tmp.length) to->set_data_type_name(tmp); } Data_type_compatibility can_optimize_range(const Item_bool_func *cond, const Item *item, bool is_eq_func) const override; void sql_type(String &str) const override; Copy_func *get_copy_func(const Field *from) const override { const Type_handler_geometry *fth= dynamic_cast<const Type_handler_geometry*>(from->type_handler()); if (fth && m_type_handler->is_binary_compatible_geom_super_type_for(fth)) return get_identical_copy_func(); return do_conv_blob; } bool memcpy_field_possible(const Field *from) const override { const Type_handler_geometry *fth= dynamic_cast<const Type_handler_geometry*>(from->type_handler()); return fth && m_type_handler->is_binary_compatible_geom_super_type_for(fth) && !table->copy_blobs; } bool is_equal(const Column_definition &new_field) const override; int store(const char *to, size_t length, CHARSET_INFO *charset) override; int store(double nr) override; int store(longlong nr, bool unsigned_val) override; int store_decimal(const my_decimal *) override; uint size_of() const override{ return sizeof(*this); } /** Key length is provided only to support hash joins. (compared byte for byte) Ex: SELECT .. FROM t1,t2 WHERE t1.field_geom1=t2.field_geom2. The comparison is not very relevant, as identical geometry might be represented differently, but we need to support it either way. */ uint32 key_length() const override{ return packlength; } uint get_key_image(uchar *buff,uint length, const uchar *ptr_arg, imagetype type_arg) const override; /** Non-nullable GEOMETRY types cannot have defaults, but the underlying blob must still be reset. */ int reset(void) override{ return Field_blob::reset() || !maybe_null(); } bool load_data_set_null(THD *thd) override; bool load_data_set_no_data(THD *thd, bool fixed_format) override; uint get_srid() const { return srid; } void print_key_value(String *out, uint32 length) override { out->append(STRING_WITH_LEN("unprintable_geometry_value")); } Binlog_type_info binlog_type_info() const override; }; #endif // HAVE_SPATIAL #endif // SQL_TYPE_GEOM_H_INCLUDED
Close