Jitmisra opened a new issue, #1055: URL: https://github.com/apache/incubator-seata-go/issues/1055
**What's the problem?** Every AT mode executor (`insert_executor.go`, `update_executor.go`, `delete_executor.go`, etc.) calls `datasource.GetTableCache(types.DBTypeMySQL)` instead of using the database type from the execution context (`execContext.DBType`). This means: 1. Only MySQL works in AT mode — if MariaDB or Oracle table caches are registered, they are **never used** 2. Non-MySQL connections cause a **nil pointer panic** because `GetTableCache(DBTypeMySQL)` is the only cache looked up 3. The `escape.go` functions (`DelEscape`, `AddEscape`, `checkEscape`) only handle MySQL, ignoring other databases' escaping rules Additionally, `insert_on_update_executor.go` has a **variable shadowing bug** — the loop variable `i` (line 219) shadows the receiver `i *insertOnUpdateExecutor`, which would cause a compile error when accessing `i.execContext.DBType`. **Root Cause** When the AT executor layer was originally written, only MySQL was supported. The `types.DBTypeMySQL` constant was used directly everywhere instead of reading from `execContext.DBType`. This creates a hard dependency that blocks any multi-database expansion. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
