Skip to content

Commit 15d7e57

Browse files
muraliQlogicthiyaguk09
authored andcommitted
Fix for Issue#343 (googleapis#353)
* Fix for Issue#343 * Reinstate changes and applied modified check to allow empty qualifier * Update read-rows-acceptance-test.json * Update read-rows-acceptance-test.json * Update chunktransformer.js * Update chunktransformer.js
1 parent 8f91f75 commit 15d7e57

3 files changed

Lines changed: 53 additions & 3 deletions

File tree

handwritten/bigtable/src/chunktransformer.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ class ChunkTransformer extends Transform {
211211
errorMessage = 'A commit happened but the same key followed';
212212
} else if (!chunk.familyName) {
213213
errorMessage = 'A family must be set';
214-
} else if (!chunk.qualifier) {
214+
} else if (chunk.qualifier === null || chunk.qualifier === undefined) {
215215
errorMessage = 'A column qualifier must be set';
216216
}
217217
if (errorMessage) {
@@ -247,7 +247,10 @@ class ChunkTransformer extends Transform {
247247
return;
248248
}
249249
}
250-
if (chunk.familyName && !chunk.qualifier) {
250+
if (
251+
chunk.familyName &&
252+
(chunk.qualifier === null || chunk.qualifier === undefined)
253+
) {
251254
this.destroy(
252255
new TransformError({
253256
message: 'A qualifier must be specified',

handwritten/bigtable/system-test/read-rows-acceptance-test.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -872,4 +872,4 @@
872872
"ts": 0
873873
}]
874874
}]
875-
}
875+
}

handwritten/bigtable/test/chunktransformer.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,53 @@ describe('Bigtable/ChunkTransformer', function() {
468468
'state mismatch'
469469
);
470470
});
471+
it('chunk with familyName and empty qualifier should produce row', function() {
472+
chunkTransformer.qualifiers = [];
473+
chunkTransformer.family = {
474+
qualifier: chunkTransformer.qualifiers,
475+
};
476+
chunkTransformer.row = {
477+
key: 'key',
478+
data: {
479+
family: chunkTransformer.family,
480+
},
481+
};
482+
const chunk = {
483+
commitRow: true,
484+
familyName: {value: 'family2'},
485+
qualifier: '',
486+
value: 'value',
487+
timestampMicros: 0,
488+
labels: [],
489+
valueSize: 0,
490+
};
491+
chunkTransformer.processRowInProgress(chunk);
492+
assert(commitSpy.called, 'did not call commit');
493+
assert(resetSpy.called, 'did not call reset');
494+
assert.strictEqual(rows.length, 1, 'wrong call to push');
495+
const expectedRow = {
496+
key: 'key',
497+
data: {
498+
family: {
499+
qualifier: [
500+
{
501+
value: 'value',
502+
timestamp: 0,
503+
labels: [],
504+
},
505+
],
506+
},
507+
family2: {},
508+
},
509+
};
510+
const row = rows[0];
511+
assert.deepStrictEqual(row, expectedRow, 'row mismatch');
512+
assert.strictEqual(
513+
chunkTransformer.state,
514+
RowStateEnum.NEW_ROW,
515+
'state mismatch'
516+
);
517+
});
471518
it('chunk with new family and commitRow should produce row', function() {
472519
chunkTransformer.qualifiers = [];
473520
chunkTransformer.family = {

0 commit comments

Comments
 (0)