当前位置: 首页 > news >正文

mysql源代码目录详解

mysql源代码的目录层次

子目录含义(用途)
BUILD开发者构建脚本。该目录包含用于在各种平台上进行编译的构建开关。每个选项集都有一个子目录。主要的是:alpha,ia64,soloris
Docs文档
client命令行客户端应用程序代码。
cmd-line-utils外部库可增强命令行客户端(libedit和readline)。
dbug调试库。我个人不喜欢使用它,因为它会改变执行力并掩盖时间敏感性错误,但是包括Monty在内的一些开发人员都喜欢它能够打印出执行代码跟踪。要启用它,请将–with-debug添加到构建脚本中的extra_configs中。
extra杂项工具代码。
include包含文件
libmysql客户端库的代码,用于与服务器接口。
libmysqld用于在独立(嵌入式)模式下使用MySQL服务器功能而不连接到数据库的库服务器。
manUnix联机帮助页。
mysys核心可移植性/帮助程序API代码。
regex正则表达式库的代码,使程序员能够操纵正则表达式
scripts一组用于多种不同目的的实用程序脚本。当开发人员编写脚本时并且不知道将其放在哪里,它最终位于此目录中。但是请注意,这是mysqld_safe,所有脚本之王。它用于从命令行启动服务器。
vio低级可移植网络I / O代码。
sqlCatch-all目录,用于用C ++编写的核心服务器代码。这包括解析器和优化器,抽象表处理程序(存储引擎)接口,复制,查询缓存,表锁管理器,用于读取和写入表定义的代码,日志记录代码以及许多其他内容。它确实有一个一些在其他目录中找不到目录的流浪C文件。这也是mysqld.cc的所在地,定义main()的文件,在启动服务器时开始执行。
sql-common一些既在客户端又在服务端使用的代码
stringsmysql中使用的经典字符串包
storage存储引擎
zlibZLIB压缩库的代码。

BUILD

常用的构建脚本。

该目录包含用于在各种平台上进行编译的构建开关。每个选项集都有一个子目录。主要的是:alpha,ia64,soloris。

client

客户端库。

客户端库包括mysql.cc(mysql可执行文件的源代码)和其他实用程序。 MySQL参考手册中提到了大多数实用程序。通常,这些是独立的C程序,它们在“客户端模式”下运行,即它们称为服务器。

目录中的C程序文件为:

get_password.c-从控制台要求输入密码
mysql.cc ---“ MySQL命令工具”
mysqladmin.cc ---维护MySQL数据库
mysqlcheck.c ---检查所有数据库,检查连接等。
mysqldump.c-将表的内容作为SQL语句转储,适合于备份MySQL数据库
mysqlimport.c ---将不同格式的文本文件导入表中
mysqlmanager-pwgen.c --- pwgen代表“密码生成”(当前未维护)
mysqlmanagerc.c --- mysql管理器的入口点(当前未维护)
mysqlshow.c ---显示数据库,表或列
mysqltest.c --- mysql-test套件使用的测试程序,mysql-test-run

config

在构建过程中使用的宏。

Docs

下载BitKeeper后,/Docs几乎为空。二进制和源代码发行版包含一些预格式化的文档文件,例如Info格式(对于Unix)或CHM格式(对于Windows)的MySQL参考手册。

extra

一些较小的独立实用程序。这些程序都是独立的实用程序,也就是说,它们具有main()函数,其主要作用是显示MySQL服务器需要或产生的信息。大多数都不重要。它们如下:

  • comp_err.c-从多语言源生成错误消息文件
  • my_print_defaults.c-从my.ini文件中打印参数。也可以在脚本中使用以启用my.ini文件的处理。
  • mysql_waitpid.c —等待程序终止。当需要等待进程终止时,此脚本对于shell脚本很有用。
  • perror.c —“打印错误” —给定的错误编号,显示消息
  • replace.c —替换文本文件或管道中的字符串
  • resolve_stack_dump.c-显示来自MySQL堆栈转储的符号信息,通常在mysql.err文件中找到
  • resolveip.c-将IP地址转换为主机名,反之亦然

include

​ 大多数库的头文件(* .h);包括随MySQL二进制发行版一起发行的所有头文件。

​ 这些文件可能包含在C程序文件中。请注意,每个目录也将具有自己的* .h文件,以包括在其自己的* .c程序中。包含目录中的* .h文件是可能包含多个位置的文件。

​ 例如,mysys目录包含一个名为rijndael.c的C文件,但不包含rijndael.h。包含目录包含rijndael.h。进一步查看,您会发现rijndael.h也包含在其他位置:my_aes.c和my_aes.h。

include目录包含55个* .h(头)文件。

innobase

Innobase(InnoDB)表处理程序。

