# [KB]关于 TiDB 日志报错 [ERROR] [slow_query.go 707] [ decode plan in slow log failed ]

## Issue

TiDB 报错如下：

```golang
\[2021/07/30 14:20:02.937 +08:00] \[ERROR] \[slow_query.go:707] \["decode plan in slow log failed"] \[plan= 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] error="decode plan: ")->Column#59, funcs:firstrow(Column#61)->api_service.sys_config_flink_table_config.create_by\t0\ttime:156.154742ms, loops:1, PartialConcurrency:4, FinalConcurrency:4\t11.625 KB\tN/A, depth: ")->Column#59, funcs:firstrow(Column#61)->api_service.sys_config_flink_table_config.create_by, error: strconv.Atoi: parsing "\")->Column#59, funcs:firstrow(Column#61)->api_service.sys_config_flink_table_config.create_by": invalid syntax"
```

原始 slow log：

```sql
Time: 2021-07-30T08:33:59.274700633+08:00 Txn_start_ts: 426666947793125414 User@Host: datainfra_spark\[datainfra_spark] @ 10.10.50.46 \[10.10.50.46] Conn_ID: 205827 Query_time: 0.182548186 Parse_time: 0.001017768 Compile_time: 0.006601371 Rewrite_time: 0.002889711 Cop_time: 0.095386838 Process_time: 0.082 Wait_time: 0.004 Request_count: 3 Total_keys: 94196 Process_keys: 58381 Is_internal: false Digest: 4a21207e3a877819c3e43ad89bf656ab6997a0bf87191b1db962b95cd229a4d1 Stats: sys_monitor_inspection_log:pseudo,sys_config_flink_table_config:pseudo Num_cop_tasks: 3 Cop_proc_avg: 0.027333333 Cop_proc_p90: 0.074 Cop_proc_max: 0.074 Cop_proc_addr: 10.10.48.12:20172 Cop_wait_avg: 0.001333333 Cop_wait_p90: 0.003 Cop_wait_max: 0.003 Cop_wait_addr: 10.10.48.48:20173 Mem_max: 1828677 Prepared: false Plan_from_cache: false Has_more_results: false KV_total: 0.103539918 PD_total: 0.000008514 Backoff_total: 0 Write_sql_response_total: 0 Succ: true Plan: tidb_decode_plan('kBzwlTAJM18xNgkwCTEuMDQyNzA2MjUJYXBpX3NlcnZpY2Uuc3lzX2NvbmZpZ19mbGlua190YWJsZV9jb25maWcuY3JlYXRlX2J5LCBDb2x1bW4jNTkJMAl0aW1lOjE1Ni4xNTczNTZtcywgbG9vcHM6MSwgQ29uY3VycmVuY3k6T0ZGCTk5MiBCeXRlcwlOL0EKMQk2XzE5CTKPACRncm91cCBieTpDCWMkNjIsIGZ1bmNzOgUaAZ8MY2F0KBEeRDAgc2VwYXJhdG9yICIKIiktPg0aBDU5ETgcZmlyc3Ryb3cVNBAxKS0+Ycb2AAAJMusAFDQ3NDJtcx3rHFBhcnRpYWxDHfIUNCwgRmluOhQAUAkxMS42MjUgS0IJTi9BCjIJM18zNyGTSDA2LjkyOTI3ODg1MDcxMDkJY28F6yBUb3BpYy0+LCA+tABYbW9uaXRvcl9pbnNwZWN0aW9uX2xvZy4BJzRmbGFnX2Z1bGwsIDsgRyFTqkEAHGpvYl9uYW1lATwg5b6F5raI6LS5qkAAFHJlc3VsdDmLBDYwRrwASVMAX3ZmAgHKupsCLqUBFDA0ODU2NTKlAS6eASBPRkYJMS45Mzc1jBgzCTE3XzIxUo0BVGlubmVyIGpvaW4sIGVxdWFsOltlcSg+ogBakwE5UpYxAAxfaGlzFTVIKV0sIG90aGVyIGNvbmQ6Z2UoZGGHCGFkZJ5/ABRldGxfdGkh0SR1bmFyeW1pbnVzQjwAZpIBkGthZmthX2NoZWNrcG9pbnRfaW50ZXJ2YWwpLCAiTUlOVVRFIilG4wFWDAEF2xGRECksIGd0QooAVjkATVccLCBpZm51bGyaNgAFb0mRGCwgIjAiKSkyIgIMMzYwMDYiAihidWlsZF9oYXNoX4X9QDp7dG90YWw6MTIuMzE5NTA4QVAQZmV0Y2g2EwAFOCA6MHN9CTAgQnmB4g0IBAo0RVYAM0FWuXb+TwJaTwJ+xQGpRAxpZCldNQccMC44NzIzOTkB2ARsb624Bc5OBgEcMC4zOTA4NjMBLi0GEDAuMzY5DRMFODw6MjHCtXN9LCBwcm9iZTp7gcgAdc0FCDUsIClQHDUwLjU5MTM5BUowbWF4OjEwLjQxMTY2NwFbCTokMzUuMzAzwrVzLA1sATUwNTYwOW1zfQk1Ny4xNa1JMWsUNQkzMV8yweFAMC44MzQxNjUJZGF0YTpTZWytIRAyNQk3CWEMBDo4AW8IOTg0AW8J+FAyLCBjb3BfdGFzazoge251bTogMSwJnBgxLjcyODg4Jf1QcHJvY19rZXlzOiA3ODY0LCBycGNfES4BDAVfACABNAwxMjU1JVmIY29wcl9jYWNoZV9oaXRfcmF0aW86IDAuMDB9CTEuMTcyODUVzRhOL0EKNgkxAasIMV8wGcqmbwTdERx0eXBlLCAiS2HDMExhZyIpLCBub3QoaXOqRAOZigApMT0ANjk2ADUBsQEEHAo3CTEwXzI0BbYMODM1CWlAkGEsIGtlZXAgb3JkZXI6ZmFsc2UsIHN0YXRzOnBzZXVkbwk4Mzcpk1JWACnULDkJMAk2OS45MDMzNkLUAQg4CTUJQRg0OTkuMjM0RTJ+1AEYMy40MDA3NCWfPdMAMWbSARgzLjM4NzQ1hTBu0QEINzY5jQM1ywA4JRUVwQhuZShaxgRmwQMIY3JlofcQYnksICIhxwUFJcwAbkIMBZZGAFR5dW55YW5nLmxpIiwgIlpoZW5odWFuDQ8cc3VucWkwNTEBGxhsZWkudGFuAQsgeXVld2VpMDEwBQ0oaW5namllLnBlbmcBECh6b25nei5iYWkwMAU4MG5pbmdiby56aGFvIil2egJmsgDJfpW5ACkx7Cp+CQAzIWkBBE2DADclbggxNjRNgwBigoMCBSwOyApSVgBB01QzMAkwCTg2NjUuMDgwMDk5ODI0MzgzYZUecQogOCwgMSkJNzgJBUkgMTU0LjgyMjI2HVIkMQkxMDkuMTQ4NCp1CBA1CTBfM4GziDEwODMxLjM1MDEyNDc4MDQ3OAlleGVjdXRpb24gaW5mbzogLkoFCDQsIIHcVCBzb3VyY2U6VGFibGVSZWFkZXJfMzQBTQQ5NhmKDDE0NzBJ62kXKDEzLCBTaHVmZmxlLhMJADQhRQEEGAo2CTMzXzMWCwlClwAIcm93gfEMYmVyKCbmCSA1OCBvdmVyKHAOCAsFtARiec7vCIkpuj0AHlEIFCBkZXNjKS7+ABw2MDQuNDI5OMVoDf0ANgHjAQRBMAw0XzM14ZxG5wDKrAkMOmFzY9IKCQA6Abk2uAAYMS4yODc1MYVvFbkQMzI0LjY+9wYQOAkwXzRarAEACRq2DAQwbiKtDCQwCU4vQQlOL0EK') Plan_digest: ba03b5b0abc0c3066a4a9f4e2a6c77dc1c8e8287001f10ad3ddf0bdce42410c7 SELECT create_by,result FROM (select b.create_by,group_concat(concat('Topic->',a.api_flag_full,'; Group->',a.job_name,'; 待消费->',a.result) SEPARATOR '\n') as result from api_service.sys_monitor_inspection_log a left join api_service.sys_config_flink_table_config b on a.job_name = b.kafka_group_id left join (select job_name,row_number() over(partition by job_name order by etl_time desc ) as rk,etl_time,result from api_service.sys_monitor_inspection_log_his where inspection_type='KafkaLag') c on a.job_name = c.job_name and date_add(a.etl_time,interval -b.kafka_checkpoint_interval minute) >= c.etl_time where a.inspection_type='KafkaLag' and b.create_by not in ('[yunyang.li](http://yunyang.li)','[Zhenhuan.li](http://Zhenhuan.li)','sunqi051','lei.tan','yuewei010','yingjie.peng','zongz.bai001','ningbo.zhao') and ifnull(b.create_by,'')<>'' and c.job_name is not null and c.rk=1 and a.result > ifnull(c.result,0) group by b.create_by) as tmp_table ;
```

