@@ -41,33 +41,58 @@ class ColumnarBatchSuite extends SparkFunSuite {
4141 val column = ColumnVector .allocate(1024 , IntegerType , memMode)
4242 var idx = 0
4343 assert(column.anyNullsSet() == false )
44+ assert(column.numNulls() == 0 )
45+
46+ column.appendNotNull()
47+ reference += false
48+ assert(column.anyNullsSet() == false )
49+ assert(column.numNulls() == 0 )
50+
51+ column.appendNotNulls(3 )
52+ (1 to 3 ).foreach(_ => reference += false )
53+ assert(column.anyNullsSet() == false )
54+ assert(column.numNulls() == 0 )
55+
56+ column.appendNull()
57+ reference += true
58+ assert(column.anyNullsSet())
59+ assert(column.numNulls() == 1 )
60+
61+ column.appendNulls(3 )
62+ (1 to 3 ).foreach(_ => reference += true )
63+ assert(column.anyNullsSet())
64+ assert(column.numNulls() == 4 )
65+
66+ idx = column.elementsAppended
4467
4568 column.putNotNull(idx)
4669 reference += false
4770 idx += 1
48- assert(column.anyNullsSet() == false )
71+ assert(column.anyNullsSet())
72+ assert(column.numNulls() == 4 )
4973
5074 column.putNull(idx)
5175 reference += true
5276 idx += 1
53- assert(column.anyNullsSet() == true )
54- assert(column.numNulls() == 1 )
77+ assert(column.anyNullsSet())
78+ assert(column.numNulls() == 5 )
5579
5680 column.putNulls(idx, 3 )
5781 reference += true
5882 reference += true
5983 reference += true
6084 idx += 3
61- assert(column.anyNullsSet() == true )
85+ assert(column.anyNullsSet())
86+ assert(column.numNulls() == 8 )
6287
6388 column.putNotNulls(idx, 4 )
6489 reference += false
6590 reference += false
6691 reference += false
6792 reference += false
6893 idx += 4
69- assert(column.anyNullsSet() == true )
70- assert(column.numNulls() == 4 )
94+ assert(column.anyNullsSet())
95+ assert(column.numNulls() == 8 )
7196
7297 reference.zipWithIndex.foreach { v =>
7398 assert(v._1 == column.isNullAt(v._2))
@@ -85,9 +110,26 @@ class ColumnarBatchSuite extends SparkFunSuite {
85110 val reference = mutable.ArrayBuffer .empty[Byte ]
86111
87112 val column = ColumnVector .allocate(1024 , ByteType , memMode)
88- var idx = 0
89113
90- val values = (1 :: 2 :: 3 :: 4 :: 5 :: Nil ).map(_.toByte).toArray
114+ var values = (10 :: 20 :: 30 :: 40 :: 50 :: Nil ).map(_.toByte).toArray
115+ column.appendBytes(2 , values, 0 )
116+ reference += 10 .toByte
117+ reference += 20 .toByte
118+
119+ column.appendBytes(3 , values, 2 )
120+ reference += 30 .toByte
121+ reference += 40 .toByte
122+ reference += 50 .toByte
123+
124+ column.appendBytes(6 , 60 .toByte)
125+ (1 to 6 ).foreach(_ => reference += 60 .toByte)
126+
127+ column.appendByte(70 .toByte)
128+ reference += 70 .toByte
129+
130+ var idx = column.elementsAppended
131+
132+ values = (1 :: 2 :: 3 :: 4 :: 5 :: Nil ).map(_.toByte).toArray
91133 column.putBytes(idx, 2 , values, 0 )
92134 reference += 1
93135 reference += 2
@@ -126,9 +168,26 @@ class ColumnarBatchSuite extends SparkFunSuite {
126168 val reference = mutable.ArrayBuffer .empty[Short ]
127169
128170 val column = ColumnVector .allocate(1024 , ShortType , memMode)
129- var idx = 0
130171
131- val values = (1 :: 2 :: 3 :: 4 :: 5 :: Nil ).map(_.toShort).toArray
172+ var values = (10 :: 20 :: 30 :: 40 :: 50 :: Nil ).map(_.toShort).toArray
173+ column.appendShorts(2 , values, 0 )
174+ reference += 10 .toShort
175+ reference += 20 .toShort
176+
177+ column.appendShorts(3 , values, 2 )
178+ reference += 30 .toShort
179+ reference += 40 .toShort
180+ reference += 50 .toShort
181+
182+ column.appendShorts(6 , 60 .toShort)
183+ (1 to 6 ).foreach(_ => reference += 60 .toShort)
184+
185+ column.appendShort(70 .toShort)
186+ reference += 70 .toShort
187+
188+ var idx = column.elementsAppended
189+
190+ values = (1 :: 2 :: 3 :: 4 :: 5 :: Nil ).map(_.toShort).toArray
132191 column.putShorts(idx, 2 , values, 0 )
133192 reference += 1
134193 reference += 2
@@ -189,9 +248,26 @@ class ColumnarBatchSuite extends SparkFunSuite {
189248 val reference = mutable.ArrayBuffer .empty[Int ]
190249
191250 val column = ColumnVector .allocate(1024 , IntegerType , memMode)
192- var idx = 0
193251
194- val values = (1 :: 2 :: 3 :: 4 :: 5 :: Nil ).toArray
252+ var values = (10 :: 20 :: 30 :: 40 :: 50 :: Nil ).toArray
253+ column.appendInts(2 , values, 0 )
254+ reference += 10
255+ reference += 20
256+
257+ column.appendInts(3 , values, 2 )
258+ reference += 30
259+ reference += 40
260+ reference += 50
261+
262+ column.appendInts(6 , 60 )
263+ (1 to 6 ).foreach(_ => reference += 60 )
264+
265+ column.appendInt(70 )
266+ reference += 70
267+
268+ var idx = column.elementsAppended
269+
270+ values = (1 :: 2 :: 3 :: 4 :: 5 :: Nil ).toArray
195271 column.putInts(idx, 2 , values, 0 )
196272 reference += 1
197273 reference += 2
@@ -257,9 +333,26 @@ class ColumnarBatchSuite extends SparkFunSuite {
257333 val reference = mutable.ArrayBuffer .empty[Long ]
258334
259335 val column = ColumnVector .allocate(1024 , LongType , memMode)
260- var idx = 0
261336
262- val values = (1L :: 2L :: 3L :: 4L :: 5L :: Nil ).toArray
337+ var values = (10L :: 20L :: 30L :: 40L :: 50L :: Nil ).toArray
338+ column.appendLongs(2 , values, 0 )
339+ reference += 10L
340+ reference += 20L
341+
342+ column.appendLongs(3 , values, 2 )
343+ reference += 30L
344+ reference += 40L
345+ reference += 50L
346+
347+ column.appendLongs(6 , 60L )
348+ (1 to 6 ).foreach(_ => reference += 60L )
349+
350+ column.appendLong(70L )
351+ reference += 70L
352+
353+ var idx = column.elementsAppended
354+
355+ values = (1L :: 2L :: 3L :: 4L :: 5L :: Nil ).toArray
263356 column.putLongs(idx, 2 , values, 0 )
264357 reference += 1
265358 reference += 2
@@ -508,40 +601,47 @@ class ColumnarBatchSuite extends SparkFunSuite {
508601
509602 val column = ColumnVector .allocate(6 , BinaryType , memMode)
510603 assert(column.arrayData().elementsAppended == 0 )
511- var idx = 0
604+
605+ val str = " string"
606+ column.appendByteArray(str.getBytes(StandardCharsets .UTF_8 ),
607+ 0 , str.getBytes(StandardCharsets .UTF_8 ).length)
608+ reference += str
609+ assert(column.arrayData().elementsAppended == 6 )
610+
611+ var idx = column.elementsAppended
512612
513613 val values = (" Hello" :: " abc" :: Nil ).toArray
514614 column.putByteArray(idx, values(0 ).getBytes(StandardCharsets .UTF_8 ),
515615 0 , values(0 ).getBytes(StandardCharsets .UTF_8 ).length)
516616 reference += values(0 )
517617 idx += 1
518- assert(column.arrayData().elementsAppended == 5 )
618+ assert(column.arrayData().elementsAppended == 11 )
519619
520620 column.putByteArray(idx, values(1 ).getBytes(StandardCharsets .UTF_8 ),
521621 0 , values(1 ).getBytes(StandardCharsets .UTF_8 ).length)
522622 reference += values(1 )
523623 idx += 1
524- assert(column.arrayData().elementsAppended == 8 )
624+ assert(column.arrayData().elementsAppended == 14 )
525625
526626 // Just put llo
527627 val offset = column.putByteArray(idx, values(0 ).getBytes(StandardCharsets .UTF_8 ),
528628 2 , values(0 ).getBytes(StandardCharsets .UTF_8 ).length - 2 )
529629 reference += " llo"
530630 idx += 1
531- assert(column.arrayData().elementsAppended == 11 )
631+ assert(column.arrayData().elementsAppended == 17 )
532632
533633 // Put the same "ll" at offset. This should not allocate more memory in the column.
534634 column.putArray(idx, offset, 2 )
535635 reference += " ll"
536636 idx += 1
537- assert(column.arrayData().elementsAppended == 11 )
637+ assert(column.arrayData().elementsAppended == 17 )
538638
539639 // Put a long string
540640 val s = " abcdefghijklmnopqrstuvwxyz"
541641 column.putByteArray(idx, (s + s).getBytes(StandardCharsets .UTF_8 ))
542642 reference += (s + s)
543643 idx += 1
544- assert(column.arrayData().elementsAppended == 11 + (s + s).length)
644+ assert(column.arrayData().elementsAppended == 17 + (s + s).length)
545645
546646 reference.zipWithIndex.foreach { v =>
547647 assert(v._1.length == column.getArrayLength(v._2), " MemoryMode=" + memMode)
0 commit comments