这些文件的完整说明可以在本文档的其他地方找到。

heap

HEAP(MEMORY)表处理程序。

所有的MySQL表处理程序(即MySQL本身产生的处理程序)都具有名称和功能相似的文件。因此,此(堆)目录包含myisam目录的许多重复项(用于MyISAM表处理程序)。在以下列表中,此类重复项已用“ *”标记。例如,您会发现\ heap \ hp_extra.c在myisam目录(\ myisam \ mi_extra.c)中具有相似的注释,具有近似的等效项。 (由于HEAP具有不同的结构,因此出现一些差异。HEAP不需要使用ISAM和MyISAM使用的B树索引;而是使用哈希索引。最重要的是,HEAP完全在内存中。File在这种情况下,I/ O例程失去了一些活力。)

hp_block.c ---读取/写入块(即页面)
hp_clear.c ---删除表中的所有记录
hp_close.c --- *关闭数据库
hp_create.c --- *创建表
hp_delete.c --- *删除一行
hp_extra.c --- *用于在优化时设置选项和缓冲区大小
hp_hash.c-用于保存密钥的哈希函数
hp_info.c --- *有关数据库状态的信息
hp_open.c--*打开数据库
hp_panic.c --- * hp_panic例程,用于关闭和刷新
hp_rename.c --- *重命名表
hp_rfirst.c --- *通过特定键读取第一行(很短)
hp_rkey.c --- *使用键读取记录
hp_rlast.c --- *使用与先前读取的行相同的键读取最后一行
hp_rnext.c --- *使用与先前读取的行相同的键读取下一行
hp_rprev.c --- *使用与先前读取的行相同的键读取先前的行
hp_rrnd.c --- *根据位置读取一行
hp_rsame.c --- *使用位置读取或基于键的读取来查找当前行
hp_scan.c --- *顺序读取所有行
hp_static.c --- *静态变量(非常短)
hp_test1.c --- *测试基本功能
hp_test2.c --- *测试数据库并存储结果
hp_update.c --- *更新现有行
hp_write.c --- *插入新行

libmysql

MySQL库,第1部分。

此处的文件用于将MySQL生成为库(例如Windows DLL)。这个想法是,与其生成单独的mysql(客户端)程序和mysqld(服务器)程序,不如生成一个库。客户端部分仅发送服务器部分,而不发送消息。

libmysql文件分为三个目录:libmysql(该目录),libmysql_r(下一个目录)和libmysqld(此后的下一个目录)。

“ mysql库”具有一些客户端连接模块。例如,如本手册前面的部分所述,对libmysql / libmysql.c进行了讨论,该程序将数据包从客户端发送到服务器。 libmysql目录(以及下面的libmysqld目录)中的许多条目在Linux上都是“符号链接”,也就是说,它们实际上是指向其他目录中文件的指针。

此目录上的程序文件为:

  • conf_to_src.c-与字符集有关

  • dll.c-初始化dll库

  • errmsg.c —英文错误消息,比较\ mysys \ errors.c

  • get_password.c-获取密码

  • libmysql.c —实现MySQL API的代码,即要连接到MySQL的客户端将调用的函数

  • manager.c-用MySQL管理器初始化/连接/获取

一些用户提供的手册页

​ 这些是用户提供的特殊标记格式的“手册”(手册)页面。该格式在文档中描述,标题为“ man手册页”或“宏以格式化手册页”,您可以在Linux目录或Internet中找到该格式。

myisam

MyISAM表处理程序。

此子目录中的C文件分为六个主要组:

ft * .c文件--- ft代表“全文”,由Sergei Golubchik提供的代码
mi * .c文件--- mi代表“myIsam”,这些是Myisam的主要程序
myisam * .c文件---例如,“ myisamchk”实用程序例程功能源
rt * .c文件--- rt代表“ rtree”,某些代码由Alexander Barkov编写
sp * .c文件--- sp代表“space”,某些代码由Ramil Kalimullin编写
sort.c ---这是一个文件,用于对索引进行排序以创建索引

“全文”,“ rtree”和“空间”程序集是出于特殊目的,因此,本文档仅关注mi * .c“ myisam” C程序。他们是:

