Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iPedO-0005gn-Ul for pgsql-admin@arkaria.postgresql.org; Wed, 30 Oct 2019 03:26:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1iPedM-0002kt-6o for pgsql-admin@arkaria.postgresql.org; Wed, 30 Oct 2019 03:26:56 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iPedL-0002ka-Md for pgsql-admin@lists.postgresql.org; Wed, 30 Oct 2019 03:26:55 +0000 Received: from mail-pg1-x544.google.com ([2607:f8b0:4864:20::544]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iPedI-0007zV-5X for pgsql-admin@postgresql.org; Wed, 30 Oct 2019 03:26:54 +0000 Received: by mail-pg1-x544.google.com with SMTP id 15so475115pgt.7 for ; Tue, 29 Oct 2019 20:26:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=2ndquadrant-com.20150623.gappssmtp.com; s=20150623; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language:content-transfer-encoding; bh=ticHOryOhZshDG69oAAb3bDaNCiCdoVIfIp5d+PTYEs=; b=1pYxU+aVJgVR0UylmoqeZhsPBULLX1A4dYS4m4Pjz5pA+fxefCyNyFOaqCWgAjfWLB nlzQsIl3/NU8KWdUSps2ALzRY/HZvhLYb4eEOuLvO5VR+cOW20HjbRcFcZgw+57b2XXk 1ddzVUb+wo6PyxVYGVkEYTVIYZE2RFiNVRKeG7BDm0VcO3X3EJlyNNE8ymMjHrtVvGId OaZqJRFW5AU1qr48bDNpBzq6e/cnqdueYwK4NQi/y3t2wyuFETlfbJFwdtlP3YapHMlY HDTQ2Kxiif6FuZ8XZgBnvJh5OyjSMKdHW49LwmdDkPGHB9jlN7IWl3jfbE/ahE8UAQCd 8Vjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=ticHOryOhZshDG69oAAb3bDaNCiCdoVIfIp5d+PTYEs=; b=h6d1wahFPJQxUtilTdzjj3FM3VflxYFHS9PVb+92+legL+rrDDz4UV5Xp7Hu07tmAn aoT0SHsWu/fqpXEle+gDW9jM0K2zKuZYMyTs/yg6JXwK+pFHRqkaJ5+uoe+VuvHH1Tx1 QHBDvuiudAh2o6Q9t4jNC0MbEjn9j7tYFijWiB1V49hf5ld95cRvtFGqco/rxIC/rjQY qaJgCGkKtiZVCwskwnJ7u2P8oc1SvgDlRVgmmX/02nRXv1M81CRajj9yjRhyZB0Rx0Jy 5maU5zXYM03H+KsDGckfth1+2x9jiuWRi/RHA9KlngpIYb5DkNMmwEjkb8QpG3Ct2MLg Ta8g== X-Gm-Message-State: APjAAAWF8ei1jNzp9iiTsgUzB9HXRWyStmqA+D27RNuvOVnLTfg/YLEl 4QIQ8br9HPx9eshGlZYUOBPS8Ifa7iIdDGh4KUiRNUuBDvTIlqFCXXCvbVJsNvIYVxt2vZLq0sY oXkbiv1fFNK9mDUL7PfMV4B2ceYKUl5fN2blm9HjKp/7fwfwCwq3+EOOARSt2vt0C4f3aQ0CZd7 eRioaM/Yc= X-Google-Smtp-Source: APXvYqxU0lN6KGqZ7dCUQvw+kuhUnvtOzTpQn5uK2dOJAVFQn63CcZEBWhlPzwnP5QOFeDdBENdFmA== X-Received: by 2002:a63:c80a:: with SMTP id z10mr31075289pgg.290.1572406009223; Tue, 29 Oct 2019 20:26:49 -0700 (PDT) Received: from osaka.octopusnet (p8425155-ipngn40101marunouchi.tokyo.ocn.ne.jp. [180.46.153.155]) by smtp.gmail.com with ESMTPSA id x2sm557772pfj.90.2019.10.29.20.26.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 29 Oct 2019 20:26:48 -0700 (PDT) Subject: Re: Dropping functions from pg_proc table w/ querry To: Wells Oliver , pgsql-admin References: From: Ian Barwick Message-ID: <6ebc3e08-a2e3-b8f9-773e-0bc24e79e75f@2ndquadrant.com> Date: Wed, 30 Oct 2019 12:26:46 +0900 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk On 2019/10/30 12:05, Wells Oliver wrote: > I have this query: > > select * from pg_proc where probin like '%someoldstuff%'; > > Which shows abou 20 functions I want dropped. Is there a quick convenient SQL query for dropping all of these? Can't quite figure it out. Something like this should do the trick: DO $$ DECLARE rec RECORD; BEGIN FOR rec IN SELECT n.nspname || '.' || p.proname || '(' || pg_catalog.pg_get_function_arguments(p.oid) ||')' AS func FROM pg_catalog.pg_proc p LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace WHERE p.proname LIKE 'foo%' LOOP RAISE NOTICE 'Dropping: %', rec.func; EXECUTE 'DROP FUNCTION ' || rec.func; END LOOP; END; $$; Use at your own risk etc. etc. Regards Ian Barwick -- Ian Barwick https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services