@@ -3,6 +3,7 @@ package cql
33import (
44 "context"
55 "database/sql"
6+ "reflect"
67 "testing"
78 // "time"
89)
@@ -77,7 +78,7 @@ func TestSqlCreate(t *testing.T) {
7778 // create table
7879 ctx , cancel = context .WithTimeout (context .Background (), TimeoutValid )
7980 // removed duration_data duration
80- result , err = db .ExecContext (ctx , "create table " + KeyspaceName + "." + TableName + " (text_data text PRIMARY KEY, int_data int, timestamp_data timestamp)" )
81+ result , err = db .ExecContext (ctx , "create table " + KeyspaceName + "." + TableName + " (text_data text PRIMARY KEY, int_data int, timestamp_data timestamp, map_data map<text, text> )" )
8182 cancel ()
8283 if err != nil {
8384 t .Fatal ("ExecContext error: " , err )
@@ -422,6 +423,94 @@ func TestSqlInsertUpdateSelectDelete(t *testing.T) {
422423 }
423424 */
424425
426+ // insert five map
427+ aMap := map [string ]string {"a" : "a" }
428+ var ok bool
429+ var text string
430+ ctx , cancel = context .WithTimeout (context .Background (), TimeoutValid )
431+ result , err = db .ExecContext (ctx , "insert into " + KeyspaceName + "." + TableName + " (text_data, map_data) values (?, ?)" , "five" , aMap )
432+ cancel ()
433+ if err != nil {
434+ t .Fatal ("ExecContext error: " , err )
435+ }
436+ if result == nil {
437+ t .Fatal ("result is nil" )
438+ }
439+
440+ // select five map
441+ ctx , cancel = context .WithTimeout (context .Background (), TimeoutValid )
442+ rows , err = db .QueryContext (ctx , "select text_data, map_data from " + KeyspaceName + "." + TableName + " where text_data = ?" , "five" )
443+ if err != nil {
444+ t .Fatal ("QueryContext error: " , err )
445+ }
446+ if rows == nil {
447+ t .Fatal ("rows is nil" )
448+ }
449+ if ! rows .Next () {
450+ t .Fatal ("no Next rows" )
451+ }
452+ err = rows .Scan (destPointer ... )
453+ if err != nil {
454+ t .Fatal ("Scan error: " , err )
455+ }
456+ if dest [0 ] != "five" {
457+ t .Fatalf ("text_data - received: %v - expected: %v" , dest [0 ], "five" )
458+ }
459+ aMap , ok = dest [1 ].(map [string ]string )
460+ if ! ok {
461+ t .Fatalf ("map_data not time, type: %T" , dest [1 ])
462+ }
463+ if ! reflect .DeepEqual (aMap , map [string ]string {"a" : "a" }) {
464+ t .Fatalf ("map_data - received: %v - expected: %v" , aMap , map [string ]string {"a" : "a" })
465+ }
466+ if rows .Next () {
467+ t .Fatal ("has Next rows" )
468+ }
469+ err = rows .Close ()
470+ if err != nil {
471+ t .Fatal ("Close error: " , err )
472+ }
473+ cancel ()
474+ err = rows .Err ()
475+ if err != nil {
476+ t .Fatal ("Err error: " , err )
477+ }
478+
479+ // select five map
480+ ctx , cancel = context .WithTimeout (context .Background (), TimeoutValid )
481+ rows , err = db .QueryContext (ctx , "select text_data, map_data from " + KeyspaceName + "." + TableName + " where text_data = ?" , "five" )
482+ if err != nil {
483+ t .Fatal ("QueryContext error: " , err )
484+ }
485+ if rows == nil {
486+ t .Fatal ("rows is nil" )
487+ }
488+ if ! rows .Next () {
489+ t .Fatal ("no Next rows" )
490+ }
491+ err = rows .Scan (& text , & aMap )
492+ if err != nil {
493+ t .Fatal ("Scan error: " , err )
494+ }
495+ if text != "five" {
496+ t .Fatalf ("text_data - received: %v - expected: %v" , text , "five" )
497+ }
498+ if ! reflect .DeepEqual (aMap , map [string ]string {"a" : "a" }) {
499+ t .Fatalf ("map_data - received: %v - expected: %v" , aMap , map [string ]string {"a" : "a" })
500+ }
501+ if rows .Next () {
502+ t .Fatal ("has Next rows" )
503+ }
504+ err = rows .Close ()
505+ if err != nil {
506+ t .Fatal ("Close error: " , err )
507+ }
508+ cancel ()
509+ err = rows .Err ()
510+ if err != nil {
511+ t .Fatal ("Err error: " , err )
512+ }
513+
425514 // select errors
426515 ctx , cancel = context .WithTimeout (context .Background (), TimeoutValid )
427516 rows , err = db .QueryContext (ctx , "select int_data from " + KeyspaceName + "." + TableName + " group by int_data" )
0 commit comments