mi_cache.c-用于从缓存中读取记录
mi_changed.c ---用于设置“ changed”标志的单个例程(很短)
mi_check.c ---用于检查和修复表。由myisamchk程序和MySQL服务器使用。
mi_checksum.c-计算一行的校验和
mi_close.c ---关闭数据库
mi_create.c-创建一个表
mi_dbug.c ---支持与“ dbug”一起使用的例程(请参见\ dbug描述)
mi_delete.c ---删除一行
mi_delete_all.c ---删除所有行
mi_delete_table.c ---删除表(很短)
mi_dynrec.c-处理空格记录和blob的函数
mi_extra.c-优化时设置选项和缓冲区大小
mi_info.c-返回打开表的有用的基本信息
mi_key.c-用于处理密钥
mi_keycache.c-用于处理密钥缓存
mi_locking.c-锁定数据库
mi_log.c ---将命令保存在myisamlog程序可以读取的日志文件中。可用于精确地重放表的一组更改。
mi_open.c-打开数据库
mi_packrec.c-从使用myisampack压缩的数据文件中读取
mi_page.c ---读取和写入包含密钥的页面
mi_panic.c --- mi_panic例程,可能用于突然关机
mi_preload.c-将索引预加载到密钥缓存中
mi_range.c ---两个键之间有多少条记录的大概计数
mi_rename.c-重命名表
mi_rfirst.c ---通过特定键读取第一行(很短)
mi_rkey.c ---使用密钥读取记录
mi_rlast.c ---使用与先前读取的行相同的键读取最后一行
mi_rnext.c ---使用与先前读取的行相同的键读取下一行
mi_rnext_same.c-与mi_rnext.c相同,但是如果密钥更改则中止
mi_rprev.c ---使用与先前读取的行相同的键读取先前的行
mi_rrnd.c ---根据位置读取一行
mi_rsame.c-使用位置读取或基于键的读取来查找当前行
mi_rsamepos.c-位置读取
mi_scan.c ---顺序读取所有行
mi_search.c-密钥处理功能
mi_static.c ---静态变量(很短)
mi_statrec.c-处理固定长度记录的功能
mi_test1.c-测试基本功能
mi_test2.c ---测试数据库并存储结果
mi_test3.c-测试锁定
mi_unique.c-检查行是否唯一的功能
mi_update.c-更新现有行
mi_write.c ---插入新行

myisammrg

MyISAM合并表处理程序。

与其他表处理程序一样,您会发现myissammrg目录中的* .c文件在myisam目录中具有对等文件。实际上,对myisammrg程序的一般描述几乎总是正确的:myisammrg函数检查一个参数,myisammrg函数制定一个表达式以传递给myisam函数,myisammrg调用myisam函数,myisammrg函数返回。

这些是myisammrg目录中的22个文件,其中包含与myisam函数或程序相关的注释:

myrg_close.c --- mi_close.c
myrg_create.c --- mi_create.c
myrg_delete.c --- mi_delete.c /删除最后读取的记录
myrg_extra.c --- mi_extra.c /“我们想做的额外功能...”
myrg_info.c--mi_info.c /显示有关mymerge文件的信息
myrg_locking.c--mi_locking.c /锁定数据库
myrg_open.c--mi_open.c /打开MyISAM MERGE表
myrg_panic.c --- mi_panic.c /急着关闭
myrg_queue.c ---根据密钥读取记录
myrg_range.c --- mi_range.c /查找范围内的记录
myrg_rfirst.c --- mi_rfirst.c /根据特定键读取第一条记录
myrg_rkey.c--mi_rkey.c /基于密钥读取记录
myrg_rlast.c --- mi_rlast.c /使用与上次读取相同的键读取最后一行
myrg_rnext.c --- mi_rnext.c /使用与先前读取相同的键读取下一行
myrg_rnext_same.c--mi_rnext_same.c /使用相同的键读取下一行
myrg_rprev.c --- mi_rprev.c /使用相同的键读取上一行
myrg_rrnd.c --- mi_rrnd.c /随机访问读取记录
myrg_rsame.c--mi_rsame.c /调用mi_rsame函数,请参见\ myisam \ mi_rsame.c
myrg_static.c --- mi_static.c /静态变量声明
myrg_update.c--mi_update.c /调用mi_update函数,请参见\ myisam \ mi_update.c
myrg_write.c--mi_write.c /调用mi_write函数,请参见\ myisam \ mi_write.c

mysql-test

mysqld的测试套件。

该目录具有一个README文件,该文件说明了如何运行测试,如何进行新测试(在文件扩展名为* .test的文件中)以及如何报告错误。

有四个子目录:

\misc ---包含一个较小的Perl程序
\ndb-用于MySQL Cluster测试
\r ---包含* .result,即“发生了什么”文件和* .required,即“发生了什么”文件
\std_data ---包含用于测试输入的标准数据
\t ---包含测试

\ t子目录中有400个* .test文件。主要是这些SQL脚本,它们尝试功能,输出结果并将结果与所需内容进行比较。测试文件检查的一些示例包括:latin1_de比较,日期添加,HAVING子句,外部联接,openSSL,加载数据,日志记录,截断和UNION。

这些目录中还有其他测试:

sql-bench
tests

mysys

MySQL系统库。用于文件访问等的低级例程。此目录中有125个* .c程序:

