MCPcopy
hub / github.com/go-sql-driver/mysql / TestLongData

Function TestLongData

driver_test.go:1270–1330  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1268}
1269
1270func TestLongData(t *testing.T) {
1271 runTests(t, dsn+"&maxAllowedPacket=0", func(dbt *DBTest) {
1272 var maxAllowedPacketSize int
1273 err := dbt.db.QueryRow("select @@max_allowed_packet").Scan(&maxAllowedPacketSize)
1274 if err != nil {
1275 dbt.Fatal(err)
1276 }
1277 maxAllowedPacketSize--
1278
1279 // don't get too ambitious
1280 if maxAllowedPacketSize > 1<<25 {
1281 maxAllowedPacketSize = 1 << 25
1282 }
1283
1284 dbt.mustExec("CREATE TABLE test (value LONGBLOB)")
1285
1286 in := strings.Repeat(`a`, maxAllowedPacketSize+1)
1287 var out string
1288 var rows *sql.Rows
1289
1290 // Long text data
1291 inS := in[:maxAllowedPacketSize-100]
1292 dbt.mustExec("INSERT INTO test VALUES('" + inS + "')")
1293 rows = dbt.mustQuery("SELECT value FROM test")
1294 defer rows.Close()
1295 if rows.Next() {
1296 rows.Scan(&out)
1297 if inS != out {
1298 dbt.Fatalf("LONGBLOB: length in: %d, length out: %d", len(inS), len(out))
1299 }
1300 if rows.Next() {
1301 dbt.Error("LONGBLOB: unexpected row")
1302 }
1303 } else {
1304 dbt.Fatalf("LONGBLOB: no data")
1305 }
1306
1307 // Empty table
1308 dbt.mustExec("TRUNCATE TABLE test")
1309
1310 // Long binary data
1311 dbt.mustExec("INSERT INTO test VALUES(?)", in)
1312 rows = dbt.mustQuery("SELECT value FROM test WHERE 1=?", 1)
1313 defer rows.Close()
1314 if rows.Next() {
1315 rows.Scan(&out)
1316 if in != out {
1317 dbt.Fatalf("LONGBLOB: length in: %d, length out: %d", len(in), len(out))
1318 }
1319 if rows.Next() {
1320 dbt.Error("LONGBLOB: unexpected row")
1321 }
1322 } else {
1323 if err = rows.Err(); err != nil {
1324 dbt.Fatalf("LONGBLOB: no data (err: %s)", err.Error())
1325 } else {
1326 dbt.Fatal("LONGBLOB: no data (err: <nil>)")
1327 }

Callers

nothing calls this directly

Calls 7

runTestsFunction · 0.85
ScanMethod · 0.80
mustExecMethod · 0.80
mustQueryMethod · 0.80
CloseMethod · 0.45
NextMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected