
对于比赛和训练营测试后台，需要做一些输出约定，才能正确的进行测试。

*** 注意： 后台测试环境，依赖本章节的输出要求。如果输出格式不满足要求，有些case将无法通过***

输出是指服务端返回给客户端的数据。为了可以做测试，需要对输出的格式做约定。
NOTE：后台测试程序，是将预先编辑好的Case执行后，将执行结果与预期输出结果（预先编写完成）做对比，与mysql test工作原理类似，因此需要严格按照输出约束来输出。

> 这里虽然列出了很多约束条件，但是同学们并不需要担心，当前的实现已经满足了这些约束条件，或者给出了满足约束的帮助函数，只要按照要求使用即可。

1. 语法解析错误，返回 FAILURE（只返回这个字符串，不带任何多余字符）。
2. 对于DML和DDL操作，执行成功返回SUCCESS，失败返回FAILURE。更新和删除操作时没有数据变更，只要没有错误，输出也是SUCCESS。
3. 对于QUERY操作，如果执行失败，返回FAILURE（包括语法错误）。否则按照下面的格式要求输出：列名显示和顺序说明：
    - 单表查询，没有指定列名(select * from t) ，按照建表语句的顺序列出列名，列名不需要带表明
    - 单表查询，指定了列名，按照指定的顺序输出列名，列名不需要带表名
    - 表查询，没有指定列名(select * from t,t1)，列名需要带表明，使用'.'分开。每张表的列名与建表时顺序保持一致，多张表按照from后指定的顺序依次排列
    - 多表查询，指定列名，就按照指定的顺序排列
    - 多表查询，有些指定列名，有些没有指定(select t1.*, t2.id from t1,t2)。没有指定的与建表时保持一致，否则按照指定的顺序排列
        输出格式：
        列名之间使用 ' | '分开，注意 '|'左右各有一个空格。输出列名后，第二行开始输出列值，值之间也使用' | '隔开。
        注意：第一列和最后一列没有分隔符，也没有空格
        如果没有数据，显示列名即可。
    - 聚合函数字段输出，保留与输入相似的格式。比如select max(age) from t; 那么输出时，列名输出max(age)。注意，圆括号内没有空格。

4. 所有输出不区分大小写
5. 日期(date)输出格式使用："YYYY-mm-DD"
6. 输出的字符串不使用单引号双引号或其它括起来
7. 浮点数输出，不要带后面多余的0，可以参考C sprintf的%g格式输出，保留两位小数。参考函数 double_to_str

FAQ
- 某张表或者某个查询结果一行数据都没有，但是依然需要输出表头信息
- 查询语句输入的字段名带了表名，比如select t.id from t; ，因为只有一张表，还是仅输出字段名称
- 测试不考察大小写，所以输入输出都不区分大小写