MariaDB 基金会成就 2012年12月 – 2013年9月

转载自 Monty Says

我最近读到一些评论,认为我们 MariaDB 基金会对我们所做的事情不够公开。

对此我们深感抱歉。问题不在于我们对所做的事情保密,而在于 MariaDB 基金会中活跃的博客作者不多。

我将尝试通过每月撰写关于 MariaDB 基金会员工进行的 MariaDB 开发的博客来解决这个问题。这与 Simon Phipps 在此发布的State Of The Sea Lion博客一起,希望能让大家更好地了解我们正在做的事情。

MariaDB 基金会目前有 4 名全职员工,负责代码、文档和推广 MariaDB。以下是自基金会于 2012 年 12 月成立以来我们所做的工作:

基于社区代码的主要开发工作

  • MDEV-4568 将 Percona 响应时间分布移植为审计插件
  • MDEV-4911 添加 KILL query id,并将 query id 信息添加到进程列表
  • MDEV-4684 增强请求:mysqlslap 支持 –init-command

主要新开发工作

  • MDEV-4702 减少 LOCK_open 的使用
  • MDEV-4011 每线程内存使用情况
  • MDEV-4902 sql_yacc.yy 与 bison 3 不兼容
  • MDEV-4950 mysql_upgrade 在 InnoDB 禁用时失败(MySQL 中未修复的 bug)
  • LGPL C 客户端库
  • LGPL Java 客户端库
  • 为 MySQL 和 MariaDB 开发新的 LGPL ODBC 驱动程序。
  • 更好的错误消息(错误消息中的错误代码现在包含描述性文本)
  • 更快的连接(许多小修补)。
  • MDEV-3941 如果表已存在,CREATE TABLE xxx IF NOT EXISTS 不应阻塞。

MariaDB 基金会还在将 MySQL 5.6 合并到MariaDB 10.0方面做了大量工作。基金会完成的最重要的特性是:

  • 所有 InnoDB 更改
  • 所有性能模式更改
  • 清理了 HANDLER 接口(以便存储引擎编写者更轻松)。
  • TRANSACTION READ ONLY | READ WRITE
  • MySQL-5.6 TIME/TIMESTAMP/DATETIME 数据类型,支持小数秒
  • MySQL-5.6 时间/日期字面量
  • utf16le 字符集
  • TO_BASE64 和 FROM_BASE64 SQL 函数
  • MySQL-5.6 排序规则自定义改进(进行中)

请注意,以上并非MariaDB 10.0 中包含的功能的完整列表!

我们正在与外部实体和贡献者合作,将特性引入 MariaDB。其中一些工作在 MariaDB 基金会方面需要大量投入:

  • CONNECT 存储引擎
    • 移植到各种操作系统(*BSD, Linux 分支, Solaris)
    • 移植到 unixODBC
    • 修复编译器警告
    • 测试和编写 mtr 测试
    • 检查、报告和修复 valgrind 警告
    • 审查作者的代码
    • 添加 MySQL/MariaDB 安全支持 (FILE 权限和 secure_file_priv)
    • 在嵌入式服务器中添加 ConnectSE 支持
    • 全球化:使 ConnectSE 支持多种 MariaDB 字符集
    • 与作者讨论将 ConnectSE 更好地集成到 MariaDB 中的许多方面。
    • 打包 (RPM, DEB, MSI)
  • TokuDB 存储引擎
    • 代码审查
    • 一些小的集成更改。
  • 并行从库
  • 多源复制
    • 与原始作者密切合作,将代码从工作原型扩展到生产级代码。
  • MDEV-4438 Spider 存储引擎
    • 持续与 Kentoku 合作
  • MDEV-4425 REGEXP 增强(一个 Google Summer of Code 项目,进行中)
    • 指导 Sudheera Palihakkara(该学生)
    • 学生代码审查(针对 RLIKE 和 RLIKE_REPLACE)
    • 代码增强提案
    • CMake 相关增强
    • 编写了 RLIKE_SUBSTR 和 RLIKE_INSTR 函数
  • 在 mysqld_safe 中添加了对 –crash-script 的支持。

