Skip to content

Commit dd5de67

Browse files
committed
More tests for nested repeated fields.
1 parent 2dd94c7 commit dd5de67

File tree

4 files changed

+168
-2
lines changed

4 files changed

+168
-2
lines changed

expected/postgres_protobuf.out

Lines changed: 103 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ SELECT protobuf_extension_version() AS result;
77
result
88
201
99
(1 row)
10-
INSERT INTO protobuf_file_descriptor_sets (name, file_descriptor_set) VALUES ('default', '\x0afb0c0a196d61696e5f64657363726970746f725f7365742e70726f746f1209706770622e7465737422f7070a0e4578616d706c654d657373616765122c0a077363616c61727318012001280b32122e706770622e746573742e5363616c61727352077363616c61727312250a0e72657065617465645f696e743332180220032805520d7265706561746564496e74333212270a0f72657065617465645f737472696e67180320032809520e7265706561746564537472696e67123c0a05696e6e657218042001280b32262e706770622e746573742e4578616d706c654d6573736167652e496e6e65724d6573736167655205696e6e6572124d0a0e72657065617465645f696e6e657218052003280b32262e706770622e746573742e4578616d706c654d6573736167652e496e6e65724d657373616765520d7265706561746564496e6e6572122a0a07616e5f656e756d18062001280e32112e706770622e746573742e416e456e756d5206616e456e756d124a0a0b6d61705f7374723273747218072003280b32292e706770622e746573742e4578616d706c654d6573736167652e4d617053747232737472456e747279520a6d617053747232737472124a0a0b6d61705f696e743273747218082003280b32292e706770622e746573742e4578616d706c654d6573736167652e4d6170496e7432737472456e747279520a6d6170496e7432737472124a0a0b6d61705f696e7432696e7418092003280b32292e706770622e746573742e4578616d706c654d6573736167652e4d6170496e7432696e74456e747279520a6d6170496e7432696e7412500a0d6d61705f73747232696e6e6572180a2003280b322b2e706770622e746573742e4578616d706c654d6573736167652e4d617053747232696e6e6572456e747279520c6d617053747232696e6e65721a3d0a0f4d617053747232737472456e74727912100a036b657918012001280952036b657912140a0576616c7565180220012809520576616c75653a0238011a3d0a0f4d6170496e7432737472456e74727912100a036b657918012001280552036b657912140a0576616c7565180220012809520576616c75653a0238011a3d0a0f4d6170496e7432696e74456e74727912100a036b657918012001280552036b657912140a0576616c7565180220012805520576616c75653a0238011a670a114d617053747232696e6e6572456e74727912100a036b657918012001280952036b6579123c0a0576616c756518022001280b32262e706770622e746573742e4578616d706c654d6573736167652e496e6e65724d657373616765520576616c75653a0238011a520a0c496e6e65724d657373616765121b0a09696e6e65725f7374721801200128095208696e6e657253747212250a0e696e6e65725f7265706561746564180220032809520d696e6e657252657065617465642296040a075363616c61727312210a0c646f75626c655f6669656c64180120012801520b646f75626c654669656c64121f0a0b666c6f61745f6669656c64180220012802520a666c6f61744669656c64121f0a0b696e7433325f6669656c64180320012805520a696e7433324669656c64121f0a0b696e7436345f6669656c64180420012803520a696e7436344669656c6412210a0c75696e7433325f6669656c6418052001280d520b75696e7433324669656c6412210a0c75696e7436345f6669656c64180620012804520b75696e7436344669656c6412210a0c73696e7433325f6669656c64180720012811520b73696e7433324669656c6412210a0c73696e7436345f6669656c64180820012812520b73696e7436344669656c6412230a0d666978656433325f6669656c64180920012807520c666978656433324669656c6412230a0d666978656436345f6669656c64180a20012806520c666978656436344669656c6412250a0e73666978656433325f6669656c64180b2001280f520d73666978656433324669656c6412250a0e73666978656436345f6669656c64180c20012810520d73666978656436344669656c64121d0a0a626f6f6c5f6669656c64180d200128085209626f6f6c4669656c6412210a0c737472696e675f6669656c64180e20012809520b737472696e674669656c64121f0a0b62797465735f6669656c64180f2001280c520a62797465734669656c642a380a06416e456e756d120e0a0a456e756d56616c7565301000120e0a0a456e756d56616c7565311001120e0a0a456e756d56616c7565321002620670726f746f33'::BYTEA);
10+
INSERT INTO protobuf_file_descriptor_sets (name, file_descriptor_set) VALUES ('default', '\x0acb0d0a196d61696e5f64657363726970746f725f7365742e70726f746f1209706770622e7465737422c7080a0e4578616d706c654d657373616765122c0a077363616c61727318012001280b32122e706770622e746573742e5363616c61727352077363616c61727312250a0e72657065617465645f696e743332180220032805520d7265706561746564496e74333212270a0f72657065617465645f737472696e67180320032809520e7265706561746564537472696e67123c0a05696e6e657218042001280b32262e706770622e746573742e4578616d706c654d6573736167652e496e6e65724d6573736167655205696e6e6572124d0a0e72657065617465645f696e6e657218052003280b32262e706770622e746573742e4578616d706c654d6573736167652e496e6e65724d657373616765520d7265706561746564496e6e6572122a0a07616e5f656e756d18062001280e32112e706770622e746573742e416e456e756d5206616e456e756d124a0a0b6d61705f7374723273747218072003280b32292e706770622e746573742e4578616d706c654d6573736167652e4d617053747232737472456e747279520a6d617053747232737472124a0a0b6d61705f696e743273747218082003280b32292e706770622e746573742e4578616d706c654d6573736167652e4d6170496e7432737472456e747279520a6d6170496e7432737472124a0a0b6d61705f696e7432696e7418092003280b32292e706770622e746573742e4578616d706c654d6573736167652e4d6170496e7432696e74456e747279520a6d6170496e7432696e7412500a0d6d61705f73747232696e6e6572180a2003280b322b2e706770622e746573742e4578616d706c654d6573736167652e4d617053747232696e6e6572456e747279520c6d617053747232696e6e65721a3d0a0f4d617053747232737472456e74727912100a036b657918012001280952036b657912140a0576616c7565180220012809520576616c75653a0238011a3d0a0f4d6170496e7432737472456e74727912100a036b657918012001280552036b657912140a0576616c7565180220012809520576616c75653a0238011a3d0a0f4d6170496e7432696e74456e74727912100a036b657918012001280552036b657912140a0576616c7565180220012805520576616c75653a0238011a670a114d617053747232696e6e6572456e74727912100a036b657918012001280952036b6579123c0a0576616c756518022001280b32262e706770622e746573742e4578616d706c654d6573736167652e496e6e65724d657373616765520576616c75653a0238011aa1010a0c496e6e65724d657373616765121b0a09696e6e65725f7374721801200128095208696e6e657253747212250a0e696e6e65725f7265706561746564180220032809520d696e6e65725265706561746564124d0a0e72657065617465645f696e6e657218032003280b32262e706770622e746573742e4578616d706c654d6573736167652e496e6e65724d657373616765520d7265706561746564496e6e65722296040a075363616c61727312210a0c646f75626c655f6669656c64180120012801520b646f75626c654669656c64121f0a0b666c6f61745f6669656c64180220012802520a666c6f61744669656c64121f0a0b696e7433325f6669656c64180320012805520a696e7433324669656c64121f0a0b696e7436345f6669656c64180420012803520a696e7436344669656c6412210a0c75696e7433325f6669656c6418052001280d520b75696e7433324669656c6412210a0c75696e7436345f6669656c64180620012804520b75696e7436344669656c6412210a0c73696e7433325f6669656c64180720012811520b73696e7433324669656c6412210a0c73696e7436345f6669656c64180820012812520b73696e7436344669656c6412230a0d666978656433325f6669656c64180920012807520c666978656433324669656c6412230a0d666978656436345f6669656c64180a20012806520c666978656436344669656c6412250a0e73666978656433325f6669656c64180b2001280f520d73666978656433324669656c6412250a0e73666978656436345f6669656c64180c20012810520d73666978656436344669656c64121d0a0a626f6f6c5f6669656c64180d200128085209626f6f6c4669656c6412210a0c737472696e675f6669656c64180e20012809520b737472696e674669656c64121f0a0b62797465735f6669656c64180f2001280c520a62797465734669656c642a380a06416e456e756d120e0a0a456e756d56616c7565301000120e0a0a456e756d56616c7565311001120e0a0a456e756d56616c7565321002620670726f746f33'::BYTEA);
1111
INSERT INTO protobuf_file_descriptor_sets (name, file_descriptor_set) VALUES ('other', '\x0a6f0a1a6f746865725f64657363726970746f725f7365742e70726f746f120f706770622e746573742e6f7468657222380a154d657373616765496e4f7468657244657363536574121f0a0b696e7433325f6669656c64180120012805520a696e7433324669656c64620670726f746f33'::BYTEA);
1212
--
1313
-- Scalar values
@@ -259,6 +259,108 @@ def
259259
aaa
260260
bbb
261261
(4 rows)
262+
SELECT protobuf_query_multi(
263+
'pgpb.test.ExampleMessage:repeated_inner[*].inner_repeated[0]',
264+
'\x2a0a120361626312036465662a0a12036161611203626262'::BYTEA
265+
) AS result;
266+
result
267+
abc
268+
aaa
269+
(2 rows)
270+
SELECT protobuf_query_multi(
271+
'pgpb.test.ExampleMessage:repeated_inner[*].inner_repeated[1]',
272+
'\x2a0a120361626312036465662a0a12036161611203626262'::BYTEA
273+
) AS result;
274+
result
275+
def
276+
bbb
277+
(2 rows)
278+
SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[*].inner_repeated[0]', '\x2a0a120361626312036465662a0a12036161611203626262'::BYTEA) AS result;
279+
result
280+
abc
281+
(1 row)
282+
SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[*].inner_repeated[1]', '\x2a0a120361626312036465662a0a12036161611203626262'::BYTEA) AS result;
283+
result
284+
def
285+
(1 row)
286+
SELECT COALESCE(protobuf_query('pgpb.test.ExampleMessage:repeated_inner[*].inner_repeated[2]', '\x2a0a120361626312036465662a0a12036161611203626262'::BYTEA), 'none') AS result;
287+
result
288+
none
289+
(1 row)
290+
SELECT protobuf_query_multi(
291+
'pgpb.test.ExampleMessage:repeated_inner[*].repeated_inner[*]',
292+
'\x2a1c1a0a120361626312036465661a0512036161611a001a051203626262'::BYTEA
293+
) AS result;
294+
result
295+
{"innerRepeated":["abc","def"]}
296+
{"innerRepeated":["aaa"]}
297+
{}
298+
{"innerRepeated":["bbb"]}
299+
(4 rows)
300+
SELECT protobuf_query_multi(
301+
'pgpb.test.ExampleMessage:repeated_inner[*].repeated_inner[*].inner_repeated[*]',
302+
'\x2a1c1a0a120361626312036465661a0512036161611a001a051203626262'::BYTEA
303+
) AS result;
304+
result
305+
abc
306+
def
307+
aaa
308+
bbb
309+
(4 rows)
310+
SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[*].repeated_inner[*].inner_repeated[0]', '\x2a1c1a0a120361626312036465661a0512036161611a001a051203626262'::BYTEA) AS result;
311+
result
312+
abc
313+
(1 row)
314+
SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[*].repeated_inner[*].inner_repeated[1]', '\x2a1c1a0a120361626312036465661a0512036161611a001a051203626262'::BYTEA) AS result;
315+
result
316+
def
317+
(1 row)
318+
SELECT COALESCE(protobuf_query('pgpb.test.ExampleMessage:repeated_inner[*].repeated_inner[*].inner_repeated[2]', '\x2a1c1a0a120361626312036465661a0512036161611a001a051203626262'::BYTEA), 'none') AS result;
319+
result
320+
none
321+
(1 row)
322+
SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[0].repeated_inner[0].inner_repeated[0]', '\x2a1c1a0a120361626312036465661a0512036161611a001a051203626262'::BYTEA) AS result;
323+
result
324+
abc
325+
(1 row)
326+
SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[0].repeated_inner[0].inner_repeated[1]', '\x2a1c1a0a120361626312036465661a0512036161611a001a051203626262'::BYTEA) AS result;
327+
result
328+
def
329+
(1 row)
330+
SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[0].repeated_inner[1].inner_repeated[0]', '\x2a1c1a0a120361626312036465661a0512036161611a001a051203626262'::BYTEA) AS result;
331+
result
332+
aaa
333+
(1 row)
334+
SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[0].repeated_inner[3].inner_repeated[0]', '\x2a1c1a0a120361626312036465661a0512036161611a001a051203626262'::BYTEA) AS result;
335+
result
336+
bbb
337+
(1 row)
338+
SELECT protobuf_query_multi(
339+
'pgpb.test.ExampleMessage:repeated_inner[*].repeated_inner[*].inner_str',
340+
'\x2a0e1a050a036162631a050a036465662a0e1a050a036161611a050a03626262'::BYTEA
341+
) AS result;
342+
result
343+
abc
344+
def
345+
aaa
346+
bbb
347+
(4 rows)
348+
SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[0].repeated_inner[0].inner_str', '\x2a0e1a050a036162631a050a036465662a0e1a050a036161611a050a03626262'::BYTEA) AS result;
349+
result
350+
abc
351+
(1 row)
352+
SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[0].repeated_inner[1].inner_str', '\x2a0e1a050a036162631a050a036465662a0e1a050a036161611a050a03626262'::BYTEA) AS result;
353+
result
354+
def
355+
(1 row)
356+
SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[1].repeated_inner[0].inner_str', '\x2a0e1a050a036162631a050a036465662a0e1a050a036161611a050a03626262'::BYTEA) AS result;
357+
result
358+
aaa
359+
(1 row)
360+
SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[1].repeated_inner[1].inner_str', '\x2a0e1a050a036162631a050a036465662a0e1a050a036161611a050a03626262'::BYTEA) AS result;
361+
result
362+
bbb
363+
(1 row)
262364
--
263365
-- Indexing into maps
264366
--

