Remove superuser-only session_replication_role from factory reset
This commit is contained in:
@@ -7465,6 +7465,8 @@ def factory_reset(
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
# Step 1: Drop all tables in public schema
|
# Step 1: Drop all tables in public schema
|
||||||
|
# Note: CASCADE handles foreign key constraints without needing
|
||||||
|
# superuser privileges (session_replication_role requires superuser)
|
||||||
logger.info("Dropping all database tables...")
|
logger.info("Dropping all database tables...")
|
||||||
drop_result = db.execute(
|
drop_result = db.execute(
|
||||||
text("""
|
text("""
|
||||||
@@ -7473,12 +7475,10 @@ def factory_reset(
|
|||||||
r RECORD;
|
r RECORD;
|
||||||
table_count INT := 0;
|
table_count INT := 0;
|
||||||
BEGIN
|
BEGIN
|
||||||
SET session_replication_role = 'replica';
|
|
||||||
FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'public') LOOP
|
FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'public') LOOP
|
||||||
EXECUTE 'DROP TABLE IF EXISTS public.' || quote_ident(r.tablename) || ' CASCADE';
|
EXECUTE 'DROP TABLE IF EXISTS public.' || quote_ident(r.tablename) || ' CASCADE';
|
||||||
table_count := table_count + 1;
|
table_count := table_count + 1;
|
||||||
END LOOP;
|
END LOOP;
|
||||||
SET session_replication_role = 'origin';
|
|
||||||
RAISE NOTICE 'Dropped % tables', table_count;
|
RAISE NOTICE 'Dropped % tables', table_count;
|
||||||
END $$;
|
END $$;
|
||||||
""")
|
""")
|
||||||
|
|||||||
Reference in New Issue
Block a user