array.c-动态数组处理
charset.c ---使用动态字符集,设置默认字符集,...
charset-def.c-使用以下命令在客户端中包含字符集
checksum.c-计算存储块的校验和,用于pack_isam
default.c ---从* .cnf或* .ini文件中查找默认值
default_modify.c-编辑选项文件
errors.c-全局错误的英文文本
hash.c-散列搜索/比较/免费功能“用于保存密钥”
list.c ---双向链接列表
make-conf.c ---“从ctype-charset.c文件中提取一个charset .conf文件”
md5.c ---来自RSA Data Security的MD5(“消息摘要5”)算法
mf_brkhant.c ---防止用户在关键执行期间执行中断(在MySQL中不使用;可以由独立的MyISAM应用程序使用)
mf_cache.c ---“打开一个临时文件,并使用io_cache对其进行缓存”
mf_dirname.c ---解析/转换目录名称
mf_fn_ext.c-获取文件扩展名
mf_format.c-格式化文件名
mf_getdate.c-获取日期,以yyyy-mm-dd hh:mm:ss格式返回
mf_iocache.c-以固定大小为单位的文件的缓存读/写
mf_iocache2.c --- mf_iocache.c的延续
mf_keycache.c ---某些文件类型的密钥块缓存
mf_keycaches.c-处理多个密钥缓存
mf_loadpath.c ---返回完整路径名(没有.. \东西)
mf_pack.c ---用于创建目的的打包/解压缩目录名
mf_path.c ---确定程序可以在哪里找到其文件
mf_qsort.c ---快速排序
mf_qsort2.c --- Quicksort,第2部分(允许将额外的参数传递给sort-compare例程)
mf_radix.c-基数排序
mf_same.c ---确定文件名是否相同
mf_sort.c ---选择Quicksort或Radix排序
mf_soundex.c-源自EDN 1985年11月14日的Soundex算法(第36页)
mf_strip.c ---从字符串中删除空格
mf_tempdir.c ---初始化/查找/释放临时目录
mf_tempfile.c-创建一个临时文件
mf_unixpath.c-将文件名转换为UNIX样式的文件名
mf_util.c ---例程,#ifdef'd,某些机器上可能缺少
mf_wcomp.c-与通配符的比较
mf_wfile.c-查找带有通配符的文件
mulalloc.c --- Malloc同时分配多个指针
my_access.c ---检查文件或路径是否可访问
my_aes.c-AES加密
my_alarm.c ---收到警报时设置变量值
my_alloc.c-将同时释放结果的malloc
my_append.c ---从一个文件到另一个
my_bit.c-最小的X,其中2 ^ X≥值,可能对除法有用
my_bitmap.c-将uchar数组作为大位图处理
my_chsize.c ---如果较短则截断文件,否则用填充符​​填充
my_clock.c ---时间(“ clock()”)函数,具有与操作系统有关的#ifdef
my_compress.c ---压缩数据包(另请参见\ zlib目录的说明)
my_copy.c ---复制文件
my_crc32.c ---包括\zlib \crc32.c
my_create.c-创建文件
my_delete.c ---删除文件
my_div.c ---获取文件名
my_dup.c ---打开重复的文件
my_error.c ---将格式化错误返回给用户
my_file.c ---查看我们想要多少个打开的文件
my_fopen.c ---打开文件
my_fstream.c ---流文件读/写
my_gethostbyname.c-标准网络gethostbyname()函数的线程安全版本
my_gethwaddr.c-获取接口的硬件地址
my_getopt.c ---找出有效的选项
my_getsystime.c ---时间功能,可移植
my_getwd.c-获取工作目录
my_handler.c-比较两种可能格式的键
my_init.c ---初始化mysys库中的变量和函数
my_largepage.c-从操作系统获取大页面的大小
my_lib.c ---比较/转换目录名和文件名
my_lock.c ---锁定文件的一部分
my_lockmem.c-“分配一个锁定的内存块”
my_lread.c ---从文件中读取指定数量的字节到内存
my_lwrite.c ---将指定数量的字节从内存写入文件
my_malloc.c --- Malloc(内存分配)和dup函数
my_messnc.c ---在stderr上发出“无诅咒”消息
my_mkdir.c-创建目录
my_mmap.c-内存映射
my_net.c-net inet_ntoa函数的线程安全版本
my_netware.c-仅与MySQL的Novell Netware版本一起使用的功能
my_once.c ---分配/复制“我们不需要释放的东西”
my_open.c ---打开文件
my_os2cond.c --- OS2特定的:“ posix条件的简单实现”
my_os2dirsrch.c --- OS2特定的:模拟Win32目录搜索
my_os2dlfcn.c --- OS2特定的:模拟UNIX动态加载
my_os2file64.c --- OS2特定的:用于File64bit设置
my_os2mutex.c --- OS2特定的:用于互斥锁处理
my_os2thread.c --- OS2特定的:用于线程处理
my_os2tls.c --- OS2特定的:用于线程本地存储
my_port.c ---与OS /机器相关的移植功能,例如,特定于AIX的my_ulonglong2double()
my_pread.c ---从文件中读取指定数量的字节
my_pthread.c-不同操作系统中线程处理函数的包装器
my_quick.c ---读/写(标记为“快速”接口,可能已过时)
my_read.c ---从文件中读取指定数量的字节,可能会重试
my_realloc.c-重新分配用my_alloc.c分配的内存(可能)
my_redel.c-重命名并删除文件
my_rename.c ---重命名而不删除
my_seek.c ---搜索,即指向文件内的一个点
my_semaphore.c-信号量例程,用于不支持它们的OS
my_sleep.c-等待n微秒
my_static.c --- mysys库使用的静态变量
my_symlink.c ---读取符号链接(我想,符号链接是UNIX的东西)
my_symlink2.c --- my_symlink.c的第2部分
my_sync.c-将文件中的数据同步到磁盘
my_thr_init.c ---初始化/分配“所有mysys和调试线程变量”
my_wincond.c --- Windows特有的:模拟Posix条件
my_windac.c-Windows NT / 2000自由访问控制功能
my_winsem.c --- Windows特有的:模拟Posix线程
my_winthread.c --- Windows特有的:模拟Posix线程
my_write.c ---将指定数量的字节写入文件
ptr_cmp.c-指向最佳的字节比较功能
queues.c ---处理优先级队列,如Robert Sedgewick的书
raid2.c --- RAID支持(真正的实现在raid.cc中)
rijndael.c ---“ Rijndael密码(现在为AES)的优化ANSI C代码”
safemalloc.c ---具有安全检查功能的标准malloc()版本
sha1.c ---安全哈希算法的实现1
string.c ---初始化/附加/释放动态大小的字符串;另请参见/ sql目录中的sql_string.cc
testhash.c ---独立程序:测试哈希库例程
test_charset.c ---独立程序:显示字符集信息
test_dir.c ---独立程序:“测试所有功能”想法的占位符
test_fn.c ---独立程序:显然测试一个功能
test_xml.c ---独立程序:测试XML例程
thr_alarm.c ---线程警报和信号处理
thr_lock.c ---“读写Posix线程的锁”
thr_mutex.c ---互斥函数的包装
thr_rwlock.c ---将读取器的线程锁与写入器的锁同步
tree.c ---初始化/搜索/释放二叉树
typelib.c-在一组字符串中查找一个字符串;将偏移量返回到找到的字符串

