Re: Avoid orphaned objects dependencies, take 3
От | Alexander Lakhin |
---|---|
Тема | Re: Avoid orphaned objects dependencies, take 3 |
Дата | |
Msg-id | d815344e-a6a2-617a-d35f-012e5e89f29f@gmail.com обсуждение исходный текст |
Ответ на | Re: Avoid orphaned objects dependencies, take 3 (Bertrand Drouvot <bertranddrouvot.pg@gmail.com>) |
Ответы |
Re: Avoid orphaned objects dependencies, take 3
|
Список | pgsql-hackers |
Hi Bertrand, 25.04.2024 10:20, Bertrand Drouvot wrote: > postgres=# CREATE FUNCTION f() RETURNS int LANGUAGE SQL RETURN f() + 1; > ERROR: cache lookup failed for function 16400 > > This stuff does appear before we get a chance to call the new depLockAndCheckObject() > function. > > I think this is what Tom was referring to in [1]: > > " > So the only real fix for this would be to make every object lookup in the entire > system do the sort of dance that's done in RangeVarGetRelidExtended. > " > > The fact that those kind of errors appear also somehow ensure that no orphaned > dependencies can be created. I agree; the only thing that I'd change here, is the error code. But I've discovered yet another possibility to get a broken dependency. Please try this script: res=0 numclients=20 for ((i=1;i<=100;i++)); do for ((c=1;c<=numclients;c++)); do echo " CREATE SCHEMA s_$c; CREATE CONVERSION myconv_$c FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8; ALTER CONVERSION myconv_$c SET SCHEMA s_$c; " | psql >psql1-$c.log 2>&1 & echo "DROP SCHEMA s_$c RESTRICT;" | psql >psql2-$c.log 2>&1 & done wait pg_dump -f db.dump || { echo "on iteration $i"; res=1; break; } for ((c=1;c<=numclients;c++)); do echo "DROP SCHEMA s_$c CASCADE;" | psql >psql3-$c.log 2>&1 done done psql -c "SELECT * FROM pg_conversion WHERE connamespace NOT IN (SELECT oid FROM pg_namespace);" It fails for me (with the v4 patch applied) as follows: pg_dump: error: schema with OID 16392 does not exist on iteration 1 oid | conname | connamespace | conowner | conforencoding | contoencoding | conproc | condefault -------+----------+--------------+----------+----------------+---------------+-------------------+------------ 16396 | myconv_6 | 16392 | 10 | 8 | 6 | iso8859_1_to_utf8 | f Best regards, Alexander
В списке pgsql-hackers по дате отправления: