-
MySQL C API 读取预处理结果时遇到 MYSQL_DATA_TRUNCATED,不要直接当成 SQL 失败。本文说明如何检查 MYSQL_BIND.error、length、buffer_length 和 is_null,并用 mysql_stmt_fetch_column() 取回长字符串或 BLOB。
-
MySQL C API 的 mysql_stmt_data_seek 只能用于已经由 mysql_stmt_store_result 缓冲的预处理语句结果集。本文说明零基行号、边界判断、seek 后 fetch,以及完整缓冲带来的内存取舍。
-
MySQL C API 的工作线程需要先准备线程级变量,并在退出前释放对应资源。本文区分 mysql_library_init、mysql_thread_init、mysql_init 与 mysql_thread_end 的职责,用 pthread 示例说明初始化失败、连接关闭、线程退出和同一连接并发访问的边界。
-
mysql_real_escape_string_quote 的 quote 参数不是装饰项,而是 SQL 字符串所在的引号上下文。本文说明单引号、双引号和反引号的选择、连接字符集、缓冲区容量与 ANSI_QUOTES 边界,并给出可直接改造旧式拼接代码的 C 示例。
-
MySQL C API 处理动态 SELECT 结果时,不能先凭猜测创建 MYSQL_BIND。本文从 mysql_stmt_result_metadata 读取列数与字段类型,再按列配置缓冲区、绑定结果并处理 NULL、长度和截断。
-
MySQL C API 连接建立后,可以用 mysql_set_server_option 动态开启多语句。本文说明返回值判断、结果集与影响行数处理、mysql_next_result 循环、关闭开关,以及它与 CLIENT_MULTI_STATEMENTS 和 CLIENT_MULTI_RESULTS 的边界。
-
MySQL C API 读取 BLOB 或含嵌入零字节的字段时,不能用 strlen 判断数据长度。本文说明如何在 mysql_fetch_row() 成功后调用 mysql_fetch_lengths(),按当前行的字节长度复制字段,并区分 SQL NULL 与空字段。
-
MySQL BLACKHOLE 会接受写入但不保存数据,查询始终为空。本文用复制过滤中转的场景说明它的工作边界,并整理自增列、触发器和表结构差异等落地注意事项。
-
MySQL BIT_COUNT(expr) 用来统计表达式中值为 1 的位数。本文从权限位掩码的排查场景出发,说明数值、二进制字符串和 NULL 的结果差异,并给出可直接放进查询的写法。
-
Redis LPOS 不只是查第一个匹配位置,还能用 MAXLEN 限制最多比较的列表元素,用 RANK 从头尾定位后续匹配,再用 COUNT 一次返回多个位置。本文梳理参数组合、零基索引以及空值和空数组的区别。
-
比较 Redis LCS 的默认文本、LEN 整数和 IDX 范围回复,用短字符串说明 matches、len 与 WITHMATCHLEN 的关系及客户端解析注意事项。
-
MySQL 的 CURRENT 诊断区表示处理器当前状态,STACKED 诊断区保留进入 handler 前的原始条件。本文用静态 SQL 示例说明两者的栈关系、读取时机与常见边界。
-
Redis HRANDFIELD 的 count 不是简单的返回数量开关:正数最多返回不重复字段,负数返回固定数量且允许重复。本文从复现、语义、WITHVALUES 和边界选择说明如何正确调用。
-
MySQL BIT_XOR 的关键不是函数名本身,而是输入值进入数值计算还是二进制字符串计算。本文用整数标志位和固定长度 VARBINARY 掩码对比两种方式,并说明 NULL、长度不一致与十六进制字面量的边界。
-
Redis SINTERCARD 返回的是多个集合交集中的不同成员数量。由于 SET 写入同一个成员只保留一份,它不能恢复重复写入次数;若要统计成员出现在多少个集合,应在写入阶段保留计数,或用有序集合汇总分值。