script

SQL批处理,例如mysqlbug和mysql_install_db。

  • .sh文件扩展名代表“ shell脚本”。 Linux程序员在Windows程序员将使用* .bat(批处理文件扩展名)的地方使用它。

此目录上的某些* .sh文件是:

fill_help_tables.sh-创建帮助信息表并插入
make_binary_distribution.sh ---获取配置信息,制作,生成tar
msql2mysql.sh ---将(部分)mSQL程序和脚本转换为MySQL
mysqlbug.sh ---创建一个错误报告并将其邮寄
mysqld_multi.sh ---启动/停止任意数量的mysqld实例
mysqld_safe-watch.sh-在安全模式下启动/重启
mysqld_safe.sh-在安全模式下启动/重启
mysqldumpslow.sh ---解析并汇总慢查询日志
mysqlhotcopy.sh ---热备份
mysql_config.sh-获取编译客户端可能需要的配置信息
mysql_convert_table_format.sh ---例如,从ISAM转换为MyISAM
mysql_explain_log.sh ---将日志(用--log制成)放入MySQL表
mysql_find_rows.sh-搜索包含<regexp>的查询
mysql_fix_extensions.sh-重命名某些文件扩展名,不推荐
mysql_fix_privilege_tables.sh ---升级时修复mysql.user等。可以在任何升级过程中安全运行以获取最新的MySQL特权表
mysql_install_db.sh-创建权限表和func表
mysql_secure_installation.sh ---禁止远程root登录,取消测试等。
mysql_setpermission.sh-帮助添加用户或数据库,设置权限
mysql_tableinfo.sh-将信息重新放置到MySQL表中
mysql_zap.sh-杀死匹配模式的进程

sql

用于处理SQL命令的程序。 MySQL的“核心”。

这些是sql目录中的.c和.cc文件:

