bingding/mysql: add select JSON_EXTRACT LONGTEXT column type to special case (#1486)
Signed-off-by: zdianjiang <zdianjiang@gmail.com> Co-authored-by: Bernd Verst <4535280+berndverst@users.noreply.github.com>
This commit is contained in:
parent
625f955fee
commit
4302917ee5
|
|
@ -339,7 +339,7 @@ func (m *Mysql) convert(columnTypes []*sql.ColumnType, values []interface{}) map
|
|||
case *sql.RawBytes:
|
||||
// special case for sql.RawBytes, see https://github.com/go-sql-driver/mysql/blob/master/fields.go#L178
|
||||
switch ct.DatabaseTypeName() {
|
||||
case "VARCHAR", "CHAR", "TEXT":
|
||||
case "VARCHAR", "CHAR", "TEXT", "LONGTEXT":
|
||||
value = string(*v)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,11 +36,12 @@ const (
|
|||
b BOOLEAN,
|
||||
ts TIMESTAMP,
|
||||
data LONGTEXT)`
|
||||
testDropTable = `DROP TABLE foo`
|
||||
testInsert = "INSERT INTO foo (id, v1, b, ts, data) VALUES (%d, 'test-%d', %t, '%v', '%s')"
|
||||
testDelete = "DELETE FROM foo"
|
||||
testUpdate = "UPDATE foo SET ts = '%v' WHERE id = %d"
|
||||
testSelect = "SELECT * FROM foo WHERE id < 3"
|
||||
testDropTable = `DROP TABLE foo`
|
||||
testInsert = "INSERT INTO foo (id, v1, b, ts, data) VALUES (%d, 'test-%d', %t, '%v', '%s')"
|
||||
testDelete = "DELETE FROM foo"
|
||||
testUpdate = "UPDATE foo SET ts = '%v' WHERE id = %d"
|
||||
testSelect = "SELECT * FROM foo WHERE id < 3"
|
||||
testSelectJSONExtract = "SELECT JSON_EXTRACT(data, '$.key') AS `key` FROM foo WHERE id < 3"
|
||||
)
|
||||
|
||||
func TestOperations(t *testing.T) {
|
||||
|
|
@ -140,6 +141,22 @@ func TestMysqlIntegration(t *testing.T) {
|
|||
t.Logf("time stamp is: %v", tt)
|
||||
})
|
||||
|
||||
t.Run("Invoke select JSON_EXTRACT", func(t *testing.T) {
|
||||
req.Operation = queryOperation
|
||||
req.Metadata[commandSQLKey] = testSelectJSONExtract
|
||||
res, err := b.Invoke(req)
|
||||
assertResponse(t, res, err)
|
||||
t.Logf("received result: %s", res.Data)
|
||||
|
||||
// verify json extract number
|
||||
assert.Contains(t, string(res.Data), "{\"key\":\"\\\"val\\\"\"}")
|
||||
|
||||
result := make([]interface{}, 0)
|
||||
err = json.Unmarshal(res.Data, &result)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, 3, len(result))
|
||||
})
|
||||
|
||||
t.Run("Invoke delete", func(t *testing.T) {
|
||||
req.Operation = execOperation
|
||||
req.Metadata[commandSQLKey] = testDelete
|
||||
|
|
|
|||
Loading…
Reference in New Issue