mirror of https://github.com/sysown/proxysql
parent
dd04a5e95d
commit
df0e36e854
@ -0,0 +1,70 @@
|
||||
### Flowchart of `MySQL_Connection::async_query()`
|
||||
|
||||
This function asynchronously executes a query on the MySQL connection.
|
||||
It handles various states of the asynchronous query execution process and returns appropriate status codes indicating the result of the execution.
|
||||
|
||||
Returns an integer status code indicating the result of the query execution:
|
||||
- 0: Query execution completed successfully.
|
||||
- -1: Query execution failed.
|
||||
- 1: Query execution in progress.
|
||||
- 2: Processing a multi-statement query, control needs to be transferred to MySQL_Session.
|
||||
- 3: In the middle of processing a multi-statement query.
|
||||
|
||||
|
||||
```mermaid
|
||||
---
|
||||
title: MySQL_Connection::async_query()
|
||||
---
|
||||
flowchart TD
|
||||
Assert["assert()"]
|
||||
ValidConnection{Valid Connection}
|
||||
ValidConnection -- no --> Assert
|
||||
IsServerOffline{"IsServerOffline()"}
|
||||
ValidConnection -- yes --> IsServerOffline
|
||||
IsServerOffline -- yes --> ReturnMinus1
|
||||
asyncStateMachine1{async_state_machine}
|
||||
asyncStateMachine2{async_state_machine}
|
||||
IsServerOffline -- no --> asyncStateMachine1
|
||||
asyncStateMachine1 -- ASYNC_QUERY_END --> Return0
|
||||
handler["handler()"]
|
||||
asyncStateMachine1 --> handler
|
||||
handler --> asyncStateMachine2
|
||||
asyncStateMachine2 -- ASYNC_QUERY_END --> mysql_error{"mysql_error"}
|
||||
asyncStateMachine2 -- ASYNC_STMT_EXECUTE_END --> mysql_error
|
||||
asyncStateMachine2 -- ASYNC_STMT_PREPARE_FAILED --> ReturnMinus1
|
||||
asyncStateMachine2 -- ASYNC_STMT_PREPARE_SUCCESSFUL --> Return0
|
||||
mysql_error -- yes --> ReturnMinus1
|
||||
mysql_error -- no --> Return0
|
||||
asyncStateMachine2 -- ASYNC_NEXT_RESULT_START --> Return2
|
||||
processing_multi_statement{"processing_multi_statement"}
|
||||
asyncStateMachine2 --> processing_multi_statement
|
||||
processing_multi_statement -- yes --> Return3
|
||||
processing_multi_statement -- no --> Return1
|
||||
ReturnMinus1["return -1"]
|
||||
Return0["return 0"]
|
||||
Return1["return 1"]
|
||||
Return2["return 2"]
|
||||
Return3["return 3"]
|
||||
```
|
||||
|
||||
### Flowchart of `MySQL_Connection::IsServerOffline()`
|
||||
|
||||
```mermaid
|
||||
---
|
||||
title: MySQL_Connection::IsServerOffline()
|
||||
---
|
||||
flowchart TD
|
||||
True[true]
|
||||
False[false]
|
||||
SS1{"server_status"}
|
||||
SA{"shunned_automatic"}
|
||||
SB{"shunned_and_kill_all_connections"}
|
||||
SS1 -- OFFLINE_HARD --> True
|
||||
SS1 -- REPLICATION_LAG --> True
|
||||
SS1 -- SHUNNED --> SA
|
||||
SA -- yes --> SB
|
||||
SB -- yes --> True
|
||||
SA -- no --> False
|
||||
SB -- no --> False
|
||||
SS1 --> False
|
||||
```
|
||||
Loading…
Reference in new issue