derror.cc ---读取与语言相关的消息文件
des_key_file.cc-从纯文本文件加载DES密钥
discover.cc-用于从处理程序中发现.frm文件的功能
field.cc-“在field.h中定义的实现类”(长);定义MySQL用于将字段信息存储到记录中的所有存储方法,然后将这些记录传递给处理程序
field_conv.cc-用于在字段之间复制数据的功能
filesort.cc-使用内存或临时文件对结果集进行排序
frm_crypt.cc ---仅包含一个简短函数:get_crypt_for_frm
gen_lex_hash.cc-来自第3卷排序和搜索第6.3章的Knuth算法;用于在查询中搜索SQL关键字
gstream.cc --- GTextReadStream,用于读取GIS对象
handler.cc-处理程序调用函数
hash_filo.cc ---静态大小的哈希表,用于以FIFO方式存储主机名-> ip表之类的信息
ha_berkeley.cc-处理程序:BDB
ha_blackhole.cc ---处理程序:黑洞
ha_federated.cc ---处理程序:联合
ha_heap.cc ---处理程序:堆
ha_innodb.cc-处理程序:InnoDB
ha_myisam.cc ---处理程序:MyISAM
ha_myisammrg.cc-处理程序:(MyISAM MERGE)
ha_ndbcluster.cc-处理程序:NDB
hostname.cc ---给定IP,返回主机名
init.cc ---用于与unireg接口的init和哑函数
item.cc-项目功能
item_buff.cc ---用于保存和比较项目值的缓冲区
item_cmpfunc.cc ---所有比较功能的定义
item_create.cc-创建一个项目。由lex.h使用。
item_func.cc-数值函数
item_geofunc.cc-几何函数
item_row.cc-用于比较行和行IN的行项目
item_strfunc.cc-字符串函数
item_subselect.cc-子查询
item_sum.cc ---设置函数(SUM(),AVG()等)
item_strfunc.cc-字符串函数
item_subselect.cc-项目子查询
item_timefunc.cc ---日期/时间函数,例如一年中的星期
item_uniq.cc ---空文件,出于兼容性原因在此处
key.cc-用于从记录创建键并将键与记录中的键进行比较的函数
lock.cc ---锁
log.cc ---日志
log_event.cc ---日志事件(二进制日志由一系列日志事件组成)
matherr.c-处理上溢,下溢等
mf_iocache.cc ---缓存(顺序)读写
mysqld.cc --- mysqld.exe的源代码;包括启动mysqld的main()程序,信号和连接的处理
mf_decimal.cc-新的十进制和数字代码
my_lock.c ---锁定文件的一部分(如/mysys/my_lock.c,但具有线程超时处理)
net_serv.cc ---在网络套接字上读/写数据包
nt_servc.cc ---初始化/注册/删除NT服务
opt_range.cc-键范围
opt_sum.cc ---在存在(暗示)GROUP BY的情况下优化功能
parse_file.cc-文本.frm文件管理例程
password.c ---密码检查
procedure.cc ---过程接口,用于SELECT * FROM Table_name PROCEDURE ANALYSE()
protocol.cc-发送给客户端的PACKING数据的低级功能;使用net_serv.cc完成实际发送
protocol_cursor.cc-用于存储要发送到MySQL客户端的数据的底层函数
records.cc ---通过缓存可以轻松读取记录的功能
repl_failsafe.cc-复制失败保存(尚未实现)
set_var.cc ---设置和获取MySQL用户变量
slave.cc ---主/从(复制)关系中从属的过程
sp.cc-数据库存储过程和功能的存储
sp_cache.cc-用于存储过程
sp_head.cc-用于存储过程
sp_pcontext.cc-用于存储过程
sp_rcontext.cc-用于存储过程
spatial.cc ---几何图形(线,点等)
sql_acl.cc ---与ACL安全性相关的功能;检查,存储,检索和删除MySQL用户级别特权
sql_analyse.cc-实现PROCEDURE ANALYSE(),它分析查询结果并为每个结果列返回“最佳”数据类型
sql_audit.cc-实现audit插件审核API事件以字符串扩展宏。
sql_alter.cc-表示DROP COLUMN,DROP KEY,DROP FOREIGN KEY和DROP CHECK的类,ALTER TABLE语句中的CONSTRAINT子句。
sql_alter_instance.cc-ALTER INSTANCE ...语句的执行控制的基类
sql_base.cc ---许多模块所需的基本功能,例如使用表缓存管理来打开和关闭表
sql_cache.cc --- SQL查询缓存,带有有关缓存如何工作的长注释
sql_class.cc-SQL类;实现SQL基类,其中THD(THREAD对象)是最重要的
sql_client.cc-由my_net_init()调用以设置一些检查变量的函数
sql_crypt.cc ---编码/解码,非常短
sql_db.cc-创建/删除数据库
sql_delete.cc --- DELETE语句
sql_derived.cc-派生表,带有长注释
sql_do.cc-DO语句
sql_error.cc ---错误和警告
sql_handler.cc-实现HANDLER接口,该接口可直接访问MyISAM和InnoDB中的行
sql_help.cc ---帮助语句
sql_insert.cc --- INSERT语句
sql_lex.cc ---对查询进行词法分析;也就是说,将查询字符串分成多个部分,并确定每个部分的基本类型(数字,字符串,关键字等)
sql_list.cc ---仅list_node_end_of_list,简短(其余列表类在sql_list.h中实现)
sql_load.cc --- LOAD DATA语句
sql_manager.cc ---维护任务,例如,定期刷新缓冲区;与BDB表日志一起使用
sql_map.cc ---内存映射文件(尚未使用)
sql_olap.cc ---卷起来
sql_parse.cc ---解析SQL语句;进行初始检查,然后跳转到应该执行该语句的函数
sql_prepare.cc ---准备一个SQL语句,或使用一个准备好的语句
sql_rename.cc-重命名表
sql_repl.cc-复制
sql_select.cc ---选择并加入优化
sql_show.cc-SHOW语句
sql_state.c-将mysqld errno映射到sqlstate的函数
sql_string.cc ---字符串函数:分配,重新分配,复制,转换等
sql_table.cc --- DROP TABLE和ALTER TABLE语句
sql_test.cc ---一些调试信息
sql_trigger.cc-触发器
sql_udf.cc-用户定义的函数
sql_union.cc --- UNION运算符
sql_update.cc --- UPDATE语句
sql_view.cc ---视图
stacktrace.c ---显示堆栈跟踪(仅Linux / Intel)
strfunc.cc-字符串函数
table.cc ---表元数据检索;从.frm文件中读取表定义,并将其存储在TABLE对象中
thr_malloc.cc-到/mysys/my_alloc.c的线程安全接口
time.cc ---日期和时间函数
udf_example.cc-用户定义函数的示例文件
uniques.cc-处理快速删除重复项的功能
unireg.cc-从FIELD和field-info结构创建unireg格式文件(.frm)

