(columnType string)
| 196 | } |
| 197 | |
| 198 | func getColumnTypeAndLen(columnType string) (byte, uint32) { |
| 199 | index := strings.Index(columnType, "(") |
| 200 | types := columnType |
| 201 | var length uint32 |
| 202 | if index > -1 { |
| 203 | types = columnType[:index] |
| 204 | l := columnType[index+1 : len(columnType)-1] |
| 205 | le, _ := strconv.Atoi(l) |
| 206 | length = uint32(le) |
| 207 | } |
| 208 | switch types { |
| 209 | case "INT": |
| 210 | return mysql.MYSQL_TYPE_INT24, length |
| 211 | case "TEXT": |
| 212 | return mysql.MYSQL_TYPE_BLOB, length |
| 213 | case "CHAR", "VARCHAR": |
| 214 | return mysql.MYSQL_TYPE_VARCHAR, length |
| 215 | case "REAL", "DOUBLE": |
| 216 | return mysql.MYSQL_TYPE_DOUBLE, length |
| 217 | case "FLOAT": |
| 218 | return mysql.MYSQL_TYPE_FLOAT, length |
| 219 | case "DATE": |
| 220 | return mysql.MYSQL_TYPE_DATE, length |
| 221 | case "DATETIME": |
| 222 | return mysql.MYSQL_TYPE_DATETIME, length |
| 223 | case "TIMESTAMP": |
| 224 | return mysql.MYSQL_TYPE_TIMESTAMP, length |
| 225 | case "DECIMAL", "NUMERIC": |
| 226 | return mysql.MYSQL_TYPE_DECIMAL, length |
| 227 | case "BOOLEAN": |
| 228 | return mysql.MYSQL_TYPE_BIT, length |
| 229 | case "NULL": |
| 230 | return mysql.MYSQL_TYPE_NULL, length |
| 231 | } |
| 232 | return mysql.MYSQL_TYPE_VAR_STRING, length |
| 233 | } |
| 234 | |
| 235 | func isDML(sql string) bool { |
| 236 | prefix := sql |
no outgoing calls