@@ -1255,57 +1255,89 @@ func TestArrayArrayT(t *testing.T) {
12551255 const (
12561256 ddl = `
12571257 CREATE TABLE clickhouse_test_array_array_t (
1258- String Array(Array(String))
1259- , String2 Array(String)
1260- , Int32 Array(Int32)
1258+ String1 Array(Array(String)),
1259+ String2 Array(Array(Array( String))),
1260+ Int32 Array(Array( Int32) )
12611261 ) Engine=Memory
12621262 `
12631263 dml = `
1264- INSERT INTO clickhouse_test_array_array_t (String , String2, Int32) VALUES (?)
1264+ INSERT INTO clickhouse_test_array_array_t (String1 , String2, Int32) VALUES (?)
12651265 `
12661266 query = `
12671267 SELECT
1268- String
1268+ String1,
1269+ String2,
1270+ Int32
12691271 FROM clickhouse_test_array_array_t
12701272 `
12711273 )
1274+
1275+ items := []struct {
1276+ String1 , String2 , Int32 interface {}
1277+ }{
1278+ {
1279+ [][]string {
1280+ []string {"A" },
1281+ []string {"BC" },
1282+ []string {"DEF" },
1283+ },
1284+ [][][]string {
1285+ [][]string {
1286+ []string {"X" },
1287+ []string {"Y" },
1288+ },
1289+ [][]string {
1290+ []string {"ZZ" },
1291+ },
1292+ },
1293+ [][]int32 {
1294+ []int32 {1 },
1295+ []int32 {2 , 3 },
1296+ },
1297+ },
1298+ {
1299+ [][][]byte {
1300+ [][]byte {[]byte ("AA" )},
1301+ [][]byte {[]byte ("BB" )},
1302+ [][]byte {[]byte ("C4C" )},
1303+ },
1304+ [][][][]byte {
1305+ [][][]byte {
1306+ [][]byte {[]byte ("XX" ), []byte ("YY" )},
1307+ },
1308+ },
1309+ [][]int32 {
1310+ []int32 {4 , 5 , 6 },
1311+ },
1312+ },
1313+ }
1314+
12721315 if connect , err := sql .Open ("clickhouse" , "tcp://127.0.0.1:9000?debug=true" ); assert .NoError (t , err ) && assert .NoError (t , connect .Ping ()) {
12731316 if _ , err := connect .Exec ("DROP TABLE IF EXISTS clickhouse_test_array_array_t" ); assert .NoError (t , err ) {
12741317 if _ , err := connect .Exec (ddl ); assert .NoError (t , err ) {
12751318 if tx , err := connect .Begin (); assert .NoError (t , err ) {
12761319 if stmt , err := tx .Prepare (dml ); assert .NoError (t , err ) {
1277- _ , err = stmt .Exec ([][]string {[]string {"A" }, []string {"B" }, []string {"C" }}, []string {"X" , "Y" }, []int32 {1 , 2 , 3 })
1278- if ! assert .NoError (t , err ) {
1279- return
1280- }
1281- _ , err = stmt .Exec ([][]string {[]string {"AA" }, []string {"BB" }, []string {"C4C" }}, []string {"XX" , "YY" }, []int32 {4 , 5 , 6 })
1282- if ! assert .NoError (t , err ) {
1283- return
1284- }
1285- _ , err = stmt .Exec (
1286- [][][]byte {
1287- [][]byte {[]byte ("AA" )},
1288- [][]byte {[]byte ("BB" )},
1289- [][]byte {[]byte ("C4C" )},
1290- },
1291- [][]byte {[]byte ("XX" ), []byte ("YY" )},
1292- []int32 {4 , 5 , 6 },
1293- )
1294- if ! assert .NoError (t , err ) {
1295- return
1320+ for _ , item := range items {
1321+ _ , err = stmt .Exec (item .String1 , item .String2 , item .Int32 )
1322+ if ! assert .NoError (t , err ) {
1323+ return
1324+ }
12961325 }
1297- } else {
1298- return
1326+
12991327 }
13001328 if assert .NoError (t , tx .Commit ()) {
1301- /* var value []string
1302- if err := connect.QueryRow(query).Scan(&value); assert.NoError(t, err) {
1303- if !assert.NoError(t, err) {
1304- return
1305- }
1306- }
1307- assert.Equal(t, []string{"A", "C"}, value)
1308- */
1329+ var result struct {
1330+ String1 [][]string
1331+ String2 [][][]string
1332+ Int32 [][]int32
1333+ }
1334+
1335+ row := connect .QueryRow (query )
1336+ if err := row .Scan (& result .String1 , & result .String2 , & result .Int32 ); assert .NoError (t , err ) {
1337+ assert .Equal (t , items [0 ].String1 , result .String1 )
1338+ assert .Equal (t , items [0 ].String2 , result .String2 )
1339+ assert .Equal (t , items [0 ].Int32 , result .Int32 )
1340+ }
13091341 }
13101342 }
13111343 }
0 commit comments