sql-common

三个文件:client.c,my_time.c,pack.c。您将在其他目录中建立符号链接到这些文件。

strings

字符串库。
此子目录中的许多文件等效于大多数C字符串库中出现的众所周知的函数。对于这些,大多数编译器手册中都有可用的文档。
另一方面,某些文件是MySQL的补充或改进。通常,MySQL的更改是尝试优化标准库。不过,似乎没有人试图针对最新的Pentium类处理器进行优化。C源文件包含:

bchange.c-由Monty Widenius在1987年编写的简短替换例程
bcmp.c-二进制比较,很少使用
bcopy-duff.c ---块复制:尝试以比cmemcpy更快的速度复制内存块
bfill.c-字节填充,用字节的(长度)副本填充缓冲区
bmove.c-块移动
bmove512.c ---“应该是移动512字节倍数的最快方法”
bmove_upp.c --- bmove.c变体,从最后一个字节开始
bzero.c ---类似于使用参数0填充
conf_to_src.c ---读取配置文件
ctype * .c-MySQL处理的每种char类型的字符串处理程序
decimal.c ---用于十进制和数字转换
do_ctype.c-显示大小写转换和排序转换表
dump_map.c-独立文件
int2str.c-整数到字符串
is_prefix.c-检查string1是否以string2开头
llstr.c ---将long long转换为临时缓冲区字符串,返回指针
longlong2str.c ---同上,但要参数缓冲
memcmp.c ---内存比较
memcpy.c ---内存副本
memset.c ---内存设置
my_strtoll10.c-用于基数10的longlong2str
my_vsnprintf.c --- printf的变体
r_strinstr.c ---查看一个字符串是否在另一个字符串内
str2int.c-将字符串转换为整数
trappend.c-将字符串填充为n个字符
strcat.c-连接字符串
strcend.c-指向字符C在str或NULL中出现的位置
strchr.c-指向字符串中出现字符的第一位
strcmp.c-比较两个字符串
strcont.c-指向一组字符中任何一个出现的位置
strend.c-指向以'\ 0'字节结尾的str
strfill.c-用一个字节的n个副本填充一个字符串
strinstr.c-在字符串中查找字符串
strlen.c ---返回字符串的字节长度
strmake.c-从具有固定长度的旧字符串创建新字符串,如果需要,在末尾附加\ 0
strmov.c-将源移动到dest并将指针返回到结束
strnlen.c ---返回min(字符串长度,n)
strnmov.c-将源移动到目标以获取源大小或n个字节
strrchr.c ---在字符串中找到一个字符,从结尾开始搜索
strstr.c ---在源代码中查找模式的实例
strto.c-字符串长,长长,无符号长等
strtod.c-字符串加倍
strtol.c-字符串长
strtoll.c-字符串长
strtoul.c-字符串到无符号长
strtoull.c-字符串到unsigned long long
strxmov.c-将一系列串联的源字符串移动到dest
strxnmov.c ---类似strxmov.c,但最大长度为n
str_test.c-测试所有在汇编器中编码的字符串函数
uca-dump.c-显示unicode排序规则转储
udiv.c-无符号长除法,用于不支持这些功能的操作系统
utr11-dump.c-转储东亚宽文本文件
xml.c ---读取和解析XML字符串;用于读取存储在/ sql / share / charsets中的字符定义信息

