File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -283,10 +283,14 @@ def consume_next(self):
283283 row = self ._row = PartialRowData (chunk .row_key )
284284
285285 if cell is None :
286+ qualifier = None
287+ if chunk .HasField ('qualifier' ):
288+ qualifier = chunk .qualifier .value
289+
286290 cell = self ._cell = PartialCellData (
287291 chunk .row_key ,
288292 chunk .family_name .value ,
289- chunk . qualifier . value ,
293+ qualifier ,
290294 chunk .timestamp_micros ,
291295 chunk .labels ,
292296 chunk .value )
@@ -421,7 +425,8 @@ def _copy_from_previous(self, cell):
421425 cell .row_key = previous .row_key
422426 if not cell .family_name :
423427 cell .family_name = previous .family_name
424- if not cell .qualifier :
428+ # NOTE: ``cell.qualifier`` **can** be empty string.
429+ if cell .qualifier is None :
425430 cell .qualifier = previous .qualifier
426431
427432 def _save_current_row (self ):
Original file line number Diff line number Diff line change 11731173 "error" : false
11741174 }
11751175 ]
1176+ },
1177+ {
1178+ "name" : " empty second qualifier" ,
1179+ "chunks" : [
1180+ " row_key: \" RK\"\n family_name: \u003c \n value: \" A\"\n \u003e \n qualifier: \u003c \n value: \" C\"\n \u003e \n timestamp_micros: 99\n value: \" value-VAL_1\"\n commit_row: false\n " ,
1181+ " qualifier: \u003c \n value: \"\"\n \u003e \n timestamp_micros: 98\n value: \" value-VAL_2\"\n commit_row: true\n "
1182+ ],
1183+ "results" : [
1184+ {
1185+ "rk" : " RK" ,
1186+ "fm" : " A" ,
1187+ "qual" : " C" ,
1188+ "ts" : 99 ,
1189+ "value" : " value-VAL_1" ,
1190+ "label" : " " ,
1191+ "error" : false
1192+ },
1193+ {
1194+ "rk" : " RK" ,
1195+ "fm" : " A" ,
1196+ "qual" : " " ,
1197+ "ts" : 98 ,
1198+ "value" : " value-VAL_2" ,
1199+ "label" : " " ,
1200+ "error" : false
1201+ }
1202+ ]
11761203 }
11771204 ]
11781205}
Original file line number Diff line number Diff line change @@ -334,7 +334,7 @@ def test__copy_from_previous_unset(self):
334334 prd ._copy_from_previous (cell )
335335 self .assertEqual (cell .row_key , '' )
336336 self .assertEqual (cell .family_name , u'' )
337- self .assertEqual (cell .qualifier , b'' )
337+ self .assertIsNone (cell .qualifier )
338338 self .assertEqual (cell .timestamp_micros , 0 )
339339 self .assertEqual (cell .labels , [])
340340
@@ -635,6 +635,8 @@ def test_reset_in_between_chunks(self):
635635 def test_empty_cell_chunk (self ):
636636 self ._match_results ('empty cell chunk' )
637637
638+ def test_empty_second_qualifier (self ):
639+ self ._match_results ('empty second qualifier' )
638640
639641def _flatten_cells (prd ):
640642 # Match results format from JSON testcases.
@@ -678,7 +680,7 @@ class _PartialCellData(object):
678680
679681 row_key = ''
680682 family_name = u''
681- qualifier = b''
683+ qualifier = None
682684 timestamp_micros = 0
683685
684686 def __init__ (self , ** kw ):
You can’t perform that action at this time.
0 commit comments