Skip to content

Commit 3ae6621

Browse files
remove auto-null behavior
1 parent d3f1d5d commit 3ae6621

3 files changed

Lines changed: 72 additions & 20 deletions

File tree

packages/spanner/src/transaction-request.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -687,9 +687,9 @@ TransactionRequest.prototype.mutate_ = function(method, table, keyVals, cb) {
687687
var columns = uniq(flatten(keyVals.map(Object.keys))).sort();
688688

689689
var values = keyVals.map(function(keyVal) {
690-
return columns.map(function(key) {
691-
var value = keyVal[key];
692-
return codec.encode(is.undefined(value) ? null : value);
690+
return columns.map(function(column) {
691+
var value = keyVal[column];
692+
return codec.encode(value);
693693
});
694694
});
695695

packages/spanner/system-test/spanner.js

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,18 +109,43 @@ var spanner = new Spanner(env);
109109
});
110110

111111
describe('uneven rows', function() {
112-
it('should allow inserting uneven rows', function(done) {
113-
table.insert([
112+
it('should allow differently-ordered rows', function(done) {
113+
var data = [
114114
{
115115
Key: generateName('id'),
116-
BoolValue: true
116+
BoolValue: true,
117+
IntValue: spanner.int(10)
117118
},
118119
{
119120
Key: generateName('id'),
120-
BoolValue: true,
121-
IntValue: 10
121+
IntValue: spanner.int(10),
122+
BoolValue: true
122123
}
123-
], done);
124+
];
125+
126+
table.insert(data, function(err) {
127+
assert.ifError(err);
128+
129+
database.run({
130+
sql: `SELECT * FROM \`${table.name}\` WHERE Key = @a OR KEY = @b`,
131+
params: {
132+
a: data[0].Key,
133+
b: data[1].Key
134+
}
135+
}, function(err, rows) {
136+
assert.ifError(err);
137+
138+
var row1 = rows[0].toJSON();
139+
assert.deepStrictEqual(row1.IntValue, data[0].IntValue);
140+
assert.deepStrictEqual(row1.BoolValue, data[0].BoolValue);
141+
142+
var row2 = rows[1].toJSON();
143+
assert.deepStrictEqual(row2.IntValue, data[1].IntValue);
144+
assert.deepStrictEqual(row2.BoolValue, data[1].BoolValue);
145+
146+
done();
147+
});
148+
});
124149
});
125150
});
126151

packages/spanner/test/transaction-request.js

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -760,22 +760,36 @@ describe('TransactionRequest', function() {
760760
var METHOD = 'methodName';
761761
var TABLE = 'table-name';
762762
var KEYVALS = [
763-
{ key: 'value', nullable: true },
764-
{ key: 'value' } // missing nullable value
763+
{
764+
key: '1-key-value',
765+
anotherNullable: '1-anotherNullable-value',
766+
nonNullable: '1-nonNullable-value',
767+
nullable: '1-nullable-value'
768+
},
769+
{ /* keys defined in different order */
770+
key: '2-key-value',
771+
nullable: null,
772+
nonNullable: '2-nonNullable-value',
773+
anotherNullable: null
774+
}
765775
];
766776

767777
var EXPECTED_MUTATION = {};
768778
EXPECTED_MUTATION[METHOD] = {
769779
table: TABLE,
770-
columns: ['key', 'nullable'],
780+
columns: ['anotherNullable', 'key', 'nonNullable', 'nullable'],
771781
values: [
772782
[
783+
KEYVALS[0].anotherNullable,
773784
KEYVALS[0].key,
785+
KEYVALS[0].nonNullable,
774786
KEYVALS[0].nullable
775787
],
776788
[
789+
KEYVALS[1].anotherNullable,
777790
KEYVALS[1].key,
778-
null
791+
KEYVALS[1].nonNullable,
792+
KEYVALS[1].nullable
779793
]
780794
]
781795
};
@@ -797,22 +811,35 @@ describe('TransactionRequest', function() {
797811

798812
switch (numEncodeRequests) {
799813
case 1: {
800-
assert.strictEqual(value, KEYVALS[0].key);
814+
assert.strictEqual(value, KEYVALS[0].anotherNullable);
801815
break;
802816
}
803-
804817
case 2: {
805-
assert.strictEqual(value, KEYVALS[0].nullable);
818+
assert.strictEqual(value, KEYVALS[0].key);
806819
break;
807820
}
808-
809821
case 3: {
810-
assert.strictEqual(value, KEYVALS[1].key);
822+
assert.strictEqual(value, KEYVALS[0].nonNullable);
811823
break;
812824
}
813-
814825
case 4: {
815-
assert.strictEqual(value, null);
826+
assert.strictEqual(value, KEYVALS[0].nullable);
827+
break;
828+
}
829+
case 5: {
830+
assert.strictEqual(value, KEYVALS[1].anotherNullable);
831+
break;
832+
}
833+
case 6: {
834+
assert.strictEqual(value, KEYVALS[1].key);
835+
break;
836+
}
837+
case 7: {
838+
assert.strictEqual(value, KEYVALS[1].nonNullable);
839+
break;
840+
}
841+
case 8: {
842+
assert.strictEqual(value, KEYVALS[1].nullable);
816843
break;
817844
}
818845
}

0 commit comments

Comments
 (0)