|
8 | 8 | * Portions Copyright (c) 1994, Regents of the University of California |
9 | 9 | * |
10 | 10 | * IDENTIFICATION |
11 | | - * $PostgreSQL: pgsql/src/backend/catalog/dependency.c,v 1.52 2006/04/29 16:43:54 momjian Exp $ |
| 11 | + * $PostgreSQL: pgsql/src/backend/catalog/dependency.c,v 1.53 2006/04/30 01:08:06 momjian Exp $ |
12 | 12 | * |
13 | 13 | *------------------------------------------------------------------------- |
14 | 14 | */ |
@@ -1931,89 +1931,3 @@ getRelationDescription(StringInfo buffer, Oid relid) |
1931 | 1931 |
|
1932 | 1932 | ReleaseSysCache(relTup); |
1933 | 1933 | } |
1934 | | - |
1935 | | -/* Recursively travel and search for the default sequence. Finally detach it */ |
1936 | | - |
1937 | | -voidperformSequenceDefaultDeletion(constObjectAddress*object, |
1938 | | -DropBehaviorbehavior,intdeleteFlag) |
1939 | | -{ |
1940 | | - |
1941 | | -ScanKeyDatakey[3]; |
1942 | | -intnkeys; |
1943 | | -SysScanDescscan; |
1944 | | -HeapTupletup; |
1945 | | -ObjectAddressotherObject; |
1946 | | -RelationdepRel; |
1947 | | - |
1948 | | -depRel=heap_open(DependRelationId,RowExclusiveLock); |
1949 | | - |
1950 | | -ScanKeyInit(&key[0], |
1951 | | -Anum_pg_depend_classid, |
1952 | | -BTEqualStrategyNumber,F_OIDEQ, |
1953 | | -ObjectIdGetDatum(object->classId)); |
1954 | | -ScanKeyInit(&key[1], |
1955 | | -Anum_pg_depend_objid, |
1956 | | -BTEqualStrategyNumber,F_OIDEQ, |
1957 | | -ObjectIdGetDatum(object->objectId)); |
1958 | | -if (object->objectSubId!=0) |
1959 | | - { |
1960 | | -ScanKeyInit(&key[2], |
1961 | | -Anum_pg_depend_objsubid, |
1962 | | -BTEqualStrategyNumber,F_INT4EQ, |
1963 | | -Int32GetDatum(object->objectSubId)); |
1964 | | -nkeys=3; |
1965 | | - } |
1966 | | -else |
1967 | | -nkeys=2; |
1968 | | - |
1969 | | -scan=systable_beginscan(depRel,DependDependerIndexId, true, |
1970 | | -SnapshotNow,nkeys,key); |
1971 | | - |
1972 | | -while (HeapTupleIsValid(tup=systable_getnext(scan))) |
1973 | | - { |
1974 | | - |
1975 | | -Form_pg_dependfoundDep= (Form_pg_depend)GETSTRUCT(tup); |
1976 | | - |
1977 | | -otherObject.classId=foundDep->refclassid; |
1978 | | -otherObject.objectId=foundDep->refobjid; |
1979 | | -otherObject.objectSubId=foundDep->refobjsubid; |
1980 | | - |
1981 | | -/* Detach the default sequence from the relation */ |
1982 | | -if(deleteFlag==1) |
1983 | | - { |
1984 | | -simple_heap_delete(depRel,&tup->t_self); |
1985 | | -break; |
1986 | | - } |
1987 | | - |
1988 | | -switch (foundDep->deptype) |
1989 | | - { |
1990 | | -caseDEPENDENCY_NORMAL: |
1991 | | -{ |
1992 | | - |
1993 | | -if(getObjectClass(&otherObject)==OCLASS_CLASS) |
1994 | | -{ |
1995 | | -/* Dont allow to change the default sequence */ |
1996 | | -if(deleteFlag==2) |
1997 | | -{ |
1998 | | -systable_endscan(scan); |
1999 | | -heap_close(depRel,RowExclusiveLock); |
2000 | | -elog(ERROR,"%s is a SERIAL sequence. Can't alter the relation",getObjectDescription(&otherObject)); |
2001 | | -return; |
2002 | | -} |
2003 | | -else/* Detach the default sequence from the relation */ |
2004 | | -{ |
2005 | | -performSequenceDefaultDeletion(&otherObject,behavior,1); |
2006 | | -systable_endscan(scan); |
2007 | | -heap_close(depRel,RowExclusiveLock); |
2008 | | -return; |
2009 | | -} |
2010 | | -} |
2011 | | -} |
2012 | | - |
2013 | | - } |
2014 | | -} |
2015 | | - |
2016 | | -systable_endscan(scan); |
2017 | | -heap_close(depRel,RowExclusiveLock); |
2018 | | - |
2019 | | -} |