@@ -31,51 +31,55 @@ func Test_NullableArray(t *testing.T) {
3131 arr_string Array(Nullable(String)),
3232 arr_arr_string Array(Array(Nullable(String))),
3333 arr_date Array(Nullable(Date)),
34- arr_datetime Array(Nullable(DateTime))
34+ arr_datetime Array(Nullable(DateTime)),
35+ arr_enum8_str Array(Nullable(Enum8('a8' = 1, 'b8' = 2))),
36+ arr_enum8_int Array(Nullable(Enum8('a8' = 1, 'b8' = 2))),
37+ arr_enum16_str Array(Nullable(Enum16('a16' = 1, 'b16' = 2))),
38+ arr_enum16_int Array(Nullable(Enum16('a16' = 1, 'b16' = 2)))
3539 ) Engine = Memory;
3640 `
3741 dml = `
38- INSERT INTO clickhouse_test_nullable_array (
39- arr_decimal ,
40- arr_int8 ,
41- arr_int16 ,
42- arr_int32 ,
43- arr_int64 ,
44-
45- arr_uint8 ,
46- arr_uint16 ,
47- arr_uint32 ,
48- arr_uint64 ,
49-
50- arr_float32 ,
51- arr_float64 ,
52-
53- arr_ipv6 ,
54- arr_ipv4 ,
55-
56- arr_string ,
57- arr_arr_string ,
58-
59- arr_date ,
60- arr_datetime
61- ) VALUES (
62- ?,
63- ?,
64- ?,
65- ?,
66- ?,
67- ?,
68- ?,
69- ?,
70- ?,
71- ?,
72- ?,
73- ?,
74- ?,
75- ?,
76- ?,
77- ?
78- )
42+ INSERT INTO clickhouse_test_nullable_array (arr_decimal,
43+ arr_int8 ,
44+ arr_int16 ,
45+ arr_int32 ,
46+ arr_int64 ,
47+ arr_uint8 ,
48+ arr_uint16,
49+ arr_uint32 ,
50+ arr_uint64 ,
51+ arr_float32 ,
52+ arr_float64 ,
53+ arr_ipv6,
54+ arr_ipv4 ,
55+ arr_string ,
56+ arr_arr_string,
57+ arr_date ,
58+ arr_datetime ,
59+ arr_enum8_str,
60+ arr_enum8_int ,
61+ arr_enum16_str ,
62+ arr_enum16_int)
63+ VALUES (? ,
64+ ?,
65+ ?,
66+ ?,
67+ ?,
68+ ?,
69+ ?,
70+ ?,
71+ ?,
72+ ?,
73+ ?,
74+ ?,
75+ ?,
76+ ?,
77+ ?,
78+ ?,
79+ ?,
80+ ?,
81+ ?,
82+ ?);
7983 `
8084 query = `
8185 SELECT
@@ -107,16 +111,28 @@ func Test_NullableArray(t *testing.T) {
107111 timeV , _ := time .Parse ("2006-01-02 15:04:05" , "2021-07-11 00:00:00" )
108112 dateV , _ := time .Parse ("2006-01-02" , "2021-07-11" )
109113
114+ enum8VA := "a8"
115+ enum8VB := "b8"
116+
117+ enum8V1 := int8 (1 )
118+ enum8V2 := int8 (2 )
119+
120+ enum16VA := "a16"
121+ enum16VB := "b16"
122+
123+ enum16V1 := int16 (1 )
124+ enum16V2 := int16 (2 )
125+
110126 var timeNil * time.Time
111127
112- if connect , err := sql .Open ("clickhouse" , "tcp://127 .0.0.1 :9000?debug=true" ); assert .NoError (t , err ) {
128+ if connect , err := sql .Open ("clickhouse" , "tcp://0 .0.0.0 :9000?debug=true" ); assert .NoError (t , err ) {
113129 if tx , err := connect .Begin (); assert .NoError (t , err ) {
114130 if _ , err := connect .Exec ("DROP TABLE IF EXISTS clickhouse_test_nullable_array" ); assert .NoError (t , err ) {
115131 if _ , err := tx .Exec (ddl ); assert .NoError (t , err ) {
116132 if tx , err := connect .Begin (); assert .NoError (t , err ) {
117133 stmt , err := tx .Prepare (dml )
118134 if assert .NoError (t , err ) {
119- for i := 0 ; i < 100 ; i ++ {
135+ for i := 0 ; i < 10 ; i ++ {
120136 if _ , err := stmt .Exec (
121137 []* float64 {& decV , nil , & decV },
122138 []* int8 {& int8V , nil , & int8V },
@@ -140,6 +156,11 @@ func Test_NullableArray(t *testing.T) {
140156
141157 []* time.Time {& dateV , nil , & dateV },
142158 []* time.Time {& timeV , nil , & timeV },
159+
160+ []* string {& enum8VA , nil , & enum8VB },
161+ []* int8 {& enum8V1 , nil , & enum8V2 },
162+ []* string {& enum16VA , nil , & enum16VB },
163+ []* int16 {& enum16V1 , nil , & enum16V2 },
143164 ); ! assert .NoError (t , err ) {
144165 t .Fatal (err )
145166 }
@@ -152,23 +173,27 @@ func Test_NullableArray(t *testing.T) {
152173 if rows , err := connect .Query (query ); assert .NoError (t , err ) {
153174 for rows .Next () {
154175 var (
155- ArrDecimal = make ([]* int64 , 0 )
156- ArrInt8 = make ([]* int8 , 0 )
157- ArrInt16 = make ([]* int16 , 0 )
158- ArrInt32 = make ([]* int32 , 0 )
159- ArrInt64 = make ([]* int64 , 0 )
160- ArrUInt8 = make ([]* uint8 , 0 )
161- ArrUInt16 = make ([]* uint16 , 0 )
162- ArrUInt32 = make ([]* uint32 , 0 )
163- ArrUInt64 = make ([]* uint64 , 0 )
164- ArrFloat32 = make ([]* float32 , 0 )
165- ArrFloat64 = make ([]* float64 , 0 )
166- ArrIpv6 = make ([]* net.IP , 0 )
167- ArrIpv4 = make ([]* net.IP , 0 )
168- ArrString = make ([]* string , 0 )
169- ArrArrString = make ([][]* string , 0 )
170- ArrDate = make ([]* time.Time , 0 )
171- ArrDateTime = make ([]* time.Time , 0 )
176+ ArrDecimal = make ([]* int64 , 0 )
177+ ArrInt8 = make ([]* int8 , 0 )
178+ ArrInt16 = make ([]* int16 , 0 )
179+ ArrInt32 = make ([]* int32 , 0 )
180+ ArrInt64 = make ([]* int64 , 0 )
181+ ArrUInt8 = make ([]* uint8 , 0 )
182+ ArrUInt16 = make ([]* uint16 , 0 )
183+ ArrUInt32 = make ([]* uint32 , 0 )
184+ ArrUInt64 = make ([]* uint64 , 0 )
185+ ArrFloat32 = make ([]* float32 , 0 )
186+ ArrFloat64 = make ([]* float64 , 0 )
187+ ArrIpv6 = make ([]* net.IP , 0 )
188+ ArrIpv4 = make ([]* net.IP , 0 )
189+ ArrString = make ([]* string , 0 )
190+ ArrArrString = make ([][]* string , 0 )
191+ ArrDate = make ([]* time.Time , 0 )
192+ ArrDateTime = make ([]* time.Time , 0 )
193+ ArrEnum8Str = make ([]* string , 0 )
194+ ArrEnum8Int8 = make ([]* string , 0 )
195+ ArrEnum16Str = make ([]* string , 0 )
196+ ArrEnum16Int16 = make ([]* string , 0 )
172197 )
173198 if err := rows .Scan (
174199 & ArrDecimal ,
@@ -188,6 +213,10 @@ func Test_NullableArray(t *testing.T) {
188213 & ArrArrString ,
189214 & ArrDate ,
190215 & ArrDateTime ,
216+ & ArrEnum8Str ,
217+ & ArrEnum8Int8 ,
218+ & ArrEnum16Str ,
219+ & ArrEnum16Int16 ,
191220 ); assert .NoError (t , err ) {
192221 assert .Equal (t , ArrDecimal , []* int64 {& int64Dec , nil , & int64Dec })
193222 assert .Equal (t , ArrInt8 , []* int8 {& int8V , nil , & int8V })
@@ -213,6 +242,11 @@ func Test_NullableArray(t *testing.T) {
213242 assert .True (t , len (ArrDateTime ) == 3 )
214243 assert .Equal (t , ArrDate [1 ], timeNil )
215244 assert .Equal (t , ArrDateTime [1 ], timeNil )
245+
246+ assert .Equal (t , ArrEnum8Int8 , []* string {& enum8VA , nil , & enum8VB })
247+ assert .Equal (t , ArrEnum16Int16 , []* string {& enum16VA , nil , & enum16VB })
248+ assert .Equal (t , ArrEnum8Str , []* string {& enum8VA , nil , & enum8VB })
249+ assert .Equal (t , ArrEnum16Str , []* string {& enum16VA , nil , & enum16VB })
216250 }
217251 }
218252 }
0 commit comments