大量基础系统维护

  • 报告了许多 bug(这不是完整列表)
    • MDEV-4489 big5, cp932, gbk, sjis 字符串的复制在从库上产生错误的值
    • MDEV-4634 CONVERT_TZ 中崩溃
    • MDEV-4635 UNIX_TIMESTAMP(STR_TO_DATE(‘2020′,’%Y’)) 中崩溃
    • MDEV-4651 ORDER BY 查询中 my_decimal2decimal 崩溃
    • MDEV-4652 CONCAT(GREATEST(TIME(’00:00:01′),TIME(’00:00:00′)) 的结果错误
    • MDEV-4653 CONVERT_TZ(TIME(’00:00:00′),’+00:00′,’+7:5′) 的结果错误
    • MDEV-4654 CAST(TIME(’10:20:30′) AS DATE) + INTERVAL 1 DAY 的警告错误
    • MDEV-4655 GREATEST 和 COALESCE 处理参数方式的差异
    • MDEV-4714 长字符串产生的 TIME 值错误
    • MDEV-4724 MAKETIME 未保留微秒
    • MDEV-4838 DATE_ADD(‘string’, INVERVAL) 的元数据错误
    • MDEV-4841 “ADDTIME() 和 DATE_ADD() 的字符集错误”
    • MDEV-4842 STR_TO_DATE 不适用于 UCS2/UTF16/UTF32
    • MDEV-4843 TIMESTAMP(‘2001-01-01′,’10:10:10’) 的数据类型错误
    • MDEV-4844 SELECT TIME(’00:00:00.’) 中的冗余警告
    • MDEV-4848 LEAST(1.0,’10’) 的元数据或列类型错误
    • MDEV-4850 MATCH 使用了带有不匹配排序规则的错误全文索引
    • MDEV-4857 HOUR(‘1 00:00:00’) 的结果错误
    • MDEV-4858 将巨大的无符号值插入 TIME 列时的错误消息错误
    • MDEV-4859 “SELECT MAX(time_column) + 1 FROM t1” 的值和数据类型错误
    • MDEV-4861 TIME/DATETIME 算术运算未保留 INTERVAL 精度
    • MDEV-4862 MAKETIME(0, 0, 59.9) 的结果错误
    • MDEV-4863 COALESCE(time) 在数字上下文返回错误结果
    • MDEV-4868 CURRENT_TIME 的长度过长
    • MDEV-4869 MAKETIME(0, 0, -0.1) 的结果错误
    • MDEV-4870 CASE, COALESCE, IFNULL 在不同 temporal 类型组合上的值错误
    • MDEV-4871 Temporal 字面量不接受纳秒
    • MDEV-4872 将巨大的数字插入 TIME 列产生错误结果
    • MDEV-4898 将坏值插入 TIMESTAMP 列时警告过多
    • MDEV-4900 截断时将坏值插入 TIME 字段
  • 修复了大量 bug(以下不是完整列表)
    • MDEV-4489 big5, cp932, gbk, sjis 字符串的复制在从库上产生错误的值
    • MDEV-4512 INTERVAL 和 DATE_ADD 使用不正确类型时 my_long10_to_str_8bit 中的 Valgrind 警告
    • MDEV-4518 服务器在启用查询缓存运行时在 is_white_space 中崩溃…`
    • MDEV-4634 CONVERT_TZ 中崩溃
    • MDEV-4635 UNIX_TIMESTAMP(STR_TO_DATE(‘2020′,’%Y’)) 中崩溃
    • MDEV-4639 my_datetime_to_str: 条件跳转或移动取决于未初始化的值
    • MDEV-4651 ORDER BY 查询中 my_decimal2decimal 崩溃
    • MDEV-4652 CONCAT(GREATEST(TIME(’00:00:01′),TIME(’00:00:00′)) 的结果错误
    • MDEV-4653 CONVERT_TZ(TIME(’00:00:00′),’+00:00′,’+7:5′) 的结果错误
    • MDEV-4724 MAKETIME 未保留微秒
    • MDEV-4804 日期比较结果错误
    • MDEV-4819 从 MySQL 5.6 升级不起作用
    • MDEV-4841 “ADDTIME() 和 DATE_ADD() 的字符集错误”
    • MDEV-4843 TIMESTAMP(‘2001-01-01′,’10:10:10’) 的数据类型错误
    • MDEV-4863 COALESCE(time) 在数字上下文返回错误结果
    • MDEV-4871 Temporal 字面量不接受纳秒
    • 修复了 MySQL bug #69861 如果使用复制过滤器,LAST_INSERT_ID 会错误复制。
    • 修复了分区和 create temporary table SELECT 的问题
    • 如果在不同级别的存储过程中为同一条件声明了多个 continue handler,它们都会被执行。现在我们只执行其中最内层的 handler(最相关的)。
    • 如果无法为 AIO 分配资源,不要中止 InnoDB
    • 添加了一些修复,使 MyISAM & Aria REPAIR 能够处理超过 4G 记录。
    • MDEV-4352 LOAD DATA 在多源复制下不安全
    • MDEV-4394 multi_source 测试中偶发性失败
    • MDEV-4033 无法使用从库的临时目录 /tmp – 无法创建/写入文件 ‘/tmp/SQL_LOAD-‘ (错误代码: 17 “文件已存在”)
    • 将 max_binlog_cache_size 和 max_binlog_stmt_cache_size 的默认值增加到 ulonglong_max。
    • MDEV-4319 mysqlbinlog 输出的转义含糊不清 (由 Ian Good 提供补丁)
    • OPTION 现在是有效标识符(非保留字)
    • 修复了 LOCK TABLE + ALTER TABLE ENABLE KEYS + SHOW 命令的问题。
    • MDEV-628 查询 MyISAM 表元数据可能损坏表。
    • 使用 auto_increment 主键和另一个唯一键进行 REPLACE 操作时,复制不正确。
    • BUG#51763 无法从具有 HASH 键的 MEMORY 表中删除行。
    • MDEV-389 截断临时表后插入记录时服务器崩溃。
    • 修复了 GROUP_CONCAT 配合 ROLLUP 使用时的崩溃 bug
    • MDEV-4013 复制设置中的密码长度
    • MDEV-4009 main.delayed 偶尔失败,报错 “query ‘REPLACE DELAYED t1 VALUES (5)’ failed: 1317: Query execution was interrupted”
    • 修复了 CREATE TABLE IF EXIST 生成警告而不是错误的问题
    • 在使用 CREATE TABLE IF EXISTS 时移除了锁等待超时警告
  • 代码清理和代码重写。
  • 继续工作以确保 MariaDB 在多种操作系统上运行。
    • 为 Solaris 做了许多小修补。
  • 审查来自社区的代码。
  • 移除了 valgrind 和编译器警告。
  • 添加了新的测试用例。
  • 质量保证 (QA) 和性能测试。

在许多会议上谈论了 MariaDB 和开源/自由软件

  • Percona Live London 2012
  • SkySQL Roadshow, Stuttgart
  • Vista developer Conference, Riga
  • PHP Conference, Pasila, Finland
  • SkySQL Roadshow, Amsterdam
  • Percona Live, Santa Clara
  • SkySQL Roadshow, London
  • MySQL Meetup, NYC
  • Suomen Arkistointi Seminaari, Mikkeli, Finland
  • SkySQL Roadshow, Berlin
  • Ali Baba Conference, Hangzhou, China
  • OSCON, Portland
  • Debconf, Switzerland
  • Froscon, St Augustin, Germany
  • Haaga-Helia Talks, Finland
  • IDCEE Conference, Ukraina
  • Latinux, Brazil & Peru
  • Highload Conference, Moscow
  • Foscon, Gotenburg, Sweden
  • Percona Live 2013, London

MariaDB 基金会成员还做了其他工作

  • MariaDB 知识库中创建了 +200 篇和更新了 +3000 篇文章。
  • 拜访了许多公司,谈论 MariaDB 基金会。
  • 与操作系统发行版密切合作,使 MariaDB 被接受为它们发行版的标准组成部分。部分得益于 MariaDB 基金会,以下发行版现在包含 MariaDB 软件包:
    • GNU/Linux KDu
    • Mageia
    • Gentoo
    • openSUSE
    • Slackware
    • Arch Linux
    • ALTLinux
    • MariaDB Debian Live Images
    • Parabola GNU/Linux
    • TurboLinux
    • The Chakra Project
    • Fedora
    • Red Hat Enterprise Linux
    • FreeBSD
    • OpenBSD
    • Debian 现在在 ‘unstable’ 中包含 MariaDB 软件包。
    • 要查看完整列表以及哪些发行版正在用 MariaDB 替代 MySQL,请参阅此页面
  • 更新了 SHOW AUTHORSSHOW CONTRIBUTORS,以便更充分地认可活跃贡献者和赞助者。

我们非常感谢促成这项工作的MariaDB 基金会成员和支持者

当前成员是:

如果您希望 MariaDB 基金会做更多类似上述的工作,您应该确保您的公司成为 MariaDB 基金会成员!您也可以作为个人赞助基金会