support-files

用于在不同系统上构建MySQL的文件。

此处的文件用于在给定软件包管理器,编译器,链接器和其他构建工具的情况下构建(“制造”)MySQL。支持文件提供了有关构建过程的说明和开关。它们包括示例my.cnf文件,可以将其用作MySQL的默认设置。

tests

在Perl和C中进行测试。

该目录中的文件是测试程序,可以用作编写程序的基础,以在各种情况下模拟MySQL中的问题:派生,锁,大记录,导出,截断等。一些例子是:

connect_test.c-测试是否可以连接
insert_test.c ---测试是否可以插入
list_test.c-测试是否可以选择
select_test.c-测试选择是否可能
showdb_test.c-测试显示数据库是否可能
ssl_test.c-测试是否可以使用SSL
thread_test.c-测试是否可以进行线程化

tools

tools—实际上是一种工具。

唯一的文件是:

mysqlmanager.c --- Sasha Pachev的“服务器管理守护程序”。这是一个正在开发的工具,尚无用。与故障安全复制有关。

vio

虚拟I / O库。

VIO例程是使用不同协议发生的各种网络I / O调用的包装。这个想法是,在主模块中,不必为每个协议编写单独的代码位。因此,vio的目的有点像微软的winsock库的目的。

目前的基本协议是:TCP / IP,命名管道(对于WindowsNT),共享内存和安全套接字(SSL)。

C程序是:

test-ssl.c ---简短的独立测试程序:SSL
test-sslclient.c ---简短的独立测试程序:客户端
test-sslserver.c ---简短的独立测试程序:服务
vio.c ---声明+打开/关闭功能
viosocket.c ---发送/检索功能
viossl.c-上面的SSL变体
viosslfactories.c ---认证/验证
viotest.cc ---简短的独立测试程序:常规
viotest-ssl.c ---简短的独立测试程序:SSL
viotest-sslconnect.cc ---简短的独立测试程序:SSL connect

zlib

​ 数据压缩库,在Windows上使用。

​ zlib是一个数据压缩库,用于支持Windows下的压缩协议和COMPRESS / UNCOMPRESS函数。在Unix上,MySQL为此使用系统libgz.a库。

​ Zlib —大概代表“ Zip Library” —不是MySQL软件包。它是由GNU Zip(gzip.org)人制作的。 Zlib是著名的“ Lempel-Ziv”方法的一种变体,“ Zip”也使用该方法。

相关文章:

  • mysql源代码目录innodb引擎目录详解
  • mysql数据库系统自带的4个默认数据库
  • Centos源码安装Postgresql12
  • linux下用gdb调试查看core文件内容
  • C++ map和multimap的键查找和值查找以及删除操作
  • 学习make和CMake的经典文档和视频
  • Go语言关于PorstgreSQL数据库的驱动-pg
  • linux调式命令
  • Bash快捷键
  • PostgreSQL插件汇总
  • ulimit详解
  • 数据库连接接口(驱动)
  • pgbench和sysbench初次压测PG集群
  • Patroni-2.0.0(Postgresql集群高可用方案)说明书
  • 跟我一起写 Makefile(二)
  • Android Volley源码解析
  • ES6之路之模块详解
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • java8 Stream Pipelines 浅析
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • ViewService——一种保证客户端与服务端同步的方法
  • Vue.js源码(2):初探List Rendering
  • Vue2 SSR 的优化之旅
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 基于Android乐音识别(2)
  • 深度学习在携程攻略社区的应用
  • 我有几个粽子,和一个故事
  • 线上 python http server profile 实践
  • 2017年360最后一道编程题
  • ionic入门之数据绑定显示-1
  • mysql面试题分组并合并列
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • 组复制官方翻译九、Group Replication Technical Details
  • #pragma 指令
  • $.ajax,axios,fetch三种ajax请求的区别
  • (1)(1.9) MSP (version 4.2)
  • (12)Hive调优——count distinct去重优化
  • (C语言)共用体union的用法举例
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (转)四层和七层负载均衡的区别
  • (转载)从 Java 代码到 Java 堆
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET 分布式技术比较
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • @Responsebody与@RequestBody