## Root Cause

用户 SQL 中 group_concat() 的 sep 为 '\n' ，但是 4.0.11 之前的版本写 slow_query.log 时有 bug ，没有正确处理 \n, \t 这两个特殊字符，导致编码值有问题，该问题在 4.0.11 上已经修复，具体见 [https://github.com/pingcap/tidb/pull/21937/files](https://github.com/pingcap/tidb/pull/21937/files)

## Diagnostic Steps

### 简化复现 SQL

```sql
drop table if exists t1;

create table t1(c1 int);

insert into t1 values(1), (2), (3); insert into t1 values(1), (2), (3);

select group_concat(c1 separator '\n') from t1 group by c1;

mysql> select tidb_decode_plan('sgSYMAk2XzUJMAk4MDAwCWdyb3VwIGJ5OkNvbHVtbiM1LCBmdW5jczpnARkcX2NvbmNhdCgNHUQ0IHNlcGFyYXRvciAiCiIpLT4NGdAzCTMJdGltZTo1NTcuNcK1cywgbG9vcHM6MywgUGFydGlhbENvbmN1cnJlbmN5OjQsIEZpbjoUAPA+CTYuNzgxMjUgS0IJTi9BCjEJM18xMgkwCTEwMDAwCWNhc3QodGVzdC50MS5jMSwgdmFyX3N0cmluZygyMCkpFYwMNCwgdBUnBAk2CZgINDExHZYIMiwgMo8AGAk0Ljg0MzcVexQyCTMxXzkVe0xkYXRhOlRhYmxlRnVsbFNjYW5fOBFZEDI1Ni45NlsAbGNvcF90YXNrOiB7bnVtOiAxLCBtYXg6MjM2LjYFKkRwcm9jX2tleXM6IDAsIHJwY18RKAEMJUgEIDINsdhjb3ByX2NhY2hlX2hpdF9yYXRpbzogMC4wMH0JMjA1IEJ5dGVzCU4vQQozCTEwXzgJMV8wCTEwITIAdAGyiDp0MSwga2VlcCBvcmRlcjpmYWxzZSwgc3RhdHM6cHNldWRvEcsQMTE2LjgFoSm8JDcJTi9BCU4vQQo='); ERROR 1105 (HY000): decode plan: ")>Column#3, error: strconv.Atoi: parsing "")->Column#3": invalid syntax
```

原因：编码 SQL 时候没有处理好特殊字符 \n

## Resolution

升级版本到4.0.11

## Workaround

修改SQL，避开 `\n` 字符