generate_test_cases.rb

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,35 @@ def pg_quote(s)
250250

251251
test_query('pgpb.test.ExampleMessage:repeated_inner[*]', ['{"innerRepeated":["abc","def"]}', '{"innerRepeated":["aaa","bbb"]}'])
252252
test_query('pgpb.test.ExampleMessage:repeated_inner[*].inner_repeated[*]', ['abc', 'def', 'aaa', 'bbb'])
253+
test_query('pgpb.test.ExampleMessage:repeated_inner[*].inner_repeated[0]', ['abc', 'aaa'])
254+
test_query('pgpb.test.ExampleMessage:repeated_inner[*].inner_repeated[1]', ['def', 'bbb'])
255+
256+
test_sql("SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[*].inner_repeated[0]', #{pg_proto}) AS result;", ['abc'])
257+
test_sql("SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[*].inner_repeated[1]', #{pg_proto}) AS result;", ['def'])
258+
test_sql("SELECT COALESCE(protobuf_query('pgpb.test.ExampleMessage:repeated_inner[*].inner_repeated[2]', #{pg_proto}), 'none') AS result;", ['none'])
259+
end
260+
261+
with_proto('repeated_inner: { repeated_inner: { inner_repeated: "abc", inner_repeated: "def" }, repeated_inner: { inner_repeated: "aaa" }, repeated_inner: {}, repeated_inner: { inner_repeated: "bbb" } }') do
262+
test_query('pgpb.test.ExampleMessage:repeated_inner[*].repeated_inner[*]', ['{"innerRepeated":["abc","def"]}', '{"innerRepeated":["aaa"]}', '{}', '{"innerRepeated":["bbb"]}'])
263+
test_query('pgpb.test.ExampleMessage:repeated_inner[*].repeated_inner[*].inner_repeated[*]', ['abc', 'def', 'aaa', 'bbb'])
264+
265+
test_sql("SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[*].repeated_inner[*].inner_repeated[0]', #{pg_proto}) AS result;", ['abc'])
266+
test_sql("SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[*].repeated_inner[*].inner_repeated[1]', #{pg_proto}) AS result;", ['def'])
267+
test_sql("SELECT COALESCE(protobuf_query('pgpb.test.ExampleMessage:repeated_inner[*].repeated_inner[*].inner_repeated[2]', #{pg_proto}), 'none') AS result;", ['none'])
268+
269+
test_sql("SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[0].repeated_inner[0].inner_repeated[0]', #{pg_proto}) AS result;", ['abc'])
270+
test_sql("SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[0].repeated_inner[0].inner_repeated[1]', #{pg_proto}) AS result;", ['def'])
271+
test_sql("SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[0].repeated_inner[1].inner_repeated[0]', #{pg_proto}) AS result;", ['aaa'])
272+
test_sql("SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[0].repeated_inner[3].inner_repeated[0]', #{pg_proto}) AS result;", ['bbb'])
273+
end
274+
275+
with_proto('repeated_inner: { repeated_inner: { inner_str: "abc" }, repeated_inner: { inner_str: "def" } }, repeated_inner: { repeated_inner: { inner_str: "aaa" }, repeated_inner: { inner_str: "bbb" } }') do
276+
test_query('pgpb.test.ExampleMessage:repeated_inner[*].repeated_inner[*].inner_str', ['abc', 'def', 'aaa', 'bbb'])
277+
278+
test_sql("SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[0].repeated_inner[0].inner_str', #{pg_proto}) AS result;", ['abc'])
279+
test_sql("SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[0].repeated_inner[1].inner_str', #{pg_proto}) AS result;", ['def'])
280+
test_sql("SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[1].repeated_inner[0].inner_str', #{pg_proto}) AS result;", ['aaa'])
281+
test_sql("SELECT protobuf_query('pgpb.test.ExampleMessage:repeated_inner[1].repeated_inner[1].inner_str', #{pg_proto}) AS result;", ['bbb'])
253282
end
254283
end
255284

0 commit comments

Comments
 (0)