Skip to content

Commit f7efb07

Browse files
authored
Merge branch 'master' into stg/server_missed_ok
2 parents bc26bed + 042dd6c commit f7efb07

File tree

5 files changed

+16
-8
lines changed

5 files changed

+16
-8
lines changed

mysql/const.go

+2
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,8 @@ const (
147147
MYSQL_TYPE_TIME2
148148
)
149149

150+
const MYSQL_TYPE_VECTOR = 0xf2
151+
150152
const (
151153
MYSQL_TYPE_JSON byte = iota + 0xf5
152154
MYSQL_TYPE_NEWDECIMAL

mysql/rowdata.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -173,10 +173,10 @@ func (p RowData) ParseBinary(f []*Field, dst []FieldValue) ([]FieldValue, error)
173173
pos += 8
174174
continue
175175

176-
case MYSQL_TYPE_DECIMAL, MYSQL_TYPE_NEWDECIMAL, MYSQL_TYPE_VARCHAR,
177-
MYSQL_TYPE_BIT, MYSQL_TYPE_ENUM, MYSQL_TYPE_SET, MYSQL_TYPE_TINY_BLOB,
178-
MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB, MYSQL_TYPE_BLOB,
179-
MYSQL_TYPE_VAR_STRING, MYSQL_TYPE_STRING, MYSQL_TYPE_GEOMETRY, MYSQL_TYPE_JSON:
176+
case MYSQL_TYPE_DECIMAL, MYSQL_TYPE_NEWDECIMAL, MYSQL_TYPE_VARCHAR, MYSQL_TYPE_BIT,
177+
MYSQL_TYPE_ENUM, MYSQL_TYPE_SET, MYSQL_TYPE_TINY_BLOB, MYSQL_TYPE_MEDIUM_BLOB,
178+
MYSQL_TYPE_LONG_BLOB, MYSQL_TYPE_BLOB, MYSQL_TYPE_VAR_STRING, MYSQL_TYPE_STRING,
179+
MYSQL_TYPE_VECTOR, MYSQL_TYPE_GEOMETRY, MYSQL_TYPE_JSON:
180180
v, isNull, n, err = LengthEncodedString(p[pos:])
181181
pos += n
182182
if err != nil {

notes/field_type.md

+1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ Here is a list collected from `mysql-8.0/sql/field.h`:
6363
| | | +--Field_varstring | MYSQL_TYPE_VARCHAR | MYSQL_TYPE_VARCHAR | |
6464
| | | +--Field_blob | MYSQL_TYPE_BLOB | | |
6565
| | | +--Field_geom | MYSQL_TYPE_GEOMETRY | | |
66+
| | | +--Field_vector | MYSQL_TYPE_VECTOR | | |
6667
| | | +--Field_json | MYSQL_TYPE_JSON | | |
6768
| | | +--Field_typed_array | real_type_to_type(m_elt_type) | m_elt_type | MYSQL_TYPE_TYPED_ARRAY |
6869
| | | | | | |

replication/row_event.go

+5
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ func bitmapByteSize(columnCount int) int {
181181
MYSQL_TYPE_DOUBLE
182182
MYSQL_TYPE_BLOB
183183
MYSQL_TYPE_GEOMETRY
184+
MYSQL_TYPE_VECTOR
184185
185186
//maybe
186187
MYSQL_TYPE_TIME2
@@ -226,6 +227,7 @@ func (e *TableMapEvent) decodeMeta(data []byte) error {
226227
mysql.MYSQL_TYPE_DOUBLE,
227228
mysql.MYSQL_TYPE_FLOAT,
228229
mysql.MYSQL_TYPE_GEOMETRY,
230+
mysql.MYSQL_TYPE_VECTOR,
229231
mysql.MYSQL_TYPE_JSON:
230232
e.ColumnMeta[i] = uint16(data[pos])
231233
pos++
@@ -891,6 +893,7 @@ const RowsEventStmtEndFlag = 0x01
891893
// - mysql.MYSQL_TYPE_STRING: string
892894
// - mysql.MYSQL_TYPE_JSON: []byte / *replication.JsonDiff
893895
// - mysql.MYSQL_TYPE_GEOMETRY: []byte
896+
// - mysql.MYSQL_TYPE_VECTOR: []byte
894897
type RowsEvent struct {
895898
// 0, 1, 2
896899
Version int
@@ -1407,6 +1410,8 @@ func (e *RowsEvent) decodeValue(data []byte, tp byte, meta uint16, isPartial boo
14071410
// I also find some go libs to handle WKB if possible
14081411
// see https://github.com/twpayne/go-geom or https://github.com/paulmach/go.geo
14091412
v, n, err = decodeBlob(data, meta)
1413+
case mysql.MYSQL_TYPE_VECTOR:
1414+
v, n, err = decodeBlob(data, meta)
14101415
default:
14111416
err = fmt.Errorf("unsupport type %d in binlog and don't know how to handle", tp)
14121417
}

server/stmt.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -276,10 +276,10 @@ func (c *Conn) bindStmtArgs(s *Stmt, nullBitmap, paramTypes, paramValues []byte)
276276
pos += 8
277277
continue
278278

279-
case mysql.MYSQL_TYPE_DECIMAL, mysql.MYSQL_TYPE_NEWDECIMAL, mysql.MYSQL_TYPE_VARCHAR,
280-
mysql.MYSQL_TYPE_BIT, mysql.MYSQL_TYPE_ENUM, mysql.MYSQL_TYPE_SET, mysql.MYSQL_TYPE_TINY_BLOB,
281-
mysql.MYSQL_TYPE_MEDIUM_BLOB, mysql.MYSQL_TYPE_LONG_BLOB, mysql.MYSQL_TYPE_BLOB,
282-
mysql.MYSQL_TYPE_VAR_STRING, mysql.MYSQL_TYPE_STRING, mysql.MYSQL_TYPE_GEOMETRY,
279+
case mysql.MYSQL_TYPE_DECIMAL, mysql.MYSQL_TYPE_NEWDECIMAL, mysql.MYSQL_TYPE_VARCHAR, mysql.MYSQL_TYPE_BIT,
280+
mysql.MYSQL_TYPE_ENUM, mysql.MYSQL_TYPE_SET, mysql.MYSQL_TYPE_TINY_BLOB, mysql.MYSQL_TYPE_MEDIUM_BLOB,
281+
mysql.MYSQL_TYPE_LONG_BLOB, mysql.MYSQL_TYPE_BLOB, mysql.MYSQL_TYPE_VAR_STRING, mysql.MYSQL_TYPE_STRING,
282+
mysql.MYSQL_TYPE_GEOMETRY, mysql.MYSQL_TYPE_VECTOR,
283283
mysql.MYSQL_TYPE_DATE, mysql.MYSQL_TYPE_NEWDATE,
284284
mysql.MYSQL_TYPE_TIMESTAMP, mysql.MYSQL_TYPE_DATETIME, mysql.MYSQL_TYPE_TIME:
285285
if len(paramValues) < (pos + 1) {

0 commit comments

Comments
 (0)