Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd5a43ff

Browse files
committed
Fix crash if a DROP is attempted on an internally-dependent object.
Introduced in 8.4 rewrite of dependency.c.Per bug #5072 from Amit Khandekar.
1 parent02faeb4 commitd5a43ff

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

‎src/backend/catalog/dependency.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* Portions Copyright (c) 1994, Regents of the University of California
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/catalog/dependency.c,v 1.90 2009/08/07 15:27:56 tgl Exp $
11+
* $PostgreSQL: pgsql/src/backend/catalog/dependency.c,v 1.91 2009/09/22 15:46:34 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -559,7 +559,8 @@ findDependentObjects(const ObjectAddress *object,
559559
{
560560
char*otherObjDesc;
561561

562-
if (object_address_present(&otherObject,pendingObjects))
562+
if (pendingObjects&&
563+
object_address_present(&otherObject,pendingObjects))
563564
{
564565
systable_endscan(scan);
565566
/* need to release caller's lock; see notes below */

‎src/test/regress/expected/rules.out

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1424,10 +1424,10 @@ insert into rule_and_refint_t3 values (1, 12, 11, 'row3');
14241424
insert into rule_and_refint_t3 values (1, 12, 12, 'row4');
14251425
insert into rule_and_refint_t3 values (1, 11, 13, 'row5');
14261426
ERROR: insert or update on table "rule_and_refint_t3" violates foreign key constraint "rule_and_refint_t3_id3a_fkey1"
1427-
DETAIL: Key (id3a,id3c)=(1,13) is not present in table "rule_and_refint_t2".
1427+
DETAIL: Key (id3a,id3c)=(1,13) is not present in table "rule_and_refint_t2".
14281428
insert into rule_and_refint_t3 values (1, 13, 11, 'row6');
14291429
ERROR: insert or update on table "rule_and_refint_t3" violates foreign key constraint "rule_and_refint_t3_id3a_fkey"
1430-
DETAIL: Key (id3a,id3b)=(1,13) is not present in table "rule_and_refint_t1".
1430+
DETAIL: Key (id3a,id3b)=(1,13) is not present in table "rule_and_refint_t1".
14311431
create rule rule_and_refint_t3_ins as on insert to rule_and_refint_t3
14321432
where (exists (select 1 from rule_and_refint_t3
14331433
where (((rule_and_refint_t3.id3a = new.id3a)
@@ -1439,10 +1439,18 @@ create rule rule_and_refint_t3_ins as on insert to rule_and_refint_t3
14391439
and (rule_and_refint_t3.id3c = new.id3c));
14401440
insert into rule_and_refint_t3 values (1, 11, 13, 'row7');
14411441
ERROR: insert or update on table "rule_and_refint_t3" violates foreign key constraint "rule_and_refint_t3_id3a_fkey1"
1442-
DETAIL: Key (id3a,id3c)=(1,13) is not present in table "rule_and_refint_t2".
1442+
DETAIL: Key (id3a,id3c)=(1,13) is not present in table "rule_and_refint_t2".
14431443
insert into rule_and_refint_t3 values (1, 13, 11, 'row8');
14441444
ERROR: insert or update on table "rule_and_refint_t3" violates foreign key constraint "rule_and_refint_t3_id3a_fkey"
1445-
DETAIL: Key (id3a,id3b)=(1,13) is not present in table "rule_and_refint_t1".
1445+
DETAIL: Key (id3a, id3b)=(1, 13) is not present in table "rule_and_refint_t1".
1446+
--
1447+
-- disallow dropping a view's rule (bug #5072)
1448+
--
1449+
create view fooview as select 'foo'::text;
1450+
drop rule "_RETURN" on fooview;
1451+
ERROR: cannot drop rule _RETURN on view fooview because view fooview requires it
1452+
HINT: You can drop view fooview instead.
1453+
drop view fooview;
14461454
--
14471455
-- check for planner problems with complex inherited UPDATES
14481456
--

‎src/test/regress/sql/rules.sql

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -851,6 +851,14 @@ create rule rule_and_refint_t3_ins as on insert to rule_and_refint_t3
851851
insert into rule_and_refint_t3values (1,11,13,'row7');
852852
insert into rule_and_refint_t3values (1,13,11,'row8');
853853

854+
--
855+
-- disallow dropping a view's rule (bug #5072)
856+
--
857+
858+
createviewfooviewasselect'foo'::text;
859+
droprule"_RETURN"on fooview;
860+
dropview fooview;
861+
854862
--
855863
-- check for planner problems with complex inherited UPDATES
856864
--

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp