Skip to content

Commit c097b27

Browse files
committed
Fix more user-visible elog() calls.
Michael Paquier discovered that this could be triggered via SQL; give a nicer message instead. Patch by Michael Paquier, reviewed by Masahiko Sawada. Discussion: http://postgr.es/m/CAB7nPqQtPg+LKKtzdKN26judHcvPZ0s1gNigzOT4j8CYuuuBYg@mail.gmail.com
1 parent 036166f commit c097b27

File tree

3 files changed

+21
-5
lines changed

3 files changed

+21
-5
lines changed

contrib/test_decoding/expected/replorigin.out

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,14 @@ SELECT pg_replication_origin_drop('test_decoding: temp');
2626
(1 row)
2727

2828
SELECT pg_replication_origin_drop('test_decoding: temp');
29-
ERROR: cache lookup failed for replication origin 'test_decoding: temp'
29+
ERROR: replication origin "test_decoding: temp" does not exist
30+
-- various failure checks for undefined slots
31+
select pg_replication_origin_advance('test_decoding: temp', '0/1');
32+
ERROR: replication origin "test_decoding: temp" does not exist
33+
select pg_replication_origin_session_setup('test_decoding: temp');
34+
ERROR: replication origin "test_decoding: temp" does not exist
35+
select pg_replication_origin_progress('test_decoding: temp', true);
36+
ERROR: replication origin "test_decoding: temp" does not exist
3037
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
3138
?column?
3239
----------

contrib/test_decoding/sql/replorigin.sql

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ SELECT pg_replication_origin_create('test_decoding: temp');
1313
SELECT pg_replication_origin_drop('test_decoding: temp');
1414
SELECT pg_replication_origin_drop('test_decoding: temp');
1515

16+
-- various failure checks for undefined slots
17+
select pg_replication_origin_advance('test_decoding: temp', '0/1');
18+
select pg_replication_origin_session_setup('test_decoding: temp');
19+
select pg_replication_origin_progress('test_decoding: temp', true);
20+
1621
SELECT 'init' FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
1722

1823
-- origin tx

src/backend/replication/logical/origin.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -225,8 +225,10 @@ replorigin_by_name(char *roname, bool missing_ok)
225225
ReleaseSysCache(tuple);
226226
}
227227
else if (!missing_ok)
228-
elog(ERROR, "cache lookup failed for replication origin '%s'",
229-
roname);
228+
ereport(ERROR,
229+
(errcode(ERRCODE_UNDEFINED_OBJECT),
230+
errmsg("replication origin \"%s\" does not exist",
231+
roname)));
230232

231233
return roident;
232234
}
@@ -437,8 +439,10 @@ replorigin_by_oid(RepOriginId roident, bool missing_ok, char **roname)
437439
*roname = NULL;
438440

439441
if (!missing_ok)
440-
elog(ERROR, "cache lookup failed for replication origin with oid %u",
441-
roident);
442+
ereport(ERROR,
443+
(errcode(ERRCODE_UNDEFINED_OBJECT),
444+
errmsg("replication origin with OID %u does not exist",
445+
roident)));
442446

443447
return false;
444448
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy