diff --git a/contrib/pgcrypto/expected/pgp-compression_1.out b/contrib/pgcrypto/expected/pgp-compression_1.out index 655830ae14..d2e47c4644 100644 --- a/contrib/pgcrypto/expected/pgp-compression_1.out +++ b/contrib/pgcrypto/expected/pgp-compression_1.out @@ -40,3 +40,31 @@ select pgp_sym_decrypt( ERROR: generating random data is not supported by this build DETAIL: This functionality requires a source of strong random numbers. HINT: You need to rebuild PostgreSQL using --enable-strong-random. +-- check corner case involving an input string of 16kB, as per bug #16476. +SELECT setseed(0); + setseed +--------- + +(1 row) + +WITH random_string AS +( + -- This generates a random string of 16366 bytes. This is chosen + -- as random so that it does not get compressed, and the decompression + -- would work on a string with the same length as the origin, making the + -- test behavior more predictible. lpad() ensures that the generated + -- hexadecimal value is completed by extra zero characters if random() + -- has generated a value strictly lower than 16. + SELECT string_agg(decode(lpad(to_hex((random()*256)::int), 2, '0'), 'hex'), '') as bytes + FROM generate_series(0, 16365) +) +SELECT bytes = + pgp_sym_decrypt_bytea( + pgp_sym_encrypt_bytea(bytes, 'key', + 'compress-algo=1,compress-level=1'), + 'key', 'expect-compress-algo=1') + AS is_same + FROM random_string; +ERROR: generating random data is not supported by this build +DETAIL: This functionality requires a source of strong random numbers. +HINT: You need to rebuild PostgreSQL using --enable-strong-random.