resultset_metadata 是 MySQL 8.0.3 版本引入的一个参数,在MySQL Server返回查询结果给客户端时,用于控制是否返回结果集的元数据。
- 作用范围:会话级(session)
- 取值范围:FULL,NONE
- 默认值:FULL
FULL表示返回数据集元数据,NONE表示不返回数据集元数据。
对于某些不支持将数据集元数据是否返回设置为可选的客户端,比如自带的mysql命令,设置该参数为NONE时,将返回一个错误,如下:
mysql> set resultset_metadata=NONE; ERROR 3640 (HY000): The client doesn't support optional metadata transfer
resultset_metadata 参数通常对MySQL的连接驱动有效,比如MySQL的C API,如果设置resultset_metadata=NONE,那么C API的如下函数,将返回NULL。
- mysql_fetch_field()
- mysql_fetch_field_direct()
- mysql_fetch_fields()
如何检查一个结果集里面是否包含元数据,可通过C API函数 mysql_result_metadata(),它返回的值有两个,如下所示,通过这两个值就能知道结果集中是否包含元数据:
- RESULTSET_METADATA_FULL
- RESULTSET_METADATA_NONE